DES - Nguồn từ file bài giảng ATBMTT của thầy Hy

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

Giáo trình bài giảng :

Mã DES (Data Encryption Standard)


Mã DES có các tính chất sau:
 Là mã thuộc hệ mã Feistel gồm 16 vòng, ngoài ra DES có thêm một hoán vị
khởi tạo trước khi vào vòng 1 và một hoán vị khởi tạo sau vòng 16
 Kích thước của khối là 64 bít: ví dụ bản tin “meetmeafterthetogaparty” biểu
diễn theo mã ASCII thì mã DES sẽ mã hóa làm 3 lần, mỗi lần 8 chữ cái (64
bít): meetmeaf - tertheto - gaparty.
 Kích thước khóa là 56 bít .
 Mỗi vòng của DES dùng khóa con có kích thước 48 bít được trích ra từ khóa
chính.
Hình dưới đây minh họa các vòng của mã DES

Hình 3-6. Các vòng Feistel của mã DES


Sơ đồ mã DES trên gồm ba phần, phần thứ nhất là các hoán vị khởi tạo và hoán vị kết
thúc. Phần thứ hai là các vòng Feistel, phần thứ ba là thuật toán sinh khóa con. Chúng
ta sẽ lần lượt đi vào chi tiết của từng phần.
1) Hoán vị khởi tạo và hoán vị kết thúc:
Ta đánh số các bít của khối 64 bít theo thứ tự từ trái sang phải là 0, 1, …, 62, 63:

Hoán vị khởi tạo sẽ hoán đổi các bít theo quy tắc sau :

Hoán vị kết thúc hoán đổi các bít theo quy tắc sau:

Hoán vị kết thúc chính là hoán vị nghịch đảo của hoán vị khởi tạo. Đối với
knownplaintext hay chosen-plaintext attack, hoán vị khởi tạo và hoán vị kết thúc
không có ý nghĩa bảo mật, sự tồn tại của hai hoán vị trên được nhận định là do yếu tố
lịch sử.
2) Các vòng của DES
Hình sau minh họa một vòng Feistel của DES
Hình 3-7. Cấu trúc một vòng của mã DES
Trong DES, hàm F của Feistel là:
F(Ri-1, Ki) = P-box(S-boxes(Expand( Ri-1) Ki))
Trong đó hàm Expand vừa mở rộng vừa hoán vị Ri-1 từ 32 bít lên 48 bít. Hàm Sboxes
nén 48 bít lại còn 32 bít. Hàm P-box là một hoán vị 32 bít. Mô tả của các hàm trên là
như sau:
 Expand: đánh số các bít của Ri-1 theo thứ tự từ trái sang phải là 0, 1, 2, …, 31.
HàmExpand thực hiện vừa hoán vị vừa mở rộng 32 bít thành 48 bít theo quy
tắc:

 S-boxes:
Hàm S-boxes của DES biến đổi một số 48 bít thành một số 32 bít. Tuy nhiên, nếu
chỉ lập một bảng tra cứu như ở TinyDES thì bảng này phải có 216 dòng và 232
cột, dẫn đến số phần tử của bảng rất lớn. Để giảm kích thước của bảng tra cứu,
người ta chia hàm S-boxes thành 8 hàm S-box con, mỗi hàm biến đổi số 6 bít
thành số 4 bít (hình dưới).

Hàm S-box đầu tiên, hộp S1, giống hoàn toàn như S-box của TinyDES, tức có nội
dung như sau:

Chi tiết các hộp còn lại được trình bày trong Phụ lục 1. Có thể thấy, mỗi hàm S-
box con là một phép thay thế Substitution. Các hàm S-box con không khả nghịch,
do đó hàm S-boxes cũng không khả nghịch. Sự phức tạp này của S-boxes là yếu
tố chính làm cho DES có độ an toàn cao.
 P-box: hàm P-box cũng thực hiện hoán vị 32 bít đầu vào theo quy tắc:

3) Thuật toán sinh khóa con của DES


Khóa K 64 bít ban đầu được rút trích và hoán vị thành một khóa 56 bít (tức chỉ sử
dụng 56 bít) theo quy tắc:
Khóa 56 bít này được chia thành 2 nửa trái phải KL0 và KR0 , mỗi nửa có kích
thước 28 bít. Tại vòng thứ i (i = 1, 2, 3,…,16), KLi-1 và KRi-1 được dịch vòng
trái ri bít để có được KLi và KRi, với ri được định nghĩa:

Cuối cùng khóa Ki của mỗi vòng được tạo ra bằng cách hoán vị và nén 56 bít của
KLi và KRi thành 48 bít theo quy tắc:

4) Hiệu ứng lan truyền (Avalanche Effect)


Một tính chất quan trọng cần thiết của mọi thuật toán mã hóa là chỉ cần một thay đổi
nhỏ trong bản rõ hay trong khóa sẽ dẫn đến thay đổi lớn trong bản mã. Cụ thể, chỉ cần
thay đổi một bít trong bản rõ hay khóa thì dẫn đến sự thay đổi của nhiều bít bản mã.
Tính chất này được gọi là hiệu ứng lan truyền. Nhờ có tính chất này mà người phá mã
không thể giới hạn miền tìm kiếm của bản rõ hay của khóa (dù phá mã theo known-
plaintext hay chosen-plaintext) nên phải thực hiện vét cạn khóa.
DES là một phương pháp mã hóa có hiệu ứng lan truyền này. Xét hai bản rõ sau
(64 bít):
P1: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
P2: 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

Hai bản rõ trên được mã hóa bằng DES với khóa:


K: 0000001 1001011 0100100 1100010 0011100 0011000 0011100 0110010
Bảng 2-1.a cho biết số bít khác nhau của bản mã tương ứng với P1 và P2 qua các
vòng của DES:
Bảng 3-1. Hiệu ứng lan truyền
Chỉ cần đến vòng thứ 2, số bít khác nhau giữa hai bản mã đã là 21 bít, sau 16 vòng
số bít khác nhau là 34 bít (khoảng 1/2 tổng số bít của bản rõ)
Xét bản rõ sau (64 bít):
P: 01101000 10000101 00101111 01111010 00010011 01110110 11101011 10100100

Dùng hai khóa sau đây để mã hóa bản rõ trên (hai khóa này chỉ khác nhau 1 bít):
K1: 1110010 1111011 1101111 0011000 0011101 0000100 0110001 11011100
K2: 0110010 1111011 1101111 0011000 0011101 0000100 0110001 11011100
Bảng 2-1.b cho biết số bít khác nhau của bản mã tương ứng với K1 và K2 qua các
vòng của DES. Sau 16 vòng, số bít khác nhau là 35 bít, cũng khoảng 1/2 tổng số
bít của bản rõ.

5) Độ an toàn của DES


Ta hãy xem xét tính an toàn của DES trước một vài phương pháp tấn công phá
mã.
 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. Hiện nay với những thiết bị phổ dụng, thời
gian gian để thử khóa là rất lớn nên việc phá mã là không khả thi (xem bảng).
Tuy nhiên vào năm 1998, tổ chức Electronic Frontier Foundation (EFF) thông
báo đã xây dựng được một thiết bị phá mã DES gồm nhiều máy tính chạy song
song, trị giá khoảng 250.000$. Thời gian thử khóa là 3 ngày. Hiện nay mã DES
vẫn còn được sử dụng trong thương mại, tuy nhiên người ta đã bắt đầu áp dụng
những phương pháp mã hóa khác có chiều dài khóa lớn hơn (128 bít hay 256
bít) như TripleDES hoặc AES.
 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. Phương
pháp vi sai tìm khóa ít tốn thời gian hơn brute-force. 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). Vì vậy phương pháp này là bất khả thi dù rằng số lần thử có thể ít
hơn phương pháp brute-force.
 Phá mã DES theo phương pháp thử tuyến tính (linear cryptanalysis)
Năm 1997 Matsui đưa ra phương pháp phá mã tuyến tính. 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). Tuy nhiên
243 cũng là một con số lớn nên phá mã tuyến tính cũng không phải là một
phương pháp khả thi.

You might also like