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

Nghiên cứu và thực hiện 1 số TEST để đánh giá độ an toàn của DES

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 (276.97 KB, 39 trang )

Nghiên cứu, và thực hiện một số test để đánh giá độ an tồ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 ngồi tầm tay
của các tổ chức, cá nhân vì nó 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 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 tồ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ã khố 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 tồ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ự
khác nhau giữa hai phương pháp này là một phương pháp thì tấn cơng trực tiếp
vào DES, nếu phá vỡ DES thì ta có thể nói rằng DES khơng an tồn và ngược lại;
phương pháp đánh giá tính chất thì kiểm tra các tính chất của DES, nếu thoả mãn
điều kiện thì có thể nói là an tồn và ngược lại. Và tơi đi sâu nghiên cứu phương
pháp đánh giá các tính chất của DES.

2


Nghiên cứu, và thực hiện một số test để đánh giá độ an tồn của DES

Chương I
TỔNG QUAN VỀ NGƠN NGỮ C
I.1. Lịch sử hình thành và phát triển
Ngơn ngữ C do Brian W.Kernighan và Dennis M.Ritchie phát triển vào
đầu những năm 70 tại phịng thí nghiệm BELL ( Hoa Kỳ) với mục đích ban đầu là
để phát triển hệ điều hành UNIX. Bối cảnh ra đời xuất phát từ nhu cầu cần phải có
một ngơn ngữ lập trình hệ thống thay thế cho hợp ngữ (Assembly) vốn nặng nề,
độ tin cậy thấp và khó chuyển đổi giữa các hệ máy tính khác nhau.
Ngồi việc C được dùng để viết hệ điều hành UNIX, người ta nhanh chóng
nhận ra sức mạnh của C trong việc xử lý các vấn đề hiện đại của tin học: xử lý số,
văn bản, cơ sở dữ liệu, lập trình hướng đối tượng. C đã trở thành một chuẩn mặc
nhiên.
Liên quan đến sự hình thành và phát triển của ngơn ngữ, có thể kể đến một
số sự kiện sau:
- Năm 1978, cuốn giáo trình dạy lập trình bằng ngơn ngữ C “The C

programming langguage” do chính 2 tác giả của ngơn ngữ Brian W.Kernighan và
Dennis M.Ritchie biên soạn đã được xuất bản và được phổ biến rộng rãi.
- Năm 1983 một tiểu ban của viện tiêu chuẩn quốc gia Mỹ (ANSI) được
thành lập nhằm đề xuất ra một chuẩn cho ngôn ngữ C.

3


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

- 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 tồ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
trúc như: nhóm tuần tự các câu lệnh, chọn quyết định (if); chu trình với phép kiểm
tra kết thúc ở đầu (for, while), hoặc ở cuối (do...while); và việc lựa chọn một trong
các trường hợp có thể (switch).
C cung cấp con trỏ và khả năng định địa chỉ số học. Các đối của hàm được
truyền bằng cách sao chép giá trị đối và hàm được gọi không thể thay đổi được giá
trị của đối hiện tại.
C cho phép hàm được gọi đệ quy và các biến cục bộ của hàm sẽ “tự động”
sinh ra hoặc tạo mới với mỗi lần gọi mới. Các định nghĩa hàm không được lồng
nhau nhưng các biến có thể được khai báo theo kiểu cấu trúc khối. Các hàm có thể
dịch tách biệt. Các biến có thể trong hoặc ngồi hàm. Hàm chỉ
biết được các biến ngoài trong cùng một tệp gốc, hoặc biến tổng thể extern. Các
biến tự động có thể đặt trong các thanh ghi để tăng hiệu quả, nhưng việc khai báo
thanh ghi chỉ là một hướng dẫn cho chương trình dịch và khơng liên quan gì đến
các thanh ghi đặc biệt của máy.
C khơng phải là một ngơn ngữ có kiểu mạnh mẽ theo nghĩa của PASCAL
hoặc ALGOL/68. Nó tương đối thoải mái trong chuyển đổi dữ liệu nhưng không
tự động chuyển các kiểu dữ liệu một cách phóng túng như của PL/I. Các chương

trình dịch hiện có đều khơng đưa ra cơ chế kiểm tra chỉ số mảng, kiểu đối số…
Mặc dù vậy, C vẫn còn tồn tại một số nhược điểm như một số phép tốn có
thứ tự thực hiện chưa đúng; một số phần cú pháp có thể làm tốt hơn; hiện có nhiều
phiên bản của ngơn ngữ, chỉ khác nhau ở một vài chi tiết.
Tóm lại, C vẫn tỏ ra là một ngôn ngữ cực kỳ hiệu quả và đầy sức diễn cảm
đối với nhiều lĩnh vực ứng dụng lập trình. Hơn nữa, ta biết rằng hệ mật chuẩn hay
chữ ký số luôn cần một bộ số rất lớn tức là kích cỡ của khơng gian khoá rất lớn

5


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

khoảng trên 300 số thập phân. Do đó, ngơn ngữ C đủ mạnh để có thể đáp ứng
được điều đó.

CHƯƠNG II
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 tồ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 khố có thể
4) Với mỗi k ∈ K, tồn tại một quy tắc mã ek ∈ E và một quy tắc giải mã
tương ứng dk ∈ D. Mỗi ek : P → C và dk : C → P thoả mãn :

dk(ek(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 )
được mã hố sử ek và sau đó bản mã ( ciphertext ) kết quả được giải mã sử dụng
dk thu được kết quả là bản rõ nguyên bản x.
Giả sử, Alice muốn gửi cho Bob một thông báo nào đấy mà không cho
người khác xem, thông báo đó có thể là bài tiếng Anh, dữ liệu sơ v.v…có cấu
trúc tuỳ ý. Thơng tin đó được gọi là bản rõ.
Alice và Bob phải thống nhất chọn một hệ mật và chọn khoá ngẫu nhiên
k∈ K. Họ làm điều này một cách an toàn, chẳng hạn khi họ ở cùng một chỗ và
không bị Oscar quan sát hoặc họ dùng kênh an tồn khi ở xa nhau.
Sau đó, giả sử Alice muốn gửi thông báo cho Bob trên kênh khơng an
tồn. Thơng báo đó là dịng:
x = x1, x2,…, xn với n ≥ 1, xi ∈ P, 1≤ i≤ n
Mỗi xi được mã hoá sử dụng quy tắc e k được định rõ bởi khố định trước
K. Từ đó, Alice tính:
yi = ek( xi), với 1≤ i≤ n, và bản mã thu được là dòng:
y = y1, y2,…, yn
Alice gửi nó trên kênh, Oscar dù thấy bản mã này trên kênh khơng an
tồn cũng khơng thể xác định được bản rõ là gì. Khi Bob nhận được y = y1, y2,…,
yn, sẽ sử dụng dk để giả mã, thu được bản rõ ban đầu x = x1,x2,…,xn.
Rõ ràng, với x1 ≠ x2 thì ek(x1) ≠ ek(x2). Nếu y = ek(x1)= ek(x2) khi x1 = x2 thì
Bob khơng biết được y phải gải mã cho x1 hay x2. Chú ý rằng P = C thì mỗi hàm
mã hố ek là một phép hốn vị. Có nghĩa là, nếu tập các bản rõ và bản mã là
Oscar

tương tự thì mỗi hàm mã hóa chỉ sắp xếp ( hay hốn vị ) lại các phần tử của tập
này.
Alice

Bộ mã hố

Kênh an tồn
7
Nguồn khoá

Bộ giải mã

Bob


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 = Z26 Với 0 ≤ k ≤ 25, xác định :
ek(x) = x + k mod 26
và dk(y) = y + k mod 26 với x,y ∈ Z26
Ví dụ : Giả sử khoá k = 11 và bản rõ là :
WEWILLMEETATMIDNIGHT
Trước hết, phải số hố nó thu được như sau
22
0

4
19

22
12

8
8

11
3

11
13

12
8

4
6


4
7

19
19

Tiếp theo, cộng 11 vào mỗi giá trị, rút gọn mỗi tổng theo modulo 26
7
11

15
4

7
23

19
19

22
14

22
24

23
19

15

17

Cuối cùng chuyển dãy số thành dãy chữ
HPHTWWXTPELEXTOYTRSE

8

15
18

4
4


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

Để giải mã, Bob thực hiện theo trình tự ngược lại. Trước hết chuyển bản
mã thành dãy các số, tiếp theo trừ mỗi giá trị cho 11( rút gọn cho modulo 26) và
cuối cùng chuyển dãy số thành dãy chữ.
Một hệ mật được sử dụng trong thực tế, nó phải thoả mãn hai tính chất sau:
1) ek và dk khi tác động vào x hoặc y là có hiệu quả tính tốn
2) Một đối thủ khi có bản mã y, sẽ khơng thể xác định khoá k được sử dụng hoặc
bản rõ x
II.1.2 Mật mã thay thế
Định nghĩa : Cho P = C = Z26 , K gồm tất cả các hoán vị trên tập 26 phần tử
từ 0,1,…,25. Với mỗi hoán vị π ∈ K, xác định :
eπ(x) = π(x) và dπ(y) = π-1(y) với π-1 là hốn vị ngược của π
Ví dụ :
π=


Abcdefghij
Xnyahpogzq

Klmnopqrst
Wbtsflrcvm

Uvwxyz
Uekjdi

eπ(a) = π(a) = x
eπ(b) = π(b) = n
Abcdefghij
Dlryvohezx

Klmnopqrst
Wptbgfjqnm

Uvwxyz
Uskaci

π-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ã
affine cũng là một trường hợp của mật mã thay thế.
Trong mật mã affine, hàm mã có dạng :

9



Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

với a,b ∈ Z26

E(x) = ax + b mod 26
Hàm này được gọi là hàm affine

Khi a = 1 ta được mật mã dịch chuyển.
Để giải mã được, hàm affine phải song ánh, nghĩa là với mọi y ∈ Z26 ,
phương trình ax + b = y (mod 26) phải có nghiệm duy nhất. Đồng dư thức này
tương đối với : ax = y – b (mod 26). Phương trình này có nghiệm duy nhất khi và
chỉ khi (a,26) = 1.
Để tìm nghiệm x, trước tiên ta tìm số a-1 ∈ a26 thoả mãn : a.a-1 = 1 mod 26 .
Khi đó d(y) = a-1(y - b) mod (26)
Định nghĩa : Cho P = C = Z26 và K = {(a,b) ∈ Z26 * Z26 : (a,26) = 1}
với k = (a,b) ∈ K, xác định :
ek(x) = ax + b mod 26 và dk(y) = a-1(y - b) mod 26 với x,y ∈ Z26
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 = (Z26)m với
khoá K = (k1,k2,….,km), chúng ta xác định :
ek(x1,x2,….,xm) = (x1+k1,x2+k2,….,xm+km)
và dk(y1,y2,….,ym) = (y1- k1,y2- k2,….,ym- km)
tất cả các hoạt động được tiến hành trong Z26
Ví dụ : m = 6, khố k = CIPHER = (2,8,15,7,4,17)
Thơng báo :

THISCRIPTOSYSTEMISNOTSECURE


Ta chuyển thành số :

19
2
21

7
8
15

8
15
23

18
7
25

2
4
6

17
17
8

24
2
0


15
8
23
10

19
15
8

14
7
21

19
4
23

18
2
20

19
8
1

4
15
19



Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

2
7
19

8
4
12

18
17
19

13
2
15

14
8
22

19
15
8

18
7
25


4
4
8

20
2
22

17
8
25

4
15
19

Đưa về chữ :
VPXZGIAXIVWPUB

TTMJPWIZITWZT

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,
nhưng thay đổi vị trí của chúng bằng cách sắp xếp lại
Định nghĩa : Cho m là số nguyên dương cố định, P = C = (Z26)m và K gồm
tất cả các hoán vị của {1,2,….,m}. Với mỗi khoá π, xác định
eπ(x1,….,xm) = (xπ(1),….,xπ(m))
và dπ(y1,….,ym) = (yπ (1),….,yπ (m))
với π-1 là hốn vị ngược của π

Ví dụ : Giả sử m = 6 và khoá là hoán vị sau:
1
3

2
5

3
1

4
6

5
4

6
2

π=

và hoán vị ngược của π
1
3

2
6

Thông báo :


3
1

4
5

5
2

6
4

π-1 =

HOOFCHISMINH

11


Nghiên cứu, và thực hiện một số test để đánh giá độ an tồ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
x1 = h, x2 = o, x3 = o, x4 = f, x5 = c, x6 = h
khi đó nhóm thứ nhất được mã thành x3 x5 x1 x6 x4 x2 = O C H H F O
tương tự, nhóm thứ hai là : M N I H I S
Vậy bản mã là :

OCHHFO MNIHIS

II.1.6 Mật mã dịng

Ý tưởng cơ bản là sinh dịng khố z = z 1 z2 … và mã dòng rõ x = x1 x2 …
theo cách :
y = y1 y2… = ez1(x1) ez2(x2)…
Mật mã dòng hoạt động như sau : giả sử k là khoá và x1 x2 … là dòng rõ, fi
là hàm của k và i là một đặc trưng rõ.
zi = fi(k,x1,….,xi-1) (xi được chon trước của hai bên)
yi = ezi(xi)

i = 2,3,…

Do đó, để mã dịng rõ x1 x2 … ta tính liên tiếp : z1,y1,z2,y2,… Việc giải mã
được làm tương tự z1,x1,z2,x2,…
Nếu zi = 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ộ zi = fi(k) với i = 1,2,…
- Mật mã tuần hoàn với chu kỳ d : zi+d = zi , ∀i ≥ 1
Mật mã dòng được chú ý nhiều hơn cả là trường hợp P = C = Z2. Khi đó
phép mã hoá và giải mã là cộng theo modulo 2.
e2(x) = x+z mod 2
d2(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

Định nghĩa : P = C = K = Z26, z1 = k,zi = xi-1 (i≥2)
với 0 ≤ z ≤ 25, xác định :

ez(x) = x+z mod 26
dz(y) = y- z mod 26 với x,y ∈ Z26
Ví dụ : k = 8 , thơng báo là :

HAIRPHONGF

Trước tiên, chuyển thông báo rõ thành dãy số ngun
7

0

8

17

15

7

14

13

6

5

Dịng khố như sau :
8


7

0

8

17

15

7

14

13

6

5

Cộng dãy khố và dãy rõ : yi = xi + zi mod 26, với i= 1,2,… ta được
15

7

8

25

và chuyển thành chữ :


6

22

21

1

19

11

PHIZGWVBTL

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

14

13

5

chuyển dãy số thành dãy chữ :

7

6

HAIRPHONGF

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 tồn hay thơng tin đang được lưu trữ cố định.

13


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

CHƯƠNG III
CHUẨN MÃ DỮ LIỆU DES
( DATA ECRYPTION STANDARD )
Chuẩn mã dữ liệu ( Data Ecryption Standard ) được uỷ ban tiêu chuẩn quốc
gia Hoa Kỳ ( the National Bureau ò Standard ) chấp nhận và được công bố lần

đầu
tiên trên công báo liên bang ngày 17 – 03 – 1975. Sau các cuộc thảo luận công
khai, DES được chấp nhận như cho các ứng dụng bảo mật vào ngày 15–01- 1977.
DES trở thành một hệ bảo mật được sử dụng rộng rãi nhất trên thế giới.

III.1 Mơ tả DES
DES mã hố một dịng bit rõ x có độ dài 64 với k là dịng 56 bit, đưa ra bản
mã y cũng là một dãy bit có độ dài 64.
x = 64, y = 64,k = 56
III.1.1 Thuật toán mà hoá
Gồm ba giai đoạn :

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

14

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


Nghiên cứu, và thực hiện một số test để đánh giá độ an tồn của DES


a. Cho b¶n râ x, ta tinh đợc x0 qua việc
hoán vị các bit của x theo hoán vị đầu IP :
x0 = IP( x ) = L0R0
L0 là 32 bit đầu tiên của x0 còn R0 là 32 bit còn lại, và IP là hoán vị đầu cố định.

b. Lặp 16 vòng :
Chúng ta tÝnh LiRi víi 1 ≤ i ≤ 16, theo quy t¾c sau :
Li = Ri-1
Ri = Li-1 ^ f( Ri-1, Ki )
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, ki 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 hốn vị ngược IP-1 cho L16R16 ta tính được bản mã y :
y = IP-1( L16 R16 ) , chú ý đảo ngược vị trí của L16 và R16.

IP

Li-1

-1

40 8 48 16 56 24 64 32

Ri-1
f

39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 44 13 53 21 60 29


+

36 4 43 12 52 20 59 28
35 3 42 11 51 19 58 27

Li

34 2 41 10 50 18 57 26
33 1 40

9 49 17 56 25

15

Ri

ki


Nghiên cứu, và thực hiện một số test để đánh giá độ an tồn của 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

E

theo hµm më réng E. E( A ) gåm 32 bit


32 1

cña A, đợc hoán vị theo cách cụ thể và

2

3

4

5

4

5 6

7

8

9

8

9 10 11 12 13

víi 16 bit cđa c¸c bit xt hiƯn hai lÇn.

12 13 14 15 16 17


b. TÝnh B = E( A ) ^ J và kết quả B đợc

16 17 18 19 20 21

tách thành các khối 6 bit liªn tiÕp.

20 21 22 23 24 25
24 25 26 27 28 29

B = B1 B2 B3 B4 B5 B6 B7 B8

28 29 30 31 32 1

c. Bíc tiÕp theo sử dụng 8 hộp S :S1,.,S8. Mỗi hộp Si là một mảng hai chiều 4*16,
mỗi dòng chứa các giá trị từ 0 ữ 15. Ta có đầu vào Bj là mét d·y 6 bit
Bj = b1 b2 b3 b4 b5 b6 b7 b8. hai bit b1 b6 xác định biểu diễn nhị phân của r là chỉ số
dòng của Sj ( 0 ≤ r ≤ 3), vµ 4 bit b2 b3 b4 b5 xác định biểu diễn nhị phân của C lµ chØ
sè cét cđa Sj ( 0 ≤ c 15 ). Sau đó, Si ( Bj ) là số nằm trong toạ độ ( r, C ) gồm 4 bÝt.
Ta cã kÝ hiÖu : Cj = Sj ( Bj ), víi 1 ≤ j ≤ 8
d.

Dßng bit C = C1C8 với độ dài 32 bit đợc đổi chỗ theo hoán vị P , kết quả

dÃy P( C ) chính lµ f( A, J ).
F( A, J ) = P( C )

16


Nghiên cứu, và thực hiện một số test để đánh giỏ an ton ca DES


Hàm f đợc thể hiện trong hình dới đây :
J

A
E
F(A)

+
B1

S1

B2

B3

S2

C1

S3

C2

B4

B5

S4


C3

C4

S5

C5

C6

B6

B7

S6

C7

P

F( A, J )

8 hp S và hoán vị P :
S1

17

S7


C8

B8

S8


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
14

4 13 1

0 15
4

2 15 11 8

7 4 14

1 14 8 13

15 12

8 2

3 10

2 13 1 10

6 12 5


9

0

7

6 12 11 9

5

3

8

7 3 10

5

0

6

2 11 15 12

9

9

1 7


5 11

3 14 10

9

7

2 13 12 0

2 8 14 12

0

1 10

4 13 1

8 12 6

9 3

6

0

4

0


6 13

S2
15

1

8 14

6 11 3 4

3 13

4

0 14

7 11 10

13

7 15

8 10

1

5


3 15 4 2 11

7 12

5 10

6 9 11

5

2 15

5 14

9

4

12

8

S3
10

0

9 14 6

3 15 5


13

7

0

9 3

4

13

6

4

9 8 15

3 10 13

0 6

9

1 13 12 7 11

6 10 2

8


5 14 12 11

15

1

3

1

2 12 5 10

14

7

8

0 11

7 4 15 14

3 11

5

2 12

S4

7 13

4

3

0

13

8 11

5

6 15

10

6

0 12 11

9

3 15 0

6 10

6


9 10 1

2

8

0

3 4

7

2 12

1 10 14

9

7 13 15

1

3 14

5

4

9


4

5 11 12

7 2 14

3 15 13

0 14

9

3

9

8

6

6

3

0 14

9 10

4


5

1 13

8

5 11 12 4 15
2

8

S5
2 12

4

14 11

2 12

4

1 11 10 13

11

2

8 12


1

7

7 10 11

6

8

5

4

1

5

0 15 10

7 13

1 14

7

8 15 9 12

2 13


6 15

0

5

S6

18

3


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
12

1 10 14

10 15

9

2

6

8

0 13


9

5

6

1 13 14

0 11

3

8

3

7

0

4 10

1 13 11

6

1

6


4

2

7 12

9 14 15

5

2

8 12

2 12

9

5 15 10 11 14

4

3

3

4 14

7


7

0

5 11

8 13

S7
4 11

2 14 15

8 13

3 12

13

0 11

4

9

1 10 14

1

4 11 13 12


3

9

8

1

4 10

7

3

9

7

5 10

6

1

5 12

7 14 10 15

6 11 13


7

0

2 15

8

6

0

5

9

2

15 14

2

3 12

6

8

5


0

1 10

9

3 14

5

6 11

S8
13

2

8

4

1 15

3

8 10

7 11


4

1 14

2

6 15 11

0 12

7

3

7

4 12

5

0 14

9

2

1

9 12


14

2

6 10 13 15 3

5

8

7

4 10

0

8 13 15 12

9

0

6 11

vị

P

:


7 20 21

29 12 28 17

III.1.3 Lợc đồ tạo hệ thống khoá

1 15 23 26

Cuối cùng ta cần mô tả sự tính

5 18 31 10
2

5

Hoán

P
16

3

8 24 14

32 27

3

19 13 30


toán lợc đồ khoá từ khoá K. Khoá là một

9
6

22 11

4

dÃy 64 bit với 56 bit đầu vào và 8 bit là
các bit kiểm tra (là các bit ở vị trÝ thø 8,

25

16,24,32, 48, 56, 64). C¸c bit kiĨm tra này sẽ đợc bỏ qua trong quá trình tạo khoá.
Cho 56 bit này hoán vị theo bảng PC-1 ta sẽ tìm đợc C0D0 với C0 là 28 bit đầu tiên
của PC-1, D0 là 28 bit còn lại.
PC-1( K ) = C0D0, víi i = 1÷16 ta tÝnh

19


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

Ci = LSi( Ci- 1)
Di = LSi( Di-1 )
LSi thể hiện phép dịch trái quay vòng một hoặc hai bit, phụ thuộc và giá trị
của i, dịch một bit nếu i = 1,2,9,16 và dịch hai bit với các giá trị còn lại của i. K i đợc
tính theo CiDi qua bảng hoán vị PC-2
Ki = PC-2( CiDi )

Ta có các bảng PC-1 và PC-2 :
PC-1

PC-2

57 49 41 33 25 17 9

14 17 11 24 1 5

1 58 50 42 34 26 18

3 28 15 6 21 10

10 2 59 51 43 35 27

23 19 12 4 26 8

19 11

16

3 60 52 44 36

7 27 20 13 2

63 55 47 39 31 23 15

41 52 31 37 47 55

7 62 54 46 38 30 22


30 40 51 45 33 48

14 6 61 53 45 37 29

44 49 39 56 34 53

21 13

46 42 50 36 29 32

5 28 20 12 4

Nh vËy ta ®· cã một thuật toán hoàn chỉnh về mà hoá dữ liệu theo tiªu chn
DES.

III.2 Giải mã DES
Tương tự như mã hố, để giải mã một dãy kí tự đã bị mã hố ta cũng làm
theo trình tự các bước như trên. Tuy nhiên, hệ thống khoá lúc này đã được tạo
theo chiều ngược lại.
III.2.1 Thuật toán giải mã

20


Nghiên cứu, và thực hiện một số test để đánh giá độ an tồn của DES

Có bản mã y và khoá K
y0 = IP(y) = R0’ L0’ = R16L16


với i = 1,2,….,16

Thực hiện :
Li’ = R’i-1 và Ri = L’i-1 ^ f( R’i-1, k17-i )
x0 = ( R’16, L’16 )
 x = IP-1( x0 )
III.2.2 Chứng minh thuật tốn
Có bản mã y: y0 = IP(y) = IP(IP-1(R16L16)) = R16L16 =L’0 R’0
Vậy

L’0 = R16, R’0 = L16, với i = 1
L’1 = R’0 = L16 = R15
R’1 = L’0 ^ f(R’0,k16) = R16 ^ f(L16,k16) = L15 ^ f(R15,k16) = L15

Tóm lại : L’1 = R15, R’1 = L15
Tương tự như vậy cho đến khi I = 16, ta sẽ có
L’16 = R’15 = L1 = R0
R’16 = L’15 ^ f(R’15,k1) = R’1 ^ f(L1,k1) = L0 ^ f(R0,k1) ^ f(R0,k1) = L0
L’16 = R0, R’16 = L0
x = IP-1(R’16L’16) = IP-1(R0L0) = IP-1(x0)
Từ đó ta thấy, thuật tốn giải mã chỉ khác với thuật toán mã hoá ở chỗ tạo
hệ thống khố. Nếu mã hố tạo từ k1,….,k16 thì giải mã tạo hệ thống khoá từ k16,
….,k1

III.3 DES trong thực tế
III.3.1 Ứng dụng

21



Nghiên cứu, và thực hiện một số test để đánh giá độ an tồn của DES

Mặc dù việc mơ tả DES khá dài thì DES được thực hiện rất hiệu quả trong
cả phần cứng lẫn phần mềm.
Những thực hiện phần cứng hiện thời có thể đạt được tốc độ mã hố cự
nhanh. Hãng Digital Equipment Corporation thơng báo tại CRYTO’92 rằng họ
vừa chế tạo được một chip với 50K transistors có thể mã hố với tốc độ 1Gb/s nhờ
sử dụng đồng hồ tốc độ là 250MHz.
Trong năm 1991, có 45 phần cứng và chương trình cài sẵn thi hành DES đã
được Uỷ ban tieuu chuẩn quốc gia Mĩ ( the National Bureau of Standards ) tin cậy.
Một ứng dụng quan trọng của DES là ứng dụng cho văn bản giao dịch ngân hàng
sử dụng các tiêu chuẩn được hiệp hội các ngân hàng Mĩ phát triển, DES được sử
dụng để mã hoá các số nhận dạng cá nhân ( PINs ) và văn bản về tàI khoản được
máy thu ngân thực hiện ( ATMs ).
III.3.2 Các mẫu hoạt động của DES
Đầu vào của DES chỉ có 8 byte, vậy mà văn bản cần mã hố lại có thể rất
dài, cỡ vài Kbyte chẳng hạn. Để giải quyết vấn đề này, người ta đẫ đề ra bốn mẫu
hoạt động cho DES là : Electronic CodeBook mode ( ECB ), Cipher FeedBack
mode ( CFB ), Cipher Block Chaining mode ( CBC ) và Output FeedBack mode
( OFB ).
+ ECB :
Đây là việc sử dụng bình thường mật mã khối. Trước hết chia dãy ký tự
trong thông báo thành các khối 8 ký tự liên tiếp x1,x2,…, mỗi xi đều được mã bởi
cùng khoá k, cuối cùng được một dãy các khối mã 8 bit là y1,y2,… Việc giải mã
được tiến hành theo trình tự ngược lại.
+ CBC :

22



Nghiên cứu, và thực hiện một số test để đánh giá độ an tồn của DES

Ta cũng chia thơng báo thành những khối 8 byte như trên để được x 1,x2,…
Cho IV là vector khởi điểm dàI 64 bit ( 8 byte ). Bắt đầu là việc gán y0 = IV, sau
đó tính yi = ek(yi-1 ^ xi), với i = 1,2,…
Quá trình giải mã như sau : y0 = IV
xi = yi-1 ^ dk(yi), với i = 1,2,…
+ OFB và CFB :
Ý tưởng chính là sinh ra một dịng khố, sau đó XOR nó với thơng báo như
mật mã dòng.
- Đối với OFB, cụ thể như sau :
z0 = IV, zi = ek(zi-1), i = 1,2,…
yi = xi ^ zi, i = 1,2,…
Việc giải mã như đối với mật mã dịng.
- Đối với CFB, có sự khác nhau nhất định
y0 = IV, zi = ek(y0)
yi = xi ^ zi, zi+1 = ek(yi), i= 1,2,…
Việc giải mã thực hiện như sau :
y0 = IV, z1 = ek(y0)
xi = yi ^ zi, zi+1 = ek(yi), i= 1,2,…
ECB và OFB : việc thay đổi một khối 64 bit rõ xi khiến cho khối mã yi
tương ứng cũng thay đổi theo, nhưng các khối mã khác khơng bị ảnh hưởng.
Trong một vài hồn cảnh, đây là một tính chất tốt, chẳng hạn OFB thường được
dùng để mã thông tinh truyền qua vệ tinh.
CBC và CFB : khối rõ xi bị thay đổi thì yi và tất cả các khối mã tiếp theo sẽ
bị ảnh hưởng. Tính chất này có nghĩa là CBC, CFB có ích cho mục đích xác thực.

23



Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

CHƯƠNG IV
ĐÁNH GIÁ ĐỘ AN TỒN
Khi ta mã hố thơng tin bằng các hệ mật khơng có nghĩa là ta đã n tâm
thơng tin đó không bị mất mát, sai lệch so với ban đầu khi lưu trữ hay truyền qua
mạng. Mà ta phải có biện pháp kiểm tra xem hệ mật đó có an tồn khơng. Đối với
mã chuẩn dữ liệu DES cũng vậy, khi mã hố các thơng tin đồng thời ta cũng phải
kiểm tra độ an tồn của nó. Có hai cách để kiểm tra độ an tồn của DES, đó 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. Tuy
nhiên trong đề tài nay tập trung nghiên cứu phương pháp đánh giá các tính chất
của DES để kiểm tra độ an toàn.

IV.1 Phương pháp lượng sai tấn cơng DES 3 vịng
Có nghĩa là ta tấn cơng vào DES, nếu phá vỡ DES thì có nghĩa là khơng an
tồn.
Phương pháp lượng sai tấn cơng DES là phương pháp nổi tiếng do Biham
và Shamir giới thiệu. đây là sự tấn công bản rỗ lựa chọn. Mặc dù nó cịn địi hỏi

24


Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES

khá nhiều cặp bản rõ lựa chọn trong việc phá vỡ đủ 16 vòng DES thông thường,
phương pháp này thành công trong việc phã vỡ DES nếu số vịng giảm xuống. Ví
dụ 8 vịng DES có thể bị phá vỡ trong vài phút trên một PC nhỏ với một số không
quá nhiều các bản rõ lựa chọn. Để hiểu phương pháp lượng sai, chúng ta nghiên
cứu trường hợp đơn giản nhất là tấn công DES 3 vòng.


IV.1.1 Một số khái niệm
Lượng sai bao gồm việc so sánh XOR hai bản rõ với XOR hai bản mã
tuơng ứng. Chúng ta xem xét hai bản rõ L0R0 và L0*R0* với một giá trị XOR đặc
biệt
L0’ R0’ = L0R0 ^ L0*R0*.
Ta có các khái niệm sau:
a. Định nghĩa 1 :
Cho Si là một hộp S ( 1 ≤ j ≤ 8 ). Xét cặp có thứ thự ( Bj,Bj*) với
| Bj | = | Bj* | = 6. Ta nói rằng XOR đầu vào của S j là Bj ^ Bj* và XOR đầu ra của Sj
là Sj (Bj ) ^ Sj (Bj*)
Chú ý rằng XOR đầu vào là một dãy bit có độ dài là 6 cịn XOR đầu ra là
dãy có độ dài 4 bit.
b. Định nghĩa 2 :
Với mọi Bj’ € {Z2}6. ta định nghĩa Δ(Bj’) = {(Bj, Bj*) : Bj ^ Bj* = Bj’ }
Với mỗi cặp trong Δ(Bj’), có thể tính XOR đầu ra của Sj và lập bảng kết quả phân
phối.
c. Định nghĩa 3 :
Với 1 ≤ j ≤ 8, dãy các Bj’ dài 6 bit, Cj’ dài 4 bit, ta định nghĩa :

25


×