ภาพรวม DES (Data Encryption Standard)
DES เป็นบล็อกไซเฟอร์แบบสมมาตร (Symmetric Block Cipher) ใช้บล็อกขนาด 64 บิต กุญแจ 56 บิต (จาก 64 บิตตัดพาริตี้ 8 บิต) โครงสร้างแบบไฟสเทล (Feistel) 16 รอบ
ขั้นตอนการเข้ารหัส
- Initial Permutation (IP): สลับบิต 64 บิตตามตารางคงที่ → แบ่งเป็น L₀, R₀ (ครึ่งละ 32 บิต)
- 16 รอบ Feistel (Rounds): แต่ละรอบ i (1-16) รับ Lᵢ₋₁, Rᵢ₋₁ ให้ Lᵢ, Rᵢ
- Lᵢ = Rᵢ₋₁
- Rᵢ = Lᵢ₋₁ ⊕ f(Rᵢ₋₁, Kᵢ)
- f = ฟังก์ชันรอบ: ขยาย R 32→48 บิต, XOR กับกุญแจย่อย Kᵢ 48 บิต, S-box แทนที่ 48→32 บิต, P-box เรียงลำดับ 32 บิต
- Final Permutation (FP = IP⁻¹): สลับบิตกลับตามตาราง FP → ได้ซิเฟอร์เท็กซ์ 64 บิต
การถอดรหัส (Decryption)
ใช้ อัลกอริทึมเดียวกัน แต่เรียงกุญแจย่อยย้อนกลับ: K₁₆, K₁₅, ..., K₁ โครงสร้างไฟสเทลทำให้การเข้ารหัส-ถอดรหัสเหมือนกันได้ เพราะการสลับ (Swap) และ XOR เป็นกลับตัวเอง
ตาราง Final Permutation (FP)
| 40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 | 39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
| 38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 | 37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
| 36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 | 35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 |
| 34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 | 33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
จุดสำคัญ
- DES ใช้การแทนที่ (Substitution/Confusion) และการเรียงลำดับ (Permutation/Diffusion)
- กุญแจ 56 บิต ปัจจุบันถูกโจมตีแบบ Brute-force ได้แล้ว → ใช้ 3DES หรือ AES แทน
- IP และ FP เป็นกันเอง ไม่มีกุญแจ ให้ diffusion เล็กน้อย