ที่นี่เราสร้างความแตกต่าง $nonce \mathbin\|คู่หู$ ถือเป็น $IV$
- เป็นปัญหาที่ IV ถัดไปสามารถคาดเดาได้หรือไม่?
ไม่ ไม่ใช่ปัญหาในโหมด CTR อ่านเพิ่มเติมใน [1]. เดอะ $IV= (ไม่ใช่\mathbin\|คู่)$ ถูกเข้ารหัสและข้อความเข้ารหัสถูก x-ored ด้วยข้อความธรรมดา
$$C_i = \operatorname{AES-CTR}(nonce\mathbin\|เข้ารหัส(i)) \oplus P_i$$
ตราบเท่าที่ $(IV,คีย์)$ คู่ไม่เคยซ้ำไม่มีปัญหาสำหรับ 16- ของคุณไบต์สมมติว่าคุณเริ่มต้นจาก 0 ในตัวนับเสมอสำหรับการเข้ารหัสทุกครั้งด้วย nonce ใหม่หรือคีย์ใหม่
หากมีการทำซ้ำความลับจะสูญหาย
ฉันเข้าใจว่า IV ไม่สามารถทำซ้ำได้ แต่ในกรณีที่เงื่อนไขนี้จำเป็นต้องทำซ้ำกี่ครั้งจึงจะถอดรหัสระบบได้ ฉันหมายถึงตัวนับเดียวกันซ้ำสองครั้งหรือ 100?
สองคู่ก็เพียงพอแล้วที่จะทำลายความลับด้วยเทคนิคการลากเปล ขณะนี้เป็นระบบอัตโนมัติ [2]. หากคุณรู้จักหนึ่งในนั้น การหาอีกอันด้วย x-or ก็ไม่ใช่เรื่องเล็กน้อย
สุดท้าย แต่ไม่ท้ายสุด จะเพิ่มความปลอดภัยในการใช้ AES256 บน AES128 เพื่อเข้ารหัสข้อความขนาด 16 ไบต์หรือไม่
โหมด CTR เป็น CPA ที่ปลอดภัยตราบเท่าที่ใช้อย่างเหมาะสม AES-128 ปลอดภัย (ส่วนใหญ่)[3] อย่างไรก็ตาม การใช้ AES-256 จะปลอดภัยแม้กระทั่งศัตรูควอนตัมที่มาพร้อมกับ Grover's Machine
โปรดทราบว่าในโหมด CTR คุณจะได้รับความปลอดภัย CPA เท่านั้น นั่นคือไม่มีความสมบูรณ์และการรับรองความถูกต้อง เพื่อให้บรรลุความสมบูรณ์และการรับรองความถูกต้อง เราสามารถใช้ AES-GCM (พร้อม SIV) โหมด SIV ใช้ข้อความเพื่อหลีกเลี่ยงปัญหา IVเมื่อ IV ทำซ้ำ มันจะรั่วไหลเฉพาะความเท่าเทียมกันของข้อความ ไม่ใช่เนื้อหา
การใช้ AES CTR อย่างเหมาะสม
ภาระหน้าที่ของคุณ: เป็นสัญญารักษาความปลอดภัย
เลือกคีย์สุ่มแบบเดียวกัน $k$ ขนาด 256 และเก็บเป็นความลับตลอดเวลา
เลือก IV และตรวจสอบให้แน่ใจว่า $(k,IV)$ ไม่เคยทำซ้ำแม้แต่ตัวนับที่เพิ่มขึ้น
ใช้ ตัวนับที่กำหนดหรือ LFSR เพื่อให้ติดตามของ $ไม่นอน$ตรวจสอบให้แน่ใจว่ามีการแลกเปลี่ยนรหัสใหม่หากมีข้อผิดพลาด/ระบบหยุดทำงาน พวกเขาอาจไม่สามารถเขียนรหัสที่ใช้ล่าสุดได้ $ไม่นอน$.
หรือใช้การสุ่ม $ไม่นอน$ตรวจสอบให้แน่ใจว่าคุณอยู่ในระดับต่ำในการชนกันของ $ไม่นอน$ ภายใต้คีย์เดียวกัน
เริ่มต้นเคาน์เตอร์เสมอจาก $0$. หากตัวนับไม่เริ่มต้นจาก $0$ มีเส้นทางอันตรายที่อาจทำให้ IV ทำซ้ำได้หาก nonce เหมือนกัน
เข้ารหัสข้อความและตรวจสอบให้แน่ใจว่าไม่เกิน $2^{32}$.
- รับประกันว่าไม่มีความแตกต่างและ
- รับประกันว่าตัวนับไม่เคยผ่านทั้ง 1 สถานะ เช่น ไม่เกินค่าสูงสุดของตัวนับ
เก็บไว้.
สิ่งที่คุณได้รับ
- ความปลอดภัย Ind-CPA และไม่มีอะไรเพิ่มเติม!
แทนที่จะใช้ XChaCha20-Poly1305 กับ nonces 192 บิตที่ $(IV,คีย์)$ เกิดขึ้นเล็กน้อย คุณจะได้รับการรับรองความถูกต้องและความสมบูรณ์ด้วย และเนื่องจากโหมด CTR ได้รับการออกแบบมาสำหรับ PRF XChaCha20 จึงเหมาะที่จะใช้กับโหมด CTR ( XChaCha20 ใช้ CTR ภายใน)