IDEA (International Data Encryption Algorithm)
บล็อกไซเฟอร์แบบสมมาตร บล็อก 64 บิต กุญแจ 128 บิต 8 รอบ + Output Transformation พัฒนาโดย Lai & Massey (1991)
โครงสร้างภาพรวม
- แบ่ง 64 บิต → 4 ส่วน ย่อย 16 บิต: P1, P2, P3, P4
- 8 รอบ แต่ละรอบใช้ 6 กุญแจย่อย (K1-K6) 16 บิต ต่อรอบ
- รอบสุดท้ายตามด้วย Output Transformation ใช้ 4 กุญแจย่อย (K49-K52)
- รวมกุญแจย่อยทั้งหมด: 52 ตัว (8×6 + 4)
การสร้างกุญแจย่อย (Key Schedule)
- กุญแจ 128 บิต → แบ่ง 8 ส่วน 16 บิต
- รอบ 1: ใช้บิต 1-96 (K1-K6)
- รอบ 2: เลื่อนวนซ้าย 25 บิต ใช้บิต 26-89 (K7-K12)
- รอบ 3: เลื่อนวนซ้าย 25 บิต ใช้บิต 51-82 (K13-K18)
- ... ทำซ้ำจนครบ 52 กุญแจย่อย
การดำเนินการในแต่ละรอบ (14 ขั้นตอน)
ใช้ 3 อ็อปเปอเรเตอร์แบบโมดูลาร์ (Modular Arithmetic):
- ⊞ (Addition modulo 2¹⁶): (a + b) mod 65536
- ⊙ (Multiplication modulo 2¹⁶+1): (a × b) mod 65537 (พิเศษ: 0 แทน 65536)
- ⊕ (XOR): บิตต่อบิต
| ขั้นตอน | การดำเนินการ |
|---|---|
| 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 บิต → นำเข้ารอบถัดไป
Output Transformation (หลังรอบที่ 8)
- รับ R1-R4 (32 บิต) มา 4 บล็อก
- R1 ⊙ K49, R2 ⊞ K50, R3 ⊞ K51, R4 ⊙ K52
- รวมเป็น Ciphertext 64 บิต
การถอดรหัส
- ใช้โครงสร้าง เหมือนกันทุกประการ (Self-similar)
- แตกต่าง: กุญแจย่อยถูกสลับลำดับและคำนวณ Inverse
- K1-K4 → ใช้ Inverse ของ K49-K52
- K5, K6 → ใช้ Inverse ของ K47, K48
- ลำดับรอบย้อนกลับ
สถานะปัจจุบัน
- เคยได้รับสิทธิบัตร (หมดอายุ 2012) ตอนนี้ Public Domain
- ใช้ใน PGP (รุ่นเก่า), SSH v1
- ไม่แนะนำใช้ใหม่: บล็อก 64 บิต (Sweet32), Key Schedule อ่อนแอ, ช้ากว่า AES, ไม่มี Hardware Acceleration
- ใช้ AES-256-GCM หรือ ChaCha20-Poly1305 แทน