1. Information Safe
Confidentiality
Modern cipher
Van Hoang Nguyen
Mail: startnewday85@gmail.com
Department of Computer Science
Faculty of Information Technology – Hanoi University of Agriculture.
4. Ý tưởng của block Ciphers
Mã hóa từng khối của plaintext một lần. Giả sử độ lớn
của mỗi khối là n bits, thì ứng với mỗi n bits đầu vào
sẽ cho ra n bits mã hóa
PlainText
Block Block Block Block
Encrypt
CBlock CBlock CBlock CBlock
CipherText
7. Block Ciphers ≈ Monoalphabetic cipher
Để chứng minh, trước hết ta giả sử mỗi khối có cỡ là n
bits. Khi đó:
• Bảng chữ cái gốc chính là bảng chữ cái mà mỗi chữ
cái là một bộ n bits
• Quá trình mã hóa khối đơn giản có thể hiểu là thay
thế n bits ban đầu bằng n bits mã hóa. Vậy nên nó
cũng như là việc thay thế chữ cái này bằng chữ cái
khác
• Như vậy phương thức mã hóa có thể được diễn đạt
thông qua một bảng chữ cái mã hóa mà ở đó mỗi chữ
cái là một bộ n bits
Như vậy mã khối là “tương đương” với mã một bảng chữ cái!
9. Năm 800!!!
Abu Yusuf Ya'qub ibn Is-haq ibn as-
Sabbah ibn 'omran ibn Ismail al-Kindi
10. Confusion và Diffusion
• Hai thuật ngữ này được Claude
Shannon đề xuất vào năm 1949 trong ý
tưởng về mạng thế và hoán vị(S-P
Network)
• Confusion – Sự rối loạn là thuật ngữ
dùng để chỉ những kỹ thuật nhằm làm cho
quá trình tìm kiếm mối quan hệ thống kê
giữa khóa và bản mã trở nên “không thể”
• Diffusion – Sự khuyếch tán là thuật
ngữ dùng để chỉ những kỹ thuật nhằm làm
cho quá trình tìm kiếm mối quan hệ thống
kê giữa bản gốc và bản mã trở nên
“không thể”
Claude Shannon
11. Tính an toàn của block cipher
• Hàm mã hóa E phải là hàm có tính đảo ngược
được, tức E là một “song ánh”
• Gọi n là cỡ của khối. Khi đó ta sẽ có 2n! các
hàm E khác nhau
- Với n nhỏ => dễ bị tấn công bởi phương pháp
thống kê, và vét cạn(brute-force)
- Với n lớn ?
Không thể tìm ra mối liên hệ thống kê
Không thể thực hiện vét cạn vì số lượng hàm E tăng rất
nhanh theo n
13. Nhược điểm của mã khối tổng quát
Mã khối tổng quát rõ ràng là an toàn với n lớn.
Nhưng n lớn chưa hẳn là khả thi với nhà lập mã:
• Vì để tạo ra hàm E tổng quát => Khóa đơn giản
chính là mô tả của hàm E
• Khi n lớn, mô tả của hàm E sẽ rất phức tạp
Chẳng hạn: Với n=64:
Để mô tả hàm E cần 64*264 bits ≈ 220 TB!!!
15. ý tưởng của Horst Feistel
Ý tưởng của Feistel là xấp xỉ ý tưởng mã khối. Cụ
thể là thay vì sử dụng mã khối tổng quát, ta chỉ sử
dụng một tập con trong tập các hàm tổng quát(những
hàm có thể mô tả một cách đơn giản hơn)
• Hill cipher và các hàm tuyến tính là một ví dụ
c1 p1k11 p2 k12 ... pn k1n
c p k p k ... p k
2 1 21 2 22 n 2n
.............................................
.............................................
cn 1 p1k( n 1)1 p2 k( n 1) 2 ... pn k( n 1) n
cn p1k n1 p2 k n 2 ... pn k nn
17. ý tưởng của Horst Feistel
• Horst Feistel đề nghị sử dụng mã tích thay vì
các hàm tuyến tính
• Ông đề nghị sử dụng luân phiên phép thế và
phép hoán vị
• Horst Feistel thực sự thành công trong việc
hiện thực hóa ý tưởng S-P Network của Claude
Shannon
18. Feistel cipher structure
Được xây dựng dựa trên ý tưởng của Feistel.
• Một khối của plaitext(PB) sẽ chạy qua n vòng mã hóa
để sinh ra một khối của ciphertext(CB)
• Đầu tiên PB được chia làm 2 phần ký hiệu là: R0,L0
• Khóa mã hóa K sẽ được sử dụng để sinh ra n khóa
con(subkey): ki với 1≤i≤n
• Tại vòng mã hóa i:
- Input: Ri-1, Li-1(là kết quả của vòng thứ i-1)
- Output: Ri = F(Ri-1,ki) xor Li-1
Li = Ri-1
• CB=Rn||Ln.
20. Feistel cipher structure
Nhận xét:
• Hàm thế được áp dụng trên nửa trái(F và phép xor)
• Các vòng có cùng một cấu trúc nhưng được khác biệt
hóa bởi khóa con ki
• Cuối cùng phép hoán vị được thực hiện bằng cách đảo
vị trí hai nửa
Cấu trúc của Feistel bản chất là việc thực hiện luân phiên
các chức năng confusion(rối loạn) và diffusion(khuyếch tán).
Cấu trúc của Feistel là một cài đặt cụ thể cho ý tưởng của
Claude Shannon.
21. Feistel decipher structure
Giống hệt với mã hóa nhưng thực hiện theo chiều
ngược lại:
• Ciphertext được sử dụng làm input
• Các khóa con ki được sử dụng theo trình tự ngược
lại: kn,kn-1,…,k2,k1
Sự đối xứng trong cấu trúc mã hóa và giải mã chính
là nét đẹp trong cấu trúc của Feistel cipher.
22.
23. Nguyên tắc thiết kế mã khối Feistel
Một số yếu tố cần quan tâm khi thiết kế:
• Block size – Cỡ của khối
• Key size – Cỡ của khóa
• Số lượng vòng(n)
• Thuật toán sinh khóa con
• Hàm F
Phần mềm mã hóa/giải mã phải “nhanh”
Cấu trúc phải “clear”
27. • Ngay trong thời kỳ đầu mã hóa, người ta đã thấy sự
cần thiết phải thống nhất với nhau phương pháp mã hóa
• Điều này càng được thấy rõ hơn trong chiến tranh
thế giới thứ II, khi mà những trao đổi thông tin bí
mật giữa các quốc gia trở nên phổ biến
• Những năm 1960, máy tính đã được sử dụng trong
các doanh nghiệp. Và mã hóa máy tính trở thành
phương tiện cho trao đổi thông tin bí mật
• Ngày 15/5/1973, Cục tiêu chuẩn quốc gia Hoa
Kỳ(NBS) lên kế hoạch chuẩn hóa việc mã hóa dữ liệu
29. Data Encryption Standard
• Năm 1977, NBS đưa ra chuẩn mã hóa dữ liệu –
DES(FIPS PUB 46)
• DES lập tức trở nên phổ biến trong công việc mã hóa
• DES là một mã khối với:
- Block size : 64 bits
- Key size : 56 bits
• DES được dựa trên dự án Tuchman-Meyer – một phiên
bản cải tiến của Lucifer cho mục đích thương mại
30. Những tranh luận về thiết kế của
DES
DES được đưa ra tranh luận vì DES là một chuẩn
công khai. Có 2 khía cạnh là:
• Key size: theo đánh giá 56 bits là hơi nhỏ
• Chi tiết thiết kế của S-Box
Mặc cho những bàn cãi khác nhau về tính an toàn của
DES. DES vẫn được sử dụng một cách rộng rãi!
31. DES Encryption
• DES có cấu trúc tương
64 bits
tự như cấu trúc của
Feistel nếu bỏ đi hàm IP IP
và IP-1 ở đầu và cuối.
Round 1
Round 16
Swap
IP-1
64 bits
32. Initial permution(IP)
• IP là bước đầu tiên trong cấu trúc của DES
• Bản chất của hàm IP là tạo ra một hoán vị của input
• Hàm hoán vị được định nghĩa theo cấu trúc bảng
• Với một bảng mô tả hàm IP sẽ có bảng tương ứng mô
tả cho hàm IP-1
35. Cấu tạo một vòng DES
• Input là một chuỗi 64 bits.
• Đầu tiên input được chia làm 2 nửa ký hiệu là L và R.
• Output là một chuỗi 64 bits, được xây dựng từ 2 nửa:
output=L’||R’. Trong đó:
- L’=R
- R’=L xor F(R,K)
36. Cấu tạo một vòng DES
Hàm F được mô tả trong DES như sau:
• Input là một chuỗi 32 bits(là nửa phải 32 bits
trong input của vòng).
Expansion/permutation
• Input đầu tiên được chạy qua hàm E
(Expansion/permuation) để thực hiện hoán 48 bits
đổi và bổ xung thêm 16 bits. Kết quả trả ki
xor
ra chuỗi 48 bits.
• Chuỗi 48 bits thu được đem xor với khóa
Substitution/choice
k.
32 bits
• Tiếp đến chạy qua hàm S-box để thực Permutation
hiện phép thế và chọn. Kết quả trả ra chuỗi
32 bits.
32 bits
• Cuối cùng chạy qua một hàm hoán vị P để
trả ra 32 bits output.
37. Cấu tạo một vòng DES
Hàm E(Expansion/permutation):
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Hàm E được mô tả bằng một bảng hoán vị, có sự mở
rộng bằng cách lặp 16 bits.
38. Cấu tạo một vòng DES
Cấu tạo của S-box:
• Hàm F chứa 8 S-box.
• Input cho mỗi S-box là một chuỗi 6 bits.
• Output cho mỗi S-box là một chuỗi 4 bits.
• S-box được định nghĩa dưới dạng bảng, có cấu trúc như sau:
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
• Phương thức hoạt động của S-box:
- Hai bits: đầu và cuối: chỉ số dòng.
- Bốn bits giữa: chỉ số cột.
39. Cấu tạo một vòng DES
Cấu tạo P(Permutation):
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
Cấu tạo hàm Swap:
• Hàm Swap hoán đổi vị trí hai nửa của chuỗi
bits input.
40. Key generation
• Đầu tiên khóa K được chạy K(64 bits)
qua hàm PC1 để lấy 56 bits.
PC1
• Kết quả được chia làm hai
nữa. Mỗi nửa được đưa qua C0 D0
hàm left shift.
Left shift Left shift
• Tiếp đến 2 nửa sẽ làm input
cho hàm PC2 để tính ra k1. Permutation/
Contraction(PC2)
• Đồng thời 2 nửa cũng được
lưu lại để tính khóa cho vòng C1 D1
tiếp theo.
43. DES Decryption
• Giải mã đơn giản là áp dụng thuật toán mã
nhưng với các khóa được sử dụng theo chiều
ngược lại(k16->k1).
• DES gần giống như việc giữ thư bí mật bằng
cách bỏ thư vào hòm và khóa lại. Sau đó hòm
thư thu được lại bỏ vào hòm lớn hơn và khóa
lại, cứ như vậy cho đủ 16 hòm thì thu được
DES.
45. Hiệu ứng tuyết lở
Avalanche Effect
• Là một tính chất mong muốn của các mật
mã.
• Nếu thay đổi một bít ở đầu vào hoặc khóa
thì đầu ra sẽ thay đổi trên nhiều bits(1/2).
• DES thể hiện rất tốt tính chất này.
46. Key size
• Với khóa cỡ 56 bits, ta có 256≈7.2x1016
khóa tiềm năng.
• DES có thể bị tấn công vét cạn:
- Năm 1997, một mạng các máy tính.
- Năm 1998, EEF và DES cracker.
- Năm 1999, sử dụng kết hợp các biện pháp.
47. Cryptanalysis
• Có nhiều nghiên cứu thám mã trên
DES.
• Lợi dụng điểm yếu trong thiết kế của
DES(S-box).
48. Cryptanalysis
• Sử dụng kết quả thống kê => cần một
lượng thông tin lớn.
• Một số hình thức chính:
- Thám mã sai phân-Differential cryptanalysis.
- Thám mã tuyến tính-Linear cryptanalysis.
- Tấn công khóa liên kết–related key attack.
49. Timing Attack
• Dựa trên cơ sở là: việc mã và giải mã
cần một lượng thời gian khác nhau với
những input khác nhau
• DES là hoàn hảo để đối phó với hình
thức tấn công này
50. Differential cryptanalysis
• Là một trong những thành tựu của thám mã
mới được công bố gần đây
• Tuy nhiên NSA đã nhận thấy vấn đề này từ
những năm 1970
• Được công bố năm 1990 bởi Murphy, Birham
và Shamir
• Là một phương pháp mạnh để tấn công các mã
khối
51. Differential cryptanalysis
• DES có thể kháng cự được với hình thức tấn
công này
• Việc sử dụng S-box và các hàm hoán vị(P) làm
cho DES mạnh hơn Lucifer trong việc đối phó
với thám mã sai phân
57. Add Round key
• XOR trạng thái với 128 bits khóa
• Xử lý theo từng cột
• Dễ tìm hàm ngược
• Thiết kế đơn giản nhất có thể:
– Dạng mã Vernam với khóa mở rộng
– Bổ xung một số bước nhằm tăng độ phức tạp/tính an toàn
58. Substitute bytes
• Là một phép thế các bytes đơn giản
• Sử dụng cách cài đặt dạng bảng(S-box)
59. Shift Row
• Dịch bits trên mỗi dòng
– Dòng 1: không đổi
– Dòng 2: dịch sang trái 1 byte
– Dòng 3: dịch sang trái 2 bytes
– Dòng 4: dịch sang trái 3 bytes
60. Shift Row
• Hàm ngược, đơn giản là dịch sang phải
• Add round key thực hiện theo cột, do đó
bước này thực hiện theo dòng nhằm hoán vị
các bytes trong các cột
62. Key Expansion
• Mở rộng khóa(128 bits) thành mảng gồm 44/52/60
từ 32 bits
• Copy khóa vào 4 từ đầu tiên của mảng
• Các nhóm 4 từ tiếp theo, mỗi từ được xây dựng dựa
trên từ đứng trước nó(wi-1) và từ cả nhóm trước có vị
trí tương ứng với nó(wi-4), theo công thức sau:
xor(g(wi-1),wi-4) nếu wi là từ đầu tiên trong nhóm
wi =
xor(wi-1,wi-4)
• Hàm g thực hiện liên tiếp các phép: dịch trái, S-
box, cuối cùng là xor với một hằng số