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

Nghiên cứu hệ thống bầu cử điện tử dựa trên mã đồng cấu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.55 MB, 52 trang )

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

HÀ NỘI, 2016


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


LỜ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


MỤ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


1.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ÊN MÃ ĐỒ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


MỞ ĐẦ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

1


mô 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.

2


NỘ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ô ń guyê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

3


b. 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à:
i)  a  Z, a  a (mod m)

(Tính phản xạ)

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ó:
 (a1 + b1)  (a2 + b2) (mod n)
 (a1 − b1)  (a2 − b2) (mod n)
 (a1b1)  (a2b2) (mod n)
 𝑎1𝑘  𝑎2𝑘 (𝑚𝑜𝑑 𝑛), với k nguyên dương
1.1.1.1. Số nghịch đảo Modulo
Số nghịch đảo của 10 là 1/10, bởi vì 10  1/10 = 1. Trong số học modulo
thì vấn đề̀ nghịch đảo phức tạp hơn.
4  x  1 mod 7
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:
1 = (a  x) mod n
Có thể viết lại như sau:
a-1  x (mod n)
Ví dụ 1.2: Nghịch đảo của 5 modulo 14 là 3 bởi:
5  3 = 15  1 (mod 14)
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ố
4


cù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)
{
int tn;
tn=*un – vn*q;
*un = *vn;
*vn = tn;
}
int extended euclidian(int u, int v, int u1_out, int
u2_out)
{
int u1 = 1;
int u3 = u;
int v1 = 0; int v3 = v;
int q;
while (v3>0)
{
q = u3/v3;
Update(&u1, &v1, q);
Update(&u3, &v, q);
}
*u1_out = u1;
*u2_out = (u3 - u1*u)/v;
return u3
}

5


Ví 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

Bước i

m

a

r

q

y0

y1

y

0

101

30

11

3

0

1


-3

1

30

11

8

2

1

-3

7

2

11

8

3

1

-3


7

-10

3

8

3

2

2

7

-10

27

4

3

2

1

1


-10

27

-37

5

2

1

0

.

.

.

.

Kết quả tính toán trong bảng cho ta −37. Lấy số đối của 37 theo
mođun 101 được 64.
Vậy 30-1 mod 101 = 64.
Định lý Fermat

1.1.1.2

Đị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.

6


Ví 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:
Ф (p.q) = (p − 1).(q − 1)
 Nếu p là số nguyên tố, thì Ф (pn) = pn – pn - 1
 Nếu s và t là hai số nguyên tố cùng nhau, thì Ф(s.t) = Ф(s).Ф(t).

Ví dụ 1.6:
Ф(37) = 37 – 1 = 36
Ф(21) = (3–1).(7–1) = 2.6 = 12
Ф(72) = Ф(8.9) = Ф(8). Ф(9) = Ф(23). Ф(32) = (23 – 22).(32 – 31) = 4.6 = 24
Đị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.
Ví dụ 1.7:

a = 3; n = 10; Ф(10) = 4;

Vì vậy 34 = 81 = 1 mod 10
a = 2; n = 11; Ф(11) = 10;
Do đó 210 = 1024 = 1 mod 11
a = 4; n = 15; Ф(15) = 8;
Do đó 48 mod 15 = 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

7


Chẳ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; imodulus *=m[i]; n =0
for(i=0; 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.

8


Lời giải:
Xét hệ đồng dư: {


k ≡ 1(modp)
𝑑𝑜 gcd(𝑝, 𝑞) = 1
k ≡ −1(modp)

nên theo định lí phần dư Trung Hoa thì hệ này chắc chắn có nghiệm.
Nếu n chẵn, thì (pq−1)n.k + 1 ≡ k + 1 ≡ −1 + 1= 0 (mod q),
suy ra (pq−1)n.k + 1 là hợp số.
Nếu n lẻ, thì (pq−1)n.k + 1 ≡ −k + 1 ≡ −1 + 1 = 0 (mod p),
suy ra (pq −1)n.k +1 là hợp số.
Vậy luôn tồn tại số k sao cho (pq −1)n.k + 1 là hợp số với mọi số nguyên dương n.
1.1.2 Logarit rời rạc
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 = log1 = 0
y = loga = 1
y = log(a) = 
𝑦 = 𝑎log𝑎 𝑏 = 𝑎
y = log(c.d) = logc + logd
y = log(c/d) = logc − logd
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:


9


Tí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

2x

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:
2 = 10-1 (do2.10 mod19 = 1)
13 = 3-1 (do 3.13mod19 = 1)
14 = 15-1 (do14.15mod19 = 1)

Xét bài toán ngược: y = loga x với a, x  Z *p .
Dựa trên tính chất các hàm logarit ta có:
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

2x

2

4


8

16 13

7

14 9 18 17 15 11

3

6

12

5

10

1

6

5

7

11

4


10

9

Log2x 18 1 13

2

16 14

8

3

9

8

10

10 11 12 13 14 15 16 17 18

17 12 15


Do 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ư ṭ a 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   Z *p . Hãy tìm:
Y = logx với , x  Z *p

Nhận xét: với , x  Z *p thì bài toán: y = logx có nghiệm khi  là phần tử nguyên
thủy, bài toán có thể không có nghiệm khi  bất kỳ.
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).
𝑦 = log 𝑎−1 𝑥 = −log 𝑎 𝑥 = 𝑝 − 1 − log 𝑎 𝑥

Tacó:

→ 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 = log2 x mod 19 và y = log10 x modulo 19
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

Log10x

18

17

5

16

2

4

12

15

10

1

6

3


13

11

7

14

8

9

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:
Z *p = {1, 2, 3,…, p-1} với phép nhân modulo p.

11


Nế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).

12


Chọ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ỏ
để thỏa mãn tính chất này.
1.2.4. Cơ sở của RSA
Ta sẽ chứng minh rằng: Cd mod N = M.
Thật vậy, ta có e và Ф(N) nguyên tố cùng nhau, nên tồn tại số nghịch đảo d,
tức là: (e.d) mod Ф(N) = 1,
Do đó tồn tại số nguyên dương k nào đó, sao cho e.d = 1 + k.Ф(N),
Suy ra Cd = (Me)d = M1 + k.Ф(N) = M1.M k.Ф(N),
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

13



riê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
1. Chọn các sốnguyên tố: p = 17 và q =11.
2. Tính N = p.q, N = 17.11 = 187.
3. Tính Ф(N) = (p –1).(q – 1) = 16.10 = 160.

4. Chọn e: gcd(e,160) = 1; Lấy e = 7.
5. Xác định d: (e.d) mod 160 = 1 và d <160.
6. Giá trị cần tìm là d = 23, vì 23.7 = 161 = 10.160 + 1.
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:
7

Cho mẩu tin M = 88 (thỏa mã điều kiện 88 < 187). Mã C = 88 mod 187 = 11.
Người sử dụng A dùng khóa riêng của mình để giải mã như sau:
23

M = 11 mod 187 = 88. Có thể dùng định lý phần dư Trung Hoa để giải mã
cho nhanh như sau:
23

Tính 11 mod 11 = 0
23

Tính 11 mod 17 = (-6)23 mod 17 = (-6)16.(-6)4.(-6)2.(-6) mod 17 = 3
2

4


8

Vì (-6) mod 17 = 2, nên (-6) mod 17 = 4, (-6) mod 17 = -1;
16

-1

-1

(-6) mod 17 = 1; 11 mod 17 = (-6) mod 17 = 14
-1

nên C2 = 11.(11 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 .
14


Ví 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:
x = 2853 mod 2579 = 435
y = 1299 × 949853 mod 2579 = 2396
Bob thu được bản mã Ek(m) = (435, 2396), anh ta tính:
m = 2396×(435765)-1 mod 2579 = 1299
Đó chính là bản rõ mà Alice đã mã hóa.
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;
Chọn g = h(p −1)/q, ở đó h < p−1, h(p −1)/q (mod p) > 1;
Người sử dụng A chọn khóa riêng và tính khóa công khai
Chọn khóa riêng: x < q
Tính khóa công khai: y = gx (mod p)
1.4.1. Tạo chữ ký DSA
Để 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.

15



1.4.2. Kiểm chứng chữ ký DSA
Nhận được bản tin M cùng với chữ ký (r, s). Để kiểm chứng chữ ký người
nhận cần tính:
w = s-1(mod q)
u1= (SHA(M).w) (mod q)
u2= (r.w) (mod q)
v = (g u1 . y u2 (mod p)) (mod q)
Nếu v = r thì chữ ký đã được kiểm chứng
Ví dụ 1.14: Tạo chữ ký điện tử: Chọn p = 23, q = 11, h = 7
g = h2 mod 23 = 3
Chọn x = 5, y = 35 mod 23 = 13, k = 6, H(M) = 9
r = (gk (mod p)) (mod q) = (36 mod 23) mod 11 = (42) mod 11 = 5
s = (k-1(H(M) + x.r)) (mod q) = (6-1.(9 + 5.5)) mod 11 = 2
Vậy chữ ký điện tử là (5, 2)
Kiểm tra chữ ký điện tử
w = 2−1 mod 11 = 6
u1 = (9.6) mod 11 = 10
u2 = (5.6) mod 11 = 8
v = (310.138 mod 23) mod 11 = (43.3.138 mod 23) mod 11 = (16) mod 11 = 5
v = 5 = r, chữ ký đúng.
Như vậy, bản tin nhận được là toàn vẹn, không bị sửa và thư được gửi bởi
đúng người như đã tuyên bố.

16


Tóm tắt chương
Trong chương này tôi đã trình bày một số kiến thức chuẩn bị là số học
modulo và những hệ mã hóa công khai.
Trong phần số học modulo đã trình bày các vấn đề sau:

- Các phép toán modulo
- Số nghịch đảo Modulo
- Định lí Fermat
- Định lí Euler
- Định lí phần dư Trung hoa
- Logarit rời rạc
- 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
- Sử dụng RSA
- Cơ sở RSA
- Mã Elgamal
- Hệ mã hóa Elgamal
- Khái niệm mã hóa đồng cấu
- Chữ ký điện tử DSA
- Tạo chữ ký DSA
- Kiểm chứng chữ ký DSA.

17


CHƯƠ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 đó.

18


Giá 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à xi với 1 ≤ i ≤ w. Các giá trị xi được coi là khoá công khai của
các thành viên pi.
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: a1,…,. at-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 yi
là giá trị của đa thức a tại diểm thứ xi, cụ thể yi = a(xi), trongđó:
𝑖−1

𝑎(𝑥) = 𝐾 + ∑ 𝑎𝑗 𝑥 𝑗 mod p
𝑗−1

(ở đây j chạy từ 1 đến t -1)
4. Với 1 ≤ i ≤ w, D phân phối cho thành viên yi giá trị pi.
Ví dụ 2.1: Chia mảnh khoá bí mật K.
Khoá K = 15, cần chia thành 6 mảnh cho 6 người P1, P2, P3, P4, P5, P6.
1. Chọn một số nguyên tố p bất kỳ. Ví dụ chọn p = 43, chọn m = 6 phần tử
xi = i trong Zp, i =1, 2, 3, 4, 5, 6
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

19


Trong đó:
𝑖−1

𝑃(𝑥) = 𝐾 + ∑ 𝑎𝑗 𝑥𝑗 mod p = 15 + 𝑎1 + 𝑎2 𝑥2 + 𝑎3 𝑥3 (𝑚𝑜𝑑 43).
𝑗−1

y1 = P(x1) = P(1) = (15 + a1.1 + a2.12 + a3.13) mod 43
= (15 +12.1 + 3.12 + 5.13 ) mod 43 = 35.
y2 = P(x2) = P(2) = (15 + a1.2 + a2.22 + a3.23) mod 43
= (15 +12.2 + 3.22 + 5.23) mod 43 = 5.
y3 = P(x3) = P(3) = (15 + a1.3 + a2.32 + a3.33) mod 43
= (15 +12.3 + 3.32 + 5.33) mod 43 = 41.
y4 = P(x4) = P(4) = (15 + a1.4 + a2.42 + a3.43) mod 43
= (15 +12.4 + 3.42 + 5.43) mod 43 = 1.
y5 = P(x5) = P(5) = (15 + a1.5 + a2.52 + a3.53) mod 43
= (15 +12.5 + 3.52 + 5.53) mod 43 = 1.
y6 = P(x6) = P(6) = (15 + a1.6 + a2.62 + a3.63) mod 43
= (15 +12.6 + 3.62 + 5.63) mod 43 = 28.
4. D trao mảnh yi cho Pi
2.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.
𝑡

𝑎(𝑥) = ∑ 𝑦𝑗
𝑗=1


1≤𝑘≤𝑡,𝑘≠𝑗

𝑥 − 𝑥𝑖𝑡
𝑥𝑖𝑘 − 𝑥𝑖𝑡

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:
t

K = ∑ yj
j=1


1≤k≤t,k≠j

20

−xit
xik − xit



×