ฉันเข้าใจว่ามีคำถามสองสามข้อที่นี่ซึ่งคล้ายกัน แต่ของฉันแตกต่างกันเล็กน้อยตรงที่ฉันต้องการแยก AES 256 บิตออกเป็นสองคีย์ 128 บิต จากนั้นใช้คีย์ AES อื่นของ 128 บิตเพื่อเข้ารหัสคีย์ 128 บิตสองคีย์สำหรับการขนส่ง คีย์ระหว่างสองโปรเซสเซอร์ สิ่งนี้ปลอดภัยหรือไม่
รองรับการรักษาความปลอดภัยแบบ 128 บิตเท่านั้น เนื่องจากผู้โจมตีต้องการเพียงแค่ทำลายคีย์การขนส่งแบบ 128 บิตเท่านั้น ซึ่งปลอดภัย แต่คุณไม่ได้รับความปลอดภัยจากการใช้คีย์ 256 บิต
หากคุณใช้คีย์ 128 บิตแยกกัน 2 คีย์ จะค่อนข้างยุ่งยากเล็กน้อย หากผู้โจมตีมีวิธีตรวจสอบโดยอิสระว่าพวกเขาถอดรหัสได้อย่างถูกต้องในแต่ละครึ่งของคีย์ 256 บิต ตัวอย่างเช่น หากอัลกอริทึมการเข้ารหัสคีย์ได้รับการตรวจสอบความถูกต้องแล้ว ผู้โจมตีจะสามารถถอดรหัสได้โดย
- การค้นหาคีย์ 128 บิตแรกโดยใช้กำลังเดรัจฉาน ($2^{128}$ ขั้นตอน);
- การค้นหาคีย์ 128 บิตที่สองโดยใช้กำลังเดรัจฉาน ($2^{128}$ ขั้นตอน);
ซึ่งเป็น $2^{128} + 2^{128} = 2 \คูณ 2^{128} = 2^{129}$ ขั้นตอน ดังนั้นคุณจะได้รับความปลอดภัย 129 บิตเท่านั้น
อย่างไรก็ตาม หากอัลกอริทึมการเข้ารหัสคีย์ไม่มีวิธียืนยันการถอดรหัสที่ถูกต้อง และคีย์ 256 บิตเป็นแบบสุ่ม การโจมตีนั้นจะไม่ทำงานเนื่องจากไม่มีวิธียืนยันในขั้นตอนที่ #1 ว่าคุณมีคีย์ที่ถูกต้อง ครึ่งแรก อัลกอริทึมกำลังเดรัจฉานจะกลายเป็น:
- สำหรับแต่ละค่าที่เป็นไปได้ (จาก $2^{128})$ ของคีย์แรก:
- สำหรับแต่ละค่าที่เป็นไปได้ (จาก $2^{128}$) ของคีย์ที่สอง:
- ลองถอดรหัสแต่ละคีย์ที่ส่งผ่านครึ่งหนึ่งด้วยชุดค่าผสมนั้น จากนั้นถอดรหัสข้อความด้วยคีย์ 256 บิตที่คุณได้รับ
และนี่คือ $2^{128} \คูณ 2^{128} = 2^{128 + 128} = 2^{256}$ ขั้นตอนและไม่มีอะไรดีไปกว่าการโจมตีคีย์ 256 บิตด้วยกำลังดุร้าย
อัลกอริทึมการเข้ารหัสที่แนะนำตามปกติในปัจจุบันนี้เรียกว่า "AEAD" (การเข้ารหัสที่รับรองความถูกต้องพร้อมข้อมูลที่เกี่ยวข้อง) ซึ่งจะจัดอยู่ในประเภทแรก ดังนั้นคุณจึงมีความแข็งแกร่งเพียง 129 บิตเท่านั้น คุณต้องใช้อัลกอริธึมที่ไม่ใช่ AEAD ที่เก่ากว่าเพื่อส่งคีย์ครึ่งหนึ่ง