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
| Step | Operation |
|---|---|
| 1 | P1 ⊙ K1 |
| 2 | P2 ⊞ K2 |
| 3 | P3 ⊞ K3 |
| 4 | P4 ⊙ K4 |
| 5 | Step1 ⊕ Step3 |
| 6 | Step2 ⊕ Step4 |
| 7 | Step5 ⊙ K5 |
| 8 | Step6 ⊞ Step7 |
| 9 | Step8 ⊙ K6 |
| 10 | Step7 ⊞ Step9 |
| 11 | Step1 ⊕ Step9 |
| 12 | Step3 ⊕ Step9 |
| 13 | Step2 ⊕ Step10 |
| 14 | Step4 ⊕ 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 แทน