Tải bản đầy đủ (.ppt) (23 trang)

Thuật toán DES (The Data Encryption Standard)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (479.96 KB, 23 trang )





THUẬT TOÁN DES
THUẬT TOÁN DES
(THE DATA ENCRYPTION
(THE DATA ENCRYPTION
STANDARD)
STANDARD)
Sinh viên thực hiện:
Sinh viên thực hiện:
Phan Công Ngân
Phan Công Ngân
1063287
1063287
Trần Quốc Quang
Trần Quốc Quang
1063299
1063299

LỊCH SỬ CỦA THUẬT TOÁN
LỊCH SỬ CỦA THUẬT TOÁN
DES
DES
-
Ngày 13/5/1973 ủy ban quốc gia về tiêu chuẩn của
Mỹ công bố yêu cầu về hệ mật mã áp dụng cho toàn
quốc. Điều này đã đặt nền móng cho chuẩn mã hóa
dữ liệu, hay là DES.
-


Lúc đầu Des được công ty IBM phát triển từ hệ mã
Lucifer, công bố vào năm 1975.
-
Sau đó Des được xem như là chuẩn mã hóa dữ liệu
cho các ứng dụng.

CẤU TRÚC THUẬT TOÁN
CẤU TRÚC THUẬT TOÁN

DES là thuật toán mã hóa khối, độ dài mỗi khối là 64
bit .

Khóa dùng trong DES có độ dài toàn bộ là 64 bit. Tuy
nhiên chỉ có 56 bit thực sự được sử dụng; 8 bit còn
lại chỉ dùng cho việc kiểm tra.

Des xuất ra bãn mã 64 bit.

MÔ TẢ THUẬT TOÁN
MÔ TẢ THUẬT TOÁN
Thuật toán được thực hiện trong 3 giai đoạn:
1. Cho bản rõ x (64bit) được hoán vị khởi tạo IP (Initial
Permutation) tạo nên xâu bit x
0.
x
0
=IP(x)=L
0
R
0

L
0
là 32 bit đầu tiên của x
0
.
R
0
là 32 bit cuối của x
0
.

BỘ CHUYỂN VỊ IP
BỘ CHUYỂN VỊ IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7

MÔ TẢ THUẬT TOÁN (tt.)
MÔ TẢ THUẬT TOÁN (tt.)
2. Tính 16 vòng lặp của một hàm xác định. Ta sẽ tính
L
i
R
i
với 1<=i<=16. Theo qui tắc:

for(i=1;i<=16,i++){
L
i
=R
i-1
R
i
=L
i-1
⊕f(R
i-1
,K
i
)
}
với:
⊕ là phép XOR của hai xâu bit:
0 ⊕ 0=0 , 1 ⊕ 1=0
1 ⊕ 0=1, 0 ⊕ 1=0
f là hàm mà ta sẽ mô tả sau.
K
i
là các xâu có độ dài 48 bit được tính như là các
hàm của khóa K.
K
1
đến K
16
lập nên một lịch khóa.


Một vòng của quá trình lập mã được mô tả qua hình sau:

MÔ TẢ THUẬT TOÁN
MÔ TẢ THUẬT TOÁN
3. Áp dụng hoán vị
ngược IP
-1
cho xâu
bit R
16
L
16
ta nhận
được bản mã y.
y= IP
-1
(R
16
L
16
).
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Hoán vị IP

-1

Hàm f
Hàm f
1. Đối số đầu R
i
sẽ được “mở rộng” thành xâu
có độ dài 48 bit tương ứng với hàm mở rộng
E cố định.
E(R
i
) bao gồm 32 bit từ R
i
, được hoán vị
theo một cách thức xác định, với 16 bit
được tạo ra 2 lần.
Hàm f lấy đối số đầu là xâu nhập R
i
(32 bit)
đối số thứ hai là K
i
(48bit) và tạo ra xâu xuất có độ
dài 32 bit. Các bước sau được thực hiện.

Hàm f (tt.)
Hàm f (tt.)
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 mở rộng E

2. Tính E(R
i
) ⊕ K
i
và viết kết quả như là nối của 8
xâu 6bit.
B=B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
3. Bước kế tiếp là sử dụng 8 S-box (S
1

,S
2
, …,S
8
).
Mỗi Si là một mảng 4x16 cố định có các phần
tử là các số 0 đến 15.
Cho xâu có độ dài 6 bit Bj= b
1
b
2
b
3
b
4
b
5
b
6
, ta tính
Sj(Bj) như sau: Hai bit b
1
b
6
xác định biểu diễn
nhị phân của hàng r của Sj (0<=r<=3) và 4 bit
b
2
b
3

b
4
b
5
xác định biểu diễn nhị phân của cột c
của Sj (0<=c<=15).
Đầu ra của mỗi hộp S là một xâu xuất 4 bit.

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
b
2
b
3
b
4
b
5
=1100
b
1
b
6
=00
Hộp S1
- Mỗi xâu xuất 4 bit của các hộp S được đưa vào
các Cj tương ứng: Cj = Sj(Bj) (1<=j<=8).
Ví dụ: Ta có B1=011000 thì b

1
b
6
=00 (xác định r=0),
b
2
b
3
b
4
b
5
=1100 (xác định c=12), từ đó ta tìm được phần tử
ở vị trí (0,12) > S1(B1)=0101 (tương ứng với số 5).

4. Xâu bit C = C
1
C
2
C
3
C
4
C
5
C
6
C
7
C

8
có độ dài 32
bit được hoán vị tương ứng với hoán vị
cố định P. Kết quả có P(C)= f(R
i
,K
i
).
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
Hoán vị P

Sơ đồ hàm f
F

Khóa K
Khóa K
-
K là một xâu có độ dài 64 bit trong đó 56 bit dùng
làm khóa và 8 bit dùng để kiểm tra sự bằng nhau
(phát hiện lỗi).
-
Các bit ở các vị trí 8, 16,…, 64 được xác định, sao
cho mỗi byte chứa số lẻ các số 1, vì vậy từng lỗi có

thể được phát hiện trong mỗi 8 bit.
-
Các bit kiểm tra sự bằng nhau là được bỏ qua khi
tính lịch khóa.

Quá trình tạo các khóa con (subkeys) từ khóa K
Quá trình tạo các khóa con (subkeys) từ khóa K
được mô tả như sau:
được mô tả như sau:
1. Cho khóa K 64 bit, loại bỏ các bit kiểm tra và hoán
vị các bit còn lại của K tương ứng với hoán vị cố
định PC-1. Ta viết PC1(K) = C
0
D
0
, với C
0
bao gồm 28
bít đầu tiên của PC-1(k) và D
0
là 28 bit còn lại.

Các hoán vị cố định PC-1 và PC-2:
Các hoán vị cố định PC-1 và PC-2:
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 34 60 52 44 36
63 55 7 39 31 23 15
7 62 54 46 38 30 22

14 6 61 53 45 37 29
21 13 5 28 20 12 4
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 50 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
PC1
PC2

2. Với i nằm trong khoảng từ 1 đến 16, ta tính C
i
, D
i

như sau:
for(i=1;i<=16;i++){
C
i
= LS
i
(C
i-1
)
D
i
= LS

i
(D
i-1
)
}
Và K
i
= PC-2(C
i
D
i
).
- PC-2 là 1 hoán vị cố định khác.
- LS
i
biểu diễn phép chuyển chu trình sang trái
của 1 hoặc của 2 vi trí tùy thuộc vào giá trị của i.
- Đẩy sang trái 1 vị trí nếu i= 1, 2, 9 hoặc 16, và
đẩy 2 vị trí trong những trường hợp còn lại.

Sơ đồ tạo các khóa con

Giải mã
Giải mã
Việc giải mã dùng cùng một thuật toán như việc
mã hoá.
Để giải mã dữ liệu đã được mã hoá, quá trình
giống như mã hoá được lặp lại nhưng các chìa khoá
phụ được dùng theo thứ tự ngược lại từ K
16

đến K
1
,
nghĩa là trong bước 2 của quá trình mã hoá dữ liệu
đầu vào ở trên R
i-1
sẽ được XOR với K
17-i
chứ không
phải với K
i
.

Đặc điểm của mã DES
Đặc điểm của mã DES
1. Tính chất bù của mã DES:
DES có tính chất bù:
trong đó :
Ā là phần bù của A theo từng bít (1 thay bằng
0 và ngược lại).
E
K
là bản mã hóa của E với khóa K. P và C là văn
bản rõ (trước khi mã hóa) và văn bản mã (sau khi mã
hóa).
Do tính bù, ta có thể giảm độ phức tạp của tấn công
duyệt toàn bộ xuống 2 lần (tương ứng với 1 bít) với
điều kiện là ta có thể lựa chọn bản rõ.

2. Các khóa yếu trong mã Des:

Ngoài ra DES còn có 4 khóa yếu (weak keys).
Khi sử dụng khóa yếu thì mã hóa (E) và giải mã
(D) sẽ cho ra cùng kết quả:
E
K
(E
K
(P)) = P or equivalently, E
K
= D
K

Bên cạnh đó, còn có 6 cặp khóa nửa yếu (semi-
weak keys). Mã hóa với một khóa trong cặp, K1,
tương đương với giải mã với khóa còn lại, K2:
E
K1
(E
K2
(P))=P or equivalently E
K1
=D
K2
Tuy nhiên có thể dễ dàng tránh được những
khóa này khi thực hiện thuật toán, có thể bằng
cách thử hoặc chọn khóa một cách ngẫu nhiên.
Khi đó khả năng chọn phải khóa yếu là rất nhỏ.

3. Triple DES:
Triple-DES chính là DES với hai chìa khoá 56 bit.

Cho một bản tin cần mã hoá, chìa khoá đầu tiên
được dùng để mã hoá DES bản tin đó.
Kết quả thu được lại được cho qua quá trình giải
mã DES nhưng với chìa khoá là chìa khoá thứ hai.
Bản tin sau qua đã được biến đổi bằng thuật
toán DES hai lần như vậy lại được mã hoá DES một
lần nữa với chìa khoá đầu tiên để ra được bản tin mã
hoá cuối cùng.
Quá trình mã hoá DES ba bước này được gọi là
Triple-DES.

×