โหมด SIV: AEAD ที่ทนต่อการใช้หมายเลขสุ่มซ้ำ
สำรวจโหมด Synthetic IV (SIV) และวิธีป้องกันความเสียหายร้ายแรงจากการใช้หมายเลขสุ่มซ้ำ
โหมด SIV: AEAD ที่ทนต่อการใช้หมายเลขสุ่มซ้ำ เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
การใช้ Nonce ซ้ำ: ความล้มเหลวร้ายแรงถึงขั้นหายนะ
รหัส AEAD ที่อาศัยโหมด CTR เช่น AES-GCM ต้องใช้ nonce ที่ไม่ซ้ำกันในการเข้ารหัสทุกครั้ง หากใช้ nonce เดิมซ้ำกับคีย์เดิม ผู้โจมตีที่สังเกตเห็นข้อความเข้ารหัสสองรายการสามารถนำมาทำ XOR กันเพื่อกู้ค่า XOR ของข้อความต้นฉบับทั้งสองได้ ซึ่งทำลายความลับได้ทันที
การใช้ Nonce ซ้ำใน GCM ทำให้คีย์ยืนยันตัวตนรั่วไหล
การใช้ nonce ซ้ำใน AES-GCM ร้ายแรงยิ่งกว่าในโหมด CTR ธรรมดา เมื่อเข้ารหัสข้อความสองรายการด้วย nonce และคีย์เดียวกัน ผู้โจมตีสามารถกู้คีย์ยืนยันตัวตนของ GHASH หรือ H ได้ทั้งหมด เมื่อทราบค่า H แล้ว ผู้โจมตีจะสามารถปลอมแปลงข้อความที่ผ่านการยืนยันตัวตนใด ๆ ได้
แนะนำโหมด IV สังเคราะห์
โหมด IV สังเคราะห์ (SIV) ซึ่งกำหนดไว้ใน RFC 5297 ได้รับการออกแบบมาเพื่อขจัดช่องโหว่จากการใช้ nonce ซ้ำ แทนที่จะต้องใช้ nonce แบบสุ่มหรืออิงตัวนับ SIV จะสร้าง IV จากข้อความต้นฉบับโดยใช้ฟังก์ชันสุ่มเทียม ทำให้ผลลัพธ์กำหนดได้แน่นอนและทนต่อการใช้ nonce ผิด
กลไกการสร้าง Nonce ของ SIV
ใน SIV จะคำนวณ nonce (เรียกว่า IV สังเคราะห์) เป็น SIV = PRF(key, plaintext, associated_data) จากนั้นใช้ IV นี้เป็นตัวนับสำหรับการเข้ารหัสในโหมด CTR เนื่องจาก IV สร้างขึ้นจากข้อความต้นฉบับ การเข้ารหัสข้อความต้นฉบับเดียวกันจึงให้ข้อความเข้ารหัสแบบเดียวกันเสมอ
ผลจากการใช้ นอนซ์ซ้ำใน SIV
หากมีการใช้ นอนซ์ซ้ำใน SIV เพราะข้อความต้นฉบับเดียวกันถูกเข้ารหัสสองครั้ง ผู้สังเกตการณ์จะทราบเพียงว่ามีการส่งข้อความที่เหมือนกันสองข้อความ เนื้อหาของข้อความต้นฉบับยังคงถูกปกปิดอยู่ นี่เป็นการปรับปรุงครั้งใหญ่เมื่อเทียบกับ AEAD ที่อิง CTR ซึ่งการใช้ นอนซ์ซ้ำจะเปิดเผยผล XOR ของข้อความต้นฉบับ
โครงสร้าง AES-SIV
AES-SIV (RFC 5297) ใช้ฟังก์ชัน S2V ซึ่งเป็น PRF แบบต่อเนื่องที่อิง AES-CMAC เพื่อสร้าง IV สังเคราะห์ จากนั้นจึงเข้ารหัสด้วย AES-CTR โดยใช้คีย์ย่อยที่สอง โหมดนี้ต้องใช้คีย์ AES สองคีย์ ทำให้การจัดการคีย์ซับซ้อนกว่าโหมด AEAD ที่ใช้คีย์เดียวเล็กน้อย
AES-GCM-SIV: ทางเลือกสมัยใหม่
AES-GCM-SIV (RFC 8452) เป็น AEAD ที่มีประสิทธิภาพสูงกว่าและต้านทานการใช้ นอนซ์ผิดวิธี โดยออกแบบมาเพื่อผสานประสิทธิภาพของ GCM เข้ากับความปลอดภัยในลักษณะเดียวกับ SIV โหมดนี้สร้างคีย์ย่อยสำหรับแต่ละข้อความจาก นอนซ์ และใช้ตัวตรวจสอบความถูกต้อง Polyval จึงมีประสิทธิภาพดีกว่า AES-SIV พร้อมคงความสามารถในการต้านทานการใช้ นอนซ์ผิดวิธี
ต้นทุนด้านประสิทธิภาพจากการประมวลผลสองรอบ
SIV ต้องประมวลผลข้อมูลสองรอบ รอบแรกใช้คำนวณ IV สังเคราะห์ และรอบที่สองใช้เข้ารหัส ต้นทุนด้านการคำนวณจึงเพิ่มขึ้นประมาณสองเท่าเมื่อเทียบกับโหมด AEAD ที่ประมวลผลเพียงรอบเดียว เช่น AES-GCM สำหรับแอปพลิเคชันที่ไวต่อเวลาแฝงหรือมีปริมาณงานสูง ต้องนำต้นทุนส่วนเกินนี้มาพิจารณาด้วย
ควรเลือก SIV แทน GCM เมื่อใด
ควรเลือก SIV เมื่อการสร้าง นอนซ์ไม่น่าเชื่อถือ เมื่อแอปพลิเคชันไม่มีสถานะและไม่สามารถรักษาตัวนับ นอนซ์ไว้ได้ หรือเมื่อการเข้ารหัสแบบกำหนดผลลัพธ์แน่นอนเป็นข้อกำหนด ตัวอย่างเช่น การเข้ารหัสฟิลด์ในฐานข้อมูลที่ต้องการให้ค่าเดียวกันสร้างข้อความเข้ารหัสเดียวกันเสมอ เพื่อใช้สร้างดัชนี
บริการไม่มีสถานะและการเข้ารหัสแบบกำหนดผลลัพธ์แน่นอน
ไมโครเซอร์วิสที่ไม่มีสถานะและไม่สามารถประสานสถานะของ นอนซ์ระหว่างแบบจำลองได้ เป็นตัวเลือกที่เหมาะอย่างยิ่งสำหรับโหมด SIV แทนที่จะเสี่ยงต่อการใช้ นอนซ์ซ้ำโดยไม่ตั้งใจผ่านตัวนับส่วนกลาง SIV จะให้ความปลอดภัยโดยอัตโนมัติ การห่อหุ้มคีย์ (RFC 3394) ก็ใช้หลักการของ SIV สำหรับการเข้ารหัสคีย์แบบกำหนดผลลัพธ์แน่นอนเช่นกัน
SIV ในการใช้งานจริง
AES-SIV มีให้ใช้งานในไลบรารีการเข้ารหัสที่สำคัญหลายแห่ง รวมถึง libsodium (ในชื่อ crypto_aead_aes256gcm_siv ในรุ่นล่าสุด) และ Google Tink ส่วน AES-GCM-SIV รองรับใน BoringSSL และไลบรารีมาตรฐานของ Go เมื่อการจัดการ นอนซ์ทำได้ยาก สิ่งเหล่านี้เป็นค่าเริ่มต้นที่ปลอดภัยกว่า AES-GCM มาตรฐาน
การตรวจสอบการใช้ นอนซ์ของ SIV
จะเกิดอะไรขึ้นเมื่อใช้คีย์เดียวกันเข้ารหัสข้อความต้นฉบับเดียวกันสองครั้งด้วย AES-SIV
สรุปบทเรียน: SIV เพื่อความปลอดภัยของ นอนซ์
โหมด SIV กำจัดผลเสียร้ายแรงจากการใช้ นอนซ์ซ้ำ โดยสร้าง IV จากข้อความต้นฉบับโดยตรง การใช้ นอนซ์ซ้ำจะเปิดเผยเพียงว่ามีการส่งข้อความที่เหมือนกัน ไม่ได้เปิดเผยเนื้อหา AES-GCM-SIV (RFC 8452) ให้ความสามารถในการต้านทานการใช้ นอนซ์ผิดวิธีอย่างมีประสิทธิภาพ สำหรับแอปพลิเคชันสมัยใหม่ที่ต้องการการเข้ารหัสแบบไม่มีสถานะหรือแบบกำหนดผลลัพธ์แน่นอน
เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 67
- บทเรียน
- 261
คำถามที่พบบ่อย
บทเรียน “โหมด SIV: AEAD ที่ทนต่อการใช้หมายเลขสุ่มซ้ำ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โหมด SIV: AEAD ที่ทนต่อการใช้หมายเลขสุ่มซ้ำ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โหมด SIV: AEAD ที่ทนต่อการใช้หมายเลขสุ่มซ้ำ”
สำรวจโหมด Synthetic IV (SIV) และวิธีป้องกันความเสียหายร้ายแรงจากการใช้หมายเลขสุ่มซ้ำ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “โหมด SIV: AEAD ที่ทนต่อการใช้หมายเลขสุ่มซ้ำ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดการเข้ารหัสแล้วจึงทำ MAC จึงดีกว่าการทำ MAC แล้วจึงเข้ารหัส
- โหมด SIV: AEAD ที่ทนต่อการใช้หมายเลขสุ่มซ้ำ
- AEGIS: การเข้ารหัสลับแบบพิสูจน์ตัวตนความเร็วสูง
- การเลือก AEAD สำหรับระบบใช้งานจริง