http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
MỤC LỤC I .1 Giới thiệu 3
I.2 Các Hệ Mã Thông Dụng: 3
e. Phương pháp Affine 4
f. Phương pháp Vigenere 5
I.2 LẬP MÃ DES 14
I. 3 THÁM MÃ DES 17
I.3.1. Thám mã hệ DES - 3 vòng 20
II.3.2. Thám mã hệ DES 6-vòng 24
II.3. 3 Các thám mã vi sai khác 28
III. CÀI ĐẶT THÁM MÃ DES 3 VÒNG 28
III.1 Giao Diện . 28
III.2 XỬ LÝ
biến hơn trong các lónh vực khác nhau trên Thế giới, từ các lónh vực an ninh, quân sự, quốc
phòng…, cho đến các lónh vực dân sự như thương mại điện tử, ngân hàng…
Ứng dụng mã hóa và bảo mật thông tin trong các hệ thống thương mại điện tử, giao dòch
chứng khoán,… đã trở nên phổ biến trên thế giới và sẽ ngày càng trở nên quen thuộc với
người dân Việt Nam. Tháng 7/2000, thò trường chứng khoán lần đầu tiên được hình thành tại
Việt Nam; các thẻ tín dụng bắt đầu được sử dụng, các ứng dụng hệ thống thương mại điện
tử đang ở bước đầu được quan tâm và xây dựng. Do đó, nhu cầu về các ứng dụng mã hóa và
bảo mật thông tin trở nên rất cần thiết. http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
là không gian khoá. tập hợp hữu hạn các khóa có thể được sử dụng
4. Với mỗi khóa
k K
, tồn tại luật mã hóa
e
k
E
và luật giải mã
d
k
D
tương ứng. Luật
mã hóa
e
k
:
P
C
và luật giải mã
e
k
:
C
P
là hai ánh xạ thỏa mãn
,
kk
d e x x x P
Z
16
. Trong
Z
, ta có kết quả của phép nhân
11 13=143. Do 143 15 (mod 16) nên 11 13=15 trong
Z
16
.
Một số tính chất của
Z
m
1. Phép cộng đóng trong
Z
m
, i.e.,
a
,
b
Z
m
, a+b
Z
m
2. Tính giao hoán của phép cộng trong
Z
c
=
a
+(
b
+
c
)
4.
Z
m
có phần tử trung hòa là 0, i.e.,
a
Z
m
,
a
+0=0+
a
=
a
5. Mọi phần tử
a
trong
Z
m
đều có phần tử đối là
m
,
a b=b a
8. Tính kết hợp của phép cộng trong
Z
m
, i.e.,
a
,
b
,
c
Z
m
,
(
a b
)
c
=
a
(
b c
)
9.
Z
m
=(
a c
)+(
b c
)
11.
Z
m
có các tính chất 1, 3 – 5 nên tạo thành 1 nhóm. Do
Z
m
có tính chất 2 nên tạo
thành nhóm Abel.
Z
m
có các tính chất (1) – (10) nên tạo thành 1 vành
I.2 Các Hệ Mã Thông Dụng:
a. Hệ Mã Đầy (Shift Cipher )
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
Shift Cipher là một trong những phương pháp lâu đời nhất được sử dụng để
mã hóa. Thông điệp được mã hóa bằng cách dòch chuyển (xoay vòng) từng ký tự đi
k
vò trí
trong bảng chữ cái.
Phương pháp Shift Cipher
Cho P = C = K = Z
hàm lập mã theo thứ tự:
e
15
, e
11
, e
0
, e
8
, e
13
, e
15
, e
11
, e
0
, e
8
, e,
với e
K
là hàm lập mã trong hệ mã chuyển.
c. Hệ Mã Vuông (SQUARE)
Trong hệ này các từ khóa được dùng theo một cách khác hẳn. Ta dùng bảng chữ
cái tiếng Anh (có thể bỏ đi chữ Q, nếu muốn tổng số các chữ số là một số chính phương)
và đòi hỏi mọi chữ trong từ khóa phải khác nhau. Bây giờ mọi chữ của bảng chữ cái
được viết dưới dạng một hình vuông, bắt đầu bằng từ khóa và tiếp theo là những chữ cái
còn lại theo thứ tự của bảng chữ.
d. Mã thế vò
Với K = (a,b) K, ta xác đònh
e
K
(x) = ax+b mod 26
và
d
K
= a
-1
(y-b) mod 26
(x,y Z
26
)
Phương pháp Affine lại là một trường hợp đặc biệt khác của Substitution Cipher.
Để có thể giải mã chính xác thông tin đã được mã hóa bằng hàm
e
k
E
thì
e
k
phải là
một song ánh. Như vậy, với mỗi giá trò
y Z
26
, phương trình
ax
+
(mod
26
) có nghiệm duy nhất
x Z
26
với mỗi giá trò
b Z
26
khi và chỉ khi
a
và
26
nguyên tố cùng nhau.
Vậy, điều kiện
a
và 26 nguyên tố cùng nhau bảo đảm thông tin được mã hóa bằng hàm
e
k
có thể được giải mã và giải mã một cách chính xác.
Gọi (26) là số lượng phần tử thuộc
Z
26
và nguyên tố cùng nhau với
26
.
Đònh lý 1.2: Nếu
m
i
e
Trong phương pháp mã hóa Affine , ta có 26 khả năng chọn giá trò
b
, (26) khả năng chọn
giá trò
a
. Vậy, không gian khóa
K
có tất cả
n
(
26
) phần tử.
Vấn đề đặt ra cho phương pháp mã hóa Affine Cipher là để có thể giải mã được thông tin
đã được mã hóa cần phải tính giá trò phần tử nghòch đảo
a
–1
Z
26
.
f. Phương pháp Vigenere
phương pháp mã hóa Vigenere sử dụng một từ khóa (keyword) có độ dài
m
. Có thể xem
như phương pháp mã hóa Vigenere Cipher bao gồm
m
phép mã hóa Shift Cipher được áp
dụng luân phiên nhau theo chu kỳ.
Không gian khóa
k
0
,
k
1
, ,
k
r
-1
) (
Z
26
)
r
}
Với mỗi khóa
k
= (
k
0,
k
1, ,
k
r
-1
)
K
, đònh nghóa:
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
m
+
k
m
) mod 26)
d
k
(
y
1
,
y
2
, ,
y
m
) = ((
y
1
–
k
1
) mod
n
, (
y
2
–
k
2
Z
26
)
m
. Mỗi phần tử
x P
là một bộ
m
thành phần, mỗi thành phần
thuộc
Z
26
. Ý tưởng chính của phương pháp này là sử dụng
m
tổ hợp tuyến tính của
m
thành
phần trong mỗi phần tử
x P
để phát sinh ra
m
thành phần tạo thành phần tử
y C
.
Phương pháp mã hóa Hill Cipher
Chọn số nguyên dương
m
. Đònh nghóa:
P
m
m
mk
kkk
kk
kkk
xxxxkxe
,2,1,
,21,2
,12,11,1
21
, ,,
với
x
=(
x
1
,
x
2
, ,
x
m
)
P
Chọn số nguyên dương
m
. Đònh nghóa:
P
=
C
= (
Z
26
)
m
và
K
là tập hợp các hoán vò của
m
phần tử {1, 2, ,
m
}
Với mỗi khóa
K
, đònh nghóa:
mm
xxxxxxe , ,, ,,
2121
và
m
m
yyyyyyd
111
ji
Ma trận
k
là ma trận mà mỗi dòng và mỗi cột có đúng một phần tử mang giá trò 1, các
phần tử còn lại trong ma trận đều bằng 0. Ma trận này có thể thu được bằng cách hoán vò
các hàng hay các cột của ma trận đơn vò
I
m
nên
k
là ma trận khả nghòch. Rõ ràng, mã hóa
bằng phương pháp Hill với ma trận
k
hoàn toàn tương đương với mã hóa bằng phương pháp
mã hoán vò với hoán vò .
d. Mã vòng
Trong các hệ trước đều cùng một cách thức là các phần tử kế tiếp nhau của bản rõ
đều được mã hóa với cùng một khóa K. Như vậy xâu mã y sẽ có dạng sau:
y = y
1
y
2
= e
K
(x
1
) e
Không gian khoá phải đủ lớn
với các phép trộn thích hợp các hệ mã đối xứng có thể tạo ra được một hệ
mã mới có tính an toàn cao.
bảo mật cho việc truyền khóa cũng cần được xử lý một cách nghiêm túc.
Và một hệ mã hoá dữ liệu ra đời (DES). DES được xem như là chuẩn mã hóa dữ
liệu cho các ứng dụng từ ngày 15 tháng 1 năm 1977 do Ủy ban Quốc gia về Tiêu chuẩn
của Mỹ xác nhận và cứ 5 năm một lần lại có chỉnh sửa, bổ sung.
DES là một hệ mã được trộn bởi các phép thế và hoán vò. với phép trộn thích hợp
thì việc giải mã nó lại là một bài toán khá khó. Đồng thời việc cài đặt hệ mã này cho
những ứng dụng thực tế lại khá thuận lợi. Chính những lý do đó nó được ứng dụng rộng
rãi của DES trong suốt hơn 20 năm qua, không những tại Mỹ mà còn là hầu như trên khắp
thế giới. Mặc dù theo công bố mới nhất (năm 1998) thì mọi hệ DES, với những khả năng
của máy tính hiện nay, đều có thể bẻ khóa trong hơn 2 giờ. Tuy nhiên DES cho đến nay
vẫn là một mô hình chuẩn cho những ứng dụng bảo mật trong thực tế.
II. HỆ MÃ CHUẨN DES (Data Encryption Standard)
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
II.1 Đặc tả DES
Phương pháp DES mã hóa từ
x
có 64 bit với khóa
k
có 56 bit thành một từ có
y
64 bit.
Thuật toán mã hóa bao gồm 3 giai đoạn:
1. Với từ cần mã hóa
x
có độ dài 64 bit, tạo ra từ
0
L
0
R
0
x
0
Hình.1 Biểu diễn dãy 64 bit
x
thành 2 thành phần
L
và
R
2. Xác đònh các cặp từ 32 bit
L
i
,
R
i
với 1
i
16theo quy tắc sau:
L
i
=
R
i
K
i
được phát sinh bằng cách hoán vò
các bit trong khóa
K
cho trước).
L
i
-1
R
i
-1
f
K
i
L
i
R
i
Hình.2 Quy trình phát sinh dãy 64 bit
L
i
R
i
từ dãy 64 bit
L
i
-1
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
Hàm
f
được sử dụng ở bước 2 là
3
B
4
B
5
B
6
B
7
B
8 S
1
J
E(A)
S
2
S
3
C
8 f(A,J)
E
+
P
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
Hàm f có gồm 2 tham số: Tham số thứ nhất
A
là một dãy 32 bit, tham số thứ hai
J
là
một dãy 48 bit. Kết quả của hàm
f
là một dãy 32 bit. Các bước xử lý của hàm
f
(
A
,
J
B
.
Biểu diễn
B
thành từng nhóm 6 bit như sau:
B
=
B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
Sử dụng 8 ma trận
S
1
,
S
2
r
cột
c
của
S
j
, trong đó, chỉ số
dòng
r
có biểu diễn nhò phân là
b
1
b
6
, chỉ số cột
c
có biểu diễn nhò phân là
b
2
b
3
b
4
b
5
.
Bằng cách này, ta xác đònh được các dãy 4 bit
C
j
=
.
Dãy 32
bit thu được bằng cách hoán vò
C
theo một quy luật
P
nhất đònh chính là kết quả của
hàm
F
(
A
,
J
)
các hàm được sử dụng trong DES.
Hoán vò khởi tạo IP sẽ như sau: IP
58
50
42
34
26
18
10
2
60
52
59
51
43
35
27
19
11
3
61
53
45
37
29
21
13
5
63
55
47
39
31
23
15
7
Điều này có nghóa là bit thứ 58 của x là bit đầu tiên của IP(x); bit thứ 50 của x là
bit thứ hai của IP(x) v.v.
Hoán vò ngược IP
-1
sẽ là:
11
10
56
55
54
53
52
51
50
24
23
22
21
20
19
18
64
63
62
61
60
59
58
32
31
30
29
28
27
26
13
17
21
25
29
2
6
10
14
18
22
26
30
3
7
11
15
19
23
27
31
4
8
12
16
20
24
28
32
5
2
14
13
4
15
2
6
9
11
13
2
1
8
1
11
7
3
10
15
5
10
6
12
11
6
12
9
3
12
11
8
4
7
10
14
7
11
1
6
15
10
3
11
2
4
15
3
8
13
4
4
14
1
2
9
12
5
11
7
0
10
13
13
1
0
7
6
10
9
0
4
13
14
9
9
0
6
3
8
6
3
4
15
9
15
6
3
8
5
10
8
1
7
12
S
4
7
13
10
13
8
6
14
11
9
3
5
0
0
6
12
6
15
11
9
0
7
10
15
0
6
10
1
13
8
9
4
5
11
12
7
2
14 S
5
2
14
4
11
12
11
2
8
4
2
3
15
12
0
15
10
5
9
13
3
6
10
0
9
3
4
14
8
0
5
9
6
14
3
S
6
12
10
0
6
7
11
13
1
0
14
3
13
4
1
4
14
10
7
14
0
1
6
7
11
13
0
5
3
11
8
11
8
8
1
7
10
13
10
14
7
3
14
10
9
12
3
15
5
9
5
6
0
7
12
8
15
5
2
0
14
10
15
8
1
7
6
10
9
4
15
3
12
10
11
7
14
8
1
4
2
13
10
12
0
15
9
5
6
12
3
6
10
22
7
12
15
18
8
27
13
11
20
28
23
31
24
3
30
4
21
17
26
10
14
9
6
25
K là xâu có độ dài 64 bit, trong đó có 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
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
i
= PC-2(C
i
D
i
), LS
i
biểu diễn phép chuyển chu trình (cyclic shift) sang trái hoặc của
một hoặc của hai vò trí tùy thuộc vào trò của i; đẩy một 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. PC-2 là một hoán vò cố đònh khác.
Việc tính lòch khóa được minh họa như hình vẽ sau:
PC-1
C
0
D
0
C
1
D
1
PC-2
K
1
LS
1
PC-1
LS
1
PC-1
LS
2
LS
2
6
13
34
7
54
61
5
60
39
46
53
28
52
31
38
45
20
44
23
30
37
12
36
15
22
29
4
PC-2
14
3
1
21
26
13
47
33
34
29
5
10
8
2
55
48
53
32
Bây giờ ta sẽ hiển thò kết quả việc tính lòch khóa. Như đã nhận xét ở trên, mỗi
vòng sử dụng khóa 48 bit tương ứng với 48 bit trong K. Các thành phần trong các bảng sau
sẽ chỉ ra các bit trong K được sử dụng trong các vòng khác nhau.
I.2 LẬP MÃ DES
Đây là ví dụ về việc lập mã sử dụng DES. Giả sử ta mã hóa bản rõ sau trong dạng
thập lục phân (Hexadecimal)
0123456789ABCDEF
sử dụng khóa thập lục phân
133457799BBCDFF1
Khóa trong dạng nhò phân không có các bit kiểm tra sẽ là:
00010010011010010101101111001001101101111011011111111000.
p dụng IP, ta nhận được L
0
0
,K
1
)
L
2
= R
1
=
=
=
=
=
=
011110100001010101010101011110100001010101010101
000110110000001011101111111111000111000001110010
011000010001011110111010100001100110010100100111
01011100100000101011010110010111
00100011010010101010100110111011
11101111010010100110010101000100
E(R
1
)
K
2
E(R
1
E(R
2
)
K
3
E(R
2
) K
3
S-box output
f(R
2
, K
3
)
L
4
= R
3
=
=
=
=
=
=
111001011000000000000010101110101110100001010011
010101011111110010001010010000101100111110011001
=
=
=
010100000100001011111000000001010111111110101001
011100101010110111010110110110110011010100011101
001000101110111100101110110111100100101010110100
00100001111011011001111100111010
10111011001000110111011101001100
011101110
E(R
4
)
K
5
E(R
4
) K
5
Xuất S-hộp
f(R
4
, K
5
)
L
6
= R
6
)
L
7
= R
6
=
=
=
=
=
=
110001010100001001011111110100001100000110101111
011000111010010100111110010100000111101100101111
101001101110011101100001100000001011101010000000
01000001111100110100110000111101
10011110010001011100110100101100
11101001011001111100110101101001
E(R
6
)
K
7
E(R
6
) K
7
E(R
7
) K
8
S-box output
=
=
=
=
000000001100001001010101010111110100000010100000
111101111000101000111010110000010011101111111011
111101110100100001101111100111100111101101011011
01101100000110000111110010101110
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
f(R
7
, K
8
)
L
9
= R
8
=
=
=
011010101010101101010010101001010111110010100001
111000001101101111101011111011011110011110000001
100010100111000010111001010010001001101100100000
00010001000011000101011101110111
00100010001101100111110001101010
00100100011111001100011001111010
E(R
9
)
K
10
E(R
9
) K
10
S-box output
f(R
9
, K
10
)
L
11
= R
10
12
= R
11
=
=
=
=
=
=
010110101111111010101011111010101111110110100101
001000010101111111010011110111101101001110000110
011110111010000101111000001101000010111000100011
01110011000001011101000100000001
11100001000001001111101000000010
11000101011110000011110001111000
E(R
11
)
K
12
E(R
11
) K
12
S-box output
f(R
12
, K
13
)
L
14
= R
13
=
=
=
=
=
=
001110101011110111111010100011110000001011110000
100101111100010111010001111110101011101001000001
101011010111100000101011011101011011100010110001
10011010110100011000101101001111
11011101101110110010100100100010
00011000110000110001010101011010
E(R
13
)
K
14
E(R
13
E(R
14
)
K
15
E(R
14
) K
15
S-box output
f(R
14
, K
15
)
L
16
= R
15
=
=
=
=
=
=
111000000101010001011001010010101100000001011011
101111111001000110001101001111010011111100001010
=
001000000110101000000100000110100100000110101000
110010110011110110001011000011100001011111110101
111010110101011110001111000101000101011001011101
10100111100000110010010000101001
11001000110000000100111110011000
00001010010011001101100110010101
Cuối cùng, áp dụng IP
-1
cho R
16
L
16
ta nhận được bản mã trong dạng thập lục phân
như sau:
85E813540F0AB405 I. 3 THÁM MÃ DES
Một phương pháp rất nổi tiếng trong thám mã DES là ‚thám mã vi sai‚
(differential cryptanalysic) do Biham và Shamir đề xuất. Đó là phương pháp thám với bản
rõ được chọn. Nó không được sử dụng trong thực tế để thám mã DES 16 vòng, mà chỉ
được sử dụng để thám các hệ DES có ít vòng hơn.
Bây giờ ta sẽ mô tả những ý tưởng cơ bản của kỹ thuật này. Để đạt mục đích thám
mã, ta có thể bỏ qua hoán vò khởi tạo IP và hoán vò đảo của nó (bởi vì điều đó không cần
thiết cho việc thám mã). Như đã nhận xét ở trên, ta xét các hệ DES n vòng, với n 16.
Trong cài đặt ta có thể coi L
0
R
0
*
. Trong những thảo luận sau ta sẽ sử dụng ký hiệu (‘)
để chỉ x-or của hai xâu bit.
Đònh nghóa 3.1:
Cho S
j
là một S-hộp (1 j 8). Xét một cặp xâu 6-bit là (B
j
,B
j
*
).
Ta nói rằng, xâu nhập x-or (của S
j
) là B
j
B
j
*
và xâu xuất x-or (của S
j
) là S
j
(B
j
) S
j
(B
’) = {(B
j
, B
j
B
j
’) : B
j
(Z
2
)
6
}
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
Với mỗi cặp trong (B
j
’), ta có thể tính xâu x-or xuất của S
j
và lập được phân bố
kết quả. Có 64 xâu xuất x-or, được phân bố trong 2
4
= 16 giá trò có thể có. Tính không
đồng đều của các phân bố đó là cơ sở để mã thám.
Ví dụ 3.1
: Giả sử ta xét S
1
là S-hộp đầu tiên và xâu nhập x-or là 110100. Khi đó
1
100
0
100
1
101
0
101
1
110
0
110
1
111
0
111
1
0
8
16
6
2
0
0
12
6
0
0
0
0
j
(B
j
) S
j
(B
j
B
j
’) = C
j
’}
và
N
j
(B
j
’, C
j
’) = IN
j
(B
j
’, C
j
’)
Bảng sau sẽ cho các xâu nhập có thể có với xâu x-or nhập 110100
Xâu xuất x-or
001001, 001100, 011001, 101101
111000, 111101
1001
1010
1011
1100
1101
000110, 010000, 010110, 011100
110010, 100100, 101000, 110010
1110
1111
000111, 001010, 001011, 110011
111110, 111111
N
j
(B
j
’, C
j
’) tính số các cặp với xâu nhập x-or bằng B
j
’ có xâu xuất x-or bằng C
j
’
chứa các tập IN(110100, C
1
’).
Với mỗi tám S-hộp, có 64 xâu nhập x-or có thể có. Như vậy, có 512 phân bố có
thể tính được. Nhắc lại là, xâu nhập cho S-hộp ở vòng thứ i là B= E J, với E = E(R
i-1
) là
mở rộng của R
i-1
và J = K
i
gồm các bit khóa của vòng i. Bây giờ xâu nhập x-or (cho tất cả
tám S-hộp) có thể tính được như sau:
B B* = (E J) (E* J) = E E*
Điều này rất quan trọng để thấy rằng, xâu nhập x-or không phụ thuộc vào các bit
khóa J. (Do đó, xâu xuất x-or cũng không phụ thuộc vào các bit khóa.)
Ta sẽ viết mỗi B, E và J như là nối của tám xâu 6-bit:
B = B
1
B
2
B
3
B
4
B
5
B
6
B
5
J
6
J
7
J
8
và ta cũng sẽ viết B
*
và E
*
như vậy. Bây giờ giả sử là ta đã biết các trò E
j
và E
j
*
với một j
nào đó, 1 j 8, và trò của xâu xuất x-or cho S
j
, C
j
’ = S
j
(B
j
) S
j
(B
j
j
’ là xâu bit độ dài 4. Ta đònh
nghóa:
test
j
(E
j
, E
j
*
, C
j
’) = { B
j
E
j
: B
j
IN
j
(E
j
’, C
j
’) },
với E
j
’ = E
j
, E
j
*, C
j
’).
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
Để ý, đó chính là các xâu bit N
j
(E
j
’, C
j
’) độ dài 6 trong tập test
j
(E
j
, E
j
*
, C
j
’); giá trò
chính xác của J
j
phải là một trong số đó.
Ví dụ 3.2
:
hai
test
1
của các trò cho các bit khóa trong J
1
. Trò đúng của J
1
cần phải nằm trong giao của
các S-hộp. Nếu ta có một vài bộ ba như vậy, khi đó ta có thể mau chóng tìm được các bit
khóa trong J
1
. Một cách rõ ràng hơn để thực hiện điều đó là lập một bảng của 64 bộ đếm
biểu diễn cho 64 khả năng của của 6 khóa bit trong J
1
. Bộ đếm sẽ tăng mỗi lần, tương ứng
với sự xuất hiện của các bit khóa trong tập
test
1
cho một bộ ba cụ thể. Cho t bộ ba, ta hy
vọng tìm được duy nhất một bộ đếm có trò t; trò đó sẽ tương ứng với trò đúng của các bit
khóa trong J
1
.
I.3.1. Thám mã hệ DES - 3 vòng
Bây giờ ta sẽ xét ý tưởng vừa trình bày cho việc thám mã hệ DES - ba vòng. Ta sẽ
bắt đầu với cặp bản rõ và các bản mã tương ứng: L
0
R
0
1
f(R
2
, K
3
)
= L
0
f(R
0
, K
1
) f(R
2
, K
3
)
R
3
* có thể biểu diễn một cách tương tự , do vậy:
R
3
’ = L
0
’ f(R
0
, K
1
) f(R
0
1
), và do đó:
R
3
’ = L
0
’ f(R
2
, K
3
) f(R
2
*
, K
3
)
Ở điểm này R
3
’ là được biết khi nó có thể tính được từ hai bản mã, và L
0
’ là biết
được khi nó có thể tính được từ hai bản rõ. Nghóa là ta có thể tính được f(R
2
,K
3
) f(R
2
*
,K
3
của hai xâu xuất của tám S-hộp (nhắc lại, P là cố đònh, là hoán vò được biết công khai).
Nên:
P(C) P(C
*
) = R
3
’ L
0
’
và kết quả là:
C’ = C C* = P
-1
(R
3
’ L
0
’) (1)
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
Đó là xâu xuất x-or cho tám S-hộp trong vòng ba.
Bây giờ, R
2
= L3 và R2* = L3* là đã biết (chúng là một phần của các bản mã). Từ
đây ta có thể tính:
E = E(L
3
) (2)
và
E
3
R
3
và L
3
*
R
3
*
, với R
0
= R
0
*
1. Tính C’ = P
-1
(R
3
’ L
0
’)
2. Tính E = E(L
3
) và E
*
= E(L
*
)
3. for j = 1 to 8 do
486911026ACDFF31
375BD31F6ACDFF31
45FA285BE5ADC730
134F7915AC253457
357418DA013FEC86
12549847013FEC86
D8A31B2F28BBC5CF
0F317AC2B23CB944
Từ cặp đầu tiên ta tính các xâu nhập của S-hộp (cho vòng 3) từ các phương trình
(2) và (3). Chúng là:
E = 000000000111111000001110100000000110100000001100
E
*
= 101111110000001010101100000001010100000001010010
Xâu xuất x-or của S-hộp được tính bằng phương trình (1) sẽ là:
C’ = 10010110010111010101101101100111
Từ cặp thứ hai, ta tính được các xâu nhập cho S-hộp là:
E = 101000001011111111110100000101010000001011110110
E
*
= 100010100110101001011110101111110010100010101001
và xâu xuất x-or của S-hộp là:
http://thuviendientu.org ĐỒ ÁN BẢO MẬT THÔNG TIN
HỆ MÃ DES
NGÔ THỊ TUYẾT HÀ – T012825
C’ = 10011100100111000001111101010110
Từ cặp thứ ba, các xâu nhập cho S-hộp sẽ là:
E = 111011110001010100000110100011110110100101011111
diễn của các số nguyên trong khoảng 0-63, thì 64 trò sẽ tương ứng với 0, 1, , 63. Các
mảng đếm sẽ là như sau:
J
1
1
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
J
2
0
0
0
1
0
3
0
0
1
0
0
1
0
0
0
0
1
0
0
0
1
1
0
0
0
0
1
0
1
0
2
0
0
0
J
3
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
J
4
1
1
1
1
1
0
1
0
0
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
0
0
0
0
0
0
0
2
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
0
1
0
3
0
0
0
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
J
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Trong mỗi tám mảng đếm, có duy nhất một bộ đếm có trò là 3. Vò trí của các bộ
đếm đó xác đònh các bit khóa trong J
1
, , J
8
. Các vò trí đó là: 47, 5, 19, 0, 24, 7, 7, 49.
Chuyển các số nguyên đó sang dạng nhò phân, ta nhận được J
1
, , J
8
:
J
1
= 101111
J
2
= 000101
J
3
= 010011
J
dạng
L
0
’, R
0
’, L
1
’, R
1
’, p
1
, , L
n
’, R
n
’, p
n
thỏa mãn các điều kiện sau:
1. L
i
’ = R
i-1
’ với 1 i n
2. Cho 1 i n và L
i-1
, R
i-1
và L
*
lập mã DES. Khi đó xác suất để L
i
L
*
i
= L
i
’ và R
i
R
*
i
= R
i
’ chính xác bằng p
i.
(Chú ý là, xác suất này được tính trên tất cả các bộ có thể có của J = J
1
J
8
) .
Xác suất đặc trưng được đònh nghóa bằng tích p = p
1
p
n
.
Nhận xét
: Giả sử ta chọn L
0
1
, , R
n
. Khi đó ta không thể
đòi hỏi xác suất để L
i
L
i
*
= L
i
’ và R
i
R
i
*
= R
i
’ cho tất cả i ( 1 i n) là p
1
p
n
.
Bởi vì các bộ -48 trong lòch khóa K
1
, , K
n
không phải là độc lập lẫn nhau. (Nếu n bộ-48
này đïc chọn độc lập một cách ngẫu nhiên, thì điều xác nhận là đúng). Nhưng ta sẽ coi
rằng p
=
00000000
16L’
1
=
00000000
16
R’
1
=
L’
0
p = 1
Ta cũng sẽ mô tả một đặc trưng vòng 1 khác như sau
L’
0
=
00000000
16
, K
1
) và f(R
0
*
, K
1
) được tính, bước
đầu tiên là mở rộng R
0
và R
0
*
. Xâu x-or kết quả của hai mở rộng là:
001100 0
Tức là xâu x-or nhập cho S
1
là 001100 và các xâu x-or cho bảy S-hộp khác đều là 000000.
Các xâu xuất x-or cho S
2
đến S
8
đều là 0000. Xâu xuất x-or cho S
1
là 1110 với xác suất
14/64 (do N1(001100, 1110) = 14). Nên ta nhận được:
C’ = 11100000000000000000000000000000
với xác suất 14/64. p dụng P, ta nhận được:
P(C) P(C
*
và L
6
*
R
6
*
, mà ta phải chọn bản
rõ sao cho L
0
’= 40080000
16
và R
.0
’= 04000000
16
, ta có thể biểu diễn R
0
như sau:
L
0
’
L
1
’
L
2
’
L
3
=
=
04000000
16
00000000
16
04000000
16
40080000
16p = 1/4
p = 1
p = 1/4
R
6
= L
5
f(R
5
, K
6
)
= R
4
f(R
, K
4
) f(R
5
, K
6
) f(R
5
*
, K
6
) (4)
(Để ý là tương tự như thám mã 3-vòng)
R
6
’ là được biết. Từ đặc trưng ta tính L
3
’ = 04000000
16
và R
3
’ = 40080000
16
với xác suất
1/16. Nếu như vậy, thì xâu nhập x-or cho S-hộp trong vòng 4 có thể tính được nhờ hàm
mở rộng phải là:
001000000000000001010000 0
Các xâu x-or cho S
2
, S
’ 04000000)
mỗi C
i
là xâu bit có độ dài 4. Khi đó với xác suất 1/16, thì sẽ dẫn đến là C
2
’, C
5
’, C
6
’, C
7
’
và C
8
’ tương ứng là các xâu x-or xuất của S
2
, S
5
, S
6
, S
7
và S
8
trong vòng 6. Các xâu nhập
cho các S-hộp đó trong vòng 6 có thể tính được là E
2
, E
5
, E
E
5
E
6
E
7
E
8
= E(R
5
) = E(L
6
)
và
E
1
*
E
2
*
E
3
*
E
4
*
E
5
*
E