ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
PHẠM THỊ TUYẾT
NGHIÊN CỨU MỘT SỐ THUẬT TOÁN HỆ MẬT MÃ
KHOÁ CÔNG KHAI ELGAMAL VÀ ỨNG DỤNG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
THÁI NGUYÊN - 2015
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
PHẠM THỊ TUYẾT
NGHIÊN CỨU MỘT SỐ THUẬT TOÁN HỆ MẬT MÃ
KHOÁ CÔNG KHAI ELGAMAL VÀ ỨNG DỤNG
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS NGUYỄN NGỌC CƯƠNG
THÁI NGUYÊN - 2015
i
LỜI CAM ĐOAN
Tôi xin cam đoan luận văn “ Nghiên cứu một số thuật toán hệ mật mã
khoá công khai ElGamal và ứng dụng” là công trình nghiên cứu của cá nhân tôi
tìm hiểu, nghiên cứu dưới sự hướng dẫn của TS Nguyễn Ngọc Cương. Các kết quả
là hoàn toàn trung thực, toàn bộ nội dung nghiên cứu của luận văn, các vấn đề
được trình bày đều là những tìm hiểu và nghiên cứu của chính cá nhân tôi hoặc là
được trích dẫn từ các nguồn tài liệu được trích dẫn và chú thích đầy đủ.
TÁC GIẢ LUẬN VĂN
Phạm Thị Tuyết
ii
LỜI CẢM ƠN
Học viên xin bày tỏ lời cảm ơn chân thành tới tập thể các thầy cô giáo Viện
công nghệ thông tin, các thầy cô giáo Trường Đại học Công nghệ thông tin và
truyền thông - Đại học Thái Nguyên đã mang lại cho học viên kiến thức vô cùng quý
giá và bổ ích trong suốt quá trình học tập chương trình cao học tại trường. Đặc biệt
học viên xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo TS Nguyễn Ngọc Cương -
Học viện an ninh đã định hướng khoa học và đưa ra những góp ý, gợi ý, chỉnh sửa
quý báu, quan tâm, tạo điều kiện thuận lợi trong quá trình nghiên cứu hoàn thành
luận văn này.
Cuối cùng, học viên xin chân thành cảm ơn các bạn bè đồng nghiệp, gia
đình và người thân đã quan tâm, giúp đỡ và chia sẻ với học viên trong suốt quá
trình học tập.
Do thời gian và kiến thức có hạn nên luận văn chắc không tránh khỏi
những thiếu sót nhất định. Học viên rất mong nhận được những sự góp ý quý báu
của thầy cô và các bạn.
Thái Nguyên, ngày tháng năm 2015
HỌC VIÊN
Phạm Thị Tuyết
iii
MỤC LỤC
LỜI CAM ĐOAN .................................................................................................... i
LỜI CẢM ƠN ........................................................................................................ ii
MỤC CÁC HÌNH VẼ, ĐỒ THỊ ............................................................................. vi
MỞ ĐẦU ................................................................................................................1
CHƯƠNG 1 ............................................................................................................3
TỔNG QUAN VỀ CÁC HỆ MẬT MÃ ...................................................................3
1.1. Lý thuyết toán học ............................................................................................3
1.1.1. Số nguyên tố, UCLN, BCNN ..................................................................... 3
1.1.2. Nhóm, vành, trường, trường hữu hạn ......................................................... 3
1.1.3 Số học Modulo (phép tính đồng dư) ............................................................ 5
1.1.4. Không gian rời rạc của phép lấy Logarit .................................................... 6
1.1.5. Định lí Fermat và định lí Euler ................................................................... 6
1.1.6. Hàm một phía và hàm một phía có cửa sập ................................................ 6
1.1.7. Định lí Trung Quốc về phần dư: ................................................................. 7
1.2. Mật mã .............................................................................................................7
1.2.1. Khái niệm .................................................................................................. 7
1.2.2. Những yêu cầu đối với hệ mật mã .............................................................. 8
1.2.3. Hệ mã hóa RSA ......................................................................................... 8
1.2.4. Hệ mã hóa Paillier ..................................................................................... 9
1.2.5. Hệ mã hóa ElGamal ................................................................................. 10
1.2.6 Hệ mật đường cong Eliptic ........................................................................ 10
1.3. Chữ ký điện tử ................................................................................................ 11
1.3.1. Sơ đồ chữ ký điện tử ................................................................................ 11
1.3.2. Chữ ký mù RSA ...................................................................................... 12
1.3.3. Chữ ký nhóm (Group Signature) .............................................................. 13
1.4. Khái niệm xác thực điện tử ............................................................................. 15
iv
1.5. Hàm băm (Hash Function) .............................................................................. 16
CHƯƠNG :HỆ MẬT MÃ ELGAMAL CẢI TIẾN VÀ MÃ HÓA ĐỒNG CẤU .... 17
2.1. Hệ mã hóa ElGamal cải tiến ........................................................................... 17
2.1.1. Thuật toán mật mã ElGamal cổ điển ........................................................ 17
2.1.2. Một số thuật toán ElGamal cải tiến [3] ..................................................... 18
2.1.2.1 Thuật toán thứ nhất .......................................................................... 18
2.1.2.2 Thuật toán thứ hai ............................................................................ 21
2.1.2.3 Thuật toán thứ ba .............................................................................. 23
2.2. Hệ mã hóa đồng cấu ....................................................................................... 26
2.2.1. Khái niệm mã hóa đồng cấu ..................................................................... 26
2.2.2. Hệ mã hoá Elgamal có tính chất đồng cấu ................................................ 26
2.2.3. Mô hình hệ mã hóa đồng cấu ElGamal cho mô hình bỏ phiếu có/không ... 27
2.3. Sơ đồ chia sẻ bí mật ........................................................................................ 29
2.3.1. Khái niệm chia sẻ bí mật .......................................................................... 29
2.3.2. Giao thức “Chia sẻ bí mật” Shamir .......................................................... 31
2.3.2.1. Khái niệm sơ đồ ngưỡng A(t, m) ...................................................... 31
2.3.2.2. Chia sẻ khoá bí mật K ...................................................................... 32
2.3.2.3. Khôi phục khóa bí mật K từ t thành viên ......................................... 33
CHƯƠNG 3: ỨNG DỤNG HỆ MẬT MÃ ELGAMAL TRONG BÀI TOÁN BỎ
PHIẾU THĂM DÒ TÍN NHIỆM ........................................................................... 37
3.1. Hệ thống bỏ phiếu điện tử [5] ......................................................................... 37
3.1.1. Khái niệm bỏ phiếu điện tử ...................................................................... 37
3.1.2. Yêu cầu của hệ thống bỏ phiếu điện tử ..................................................... 38
3.1.3. Những vấn đề cần giải quyết .................................................................... 38
3.1.4.Các thành phần trong hệ thống bỏ phiếu điện tử ....................................... 39
3.1.5. Quy trình bài toán bỏ phiếu điện tử .......................................................... 39
3.2. Ứng dụng hệ mật ElGamal trong quá trình bỏ phiếu thăm dò tín nhiệm .......... 41
3.2.1. Thiết lập .................................................................................................. 41
3.2.3. Mở phiếu bầu ........................................................................................... 43
3.3. Xây dựng chương trình thử nghiệm mô hình bỏ phiếu thăm dò tín nhiệm ....... 44
v
3.3.1. Môi trường cài đặt và thử nghiệm ............................................................ 44
3.3.2. Phát biểu bài toán .................................................................................... 44
3.3.3 Các đối tượng của hệ thống...................................................................... 45
3.3.4. Phân tích và thiết kế chương trình bỏ phiếu: ............................................ 45
3.3.5 Các chức năng chính ................................................................................. 45
3.3.6. Thứ tự thực hiện chương trình ................................................................. 46
3.3.7. Kết quả thực nghiệm ................................................................................ 47
3.4. Phân tích vấn đề bảo mật cần đạt được ........................................................... 56
3.5. Các tính chất đạt được .................................................................................... 56
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI ................................................ 57
TÀI LIỆU THAM KHẢO ..................................................................................... 58
vi
MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1.1. Sơ đồ mã hóa và giải mã ..........................................................................7
Hình 2.1. Sơ đồ bỏ phiếu đồng ý/ không đồng ý ...................................................... 28
Hình 2.2. Sơ đồ ngưỡng Shamir............................................................................ 32
Hình 3.1. Sơ đồ Quy trình bỏ phiếu điện tử ............................................................ 40
Hình 3.2. Sơ đồ mô tả bỏ phiếu thăm dò tín nhiệm ................................................ 41
Hình 3.3. Sơ đồ giai đoạn bỏ phiếu tín nhiệm ........................................................ 42
Hình 3.4. Giao diện chính của chương trình ........................................................... 47
Hình 3.5. Ban tổ chức đăng nhập vào hệ thống ..................................................... 48
Hình 3.6. Thông báo tạo cơ sở dữ liệu cán bộ thành công. ..................................... 48
Hình 3.7. Bảng danh sách cán bộ sau khi được ban tổ chức tạo cơ sở dữ liệu ....... 49
Hình 3.8. Thông báo tạo cơ sở dữ liệu ban kiểm phiếu thành công. ....................... 49
Hình 3.9. Cán bộ đăng nhập vào hệ thống.............................................................. 49
Hình 3.10. Quá trình bỏ phiếu ............................................................................... 50
Hình 3.11. Cán bộ cập nhật thông tin ..................................................................... 50
Hình 3.12. Thông báo nhắc nhở lựa chọn của cán bộ ............................................. 51
Hình 3.13. Thông báo xác nhận lựa chọn của cán bộ ............................................. 51
Hình 3.14. Ban kiểm phiếu đăng nhập vào hệ thống .............................................. 52
Hình 3.14. Mảnh khóa của ban kiểm phiếu ............................................................ 52
Hình 3.15. Ban kiểm phiếu cập nhật thông tin ....................................................... 53
Hình 3.16. Thông báo xác nhận quá trình gửi mảnh khóa ...................................... 53
Hình 3.17. Xác nhận tổng hợp đủ các mảnh khóa .................................................. 54
Hình 3.18. Thông báo ghép mảnh khóa thành công ............................................... 54
Hình 3.19. Kết quả bỏ phiếu .................................................................................. 55
Hình 3.20. Cơ sở dữ liệu trong mô hình bỏ phiếu tín nhiệm ................................... 56
1
MỞ ĐẦU
1. Tính khoa học và cấp thiết của đề tài
Cùng với sự phát triển của công nghệ thông tin, hiện nay vấn đề an toàn thông
tin trở nên hết sức cần thiết trên qui mô toàn cầu. Đảm bảo tính bảo mật, khả năng
xác thực nguồn gốc gói tin trong quá trình truyền tải thông tin qua môi trường
không an toàn như Internet là một vấn đề nóng trong nghiên cứu và thực tiễn. Để
đảm bảo tính bảo mật và xác thực người ta cần phải mã hoá, có một số thuật toán
mã hoá công khai rất nổi tiếng: RSA, ElGamal, ... Tuy nhiên, các hệ mật mã này có
nhược điểm là không có cơ chế xác thực thông tin được bảo mật (nguồn gốc, tính
toàn vẹn) do đó chúng không có khả năng chống lại một số dạng tấn công giả mạo
trong thực tế. Chính vì vậy hiện nay, người ta [3] đã đề xuất một số cải tiến hệ mật
mã ElGamal. Ưu điểm của các thuật toán mới đề xuất này là ở chỗ cho phép bảo
mật và xác thực thông tin một cách đồng thời mà mức độ an toàn của các thuật toán
mới đề xuất không nhỏ hơn mức độ an toàn của thuật toán ElGamal xét theo khả
năng chống thám mã khi tấn công trực tiếp vào các thủ tục mã hóa và giải mã.
Để góp phần nâng cao hiệu năng của phương pháp mã hóa ElGamal. Trong
luận văn này, học viên đặt mục tiêu nghiên cứu, thử nghiệm thuật toán mã hóa
Elgamal và các cải tiến mới của các tác giả đã đưa ra, so sánh hiệu quả của chúng
và kiểm định thuật toán này bằng một ứng dụng trong thực tiễn. Đây là bài toán lựa
chọn các khả năng trong các giải pháp đã có bằng việc mã hóa và xác thực như bài
toán bỏ phiếu điện tử do các cán bộ tiến hành hoặc bài toán thăm dò tín nhiệm lãnh
đạo tại một đơn vị. Những bài toán này luôn đòi hỏi tính bí mật, ví dụ trong bỏ
phiếu điện tử (e-voting), việc đảm bảo tính đúng đắn bảo mật ở đây có thể bao gồm
cả việc không để lộ danh tính cử tri (ai bỏ phiếu cho ứng viên nào?), tính duy nhất
(mỗi cử tri đảm bảo chỉ tối đa 1 lần bỏ phiếu)...
2. Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Hệ mật khóa công khai ElGamal và các cải tiến của
hệ mật mã.
2
- Phạm vi nghiên cứu: Nghiên cứu cải tiến dựa trên thuật toán đã có và xây
dựng chương trình ứng dụng trong bài toán thăm dò dư luận về mức độ tín nhiệm
đối với một đơn vị (ở đây là tổng công ty xăng dầu Việt Nam).
3. Hướng nghiên cứu của đề tài
- Nghiên cứu các đề xuất một số thuật toán mật mã khóa công khai được phát
triển từ hệ mật ElGamal của các tác giả đã công bố để xây dựng chương trình ứng
dụng trong bài toán bỏ phiếu thăm dò dư luận về mức độ tín nhiệm.
- Đánh giá ưu điểm của các thuật toán mới do các tác giả đã đề xuất về mức độ
bảo mật và xác thực thông tin một cách đồng thời.
4. Những nội dung nghiên cứu chính
Luận văn được trình bày trong 3 chương, có phần mở đầu, phần kết luận,
phần mục lục, phần tài liệu tham khảo. Các nội dung cơ bản của luận văn được trình
bày theo cấu trúc sau:
Chương 1: TỔNG QUAN VỀ CÁC HỆ MẬT MÃ
Trong chương này tổng trình bày một số khái niệm cơ bản trong toán học mà
các hệ mã hoá thường sử dụng như: mod, số nguyên tố, vành Zn, các phép toán
cộng, nhân, bài toán logarrit rời rạc trên không gian Zn.... Sau đó đưa ra các khái
niệm mật mã, các thuật toán mã hoá, chữ ký số phục vụ cho việc mã hoá thông tin.
Chương 2: HỆ MẬT MÃ ELGAMAL CẢI TIẾN VÀ MÃ HÓA ĐỒNG CẤU
Tập trung nghiên cứu một số thuật toán mật mã ElGamal cải tiến, tính chất
đồng cấu của hệ mật ElGamal và sơ đồ chia sẻ bí mật theo ngưỡng Shamir.
Chương 3: ỨNG DỤNG HỆ MẬT MÃ ELGAMAL TRONG BÀI TOÁN BỎ PHIẾU
THĂM DÒ TÍN NHIỆM
Cài đặt thử nghiệm thuật toán hệ mật ElGamal cải tiến và kỹ thuật chia sẻ
khóa bí mật Shamir.
3
CHƯƠNG 1
TỔNG QUAN VỀ CÁC HỆ MẬT MÃ
1.1. Lý thuyết toán học
1.1.1. Số nguyên tố, UCLN, BCNN
a), Số nguyên tố: là số nguyên dương lớn hơn 1và chỉ có duy nhất 2 ước là 1và
chính nó.
b), Ước chung lớn nhất (ƯCLN):
Cho hai số nguyên a và b, b 0. Nếu có một số nguyên q sao cho a = b*q,
thì ta nói rằng a chia hết cho b(b\a). Khi đó b là ước của a và a là bội của b.
Số nguyên d được gọi là ước chung của các số nguyên a1, a2, .., an nếu nó là
ước của tất cả các số đó.
d được gọi là ước chung lớn nhất của a1, a2, .., an nếu d > 0 và là số lớn nhất
trong tập hợp các ước chung của các số đó. Ký hiệu d = gcd ( a1, a2, .., an ) hay d
= UCLN (a1, a2, .., an ).
a) Bội chung nhỏ nhất (BCNN):
Số nguyên m được gọi là bội chung của các số nguyên a1, a2, .., an nếu nó là
bội của tất cả các số đó.
m được gọi là bội chung nhỏ nhất của a1, a2, .., an nếu m > 0 và là số nhỏ nhất
trong tập hợp các bội chung của các số đó. Kí hiệu m = lcm(a1, a2, .., an ) hay m
= BCNN(a1, a2, .., an ).
Hai số nguyên tố p và q được gọi là nguyên tố cùng nhau nếu ước chung lớn
nhất của chúng bằng 1. Kí hiệu: UCLN (m, n) = 1
1.1.2. Nhóm, vành, trường, trường hữu hạn
a) Phép toán hai ngôi
Cho G là một tập hơp. Phép toán hai ngôi (*) là một ánh xạ:
(*): G G G
( x, y ) z x * y G , x, y G
Ví dụ: G = Z. Phép toán (*) là phép (+)
b) Nhóm
Nhóm là bộ các phần tử (G, *) thỏa mãn các tính chất sau:
4
- Tính chất kết hợp: ( x * y ) * z = x * ( y * z ), x, y, z G
- Tồn tại phần tử trung lập e G: e * x = x * e = x, x G
- Tồn tại phần tử nghịch đảo x’ G: x’ * x = x * x’ = e
Nhóm Cyclic: Nhóm (G, *) được gọi là nhóm Cyclic nếu nó được sinh ra bởi
một trong các phần tử của nó. Tức là có phần tử g G mà với mỗi a G, đều tồn
tại số n N để gn = a. Khi đó g là phần tử sinh hay phần tử nguyên thủy của nhóm G.
Ví dụ: (Z+,*) gồm các số nguyên dương là nhóm Cyclic có phần tử sinh là 1.
Cấp của nhóm Cyclic: Cho (G,*) là nhóm Cyclic với phần tử sinh là g, và
phần tử trung lập e. Nếu tồn tại số tự nhiên nhỏ nhất n mà gn = e thì G sẽ chỉ gồm
có n phần tử khác nhau: e, g, g1, g2,…, gn-1. Khi đó G được gọi là nhóm Cyclic hữu
hạn cấp n. Nếu không tồn tại số tự nhiên n để gn = e thì G có cấp vô hạn.
c, Vành
Vành là một tập R với 2 toán tử + (cộng) và * (nhân) thỏa mãn các điều kiện
sau:
<R,+> là nhóm Abel
<R,*> là nửa nhóm
Phép nhân phân phối đối với phép cộng: với các phần tử tùy ý x, y, z X ta có:
x(y + z) = xy + z và
(y + z) x = yx + zx
Nếu phép nhân là giao hoán thì R được gọi là vành giao hoán
d, Trường
Giả sử F là tập hợp khác rỗng, trên đó có hai phép toán đóng hai ngôi bất
kỳ, chẳng hạn ký hiệu là + (cộng) và * (nhân). F là một trường nếu và chỉ nếu:
(F,+) là nhóm giao hoán với phần tử đơn vị là "0"
(F\{0},*) là nhóm giao hoán với phần tử đơn vị là "1"
Các phép toán cộng và nhân có tính chất phân phối: a(b+c) = ab + ac
Số phần tử của một trường được gọi là bậc của một trường. Một trường có số
phần tử hữu hạn được gọi là trường hữu hạn, một trường có số phần tử vô hạn được
gọi là trường vô hạn.
5
Trường hữu hạn là trường chứa hữu hạn các phần tử. Mọi trường hữu hạn có một
số nguyên tố là đặc số của trường. Một trường F có đặc số thì với mọi a F,
p
pa a ... a 0
e. Trường hữu hạn Fp:
Cho p là số nguyên tố. Trường hữu hạn Fp bao gồm tập các số nguyên {0, 1, 2,
.., p-1} cùng với các phép toán:
Phép cộng: Nếu a, b Fp , ta có a + b = r, với r là phần dư khi chia a + b cho p
và 0 r p 1 . Đây gọi là phép cộng modulo p.
Phép nhân: Nếu a, b Fp , ta có a.b = s, với s là phần dư khi chia a.b cho p
và 0 s p 1 . Đây gọi là phép nhân modulo p.
Phép nghịch đảo: Nếu a Fp (a 0), phép nghịch đảo của a modulo p, ký
hiệu là a-1, nếu tồn tại duy nhất số nguyên c Fp sao cho a.c = 1.
Trường hữu hạn F2m:
Trường F2m, kí hiệu F2m = {0,1, a1, a2, ..., a2m-2}, được gọi là trường hữu
hạn nhị phân. Khi đó tồn tại m phần từ 0, 1, ..., m-1 trong F2m sao cho mỗi
phẩn tử
F2m có thể viết duy nhất dưới dạng:
A = a0 0 + a1 1 + ... + am-1 m-1 với ai 0,1
Một bộ { 0, 1, ..., m-1 } được gọi là cơ sở của F2m trên F2. Với mỗi cơ sở
như vậy thì một phần tử của trường có thể biểu diễn dưới dạng xâu bit ( a0a1 am-1).
1.1.3 Số học Modulo (phép tính đồng dư)
Cho mỗi số nguyên dương n và một số nguyên a bất kì nếu chúng ta chia a cho
n được thương là q và phần dư là r: a = q*n
+ r với 0 = < r < n và q = [a/n]
Kí hiệu [x] là số nguyên lớn nhất nhỏ hơn hoặc bằng x.
Như vậy, nếu a Z và n Z+ thì chúng ta định nghĩa a mod n phần dư
của phép chia a cho n. Với ví dụ trên ta có: r = a mod n.
Hai số nguyên a và b được gọi là đồng dư với nhau theo modul n nếu và chỉ
nếu: a mod n = b mod n và kí hiệu là a b mod (n)
6
Chú ý: nếu a 0 mod (n) thì n|a
Từ việc tính đồng dư theo mod n ta tách được số nguyên thành n lớp mỗi lớp
chứa các số nguyên đồng dư với nhau theo (mod n) và tập các lớp này được kí hiệu
là: Z/nZ và chứa đúng n phần tử thuộc đoạn [0, n-1].
1.1.4. Không gian rời rạc của phép lấy Logarit
Ta kí hiệu Fp là tập các lớp đồng dư theo Modul p hay Fp = Z/pZ = (0, 1,
2,…, p-1)
Zp/Z* là những tập gồm các số nguyên tố cùng nhau với p hay tập các phần tử
có nghịch đảo trong Z/pZ. Ta kí hiệu Fp* = Z/pZ*
Với p là số nguyên tố thì Z/pZ = Z/pZ * = Fp = Fp* = (0, 1, 2, …, p-1).
1.1.5. Định lí Fermat và định lí Euler
* Định lí Fermat:
Nếu p là một số nguyên tố và a là một số nguyên thì ap
a (mod p).
Nếu a không chia hết cho p tức là (a(mod p) ≠ 0) thì ap-1
1 (mod p).
* Định lí Euler: Nếu gcd(a,m) = 1 thì aФ(m) = 1 mod m. Trong trường hợp m là số
nguyên tố thì Ф(m) = m-1 và ta có định lí Fermat.
1.1.6. Hàm một phía và hàm một phía có cửa sập
a, Hàm một phía:
Một hàm một phía là hàm mà dễ dàng tính toán ra quan hệ một chiều nhưng
rất khó để tính ngược lại.
Ví dụ: Biết giả thiết x thì có thể dễ dàng tính ra f(x), nhưng nếu biết f(x) thì
khó tính ra được x. Trong trường hợp này “khó” có nghĩa là để tính ra được kết quả
thì phải mất nhiều thời gian để tính toán.
b, Hàm một phía có cửa sập:
F(x) được gọi là hàm một phía có cửa sập nếu tính xuôi y = f(x) thì dễ tính
ngược x = f-1(y ) thì khó tuy nhiên nếu có “ cửa sập” thì vấn đề tính ngược trở nên
dễ dàng. Cửa sập ở đây là một điều kiện nào đó giúp chúng ta dễ dàng tính ngược.
Ví dụ: Hộp thư là một ví dụ khác về hàm một phía có cửa sập. Bất kỳ ai cũng
có thể bỏ thư vào thùng. Bỏ thư vào thùng là một hành động công cộng. Mở thùng
thư không phải hành động công cộng. Nó là khó khăn, bạn sẽ cần đến mỏ hàn để
7
phá hoặc những công cụ khác. Tuy nhiên, nếu bạn có “ cửa sập” ( trong trường hợp
này là chìa khóa của hòm thư) thì công việc mở hòm thư thật dễ dàng.
1.1.7. Định lí Trung Quốc về phần dư:
Giả sử m1, m2,…,mr là các số nguyên dương nguyên tố cùng nhau từng đôi
một và cho a1, a2,…,ar là các số nguyên. Khi đó, hệ r đồng dư thức: x= ai mod mi
(1 ≤ i ≤ r) sẽ có một nghiệm duy nhất theo modul M= m1, m2,…, mr được tính
theo công thức sau:
r
x
a i M i y i (m o d M )
i 1
Trong đó Mi = M / mi và yi = Mi-1 mod mi với 1 ≤ i ≤ r
1.2. Mật mã
1.2.1. Khái niệm
- Bản rõ (plaintext or cleartext): Chứa các xâu ký tự gốc, thông tin trong bản
rõ là thông tin cần mã hoá để giữ bí mật.
- Bản mã (ciphertext): Chứa các ký tự sau khi đã được mã hoá, mà nội dung
được giữ bí mật.
- Mật mã học (Crytography): Là khoa học để giữ thông tin được an toàn.
- Sự mã hoá (Encryption): Quá trình che dấu thông tin bằng phương pháp nào
đó để làm ẩn nội dung bên trong gọi là sự mã hoá.
- Sự giải mã (Decryption): Quá trình biến đổi trả lại bản mã thành bản rõ.
Quá trình mã hoá và giải mã được thể hiện trong sơ đồ sau:
Bản rõ
Bản rõ gốc
Bản mã
mãmax
Mã hóa
Giải mã
Hình 1.1. Sơ đồ mã hóa và giải mã
- Hệ mật mã: Là một hệ bao gồm 5 thành phần (P, C, K, E, D) thoả mãn các
tính chất sau:
P (Plaintext): Là tập hợp hữu hạn các bản rõ có thể.
8
C (Ciphertext): Là tập hợp hữu hạn các bản mã có thể.
K (Key): Là tập hợp các bản khoá có thể.
E (Encrytion): Là tập hợp các qui tắc mã hoá có thể.
D (Decrytion): Là tập hợp các qui tắc giải mã có thể.
Với mỗi k có một hàm lập mã ek, ek:P, và một hàm giải mã dk, dk:C sao cho: dk
(ek(x)) =x, với x € P.
.
- Một thông báo thường được tổ chức dưới dạng bản rõ. Người gửi sẽ làm
nhiệm vụ mã hoá bản rõ, kết quả thu được gọi là bản mã. Bản mã này được gửi đi
trên một đường truyền tới người nhận sau khi nhận được bản mã người nhận giải
mã nó để tìm hiểu nội dung.
Ek(P) = C và Dk (C) = P
1.2.2. Những yêu cầu đối với hệ mật mã
Cung cấp một mức cao về tính bảo mật, tính toàn vẹn, tính chống chối bỏ và
tính xác thực:
Tính bảo mật: Bảo đảm bí mật cho các thông báo và dữ liệu bằng việc che
dấu thông tin nhờ các kỹ thuật mã hóa.
Tính toàn vẹn (integrity): Bảo đảm với các bên rằng bản tin không bị thay
đổi trên đường truyền tin.
Tính không thể chối bỏ (Non-repudiation): Có thể xác nhận rằng tài liệu đã
đến từ ai đó, ngay cả khi họ cố gắng từ chối nó.
Tính xác thực (Authentication): Cung cấp hai dịch vụ:
o
Nhận dạng nguồn gốc của một thông báo và cung cấp một vài bảo
đảm rằng nó là đúng sự thực.
o
Kiểm tra định danh của người đang đăng nhập một hệ thống, tiếp tục
kiểm tra đặc điểm của họ trong trường hợp ai đó cố gắng kết nối và giả danh là
người sử dụng hợp pháp.
1.2.3. Hệ mã hóa RSA
Sinh khóa:
Giả sử A và B cần trao đổi thông tin bí mật thông qua một kênh không an
toàn (ví dụ như Internet). Với thuật toán RSA, A đầu tiên cần tạo ra cho mình
9
cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
- Chọn 2 số nguyên tố lớn p và q với p q
- Tính: n = p.q
- Tính giá trị hàm số Ơle ( n) (p - 1).(q - 1)
- Chọn một số tự nhiên e sao cho 1 < e < (n) và là số nguyên tố cùng
nhau với (n) .
- Tính d sao cho e.d 1 (mod( (n)) .
Khóa công khai (n,e)
Khóa bí mật (n, d)
Mã hóa:
Giả sử B muốn gửi đoạn thông tin M cho A. Đầu tiên B chuyển M thành
một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được
thỏa thuận trước. Lúc này B có m và biết n cũng như e do A gửi. B sẽ tính c là bản
mã hóa của m theo công thức:
c = me mod n
Giải mã: A nhận c từ B và biết khóa bí mật d. A có thể tìm được m từ c theo công
thức sau:
m = cd mod n
1.2.4. Hệ mã hóa Paillier
Hệ mã hóa Paillier được đặt theo tên và phát minh của Pascal Paillier năm
1999. Đây là thuật toán bất đối xứng cho hệ mật mã khóa công khai.
Sinh khóa:
- Chọn hai số nguyên tố lớn p và q
- Tính n = p * q sao cho gcd(n, (p-1)(q-1)) = 1
- Chọn ngẫu nhiên g Z*n thỏa mãn gcd( L( g mod n 2 ), n) 1 với
2
L(u ) =
u 1
và = lcm(p-1, q-1)
n
Khóa công khai là (n, g);
Khóa bí mật là: (p, q, )
10
Mã hóa:
Mã hóa thông điệp m
c = gmrn mod n2
Giải mã:
Sử dụng khóa bí mật để giải mã như sau:
m =
L(c mod n 2 )
mod n
L( g mod n 2 )
1.2.5. Hệ mã hóa ElGamal
Hệ mật mã ElGamal được T. ElGamal đề xuất năm 1985, dựa vào bài toán tính
logarit rời rạc và sau đó đã nhanh chóng được sử dụng rộng rãi không những trong
vấn đề bảo mật truyền tin mà còn trong các vấn đề xác nhận và chữ ký điện tử.
* Tạo cặp khóa (bí mật, công khai( (a, b):
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là “khó” giải.
Chọn phần tử nguyên thủy g Z *p . Tính khóa công khai h ≡ ga mod p.
Định nghĩa tập khóa: K = {(p, g, a, h): h ≡ ga mod p}. Các giá trị p, g, h được
công khai, phải giữ bí mật a. Với bản rõ x P và bản mã y C , với khóa k K.
* Lập mã : Chọn ngẫu nhiên bí mật r Zp-1,
Bản mã là y = ek(x, r) = (y1, y2).
Trong đó : y1 = gr mod p và y2 = x * hr mod p
* Giải mã : dk (y1, y2) = y2( y1a )-1 mod p.
1.2.6 Hệ mật đường cong Eliptic
- Định nghĩa: Cho p > 3 là số nguyên tố. Đường cong Eliptic y2 = x3 + ax + b trên Zp
là tập các nghiệm (x,y) Zp x Zp của đồng dư thức y2 = x3 + ax + b(mod p)
Trong đó a, b Zp là các hằng số thỏa mãn 4a3 + 27b2 0(mod p) (để đa thức
x3 + ax + b không có nghiệm bội) cùng với điểm đặc biệt 0 được gọi là điểm vô hạn.
- Định lý Hasse: Việc xây dựng các hệ mật mã trên dường cong Eliptic bao gồm việc
lựa chọn đường cong E thích hợp và một điểm G trên E gọi là điểm cơ sở. Xét trường
K là Fq.
N là số điểm của E trên Fq (trường hữu hạn q phần tử). Khi đó:
11
N ( q 1) 2 q . Từ định lý Hasse suy ra E(Fq) = q +1 – t trong dó t 2 q .
- Hệ mật trên đường cong Eliptic
Hệ ElGamal làm việc với nhóm Cyclic hữu hạn. Năm 1978, Kobliz đã đưa
một hệ trên ECC dựa trên hệ ElGamal.
Để xây dựng hệ mã hóa dựa trên đường cong Eliptic ta chọn đường cong
E(a,b) và một điểm G trên đường cong làm điểm cơ sở. Mỗi người dùng A một
khóa bí mật nA là một số nguyên và sinh khóa công khai PA = nA *G.
Khi đó hệ mã hóa đường cong Eliptic được xây dựng tương tự hệ mã hóa
ElGamal, trong đó thuật toán mã hóa và giải mã được xác định như sau:
Thuật toán mã hóa: Giả sử người dùng A muốn gửi thông điệp cần mã hóa Pm
tới người dùng B, chọn một số ngẫu nhiên k và gửi thông điệp mã hóa Cm được tính
như sau: Cm k * G, Pm + k * PB (PB là khóa công khai của B).
Thuật toán giả mã: Để giải thông điệp Cm k * G, Pm + k * PB , người dùng
B thực hiện tính như sau:
Pm + k * PB - n B * k * G = Pm + k * PB - k * n B * G = Pm + k * PB - k * PB Pm
Chỉ B mới có thể giải mã vì B có nB (là khóa bí mật).
1.3. Chữ ký điện tử
1.3.1. Sơ đồ chữ ký điện tử
Một sơ đồ chữ ký điện tử S là một bộ năm: S = (P, A, K, S, V) thỏa mãn các
điều kiện dưới đây:
P: tập hữu hạn các thông báo có thể có.
A: tập hữu hạn các chữ ký số có thể có.
K: tập hữu hạn các khóa có thể.
S: tập các thuật toán ký.
V: tập các thuật toán kiểm thử.
Mỗi khóa K’ K có hai thành phần K’ = (K1, K2), K1 là khóa bí mật dùng
để ký, còn K2 là khóa công khai để xác thực chữ ký.
Với mỗi K’ = (K1, K2), trong S có thuật toán kí:
12
Sig K : P A
1
x P y= Sigk(x)
Và trong V có thuật toán kiểm thử: Nếu
VerK : P A Đúng , Sai;
2
Hai thuật toán thỏa mãn điều kiện sau với mọi x P, y A:
Verk(x, y) = Đúng Nếu y = Sigk(x)
Sai Nếu y Sigk(x)
1.3.2. Chữ ký mù RSA
a) Khái niệm
Chữ ký mù được David Chaum đưa ra vào năm 1983. Trong hệ chữ ký
thông thường, người ký phải được nắm rõ nội dung văn bản cần kỹ, có thể lưu bản
sao. Trong hệ chữ ký mù (blind signature), người ký sẽ không được thấy rõ nội
dung mà mình ký, các thông điệp cần được kí bị “che” đi. Tuy nhiên hệ chữ ký
cũng đảm bảo cho người ký có thể kiểm tra tính hợp lệ của thông tin cần ký. Chữ ký
mù thường được dùng trong các vấn đề đòi hỏi sự ẩn danh, nó dược ứng dụng phổ
biến trong tiền điện tử, bỏ phiếu điện tử…
Nội dung M trước khi người A đưa cho người kí B sẽ bị làm mù thành M’.
Người kí lúc này sẽ kí trên M’ chứ không phải trên M. Sau khi có được chữ kí trên
M’, A xóa mù để có được chữ kí trên M. Như vậy người A vẫn có chữ kí hợp lệ của
người B trên M mà B không biết thông tin gì về M.
Ví dụ: A chuẩn bị một văn bản M, cho vào một phòng bì A4, có kèm một tờ
giấy than, rồi dán lại và đưa cho B. B chỉ có thể ký lên phía ngoài phong bì, nhưng
chữ ký sẽ được tạo ra trong văn bản bên trong thông qua tờ giấy than. Mặc dù B
không thể biết được nội dung thật của văn bản này, nhưng có thể đánh giá được tính
trung thực của A (không tạo ra gì xấu cho B) mà một phép kiểm tra theo phương
pháp thách thức - đáp ứng.
b) Sơ đồ chữ ký RSA
- Chọn p, q nguyên tố lớn .
13
Tính n = p.q; (n) = (p-1)(q-1).
Chọn b nguyên tố cùng (n).
Chọn a nghịch đảo với b; a = b-1 mod (n).
- Ký trên x: Sig (x) = xa mod n
- Kiểm tra chữ ký: Ver (x,y)= True x yb mod n
Ví dụ:
- p = 3; q = 5; n =15; (n) = 8;
Chọn b = 3; a = 3
- Ký x = 2:
Chữ ký : y = xa mod n = 23 mod 15 = 8
Kiểm tra: x = yb mod n = 83 mod 15 =2 (chữ ký đúng)
c) Sơ đồ chữ ký mù RSA
Giả sử người A muốn có được chữ kí của B trên văn bản M theo sơ đồ
chữ kí RSA nhưng không muốn cho B biết nội dung của M. A cần thực hiện các
bước sau:
Ví dụ: Giả sử B dùng sơ đồ chữ ký RSA (n, p, q, b, a).
- A che dấu M bởi y = M*rb (mod n), (r được chọn sao cho tồn tại phần tử
nghịch đảo r-1 (mod n)).
- A gửi bí danh y cho B
- B ký trên bí danh y được chữ ký z: z = ya (mod n)
- B gửi chữ ký z cho A.
- A "xoá mù" trên z sẽ tìm lại được chữ ký trên M bằng cách tính toán:
Unblind(z) = z*r-1 = (M*rb)a * r-1 = (xa *r) * r-1 = Ma (mod n)
A đã có được chữ ký của B trên M, đó là Ma (mod n)
Như vậy ta đã đạt được mục đích: A đã nhận được chữ kí của B (là: Ma mod n)
mà B không biết nội dung của M.
1.3.3. Chữ ký nhóm (Group Signature)
Chữ ký nhóm Chữ ký nhóm là chữ ký điện tử đại diện cho một nhóm người,
một tổ chức. Các thành viên của một nhóm được phép ký trên thông điệp với tư cách
14
là người đại diện cho nhóm.
Chữ ký nhóm được David Chaum và Van Heyst giới thiệu lần đầu tiên vào
năm 1991. Kể từ đó đến nay đã có nhiều nhà khoa học nghiên cứu và đưa ra một số
sơ đồ chữ ký nhóm khác nhau như sơ đồ chữ ký nhóm của Chen và Pedersen năm
1994, sơ đồ chữ ký nhóm của Camenisch và Stadler năm 1997.
Đặc điểm của chữ ký nhóm:
- Chỉ có thành viên trong nhóm mới có thể ký tên vào bản thông báo đó.
- Người nhận thông điệp có thể kiểm tra xem chữ ký đó có đúng là của nhóm
đó hay không, nhưng người nhận không thể biết được người nào đã ký vào thông điệp đó.
- Trong trường hợp cần thiết chữ ký có thể được “mở” (có hoặc là không có sự
giúp đỡ của thành viên trong nhóm) để xác định người nào đã ký vào thông điệp đó.
Một số hệ chữ ký nhóm:
- Undeniable Signature (chữ kí không thể phủ nhận)
- MultiSignature (đồng ký)
- Proxy Signature (chữ ký ủy nhiệm)
Các thành phần của sơ đồ chữ kí nhóm:
- Người quản lý nhóm
- Các thành viên trong nhóm
- Người không thuộc nhóm
Một sơ đồ chữ kí nhóm thường bao gồm 5 thủ tục:
- KeyGen: Là thuật toán sinh khóa công khai của nhóm, khóa bí mật của
người quản lý nhóm:
KeyGen() (pk, gmsk)
Trong đó pk là khóa công khai của nhóm (dùng để xác minh chữ kí của nhóm),
gmsk là khóa bí mật của nhóm. Nếu số người trong nhóm là cố định thì:
KeyGen() (pk, gmsk,ski)
Trong đó ski là khóa bí mật của thành viên thứ i trong nhóm.
- Join: Cho phép một người không phải là thành viên trong nhóm muốn tham
gia nhóm. Khi gia nhập nhóm, thành viên i sẽ nhận được khóa bí mật của mình là
15
ski, người quản lý nhóm có trách nhiệm lưu thông tin của thành viên mới này.
- Sig: Khi thành viên i muốn ký thông điệp m đại diện cho nhóm, anh ta sẽ
sử dụng thủ tục:
Sig: Sig(m,ski)
Chữ ký trên thông điệp m sẽ là .
- Verify: Khi muốn kiểm tra chữ ký có phải là chữ kí đại diện cho nhóm
trên
m
hay
không,
ta
sử
dụng
thủ
tục:
True
Verify (m, , pk ) =
False
- Open: Với mỗi chữ ký trên thông điệp m, người quản lý nhóm có thể xác
định được thành viên nào đã ký vào thông điệp bằng việc sử dụng thủ tục:
Open(gmsk,m, )
đầu ra của thủ tục là thông tin về thành viên đã ký.
1.4. Khái niệm xác thực điện tử
Xác thực điện tử là việc chứng minh từ xa bằng phương tiện điện tử, sự tồn tại
chính xác và hợp lệ danh tính của một chủ thể khi tham gia trao đổi thông tin điện
tử như: cá nhân, tổ chức, dịch vụ,... hoặc một lớp thông tin nào đó mà không cần
biết các thông tin đó cụ thể như thế nào, thông qua thông tin đặc trưng đại diện cho
chủ thể đó mà vẫn đảm bảo được bí mật của chủ thể, hoặc lớp thông tin cần chứng
minh.
Xác thực điện tử là việc cần thực hiện trước khi thực sự diễn ra các cuộc trao
đổi thông tin điện tử chính thức.
Việc xác thực điện tử trong hệ thống trao đổi thông tin điện tử được uỷ quyền
cho một bên thứ ba tin cậy. Bên thứ ba ấy chính là CA (Certification Authority),
một cơ quan có tư cách pháp nhân thường xuyên tiếp nhận đăng ký các thông tin
đặc trưng đại diện cho chủ thể: khoá công khai và lưu trữ khoá công khai cùng lý
lịch của chủ thể trong một cơ sở dữ liệu được bảo vệ chặt chẽ. CA chuyên nghiệp
không nhất thiết là cơ quan nhà nước. Điều quan trọng nhất của một CA là uy tín để
khẳng định sự thật, bảo đảm không thể có chuyện "đổi trắng thay đen".
16
Mục đích của việc xác thực điện tử: Chống giả mạo, chống chối bỏ, đảm bảo
tính toàn vẹn, tính bí mật, tính xác thực của thông tin và mục đích cuối cùng là
hoàn thiện các giải pháp an toàn thông tin.
Cơ sở ứng dụng đề xây dựng các giải pháp an toàn cho xác thực điện tử là các
hệ mật mã.
Ứng dụng trong: Thương mại điện tử, trong các hệ thống thanh toán trực
tuyến, là nền tảng của chính phủ điện tử.
1.5. Hàm băm (Hash Function)
Hàm băm là một hàm tính toán có hiệu quả khi ánh xạ các dòng nhị phân có
độ dài tùy ý thành các dòng nhị phân có độ dài cố định nào đó.
Hàm băm yếu: hàm băm được gọi là yếu nếu cho một thông điệp x thì về
mặt tính toán không tìm ra được thông điệp x’ khác x sao cho: h(x’) = h(x)
Hàm băm mạnh: hàm băm được gọi là mạnh nếu về mặt tính toán không tìm
ra được hai thông điệp x và x’ sao cho: x’ ≠ x và h(x’) = h (x)
Chọn giá trị x ngẫu nhiên, x ϵ x
Tính z = h(x), tính x1 = A(z)
Nếu x1 ≠ x thì x1 và x va chám dưới h (thành công)
Ngược lại là thất bại.
Hàm băm có tính chất một chiều: hàm băm có tính chất một chiều nếu cho
trước thông điệp rút gọn z thì về mặt tính toán không tìm ra được thông điệp x sao
cho: h(x) = z
Hàm băm yếu làm cho chữ ký số trở nên tin cậy giống như việc ký trên
toàn thông điệp.
Hàm băm mạnh có tác dụng chống lại kẻ giả mạo tạo ra hai bản thông điệp có
nội dung khác nhau, sau đó thu nhận chữ ký hợp pháp cho một bản thông điệp dễ
được xác nhận rồi lấy nó giả mạo làm chữ ký của thông điệp thứ 2
17
CHƯƠNG 2
HỆ MẬT MÃ ELGAMAL CẢI TIẾN
VÀ MÃ HÓA ĐỒNG CẤU
2.1. Hệ mã hóa ElGamal cải tiến
2.1.1. Thuật toán mật mã ElGamal cổ điển
Sơ đồ (ElGamal đề xuất năm 1985)
a/. Sinh khóa (bí mật, công khai) (a, h) :
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là “khó” giải.
Chọn phần tử nguyên thuỷ g Zp* .
Đặt P = Z p*, C = Z p* Z p*.
Chọn khóa bí mật là a Zp* . Tính khóa công khai h g a mod p.
Định nghĩa tập khóa: = {(p, g, a, h): h g a mod p}.
Các giá trị p, g, h được công khai, phải giữ bí mật a.
Với Bản rõ x P
và Bản mã y C, với khóa k định nghĩa:
b/. Lập mã:
Chọn ngẫu nhiên bí mật r Zp-1,
Bản mã là y = ek (x, r) = (y1, y2)
Trong đó y1 = g r (mod p) và y2 = x * h r (mod p)
c/. Giải mã: dk (y1, y2) = y2 (y1 a) -1 ( mod p) = x.
Ví dụ
* Bản rõ x = 1985. Chọn p = 2179, g = 2, a = 365.
Tính khóa công khai h = 2 365 mod 2179 = 2175.
* Lập mã: Chọn ngẫu nhiên r = 503.
Bản mã là y = (932, 91), trong đó
y1 = 2503 mod 2179 = 932 và
y2 = 1985 * 2175 503 mod 2179 = 91
* Giải mã: x = y2 (y1 a) -1 mod p = 91(932365)-1 mod 2179 = 1985.