You are on page 1of 29

CHƯƠNG 2

MÃ HÓA ĐỐI
XỨNG
HIỆN ĐẠI
NỘI DUNG
• Mã dòng (Stream Cipher)
• A5/1
• RC4
• Mã khối (Block Cipher)
• Mã khối an toàn lý tưởng
• Mã TinyDES
• Mã DES (Data Encryption Standard)
• Một số phương pháp mã khối khác
• Triple DES
• AES
2
Mã dòng (Stream Cipher)

3
Mã dòng (Stream Cipher)
• Ví dụ điển hình của mã hóa mã dòng là thuật toán
mã hóa A5/1

4
Mã dòng (Stream Cipher)
A5/1
• Xác định P, K = X.Y.Z
• Chạy m = maj(x1, y3,z3)
• maj(x, y, z) là hàm “chiếm đa số” với qui ước:
• Nếu trong 3 bít x, y, z có từ hai bít 0 trở lên thì hàm trả về giá trị 0
• Ngược lại, hàm trả về giá trị 1
• Giả sử: m = maj(x1, y3, z3)
• If x1 = m then thực hiện quay X
• If y3 = m then thực hiện quay Y
• If z3 = m then thực hiện quay Z
• Tính S:
• C = P XOR S
5
Mã dòng (Stream Cipher)
A5/1
• Biến đổi các thanh ghi X, Y, Z theo 3 quy tắc:

6
Mã dòng (Stream Cipher)
A5/1 – Ví dụ
• Mã hóa bản rõ P=111
• Khóa K = 100101. 01001110.100110000

7
Mã dòng (Stream Cipher)
RC4

8
Mã dòng (Stream Cipher)
Tiny RC4

9
Mã dòng (Stream Cipher)
Tiny RC4

10
Mã dòng (Stream Cipher)
Tiny RC4

11
Mã dòng (Stream Cipher)
Tiny RC4

12
Mã dòng (Stream Cipher)
Tiny RC4

13
Mã dòng (Stream Cipher)
Tiny RC4

14
Mã dòng (Stream Cipher)
Tiny RC4

15
Mã dòng (Stream Cipher)
RC4

16
Mã khối (Block Cipher)
• Mã khối an toàn lý tưởng

17
Mã khối (Block Cipher)
• Phòng tránh: làm
cho P và C không
có mối liên hệ toán
học
• Lập một bảng tra
cứu ngẫu nhiên
giữa bản rõ và bản

• Khóa là toàn bộ
bảng

18
DES
(Data Encryption Standard)
• Là một phương pháp mật mã hóa được FIPS (Tiêu
chuẩn Xử lý Thông tin Liên bang Hoa Kỳ) chọn làm
chuẩn chính thức vào năm 1977.

19
Mã DES (Data Encryption
Standard)

20
Mã TinyDES
• Mã TinyDES có các tính
chất sau:
• Là mã thuộc hệ mã Feistel
gồm 3 vòng
• Kích thước của khối P là 8
bít
• Kích thước khóa K là 8 bít
• Mỗi vòng của TinyDES
dùng khóa con có kích
thước 6 bít được trích ra từ
khóa chính.

21
Ví dụ về TinyDES
• Bản rõ P = 0101.1100 (5C)
• Khóa K = 1001.1010 (9A)
• Tìm C=?

• THỰC HIỆN:
• L0 = nửa trái của P = 0101
• R0 = nửa phải của P= 1100
• KL0 = 1001 (nửa trái của K)
• KR0 = 1010 (nửa phải của K)

22
Ví dụ về TinyDES
• Vòng 1:
• L1 = R0 = 1100
• Expand(R0) = (R231210)=001011
• KL1 = KL0(1001) <<1 = 0011 (dịch trái 1 bit)
• KR1 =KR0(1010) << 1 = 0101 (dịch trái 1 bit)
• K1 = Compress(KL1KR1) = Compress (00110101)
= (c513270) = 101110
• Expand(R0) XOR K1 = 001011 xor 101110 =100101

23
Ví dụ về TinyDES
• S-box(100101) = ????
• b0b5 = 11
• b1b2b3b4 = 0010
• F1 = P-box(S-box) = P-box(1000) = 0100 (p2031)
• R1 = L0 XOR F1 = 0101 XOR 0100 = 0001

24
Ví dụ về TinyDES
• Vòng 2:
• L2 = R1 = 0001, Expand(R1) = 010000
• KL2 = KL1 << 2 = 1100, KR2 =KR1 << 2 = 0101
• K2 = Compress(KL2KR2) = 110011
• Expand(R1) K2 = 100011
• S-box(100011) = 1100
• F2=P-box(1100) = 0101
• R2 = L1 XOR F2 = 1001

25
Ví dụ về TinyDES
• Vòng 3:
• L3 = R2 = 1001, Expand(R2) = 010001
• KL3 = KL2 <<1 = 1001, KR3 =KR2 << 1 = 1010
• K3 = Compress(KL3KR3) = 001001
• Expand(R2) K3 = 011000
• S-box(011000) = 0101
• F3 = P-box(0101) = 0011
• R3 = L2 XOR F3 = 0010
• Kết quả C= L3R3 = 1001.0010 (hệ thập lục phân:
92)

26
Độ an toàn của DES
• Tấn công vét cạn khóa (Brute Force Attack):
• Vì khóa của mã DES có chiều dài là 56 bít nên để tiến hành brute-force
attack, cần kiểm tra 256 khóa khác nhau
• => không thể
• Phá mã DES theo phương pháp vi sai (differential
cryptanalysis)
• Năm 1990 Biham và Shamir đã giới thiệu phương pháp phá mã vi sai. Tuy
nhiên phương pháp phá mã này lại đòi hỏi phải có 247 cặp bản rõ - bản mã
được lựa chọn (chosen-plaintext)
• => không thể
• Phá mã DES theo phương pháp thử tuyến tính (linear
cryptanalysis)
• Trong phương pháp này, cần phải biết trước 243 cặp bản rõ-bản mã (known-
plaintext)
• => không thể
• Triple DES (DES 3 lần) ????
27
Advanced Encryption
Standard (AES)

Ref:
https://viblo.asia/p/tim-hieu-thuat-
toan-ma-hoa-khoa-doi-xung-aes-
gAm5yxOqldb

28
Advanced Encryption
Standard (AES)
• Mã hóa AES với khóa có kích
thước 256 bít => “an toàn mãi
mãi” bất kể những tiến bộ trong
ngành kỹ thuật máy tính.
• Cho phép lựa chọn kích thước khối
mã hóa là 128, 192 hay 256 bít.
• Cho phép lựa chọn kích thước của
khóa một cách độc lập với kích
thước khối: là 128, 192 hay 256 bít.
• Số lượng vòng có thể thay đổi từ 10
đến 14 vòng tùy thuộc vào kích
thước khóa.

29

You might also like