Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
LỜI MỞ ĐẦU
Máy tính được phát minh vào năm 1942, lúc đó nó nằm ngoài tầm tay
của các tổ chức, cá nhân vì nó yêu cầu cao về chi phí, kích cỡ, năng lượng…
Ngày nay, máy tính đã rất phổ biến và người ta không sử dụng một máy tính đơn
lẻ nữa mà kết nối các máy tính với nhau nhằm tăng khả năng làm việc, trao đổi
và cập nhật thông tin. Các máy tính được kết nối với nhau được gọi là mạng.
Trên phạm vi toàn cầu người ta dung mạng Internet, ở mỗi quốc gia đều có
những mạng riêng của minh (Intranet) với rất nhiều những mạng mang tính bộ
phận( có thể là LAN( Local Area Network- Mạng cục bộ) hoặc WAN( Wide
Area Network- Mạng diện rộng) hoặc MAN(Metropolitan Area Network- Mạng
vùng Thành phố)). Nhiều dịch vụ của mạng như : thư điện tử, chuyển và nhận
tiền, thương mại điện tử… đã được sử dụng rộng rãi.
Khi tham gia vào mạng, vấn đề quan trọng đặt ra là làm thế nào để bảo
mật thông tin, dữ liệu. Thông tin trên mạng dù đang chuyển hay được lưu trữ đều
cần được bảo vệ. Hoặc các thông tin đó cần được giữ bí mật hoặc chúng phải cho
phép người ta kiểm tra để tin tưởng rằng chúng không bị sửa đổi so với dạng
nguyên thuỷ của mình.
Trước yêu cầu đó một số giải pháp kỹ thuật đã được xây dựng nhằm đảm
bảo tính an toàn dữ liệu tại nơi lưu trữ cũng như dữ liệu được truyền qua mạng.
Các giải pháp đó là người ta sử dụng các hệ mật. Có các hệ mật cổ điển như : mật
1
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
mã thay thế, mật mã dịch chuyển, mật mã Affine, mật mã Vigenere…, và các hệ
mật hiện đại như : mật mã khoá công khai RSA, chữ ký số, chuẩn mã dữ liệu
DES… Nhưng khi sử dụng các hệ mật để mã hoá dữ liệu cần phải quan tâm đến
độ an toàn của các hệ mật mà mình đã sử dụng.
Trong đề tài này tôi nghiên cứu về cách đánh giá độ an toàn của chuẩn mã
dữ liệu DES . Để kiểm tra đánh giá độ an toàn của DES ta có hai cách. Đó là
phương pháp tấn công DES và phương pháp đánh giá các tính chất của DES. Sự
- Năm 1988 chuẩn ANSI C chính thức được ban hành. Chuẩn này bao gồm
các mô tả về ngôn ngữ theo Brian W.Kernighan và Dennis M.Ritchie và quy định
các thư viện chuẩn của ngôn ngữ C, nhờ đó tăng tính khả chuyển của chương trình
viết bằng C.
- Trong thế giới máy vi tính có các hệ chương trình dịch C nổi tiếng như:
Turbo C, Borland C của Borland Inc; MSC, VC của Microsoft Corp; Lattice C của
Lattice.
I. 2. Các tính chất đặc trưng của ngôn ngữ
C là một ngôn ngữ lập trình vạn năng được dùng để viết các hệ điều hành
như UNIX cũng như các chương trình ứng dụng như quản lý văn bản, cơ sở dữ
liệu.
C là một ngôn ngữ có mức độ thích nghi cao, gọn và không nhất thiết phải
cần tới hợp ngữ.
C độc lập với bất kỳ kiến trúc máy đặc thù nào và với một chút thận trọng
vẫn dễ dàng viết được các chương trình “khả chuyển” (portability) tức là những
chương trình có thể chạy mà không cần phải thay đổi gì khi có sự thay đổi về phần
cứng.
C được sử dụng rộng rãi trong các lĩnh vực chuyên nghiệp vì đáp ứng
được các yêu cầu: hiệu quả cao trong soạn thảo chương trình và dịch ra mã máy;
tiếp cận trực tiếp với các thiết bị phần cứng.
C không đưa ra các phép toán xử lý trực tiếp các đối tượng hợp thành như
là đối tượng toàn vẹn; không xác định bất kỳ một phương tiện cấp phát bộ nhớ
nào khác ngoài cấp phát tĩnh, cấp phát động theo nguyên tắc xếp chồng cho các
biến cục bộ của hàm; không cung cấp cơ chế I/O, không có phương pháp truy
nhập tệp. Tất cả các cơ chế này được thực hiện bằng những lời gọi hàm trong thư
viện.
4
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
C đưa ra các kết cấu điều khiển cơ bản cần cho các chương trình có cấu
CÁC HỆ MẬT CỔ ĐIỂN
II.1 Các hệ mật
Mục tiêu cơ bản của mật mã là cho phép hai người, thường được đề cập
đến như Alice và Bob, liên lạc trên kênh không an toàn theo cách mà đối thủ như
Oscar không thể hiểu cái gì đang được nói. Kênh này có thể là đường điện thoại
hoặc máy tính chẳng hạn.
Định nghĩa : Hệ mật là một bộ năm thành phần (P,C,K,E,D) thoả mãn các
điều kiện sau:
1) P là tập hữu hạn các bản rõ có thể
2) C là tập hữu hạn các bản mã có thể
3) K là tập hữu hạn các khoá có thể
4) Với mỗi k ∈ K, tồn tại một quy tắc mã e
k
∈ E và một quy tắc giải mã
tương ứng d
k
∈ D. Mỗi e
k
: P → C và d
k
: C → P thoả mãn :
d
k
(e
k
(x)) = x với mỗi bản rõ x ∈ P
6
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
Điều kiện 4 là điều kiện chính. Nó có nghĩa là nếu bản rõ x ( plaintext )
i
= e
k
( x
i
), với 1≤ i≤ n, và bản mã thu được là dòng:
y = y
1
, y
2
,…, y
n
Alice gửi nó trên kênh, Oscar dù thấy bản mã này trên kênh không an
toàn cũng không thể xác định được bản rõ là gì. Khi Bob nhận được y = y
1
, y
2
,…,
y
n
, sẽ sử dụng d
k
để giả mã, thu được bản rõ ban đầu x = x
1
,x
2
,…,x
n
.
Rõ ràng, với x
k
là một phép hoán vị. Có nghĩa là, nếu tập các bản rõ và bản mã là
tương tự thì mỗi hàm mã hóa chỉ sắp xếp ( hay hoán vị ) lại các phần tử của tập
này. 7
Oscar
Alice Bộ mã hoá Bộ giải mã Bob
Kênh an toàn
Nguồn khoá
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
X y y x
k k
Sau đây là các hệ mật mà Alice và Bob có thể dùng.
II.1.1 Mật mã dịch chuyển
Định nghĩa : Cho P = C = K = Z
26
Với 0 ≤ k ≤ 25, xác định :
e
k
(x) = x + k mod 26
và d
k
(y) = y + k mod 26 với x,y ∈ Z
26
V í dụ : Giả sử khoá k = 11 và bản rõ là :
WEWILLMEETATMIDNIGHT
Trước hết, phải số hoá nó thu được như sau
π
(y) = π
-1
(y) với π
-1
là hoán vị ngược của π
V í dụ :
π =
e
π
(a) = π(a) = x
e
π
(b) = π(b) = n
π
-1
=
d
π
(x) = π
-1
(x) = a và d
π
(n) = π
-1
(n) = b
II.1.3 Mật mã Affine
Mật mã dịch chuyể là trường hợp đặc biệt của mật mã thay thế. Mật mã
26
và K = {(a,b) ∈ Z
26
* Z
26
: (a,26) = 1}
với k = (a,b) ∈ K, xác định :
e
k
(x) = ax + b mod 26 và d
k
(y) = a
-1
(y - b) mod 26 với x,y ∈ Z
26
II.1.4 Mật mã Vigenere
Mật mã Vigenere là mật mã đa biểu, tức là một ký tự mã có thể được ánh
xạ thành nhiều ký tự khác.
Định nghĩa : Cho m là số nguyên dương cố định, P = C = K = (Z
26
)
m
với
khoá K = (k
1
,k
2
,….,k
m
), chúng ta xác định :
1
- k
1
,y
2
- k
2
,….,y
m
- k
m
)
tất cả các hoạt động được tiến hành trong Z
26
V í dụ : m = 6, khoá k = CIPHER = (2,8,15,7,4,17)
Thông báo : THISCRIPTOSYSTEMISNOTSECURE
Ta chuyển thành số :
10
19 7 8 18 2 17 24 15 19 14 19 18 19 4
2 8 15 7 4 17 2 8 15 7 4 2 8 15
21 15 23 25 6 8 0 23 8 21 23 20 1 19
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
2 8 18 13 14 19 18 4 20 17 4
7 4 17 2 8 15 7 4 2 8 15
19 12 19 15 22 8 25 8 22 25 19
Đưa về chữ :
V P X Z G I A X I V W P U B T T M J P W I Z I T W Z T
II.1.5 Mật mã hoán vị
Ý tưởng của mật mã hoán vị là giữ các kí tự trên bản rõ không thay đổi,
,….,y
π
(m)
)
với π
-1 là
hoán vị ngược của π
Ví dụ : Giả sử m = 6 và khoá là hoán vị sau:
π =
và hoán vị ngược của π
π
-1
=
Thông báo : H O O F C H I S M I N H
11
1 2 3 4 5 6
3 5 1 6 4 2
1 2 3 4 5 6
3 6 1 5 2 4
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
Trước tiên gom thành nhóm 6 phần tử : H O O F C H I S M I N H
x
1
= h, x
2
= o, x
3
= o, x
4
theo cách :
y = y
1
y
2
… = e
z1
(x
1
) e
z2
(x
2
)…
Mật mã dòng hoạt động như sau : giả sử k là khoá và x
1
x
2
… là dòng rõ, f
i
là hàm của k và i là một đặc trưng rõ.
z
i
= f
i
(k,x
1
,….,x
i-1
) (x
,…
Nếu z
i
= k với mọi i thì ta có thể nghĩ mật mã khối như trường hợp đặc biệt
của mật mã dòng .
Sau đây là một số trường hợp đặc biệt quan trọng của mật mã dòng :
- Mật mã đồng bộ z
i
= f
i
(k) với i = 1,2,…
- Mật mã tuần hoàn với chu kỳ d : z
i
+d = z
i
, ∀i ≥ 1
Mật mã dòng được chú ý nhiều hơn cả là trường hợp P = C = Z
2
. Khi đó
phép mã hoá và giải mã là cộng theo modulo 2.
e
2
(x) = x+z mod 2
d
2
(y) = y- z mod 2
- Mật mã tự động
12
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
và chuyển thành chữ : P H I Z G W V B T L
Với bản mã này và k = 8, ta giải mã như sau :
Chuyển bản mã thành dãy số và trừ lần lượt
15 7 8 25 6 22 21 1 19 11
8 7 0 8 17 15 7 14 13 6
7 0 8 17 15 7 14 13 6 5
chuyển dãy số thành dãy chữ : H A I R P H O N G F
Trên đây là các hệ mật cổ điển thường được dùng để mã hoá thông tin khi
muốn gửi đi trên các kênh không an toàn hay thông tin đang được lưu trữ cố định.
13
Nghiờn cu, v thc hin mt s test ỏnh giỏ an ton ca DES
CHNG III
CHUN M D LIU DES
( DATA ECRYPTION STANDARD )
Chun mó d liu ( Data Ecryption Standard ) c u ban tiờu chun quc
gia Hoa K ( the National Bureau ũ Standard ) chp nhn v c cụng b ln
u
tiờn trờn cụng bỏo liờn bang ngy 17 03 1975. Sau cỏc cuc tho lun cụng
khai, DES c chp nhn nh cho cỏc ng dng bo mt vo ngy 1501- 1977.
DES tr thnh mt h bo mt c s dng rng rói nht trờn th gii.
III.1 Mụ t DES
DES mó hoỏ mt dũng bit rừ x cú di 64 vi k l dũng 56 bit, a ra bn
mó y cng l mt dóy bit cú di 64.
x = 64, y = 64,k = 56
III.1.1 Thuật toán mã hoá
Gồm ba giai đoạn :
14
IP
R
i
với 1 i 16, theo quy tắc sau :
L
i
= R
i-1
R
i
= L
i-1
^ f( R
i-1
, K
i
)
Dấu (^) thể hiện phép toán hoặc loại trừ hai dãy bit, f là một hàm mà
chúng ta sẽ đề cập đến sau, k
i
là những dãy dài 48 bit đợc tạo từ khoá K bởi thuật
toán riêng.
p dng phộp hoỏn v ngc IP
-1
cho L
16
R
16
ta tớnh c bn mó y :
y = IP
-1
f
+
k
i
Nghiờn cu, v thc hin mt s test ỏnh giỏ an ton ca DES
III.1.2 Hàm f( A, J )
Đầu vào của hàm f là đối số A, một dãy 32 bit, và đối số thứ hai là J, là dãy
48 bit, kết quả thu đợc là dãy có độ dài 32 bit. Các bớc đợc thực hiện :
a. Mở rộng A từ 32 bit thành 48 bit
theo hàm mở rộng E. E( A ) gồm 32 bit
của A, đợc hoán vị theo cách cụ thể và
với 16 bit của các bit xuất hiện hai lần.
b. Tính B = E( A ) ^ J và kết quả B đợc
tách thành các khối 6 bit liên tiếp.
B = B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
b
6
xác định biểu diễn nhị phân của r là chỉ số
dòng của S
j
( 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 là chỉ
số cột của S
j
( 0 c 15 ). Sau đó, S
i
( B
j
) là số nằm trong toạ độ ( r, C ) gồm 4 bít.
Ta có kí hiệu : C
j
= S
j
( B
j
), với 1 j 8
d. Dòng bit C = C
1