Tải bản đầy đủ (.pdf) (124 trang)

Nghiên cứu một số công nghệ xác thực

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 (1.53 MB, 124 trang )



1
BẢNG VIẾT TẮT

AES
Advanced Encryption Standard
CA
Certification Authority
CBC
Cipher Block Chaining
CFB
Cipher Feedback
DES
Data Encryption Standard
DSA
Digital Signature Algorithm
ECB
Electronic Codebook
EM
Encoded Message
EMSA
Encoding Method for Signatures with Appendix
I2OSP
Integer-to-Octet-String Primitive
IV
Initialization Vector
MAC
Message Authentication Code
OFB
Output Feedback


OS2IP
Octet-String-to-Integer Primitive
PKCS
Public-Key Cryptography Standards
PSS
Probabilistic Signature Scheme
RSASP1
RSA Signature Primitive 1
RSASSA
RSA Signature Scheme with Appendix
RSAVP1
RSA Verfication Primitive 1
SHA-1
Secure Hash Algorithm 1
SSL
Secure Socket Layer



2
MỞ ĐẦU
Giao tiếp là một phần quan trọng của cuộc sống, nó đánh dấu quá trình phát triển
của loài người. Hình thức giao tiếp truyền thống là nói chuyện trực tiếp, gửi thư qua
bưu điện, giao tiếp bằng điện thoại. Các hình thức giao tiếp truyền thống này đã tồn
tại trong một khoảng thời gian dài và các điều khoản đặc biệt được tạo ra để mọi
người có thể giao tiếp với nhau theo một cách an toàn.
Giao tiếp trực tiếp, người này có thể nhận ra các đặc điểm vật lý của người kia,
hoặc họ có thể so sánh các chữ ký được viết bằng tay cùng với các tài liệu liên quan
khác (như thẻ căn cước). Việc bắt chước tất cả các đặc điểm vật lý của một người là
rất khó. Giao tiếp bằng điện thoại, người ta có thể nhận ra nhau qua giọng nói.

Ngày nay giao tiếp trên Internet là hình thức giao tiếp mới, bản chất của hình
thức giao tiếp này khác với các hình thức giao tiếp truyền thống, đó là các nhóm
tham gia giao tiếp không có sự liên lạc “vật lý”. Họ không nhìn thấy nhau, không
nghe được giọng nói của nhau. Do vậy cần phải áp dụng các quy tắc, công nghệ để
bảo đảm giao tiếp của mọi người trên Internet được an toàn và thông suốt.
Vì vậy trong luận văn này, tôi sẽ tìm hiểu một số vấn đề về giải pháp và công
nghệ “nhận dạng” giữa các đối tác trên mạng Internet. Các khái niệm toán học, độ
phức tạp, được xem như đã biết.
Luận văn này gồm 4 chương:
 Chương 1: Các khái niệm cơ bản. Đề cập tới một số khái niệm cơ bản trong
an toàn thông tin như: mã hoá, chữ ký số, tóm lược thông điệp, xác thực
 Chương 2: Giao thức SSL. Giới thiệu về giao thức SSL, những khái niệm cơ
bản và nguyên tắc hoạt động chung của giao thức SSL.
 Chương 3: Sơ đồ chữ ký RSASSA-PSS và chương trình OpenSSL. Tìm hiểu
sơ đồ chữ ký RSASSA-PSS và chương trình OpenSSL.
 Chương 4: Thử nghiệm ứng dụng. Xây dựng chương trình ứng dụng theo mô
hình truyền tin Client/Server có bảo mật, sử dụng sơ đồ chữ ký RSASSA-
PSS và thuật toán mã hoá DES.


3
Chƣơng 1. CÁC KHÁI NIỆM CƠ BẢN
1.1. MỘT SỐ VẤN ĐỀ AN TOÀN BẢO MẬT THÔNG TIN.
Ngày nay việc giao tiếp trên Internet là rất phổ biến và do vậy tính an toàn trong
giao tiếp là rất cần thiết. Giả sử Alice muốn gửi một thông điệp tới ngân hàng của
cô với yêu cầu chuyển tiền. Alice muốn thông điệp đó phải bí mật, bởi vì thông điệp
này chứa một số thông tin quan trọng như số tài khoản và số lượng tiền cần chuyển.
Giải pháp là sử dụng thuật toán mã hoá, cho phép chuyển thông điệp của Alice
thành một dạng đã được mã hoá, và chỉ những người có khoá giải mã mới đọc
được. Một thuật toán mã hoá tốt phải đảm bảo thông điệp khó có thể bị những kẻ

tấn công giải mã để thu lại văn bản rõ. Có hai loại thuật toán mã hoá đó là mã hoá
khoá đối xứng và mã hoá khoá phi đối xứng.
Mã hoá khoá đối xứng yêu cầu bên gửi và bên nhận thông điệp cùng sử dụng
chung một khoá, một thông tin bí mật được sử dụng để lập mã và giải mã. Chỉ có
người gửi và người nhận biết được khoá bí mật này. Như vậy nếu Alice và ngân
hàng có một khoá bí mật thì họ có thể gửi các thông điệp bí mật cho nhau.
Mã hoá khoá phi đối xứng hay mã hoá khoá công khai sử dụng cặp khoá, một
khoá được sử dụng để mã hoá thông điệp và khoá còn lại được sử dụng để giải mã
thông điệp. Khóa dùng để mã hoá thông điệp được công bố công khai, gọi là khoá
công khai (public key). Khoá dùng để giải mã thông điệp sẽ được giữ bí mật, gọi là
khoá bí mật (private key).
Bất kỳ ai cũng có thể sử dụng khoá công khai để mã hoá thông điệp, nhưng chỉ
người sở hữu khoá bí mật mới có thể đọc được. Theo cách này Alice gửi thông điệp
bí mật tới người sở hữu cặp khoá (ngân hàng) bằng cách mã hoá thông điệp đó và
chỉ có ngân hàng mới có thể giải mã.
Mặc dù Alice có thể mã hoá thông điệp để đảm bảo tính bí mật. Tuy nhiên một
ai đó có thể sửa đổi thông điệp của Alice hoặc thay thế bằng thông điệp khác để
ngân hàng chuyển tiền tới chính họ.
Một cách để đảm bảo tính toàn vẹn thông điệp ban đầu của Alice là tạo ra tóm
lược thông điệp gốc, và gửi bản tóm lược này tới ngân hàng. Dựa vào thông điệp


4
gốc nhận được, ngân hàng tạo ra tóm lược thông điệp và so sánh với bản tóm lược
mà Alice gửi. Nếu chúng phù hợp thì thông điệp nhận được là còn nguyên vẹn.
Bản tóm lược thông điệp còn gọi là đại diện thông điệp (message digest – MD),
là một biểu diễn ngắn gọn, có độ dài cố định từ các thông điệp có độ dài lớn. Thuật
toán tóm lược (digest algorithm) sẽ tạo ra tóm lược duy nhất cho một thông điệp.
“Khó” có thể xác định thông điệp gốc từ bản tóm lược của nó. “Khó” có thể tìm ra
hai thông điệp khác nhau mà tạo ra cùng một tóm lược.

Một thách thức khác mà Alice phải đối mặt là tìm cách để gửi bản tóm lược tới
ngân hàng một cách an toàn. Khi nào công việc này hoàn tất thì việc toàn vẹn của
thông điệp mới được đảm bảo. Điều này được thực hiện bằng cách gửi bản tóm lược
cùng với chữ ký số trên bản tóm lược đó.
Khi Alice gửi một thông điệp tới ngân hàng, họ cần phải biết chắc chắn rằng
thông điệp này thực sự được gửi từ Alice, và không phải là từ người khác. Một chữ
ký số, được Alice tạo ra và gộp vào trong thông điệp để phục vụ cho mục đích trên.
Các chữ ký số được tạo ra bằng cách sử dụng khoá bí mật (của người gửi) mã
hoá tóm lược thông điệp. Bất kỳ ai cũng có thể giải mã chữ ký bằng khoá công khai,
nhưng chỉ có người ký mới biết được khoá bí mật. Gộp tóm lược thông điệp trong
chữ ký đó, có nghĩa là chữ ký này chỉ có ích đối với thông điệp đó, nó sẽ đảm bảo
tính toàn vẹn của thông điệp bởi vì không ai có thể thay đổi tóm lược thông điệp.
Mặc dù Alice có thể gửi một thông điệp bí mật tới ngân hàng, thực hiện ký
thông điệp đó, và đảm bảo tính toàn vẹn của thông điệp, Alice vẫn cần phải biết
chắc chắn rằng đang giao tiếp với ngân hàng. Điều này có nghĩa là Alice cần đảm
bảo khoá công khai mà Alice đang sử dụng, phải tương ứng với khoá bí mật của
ngân hàng.
Tương tự như vậy, ngân hàng cần phải xác định chữ ký trên thông điệp, là chữ
ký của Alice. Nếu mỗi bên có chứng chỉ công nhận danh tính của người khác, xác
nhận khoá công khai của họ và được ký bởi trung tâm có quyền chứng thực, thì cả
hai có thể tin tưởng lẫn nhau trong giao tiếp. Mỗi bên sử dụng khoá công khai của
trung tâm xác thực để xác định chứng chỉ của bên kia và sau đó tin chắc về tính xác
thực của khoá công khai.


5
Trung tâm xác thực được gọi là Certification Authority (CA), thực hiện ký
chứng chỉ bằng khoá bí mật của mình, và bên giao tiếp xác nhận chứng chỉ bằng
cách sử dụng khoá công khai tương ứng với khoá bí mật của CA đã dùng để ký.
1.2. VẤN ĐỀ MÃ HOÁ.

1.2.1. Khái niệm về mã hoá.
Mã hoá được sử dụng để bảo vệ tính bí mật của thông tin. Giả sử người gửi A
muốn gửi một văn bản p đến người nhận B. Để bảo mật A lập cho p bản mã c. Thay
cho việc gửi p, A gửi cho B bản mã c, B nhận được c và giải mã c để thu lại được
văn bản p như A đã gửi. Để A biến p thành c và B biến ngược lại c thành p , A và B
phải thỏa thuận trước với nhau thuật toán lập mã và giải mã, một khóa mật mã
chung K. Người ngoài, không biết các thông tin đó (đặc biệt không biết khóa K),
cho dù có lấy trộm được c trên kênh truyền thông công cộng, cũng khó có thể tìm
được văn bản p mà hai người A, B muốn gửi cho nhau.
1.2.2. Hệ mã hoá khoá đối xứng.
1.2.2.1. Khái niệm.
Sơ đồ hệ mã hoá khoá đối xứng là một bộ năm: S = (P, C, K, E, D)
thỏa mãn các điều kiện sau đây:
P là tập hữu hạn bản rõ.
C là tập hữu hạn bản mã.
K là tập hữu hạn các khóa.
Với mỗi kK tồn tại quy tắc lập mã e
k
E và 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.

Như vậy cứ mỗi lần truyền tin bảo mật, người gửi A và người nhận B phải cùng
thỏa thuận trước với nhau một khóa chung k, sau đó người gửi dùng e
k
để lập mã
cho thông điệp gửi đi, và người nhận dùng d
k
để giải mã bản mã nhận được. Hệ mã
hoá với cách sử dụng đó là mã hoá khóa đối xứng.
Một số hệ mã hoá khoá đối xứng như:
 Advanced Encryption Standard (AES).


6
 Data Encryption Standard (DES).
 Triple Data Encryption Standard (3DES).
Sau đây tôi xin giới thiệu hệ mã hoá DES.


7
1.2.2.2. Hệ mã hoá DES.
Hệ mã hoá DES là hệ mã hoá theo khối, mỗi khối bản rõ là từ 64 bít, và khối
bản mã cũng là từ 64 bít. Mỗi khoá K của DES là một từ 56 bít.
Với mỗi khoá K và bản rõ x , quá trình lập mã diễn ra như sau:
Đầu tiên, thực hiện phép hoán vị ban đầu IP, từ x 64 bít sẽ biến thành từ mới
IP(x), từ này được chia thành hai nửa L
0
và R
0
, mỗi nửa là một từ 32 bít.
Sau đó thực hiện tiếp 16 lần những phép toán giống nhau để nhận được các cặp

(L
1
, R
1
), , (L
16
, R
16
).
Cuối cùng dùng phép hoán vị nghịch đảo IP
-1
cho từ đảo ngược R
16
L
16
, sẽ được
bản mã y tương ứng.
Sơ đồ khái quát của phép lập mã được mô tả bởi hình vẽ sau:


8































K
1

Bản rõ x
L
0

R
0



IP
f
+
L
1

R
1


L
16

R
16


f
+
IP
-
1
Bản mã y
K
16






Thuật toán
G tạo
các khoá
K
1
, , K
16

từ
khoá K

Hình 1.1 Sơ đồ khái quát lập mã DES



9


IP là phép hoán vị vị trí của các ký tự trong mỗi từ 64 bít, từ vị trí 1 đến vị trí
64. Bảng dưới đây cho phép hoán vị IP, với cách hiểu là bít thứ nhất của IP(x) là bít
thứ 58 của từ x, bít thứ hai của IP(x) là bít thứ 50 của x, Bảng của phép hoán vị
IP
-1
cũng được hiểu tương tự.
IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7

IP
-1

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



10
Sơ đồ hàm f: Đầu vào là hai từ R có 32 bít và K có 48 bít. Đầu ra là từ f (R, K )
có 32 bít, được xác định theo sơ đồ sau:


Mỗi B
i
là một từ 6 bít
R (32 bit)
K (48 bit)

E (R) 48 bit
E
S
2

P
f (R,K ) 32 bit
+
B
1

B
2

B
3

B
4

B
5

B
6

B
7

B

8


S
3

S
4

S
5

S
6

S
7

S
8

S
1

C
1

C
2


C
3

C
4

C
5

C
6

C
7

C
8


Mỗi C
i
là một từ 4 bít
Hình 1.2 Sơ đồ hàm f



11
Trong sơ đồ hàm f, E là phép hoán vị “mở rộng” theo nghĩa là nó biến mỗi từ R
32 bít thành từ E(R) bằng cách hoán vị 32 bít của R, nhưng có một số cặp bít được
lặp lại để E(R) thành một từ có 48 bít. Phép hoán vị “mở rộng” cho bởi bảng sau:












Theo đó, mỗi từ R = a
1
a
2
a
3
a
32
sẽ biến thành từ
E (R) = a
32
a
1
a
2
a
3
a
4

a
5
a
4
a
5
a
6
a
7
a
8
a
9
a
8
a
9
a
32
a
1
.
Tiếp theo E(R) sẽ được cộng (từng bít theo mod 2) với K, được một từ 48 bít,
chia thành 8 đoạn B
1
, , B
8
.
Mỗi hộp S

i
(i = 1, , 8) là một phép thay thế, biến mỗi từ B
j
(6 bít) thành một từ
C
j
(4 bít). Các hộp S
i
được cho bởi các bảng dưới đây với cách hiểu như sau:
Mỗi từ B
j
= b
1
b
2
b
3
b
4
b
5
b
6
ứng với một vị trí (r, s) ở hàng thứ r và cột thứ s trong
bảng. Các hàng được đánh số từ 0 đến 3 ứng với biểu diễn nhị phân b
1
b
6
. Các cột
được đánh số từ 0 đến 15 ứng với biểu diễn nhị phân b

2
b
3
b
4
b
5
.
Giá trị của S
i
(B
j
) = C
j
= c
1
c
2
c
3
c
4
là một từ 4 bít, biểu diễn nhị phân của số tại
hàng r cột s trong bảng.
Ví dụ S
1
(011011) = 0101, S
2
(011011) = 1010,
Phép hoán vị “mở rộng” E

32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1


12

S
1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

S
2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S
3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1

13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

S
4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

S
5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3



13

S
6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S
7

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S
8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

Phép hoán vị P trong sơ đồ của hàm f được cho bởi bảng sau:









P
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6

22 11 4 25


14
Sơ đồ thuật toán G tạo các khoá K
1
, , K
16























Thuật toán G tạo ra các khoá K
1
, , K
16
từ khoá mã K, được thực hiện theo sơ
đồ trên. Khoá K là một từ 56 bít, chia thành 8 đoạn, mỗi đoạn 7 bít, và thêm cho
mỗi đoạn 7 bít đó một bít thử tính chẵn lẻ vào vị trí cuối để được một từ 64 bít.
Trước tiên, thuật toán PC-1 biến K thành một từ 56 bít, chia thành hai nửa C
0
D
0
,
mỗi nửa có 28 bít. Phép hoán vị PC-1 được xác định bởi bảng sau (chú ý là trong
bảng không có các số 8, 16, 24, 32, 40, 48, 56, 64, là vị trí của những bít được thêm
vào khi hình thành khoá mới K ).
Khoá K
PC-1
C
0

D
0


LS1
LS1
PC-2
K
1
C

1

D
1


LS2

LS2
LS16
LS16
K
16
C
16

D
16


PC-2

Hình 1.3 Sơ đồ thuật toán G


15
Qui ước của phép hoán vị, bít thứ nhất của PC-1(x ) là bít thứ 57 của x , bít thứ
hai của PC-1(x ) là bít thứ 49 của x ,











Với mỗi i = 1, 2, , 16, LS
i
là phép chuyển dịch vòng sang trái, chuyển dịch một
vị trí nếu i = 1, 2, 9, 16, và chuyển dịch hai vị trí với những giá trị i còn lại.
Phép hoán vị PC-2 biến mỗi từ 56 bít C
i
D
i
(i =1,2, 16) thành từ 48 bít K
i
theo
bảng dưới đây:











Thuật toán lập mã E của hệ mã DES là y =E(K, x ) với mỗi khoá K và bản rõ x.
Thuật toán giải mã D là x =D(K, y ), được thực hiện bằng cùng một quá trình tính
toán như quá trình lập mã, chỉ khác là thứ tự dùng các K
i
được đảo ngược lại theo
thứ tự K
16
, K
15
, , K
1
.
PC-2
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32

PC-1
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29

21 13 5 28 20 12 4





16
1.2.2.3. Các chế độ thực hiện của DES.
Có 4 chế độ mà DES có thể thực hiện và được sử dụng rộng rãi trong các ứng
dụng. Các chế độ này xác định cách dữ liệu sẽ được mã hoá và được giải mã, đó là
các chế độ:
 Electronic CodeBook (ECB).
 Cipher Block Chaining (CBC).
 Cipher FeedBack (CFB).
 Output FeedBack (OFB).

a. Chế độ Electronic Codebook (ECB).
Trong mã hoá ECB, một khối dữ liệu rõ (D1, D2, , D64) được sử dụng trực tiếp
làm khối đầu vào DES (I1, I2, , I64). Khối đầu vào được xử lý qua thiết bị DES ở
trạng thái mã hoá. Khối đầu ra (O1, O2, , O64) được sử dụng trực tiếp làm bản mã
(C1, C2, , C64).
Trong giải mã ECB, khối bản mã (C1, C2, , C64) được sử dụng trực tiếp làm
khối đầu vào DES (I1, I2, , I64). Khối đầu vào sau khi được xử lý qua thiết bị DES
ở trạng thái giải mã và cho khối đầu ra (O1, O2, , O64) là khối bản rõ
(D1, D2, , D64).














Hình 1.4 Sơ đồ mã hoá DES chế độ ECB


17

b. Chế độ Cipher Block Chaining (CBC).
Thông điệp cần mã hoá sẽ được chia thành các khối. Trong mã hoá CBC, khối
dữ liệu vào DES đầu tiên được định dạng bằng cách thực hiện phép toán XOR
(cộng các bít theo modul 2) khối đầu tiên của thông điệp với 64 bít vectơ khởi đầu
(IV),
ví dụ: (I1, I2, , I64) = (IV1 XOR D1, IV2 XOR D2, , IV64 XOR D64).
Khối đầu vào này được xử lý qua thiết bị DES ở trạng thái mã hoá và khối đầu
ra được sử dụng làm bản mã (C1, C2, , C64) = (O1, O2, , O64). Khối bản mã đầu
tiên được thực hiện XOR với khối bản rõ thứ hai để tạo ra khối đầu vào DES thứ
hai
(I1, I2, , I64) = (C1 XOR D1, C2 XOR D2, , C64 XOR D64).
Khối đầu vào thứ hai được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo ra
khối bản mã thứ hai.
Quá trình mã hoá tiếp tục xích chuỗi lần lượt các bản mã với các bản rõ với
nhau cho tới khi khối bản mã cuối cùng trong thông điệp được mã hoá. Nếu thông
điệp không là một số nguyên lần các khối dữ liệu 64 bít, thì phần dữ liệu của khối
cuối cùng sẽ được mã theo một cách riêng.



18


Trong quá trình giải mã, khối bản mã đầu tiên của thông điệp được sử dụng làm
khối đầu vào và được xử lý qua thiết bị DES ở trạng thái giải mã,
(I1, I2, , I64) = (C1, C2, , C64). Khối đầu ra được thực hiện phép toán XOR với IV
(giống với IV được sử dụng trong quá trình mã hoá) để tạo ra khối bản rõ đầu tiên,
(D1, D2, , D64) = (O1 XOR IV1, O2 XOR IV2, , O64 XOR IV64).
Quá trình giải mã thực hiện tiếp tục theo cách này cho tới khi khối bản mã cuối
cùng được hoàn thành. Bản mã biểu diễn khối cuối, nếu chỉ có một phần dữ liệu
phải được giải mã theo cách riêng.

Hình 1.5 Sơ đồ mã hoá DES chế độ CBC



19
c. Chế độ Cipher Feedback (CFB).
Thông điệp cần được mã hoá sẽ được chia thành các khối dữ liệu gồm K bít
(K=1, 2, , 64). Đối với cả hai hoạt động mã hoá và giải mã CFB, một vectơ khởi
đầu IV có độ dài L được sử dụng. Vectơ IV này được đặt vào các bít thấp nhất của
khối đầu vào DES, và các bít không được sử dụng được thiết lập là “0”,
ví dụ: (I1, I2 , , I64) = (0, 0, , 0, IV1, IV2, IVL).
Khối đầu vào này được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo một khối
ở đầu ra.
Trong suốt quá trình mã hoá, bản mã được tạo ra bởi thực hiện phép XOR trên
một đơn vị dữ liệu rõ với K bít cao nhất của khối đầu ra,
(C1, C2, , CK) = (D1 XOR O1, D2 XOR O2, , DK XOR OK).

Tương tự như vậy trong quá trình giải mã, bản rõ được tạo ra bằng cách thực
hiện phép XOR trên một đơn vị bản mã gồm K bít với K bít cao nhất của khối đầu
ra, (D1, D2, , DK) = (C1 XOR O1, C2 XOR O2, , CK XOR OK).
Trong cả hai trường hợp, các bít không được sử dụng của khối đầu ra DES sẽ bị
loại bỏ. Khối đầu vào tiếp theo được tạo ra bằng cách loại bỏ K bít ở vị trí cao nhất
của khối đầu vào trước đó. Dịch K vị trí của các bít còn lại sang trái và sau đó chèn
K bít của bản mã được tạo ra trong quá trình mã hoá, hoặc được sử dụng trong hoạt
động giải mã tại các bít có vị trí thấp,
(I1, I2, , I64) = (I[K+1l, I[K+2], , I64, C1, C2, , CK).
Khối đầu vào này sau khi được xử lý qua thiết bị DES ở trạng thái mã hoá để
tạo ra khối đầu ra tiếp theo. Quá trình này tiếp tục cho tới khi toàn bộ bản rõ được
mã hoá hoặc cho tới khi toàn bộ bản mã được giải mã.


20
















Chế độ CFB có thể hoạt động trên các đơn vị dữ liệu có kích thước từ 1 đến 64.
K bít CFB được định nghĩa là chế độ CFB hoạt động trên các đơn vị dữ liệu gồm K
bít (1<=K<=64).
Đối với mỗi hoạt động của thiết bị DES, một đơn vị K bít bản rõ tạo ra một đơn
vị K bít bản mã hoặc một đơn vị bản mã tạo ra một đơn vị K bít bản rõ.


Hình 1.6 Sơ đồ mã hoá DES chế độ CFB


21
d. Chế độ Output Feedback (OFB).
Thông điệp cần mã hoá được chia thành các đơn vị dữ liệu có kích thước là K
bít (K=1, 2, , 64) Trong cả hai hoạt động mã hoá và giải mã OFB, một vectơ khởi
đầu IV có kích thước là L được sử dụng. Vectơ IV này được đặt trong các bít thấp
nhất của khối đầu vào DES, và các bít không sử dụng được đặt là “0”,
ví dụ: (I1,I2, ,I64) = (0, 0, , 0, IV1, IV2, , IVL).
Khối đầu vào được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo khối đầu
ra. Trong quá trình mã hoá, bản mã được tạo bằng cách thực hiện XOR một đơn vị
dữ liệu K bít với K bít cao nhất của khối đầu ra,
ví dụ (C1, C2, , CK) = (D1 XOR O1, D2 XOR O2, , DK XOR OK).
Trong cả hai trường hợp, các bít không được sử dụng của khối đầu ra DES sẽ
được loại bỏ. Khối đầu vào tiếp theo được tạo bằng cách loại bỏ K bít cao nhất của
đầu vào trước đó, dịch K vị trí của các bít còn lại sang trái,
(I1, I2, , I64) = I[K+1], I[K+2], , I64, O1, O2, , OK).
Sau đó khối đầu vào này được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo
khối đầu ra tiếp theo. Quá trình này tiếp tục cho tới khi toàn bộ bản rõ được mã hoá
Hình 1.7 Sơ đồ mã hoá DES chế độ OFB





22
hoặc toàn bộ bản mã được giải mã.
Nhận xét 4 chế độ thực hiện của DES:
 Chế độ ECB ứng dụng trực tiếp thuật toán DES để mã hoá, giải mã dữ liệu.
Thực hiện biến đổi 64 bít đầu vào thành 64 bít đầu ra. Các khối bản rõ giống
nhau sẽ tạo ra các bản mã giống nhau nếu cùng một khoá mã.
 Chế độ ECB, một lỗi bít đơn trong một khối bản mã khi giải mã chỉ gây ra lỗi
trong khối bản rõ đó, mà không ảnh hưởng tới các khối khác.
 Chế độ ECB thực hiện mã hoá khối 64 bít. Nếu người sử dụng mã hoá ít hơn 64
bít, thì các bít thấp nhất chưa được sử dụng của khối dữ liệu đầu vào phải được
bổ sung cho đủ với các bít ngẫu nhiên hoặc giả ngẫu nhiên, trước khi mã hoá
ECB. Thiết bị giải mã tương ứng phải loại bỏ các bít bổ sung, sau khi giải mã
khối bản mã.
 Chế độ CBC là chế độ mở rộng của ECB, thực hiện xích chuỗi các khối bản mã
lại với nhau.
 Chế độ CBC tạo ra các bản mã giống nhau, khi bản rõ giống nhau được mã hoá
cùng một khoá và cùng vectơ khởi đầu IV.
 Chế độ CBC, một hoặc nhiều lỗi xảy ra trong khối bản mã sẽ ảnh hưởng việc
giải mã của hai khối, đó là khối hiện tại có lỗi xảy ra và khối kế tiếp.
 Chế độ CFB sử dụng bản mã trước đó làm đầu vào cho DES, và tổ hợp với bản
rõ hiện thời để tạo ra bản mã. Bởi vậy CFB thực hiện xích chuỗi các bản mã lại
với nhau.
 Chế độ OFB giống như CFB ngoại trừ đầu ra trước đó của DES trong OFB
được làm đầu vào. Bởi vậy OFB không xích chuỗi các bản mã lại với nhau.



23

1.2.3. Hệ mã hoá khoá phi đối xứng.
1.2.3.1. Khái niệm.
Sơ đồ hệ mã hoá khoá phi đối xứng còn được gọi là hệ mã hoá khoá công khai.
Đó là một bộ năm S = (P, C, K, E, D) thỏa mãn các điều kiện sau:
P là tập hữu hạn bản rõ.
C là tập hữu hạn bản mã.
K là tập hữu hạn các khóa.
Với mỗi kK gồm hai thành phần k=(k’, k’’).
k’ dành cho việc lập mã (và có hàm lập mã e
k’
).
k’’ dành cho việc giải mã (và có hàm giải mã d
k’’
).
Mỗi e
k’
: P > C và d
k’’
: C >P thoả mãn d
k’’
(e
k’
(x)) = x với mọi x P.
Trong một hệ mã hoá khóa phi đối xứng, các khóa lập mã và giải mã (k’ và k’’) là
khác nhau, nhưng có quan hệ với nhau. Trong hai khóa đó, khóa cần phải giữ bí
mật là khóa giải mã k’’, còn khóa lập mã k’ có thể được công bố công khai. Tuy
nhiên điều đó chỉ có ý nghĩa thực tiễn khi việc biết k’ tìm k’’ là cực kỳ khó, đến
mức hầu như không thể thực hiện được.
Một số hệ mã hoá khoá công khai như:
 Hệ RSA.

 Hệ ElGamal.
 Hệ Knapsack Merkle-Hellman.
 Hệ mật trên đường cong Elip.
Sau đây tôi xin giới thiệu hệ mã hoá RSA.


24
1.2.3.2. Mô tả hệ mã hoá RSA.
Sơ đồ chung của hệ mã hoá RSA được cho bởi:
S = (P, C, K, E, D)
trong đó:
 P là tập hữu hạn bản rõ.
 C là tập hữu hạn bản mã.
 K là tập các khoá k , mỗi khoá k gồm có hai phần k =(k’,k’’).
k’ là khoá công khai dành cho lập mã.
k’’ là khoá bí mật dành cho giải mã.
Với mỗi ký tự bản rõ xP, thuật toán lập mã E cho ký tự mã tương ứng
y =E(k’, x)  C.
Với ký tự mã y thuật toán giải mã D sẽ cho ta lại ký tự bản rõ x:
D(k’’, y) = D(k’’, E(k’, x)) =x.

Để xây dựng một hệ mã hoá RSA, chọn trước số nguyên n =p.q là tích của hai
số nguyên tố lớn.
Chọn số e sao cho gcd(e, (n)) =1, và tính số d sao cho e.d  1(mod (n)).
Mỗi cặp k =(k’, k’’), với k’ =(n, e) và k’’ = d sẽ là một cặp khoá của hệ mã RSA.
P = C = Z
n
.
K = {k =(k’, k’’) : k’ = (n, e) và k’’ = d, gcd(e, (n)) =1, e.d  1(mod (n))}.
E và D được xác định bởi:

E(k’, x) = x
e
mod n, với mọi x P.
D(k’’, y) = y
d
mod n, với mọi y C.


25
1.3. VẤN ĐỀ KÝ SỐ.
1.3.1. Khái niệm.
Sơ đồ chữ ký S là một bộ năm S = (P, A, K, S, V)
trong đó:
P là tập hữu hạn các thông điệp.
A là tập hữu hạn các chữ ký.
K là tập hữu hạn các khoá, mỗi khoá k  K gồm có hai phần k =(k’, k’’).
k’ là khoá bí mật dành cho việc ký, còn k’’ là khoá công khai dành cho việc kiểm
thử chữ ký.
Với mỗi k =(k’, k’’), trong S có thuật toán ký sig
k’
: P -> A,
và trong V có thuật toán kiểm thử ver
k’’
: PxA -> {đúng, sai}
thoả mãn điều kiện với mọi thông điệp xP và mọi chữ ký yA:
ver
k’’
(x, y) = đúng  y =sig
k’
(x ).


Người sở hữu bộ khoá k =(k’,k’’), công bố công khai khoá k’’ để mọi người có
thể kiểm thử chữ ký của mình, và giữ bí mật khoá k’ để thực hiện chữ ký trên các
thông điệp mà mình muốn gửi đi.

1.3.2. Khái niệm MAC (Message Authentication Code).
Mã xác thực thông điệp (Message Authentication Code): Là một số, được tính
từ nội dung của thông điệp, được sử dụng xác nhận tính toàn vẹn thông điệp.
MAC là tổng kiểm tra (checksum), được tạo ra bằng mã hoá DES hoặc AES, với
khoá bí mật (secret key). MAC được gửi cùng với thông điệp đó.
Bên nhận tính toán lại MAC, sử dụng thuật toán và khoá bí mật tương ứng như
bên gửi, và so sánh nó với MAC của bên gửi. Nếu chúng giống nhau, thì thông điệp
không bị thay đổi.
MAC giống như chữ ký số, ngoại trừ khoá bí mật (secret key) được sử dụng
( thay cho khoá riêng (private key)).

×