Tính minh bạch giảm sút đồng nghĩa với việc sự tín nhiệm của nhân dân cũng giảm sút, tính an ninh trong quá trình vận chuyển các lá phiếu… Cùng với đó là quá trình chuẩn bị cơ sở vật chấ
Trang 1
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
NGUYỄN THỊ LOAN
NGHIÊN CỨU HỆ THỐNG BẦU CỬ ĐIỆN TỬ
DỰA TRÊN MÃ ĐỒNG CẤU
Chuyên ngành: Toán ứng dụng
Mã số: 60 46 01 12
LUẬN VĂN THẠC SĨ TOÁN HỌC
Người hướng dẫn khoa học: TS Trần Văn Dũng
Trang 2
LỜI CẢM ƠN
Đầu tiên, tôi xin trân trọng cảm ơn Ban giám hiệu trường Đại học sư phạm Hà Nội 2, phòng sau đại học và các thầy cô giáo trong nhà trường đã giúp đỡ tạo điều kiện thuận lợi cho tôi trong suốt quá trình thực tập
Tôi xin trân trọng gửi lời cảm ơn tới thầy giáo TS Trần Văn Dũng, người đã nhiệt tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn tôi trong suốt quá trình thực hiện luận văn cao học Trong quá trình làm việc với thầy, tôi đã tiếp thu thêm được nhiều kiến thức bổ ích, những kinh nghiệm vô cùng quý báu trong suốt thời gian qua Sau cùng, cho phép tôi cảm ơn các bạn bè, gia đình đã giúp đỡ, ủng hộ tôi rất nhiều trong toàn bộ quá trình học tập cũng như nghiên cứu hoàn thành luận văn này
Do thời gian có hạn và kinh nghiệm nghiên cứu khoa học chưa nhiều nên luận văn còn nhiều thiếu sót, rất mong nhận được ý kiến góp ý của Thầy / Cô và các anh chị học viên
Hà Nội, ngày tháng năm 2016
Học viên thực hiện Nguyễn Thị Loan
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan:
Những kết quả nghiên cứu trình bày trong luận văn này là hoàn toàn trung thực, không vi phạm bất cứ điều gì trong luật sở hữu trí tuệ và pháp luật Việt Nam Trong quá trình làm luận văn tôi có tham khảo các liệu có liên quan và đã ghi rõ nguồn tài liệu tham khảo đó Những kiến thức tôi trình bày trong luận văn này chưa từng được trình bày hoàn chỉnh trong bất cứ tài liệu nào
TÁC GIẢ LUẬN VĂN
NGUYỄN THỊ LOAN
Trang 4MỤC LỤC
MỞ ĐẦU 1
1 Lí do chọn đề tài 1
2 Mục đích nghiên cứu 2
3 Nhiệm vụ nghiên cứu 2
4 Đối tượng và phạm vi nghiên cứu 2
5 Dự kiến đóng góp mới 2
6 Phương pháp nghiên cứu 2
NỘI DUNG 3
CHƯƠNG 1: KIẾN THỨC CHUẨN BỊ 3
1.1 Số học modulo 3
1.1.1 Các phép toán trên modulo 3
1.1.1.1 Số nghịch đảo Modulo 4
1.1.1.2 Định lý Fermat 6
1.1.1.3 Định lí Euler 6
1.1.1.4 Định lí phần dư Trung Hoa 8
1.1.2 Logarit rời rạc 9
1.1.2.1 Bài toán logarit trên trường số thực R 9
1.1.2.2 Bài toán logarit trên trường hữu hạn 9
1.1.2.3 Bài toán logarit rời rạc 11
1.1.2.4 Bản chất của bài toán logarit rời rạc 11
1.2 Hệ mã khóa công khai 12
1.2.1 Mã khoá công khai RSA 12
1.2.2 Khởi tạo khóa RSA 12
1.2.3 Sử dụng RSA 13
1.2.4 Cơ sở của RSA 13
1.3 Mã Elgamal 14
1.3.1 Hệ mã hóa Elgamal 14
Trang 51.3.2 Khái niệm mã hóa đồng cấu 15
1.4 Chữ ký điện tử DSA 15
1.4.1 Tạo chữ ký DSA 15
1.4.2 Kiểm chứng chữ ký DSA 16
CHƯƠNG 2: MỘT SỐ GIAO THỨC AN NINH NÂNG CAO 18
2.1 Lược đồ chia sẻ thông tin mật Shamir 18
2.1.1 Phân phối mảnh cho các thành viên 19
2.1.2 Khôi phục khoá K từ t thành viên 20
2.1.3 Tính chất đồng cấu của hệ mã hóa Elgamal 22
2.1.4 Lược đồ chia sẻ bí mật Shamir phối hợp với hệ mã hóa Elgamal 25
2.2 Cam kết 28
2.3 Chứng minh không tiết lộ thông tin 29
2.4 Giao thức kết hợp 30
CHƯƠNG 3: PHƯƠNG PHÁP BẦU CỬ ĐIỆN TỬ DỰA TRÊNMÃ ĐỒNG CẤU 33
3.1 Bầu cử điện tử 33
3.2 Phương pháp dựa trên mã đồng cấu 33
3.2.1 Khởi tạo hệ thống 33
3.2.2 Công bố phiếu bầu 33
3.2.3 Phân phối phiếu 34
3.2.4 Kiểm tra tính nhất quán 34
3.2.5 Kiểm đếm 35
3.3 Trường hợp bầu số ứng cử viên tuỳ ý 40
KẾT LUẬN 46
DANH MỤC TÀI LIỆU THAM KHẢO 47
Trang 6MỞ ĐẦU
1 Lí do chọn đề tài
Trong những năm trở lại đây, sự phát triển như vũ bão của các xu thế công nghệ thông tin là một điều tất yếu Máy móc thông minh dần thay thế nhiều hoạt động của con người trong xã hội hiện đại Bỏ phiếu điện tử chính là một trong những bước ngoặt lớn lao ấy
Phương thức bỏ phiếu truyền thống ngày nay gặp phải một số hạn chế, với những cử tri ở vùng sâu vùng xa, khoảng cách về địa lý sẽ phần nào ngăn cản quá trình bầu cử của mình Tính độc lập, quyền cá nhân, quyền riêng tư cũng bị ảnh hưởng lớn Tính minh bạch giảm sút đồng nghĩa với việc sự tín nhiệm của nhân dân cũng giảm sút, tính an ninh trong quá trình vận chuyển các lá phiếu… Cùng với đó
là quá trình chuẩn bị cơ sở vật chất, đào tạo nhân lực phục vụ cho cuộc bầu cử Đây quả là những khó khăn, thách thức vô cùng lớn
Trong khi đó, với hình thức bỏ phiếu điện tử, mọi người dân đều có thể tự mình lựa chọn phiếu bầu mang ý kiến cá nhân cho các ứng cử viên của họ, dù họ đang ở đâu, làm gì Hơn nữa, nó còn đảm bảo được tính cá nhân và quyền riêng tư trong mỗi lá phiếu của mình, đảm bảo an ninh do không mất quá trình vận chuyển thủ công từ nhiều địa điểm khác nhau đến hòm phiếu
Thứ hai, thay vì phải đào tạo đội ngũ cán bộ khổng lồ để phục vụ công tác bầu
cử, thì bỏ phiếu điện tử sẽ giảm tối đa về mặt nhân lực Đặc biệt, hình thức bỏ phiếu này đáp ứng nhu cầu bầu cử của những người trẻ tuổi, đó có thể là bầu cử qua điện thoại, bầu cử trực tuyến, thông qua Facebook, youtube…
Trên thế giới, khái niệm bỏ phiếu điện tử không còn xa lạ gì đối với các nước phát triển Tuy nhiên ở Việt Nam, đây vẫn còn là một trong những vấn đề tuy không hẳn là còn quá mới mẻ nhưng cũng chưa thực sự được phát triển phổ cập rộng rãi trong tất cả các lĩnh vực
Chính vì vậy, dưới sự hướng dẫn tận tình của thầy giáo TS Trần Văn Dũng,
em chọn lựa đề tài “NGHIÊN CỨU HỆ THỐNG BẦU CỬ ĐIỆN TỬ DỰA TRÊN
MÃ ĐỒNG CẤU” với mong muốn áp dụng kiến thức đã học, xây dựng thử nghiệm
Trang 7mô hình ứng dụng bầu cử điện tử với độ an toàn bảo mật cao, chống gian lận trong quá trình bỏ phiếu
2 Mục đích nghiên cứu
- Tổ chức bầu cử điện tử đáp ứng yêu cầu của một bầu cử
- Có khả năng chịu lỗi, đảm bảo tính riêng tư và kết quả có thể được kiểm chứng tính đúng đắn
3 Nhiệm vụ nghiên cứu
- Nghiên cứu lược đồ chia sẻ thông tin mật Shamir chịu lỗi
- Sử dụng chứng minh không tiết lộ thông tin để cam kết tính nhất quán của phiếu bầu và các tham số chia sẻ mảnh phiếu
- Ứng dụng mã đồng cấu để hỗ trợ kiểm phiếu tự động đảm bảo tính riêng tư
4 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Nghiên cứu các vấn đề được thực hiện trong các
chương trình bầu cử điện tử an toàn
- Phạm vi nghiên cứu: nghiên cứu trên cơ sở toán học của một số phương pháp
bầu cử điện tử và xây dựng lược đồ bầu cử điện tử an toàn
5 Dự kiến đóng góp mới
Trình bày đầy đủ chi tiết cơ sở và ứng dụng trong luận văn
6 Phương pháp nghiên cứu
- Nghiên cứu lý thuyết và kiểm nghiệm qua các ví dụ cụ thể
- Xây dựng lược đồ ứng dụng tổ chức mô hình bầu cử điện tử đơn giản
Trang 8NỘI DUNG CHƯƠNG 1: KIẾN THỨC CHUẨN BỊ
Chương này sẽ trình bày về các lý thuyết toán học để bổ trợ và xây dựng
phương pháp bầu cử điện tử dừa trên mã đồng cấu như lý thuyết về toán học
modulo, các bài toán Logarith rời rạc, hệ mã hóa công khai, mã Elgamal cũng như
các định lý Fermat, Euler, Tiếp đó, luận văn mô tả các khái niệm về chữ ký điện
tử DSA cách tạo và cách kiểm chứng chữ ký DSA được dùng trong việc xây dựng
một số giao thức an ninh nâng cao
1.1 Số học modulo
1.1.1 Các phép toán trên modulo
a Định nghĩa 1
Cho m là số nguyên dương Giả sử a, b là các số nguyên: Ta ký hiệu
a b (mod m), khi và chỉ khi b = a + km trong đó k là số nguyên Khi đó ta nói a và
b đồng dư với nhau theo modulo m Nếu trong đó a là số nguyên dương nhỏ hơn m,
thì a được gọi là phần dư của b khi chia cho m, đôi khi a được gọi là thặng dư của b
theo modulo m
Tập hợp các sô ́nguyên từ 0 đến m − 1 được gọi là tập hợp thặng dư hoàn
toàn modulo m Điều này có nghĩa là, với mỗi số nguyên a, thặng dư modulo m là
một số từ 0 đến m − 1
Modulo số học cũng như số học bình thường, bao gồm các phép giao hoán,
kết hợp và phân phối Mặt khác, giảm mỗi giá trị trung gian trong suốt quá trình
tính toán
(a + b) mod m = ((a mod m) + (b mod m)) mod m
(a - b) mod m = ((a mod m) − (b mod m)) mod m
(a b) mod m = ((a mod m) (b mod m)) mod m
(a (b +c)) mod m = ((a b) + (a c)) mod m
Ví dụ 1.1: 10 7 (mod 3) vì 10 = 3.3 + 1 và 7 = 2.3 + 1
Trang 9b Quan hệ đồng dư
Quan hệ đồng dư theo modulo m trên Z là một quan hệ tương đương có nghĩa là:
ii) a, b Z, a b (mod m) ⇒ b a (mod m) (Tính đối xứng)
iii) a, b, c Z, a b, b c ⇒ a c (mod m) (Tính bắc cầu)
c Các phép toán trên modulo:
Nếu ta có: a1 a2 (mod n)
b1 b2 (mod n) Thì ta có:
Phương trình trên tương đương với tìm x và k sao cho:
4x = 7k + 1 với điều kiện cả x và k đều là số nguyên
Vấn đề chung đặt ra tại đây là tìm x sao cho:
Trong trường hợp chung a-1 x (mod n) chỉ duy nhất một lời giải nếu a và n là
một cặp số nguyên tố cùng nhau Nếu a và n không phải là một cặp số nguyên tố
Trang 10cùng nhau, thì a-1 x (mod n) không có lời giải nào Thuật toán Euclid có thể mở
rộng tính ra được số nghịch đảo của số modulo n, đôi khi thuật toán này còn gọi là thuật toán Euclid mở rộng
static void update (int *un, int *vn, int q)
Trang 11Ví dụ 1.3: Tìm nghịch đảo theo Euclide mở rộng
Tìm số nghịch đảo (nếu có) của 30 theo môđun 101
Định lí 1: Nếu m là số nguyên tố và a không phải là bội số của m thì định lý Fermat
phát biểu như sau: am – 1 1 (mod m) (xem [1, 2])
Ví dụ 1.4:
27-1 mod 7 = 1 (= 26 mod 7 = 64 mod 7 = 1)
35-1 mod 5 = 1 (= 34 mod 5 = 81 mod 5 = 1)
1.1.1.3 Định lí Euler
Định lí 2: Hàm Euler Cho n là một số nguyên dương Khi thực hiện phép
tính đồng dư n của mọi số nguyên khác ta nhận được tập đầy đủ các phần dư có thể
có là: 0, 1, 2,…, n – 1
Từ tập trên ta tìm tập rút gọn bao gồm các số nguyên tố cùng nhau với n và quan tâm đến số lượng các phần tử như vậy đối với số nguyên dương n cho trước
Trang 12Ví dụ 1.5: Với n = 10:
Tập đầy đủ các phần dư là {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Tập rút gọn các phần dư nguyên tố với 10 là {1, 3, 7, 9}
Số các phần tử của tập rút gọn trên là giá trị của hàm Euler Ф(n) Như vậy, Ф(10) = 4
Muốn tính Ф(n) việc đếm số các số nguyên tố cùng nhau với n và nhỏ hơn n
được loại bỏ vì đây là bài toán tốn nhiều công sức Nói chung có thể tính hàm Euler
của một số dựa trên biểu thức phân tích ra thừa số của số đó
Dễ dàng thấy, nếu p là số nguyên tố, thì Ф(p) = p − 1
Nếu p và q là hai số nguyên tố khác nhau, thì có thể chứng minh được rằng:
Định lý Euler là tổng quát hoá của Định lý Ferma, khẳng định như sau:
a(n) mod n= 1với mọi cặp số nguyên dương nguyên tố cùng nhau a và n: gcd(a,n) =1
Ta có thể tính trực tiếp 48 mod 15 = (42)4 mod 15 = 1
Như vậy, cho các số nguyên dương a, n, m bất kỳ, áp dụng tính chất của phép nhân
modulo và Định lý Euler ta luôn có:
am mod n = (a mod n)(m mod(n)) mod n
Trang 13Chẳng hạn: 4518 mod 20 = (45 mod 20)18 mod (20) mod 20 = 52 mod 20 = 1
1.1.1.4 Định lí phần dư Trung Hoa
Nếu bạn biết cách tìm thừa số nguyên tố cuả một số n, thì bạn có thể đã sử dụng, một số điều gọi là phần dư trung hoa để giải quyết trong suốt hê ̣phương trình Bản dịch cơ bản của định lý này được khám phá bởi toán học Trung Hoa vào thế kỷ thứ nhất
Định lí 3: Giả sử, sự phân tích thừa số của n = p1 p2 … pt thì hệ phương trình: (x mod pi) = ai, với i = 1,2….t có duy nhất một nghiệm với x nhỏ hơn n Bởi vậy, với a, b tùy ý sao cho a < p và b < q (với p, q là số nguyên tố) thì tồn tại duy nhất a, x khi x nhỏ hơn p q thì: x a (mod p) và x b(mod q) Để tìm ra x, đầu tiên cần sử dụng thuật toán Euclid để tìm u,
u q 1 (mod p), khi đó cần tính toán:
x = (((a − b)xu) mod p).q + b
Dưới đây là đoạn mã định lý phần dư Trung hoa trong ngôn ngữ C
int chineseRemainder(size t r, int *m, int *u)
{
size t i;
int modulus; int n;
modulus = 1; for(i=00; i<r:++i)
modulus *=m[i]; n =0 for(i=0; i<r:++i)
{
n+=u[i]*modexp (modulus/m[i], totient(m[i]), m[i]); n%=modulus;
} return n;
}
Ví dụ 1.8: Cho hai số nguyên dương p, q nguyên tố cùng nhau Chứng minh rằng
tồn tại số nguyên k sao cho (pq−1)n.k + 1 là hợp số với mọi số nguyên dương n
Trang 14Lời giải:
Xét hệ đồng dư: { k ≡ −1(modp)k ≡ 1(modp) 𝑑𝑜 gcd(𝑝, 𝑞) = 1
nên theo định lí phần dư Trung Hoa thì hệ này chắc chắn có nghiệm
1.1.2.1 Bài toán logarit trên trường số thực R
Định nghĩa 2: Cho hai số dương a, b với a 1 Số x thỏa mãn đẳng thức
b = ax được gọi là logarit cơ số a của b và được ký hiệu là x = logab Như vậy ta có:
- Bài toán thuận: b = ax (a, x R)
- Bài toán ngược: x = logab (a, b > 0, a 1)
Một số tính chất của hàm logarit: Với a, b, c, d > 0, a 1, R, ta có:
y = log1 = 0
y = loga = 1
y = log(a) =
𝑦 = 𝑎log 𝑎 𝑏 = 𝑎
y = log(c.d) = logc + logd
y = log(c/d) = logc − logd
1.1.2.2 Bài toán logarit trên trường hữu hạn
Xét vành số Zp, với p là số nguyên tố, vậy ta có Zp= GF(p) Tất cả các phần
tử a 0 của trường tạo thành nhóm nhân: 𝑍𝑝∗ = {𝑎|1 ≤ 𝑎 ≤ 𝑛 − 1}
Nếu cấp của a bằng p thì ta nói a là căn nguyên thủy của Zp
Xét bài toán thuận: Cho y = ax
Ví dụ 1.9: Cho p = 19, a = 2 Ta tính y = ax mod 19 với x Zp= GF(p), dễ dàng thấy
2 là căn nguyên thủy và các giá trị được cho bởi bảng sau:
Trang 15Tính y = 2x mod 19, các cặp nghịch đảo Z19
x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
2 x 2 4 8 16 13 7 14 9 18 17 15 11 3 6 12 5 10 1
Nhận xét:
- Do a là phần tử nguyên thủy nên ax sẽ đi qua hết các phần tử trong vành Zp
- Từ phần tử nguyên thủy a = 2 đã cho ban đầu ta có thể tìm được các phần tử nguyên thủy khác theo công thức b = ai mod n với (i,(n)) = 1 Vậy tập các phần tử nguyên thủy của Z19 là: {2, 13, 14, 15, 3, 10}
- Các phần tử nguyên thủy tạo thành các cặp nghịch đảo:
y = loga bc = (loga b + loga c) mod (p − 1)
y = loga b/c = (loga b − loga c) mod (p − 1)
𝑦 = log𝑎−1𝑥 = −log𝑎𝑥 = 𝑝 − 1 − log𝑎𝑥
y = loga 1 = p − 1= 0
Ví dụ 1.10: Cho p = 19, a =2 Ta tính y = logax mod19 với x Zp= GF(p) Từ bảng
đã tính ở trên ta có các giá trị ngược:
x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
2x 2 4 8 16 13 7 14 9 18 17 15 11 3 6 12 5 10 1 Log2x 18 1 13 2 16 14 6 3 8 17 12 15 5 7 11 4 10 9
Trang 16Do 218 = 1 vậy nên ta có log2 1 = 18; 21 = 2 vậy nên ta có log2 2 = 1, tương
tư ̣ta tính được các phần tử y = log2 x khác
1.1.2.3 Bài toán logarit rời rạc
Cho Zp, với p là số nguyên tố, là phần tử nguyên thủy *
Ví dụ 1.11: Giải bài toán với p = 19, ta có 6 điểm nguyên thủy (3 cặp nghịch đảo)
Tacó: 𝑦 = log𝑎−1𝑥 = −log𝑎𝑥 = 𝑝 − 1 − log𝑎𝑥
→ log𝑎−1𝑥 + log𝑎𝑥 = 𝑝 − 1
Xét cặp nguyên thủy (2, 10):
Ta có: log10 x = p −1 – log2 x với p = 19 ta lập được bảng:
Bảng 2.3 Tính các logarit rời rạc y = log 2 x mod 19 và y = log 10 x modulo 19
1.1.2.4 Bản chất của bài toán logarit rời rạc
Từ những ví dụ trên ta rút ra được những kết luận sau:
Logarit rời rạc là sư ̣tiếp nối của phép tính logarit trên trường số thực vào các nhóm hữu hạn Chúng ta đã biết với 2 số thực x, y và cơ số > 0, 1, nếu ax thì
x được gọi là logarit cơ sô ́a của y, ký hiệu là: x = loga y Tuy nhiên trong logarit rời rạc, các số a, x, y đều là các phần tử của nhóm hữu hạn
Logarit rời rạc có ứng dụng trong hê ̣mã khóa công khai hê ̣mật mã Elgamal
Cho p là một số nguyên tố Xét nhóm nhân các số nguyên modulo p:
*
p
Z = {1, 2, 3,…, p-1} với phép nhân modulo p
Trang 17Nếu ta tính lũy thừa bậc k của một số trong nhóm rồi rút gọn theo modulo p thì ta được một số trong nhóm đó Quá trình này gọi là lũy thừa rời rạc modulo p Chẳng hạn p = 17, lấy = 3, k = 4, ta có: 34 = 81 13(mod17)
Logarit rời rạc là phép tính ngược lại: biết 3k 13(mod17), hãy tìm k Để giải chúng ta phải thông qua phép thử lần lượt tính lũy thừa rời rạc, chẳng hạn tính
32 mod 17 = 9, 33 mod 17 = 10, 34 mod 17 = 13 và tìm được k = 4 Như vậy bài toán logarit rời rạc là bài toán khó
1.2 Hệ mã khóa công khai
1.2.1 Mã khoá công khai RSA
RSA là mã công khai được sáng tạo bởi Rivest, Shamir & Adleman ở MIT (Trường Đại học Công nghệ Massachusetts) vào năm 1977 RSA là mã công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay Nó dựa trên các phép toán lũy thừa trong trường hữu hạn các số nguyên theo modulo nguyên tố Cụ thể,
mã hóa hay giải mã là các phép toán luỹ thừa theo modulo số rất lớn Việc thám mã, tức là tìm khóa riêng khi biết khóa công khai, dựa trên bài toán khó là phân tích một
số rất lớn đó ra thừa số nguyên tố Nếu không có thông tin gì, thì ta phải lần lượt kiểm tra tính chia hết của số đó cho tất cả các số nguyên tố nhỏ hơn căn của nó Đây là việc làm không khả thi
Người ta chứng minh được rằng, phép lũy thừa cần O((log n)3) phép toán, nên có thể coi lũy thừa là bài toán dễ Cần chú ý rằng ở đây ta sử dụng các số rất lớn khoảng 1024 bit, tức là cỡ 10350 Tính an toàn dựa vào độ khó của bài toán phân tích ra thừa số các số lớn Bài toán phân tích ra thừa số yêu cầu O(elogn log logn) phép toán, đây là bài toán khó
Mã công khai RSA gồm hai giai đoạn: khởi tạo khóa RSA và giai đoạn mã hóa/giải mã
1.2.2 Khởi tạo khóa RSA
Mỗi người sử dụng A tạo một cặp khóa công khai – riêng như sau: Chọn ngẫu nhiên hai số nguyên tố lớn p và q khác nhau
Tính số N làm modulo của hệ thống: N = p.q Ta đã biết Ф(N) = (p − 1)(q − 1)
Trang 18Chọn ngẫu nhiên khóa mã e làm khóa công khai, sao cho 1 < e < Ф(N) và gcd (e,Ф(N)) = 1, tức là e và Ф(N) là hai số nguyên tố cùng nhau
Nghịch đảo của e theo modulo Ф(N) là khóa riêng d, vậy tìm d từ phương trình (e.d) mod Ф(N) = 1, với 0 < d < Ф(N) hay d = e-1mod Ф(N)
Chú ý: Vai trò của e và d có thể thay đổi cho nhau, tức là có thể lấy e làm khóa mật, khi đó tính d nghịch đảo của e làm khóa công khai
Người sử dụng A in khóa mã công khai: KU = {e, N} và thông báo cho mọi người biết Người sử dụng A giữ bí mật khóa riêng: KR = {d, p, q}
1.2.3 Sử dụng RSA
Để mã hóa mẩu tin M, người gửi B:
Lấy khóa công khai của người nhận A: KU = {e, N}
Mã hóa thông điệp M bằng khóa công khai của người nhận A:
C = Me mod N, trong đó 0 ≤ M < N
Để giải mã bản mã, người sử dụng A: Sử dụng khóa riêng KR = {d, p, q}
Giải mã thông điệp, tính M = Cd mod N
Lưu ý rằng bản tin M < N, do đó khi cần chia khối bản rõ thành các khối nhỏ
Vì dựa theo định lý Euler có thể chứng minh được rằng M Ф(N) mod N = 1
Nên Cd Mod N = M1.M k.Ф(N)mod N = M1 mod N.(MФ(N) mod N)k
= M.1 mod N = M
Ví dụ 1.12: Tạo khóa công khai cho người sử dụng A, sau đó người sử dụng B dùng
khóa công khai của A mã hóa thông điệp gửi cho A và cuối cùng A sử dụng khóa
Trang 19riêng của mình để giải mã thông điệp
Tạo bộ khóa công khai cho người sử dụng A
7 In khóa công khai của người sử dụng A: KU = {7, 187}
8 Giữ khóa riêng bí mật riêng của A: KR = {23, 17, 11}
B sử dụng khóa công khai của A để mã hóa mã thông điệp gửi cho A:
Cho mẩu tin M = 88 (thỏa mã điều kiện 88 < 187) Mã C = 887 mod 187 = 11
Người sử dụng A dùng khóa riêng của mình để giải mã như sau:
M = 1123 mod 187 = 88 Có thể dùng định lý phần dư Trung Hoa để giải mã cho nhanh như sau:
Tính 1123 mod 11 = 0
Tính 1123 mod 17 = (-6)23mod 17 = (-6)16.(-6)4.(-6)2.(-6) mod 17 = 3
Vì (-6)2mod 17 = 2, nên (-6)4mod 17 = 4, (-6)8 mod 17 = -1;
(-6)16 mod 17 = 1; 11-1mod 17 = (-6)-1mod 17 = 14
nên C2
= 11.(11
-1
mod 17) = 11.(14 mod 17) = 154 Vậy M = (3.154) mod 187 = 462 mod 187 = 88
1.3 Mã Elgamal
1.3.1 Hệ mã hóa Elgamal
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải, g là phần
tử sinh trong Zp* Chọn tập bản rõ A = Zp, chọn tập bản mã C = {(a, b) / a, b ∈ Zp} Chọn khóa bí mật là a ∈ Zp*, khóa công khai là h = ga Để mã hóa m, ta chọn số ngẫu nhiên bí mật k, bản mã là: (x, y) = Ek (m) = (gk, hk m) Tài liệu được giải mã là
m = y / xa
Trang 20Ví dụ 1.13: Cho p = 2579, g = 2, a = 765 Khi đó h = 2765 mod 2579 = 949
Bây giờ ta giả sử Alice muốn gửi thông báo m = 1299 tới Bob
Giả sử số ngẫu nhiên k mà cô chọn là k = 853 Sau đó cô ta tính:
1.3.2 Khái niệm mã hóa đồng cấu
Cho tập bản rõ P tạo thành nhóm với phép tính ⊕, tập bản mã C tạo thành nhóm với phép tính ⊗ Ek(m) là hàm mã hoá bản rõ m theo tham số ngẫu nhiên bí mật k Hệ mã hóa E được gọi là có tính chất (⊕, ⊗) - đồng cấu, nếu với tham số
k = k1 + k2, thỏa mãn công thức đồng cấu: Ek1(m1) ⊗ Ek2(m2) = Ek(m1 ⊕ m2), trong
đó m1, m2 là 2 bản rõ, k1, k2 là 2 tham số ngẫu nhiên bí mật
1.4 Chữ ký điện tử DSA
Sinh khóa DSA Chia sẻ giá trị khóa công khai tổng thể (p, q, g):
Số nguyên tố lớn p = 2L, ở đó L = 512 đến 1024 bit và là bội của 64;
Chọn q là số nguyên tố 160 bit và là ước của p −1;
Để ký mẩu tin M người gửi trước hết cần: Sinh khóa chữ ký ngẫu nhiên k:
k < p, k phải là số ngẫu nhiên, được xóa sau khi dùng và không bao giờ dùng lại; Sau đó tính cặp chữ ký: r = (gk(mod p)) (mod q)
s = (k-1(SHA(M) + x.r) (mod q)
Gửi cặp chữ ký (r, s) cùng với bản tin M
Trang 22- Bài toán Logarit trên trường số thực R
- Bài toán Logarit trên trường hữu hạn
- Bài toán Logarit rời rạc
- Bản chất của bài toán Logarit rời rạc
Trong mục các hệ mã khóa công khai tôi đã trình bày các hệ mã hóa sau:
- Mã RSA
- Mã hóa công khai RSA
- Khởi tạo khóa RSA
Trang 23CHƯƠNG 2: MỘT SỐ GIAO THỨC AN NINH NÂNG CAO
Chương I của luận văn đã trình bày về một số kiến thức chuẩn bị như số học modulo, các hệ mã hóa công khai và chứ ký điện tử DSA Chương 2 này sẽ đi sâu vào một số giao thức an ninh nâng cao Phân tích lược đồ chia sẻ Shamir đồng thời
sử dụng cùng với hệ mã hóa Elgamal chọn phiếu bầu cho một số ứng viên Tiếp đó
em trình bày một số lược đồ cam kết, chứng minh không tiết lộ thông tin và giao thức kết hợp để bổ trợ và xây dựng nên phương pháp bầu cử dựn trên mã đồng cấu
ở chương sau
2.1 Lược đồ chia sẻ thông tin mật Shamir
Bài toán 1: Trong một ngân hàng có một két phải mở hằng ngày, ngân hàng sử
dụng 3 thủy quỹ lâu năm nhưng họ không tin bất kì người nào Bởi vậy họ cần thiết
kế một hệ thống sao cho bất kì 2 thủy quỹ nào cũng có thể mở được két, song riêng từng người một thì không thể mở được Vấn đề này có thể giải quyết được bằng lược đồ chia sẻ bí mật
a Khái niệm chia sẻ bí mật
Sơ đồ chia sẻ bí mật là một phương thức để chia sẻ bí mật ra thành nhiều phần, sau đó phân phối mỗi phần cho mỗi người trong tập hợp người tham gia Chỉ
có thể khôi phục lại bí mật bằng cách kết hợp dữ liệu từ một số tập con những người tham gia trong số họ Một tập con những người tham gia đó mà có thể chia sẻ để khôi phục thông tin mật, được gọi là tập con chỉ định
Một sơ đồ chia sẻ bí mật được coi là hoàn hảo nếu bất kì một tập hợp những người tham gia mà không được chỉ định, sẽ không tìm được thông tin bí mật
b Định nghĩa 3
Cho t, w là các số nguyên dương, t ≤ w Một sơ đồ ngưỡng A(t, w) là một phương pháp phân chia khóa K cho một tập w thành viên (ký hiệu là P) sao cho t thành viên bất kì có thể tính được K, nhưng không một nhóm (t − 1) thành viên nào
có thể làm được điều đó
Trang 24Giá trị K được chọn bởi một thành viên đặc biệt được gọi là người phân phối
D, và D thuộc P
D phân chia khóa K cho mỗi thành viên trong P bằng cách cho mối thành viên một thông tin cục bộ được gọi là một mảnh Các mảnh được phân phối một cách bí mật để không thành viên nào biết được mảnh được trao cho các thành viên khác Một tập con B các thành viên (B là tập con của P) sẽ kết hợp các mảnh của họ
để tính khóa K
Nếu |B| > t − 1, thì họ có khả năng tính được K
Nếu |B| ≤ t − 1, thì họ không thể tính được K
Lược đồ Shamir này ra đời năm 1979
2.1.1 Phân phối mảnh cho các thành viên
1 Giai đoạn khởi tạo D chọn w phần tử khác nhau và khác không trong Zp
và ký hiệu chúng là x i với 1 ≤ i ≤ w Các giá trị x i được coi là khoá công khai của
các thành viên p i
2 Giả sử D muốn phân chia khóa K ∈ Zp D sẽ chọn 1 cách bí mật (ngẫu nhiên và độc lập) t phần tử của Zp: a 1 ,…, a t-1
3 D phân phối các mảnh cho các thành viên: với 1 ≤ i ≤ w, D tính mảnh y i
là giá trị của đa thức a tại diểm thứ x i , cụ thể y i = a(x i ), trongđó:
D trao giá trị công khai xi cho Pi
2 D chọn ngưỡng chia sẻ bí mật là t = 3 phần tử trong Zp: a1 = 12, a2 = 3, a3 = 5
3 D tính yi = P(xi), 1 ≤ i ≤ 6
Trang 252.1.2 Khôi phục khoá K từ t thành viên
Khôi phục theo công thức nội suy Lagrange
Trong phần này chúng ta sẽ khôi lại thông tin mật bằng phương pháp sử dụng công thức nội suy Lagrange Công thức nội suy Lagrange có dạng
Một nhóm B gồm t thành viên có thể tính được a(x) bằng cách dùng công thức nội suy Có thể tính được hằng số K = a(0):
Thay x = 0 vào công thức nội suy Lagrange:
K = ∑ yjt
j=1
∏ −xit
xik− xit1≤k≤t,k≠j
Trang 26Giả sử ta định nghĩa:
bj= ∏ −xit
xik− xit1≤k≤t,k≠j
Khi đó:
K = ∑ yj bjt
j=1
∏ −xit
xik− xit1≤k≤t,k≠j
với
bj= ∏ −xit
xik− xit1≤k≤t,k≠j
Áp dụng công thức trên ta tính được: b1 = 3, b2 = -3, b3 = 1
𝐾 = ∑ 𝑦𝑗 𝑏𝑗𝑡
𝑗=1
K = 3.21 + (-3).5 +1.3 mod 43 = 8
Ưu nhược điểm của sơ đồ ngưỡng Shamir
An toàn: Phải có ít nhất k mảnh bí mật ghép lại để khôi phục bí mật ban đầu, có nghĩa là “kẻ xấu” không thể lợi dụng được trừ khi anh ta thoả hiệp được với