DES (Data Encryption Standard) là block cipher Feistel 64-bit block, 56-bit key (64-bit với 8 parity bit), 16 vòng. Tiêu chuẩn Federal (FIPS 46-3, 1977), đã được AES thay thế (2001) và deprecated NIST (2023). Chỉ dùng cho legacy/học tập.
Kiến trúc tổng thể
Plaintext (64-bit)
│
▼
Initial Permutation (IP) — fixed, keyless
│
▼
16 Feistel Rounds (Round 1..16)
│
▼
Final Permutation (FP = IP⁻¹) — inverse of IP
│
▼
Ciphertext (64-bit)
1. Initial / Final Permutation (IP / FP)
- Fixed permutation 64-bit → 64-bit (keyless). IP và FP là nghịch đảo nhau.
- Ví dụ: IP: bit 58 → vị trí 1; FP: vị trí 1 → bit 58.
- Không cung cấp bảo mật (public, keyless) — chỉ để phù hợp phần cứng 1970s (bit-serial).
2. Feistel Round Function (F-function)
Mỗi vòng: Lᵢ = Rᵢ₋₁, Rᵢ = Lᵢ₋₁ ⊕ F(Rᵢ₋₁, Kᵢ)
F-function (32-bit input, 48-bit round key → 32-bit output):
- Expansion (E): 32-bit → 48-bit (mở rộng, lặp bit theo bảng cố định).
- Key XOR: 48-bit ⊕ Round Key Kᵢ (48-bit).
- S-boxes (Substitution): 8 S-box, mỗi box 6-bit in → 4-bit out. Đơn vị phi tuyến duy nhất của DES. Tổng 32-bit output.
- Permutation (P): 32-bit → 32-bit (hoán vị bit cố định, lan tỏa output S-box).
3. Key Schedule (Key Generation)
- Input: 64-bit key → drop 8 parity bit → 56-bit effective key.
- Permuted Choice 1 (PC-1): 56-bit → 2×28-bit halves (C₀, D₀).
- Mỗi vòng: Left shift C,D (1 bit cho vòng 1,2,9,16; 2 bit cho vòng khác).
- Permuted Choice 2 (PC-2): 56-bit (Cᵢ,Dᵢ) → 48-bit Round Key Kᵢ.
- 16 round keys K₁..K₁₆.
4. Decryption
Feistel network: Decryption = Encryption với thứ tự round key ngược lại (K₁₆, K₁₅, ..., K₁). Cấu trúc IP/FP/F-function y hệt.
Điểm yếu đã biết (Vulnerabilities)
- Key length 56-bit: Brute-force khả thi (1997: EFF Deep Crack 56h; 2017: ~$100 cloud).
- Weak keys / Semi-weak keys: 4 weak keys (all 0/1 trong C/D), 6 cặp semi-weak — self-inverse encryption.
- Complement property: E(K, P) = C ⇒ E(K̅, P̅) = C̅ — giảm brute-force 1 bit.
- Small block (64-bit): Birthday bound 2³² blocks (~32GB) → collision/leak trong CBC/CTR mode.
- Linear/Differential Cryptanalysis: 2⁴³ known / 2⁴⁷ chosen plaintext (giảm vòng).
Triple DES (3DES / TDEA) — Legacy mitigation
- 3-key 3DES (K1, K2, K3): E(K₁, D(K₂, E(K₃, P))). Effective security ~112-bit (meet-in-the-middle).
- 2-key 3DES (K1, K2, K1): E(K₁, D(K₂, E(K₁, P))). Effective ~80-bit — deprecated.
- NIST SP 800-131A: Chỉ cho phép 3-key 3DES cho legacy đến 2023, sau đó cấm hoàn toàn.
Lời khuyên: Không dùng DES/3DES cho hệ thống mới. Dùng AES-256-GCM hoặc ChaCha20-Poly1305. Chỉ duy trì DES/3DES cho hệ thống legacy không thể nâng cấp ngay, với补偿 biện pháp (monitoring, isolation, migration plan).