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

Triple DES คืออะไร?

Triple DES (3DES / TDEA)

บล็อกไซเฟอร์แบบสมมาตร ใช้ DES ทำซ้ำ 3 รอบ เพื่อเพิ่มความยาวกุญแจที่มีผล

โครงสร้าง

3-Key 3DES (Keying Option 1) - มาตรฐาน

Encryption:  C = E_{K3}(D_{K2}(E_{K1}(P)))
Decryption:  P = D_{K1}(E_{K2}(D_{K3}(C)))
  • K1, K2, K3 = กุญแจ 56 บิต ตัวละ (รวม 168 บิต)
  • ลำดับ: เข้ารหัส (K1) → ถอดรหัส (K2) → เข้ารหัส (K3)
  • ทำแบบ E-D-E เพื่อ Backward Compatibility: ถ้า K1=K2=K3 จะกลายเป็น DES ธรรมดา

2-Key 3DES (Keying Option 2) - ล้าสมัย

C = E_{K1}(D_{K2}(E_{K1}(P)))
  • K1, K2 = กุญแจ 56 บิต (รวม 112 บิต), K3 = K1
  • มีช่องโหว่ Meet-in-the-Middle → ความแข็งแกร่งจริง ~80 บิต NIST ห้ามใช้ใหม่

คุณสมบัติหลัก

คุณสมบัติค่า
ขนาดบล็อก64 บิต
ขนาดกุญแจนำเข้า64 บิต × 3 = 192 บิต (มีพาริตี้ 8 บิต/กุญแจ)
ขนาดกุญแจที่มีผล56 บิต × 3 = 168 บิต (3-key), 112 บิต (2-key)
จำนวนรอบ DES48 รอบ (3 × 16)
ความเร็ว~1/3 ของ DES
โหมดทำงานECB, CBC, CFB, OFB, CTR (แนะนำ CBC/CTR)

จุดแข็ง / จุดอ่อน

  • ✅ แก้ปัญหา Brute-force ของ DES (56 บิต → 112/168 บิต)
  • ✅ เข้ากันได้กับระบบเก่า (Legacy Systems)
  • ✅ มาตรฐาน ANSI X9.52, ISO/IEC 18033-3
  • ❌ ช้า (Software: ไม่มี AES-NI, Hardware: 48 รอบ)
  • ❌ บล็อก 64 บิต → เปิดโอกาส Sweet32 Attack (Birthday Bound)
  • ❌ 2-key 3DES แตกได้ด้วย Meet-in-the-Middle
  • ❌ NIST Deprecated 2023 ห้ามใช้เข้ารหัสใหม่

สถานะปัจจุบันและข้อแนะนำ

  • ยังพบใน: TLS 1.2 (Cipher Suite ล้าสมัย), SSH, IPsec, Java Legacy, โปรโตคอลการเงินเก่า
  • ต้องย้ายไป AES-256-GCM หรือ ChaCha20-Poly1305 ทันที
  • อนุญาตให้ใช้ถอดรหัสข้อมูลเก่า (Legacy Decryption) เพื่อ Migrate เท่านั้น

การจัดการกุญแจ

  • กุญแจ 3DES ควรสร้างด้วย CSPRNG (Cryptographically Secure PRNG)
  • เก็บใน HSM (Hardware Security Module) หรือ KMS
  • หมุนเวียนกุญแจ (Key Rotation) ตามนโยบายองค์กร