Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Cấu trúc DES (Data Encryption Standard) trong An ninh Thông tin

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):

  1. Expansion (E): 32-bit → 48-bit (mở rộng, lặp bit theo bảng cố định).
  2. Key XOR: 48-bit ⊕ Round Key Kᵢ (48-bit).
  3. 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.
  4. 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).