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

การเข้ารหัส IDEA ทำงานอย่างไร?

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): บิตต่อบิต
ขั้นตอนการดำเนินการ
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 บิต → นำเข้ารอบถัดไป

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 แทน