การวิเคราะห์อย่างเป็นทางการได้รับการทำโดยฟิล Rogaway ในปี 2011 ที่นี่ ส่วนที่ 1.6 ให้ข้อสรุปว่าฉันคัดลอกที่นี่เพิ่มการเน้นของตัวเองเป็นตัวหนา (ถ้าคุณใจร้อนคำแนะนำของเขาคือใช้โหมด CTR แต่ฉันขอแนะนำให้คุณอ่านย่อหน้าเกี่ยวกับความสมบูรณ์ของข้อความและการเข้ารหัสด้านล่าง)
โปรดทราบว่าสิ่งเหล่านี้ส่วนใหญ่ต้องการให้ IV เป็นแบบสุ่มซึ่งหมายถึงไม่สามารถคาดเดาได้ดังนั้นจึงควรสร้างด้วยความปลอดภัยแบบเข้ารหัส อย่างไรก็ตามบางคนต้องการเพียง "nonce" ซึ่งไม่ต้องการคุณสมบัตินั้น แต่ต้องการเพียงแค่ว่ามันไม่ได้ถูกนำมาใช้ใหม่ ดังนั้นการออกแบบที่พึ่งพา nonce จึงมีข้อผิดพลาดน้อยกว่าการออกแบบที่ไม่ได้ (และเชื่อฉันฉันได้เห็นหลายกรณีที่ CBC ไม่ได้ใช้งานกับการเลือก IV ที่เหมาะสม) ดังนั้นคุณจะเห็นว่าฉันได้เพิ่มตัวหนาเมื่อ Rogaway พูดบางอย่างเช่น "การรักษาความลับไม่สำเร็จเมื่อ IV เป็น nonce" หมายความว่าถ้าคุณเลือก IV ของคุณปลอดภัย cryptographically (คาดเดาไม่ได้) ก็ไม่มีปัญหา แต่ถ้าคุณทำไม่ได้คุณจะสูญเสียคุณสมบัติความปลอดภัยที่ดี ห้ามใช้ IV อีกครั้งสำหรับโหมดใด ๆ เหล่านี้
นอกจากนี้สิ่งสำคัญคือต้องเข้าใจความแตกต่างระหว่างความสมบูรณ์ของข้อความและการเข้ารหัส การเข้ารหัสลับซ่อนข้อมูล แต่ผู้โจมตีอาจสามารถแก้ไขข้อมูลที่เข้ารหัสได้และซอฟต์แวร์ของคุณอาจยอมรับผลลัพธ์ได้หากคุณไม่ตรวจสอบความสมบูรณ์ของข้อความ ในขณะที่ผู้พัฒนาจะพูดว่า "แต่ข้อมูลที่แก้ไขแล้วจะกลับมาเป็นขยะหลังจากถอดรหัส" วิศวกรความปลอดภัยที่ดีจะพบความน่าจะเป็นที่ขยะทำให้เกิดพฤติกรรมที่ไม่พึงประสงค์ในซอฟต์แวร์จากนั้นเขาจะเปลี่ยนการวิเคราะห์นั้นเป็นการโจมตีจริง ฉันได้เห็นหลายกรณีที่ใช้การเข้ารหัส แต่ความสมบูรณ์ของข้อความเป็นสิ่งจำเป็นมากกว่าการเข้ารหัส ทำความเข้าใจกับสิ่งที่คุณต้องการ
ฉันควรจะพูดว่าถึงแม้ว่า GCM จะมีทั้งการเข้ารหัสและความสมบูรณ์ของข้อความ แต่ก็เป็นการออกแบบที่บอบบางมาก: หากคุณใช้ IV อีกครั้งคุณจะถูกเมา - ผู้โจมตีสามารถกู้คืนกุญแจของคุณได้ การออกแบบอื่น ๆ มีความบอบบางน้อยกว่าดังนั้นฉันจึงกลัวที่จะแนะนำ GCM ตามปริมาณของรหัสการเข้ารหัสที่ไม่ดีที่ฉันได้เห็นในทางปฏิบัติ
หากคุณต้องการทั้งความสมบูรณ์ของข้อความและการเข้ารหัสคุณสามารถรวมสองอัลกอริทึม: โดยปกติแล้วเราจะเห็น CBC กับ HMAC แต่ไม่มีเหตุผลที่จะผูกมัดตัวเองกับ CBC สิ่งสำคัญที่ควรทราบคือเข้ารหัสก่อนจากนั้นจึงทำการเข้ารหัสเนื้อหาของ MACไม่ใช่ในทางอื่น นอกจากนี้ IV จำเป็นต้องเป็นส่วนหนึ่งของการคำนวณ MAC
ฉันไม่ได้ตระหนักถึงปัญหา IP
ตอนนี้เป็นเรื่องดีจากศาสตราจารย์ Rogaway:
บล็อกโหมด ciphers การเข้ารหัส แต่ไม่ใช่ความสมบูรณ์ของข้อความ
ECB : บล็อกโค้ดโหมดจะเข้ารหัสข้อความที่มีหลายบิต n บิตโดยแยกการเข้ารหัสแต่ละชิ้น n บิต คุณสมบัติด้านความปลอดภัยอ่อนแอวิธีการรั่วไหลของความเท่าเทียมกันของบล็อกในตำแหน่งบล็อกและเวลา มีมูลค่ามรดกดั้งเดิมและมูลค่าเป็นแบบเอกสารสำเร็จรูปสำหรับรูปแบบอื่น ๆ แต่โหมดดังกล่าวไม่สามารถบรรลุเป้าหมายการรักษาความปลอดภัยที่พึงประสงค์โดยทั่วไปในสิทธิของตนเองและต้องใช้ด้วยความระมัดระวังอย่างมาก ECB ไม่ควรได้รับการยกย่องว่าเป็น“จุดประสงค์ทั่วไป” โหมดการรักษาความลับ
CBC : รูปแบบการเข้ารหัส IV-based, โหมดมีความปลอดภัยเป็นรูปแบบการเข้ารหัสน่าจะเป็น, บรรลุความไม่สามารถแยกแยะได้จากบิตสุ่ม, สมมติว่า IV แบบสุ่ม การรักษาความลับนั้นไม่สามารถทำได้หาก IV เป็นเพียง nonceหรือถ้าไม่ใช่การเข้ารหัสภายใต้คีย์เดียวกันที่ใช้โดยโครงการตามที่มาตรฐานแนะนำอย่างไม่ถูกต้อง ไซเฟอร์เท็กซ์นั้นอ่อนมาก ไม่มีการรักษาความปลอดภัยการเข้ารหัส ciphertext (CCA) ที่เลือก การรักษาความลับถูกริบในที่ที่มีออราเคิลแบบแพ็ดดิ้งที่ถูกต้องสำหรับวิธีการแพ็ดดิ้งจำนวนมาก การเข้ารหัสที่ไม่มีประสิทธิภาพจากการเป็นอนุกรมโดยเนื้อแท้ มีการใช้กันอย่างแพร่หลายคุณสมบัติความปลอดภัยความเป็นส่วนตัวเพียงอย่างเดียวของโหมดส่งผลให้เกิดการใช้ผิดวิธีบ่อยครั้ง สามารถใช้เป็นแบบเอกสารสำเร็จรูปสำหรับอัลกอริทึม CBC-MAC ฉันไม่สามารถระบุข้อได้เปรียบที่สำคัญเหนือโหมด CTR
CFB : รูปแบบการเข้ารหัส IV-based โหมดมีความปลอดภัยเป็นรูปแบบการเข้ารหัสน่าจะเป็นบรรลุความไม่สามารถแยกแยะได้จากบิตสุ่มโดยสมมติว่า IV แบบสุ่ม การรักษาความลับนั้นไม่สามารถทำได้ถ้า IV นั้นสามารถทำนายได้และไม่ได้ทำโดยการเข้ารหัสแบบ nonce ภายใต้คีย์เดียวกันที่ใช้โดยโครงการตามที่มาตรฐานแนะนำอย่างไม่ถูกต้อง ไซเฟอร์เท็กซ์จะอ่อนตัว ไม่มีความปลอดภัย CCA การเข้ารหัสที่ไม่มีประสิทธิภาพจากการเป็นอนุกรมโดยเนื้อแท้ แบบแผนขึ้นอยู่กับพารามิเตอร์ s, 1 ≤ s ≤ n, โดยทั่วไปคือ s = 1 หรือ s = 8 ที่ไม่มีประสิทธิภาพสำหรับการเรียก blockcipher หนึ่งครั้งเพื่อประมวลผลบิต s เท่านั้น โหมดนี้ให้คุณสมบัติ "การซิงโครไนซ์ด้วยตนเอง" ที่น่าสนใจ การแทรกหรือลบอักขระ s-bit จำนวนเท่าใดก็ได้ลงใน ciphertext จะเป็นการขัดขวางการถอดรหัสที่ถูกต้องชั่วคราวเท่านั้น
OFB : รูปแบบการเข้ารหัส IV-based, โหมดมีความปลอดภัยเป็นรูปแบบการเข้ารหัสที่น่าจะเป็น, บรรลุความไม่สามารถแยกแยะได้จากบิตสุ่ม, สมมติว่า IV แบบสุ่ม การรักษาความลับนั้นไม่สามารถทำได้หาก IV เป็น nonce แม้ว่าลำดับของ IVs ที่คงที่ (เช่นตัวนับ) จะทำงานได้ดี ไซเฟอร์เท็กซ์นั้นอ่อนมาก ไม่มีความปลอดภัย CCA การเข้ารหัสและถอดรหัสไม่มีประสิทธิภาพจากการเป็นอนุกรมโดยเนื้อแท้ เข้ารหัสสตริงที่มีความยาวบิตใด ๆ (ไม่จำเป็นต้องมีการแพ็ด) ฉันไม่สามารถระบุข้อได้เปรียบที่สำคัญเหนือโหมด CTR
CTR : รูปแบบการเข้ารหัสที่อิง IV โหมดจะไม่สามารถแยกแยะความแตกต่างได้จากบิตสุ่มโดยสมมติว่าไม่ใช่ IV ในฐานะที่เป็นรูปแบบ nonce ที่ปลอดภัยโหมดนี้ยังสามารถใช้เป็นรูปแบบการเข้ารหัสที่น่าจะเป็นด้วย IV แบบสุ่ม ความล้มเหลวของความเป็นส่วนตัวโดยสมบูรณ์หากไม่มีการใช้ซ้ำในการเข้ารหัสหรือถอดรหัส ความขนานของโหมดมักจะทำให้เร็วขึ้นในการตั้งค่าบางอย่างเร็วกว่าโหมดการรักษาความลับอื่น ๆ Building Block ที่สำคัญสำหรับรูปแบบการเข้ารหัสที่รับรองความถูกต้อง โดยรวมแล้วเป็นวิธีที่ดีที่สุดและทันสมัยที่สุดในการเข้ารหัสลับข้อมูลส่วนบุคคลเท่านั้น
XTS : รูปแบบการเข้ารหัส IV-based, โหมดการทำงานโดยใช้ tweakable blockcipher (ปลอดภัยเป็น strong-PRP) กับแต่ละก้อน n-bit สำหรับข้อความที่มีความยาวไม่สามารถหารด้วย n บล็อกสองอันสุดท้ายจะได้รับการปฏิบัติเป็นพิเศษ การใช้โหมดที่ได้รับอนุญาตเท่านั้นคือการเข้ารหัสข้อมูลบนอุปกรณ์เก็บข้อมูลแบบบล็อก ความกว้างที่แคบของ PRP พื้นฐานและการจัดการบล็อกขั้นสุดท้ายที่เป็นเศษส่วนไม่ดีเป็นปัญหา มีประสิทธิภาพมากขึ้น แต่เป็นที่ต้องการน้อยกว่า blockcipher ที่มีความปลอดภัย PRP (wide-block)
MACs (ความสมบูรณ์ของข้อความ แต่ไม่เข้ารหัส)
ALG1–6 : คอลเล็กชันของ MAC ทั้งหมดล้วนมาจาก CBC-MAC แผนการมากเกินไป บางตัวมีความปลอดภัยที่พิสูจน์ได้ว่าเป็น VIL PRF บางตัวเป็น FIL PRFs และบางตัวไม่มีความปลอดภัยที่พิสูจน์ได้ แผนการบางอย่างยอมรับการโจมตีที่สร้างความเสียหาย บางโหมดเป็นวันที่ การแยกคีย์ได้รับการเข้าร่วมไม่เพียงพอสำหรับโหมดที่มี ไม่ควรนำมาใช้กับคนจำนวนมาก แต่การเลือกแผนการ "ดีที่สุด" เป็นไปได้ มันจะเป็นการดีถ้าจะไม่ยอมรับโหมดเหล่านี้ในความโปรดปรานของ CMAC เครื่อง MAC 9797-1 บางรุ่นได้รับการรับรองมาตรฐานและใช้กันอย่างแพร่หลายโดยเฉพาะในด้านการธนาคาร มาตรฐานฉบับปรับปรุง (ISO / IEC FDIS 9797-1: 2010) จะเปิดตัวเร็ว ๆ นี้ [93]
CMAC : MAC ที่ใช้ CBC-MAC โหมดนี้มีความปลอดภัย (ขึ้นอยู่กับวันเกิด) เป็น (VIL) PRF (สมมติว่า blockcipher นั้นเป็น PRP ที่ดี) ค่าใช้จ่ายที่น้อยที่สุดเป็นหลักสำหรับโครงการที่ใช้ CBCMAC ปัญหาที่เกิดขึ้นตามลำดับโดยธรรมชาตินั้นมีปัญหาในบางโดเมนของแอปพลิเคชัน สะอาดกว่าคอลเลคชั่น ISO 9797-1 ของ MAC
HMAC : MAC ที่ใช้ฟังก์ชั่นแฮชแบบเข้ารหัสลับมากกว่าบล็อคโค้ด (แม้ว่าฟังก์ชั่นแฮชแบบเข้ารหัสลับส่วนใหญ่จะมาจาก Blockciphers) กลไกสนุกกับขอบเขตความปลอดภัยที่พิสูจน์ได้ แต่ไม่ได้มาจากข้อสันนิษฐาน หลายตัวแปรที่เกี่ยวข้องอย่างใกล้ชิดในวรรณคดีซับซ้อนได้รับความเข้าใจในสิ่งที่เป็นที่รู้จัก ไม่เคยมีใครแนะนำการโจมตีที่สร้างความเสียหาย ได้รับมาตรฐานและใช้กันอย่างแพร่หลาย
GMAC : MAC ที่ไม่ได้ใช้งานแล้วซึ่งเป็นกรณีพิเศษของ GCM สืบทอดคุณลักษณะที่ดีและไม่ดีของ GCM มาหลายประการ แต่ความต้องการแบบไม่มีเงื่อนไขนั้นไม่จำเป็นสำหรับ MAC และนี่ก็เป็นการซื้อผลประโยชน์เพียงเล็กน้อย การโจมตีที่ใช้งานได้จริงหากแท็กถูกตัดเหลือเพียง≤ 64 บิตและขอบเขตของการถอดรหัสจะไม่ถูกตรวจสอบและตัดทอน ล้มเหลวโดยสมบูรณ์ในการใช้ซ้ำ การใช้งานจะมีความหมายอยู่แล้วหากมีการใช้ GCM ไม่แนะนำสำหรับการแยกมาตรฐาน
การเข้ารหัสที่รับรองความถูกต้อง (ทั้งการเข้ารหัสและความสมบูรณ์ของข้อความ)
CCM : แบบแผน AEAD ที่ไม่ขึ้นกับที่รวมการเข้ารหัสโหมด CTR และ raw CBC-MAC อนุกรมโดยเนื้อแท้ความเร็ว จำกัด ในบริบทบางอย่าง ปลอดภัยแน่นอนด้วยขอบเขตที่ดีสมมติว่า blockcipher พื้นฐานเป็น PRP ที่ดี การก่อสร้างที่ไม่เด่นชัดแสดงให้เห็นถึงการทำงาน ใช้งานง่ายกว่า GCM สามารถใช้เป็น MAC ที่ไม่ใช่ฐานได้ ได้รับมาตรฐานและใช้กันอย่างแพร่หลาย
GCM : แบบแผน AEAD ที่ไม่ขึ้นกับที่รวมการเข้ารหัสโหมด CTR และฟังก์ชันแฮชเอนกประสงค์สากลที่ใช้ GF (2128) คุณสมบัติประสิทธิภาพที่ดีสำหรับสภาพแวดล้อมการใช้งานบางอย่าง ผลลัพธ์ที่ปลอดภัยพิสูจน์ได้ดีโดยสมมติว่ามีการตัดแท็กน้อยที่สุด การโจมตีและขอบเขตการรักษาความปลอดภัยที่พิสูจน์ได้ไม่ดีในกรณีที่มีการตัดทอนแท็กจำนวนมาก สามารถใช้เป็น MAC ที่ไม่ใช่ฐานซึ่งเรียกว่า GMAC ตัวเลือกที่น่าสงสัยในการอนุญาต nonces นอกเหนือจาก 96 บิต แนะนำให้ จำกัด nonces ให้ 96- บิตและแท็กเป็นอย่างน้อย 96 บิต ได้รับมาตรฐานและใช้กันอย่างแพร่หลาย