Data Encryption Standard (DES)
1. DES at a Glance (FIPS 46, 1977)
IBM Lucifer → NBS standard: 64-bit blocks, 56-bit key (64 bits with 8 parity), 16 Feistel rounds. Structure:
P(64) → IP → (L0 32 | R0 32)
16×: Li = R(i-1) ; Ri = L(i-1) ⊕ F(R(i-1), Ki) [Ki = 48-bit subkey]
→ swap → FP (= IP⁻¹) → C(64)
IP/FP are keyless bookends (no security, historical hardware convenience). All strength sits in + key schedule.
2. Round Function F (E → XOR → S → P)
: is 32 bits, 48 bits:
R(32) → Expansion E → 48 bits → XOR K(48)
→ 8 S-boxes (6→4 each) → 32 bits → Permutation P → F output
- E-box : 32 → 48 by duplicating 16 edge bits — feeds diffusion (each input bit hits two S-boxes).
- S-boxes : 6 bits in (row = outer , col = inner ), 4 bits out — the ONLY nonlinear part (confusion core). Example: : row , col → .
- P-box straight permutation of 32 bits — diffusion across S-boxes next round.
3. Key Schedule (56 → 16 × 48)
64-bit key (every 8th bit parity, discarded) → PC-1 → 56 bits → split 28+28 → per round : left-rotate by 1 (rounds 1,2,9,16) or 2 (others) → PC-2 selects 48 → . Total rotations = full cycle, so . Decrypt: apply .
Numerical check habit: given and round-1 shift 1, = PC-2 of once-rotated halves — exams test shift counts (which rounds shift 1?) more than full PC tables.
4. DES in One Worked Bite + Decryption
Round-0 example: -style halves; output XOR flips half of bits (avalanche visible by round 3). Decryption proof: Feistel invertibility (Topic 2): with , run same rounds with : , — unwinds exactly. IP/FP cancel ().
5. DES Properties and Legacy
- Complement property: — saves 1 bit in brute force (chosen-plaintext distinguisher).
- Weak keys (4: all-0/all-1 halves → all subkeys equal; ), semi-weak pairs (6 pairs: ) — avoid in key generation.
- 56-bit key fell 1998 (EFF Deep Crack, 56 h); 64-bit block falls to Sweet32 birthdays — DES survives only as Triple-DES (Module 4 Topic 4).
Exam Points
- Block diagram with IP → 16 Feistel → FP + internals (E/S/P sizes 32→48→32) — 5-mark diagram.
- S-box indexing (outer = row, inner = col) with trace.
- Key schedule: PC-1 → shifts (1,2,9,16 shift 1) → PC-2; total 28 rotations.
- Complement + weak keys statements; decrypt = reversed subkeys.