Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

IDEA มีรอบการเข้ารหัสกี่รอบ?

IDEA (International Data Encryption Algorithm)

บล็อกไซเฟอร์แบบสมมาตร บล็อก 64 บิต กุญแจ 128 บิต 8 รอบ (Rounds) + Output Transformation

โครงสร้างแต่ละรอบ

  • Input: 4 ส่วนย่อย 16 บิต (P1, P2, P3, P4)
  • ใช้ 6 กุญแจย่อย 16 บิตต่อรอบ (K1-K6 รอบแรก, K7-K12 รอบที่ 2, ...)
  • รวมกุญแจย่อย: 8 รอบ × 6 + 4 (Output Transformation) = 52 กุญแจย่อย

รายละเอียด 1 รอบ (14 ขั้นตอน)

ใช้ 3 อ็อปเปอเรเตอร์ใน GF(2¹⁶) และ GF(2¹⁶+1):

  • ⊞ = Addition mod 2¹⁶ (65536)
  • ⊙ = Multiplication mod 2¹⁶+1 (65537) (0 แทน 65536)
  • ⊕ = XOR
StepOperation
1P1 ⊙ K1
2P2 ⊞ K2
3P3 ⊞ K3
4P4 ⊙ K4
5Step1 ⊕ Step3
6Step2 ⊕ Step4
7Step5 ⊙ K5
8Step6 ⊞ Step7
9Step8 ⊙ K6
10Step7 ⊞ Step9
11Step1 ⊕ Step9
12Step3 ⊕ Step9
13Step2 ⊕ Step10
14Step4 ⊕ Step10

ผลลัพธ์ 4 ส่วน 16 บิต → Input รอบถัดไป

Key Schedule

  • กุญแจ 128 บิต → 8 ส่วน 16 บิต
  • รอบ 1: ใช้บิต 1-96
  • รอบ 2: เลื่อนวนซ้าย 25 บิต ใช้บิต 26-89
  • รอบ 3: เลื่อนวนซ้าย 25 บิต ใช้บิต 51-82
  • ... ทำซ้ำจนครบ 52 กุญแจย่อย

Output Transformation (หลังรอบที่ 8)

  • R1 ⊙ K49, R2 ⊞ K50, R3 ⊞ K51, R4 ⊙ K52
  • รวม → Ciphertext 64 บิต

การถอดรหัส

  • โครงสร้าง เหมือนกัน (Self-similar)
  • กุญแจย่อย: ลำดับย้อนกลับ + คำนวณ Inverse (Additive Inverse สำหรับ ⊞, Multiplicative Inverse สำหรับ ⊙)

สถานะ

8 รอบ, บล็อก 64 บิต, กุญแจ 128 บิต ล้าสมัย (Sweet32, Weak Keys, ไม่มี HW Accel) ใช้ AES-256-GCM แทน