การเข้ารหัสและการแฮช
| English | ไทย |
|---|---|
| symmetric/sɪˈmetrɪk/ | สมมาตร |
| encryption/enˈkrɪpʃn/ | การเข้ารหัส |
| asymmetric/ˌeɪsɪˈmetrɪk/ | asymmetric |
| plaintext/ˈpleɪntekst/ | plaintext |
| ciphertext/ˈsaɪfətekst/ | ciphertext |
| decrypt/dɪˈkrɪpt/ | ถอดรหัส |
| key pair/kiː peə/ | คู่กุญแจ |
| public key/ˈpʌblɪk kiː/ | public key |
| private key/ˈpraɪvət kiː/ | กุญแจส่วนตัว |
| session key/ˈseʃn kiː/ | -session key.html |
| cryptographic hash/ˌkrɪptəˈɡræfɪk hæʃ/ | cryptographic hash function |
| 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 ใช้:
Symmetric encryption แบ่งปัน secret key หนึ่งตัว — เร็ว, แต่ต้องส่งอย่างปลอดภัย
การเข้ารหัสแบบอสมมาตร
- การเข้ารหัสแบบอสมมาตร ให้แต่ละผู้ใช้มี คู่กุญแจ: public key ที่เผยแพร่ต่อโลก และ private key ที่ไม่เคยเปิดเผย
- สิ่งใดที่เข้ารหัสด้วย public key สามารถถอดรหัสได้ เฉพาะ ด้วย private key ที่ตรงกัน ดังนั้นเพื่อส่งข้อความลับให้ Alice คุณต้องเข้ารหัสด้วย public key ของเธอ และเพียงเธอเท่านั้นที่จะอ่านได้
- ไม่จำเป็นต้องแลกเปลี่ยนกุญแจล่วงหน้า ซึ่งแก้ปัญหาที่บทเรียนเปิดด้วย ราคาที่ต้องจ่ายคือมัน ช้ากว่ามาก ดังนั้นจึงไม่ใช้สำหรับข้อมูลปริมาณมาก

หนึ่งกุญแจล็อก อีกกุญแจเปิด และเพียงกุญแจเดียวที่เป็นความลับ
จับคู่เครื่องมือ cryptographic แต่ละชนิดกับสิ่งที่มันใช้
Symmetric รวดเร็วแต่ต้องการแบ่งปัน key; asymmetric แก้ปัญหานี้ด้วยคู่ key; hashing เป็น one-way; HTTPS รวมกัน
เพื่อส่งข้อความลับไปยัง Alice Using asymmetric encryption, คุณเข้ารหัสด้วย:
การเข้ารหัสด้วย public key ของผู้รับหมายความว่าเฉพาะ private key ที่ตรงกันของเธอเท่านั้นที่จะถอดรหัสได้
จับคู่ประเภทการเข้ารหัสแต่ละชนิดกับความอ่อนแอหลัก
ระบบ 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 อะไรในการเข้ารหัส?
เฉพาะ 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 ใช้เพื่อ:
การเข้ารหัสแบบอสมมาตรที่ช้าเพียงแบ่งปัน-session key เท่านั้น ข้อมูลส่วนใหญ่จึงใช้การเข้ารหัสแบบสมมาตรที่รวดเร็ว
เรียงลำดับขั้นตอนของระบบผสมที่ใช้ใน HTTPS ให้ถูกต้อง
ขั้นตอนอสมมาตรที่ช้าจะทำงานเพียงครั้งเดียวบนข้อมูลจำนวนน้อย ส่วนที่เหลือทั้งหมดเป็นการเข้ารหัสแบบสมมาตรที่รวดเร็ว
Hashing
- cryptographic hash เปลี่ยนอินพุตขนาดใดๆ ให้เป็น digest ขนาดคงที่ อินพุตเดิมให้ digest เหมือนเดิมเสมอ และการเปลี่ยนแปลงเล็กน้อยในอินพุตทำให้ digest เปลี่ยนไปทั้งหมด
- มัน one-way: ไม่สามารถกู้คืนอินพุตจาก digest ได้ นั่นคือจุดประสงค์ทั้งหมด และเป็นสิ่งที่ทำให้มันต่างจากการเข้ารหัสซึ่งออกแบบมาเพื่อย้อนกลับได้
- การใช้: เก็บรหัสผ่าน โดยระบบเก็บเฉพาะ digest และเปรียบเทียบ digests lúcเข้าสู่ระบบ ทำให้ฐานข้อมูลที่ขโมยไม่ได้รหัสผ่าน; และการตรวจสอบ ความสมบูรณ์ โดยคำนวณ digest ของไฟล์ใหม่และเปรียบเทียบกับเดิมเพื่อตรวจจับการเปลี่ยนแปลง
ฟังก์ชันแฮชทางรหัสผ่านสร้างค่าขนาดคงที่ ____ จากอินพุตที่มีขนาดใดๆ ก็ตาม
อินพุตเดียวกันจะให้ 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 — การเปลี่ยนแปลงเล็กน้อยในอินพุตจะพลิกส่วนที่ไม่คาดคิดและขนาดใหญ่ของเอาต์พุต
ความเป็นทางเดียวบวกกับผลกระทบ Avalanche คือสิ่งที่ทำให้แฮชเหมาะสำหรับการเก็บรหัสผ่านและการตรวจสอบความสมบูรณ์
ทำไมต้องเก็บรหัสผ่านในรูปแบบของแฮชแทนที่จะเป็นการเข้ารหัส? เลือก ทุก ข้อที่เกี่ยวข้อง
ค่า 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 ขนาดคงที่ เป็นแบบ ทางเดียว และใช้สำหรับรหัสผ่านและการตรวจสอบความสมบูรณ์