DES (Data Encryption Standard) — Feistel 64-bit block, 56-bit key, 16 vòng — an toàn khi thiết kế (1970s) nhưng nay không đáp ứng yêu cầu bảo mật hiện đại. Các yếu tố chính:
1. Độ dài khóa (Key Length) — Yếu tố quyết định
- 56-bit effective key (64-bit với 8 parity bit).
- Key space: 2⁵⁶ ≈ 7.2×10¹⁶.
- Brute-force: 1997 EFF Deep Crack (56h), 2017 ~$100 cloud, 2024: giây/phút trên ASIC/FPGA/GPU farm.
- Complement property: E(K, P) = C ⇒ E(K̅, P̅) = C̅ → giảm 1 bit (2⁵⁵).
- Kết luận: 56-bit hoàn toàn không đủ. NIST khuyến nghị ≥112-bit (3DES 3-key) / ≥128-bit (AES-128) từ 2010s.
2. Kích thước khối (Block Size) — 64-bit
- Birthday bound: ~2³² blocks (32 GB) dưới cùng khóa → collision ciphertext (CBC/CTR mode).
- Sweet32 Attack (2016): Khai thác collision trên TLS/VPN dùng 3DES/Blowfish 64-bit block → recover plaintext (cookie, auth token).
- AES 128-bit block → birthday bound 2⁶⁴ blocks (256 EB) — an toàn.
3. Số vòng (Number of Rounds) — 16 vòng
- DES 16 vòng được chọn để chống differential cryptanalysis (NSA/IBM biết trước).
- Giảm vòng: DES 8 vòng bị differential phá vỡ; DES ≤7 vòng dễ phá hơn brute-force.
- 16 vòng đủ margin cho differential/linear attacks thời điểm đó, nhưng không đủ cho key length hiện đại.
- AES: 10/12/14 vòng cho 128/192/256-bit key — margin lớn hơn (best attack 7/10 vòng).
4. Weak Keys & Key Schedule Weakness
- 4 Weak keys: C₀/D₀ all-0 hoặc all-1 → mọi round key giống nhau → self-inverse encryption.
- 6 Semi-weak key pairs: K₁, K₂: E(K₁, E(K₂, P)) = P.
- Key schedule tuyến tính: Chỉ rotation + PC-2 compression → related-key attack dễ dàng, không có key separation tốt.
- AES key schedule: Non-linear (SubWord, Rcon, RotWord) — tốt hơn đáng kể (trừ AES-256 related-key weakness).
5. Cấu trúc đại số (Algebraic Structure)
- DES encryption operations có thể hình thành group? Nếu DES closed under composition → E(K₂, E(K₁, P)) = E(K₃, P) → multiple encryption vô nghĩa.
- Thực tế DES không phải group (Campbell & Wiener 1992), nhưng có cấu trúc đại số phức tạp.
- Meet-in-the-middle trên 2DES: 2⁵⁷ time, 2⁵⁶ memory — phá vỡ 2DES hoàn toàn.
- 3DES tránh được bằng 3 khóa độc lập (E-D-E).
6. S-box Design — Cũ so với tiêu chuẩn hiện đại
- 8 S-box 6→4 bit, table-based (512 entry tổng).
- Differential uniformity = 4 (1/16) — cao hơn AES (4/256 = 1/64).
- Linear bias max = 5/16 — bias tích lũy qua 16 vòng cho linear cryptanalysis (2⁴³ known PT).
- AES S-box: x⁻¹ trên GF(2⁸) + affine — math-based, non-linearity 112 (max), diff uniformity 4/256.
7. Triển khai & Side-Channel
- S-box table lookup → cache timing attack (Bernstein 2005).
- Feistel structure: branching trên bit khóa → power analysis (DPA/CPA).
- Không có constant-time requirement khi thiết kế (1970s).
- Hiện đại: AES-NI (hardware), bitslicing, masking, shuffling bắt buộc.
Bảng tóm tắt
| Yếu tố | DES | Yêu cầu hiện đại | Đánh giá |
|---|---|---|---|
| Key length | 56-bit | ≥128-bit (AES-128), ≥256-bit long-term | FAIL — Brute-force dễ dàng |
| Block size | 64-bit | ≥128-bit | FAIL — Sweet32, birthday bound |
| Rounds | 16 | Margin > best attack (AES: 10 vs 7) | OK cho thiết kế 1970s, nhưng key/block yếu |
| S-box | 6→4 table, diff unif 4/64 | 8→8 math-based, diff unif 4/256 | Yếu so với AES |
| Key schedule | Linear rotation + PC-2 | Non-linear, key separation | Yếu (related-key) |
| Side-channel resistance | Không thiết kế cho | Bắt buộc (constant-time, HW accel) | FAIL |
Kết luận: DES thất bại ở key length (56-bit) và block size (64-bit) — hai tham số không thể sửa bằng cách thêm vòng hoặc sửa S-box. 3DES khắc phục key length (112-bit) nhưng giữ block 64-bit và chậm 3×. Giải pháp duy nhất: Thay thế bằng AES (128-bit block, 128/256-bit key) hoặc ChaCha20 (256-bit key, 512-bit state).