การเข้ารหัสและการแฮช
แนะนำใหม่| English | ความหมาย |
|---|---|
| symmetric/sɪˈmetrɪk/ | สมมาตร |
| encryption/enˈkrɪpʃn/ | การเข้ารหัส |
| asymmetric/ˌeɪsɪˈmetrɪk/ | ไม่สมมาตร |
| plaintext/ˈpleɪntekst/ | plaintext |
| ciphertext/ˈsaɪfətekst/ | ciphertext |
| decrypt/dɪˈkrɪpt/ | ถอดรหัส |
| key pair/kiː peə/ | คู่กุญแจ |
| public key/ˈpʌblɪk kiː/ | กุญแจสาธารณะ |
| private key/ˈpraɪvət kiː/ | กุญแจส่วนตัว |
| session key/ˈseʃn kiː/ | กุญแจ-session |
| cryptographic hash/ˌkrɪptəˈɡræfɪk hæʃ/ | ฟังก์ชันแฮชทางรหัส |
| digest/ˈdaɪdʒest/ | สรุปข้อมูล |
คนแปลกหน้าสองคนตกลงรหัสลับในที่สาธารณะ
- นี่คือปัญหาที่ฟังดูเป็นไปไม่ได้ คุณและร้านค้าไม่เคยเจอกันมาก่อนและไม่มีความสัมพันธ์กันอะไรเลย ทุกสิ่งที่พูดต่อกันถูกทุกคนได้ยินตลอด การตกลงรหัสลับให้สำเร็จ
- จนถึงปี 1976 คำตอบคือทำไม่ได้: การเข้ารหัสแบบสมมาตรต้องการส่งกุญแจล่วงหน้าโดยผู้จัดส่งหรือบุคคลโดยตรง นี่คือเหตุผลที่คู่มือรหัสสงครามต้องพิมพ์และขนส่ง
- จากนั้น Diffie, Hellman และต่อมา Rivest, Shamir และ Adleman แสดงให้เห็นว่าทำได้ โดยใช้กุญแจที่ล็อกได้แต่เปิดไม่ได้ และอีกกุญแจหนึ่งที่เปิดได้แต่ล็อกไม่ได้ การซื้อออนไลน์ของคุณทุกครั้งที่ผ่านมามีพื้นฐานมาจากสิ่งนี้
- บทเรียนนี้เกี่ยวกับ การเข้ารหัสแบบสมมาตร และ การเข้ารหัสแบบอสมมาตร เหตุผลที่ระบบจริงใช้ทั้งสองอย่าง และฟังก์ชันทางเดียวที่เรียกว่า hashing
คำศัพท์เฉพาะ
- การเข้ารหัส เปลี่ยน plaintext ที่อ่านได้ให้เป็น ciphertext ที่อ่านไม่ออกโดยใช้กุญแจ; การ ถอดรหัส คือการย้อนกลับด้วยกุญแจที่เหมาะสม
- การเข้ารหัสปกป้อง ความลับ: สำเนาที่ถูกดักจับไม่สามารถเข้าใจได้ มัน ไม่ ป้องกันข้อมูลจากการถูกดักจับ หน่วงเวลา หรือลบ
- ความแข็งแกร่งอยู่ที่ กุญแจ ไม่ใช่การเก็บอัลกอริทึมเป็นความลับ อัลกอริทึมถูกเผยแพร่และศึกษาเพื่อให้จุดอ่อนถูกค้นพบโดยเพื่อน而不是ศัตรู
การเข้ารหัสแบบสมมาตร
- การเข้ารหัสแบบสมมาตร ใช้ กุญแจเดียวกัน ทั้งในการเข้ารหัสและการถอดรหัส AES เป็นตัวอย่างมาตรฐาน
- มัน เร็ว จึงเหมาะสำหรับ ข้อมูลจำนวนมาก: ดิสก์ทั้งหมด สตรีมวิดีโอ ไฟล์ขนาดใหญ่
- จุดอ่อนคือ การกระจายกุญแจ: กุญแจต้องถึงอีกฝ่ายโดยไม่ถูกดักจับ และหากถูกดักจับทั้งระบบจะพังลง กับ $n$ คนที่ต้องการคุยส่วนตัวเป็นคู่ จำนวนกุญแจที่ต้องการเพิ่มขึ้นตามกำลังสองของ $n$
shift cipher (symmetric key)
Caesar's cipher ย้ายตัวอักษรทุกตัวไปข้างหน้าตาม key ที่คงที่ ใช้ key เดียวกันทั้งเข้ารหัสและถอดรหัส — นั่นคือสิ่งที่ symmetric หมายถึง ลองอ่าน ciphertext โดยไม่ knowing the shift
Symmetric encryption ใช้:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Symmetric encryption แบ่งปัน secret key หนึ่งตัว — เร็ว, แต่ต้องส่งอย่างปลอดภัย
การเข้ารหัสแบบอสมมาตร
- การเข้ารหัสแบบอสมมาตร ให้แต่ละผู้ใช้มี คู่กุญแจ: public key ที่เผยแพร่ต่อโลก และ private key ที่ไม่เคยเปิดเผย
- สิ่งใดที่เข้ารหัสด้วย public key สามารถถอดรหัสได้ เฉพาะ ด้วย private key ที่ตรงกัน ดังนั้นเพื่อส่งข้อความลับให้ Alice คุณต้องเข้ารหัสด้วย public key ของเธอ และเพียงเธอเท่านั้นที่จะอ่านได้
- ไม่จำเป็นต้องแลกเปลี่ยนกุญแจล่วงหน้า ซึ่งแก้ปัญหาที่บทเรียนเปิดด้วย ราคาที่ต้องจ่ายคือมัน ช้ากว่ามาก ดังนั้นจึงไม่ใช้สำหรับข้อมูลปริมาณมาก

หนึ่งกุญแจล็อก อีกกุญแจเปิด และเพียงกุญแจเดียวที่เป็นความลับ
จับคู่เครื่องมือ cryptographic แต่ละชนิดกับสิ่งที่มันใช้
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Symmetric รวดเร็วแต่ต้องการแบ่งปัน key; asymmetric แก้ปัญหานี้ด้วยคู่ key; hashing เป็น one-way; HTTPS รวมกัน
เพื่อส่งข้อความลับไปยัง Alice Using asymmetric encryption, คุณเข้ารหัสด้วย:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การเข้ารหัสด้วย public key ของผู้รับหมายความว่าเฉพาะ private key ที่ตรงกันของเธอเท่านั้นที่จะถอดรหัสได้
จับคู่ประเภทการเข้ารหัสแต่ละชนิดกับความอ่อนแอหลัก
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ระบบ hybrid ใช้แต่ละอย่างเพื่อครอบคลุมจุดอ่อนของอีกฝ่าย: asymmetric เพื่อส่ง key, symmetric เพื่อถือข้อมูล
ตัวอย่างวิธีทำ: ส่งข้อความลับ
- อธิบายว่าการเข้ารหัสแบบอสมมาตรช่วยให้ Bob ส่งข้อความลับให้ Alice ได้อย่างไร แม้他们会未曾见面 [3]
- Alice เผยแพร่ public key ของเธอซึ่งใครก็ตามมีได้ รวมถึงผู้ดักฟัง
- Bob เข้ารหัสข้อความด้วย public key ของ Alice ciphertext สามารถถอดรหัสได้เฉพาะด้วย private key ที่ตรงกัน
- Alice ถอดรหัสด้วย private key ของเธอซึ่งเธอไม่เคยแชร์ ผู้ดักฟังที่มี public key และ ciphertext ไม่สามารถกู้คืนข้อความได้
- ข้อผิดพลาดที่พบบ่อยที่สุดคือการบอกว่า Bob เข้ารหัสด้วย กุญแจของเขาเอง ตรวจสอบว่าแต่ละขั้นตอนใช้กุญแจของใคร
Bob ส่งข้อความลับไปยัง Alice Using asymmetric encryption. เขาใช้ key อะไรในการเข้ารหัส?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
เฉพาะ private key ของ Alice เท่านั้นที่จะ undo สิ่ง yang public key ของเธอทำ, และเฉพาะ Alice เท่านั้นที่มีมัน Bob ไม่เคยเห็น private key ของ Alice เลย
แนวทางผสมผสาน ซึ่งเป็นสิ่งที่เกิดขึ้นจริง
- แบบสมมาตรเร็วแต่แชร์กุญแจไม่ได้ แบบอสมมาตรแชร์กุญแจได้แต่ช้า ระบบจริงใช้แต่ละแบบในสิ่งที่มันเก่ง
- Client สร้าง session key แบบสุ่ม เข้ารหัส กุญแจขนาดเล็กนั้น ด้วย public key ของ server แล้วส่ง Server ถอดรหัสด้วย private key ของมัน และตอนนี้ทั้งสองฝ่ายมี session key เดียวกัน
- Every byte ของการสนทนาจริงจะถูกเข้ารหัส แบบสมมาตร ด้วย session key นั้น: เร็ว และการขั้นตอนแบบอสมมาตรที่ช้าเกิดขึ้นเพียงครั้งเดียว กับข้อมูลเล็กน้อย
- นี่คือวิธีการทำงานของ HTTPS และ SSH

*แบบอสมมาตรเพื่อตกลงกุญแจ แบบสมมาตรเพื่อพาข้อมูล
ในวิธีการ hybrid ที่ใช้โดย HTTPS, asymmetric encryption ใช้เพื่อ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การเข้ารหัสแบบอสมมาตรที่ช้าเพียงแบ่งปัน-session key เท่านั้น ข้อมูลส่วนใหญ่จึงใช้การเข้ารหัสแบบสมมาตรที่รวดเร็ว
เรียงลำดับขั้นตอนของระบบผสมที่ใช้ใน HTTPS ให้ถูกต้อง
Difficulty 3/5 · 200 coins + a small bonus on first completion today
ขั้นตอนอสมมาตรที่ช้าจะทำงานเพียงครั้งเดียวบนข้อมูลจำนวนน้อย ส่วนที่เหลือทั้งหมดเป็นการเข้ารหัสแบบสมมาตรที่รวดเร็ว
Hashing
- cryptographic hash เปลี่ยนอินพุตขนาดใดๆ ให้เป็น digest ขนาดคงที่ อินพุตเดิมให้ digest เหมือนเดิมเสมอ และการเปลี่ยนแปลงเล็กน้อยในอินพุตทำให้ digest เปลี่ยนไปทั้งหมด
- มัน one-way: ไม่สามารถกู้คืนอินพุตจาก digest ได้ นั่นคือจุดประสงค์ทั้งหมด และเป็นสิ่งที่ทำให้มันต่างจากการเข้ารหัสซึ่งออกแบบมาเพื่อย้อนกลับได้
- การใช้: เก็บรหัสผ่าน โดยระบบเก็บเฉพาะ digest และเปรียบเทียบ digests lúcเข้าสู่ระบบ ทำให้ฐานข้อมูลที่ขโมยไม่ได้รหัสผ่าน; และการตรวจสอบ ความสมบูรณ์ โดยคำนวณ digest ของไฟล์ใหม่และเปรียบเทียบกับเดิมเพื่อตรวจจับการเปลี่ยนแปลง
ฟังก์ชันแฮชทางรหัสผ่านสร้างค่าขนาดคงที่ ____ จากอินพุตที่มีขนาดใดๆ ก็ตาม
Difficulty 1/5 · 100 coins + a small bonus on first completion today
อินพุตเดียวกันจะให้ digest เหมือนกันเสมอ การเปลี่ยนแปลงเล็กน้อยจะทำให้ได้ผลต่างอย่างสิ้นเชิง และไม่สามารถคืนกลับอินพุตจากมันได้
ตัวอย่างวิธีทำ: ทำไมต้อง hash รหัสผ่านแทนการเข้ารหัสมัน
- เว็บไซต์เก็บรหัสผ่านของผู้ใช้เป็น hash แทนข้อความที่เข้ารหัส อธิบายเหตุผล.
- การเข้ารหัส ย้อนกลับได้: มีกุญแจอยู่ someway ที่เปลี่ยนค่าที่เก็บกลับเป็นรหัสผ่าน และผู้โจมตีที่ได้ฐานข้อมูลอาจได้กุญแจด้วย
- Hashing เป็น one-way ดังนั้นฐานข้อมูล digests ที่ถูกขโมยจึงไม่ให้รหัสผ่าน และแม้พนักงานของเว็บไซต์เองก็อ่านไม่ได้
- Login ยังทำได้เพราะระบบ hash สิ่งที่ผู้ใช้พิมพ์และเปรียบเทียบ digests ไม่ใช่รหัสผ่านโดยตรง
Hashing และ avalanche effect
Hash เป็น one-way: คำนวญง่าย,anking impossible to reverse. การเปลี่ยนแปลงเล็กน้อยใน input เปลี่ยนแปลงส่วนใหญ่ที่ไม่คาดคิดของ output — avalanche effect ที่ทำให้ hash ดีสำหรับรหัสผ่าน
ฟังก์ชันแฮชทางรหัสผ่านเป็นทางเดียว (ไม่สามารถคืนกลับอินพุตจาก digest ได้) และแสดงผลกระทบ Avalanche — การเปลี่ยนแปลงเล็กน้อยในอินพุตจะพลิกส่วนที่ไม่คาดคิดและขนาดใหญ่ของเอาต์พุต
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ความเป็นทางเดียวบวกกับผลกระทบ Avalanche คือสิ่งที่ทำให้แฮชเหมาะสำหรับการเก็บรหัสผ่านและการตรวจสอบความสมบูรณ์
ทำไมต้องเก็บรหัสผ่านในรูปแบบของแฮชแทนที่จะเป็นการเข้ารหัส? เลือก ทุก ข้อที่เกี่ยวข้อง
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ค่า digest ขนาดคงที่อาจสั้นกว่าจริง ๆ แต่那不是เหตุผลด้านความปลอดภัย ความไม่สามารถย้อนกลับต่างหากที่เป็นเหตุ
คะแนนที่หลุดหายไป
- เพื่อส่งข้อความลับให้ใครบางคนคุณต้องใช้ public key ของเขา ไม่ใช่ของคุณ บอกว่าแต่ละขั้นตอนใช้กุญแจของใคร
- จุดอ่อนของ Symmetric คือ การแจกจ่ายกุญแจ; จุดอ่อนของ Asymmetric คือ ความเร็ว ระบบผสมผสานใช้แต่ละอย่างเพื่อครอบคลุมจุดอ่อนของอีกฝ่าย
- การทำ Hash เป็นแบบ ทางเดียว และ ไม่ใช่การเข้ารหัส: ไม่มีกุญแจและไม่มีอะไรให้ถอดรหัส
- การเข้ารหัสปกป้องความลับเพียงอย่างเดียว มันไม่หยุดยั้งการดักจับ การลบ หรือการแก้ไขข้อความโดยไม่ถูกตรวจพบ: สำหรับสิ่งนั้นคุณต้องใช้ Hash
คุณเข้าใจแล้ว
- การเข้ารหัส เปลี่ยน ข้อความplain เป็น ciphertext ด้วยกุญแจและปกป้อง ความลับ เท่านั้น; ความแข็งแกร่งอยู่ที่กุญแจ ไม่ใช่ที่การซ่อนอัลกอริทึม
- Symmetric: กุญแจร่วมกันหนึ่งตัว, เร็ว, เหมาะกับข้อมูลจำนวนมาก, อ่อนแอเรื่อง การแจกจ่ายกุญแจ · Asymmetric: มี public key สำหรับเข้ารหัสและ private key สำหรับถอดรหัส ไม่ต้องแลกเปลี่ยนล่วงหน้า แต่ช้ากว่า
- ระบบ hybrid ที่ใช้โดย HTTPS และ SSH ส่ง session key แบบสุ่มที่เข้ารหัสด้วย asymmetric แล้วส่งข้อมูลต่อด้วย symmetric
- cryptographic hash สร้าง digest ขนาดคงที่ เป็นแบบ ทางเดียว และใช้สำหรับรหัสผ่านและการตรวจสอบความสมบูรณ์