Tải bản đầy đủ (.doc) (82 trang)

Đồ án tốt nghiệp đại học nghiên cứu và đánh giá các đặc trưng thống kê thuật toán mã hóa CRYPT(D) 64

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 (3.21 MB, 82 trang )

MỤC LỤC
4.2 Khoảng cách Hamming 71
LỜI NÓI ĐẦU
Cùng với sự phát triển của phần cứng máy tính và cơ sở hạ tầng về
mạng máy tính đã tạo thuận lợi cho chúng ta trao đổi thông tin qua mạng
một cách nhanh chóng và chính xác, thông tin trao đổi ở đây có thể trên rất
nhiều lĩnh vực, ví dụ như thương mại điện tử, tin tức thời sự, hay là thư
điện tử giữa hai người hay nhóm người với nhau, Các dạng thông tin trao
đổi có thể là công khai, ví dụ như các thông tin quảng cáo, tin tức thời sự
nhưng cũng có những vấn đề cần có sự bảo mật không thể cho đối tượng
thứ ba biết, ví dụ như các thông tin về bí mật quốc gia, bí mật quân sự, hay
những bí mật của cá nhân, Vấn đề đặt ra là chúng ta phải xây dựng các
phương pháp và các thuật toán mã hoá phục vụ cho bảo mật thông tin.
Vấn đề mã hoá và bảo mật thông tin đã được nhiều quốc gia, các tổ
chức, và công ty có liên quan tới ngành công nghệ thông tin nghiên cứu.
Đặc biệt và đi đầu là Hoa Kỳ, họ đã bắt tay nghiên cứu và xây dựng các
thuật toán mã hoá rất sớm. Năm 1972, Viện tiêu chuẩn và công nghệ quốc
gia Hoa Kỳ (National Institute of Standar and Technology - NIST) đã đặt ra
yêu cầu xây dựng thuật toán mã hoá bảo mật thông tin với yêu cầu là dễ
thực hiện, sử dụng rộng rãi trong nhiều lĩnh vực và mức độ bảo mật cao.
Năm 1974, IBM giới thiệu thuật toán mã hoá Lucifer, thuật toán này
đã đáp ứng hầu hết các yêu cầu của Viện tiêu chuẩn và công nghệ quốc gia
Hoa Kỳ (NIST). Sau đó vào năm 1976, Lucifer được NIST công nhận là
chuẩn quốc Hoa Kỳ và được đổi tên thành Data Encryption Standard
(DES). DES là thuật toán mã hoá bảo mật được sử dụng rộng rãi nhất trên
thế giới, ở thời điểm DES ra đời người ta đã tính toán rằng việc phá được
1
mã DES là rất khó khăn, đòi hỏi chi phí hàng triệu USD và khoảng thời gia
rất nhiều năm.
Cùng với sự phát triển của các loại máy tính, và mạng máy tính có
tốc độ tính toán rất cao, khoá mã DES có thể bị phá trong một khoảng thời


gian ngày càng ngắn và chi phí ngày càng thấp. Dù vậy việc này vẫn vượt
xa khả năng của các hacker thông thường. Tuy nhiên đã có rất nhiều nghiên
cứu nhằm cải thiện và kế thừa khoá mã DES, trong phần đồ án của mình
em xin trình bày một thuật toán mã hoá mới đó là thuật toán CRYPT(D) 64.
Thuật toán mới được thiết kế dựa trên các tiêu chuẩn sau: Kiểu thuật
toán mã hóa: Mã khối, độ dài của khối dữ liệu được mã hóa: 64 bít, độ dài
của khóa bí mật: 128, 256 bít. Giải pháp để xây dựng thuật toán mật mã ở
đây sẽ dựa trên các toán tử biến đổi điều khiển được - là một trong các giải
pháp mới để xây dựng các loại mã thỏa mãn tốt hơn các yêu cầu thực tiễn.
Với giải pháp này, thuật toán sẽ được xây dựng trên cơ sở kết hợp mạng
chuyển vị - thay thế điều khiển được với mạng chuyển vị - thay thế cố định,
các mạng chuyển vị - thay thế điều khiển được sẽ được xây dựng dựa trên
các toán tử điều khiển được có kích thước tối thiểu để phù hợp cho việc cài
đặt trên các VLSI như ASIC/FPGA.
Thuật toán mới được xây dựng lựa chọn phương án sử dụng các toán
tử phụ thuộc vào cả khoá và dữ liệu được biến đổi.
Trong phần triển khai cài đặt ứng dụng em sẽ tập trung vào phần
đánh giá các đặc trưng thống kê của thuật toán.
Quá trình thực hiện nghiên cứu các đặc trưng thống kê của thuật
toán mã hoá CRYPT(D) 64 em xin chân thành cảm ơn thầy giáo hướng dẫn
đã hướng dẫn, chỉ bảo tận tình giúp em hoàn thành đồ án.
2
Chưong 1 GIỚI THIỆU TỔNG QUAN VỀ MÃ HÓA
CÁC HỆ VÀ CÁC PHƯƠNG PHÁP MÃ HÓA
1.1 Giới thiệu tổng quan.
Mật mã là môn khoa học nhiên cứu về các vấn đề truyền thông tin
liên lạc và độ mật của nó. Đối tượng cơ bản của mật mã là tạo ra một khả
năng liên lạc trên một kênh thông tin mật cho hai người sử dụng A(Alice)
và B(Bob) sao cho đối phương O(Oscar) không thể hiểu được thông tin
truyền đi. Kênh liên lạc này có thể là một đường dây điện thoại hoặc là

mạng máy tính hoặc mạng internet. Thông tin A muốn gửi cho B gọi là bản
rõ có thể là một văn bản, hình ảnh, chương trình,… A sẽ mã hóa bản rõ
bằng một khóa và phương pháp đã được thống nhất trước khi gửi bản mã đi
trên kênh. O có thể thu được bản mã trên kênh truyền nhưng không thể xác
định được nội dung bản mã đó nhưng B(người biết khóa ) có thể giải mã và
thu được bản rõ.
Các phương pháp mã hóa và giải mã tương ứng có từ rất lâu trong lịch
sử. Người Hy Lạp cổ đã biết sử dụng phương pháp Skytale để mã hóa và giải
mã. Phương pháp mã hóa Vigenere đã có từ bốn thế kỷ nay. Rất lâu trước khi
có sự trợ giúp của máy tính chúng ta cũng đã biết sử dụng công cụ máy móc để
hỗ trợ cho việc mã hóa và giải mã(chẳng hạn như sử dụng phương pháp Turing
Grill do Carcado phát minh). Công việc mã hóa và giải mã đối với các phương
pháp cổ điển là tương đối dễ dàng khi có khóa. Nhưng trên vai trò người ăn
trộm thông tin (thám mã) không có khóa, đó là một công việc rất khó. Nó đòi
hỏi người thám mã phải có kiến thức về xác suất, có các số liệu thống kê và đặc
biệt phải có kinh nghiệm trong công việc. Tuy vậy ngày nay với sự hỗ trợ của
3
máy tính công việc thám mã trở nên nhẹ nhàng hơn đối với các hệ mật cổ điển.
Tuy nhiên các phương pháp cổ điển vẫn được nghiên cứu(mã háo, giải mã, và
thám mã) bởi lịch sử lâu đời của các phương pháp này một số người vẫn sử
dụng chúng. Nhưng có thể nói hiện nay các phương pháp cổ điển rất ít người sử
dụng, mà người ta đã đưa ra nhiều phương pháp mã hóa mới ví dụ như hệ mã
công khai, mã hóa DES, Dưới đây là mô hình chung của mật mã.
Hình 1.1. Mô hình chung của mật mã
1.2 Các hệ mã và các phương pháp mã hóa
1.2.1 Hệ mã cổ điển và mã hóa công khai
Tổng quát hóa theo toán học chúng ta có Một hệ mật là một bộ năm
(P,C,K,E,D) thỏa mãn các điều kiện sau:
1. P là một tập hưữ hạn các bản rõ cụ thể.
2. C là một tập hữu hạn các bản rõ có thể.

3. K(không gian khóa) là tập hữu hạn các khóa có thể.
4. Đối với mỗi k

K có một quy tắc mã e
k
: P

C và một quy tắc giải
mã tương ứng d
k


D. Mỗi e
k
: P

và d
k
: C

P là những hàm mã:
D
k
(e
k
(x))=x với mọi bản rõ x

P
 Mã dịch vòng( shift cipher)
Giả sử P=C=K=Z

26

với 0

k

25 ta có:
e
k
(x)=(x+k) mod 26
4
d
k
(x)=(y-k) mod 26
Trong đó Z
26
là 26 chữ cái trong bảng chữ cái tiếng anh. Và x,y

Z
26
 Mã thay thế
Cho P=C=Z
26
. K chứa mọi hoán vị có thể của 26 ký hiệu 0,1,…,25
với mỗi phép hoán vị
π

K, ta có: e
π
(x)=

π
(x)
d
π
(y)=
π
1−
(y)
Trong đó
1−
π
là hoán vị ngược của
π
.
 Mật mã Affine
Cho P=C=Z
26
và giả sử P={(a,b)

Z
26
x Z
26
: UCLN(a,26)=1}
Với k = (a,b)

K, ta có: e
k
(x)=(ax +b) mod 26
d

k
(x)=a
-1
(y-b) mod 26
Trong đó (x,y)

Z
26
.
 Mật mã Vigenère
Cho m là một số nguyên dương cố định. Có P=C=K=(Z
26
)
m
. Với
khóa K=(k
1
,k
2
,…,k
m
) ta có
e
k
(x
1
,x
2
,…x
m

)=(x
1
+k
1
,x
2
+k
2
,…,x
m
+k
m
)
d
k
(y
1
,y
2
,…,y
m
)=(y
1
-k
1
,y
2
-k
2
,…,y

m
-k
m
)
Trong đó tất cả các phép toán thực hiện trong Z
26
.
 Mật mã Hill
Cho m là một số nguyên dương cố định. Cho P=C=(Z
26
)
m
và cho
K={ma trận khả nghịch cấp mxm trên Z
26
}. Với một khóa k

K ta có:
e
k
(x)=xk
d
k
(y)=yk
-1
5
Tất cả các phép toán đều thực hiện trong Z
26
.
 Mã hoán vị

Cho m là một số nguyên xác định nào đó. P=C=(Z
26
)
m
và cho K gồm tất
cả các hoán vị của {1,2,…,m}. Đối một khóa
π
(tức là một hoán vị) ta xác định.
e
π
(x
1
, . . . , x
m
) = (x
π
(1)
, . . . , x
π
(m)
)
d
π
(x
1
, . . . , x
m
) = (y
π
-1

(1)
, . . . , y
π
-1
(m)
)
Trong đó
1−
π
là hoán vị ngược của
π
.
 Mật mã dòng
Mật mã dòng là bộ (P,C,K,L,F,E,D) thỏa mãn các điều kiện sau:
1. P là một tập hữu hạn các bản rõ có thể.
2. C là một tập hữu hạn các bản mã có thể.
3. K là tập hữu hạn các khóa có thể(không gian khóa).
4. L là tập hữu hạn các bộ chữ của dòng khóa.
5. F=(f
1
f
2
…) là bộ tạo dòng khóa. Với i

1 f
i
: K
×
P
i-1



L
6. Với mỗi z

L có một quy tắc mã e
z

E và một quy tắc giải mã
tương ứng d
z

D. e
z
: P

C và d
z
: C

P là các hàm thỏa mãn
d
z
(e
z
(x))=x với mọi bản rõ x

P.
Mật mã khóa tự sinh. Cho P=C=K=L=Z
26

, z
1
=k và z
i
=x
i-1
(i

2) với 0
≤≤ z
25 ta xác định e
z
(x) = x + z mod 26
d
z
(y) = y - z mod 26 (x,y ∈ Z
26
)
 Mã hóa công khai
Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người
sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa
6
chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp
khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay
khóa bí mật).
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng
nghĩa với mật mã hóa khóa công khai mặc dù hai khái niệm không hoàn
toàn tương đương. Có những thuật toán mật mã khóa bất đối xứng không
có tính chất khóa công khai và bí mật như đề cập ở trên mà cả hai khóa
(cho mã hóa và giải mã) đều cần phải giữ bí mật.

Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí
mật trong khi khóa công khai được phổ biến công khai. Trong 2 khóa, một
dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với
hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.
Phương pháp mã hoá công khai (Public Key Cryptography) đã giải quyết
được vấn đề của phương pháp mã hoá khoá bí mật là sử dụng hai khoá publickey
và privatekey. Phương pháp này còn được gọi là mã hoá bất đối xứng
(Asymmetric Cryptography) vì trong hệ sử dụng khoá mã hoá E
k
và khoá giải
mã D
k
khác nhau (E
k
# D
k
). Trong đó , E
k
được sử dụng để mã hoá nên có thể
được công bố, nhưng khoá giải mã D
k
phải được giữ bí mật. Nó sử dụng hai
khoá khác nhau để mã hoá và giải mã dữ liệu. Phương pháp này sử dụng thuật
toán mã hoá RSA (tên ba nhà phát minh ra nó: Ron Rivest, Adi Shamir và
Leonard Adleman) và thuật toán Diffie Hellman.

Ngoài ra còn có một số thuật
toán khác như hệ thống mật mã Paillier, Mã hóa đường cong elliptic, ElGamal.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
• Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải

mã được.
7
• Tạo chữ ký số(DSS): cho phép kiểm tra một văn bản có phải đã
được tạo với một khóa bí mật nào đó hay không.
• Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin
mật giữa 2 bên.
Các phương pháp mã hóa này khai thác những ánh xạ f mà việc thực
hiện ánh xạ ngược f
–1
rất khó so với việc thực hiện ánh xạ f. Chỉ khi biết
được khóa riêng K thì mới có thể thực hiện được ánh xạ ngược f
–1
.
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối
lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi
điểm mà chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng.
Trên thực tế vào năm 1972 Viện tiêu chuẩn và công nghệ quốc gia
Hoa kỳ (National Institute of Standards and Technology-NIST) đặt ra yêu
cầu xây dựng một thuật toán mã hoá bảo mật thông tin với yêu cầu là dễ
thực hiện, sử dụng được rộng rãi trong nhiều lĩnh vực và mức độ bảo mật
cao. Năm 1974, IBM giới thiệu thuật toán Lucifer, thuật toán này đáp ứng
hầu hết các yêu cầu của NIST. Sau một số sửa đổi, năm 1976, Lucifer
được NIST công nhận là chuẩn quốc gia Hoa kỳ và được đổi tên thành Data
Encryption Standard (DES).
DES là thuật toán mã hoá bảo mật được sử dụng rộng rãi nhất trên thế
giới, thậm chí, đối với nhiều ngưòi DES và mã hoá bảo mật là đồng nghĩa với
nhau. ở thời điểm DES ra đời người ta đã tính toán rằng việc phá được khoá
mã DES là rất khó khăn, nó đòi hỏi chi phí hàng chục triệu USD và tiêu tốn
khoảng thời gian rất nhiều năm. Cùng với sự phát triển của các loại máy tính
và mạng máy tính có tốc độ tính toán rất cao, khoá mã DES có thể bị phá

trong khoảng thời gian ngày càng ngắn với chi phí ngày càng thấp. Dù vậy
việc này vẫn vượt xa khả năng của các hacker thông thường và mã hoá DES
8
vẫn tiếp tục tồn tại trong nhiều lĩnh vực như ngân hàng, thương mại, thông
tin nhiều năm nữa đặc biệt với sự ra đời của thế hệ DES mới-"Triple DES".
Yêu cầu đặt ra nếu muốn bảo mật tốt hơn là phải tìm được một thuật toán
sao cho việc thực hiện không quá phức tạp nhưng xác suất tìm ra chìa khoá bằng
cách thử tất cả các trường hợp (brute-force) là rất nhỏ (số lần thử phải rất lớn).
Trong phần tiếp theo em xin giới thiệu tổng quát nhất về phương
pháp mã hóa DES.
1.2.2 Mã hóa DES
Về mặt khái niệm, thông thường thuật toán mã hoá DES là thuật toán
mở, nghĩa là mọi người đều biết thuật toán này. DES là thuật toán mã hóa
khối: nó xử lý từng khối thông tin của bản rõ có độ dài xác định và biến đổi
theo những quá trình phức tạp để trở thành khối thông tin của bản mã có độ
dài không thay đổi. Trong trường hợp của DES, độ dài mỗi khối là 64 bit.
DES cũng sử dụng khóa để cá biệt hóa quá trình chuyển đổi. Nhờ vậy, chỉ
khi biết khóa mới có thể giải mã được văn bản mã. 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. Vì thế, độ dài thực tế của khóa chỉ là 56
bit, nghĩa là số lần thử tối đa để tìm được chìa khoá lên đến 2^56, trung bình
là 2^55 = 36.028.797.018.963.968 lần, một con số rất lớn!.
Tổng thể
Cấu trúc tổng thể của thuật toán được thể hiện ở hình 1.2: có 16 chu
trình giống nhau trong quá trình xử lý. Ngoài ra còn có hai lần hoán vị đầu
và cuối (Initial and final permutation - IP & EP). Hai quá trình này có tính
chất đối nhau (Trong quá trình mã hóa thì IP trước EP, khi giải mã thì ngược
lại). IP và EP không có vai trò xét về mật mã học và việc sử dụng chúng chỉ
có ý nghĩa đáp ứng cho quá trình đưa thông tin vào và lấy thông tin ra từ các
9

khối phần cứng có từ thập niên 1970. Trước khi đi vào 16 chu trình chính,
khối thông tin 64 bit được tách làm hai phần 32 bit và mỗi phần sẽ được xử
lý tuần tự (quá trình này còn được gọi là mạng Feistel).
Hình 1. 2 Cấu trúc thuật toán Feistel dùng trong DES
Cấu trúc của thuật toán (mạng Feistel) đảm bảo rằng quá trình mã
hóa và giải mã diễn ra tương tự. Điểm khác nhau chỉ ở chỗ các khóa con
được sử dụng theo trình tự ngược nhau. Điều này giúp cho việc thực hiện
thuật toán trở nên đơn giản, đặc biệt là khi thực hiện bằng phần cứng.
Ký hiệu sau:

thể hiện phép toán XOR. Hàm F làm biến đổi
một nửa của khối đang xử lý với một khóa con. Đầu ra sau hàm F
được kết hợp với nửa còn lại của khối và hai phần được tráo đổi để
xử lý trong chu trình kế tiếp. Sau chu trình cuối cùng thì 2 nửa không
bị tráo đổi; đây là đặc điểm của cấu trúc Feistel khiến cho quá trình
mã hóa và giải mã trở nên giống nhau.
10
Hàm Feistel (F -function)
Hình 1. 3 a- Hàm F dùng trong DES. b- Quá trình tạo khóa con trong DES
Hàm F, như được miêu tả ở hình 1.3a, hoạt động trên khối 32 bit và bao
gồm bốn giai đoạn:
1. Mở rộng: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật
toán hoán vị mở rộng (expansion permutation) với việc nhân đôi một
số bit. Giai đoạn này được ký hiệu là E trong sơ đồ.
2. Trộn khóa: 48 bit thu được sau quá trình mở rộng được XOR với
khóa con. Mười sáu khóa con 48 bit được tạo ra từ khóa chính 56 bit
theo một chu trình tạo khóa con (key schedule) miêu tả ở phần sau.
3. Thay thế: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được xử
lý qua hộp thay thế S-box. Đầu ra của mỗi khối 6 bit là một khối 4 bit
theo một chuyển đổi phi tuyến được thực hiện bẳng một bảng tra. Khối

S-box đảm bảo phần quan trọng cho độ an toàn của DES. Nếu không
có S-box thì quá trình sẽ là tuyến tính và việc thám mã sẽ rất đơn giản.
11
4. Hoán vị: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại
theo một thứ tự cho trước (còn gọi là P-box).
Quá trình luân phiên sử dụng S-box và sự hoán vị các bít cũng như
quá trình mở rộng đã thực hiện được tính chất gọi là sự xáo trộn và
khuyếch tán (confusion and diffusion).
 Quá trình tạo khóa con
Hình 1.3b mô tả thuật toán tạo khóa con cho các chu trình. Đầu tiên,
từ 64 bit ban đầu của khóa, 56 bit được chọn (Permuted Choice 1, hay PC-
1); 8 bit còn lại bị loại bỏ. 56 bit thu được được chia làm hai phần bằng
nhau, mỗi phần được xử lý độc lập. Sau mỗi chu trình, mỗi phần được dịch
đi 1 hoặc 2 bit (tùy thuộc từng chu trình). Các khóa con 48 bit được tạo
thành bởi thuật toán lựa chọn 2 (Permuted Choice 2, hay PC-2) gồm 24 bit
từ mỗi phần. Quá trình dịch bit (được ký hiệu là "<<<" trong sơ đồ) khiến
cho các khóa con sử dụng các bit khác nhau của khóa chính; mỗi bit được
sử dụng trung bình khoảng 14 lần trong tổng số 16 khóa con.
Quá trình tạo khóa con khi thực hiện giải mã cũng diễn ra tương tự
nhưng các khóa con được tạo theo thứ tự ngược lại. Ngoài ra sau mỗi chu
trình, khóa sẽ được dịch phải thay vì dịch trái như khi mã hóa
 Các chế độ của DES:
Thuật toán DES mã hoá đoạn tin 64 bit thành đoạn tin mã hoá 64 bit.
Nếu mỗi khối 64 bit được mã hoá một cách độc lập thì ta có chế độ mã hoá
ECB (Electronic Code Book). Có hai chế độ khác của mã hoá DES là CBC
(Chain Block Coding) và CFB (Cipher Feedback), nó làm cho mỗi đoạn tin
mã hoá 64 bit phụ thuộc vào các đoạn tin trước đó thông qua phép toán XOR.

 Triple DES:
12

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 với 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.
 Ứng dụng của DES
DES thường được dùng để mã hoá bảo mật các thông tin trong quá
trình truyền tin cũng như lưu trữ thông tin. Một ứng dụng quan trọng khác
của DES là kiểm tra tính xác thực của mật khẩu truy nhập vào một hệ thống
(hệ thống quản lý bán hàng, quản lý thiết bị viễn thông…), hay tạo và kiểm
tính hợp lệ của một mã số bí mật (thẻ internet, thẻ điện thoại di động trả
trước), hoặc của một thẻ thông minh (thẻ tín dụng, thẻ payphone…).
 Phá khóa DES
Năm 1998, một nhóm nghiên cứu đã chi phí 220.000USD để chế tạo
một thiết bị có thể thử toàn bộ số chìa khoá DES 56 bit trong trung bình 4,5
ngày. Tháng 7 năm 1998 họ thông báo đã phá chìa khoá DES trong 56 giờ.
Thiết bị này gọi là Deep Crack gồm 27 board mạch, mỗi board chứa 64
chip và có khả năng thử 90 tỷ chìa khoá trong một giây.
Tuy nhiên, việc phá khóa Triple DES là điều rất khó khăn, một chuyên
gia về bảo mật đã cho rằng " Không có đủ silic trong giải ngân hà (để chế tạo
chip-TG) cũng như không đủ thời gian trước khi mặt trời bị phá huỷ để phá
khoá Triple DES".
Kể từ khi DES ra đời, nhiều thuật toán mã hoá bảo mật khác cũng
được phát triển tương tự DES hoặc dựa trên DES. Trong phần tiếp theo và
13
cũng là phần chính của đồ án em sẽ tập trung vào trình bày cơ sở lý thuyết,
phương pháp xây dựng và phương pháp đánh giá các đặc trưng thống kê của
thuật toán mã hóa Crypt(D) 64.

Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÁC KHÁI NIỆM
LIÊN QUAN TỚI XÂY DỰNG CRYPT(D) 64
2.1 Đặt vấn đề
Thuật toán mới CRYPT(D)-64 được thiết kế cho việc mã hoá các
khối dữ liệu có độ dài 64-bit, sử dụng khoá mật 128-bit và 256-bit, thuật
toán được xây dựng trên cơ sở kết hợp mạng chuyển vị - thay thế điều
khiển được CSPN (Controlled Substitution-Permutation Network) với
mạng chuyển vị - thay thế cố định SPN (Substitution-Permutation
Network). Để thuật toán có tốc độ thực hiện cao và tích hợp hiệu quả trên
VLSI như ASIC/FPGA, việc xây dựng CSPN sẽ được thực hiện trên phần
tử điều khiển được - CE (Controlled Element) có kích thước tối thiểu F
2/1
.
Vậy thế nào là mạng chuyển vị - thay thế điều khiển được CSPN, các phần
tử điều khiển CE là gì, và thế nào là mạng chuyển vị cố định SPN?
2.2 Mạng chuyển vị - thay thế cố định
Trong kỹ thuật mã hóa mạng chuyển vị cố định (substitution-
permutation network SPN) là một dãy các liên kết toán học sử dụng trong
các thuật toán mã hóa khối giống như AES(Rijndael). Các mạng sẽ đưa một
khối của các bản gốc và khóa là yếu tố đầu vào, và áp dụng liên tục các
"vòng" hoặc "lớp" của hộp thay thế (hộp-S) và hộp hoán vị (hộp-P) để tạo
ra các bản mã khối. Hộp S và hộp P biến đổi các khối con của các bít đầu
vào thành các bit đầu ra. Đó là các hoạt động của các lệnh chuyển đổi được
thực hiện từ phần cứng giống như các phép XOR hay các phép xoay giữa
14
các bít. Khóa được đưa vào trong mỗi vòng thường nhận trong mỗi vòng
khóa của lớp. Trong một vài thiết kế thì các S-box phụ thuộc vào các khóa.
Mối hộp thay thế S là một khối nhỏ gồm một số bit nhất định các đầu
vào của hộp S là đầu ra của hộp S khác. Số bit của đầu ra có thể bằng số bit
của đầu vào (ta có giống như hình 2.1 có hộp S với 4 đầu vào và đầu ra 4

bit), nhưng cũng có thể số bít đầu vào và đầu ra của hộp S là khác nhau ví
dụ như trong mã hóa DES các hộp S có 6 bít đầu vào nhưng chỉ có 4 bít
đầu ra (có thể thấy trong hình 1.3) . Một hộp S được thiết kế tốt thì khi thay
đổi một bít đầu vào có thể làm thay đổi một nửa số luợng bít đầu ra và các
bít ở đầu ra phụ thuộc các bít ở đầu vào.
Hình 2.1 Một ví dụ cụ thể về SPN
Một hộp P là một hoán vị của tất cả các bít, nó nhận tất cả các bít đầu
ra của các hộp S sao đó hoán vị chúng và chuyển thành các bít đầu vào của
15
các hộp S ở vòng tiếp theo. Một hộp P tốt phải có thuộc tính các bít đầu ra
của hộp S có khả năng được phân bố ở một số bít đầu vào của các hộp S
vòng tiếp theo.
Tại mỗi vòng thì khóa vòng(nhận được từ khóa với một số hoạt động
đơn giản ví dụ như dùng hộp S và hộp P)được kết hợp với một số phép toán
đặc trưng như XOR.
Một hộp S hay một hộp P đơn thuần không có hiệu quả mã hóa: một
hộp S có thể thông qua như một sự thay thế các khối trong khi hộp P có thể
coi như là một sự hoán vị của các khối. Tuy nhiên để thiết kế một mạng hoán
vị thay thế tốt(SPN) các vòng lặp các S-box và các P-box phải thỏa mản sự
xáo trộn và khuyếch tán.
Lý do của sự khuyếch tán: nếu như thay đổi một bít của bản rõ sau
đó đưa vào một hộp S sẽ làm thay đổi một vài bít đầu ra, sau khi thay đổi
được phân phối bởi hộp P giữa một vài hộp S, kể từ đấy tất cả các đầu ra
của hộp S lại được thay đổi một vài bit thực hiện liên tiếp các vòng mỗi
bit sẽ thay đổi, sau khi kết thúc các vòng thực hiện thì bản rõ được thay đổi
hoàn toàn.
Lý do của sự xáo trộn cũng giống với sự khuyếch tán sự thay đổi bit
của các khóa vòng, mỗi sự thay đổi sẽ lan truyền qua tất cả các bít mã dẫn sự
thay đổi bản mã rất phức tạp. Ngược lại nếu thay đổi một bit trong bản mã sẽ
thay đổi khóa hoàn toàn.

Hộp S là một hệ thống phi tuyến của hệ mật và là một yếu tố quan
trọng quyết định độ mật của hệ. Cho đến nay vẩn chưa có các tiêu chuẩn
chung đầy đủ để thiết kế hôp S. Trong thuật toán CRYPT(D) 64 được
nghiên cứu việc sử dụng các hộp S theo một cấu trúc có sẵn.
16
Cấu trúc của các hộp S thông dụng được sử dụng trong các ứng dụng
trong dòng mã hóa CRYPT(D)(xét trong chương 3) thông thường bao
gồm các hộp S
0
, , S
7
được cụ thể trong bảng 2.1. và các hộp nghịch
đảo gồm S
-1
0
, , S
-1
7
được cụ thể trong bảng 2.2. Tám hộp 4x4 của
của dòng mã CRYPT(D) được chọn như các hộp S
0
, , S
7
. Trong ứng
dụng của các loại mã hóa CRYPT(D) thì chúng ta sẽ sử dụng cả hai
loại hộp S thuận và nghịch sẽ được xét cụ thể trong chương 3.
Bảng 2.1 Đặc tả của hộp thay thế 4x4 S
0
, ,S
7


Bảng 2.2 Đặc tả của hộp thay thế 4x4 S
0
-1
, ,S
7
-1
17
Trong các ứng dụng của các thuật toán mã hóa mới CRYPT(D) thì các
hoán vị có thể được ký hiệu là I, tùy vào ứng dụng của các thuật toán mã hóa
ta có thể có nhiều hoán vị I khác nhau. Mục đích sử dụng các hoán vị I này
để ngăn cản cặp đầu ra của hộp S 4x4 trực tiếp tới đầu vào của các phần tử
điều khiển được CE(controlled element) của hộp P
n/m
(sẽ đề cập ở phần tiếp
theo), hoặc từ cặp đầu ra của các phần tử điều khiển được CE của cac hộp
P
n/m
trực tiếp tới đầu vào của hộp S, hoặc trực tiếp từ cặp đầu ra của các phần
tử CE hộp P
n/m
vào các phần tử CE thẳng hàng của hộp P’
n/m
. Chúng ta sẽ xét
cụ thể trong phần xây dựng thuật toán CRYPT(D) 64.
Các thuộc tính của hộp S Các nguyên tắc thiết kế của tám hộp S được
đưa vào lớp ‘Classified information(Tin tức bí mật)’ ở Mỹ.
NSA đã tiết lộ 3 thuộc tính của các hộp S, những thuộc tính này bảo
đảm tính xáo chộn và khuyếch tán của thuật toán.
1. Các bít vào (input bit) luôn phụ thuộc không tuyến tính vào các bít

ra (output bit).
2. Sửa đổi ở một bit vào làm thay đổi ít nhất là hai bit ra.
3. Khi một bit vào được giữ cố định và 5 bit con lại cho thay đổi thì các
hộp S thể hiện một tính chất được gọi là phân bố đồng nhất: so sánh số lượng
bit số 0 và 1 ở các đầu ra luôn ở mức cân bằng.
2.3 Mạng chuyển vị - thay thế điều khiển được
2.3.1 Phần tử cơ sở của mạng chuyển vị - thay thế điều khiển được
Mạng chuyển vị - thay thế điều khiển được có thể mô tả là các hộp
hoán vị điều khiển được PC(Controlled permutation) P
n/m
. Với n là số bit
đầu vào, n là bit đầu ra, m là số bit điều khiển. Hộp P
n/m
được xây dựng nhờ
sử dụng các phần tử điều khiển được cơ sở P
2/1
, hoặc P
2/2
. Nhưng trong
18
phạm vi ngiên cứu đánh gia các đặc trưng thống kê của thuật toán Crypt(D)
64 thì sẽ đi sâu vào nghiên cứu các hộp P
n/m
được xây dựng từ các phần tử
điều khiển được cơ sở P
2/1
, hay có thể gọi P
2/1
là các hộp bộ phận cấu thành
của hộp điều khiển P

n/m
(trong nhiều tài liệu P
2/1
được thay bởi F
2/1
chính là
CE controlled Element). Chúng ta có thể giải thích sơ lược về mỗi phần tử
điều khiển được cơ sở P
2/1
là phần tử nhận hai bit làm đầu vào, cho đầu ra là
hai bit, và sử dụng một bít làm điều khiển giá trị của các bit đầu ra. Trên
phương diện toán học thì đầu ra được biểu diễn là các hàm ba biến phụ
thuộc vào giá trị đầu vào và giá trị của các bít điều khiển và phép toán sử
dụng ở đây chính là phép XOR và sẽ được trình bày cụ thể hơn trong các
phần tiếp theo. Còn việc tích hợp trên phần cứng tương ứng là sử dụng các
mạch XOR. Như đã đề cập ở trên thì hộp P
n/m
được xây dựng từ các hộp P
2/1
ta có cấu trúc như hình 2.2.
Hình 2.2. Cấu trúc của hộp chuyển vị điều khiển được
Trong đó
i
x
là các bit đầu vào, với
ni , ,2,1=∀
19
i
y
là các bit đầu ra

ni , ,2,1=∀
j
v
là các bit điều khiển
mj , ,2,1=∀
e
π
là các hoán vị cố định
1, ,2,1 −=∀ ke
Ở đây P
n/m
được phân chia thành nhiều tầng khác nhau, mỗi tầng là
một dãy các phần tử điều khiển được cơ sở, số P
2/1
sẽ phụ thuộc vào số bít
đầu vào của khối dữ liệu cần mã hóa.
 Các thay thế điều chỉnh được cơ sở P
2/1
(F
2/1
)
Ý tưởng chính việc xây dựng khối trong các hộp chuyển vị điều
chỉnh được (CP) ở mỗi phân tầng là phần tử chuyển mạch cơ sở P
2/1
thực
hiện điều chỉnh hoán đổi vị trí của hai bit đầu vào. Việc biến đổi được điều
chỉnh cơ sở được thực hiện với P
2/1
được mô tả bởi các hàm Boolean phi
tuyến cụ thể (BF Boolean Function) theo ba biến như ta có thể có như sau:

Trong đó

v
là bit điều khiển, (
1
x
,
2
x
) là cặp bit đầu vào, (
1
y
,
2
y
) là cặp bit đầu ra.
Việc chọn hai hàm logic (Boolean) f
1
và f
2
cân bằng theo ba
biến, với các dạng khác nhau, nó có thể lấy cơ sở là sự thay đổi của
các hộp điều chỉnh được F
2/1
(hình 2.3). Các hàm f
1
, f
2
có thể được
sử dụng khi thực thi cài đặt các hộp F

2/1
trong phần cứng. Các phần
tử điều chỉnh được F
2/1
có thể lựa chọn như bởi hai sự thay thế
tuyến tính khác nhau S
1
(nếu
v
=0) và S
2
(nếu
v
=1) với kích thước
2x2 (hình 2.3c). Mối quan hệ giữa các lựa chọn của các phần tử
20
điều chỉnh được (CE) với các đầu ra được biểu diễn bằng các công
thức trong (hình 2.3d).
Hình 2.3 Hộp cơ sở F
2/1
: (a) Trường hợp tổng quát; (b) Chi tiết; (c) Đại
diện bởi cặp của hai thay thế 2x2; (d) Biểu thức mô tả mối quan hệ giữa
đại diện b và c; (e) Hàm logic thay thế hộp P
2/1
; (f) Sự khác nhau tương
ứng với vi sai đặc trưng của phần tử F
2/1
.
Các đầu ra của hộp S
1

có thể được mô tả bằng cặp các hàm logic (BF
Boolean Function) theo 2 biến:
Các đầu ra của hộp S
2
có thể được mô tả tương ứng như sau:
Các hàm f
1
(1)
, f
2
(1)
, f
1
(2)
, f
2
(2)
xác định cặp các hàm Boolean theo ba
biến, và chúng đã mô tả đầy đủ về các trường hợp của phần tử điều chỉnh
được cơ sở.
Nếu
v
=0 thì phần tử điều chỉnh được cơ sở (CE) thực hiện sự thay thế hộp S
1
.
Nếu
v
=1 thì phần tử điều chỉnh được cơ sở (CE) thực hiện sự thay thế hộp S
2
.

21
Nói cách khác bít điều khiển xác định việc lựa chọn của phép thay
thế cơ sở hiện tại (Sự thay đổi của F
2/1
là F
2/1
(0)
hoặc F
2/1
(1)
). Các công thức
được chỉ ra trong hình 2.3d mô tả việc lựa chọn sự thay thế trong trường
hợp tổng quát với một phương án cụ thể. Các công thức có thể được viết lại
như sau:
Sử dụng một số cấu trúc mạng đã cho của hộp P
n/m
và việc thay thế
các khối P
2/1
bởi các phần tử của các kiểu khác nhau F
2/1
, chúng ta có thể
thu được các thay đổi khác nhau của các hộp điều chỉnh F
n/m
khi thực hiện
các biến đổi với các kiểu khác nhau, có nghĩa là trong các trường hợp tổng
quát không bảo toàn trọng lượng của các vectơ nhị phân được biến đổi. Một
hộp F
n/m
không đồng nhất có thể được bao gồm việc sử dụng các hộp F

2/1

sở với một vài kiểu khác nhau ví dụ mỗi tầng hoạt động có thể là một loại
F
2/1
duy nhất. Thông thường chúng ta xét các hộp F
n/m
với cấu trúc không
đổi được xây dựng lên nhờ sử dụng hộp F
2/1
cơ sở với một kiểu duy nhất, và
cấu trúc hộp thay đổi sẽ được xây dựng nhờ sử dụng hai dạng của các phần
tử điều chỉnh được biểu diễn mối quan hệ nghịch đảo của F
2/1
và F
2/1
-1
. Các
hộp F
n/m
biểu diễn các dạng khác nhau của mạng chuyển vị - thay thế điều
khiển được(CSPN), được xây dựng nên sử dụng các phần tử điều chỉnh
được kích thước tối thiểu F
2/1
.
Trong nhiều trường hợp, sử dụng phép toán F
n/m
trong đó việc mã hoá
hàm ý sử dụng hàm nghịch đảo của nó F
n/m

-1
. Hiển nhiên là bất kỳ phép toán hộp
F
n/m
là nghịch đảo nếu phần tử F
2/1
là nghịch đảo. Biến đổi ngược có thể được
xây dựng bởi việc hoán đổi đầu ra và đầu vào của hộp F
n/m
đã cho và thay thế
mỗi phần tử F
2/1
bởi nghịch đảo của nó. (Bằng việc thay thế các phần tử P
2/1
bởi
F
-1
2/1
trong cấu trúc mạng hộp P
-1
n/m
, chúng ta thu được hộp F
-1
n/m
). Để xác định
22
cấu trúc của quan hệ các phép toán đảo ngược được dễ dàng, có thể sử dụng
phần tử điều khiển được cơ sở F
2/1
bằng ánh xạ đối hợp điều chỉnh được cơ sở

(cả hai biến đổi của F
2/1
(0)
và F
2/1
(1)
của các phần tử là các ánh xạ đối hợp). Hộp
P
2/1
là một trường hợp cụ thể của đối hợp điều chỉnh được cơ sở. Trong phần
tiếp theo, chúng ta chỉ ra rằng có 40 điều chỉnh được cơ sở đối hợp và 24 trong
số chúng được quan tâm nhiều hơn nó là cơ sở để mã hóa các bản dữ liệu gốc
phù hợp với hơn với hộp P
2/1
.
 Phân loại các hộp F
2/1
(P
2/1
)
Để thực hiện phân loại các phần tử F
2/1
và chọn chúng phù hợp hơn
cho các ứng dụng mã hoá, chúng ta cần chọn một số tiêu chuẩn chọn. Sử
dụng các khái niệm phi tuyến (NL nonlinear) theo hướng khoảng cách từ
tập của các hàm logic trong cùng số biến, các tiêu chuẩn sau đây được chọn
để chọn các phần tử phi tuyến thích hợp F
2/1
cho việc thiết kế các hộp F
n/m

cho các ứng dụng mã hóa:
1. Mỗi cặp đầu ra của các CE tồn tại một hàm logic phi tuyến cho phép tối đa
phi tuyến thay chocác hàm logic cân bằng theo ba biến.
2. Mỗi sự thay đổi của các phần tử điều khiển được là một biến đổi song
ánh (x1,x2) (y1,y2).
3. Tổ hợp tuyến tính của các cặp đầu ra của các phần tử điều chỉnh được,
tức là f=y1

y2, có thể thực hiện tối đa phi tuyến thay cho các hàm logic
cân bằng theo ba biến.
4. Mỗi sự thay đổi của các các phần tử điều chỉnh là một ánh xạ đối hợp.
Việc chọn hai hàm logic cân bằng theo ba biến f1 và f2 với các dạng
khác nhau, chúng ta có thể có các biến đổi khác nhau của hộp các hộp điều
chỉnh được cơ sở F
2/1
(hình 2.3b). Thực tế chỉ ra rằng chỉ có duy nhất 70
hàm logíc bằng nhau theo 3 biến. (Mỗi một hàm logic được chứa trong một
23
bảng chân lý chúng biểu diễn bằng số của bit không và khác không đây là
một cân bằng ổn định). Chúng ta quan tâm đến hàm logic cân bằng được
liên kết với việc đơn giản tìm kiếm vét cạn của tất cả các phần tử điều
khiển được F
2/1
có thể thực hiện nghịch đảo, mà có thể được sử dụng trong
thiết kế của các hoán vị phụ thuộc dữ liệu (DDP Data Dependent
Permutation) có tính khả nghịch giống như biến đổi. Như đã biết phép toán
biến đổi là song ánh nếu mỗi bít đầu ra của nó được mô tả bởi hàm logic
cân bằng và tất cả các tổ hợp tuyến tính của các bit đầu ra cũng là các hàm
logic cân bằng. Vì vậy, chúng ta cần xem xét tất các cặp hàm logic cân bằng
khác nhau. Số các cặp như vậy là 70x69=4830.

Ở đây chỉ có 24 kiểu hộp S khác nhau với kích thước 2x2. Vì vậy,
để thực hiện một tìm kiếm vét cạn, chúng ta cần xét 24x23=552 cặp khác
nhau. Phương pháp cuối cùng thích hợp nhất là việc xét tất cả các cặp hàm
logic cân bằng. Để biểu diễn một số phần tử điều khiển được có thể mô tả
chúng bằng cặp (S1,S2) bởi các biến đổi đơn giản nhất thể hiện bằng việc
lựa chọn để thay thế 2x2 sẽ tương ứng với chọn S1 khi v=0 và S2 khi v=1.
trong thực tế nghiên cứu và ứng dụng cho thấy tồn tại 24 dạng khác nhau
của các hộp S mà được quan tâm nhiều nhất được chỉ ra trong hình 2.4. Ví
dụ, phần tử chuyển mạch P
2/1
có thể biểu diễn như phần tử (a,e).
24
Hình 2.4 Cách nhìn nhận cụ thể của tất cả các kiểu thực hiện của hộp S 2x2.
Có 288 CE thoả mãn tiêu chuẩn 1 và 2. Tiêu chuẩn từ 1 đến 3 xác định
192 biến đổi khác nhau của các CE phi tuyến F
2/1
. 96 phần tử khác bao gồm các
phần tử P
2/1
là các tổ hợp tuyến tính ban đầu của các đầu ra f=y
1

y
2
là một hàm
logic tuyến tính. Tiêu chuẩn 1, 2 và 4 xác định 40 biến đổi khác nhau của các
phần tử điều chỉnh F
2/1
, 24 trong số đó thỏa mãn tiêu chuẩn 3. Có 40 dạng của
phần tử điều chỉnh được mô tả các ánh xạ đối hợp điều chỉnh được cơ sở.

Các đặc điểm vi sai (DC Differential characteristics sẽ xét cụ thể
trong phần 2.3.6) của các hộp F
m/n
được định nghĩa bởi cấu trúc mạng của
chúng và các đặc điểm vi sai của các hộp điều chỉnh cơ sở được sử dụng
như các khối xây dựng chính trong khi xây dựng các hộp F
m/n
. Như một
trường hợp tổng quát, vi sai thông qua các phần tử F
2/1
được chỉ ra trong
hình 2.3f. Các đặc điểm vi sai của phần tử điều khiển được có thể được chia
thành 6 nhóm (bảng 2.3). Đáng chú ý nhất chúng ta có hai kiểu của phần tử
điều khiển được phi tuyến, được biểu diễn bằng các phần tử Q
2/1
và R
2/1
.
Các phần tử điều khiển được tuyến tính (Z
2/1
) được chia vào trong 4 nhóm:
Z
2/1

, Z
2/1
’’
, Z
2/1
*

, Z
2/1
o
. Có thể thấy rằng các phần tử điều khiển được phi
25

×