Tổng quan
DES là thuật toán mật mã khối nhận plaintext khối 64-bit, biến đổi thành ciphertext dùng khóa 48-bit. Thuật toán khóa đối xứng. Thiết kế DES do IBM phát minh 1974 (lưu ý: năm 1974 trong văn bản gốc, thực tế thiết kế sớm hơn). Một số kiểm tra chứng minh DES thỏa mãn các thuộc tính yêu cầu. Các vấn đề thiết kế:
1. S-Boxes (Hộp thay thế)
S-Boxes: thủ tục nhận 48-bit đầu vào từ phép XOR (khóa nén + RPT mở rộng) tạo 32-bit đầu ra bằng kỹ thuật thay thế. Thay thế bởi 8 hộp thay thế (S-boxes).
Các tính chất S-Boxes:
- Các mục trong mỗi hàng là hoán vị giá trị 0-15.
- S-boxes phi tuyến tính (non-linear): đầu ra không phải biến đổi affine của đầu vào.
- Thay đổi 1 bit đầu vào → thay đổi ≥ 2 bit đầu ra.
- Nếu 2 đầu vào khác nhau chỉ ở 2 bit giữa (bit 3,4) → đầu ra khác nhau ít nhất 2 bit. Tức S(x) và S(x ⊕ 001100) khác nhau ≥ 2 bit.
- Nếu 2 đầu vào khác ở 2 bit đầu (bit 1,2) và giống 2 bit cuối (5,6) → 2 đầu ra phải khác nhau. S(x) ≠ S(x ⊕ 11bc00), b,c bit tùy ý.
2. D-Boxes / P-Boxes (Hộp hoán vị)
D-box (P-box) là hộp hoán vị với đặc điểm giống mật mã hoán vị truyền thống.
Tính chất D-Boxes:
- Mỗi đầu vào S-box đến từ đầu ra S-box KHÁC (vòng trước).
- Không đầu vào S-box nào đến từ đầu ra CÙNG S-box (vòng trước).
- 4 đầu ra mỗi S-box đi đến 6 S-box KHÁC NHAU (vòng sau).
- Không 2 bit đầu ra từ một S-box đi đến CÙNG một S-box (vòng sau).
- Với mỗi S-box: 2 bit đầu ra đi đến 2 bit đầu/cuối của S-box vòng sau; 2 bit còn lại đi đến bit giữa của S-box vòng sau.
3. Số vòng (Number of Rounds)
DES dùng 16 vòng Feistel. Chứng minh sau 8 vòng, mỗi ciphertext là hàm của mọi bit plaintext và mọi bit khóa; ciphertext là hàm ngẫu nhiên mạnh của plaintext và ciphertext. → 8 vòng có vẻ đủ. Nhưng dùng 16 vòng để an toàn hơn.