HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
NGUYỄN THẾ BÌNH
ỨNG DỤNG QUẢN LÝ ĐỀ THI DỰA TRÊN MÃ HÓA IBE TẠI TRƯỜNG
ĐẠI HỌC VĂN HÓA DU LỊCH
LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI - NĂM 2013
LỜI CẢM ƠN
Trên thực tế không có thành công nào mà không gắn liền với những sự
hỗ trợ, giúp đỡ. Trong suốt thời gian từ khi bắt đầu học tập tại trường đến nay,
em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô Khoa sau
đại học trường Học viện Công nghệ Bưu chính Viễn thông Hà Nội đã cùng
i
với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho
chúng em trong suốt thời gian học tập tại trường, và luôn luôn tạo mọi điều
kiện tốt nhất cho chúng em trong suốt quá trình theo học tại. Em xin chân
thành cảm ơn Thầy, Cô và Ban lãnh đạo nhà trường!
Với lòng biết ơn sâu sắc nhất em xin gửi lời cảm ơn tới TS Phạm Thế
Quế, Khoa Công nghệ Thông tin - Học viện Bưu Chính Viễn Thông, là cán
bộ trực tiếp hướng dẫn khoa học cho em. Thầy đã dành nhiều thời gian cho
việc hướng dẫn em cách nghiên cứu, đọc tài liệu, cài đặt các thuật toán và
giúp đỡ em trong việc xây dựng chương trình, em xin chân thành cảm ơn
Thầy!
Và cuối cùng em xin bày tỏ lòng chân thành và biết ơn tới lãnh đạo
khoa Công nghệ Thông tin – Học viện Bưu chính Viễn thông Hà Nội cùng
bạn bè đồng nghiệp đã luôn ở bên cạnh những lúc em khó khăn và tạo điều
kiện thuận lợi giúp em hoàn thành luận văn.
Hà Nội, ngày 25 tháng 11 năm 2013
Học viên
Nguyễn thế bình
1.4.1. Bảo mật trong điện toán đám mây (cloud computing)
………
1.4.2. Mở rộng mô hình mã
hóa………………………………………….
1.4.3. An toàn trước các tấn công vật lý………………………………
1.4.4. An toàn trước sự tấn công của máy tính lượng tử……………
CHƯƠNG II - HỆ MẬT MÃ DỰA TRÊN ĐỊNH DANH ……………………
v
vii
viii
1
3
3
3
3
5
5
7
11
14
14
14
15
16
17
17
17
19
19
lý đề thi trong trường Đại học Văn hóa Thể thao và Du lịch Thanh
Hóa
3.2.1. Mô tả bài
toán
3.2.2. Mô hình hệ thống
3.2.3. Chương trình thử nghiệm
KẾT LUẬN
26
28
28
29
32
33
33
34
37
37
38
39
42
42
42
46
49
49
50
53
55
56
57
Technology
Viện quốc gia về chuẩn và công nghệ
OSI Open System Interconnection Kết nối giữa các hệ thống mở
PGP Pretty Good Private
PKI Public Key Infrastructure Cơ sở hạ tầng khoá công khai
RA Registration Authority Nhà quản lý đăng ký
RSA Rivest-Shamir-Aldeman
SET Secure Electronic Transaction Giao dịch điện tử an toàn
SHA Secure Hash Algorithm Thuật toán băm an toàn
TCP/IP Transmission Control Protocol/
Internet protocol
Giao thức điều khiển truyền dẫn/ giao
thức Internet
URL Uniform Resource Locator Bộ định vị tài nguyên
AES Advanced Encryption Standard Chuẩn mã hoá tiên tiến
ANSI American National Standards Viện tiêu chuẩn quốc gia Mỹ
v
Institude
CA Certification Authority Nhà cung cấp chứng thực
CRL Certificate Revocation List Danh sách các chứng thực thu hồi
DES Data Ecryption Standard Chuẩn mã dữ liệu
DNS Domain Name System Hệ thống tên miền
DSA Digital Signature Algorithm Thuật toán chữ ký điện tử
DSS Digital Signature Standard Chuẩn chữ ký điện tử
EDI Electronic Data Interchange Trao đổi dữ liệu điện tử
FIPS Federal Information Processing
Standard
Chuẩn xử lý thông tin liên bang
FTP File Transfer Protocol Giao thức truyền file
HTTP Hyper Text Transport Protocol Giao thức truyền siêu văn bản
dạng”
26
2.3 Mã hoá bằng hệ thống IBE 27
2.4 Giải mã bằng hệ thống IBE 28
3.1 Mô hình hệ thống nhận dạng IBE 45
3.2 Hệ thống mã hoá mô hình bảo mật 46
3.3 Sơ đồ phân tích hệ thống 51
vii
LỜI MỞ ĐẦU
Mã hóa dựa trên định danh (Indetity based encryption -IBE) hiện nay đang được
xem là một công nghệ mật mã mới có nhiều thuận tiện trong thực thi ứng dụng so với
các thuật toán khóa công khai khác. Đối với các hệ mật mã khóa công khai truyền
thống, việc cài đặt là khó khăn và tốn kém, ứng dụng thành công nhất của công nghệ
khóa công khai là việc sử dụng rộng rãi của SSL, nó yêu cầu tương tác tối thiểu với
người sử dụng khi được dùng để xác thực máy chủ và mã hóa các truyền thông với
máy chủ đó. Các ứng dụng mà yêu cầu người sử dụng quản lý hoặc sử dụng các khóa
công khai thì không thành công được như vậy.
IBE là một công nghệ mã hoá khoá công khai, cho phép một người sử dụng
tính khoá công khai từ một chuỗi bất kỳ. Chuỗi này như là biểu diễn định danh của
dạng nào đó và được sử dụng không chỉ như là một định danh để tính khoá công
khai, mà còn có thể chứa thông tin về thời hạn hợp lệ của khoá để tránh cho một
người sử dụng dùng mãi một khoá IBE hoặc để đảm bảo rằng người sử dụng sẽ nhận
được các khoá khác nhau từ các hệ thống IBE khác nhau. Trong chuỗi này có chứa
thông tin là duy nhất đối với mỗi cài đặt IBE cụ thể, chẳng hạn như URL mà định
danh máy chủ được sử dụng trong cài đặt của các hệ thống IBE khác nhau. Khả năng
tính được các khoá như mong muốn làm cho các hệ thống IBE có các tính chất khác
với các tính chất của các hệ thống khoá công khai truyền thống, những tính chất này
tạo ra các ưu thế thực hành đáng kể trong nhiều tình huống. Bởi vậy, có một số ít
tình huống không thể giải quyết bài toán bất kỳ với các công nghệ khoá công khai
truyền thống, nhưng lại có thể giải quyết được với IBE và sử dụng IBE có thể đơn
thể tách rời của một kỹ thuật mật mã bởi vì mật mã (giấu thông tin) chỉ có ý nghĩa khi
ta có thể giải mã (phục hồi lại) được thông tin đó. Do vậy, khi chỉ dùng thuật ngữ mật
mã thì nó có nghĩa bao hàm cả mã hóa và giải mã.
Kỹ thuật mã hoá được chia thành hai loại: mã hoá dùng khoá đối xứng
(symmetric key encryption) và mã hoá dùng khoá bất đối xứng (asymmetric key
encryption) như sẽ trình bày trong các phần tiếp theo.
1.1.2. Các thành phần của một hệ thống mã hoá
Hình 1.1 mô tả nguyên tắc chung của một hệ thống mật mã quy ước. Các thành
phần trong một hệ thống mật mã điển hình bao gồm:
- Plaintext: là thông tin gốc cần truyền đi giữa các hệ thống thông tin
- Encryption algorithm: thuật tóan mã hóa, đây là cách thức tạo ra thông tin mật
từ thông tin gốc.
3
- Key: khóa mật mã, gọi tắt là khóa. Đây là thông tin cộng thêm mà thuật tóan
mã hóa sử dụng để trộn với thông tin gốc tạo thành thông tin mật.
- Ciphertext: thông tin đã mã hóa (thông tin mật). Đây là kết quả của thuật toán
mã hóa.
- Decryption algorithm: Thuật tóan giải mã. Đầu vào của thuật tóan này là thông
tin đã mã hóa (ciphertext) cùng với khóa mật mã. Đầu ra của thuật tóan là thông tin gốc
(plaintext) ban đầu.
Ký hiệu:
P là một tập hữu hạn các bản rõ (plaintext).
C là một tập hữu hạn các bản mã (ciphertext)
K là một tập hữu hạn các khóa. Với mỗi một k∈K
Có một luật mã hóa e
k
∈ E sao cho e
k
: P → C
Và một luật giải mã tương ứng d
algorithm)
Thuật toán mã
hoá
(Encryption
algorithm)
Hình 1.1: Cấu trúc một hệ thống mật mã quy ước
4
Nếu mã hóa và giải mã sử dụng chung khóa thì hệ mật mã được gọi là hệ mật
mã đối xứng (hay hệ mật mã khóa bí mật). Nếu việc mã hóa và giải mã sử dụng
những khóa khác nhau thì được gọi là hệ mật mã khóa công khai (hay là không đối
xứng). Khóa mã hóa là công khai, khóa giải mã được giữ bí mật. Hệ mật mã khóa
công khai có nhiều ưu điểm hơn so với hệ mật mã đối xứng, có thể ứng dụng cho việc
xác thực, chữ ký điện tử vv … Tuy nhiên nhược điểm của nó là tốc độ chậm nên không
thể sử dụng cho kênh thông tin có dung lượng lớn. Thực tế hiện nay người ta phối hợp
cả hai phương pháp để tận dụng những ưu điểm của từng phương pháp.
1.2. Hệ mật mã khóa công khai
1.2.1. Cấu trúc hệ thống mật mã khóa công khai
Đặc trưng của kỹ thuật mật mã khóa công khai, hay còn gọi là hệ mật mã khóa
bất đối xứng là dùng 2 khóa riêng biệt cho hai quá trình mã hóa và giải mã, trong đó có
một khóa được phổ biến công khai (public key hay PU) và khóa còn lại được giữ bí
mật (private key hay PR). Cả hai khoá đều có thể được dùng để mã hoá hoặc giải mã.
Việc chọn khoá công khai hay khoá bí mật cho quá trình mã hoá sẽ tạo ra hai ứng dụng
khác nhau của kỹ thuật mật mã bất đối xứng:
- Sử dụng khoá công khai để mã hoá và khoá bí mật để giải mã trong các ứng
dụng bảo mật thông tin (Confidentiality).
- Nếu dùng khoá bí mật để mã hoá và khoá công khai để giải mã, có các ứng
dụng xác thực nội dung và nguồn gốc thông tin (Authentication).
Thuật toán mật mã bất đối xứng dựa chủ yếu trên các hàm toán học hơn là dựa
vào các thao tác trên chuỗi bit. Mật mã hóa bất đối xứng còn được gọi bằng một tên
thông dụng hơn là mật mã hóa dùng khóa công khai (Public key Encryption).
Mật mã hóa bất đối xứng được sử dụng trong các ứng dụng: che giấu thông tin,
tạo chữ ký số (digital signature) và trao đổi khóa trong các thuật toán mật mã đối xứng
(key exchange).
1.2.2. Thuật toán mật mã RSA
RSA là thuật toán mật mã bất đối xứng được xây dựng bởi Ron Rivest, Adi
Shamir và Len Adleman tại viện công nghệ Massachusetts (MIT), do đó được đặt tên
là Rivest - Shamir - Adleman hay RSA. Thuật toán này ra đời năm 1977 và cho đến
nay đã được ứng dụng trong nhiều lĩnh vực. Cũng như các thuật toán mật mã bất đối
xứng khác, nguyên lý của RSA dựa chủ yếu trên lý thuyết số, không dựa trên các thao
tác xử lý bit.
RSA là một thuật toán mật mã khối có kích thước 1024 hoặc 2048 bit. Thông tin
gốc của RSA được xử lý như các số nguyên. Ví dụ, khi chọn kích thước khối của thuật
toán là 1024 bit thì số nguyên này có giá trị từ 0 đến 21024 - 1, tương đương với số
thập phân có 309 chữ số. Chú ý rằng đây là những số nguyên cực lớn, không thể xử lý
được bằng cách sử dụng các cấu trúc dữ liệu có sẵn của các ngôn ngữ lập trình phổ
biến.
Thuật toán RSA được mô tả như sau:
7
1. Để tạo ra một cặp khóa RSA, trước hết, chọn hai số nguyên tố đủ lớn p và q.
Gọi N là tích của p và q (N = pq).
2. Chọn một số e sao cho e và (p-1)(q-1) là hai số nguyên tố cùng nhau. Tìm số
d sao cho ed = 1 mod (p-1)(q-1).
3. Với 3 thành phần còn lại là N, e và d, ta đó:
− Khóa công khai (public key) là tổ hợp (N, e)
− Khóa bí mật (private) là tổ hợp (N, d).
4. Mã hóa một khối thông tin gốc M được thực hiện theo công thức:
C = M
e
mod N (với M là số nguyên nhỏ hơn N)
5. Quá trình giải mã C được thực hiện theo công thức:
khoá, mã hoá và giải mã được tóm tắt như sau:
Trong thực tế, để đạt được độ an toàn cao, cặp khóa phải được chọn trên các số
p và q đủ lớn (N nhỏ nhất phải là 1024 bit), do vậy, vấn đề thực thi RSA bao gồm các
phép toán lũy thừa trên các số rất lớn. Vấn đề giảm chi phí tính toán và tăng tốc độ
thực hiện thuật toán RSA là một trong những vấn đề quan trọng cần phải giải quyết.
Trên các hệ thống máy tính hiện nay, hiệu suất thực hiện giải thuật RSA là chấp nhận
được.
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích
ra thừa số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2 bài toán trên là khó
(không tìm được thuật toán hiệu quả) thì không thể thực hiện được việc phá mã toàn bộ
đối với RSA. Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi
bản rõ an toàn. Bài toán RSA là bài toán tính căn bậc e mod n (với n là hợp số): tìm số
1. Tạo khoá:
• Chọn p, q (p và q là số nguyên tố, p ≠ q)
• Tính N = p.q
• Tính φ(N) = (p – 1) (q – 1)
• Chọn e sao ước số chung lớn nhất của e và φ(N) là 1
• Chọn d sao cho e.d mod φ(N) = 1
• Cặp khoá RSA được tạo ra là PU = (N, e), PR = (N, d)
2. Mã hoá:
• C = M
e
mod N (M là số nguyên nhỏ hơn N)
3. Giải mã:
• M = C
d
mod N
9
m sao cho m
e
1
số nguyên tố sao
cho q=2q
1
+1 cũng là nguyên tố.
10
Giá trị d cần phải đủ lớn. Năm 1990 Michael J. Wiener đã chứng minh rằng nếu
như
qpq 2<<
và
3/
4/1
nd <
, thì có phương pháp hiệu quả để tính d theo n và e.
Hình 1.3 : Sơ đồ mã hóa công khai
1.2.3. Thuật toán trao đổi khoá Diffie-Hellman
Diffie-Hellman là một thuật toán dùng để trao đổi khóa (key exchange), không
sử dụng để mật mã hóa dữ liệu. Tuy nhiên, Deffie-Hellman lại có ích trong giai đọan
trao đổi khóa bí mật của các thuật toán mật mã đối xứng. Một vấn đề quan trọng liên
quan đến tính an toàn của các thuật toán mật mã đối xứng là vấn đề thống nhất khoá bí
mật giữa các thực thể thông tin.
Thuật toán trao đổi khoá Diffie-Hellman dựa trên phép logarit rời rạc (discrete
log). Cho trước một số g và x = g
k
, để tìm k, ta đơn giản thực hiện phép logarit: k =
log
g
(x). Tuy nhiên, nếu cho trước g, p và (g
k
mod p), thì quá trình xác định k được thực
XaXb
mod p). Bằng cách tương
tự, user A cũng xác định được khoá bí mật này bằng cách tính giá trị (g
Xb
mod p)
Xa
=
(g
XaXb
mod p).
Giả sử trong quá trình trao đổi các giá trị (g
Xa
mod p) và (g
Xb
mod p), một người
thứ 3 nào nó bắt được thông tin này thì cũng rất khó xác định được a và b vì độ phức
tạp của phép tóan logarit rời rạc là rất cao.
Chọn số bí mật X
a
< p
Tính Y
a
= (g
Xa
mod p) và
gởi cho B
Tính K = (Y
b
)
Xa
a
= (3
97
mod 353) = 40 và gửi cho B.
User B tính được Y
b
= (3
233
mod 353) = 248 và gửi cho A.
User A tính được khoá bí mật K = (Y
b
)
Xa
mod 353=248
97
mod 353= 160
User B tính được khoá bí mật K =(Y
a
)
Xb
mod 353= 40
97
mod 353 = 160
Tính an toàn của Diffie-Hellman dựa trên độ phức tạp của phép toán logarit rời
rạc. Nói chung, việc xác định các giá trị X
a
, X
b
từ các giá trị p, g, Y
a
1
dựa trên Y
C1
, và gửi lại cho
A giá trị Y
b
. User C lại chặn lấy giá trị này và mạo danh B để gửi cho A giá trị Y
C2
.
- User A xác định khoá K
2
dựa trên Y
C2
. Bắt đầu từ đây, các thông tin trao đổi
giữa A và B đều được C chặn bắt và thay đổi bằng cách sử dụng cặp khoá K
1
và K
2
.
13
Như vậy, thuật toán Diffie-Hellman không giải quyết được vấn đề này do không
có cơ chế xác thực giữa các thực thể trao đổi khoá. Điểm yếu này được khắc phục bằng
cách sử dụng kết hợp với các thuật toán xác thực như sẽ trình bày ở phần kế tiếp.
Ngoài hai thuật toán RSA và Diffie-Hellman, một số thuật toán khác cũng được
phát triển dựa trên nguyên lý sử dụng một cặp khoá công khai và bí mật. Elliptic-Curve
Cryptography (ECC) là một giải thuật mới đang được thử nghiệm và hứa hẹn nhiều ưu
điểm so với RSA như độ phức tạp tính toán giảm trong khi tính an toàn vẫn được đảm
bảo. ECC thích hợp với các ứng dụng chạy trên các thiết bị có năng lực xử lý hạn chế
chẳn hạn như các thiết bị nhúng (embded devices).
1.2.4. Đánh giá kỹ thuật mật mã bất đối xứng
1.3.2. Phương pháp xác thực thông tin bằng mã xác thực
Nơi gửi thông tin Nơi nhận thông tin
Hình 1.5: Xác thực thông tin bằng mật mã khóa công khai
C
M: thông tin gốc E: thuật tóan mã hóa D: Thuật tóan giải mã
C: Thông tin mật PRa: Khóa bí mật của bên gửi.
PUa: Khóa công khai của bên gửi
15
Mã xác thực MAC (Message Authentication Code) được sinh ra từ một khối
thông tin gốc có độ dài bất kỳ và một khóa bí mật. Kích thước của MAC là cố định,
không phụ thuộc vào kích thước của khối dữ liệu gốc và thường nhỏ hơn dữ liệu gốc.
Đối tượng gửi sẽ gửi kèm giá trị MAC đi cùng với thông tin gốc. Phía nhận sau khi
nhận được thông tin gốc cùng với giá trị MAC gửi kèm sẽ thực hiện thao tác tạo ra giá
trị
MAC mới từ thông tin gốc cùng với khóa bí mật đã thống nhất giữa hai bên.
Nếu giá trị MAC vừa tạo ra giống với giá trị MAC nhận được từ phía gửi, phía nhận có
thể chắc chắn rằng thông tin gốc không bị thay đổi trong quá trình truyền.
Việc dùng MAC để xác thực thông tin dựa vào hai cơ sở:
- Ứng với một khối thông tin gốc M và một khóa bí mật K, hàm C chỉ tạo ra duy
nhất một mã xác thực MAC.
- Chỉ có phía gửi và phía nhận hợp lệ mới được biết khóa K.
Nơi gửi thông tin Nơi nhận thông tin
Mã xác thực (MAC)
M: thông tin gốc C: Hàm tạo mã xác thực
K: Khóa bí mật dùng chung giữa bên gởi và bên nhận
| |: Nối mã xác thực vào thông tin gốc
Hình 1.6: Xác thực thông tin dùng MAC
16
Có hai kỹ thuật tạo ra mã xác thực MAC: kỹ thuật thứ nhất dùng cơ chế mật mã
khối (Cipher Block Chaining) và được gọi là CMAC hay CBC-MAC. Kỹ thuật thứ hai
dụng khác.
1.4. Hướng phát triển mật mã khóa công khai
1.4.1. Bảo mật trong điện toán đám mây (cloud computing)
Điện toán đám mây cho phép lưu trữ những khối lượng thông tin khổng lồ trên
mạng và thực hiện các thao tác trên nó một cách dễ dàng. Nó có thể giúp giải quyết
những bài toán mà trước đây khó có thể giải quyết trên mạng máy tính mang tính chất
cục bộ. Tuy nhiên, điều đó mang tới một thách thức vô cùng lớn về tính bảo mật. Có
hai điều có vẻ như mâu thuẫn nhau: lưu trữ dữ liệu lớn trên các hệ thống xa lạ rõ ràng
rất dễ bị đánh cắp thông tin, nhưng nếu ta hóa toàn bộ dữ liệu thì sẽ khó có thể tận
dụng sức mạnh của tính toán đám mây để thao tác dữ liệu đó.
Nhưng gần đây, vấn đề tưởng khó có thể giải quyết này đã có hy vọng, với công
trình của Gentry năm 2009 về mật mã đẳng cấu theo cả phép nhân và phép cộng (fully
homomorphic encryption). Hệ mã này cho phép, từ hai bản mã của hai bản rõ m và m’,
có thể tính được bản mã nhân của mm’ và bản mã cộng của m+m’. Vấn đề với bề
ngoài đơn giản nhưng chứa đựng không ít nghịch lý trong đó: hệ mã vừa phải đảm bảo
an toàn cho dữ liệu (không thể biết thông tin về bản rõ m, m’), mà lại vẫn thao tác được
trên dữ liệu đó. Và cũng với bề ngoài giản đơn như vậy, nó lại mang đến một ý nghĩa
rất bao quát: do mọi tính toán đều có thể qui về các phép toán cơ bản là cộng và nhân,
một hệ mã như thế sẽ cho khả năng làm mọi tính toán trên dữ liệu được mã hóa. Điều
đó có nghĩa là có thể để tất cả dữ liệu bảo mật trên những máy mạng không an toàn mà
vẫn có thể tận dụng được sức tính toán lớn của điện toán đám mây để thao tác trên dữ
liệu được mã hóa. Tuy nhiên, hiện tại, hệ mã Gentry và một số hệ mã cải tiến còn có
18