ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN THỊ YẾN
ỨNG DỤNG CHỮ KÝ SỐ TRONG BẢO MẬT
THÔNG TIN BƯU ĐIỆN TỈNH THÁI NGUYÊN
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 60 48 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN
Trƣớc tiên tôi xin gửi lời cảm ơn chân thành nhất đến thầy PGS. TS
Đoàn Văn Ban đã định hƣớng và nhiệt tình hƣớng dẫn, giúp đỡ tôi rất nhiều về
mặt chuyên môn trong quá trình làm luận văn.
Tôi xin gửi lời biết ơn sâu sắc đến các thầy, các cô đã dạy dỗ và truyền
đạt những kinh nghiệm quý báu cho chúng tôi trong suốt hai năm học cao học
tại Trƣờng Đại học công nghệ thông tin và truyền thông - Đại học Thái Nguyên.
Tôi xin cảm ơn bạn bè, đồng nghiệp và gia đình, những ngƣời luôn gần
gũi động viên, chia sẻ cùng tôi trong suốt thời gian làm luận văn tốt nghiệp.
Thái Nguyên, tháng 6 năm 2012
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
3
MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC KÍ HIỆU VÀ CÁC TỪ VIẾT TẮT 6
DANH MỤC CÁC HÌNH 8
MỞ ĐẦU 10
1. Đặt vấn đề 10
2. Đối tƣợng và phạm vi nghiên cứu 10
3. Hƣớng nghiên cứu của đề tài 11
4. Những nội dung nghiên cứu chính 11
5. Tổng quan luận văn 11
CHƢƠNG 1: GIỚI THIỆU VỀ MÃ KHOÁ THÔNG DỤNG 13
1.1. Giới thiệu 13
2.2.1. Xác thực thông báo 54
2.2.2 Các hàm xác thực 55
2.2.2.1. Mã hoá thông báo 55
2.2.2.2. Kỹ thuật xác thực dùng khoá bí mật – MAC 56
2.2.2.3. Các hàm băm 58
2.3. Chữ ký số 61
2.3.1. Khái niệm 61
2.3.1.1. Khái niệm 61
2.3.1.2. Sơ đồ chữ ký số 62
2.3.2. Các ƣu điểm của chữ ký số 62
2.3.3. Quá trình thực hiện chữ ký số khoá công khai 64
2.3.4. Thuật toán chữ ký RSA 66
2.3.4.1. Sơ đồ 66
2.3.4.2. Ví dụ minh hoạ 67
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
5
2.3.4.3. Độ an toàn của chữ ký RSA 67
2.3.5. Thuật toán chữ ký DSA/DSS 69
2.3.5.1. Sơ đồ 69
2.3.5.2. Ví dụ 70
2.3.5.3. Độ an toàn chữ ký DSA 70
2.4. Các kiểu tấn công vào lƣợt đồ chữ ký 77
2.5. Tính pháp lý và ứng dụng chữ ký số trong và ngoài nƣớc. 72
2.5.1. Trong nƣớc 72
2.5.2. Ở một số nƣớc trên thế giới 74
2.5.3. Ứng dụng trong thực tế 75
2.6. Kết luận chƣơng 76
ITU International Telecommunication Union
ISO International Organization for Standardization
MAC Message Authentication Code
MARS Multicast Address Resolution Server
MD5 Message Digest 5
NIST National Institute Of Standards And Technology
OCSP Online Certificate Status Protocol
PKI public-key infrastructures
RSA Rivest, Shamir, Adleman
SHA Secure Hash Algorithm
TCP/IP Transfer Control Protocol/Internet Protocol
URL Uniform Resource Locator
C Bản mã.
X Không gian các bản mã.
D, D
k
Hàm giải mã, hàm giải mã với khoá k.
d, d
A
Số mũ giải mã, số mũ giải mã của cá thể A.
E, E
k
Hàm mã hoá, hàm mã hoá với khoá k.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
7
e, e
A
Hình 2.1 (a) Lược đồ mã hoá thông báo 55
Hình 2.1(b) Mã hoá khoá công khai: xác thực và chữ ký 55
Hình 2.1(c) Mã hoá khoá công khai: Bí mật, xác thực và chữ ký 56
Hình 2.2 (a) Xác thực thông báo 57
Hình 2.2 (b) Bí mật và xác thực thông báo:Xác thực đối với bản rõ 57
Hình 2.2 (c) Xác thực đối với bản mã 57
Hình 2.3 Sơ đồ mô tả quá trình ký và gửi các tệp văn bản 64
Hình 2.4 Sơ đồ mô tả quá trình nhận các tệp văn bản 65
Hình 3.1 Chức năng tạo cặp khoá mã hoá 78
Hình 3.2 Nội dung văn bản sau khi mã hoá 78
Hình 3.3 Nội dung văn bản sau khi giải mã 79
Hình 3.4 Chọn tệp văn bản để ký 79
Hình 3.5 Thông báo đã ký văn bản 80
Hình 3.6 Xác lập thông tin người ký 80
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
9
Hình 3.7 Xác thực chữ ký 81
Hình 3.8 Đăng nhập hệ thống 81
Hình 3.9 Menu thao tác với tệp văn bản 81
Hình 3.10: Menu chỉnh sửa văn bản 82
Hình 3.11: Menu Định dạng văn bản 82
Hình 3.12: Menu Mã hoá và giải mã dữ liệu 82
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
10
* Phạm vi nghiên cứu:
Luận văn tập trung nghiên cứu các kiến thức có liên quan, các cơ sở lý
thuyết: về một số giải pháp mã hoá và những phƣơng pháp, kỹ thuật tạo chữ ký
số để ứng dụng trong bảo mật thông tin Bƣu điện Tỉnh.
3. Hƣớng nghiên cứu của đề tài:
Luận văn tập trung nghiên cứu và làm rõ hơn về ý tƣởng về các hệ mật mã
khoá thông dụng và những phƣơng pháp, kỹ thuật tạo chữ ký số.
4. Những nội dung nghiên cứu chính:
+ Nghiên cứu về các giải pháp mã hoá để bảo mật thông tin.
+ Nghiên cứu những phƣơng pháp, kỹ thuật tạo chữ ký số trên các tài liệu,
văn bản điện tử.
+ Nghiên cứu về một ngôn ngữ lập trình để viết một ứng dụng nhỏ về chữ
ký số.
5. Tổng quan luận văn
Luận văn đƣợc trình bày theo hình thức từ trên xuống. Bắt đầu của mỗi
phần đều đƣa ra những khái niệm cơ bản và quy định cho phần trình bày tiếp
sau nhằm mục đích giúp dễ dàng trong khi đọc, dần dần đi sâu vào để thảo luận
rõ hơn những vấn đề liên quan, bao gồm việc bảo vệ an toàn thông tin dữ liệu
dùng mật mã, mật mã khoá công khai RSA và chữ ký số
Luận văn đƣợc trình bày trong 3 chƣơng và phần kết luận
Chƣơng 1 Một số hệ mật mã khoá thông dụng
Giới thiệu về hệ mật mã khóa công khai các nguyên lý của nó; trình bày
những khái niệm cơ bản & hệ khoá công khai RSA; phƣơng pháp xây
dựng, ý tƣởng, thuật toán và độ phức tạp của thuật toán.
Chƣơng 2 Chữ kí số
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
12
của khoá thì hệ mã hoá đƣợc chia thành hai loại đó là:
- Hệ mã hóa khóa đối xứng, hay còn gọi là Hệ mã khoá bí mật (có khoá
riêng và khoá chung giống nhau).
- Hệ mã hóa khóa phi đối xứng, hay còn gọi là Hệ mã khoá công khai (Khóa
công khai có khoá riêng và khoá chung khác nhau).
1.2. Hệ mã khoá bí mật
Hệ mã hoá bí mật hay còn gọi là Hệ mã khoá đối xứng là Hệ mã hóa mà
biết đƣợc khóa lập mã thì có thể “dễ dàng” tính đƣợc khóa giải mã và ngƣợc lại
[4],[5].
Quá trình thực hiện cơ chế mã hoá nhƣ sau:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
14
Hình 1.1 Quá trình thực hiện cơ chế mã hoá
Hình 1.1 mô tả quá trình trao đổi thông tin giữa bên gửi và bên nhận
thông qua việc sử dụng phƣơng pháp mã hoá đối xứng. Trong quá trình này, thì
thành phần quan trọng nhất cần phải đƣợc giữ bí mật chính là khoá. Việc trao
đổi, thoả thuận về thuật toán đƣợc sử dụng trong việc mã hoá có thể tiến hành
một cách công khai, nhƣng bƣớc thoả thuận về khoá trong việc mã hoá và giải
mã phải tiến hành bí mật. Chúng ta có thể thấy rằng thuật toán mã hoá đối xứng
sẽ rất có lợi khi đƣợc áp dụng trong các cơ quan hay tổ chức đơn lẻ. Nhƣng nếu
cần phải trao đổi thông tin với một bên thứ ba thì việc đảm bảo tính bí mật của
khoá phải đƣợc đặt lên hàng đầu.
Ngƣời gửi sử dụng một phép biến đổi khả nghịch:
f : M –
k
→ C (1.1)
Mã hoá đối xứng có thể đƣợc phân thành 02 loại:
1. Loại thứ nhất tác động trên bản rõ theo từng nhóm bits. Từng nhóm bits
này đƣợc gọi với một cái tên khác là khối (Block) và thuật toán đƣợc áp dụng
gọi là Block Cipher. Theo đó, từng khối dữ liệu trong văn bản ban đầu đƣợc
thay thế bằng một khối dữ liệu khác có cùng độ dài. Đối với các thuật toán ngày
nay thì kích thƣớc chung của một Block là 64 bits [5].
2. Loại thứ hai tác động lên bản rõ theo từng bit một. Các thuật toán áp
dụng đƣợc gọi là Stream Cipher. Theo đó, dữ liệu của văn bản đƣợc mã hoá
từng bit một. Các thuật toán mã hoá dòng này có tốc độ nhanh hơn các thuật
toán mã hoá khối và nó thƣờng đƣợc áp dụng khi lƣợng dữ liệu cần mã hoá
chƣa biết trƣớc.
Một số thuật toán nổi tiếng trong mã hoá đối xứng là: DES, Triple
DES(3DES), RC4, AES…
+ DES (Data Encryption Standard). Với DES, bản rõ (Plaintext) đƣợc mã
hoá theo từng khối 64 bits và sử dụng một khoá là 64 bits, nhƣng thực tế thì chỉ
có 56 bits là thực sự đƣợc dùng để tạo khoá, 8 bits còn lại dùng để kiểm tra tính
chẵn, lẻ. DES là một thuật toán đƣợc sử dụng rộng rãi nhất trên thế giới. Hiện
tại DES không còn đƣợc đánh giá cao do kích thƣớc của khoá quá nhỏ 56 bits,
và dễ dàng bị phá vỡ.
+ Triple DES (3DES): 3DES cải thiện độ mạnh của DES bằng việc sử
dụng một quá trình mã hoá và giải mã sử dụng 3 khoá. Khối 64-bits của bản rõ
đầu tiên sẽ đƣợc mã hoá sử dụng khoá thứ nhất. Sau đó, dữ liệu bị mã hóa đƣợc
giải mã bằng việc sử dụng một khoá thứ hai. Cuối cùng, sử dụng khoá thứ ba và
kết quả của quá trình mã hoá trên để mã hoá.
C = EK3(DK2(EK1(P)))
P = DK1(EK2(DK3(C)))
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
16
, K
1
)
L
15
= R
14
R
15
= L
14 +
f (R
14
, K
15
)
+
f
R
16
= L
15 +
f (R
15
, K
16
)
L
16
= R
f (R
i-1
, K
i
)
Trong đó, f là hàm nhận nửa phải 32 bit và một khoá vòng 48 bit, sinh ra
một kết xuất 32 bit. Mỗi khoá vòng K
i
chứa một tập con các khoá 56 bit.
Cuối cùng, sau 16 bƣớc ta đƣợc C‟ = (R
16
,L
16
). C‟ sau đó đƣợc hoán vị
tƣơng ứng với phép hoán vị IP
-1
để đƣợc bản mã cuối cùng C.
Giải mã đƣợc thi hành theo trình tự ngƣợc lại: một phép hoán vị, 16 vòng
XOR sử dụng khoá vòng theo thứ tự ngƣợc lại và phép hoán vị sau cùng phục
hồi lại bản rõ. Tất cả các phép khai triển bit này có thể đƣợc kết hợp vào một
mạch logic chuyên dụng, vì thế DES có thể đƣợc cài đặt rất hiệu quả. Tuy
nhiên, theo nghiêm cứu của Electronic Frontier Foundation thì khả năng thám
mã DES 56 bit khoảng 22 giờ. Vì thế, NIST khuyên nên sử dụng Triple DES
(3DES) bao gồm 3 lần mã hoá DES khác nhau.
Đặt E (k, M) và D(k, C) biểu diễn mã hoá và giải mã DES của M và C với
khoá k. Mỗi phép mã/ giải mã TDES là một phép ghép của các phép mã/giải
mã. Các phép toán sau đƣợc sử dụng trong TDES:
Phép mã hoá TDES: biến đổi một khối M 64 bit thành một khối C 64 bit
đƣợc xác định nhƣ sau:
):
1. K
1
,
K
2
,K
3
là các khoá khác nhau.
2. K
1
,
K
2
là các khoá khác nhau và K
3
= K
1.
3. K
1
=
K
2
=
K
3
- Twofish – do Bruce Schneier, John Kelsey, Doug Whiting, David Wagner
Chris Hall và Niels Ferguson (Mỹ)[5].
Hệ mã hoá khoá đối xứng có ƣu điểm và nhƣợc điểm sau:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
19
a. Ƣu điểm
Giải mã và mã hoá “nhanh” hơn hệ mã hoá khoá công khai
b. Nhƣợc điểm
- Hệ mã hoá khoá đối xứng “không an toàn” so với hệ mã hoá khoá công
khai bởi lý do sau:
Ngƣời mã hoá và ngƣời giải mã phải có “chung” một khoá. Khóa phải đƣợc
giữ bí mật tuyệt đối, vì biết khoá này “dễ” xác định đƣợc khoá kia và ngƣợc lại.
- Vấn đề thỏa thuận khoá và quản lý khóa chung là khó khăn và phức tạp.
Ngƣời gửi và ngƣời nhận phải luôn thống nhất với nhau về khoá. Việc thay đổi
khoá là khó và dễ bị lộ. Khóa chung phải đƣợc gửi cho nhau trên kênh an toàn.
Ngoài ra với hệ mã hoá khoá đối xứng không thể thực hiện chữ ký điện tử
(sẽ đƣợc trình bày trong chƣơng 2) do chỉ có một khoá chung duy nhất. Vì vậy,
không thể dùng trong giao dịch điện tử.Chính vì lý do trên mà hệ mã hoá khoá
công khai đƣợc sử dụng rộng rãi hơn hệ mã khoá đối xứng.
1.3. Hệ mã khoá công khai
1.3.1. Các khái niệm cơ bản
Hệ mã hoá khoá công khai là hệ mã hoá có khoá lập mã và khoá giải mã
khác nhau, biết đƣợc khoá này “khó” mà tính đƣợc khoá kia [4],[5],[6].
Hệ mã hoá này đƣợc gọi là hệ mã hoá khoá công khai vì khoá lập mã
đƣợc công khai ( gọi là khoá công khai – Public key), Khoá giải mã giữ bí mật
( gọi là khoá riêng – Private key). Đ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.
b. Nhƣợc điểm
Mã hóa và giải mã chậm hơn hệ mã hóa khóa đối xứng.
1.3.2. Một số khái niệm toán học cơ sở
1.3.2.1 Modulo số học và các nhóm Z(p)
*
, G(q)
Phần lớn các tính toán liên quan đến hệ mật mã khoá công khai và tiền
điện tử, chúng ta thƣờng sử dụng tập các số nguyên từ 0 tới p-1, trong đó p là số
nguyên tố lớn. Những số này cùng với hai phép toán, phép nhân * và phép luỹ
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
21
thừa sẽ tạo thành các cấu trúc nhóm có những tính chất quan trọng đƣợc sử
dụng để mật mã và bảo mật tiền điện tử [12].
Trƣớc tiên, chúng ta xét một số tính chất quan trọng của tập Z(p)
*
= {1, 2,
3, 4, , p-2, p-1}. Dễ nhận thấy, nếu ta nhân hai số bất kỳ trong tập này với
nhau, sau đó lấy số dƣ theo modulo p, thì kết quả là một số vẫn nằm trong tập
đó. Nghĩa là Z(p)
*
đóng với phép nhân. Mặt khác, nếu ta lấy một số bất kỳ trong
tệp đó, ví dụ số k, khi đó sẽ tồn tại một số khác, ký hiệu là k
-1
, sao cho k*k
-1
= 1
mod p. Nghĩa là mọi số nguyên trong tập này đều có phần tử nghịch đảo bội
Trên tập Z(p)
*
, chúng ta có thể định nghĩa thêm phép toán khác, phép chia.
Chúng ta định nghĩa phép chia cho k, ký hiệu là „/‟ nhƣ là phép nhân với phần tử
nghịch đảo của k, đó là k
-1
. Ví dụ 8/k = 8*k
-1
. Nếu k = 9 trong Z(11)
*
, thì 8/9 =
8*9
-1
= 8*5 = 40 = 7 mod 11.
Tƣơng tự, 3/10 = 3*10
-1
= 3*10 = 30 = 8 mod 11.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
22
Giả sử g là một số của Z(p)
*
. g đƣợc gọi là phần tử sinh (generator) mod p
nếu tập tất cả các luỹ thừa của g tạo ra tập tất cả các phần tử của Z(p)
*
. Nghĩa là
{g
1
2
, . . ., g
p-1
} = Z(p)
*
Ví dụ, 3 là phần tử sinh của Z(7)
*
, bởi vì
3
1
= 3 mod 7, 3
2
= 2 mod 7, 3
3
= 6 mod 7,
3
4
= 4 mod 7, 3
5
= 5 mod 7, 3
6
= 1 mod 7.
Hiển nhiên là {3, 3
2
, 3
3
, 3
4
, 3
*
là nhóm có bậc 6 mod 7 và không có số
luỹ thừa nào khác có tính chất trên.
Nói chung, với số nguyên tố q, 1< q < p, G(q) đƣợc xem nhƣ là một nhóm
(hoặc nhóm con) bậc q mod p, nếu với phần tử sinh g, 1 < g < p, chúng ta có {g,
g
2
, g
3
, , g
q
} là tập con của Z(p)
*
.
Nhận xét, giả sử g là phần tử của Z(p)
*
và g là phần tử sinh của Z(p)
*
nếu g
là phần tử có bậc là p-1, nghĩa là g
p-1
= 1, và không có số luỹ thừa nào nhỏ để
bằng 1 theo mod p.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
23
1.3.2.2 Quan hệ “đồng dƣ”
a. Khái niệm
do đó: b + m t = a = mq
a
+ r hay b = m(q
a
- t) + r (0 ≤ r < m). Điều đó chứng
tỏ khi chia a và b cho m đƣợc cùng số dƣ r, hay a ≡ b (mod m).
b. Các tính chất của quan hệ “đồng dƣ”
+) Quan hệ “đồng dƣ” là quan hệ tƣơng đƣơng trong Z:
Với mọi số nguyên dƣơng m ta có:
a ≡ a (mod m) với mọi a
Z; (tính chất phản xạ).
a ≡ b (mod m) thì b ≡ a (mod m); (tính chất đối xứng).
a ≡ b (mod m) và b ≡ c (mod m) thì a ≡ c (mod m); (tính chất bắc cầu).
+) Tổng hay hiệu các “đồng dƣ”:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
24
(a+b) (mod n) [(a mod n) + (b mod n)] (mod n)
(a- b) (mod n) [(a mod n) - (b mod n)] (mod n)
Tổng quát:
Có thể cộng hoặc trừ từng vế nhiều đồng dƣ thức theo cùng một modulo
m, ta đƣợc một đồng dƣ thức theo cùng modulo m, tức là:
Nếu a
i
≡ b
i
(mod m) , i = 1 k, thì
Hệ quả:
* Có thể cộng hoặc trừ cùng một số vào hai vế của một đồng dƣ thức.
* Có thể chuyển vế các số hạng của đồng dƣ thức bằng cách đổi dấu các số
hạng đó.
* Có thể cộng vào một vế của đồng dƣ thức một bội của modulo:
a ≡ b (mod m) → a+km ≡ b (mod m) với mọi k
Z
* Có thể nhân hai vế của một đồng dƣ thức với cùng một số:
a ≡ b (mod m) → ac ≡ bc (mod m) với mọi c
Z
* Có thể nâng lên lũy thừa bậc nguyên không âm cho 2 vế của một đồng dƣ
thức: a ≡ b (mod m) → a
n
≡ b
n
(mod m) với mọi n
Z
+
* Có thể chia 2 vế đồng dƣ thức cho một ƣớc chung nguyên tố với modulo:
c\a, c\b, (c,m)=1, a ≡ b (mod m) a/c ≡ b/c (mod m)
* Có thể nhân 2 vế đồng dƣ thức và modulo với cùng một số nguyên dƣơng,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn