You are on page 1of 69

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

TRẦN VĂN ÁNH

CHỮ KÝ MÙ VÀ ỨNG DỤNG TRONG

BỎ PHIẾU KÍN TRỰC TUYẾN

LUẬN VĂN THẠC SĨ KHOA HỌC

Hà Nội – Năm 2014


ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

TRẦN VĂN ÁNH

CHỮ KÝ MÙ VÀ ỨNG DỤNG TRONG

BỎ PHIẾU KÍN TRỰC TUYẾN

Chuyên ngành: Bảo đảm toán cho máy tính và hệ thống tính toán

Mã số: 60 46 35

LUẬN VĂN THẠC SĨ KHOA HỌC

NGƯỜI HƯỚNG DẪN KHOA HỌC:

TS. TÔN QUỐC BÌNH

Hà Nội – Năm 2014

Trang: 2
LỜI CẢM ƠN

Để hoàn thành Luận văn “Chữ ký mù và ứng dụng trong bỏ phiếu kín trực
tuyến”, tác giả đã nhận được sự hướng dẫn và giúp đỡ nhiệt tình của nhiều tập thể
và cá nhân.

Trước hết, tác giả xin trân trọng cảm ơn Ban lãnh đạo cùng Quý thầy cô trong
Khoa Toán – Cơ – Tin học, Trường Đại học Khoa học Tự nhiên Hà Nội đã tận tình
dạy dỗ; truyền đạt những kiến thức, kinh nghiệm quý báu và tạo điều kiện thuận lợi
cho tác giả trong suốt thời gian học tập và thực hiện đề tài.

Đặc biệt, tác giả xin gửi lời cảm ơn sâu sắc tới TS. Tôn Quốc Bình đã nhiệt
tình hướng dẫn, cung cấp những kinh nghiệm quý báu của Thầy để giúp đỡ tác giả
trong quá trình học tập và hoàn thành luận văn.

Tác giả cũng xin trân trọng cám ơn Lãnh đạo Trường Chính trị tỉnh Thái
Bình, các đồng nghiệp đã tạo mọi điều kiện thuận lợi, động viên tác giả trong suốt
quá trình học tập và thực hiện đề tài.

Trong phạm vi luận văn tốt nghiệp cao học khó có thể diễn đạt hết ý về mặt lý
thuyết cũng như kỹ thuật, mặc dù đã cố gắng hoàn thành luận văn với tất cả sự nỗ
lực của bản thân, xong luận văn khó có thể tránh khỏi những thiếu sót. Kính mong
nhận được những ý kiến đóng góp để tác giả tiếp tục hoàn thiện kiến thức cũng như
giải pháp của mình.

Xin chân thành cảm ơn !

Hà Nội, tháng 12 năm 2014

Tác giả

Trần Văn Ánh

Trang: 3
MỤC LỤC

LỜI CẢM ƠN ..................................................................................................................... 1


DANH MỤC CÁC THUẬT NGỮ, TỪ VIẾT TẮT ..................................................... 5
MỞ ĐẦU .............................................................................................................................. 6
1. Lý do chọn đề tài...............................................................................................6
2. Tổng quan về đề tài nghiên cứu. .......................................................................6
3. Mục đích nghiên cứu ........................................................................................7
4. Đối tượng và phạm vi nghiên cứu ....................................................................7
5. Phương pháp nghiên cứu ..................................................................................8
6. Bố cục Luận văn ...............................................................................................8
Chƣơng -1. CHỮ KÝ SỐ, CHỮ KÝ MÙ SỐ ................................................................ 9
1.1. Chữ ký số .....................................................................................................10
1.2. Sơ đồ chữ ký số RSA (Đề xuất năm 1978) .................................................21
1.3. Chữ ký mù. ..................................................................................................23
1.4. Kết luận chương...........................................................................................29
Chƣơng- 2. TỔNG QUAN VỀ BỎ PHIẾU KÍN TRỰC TUYẾN ...........................30
2.1. Một số khái niệm cơ bản .............................................................................30
2.2. Thực trạng bỏ phiếu kín trực tuyến .............................................................32
2.3. Tổ chức hệ thống bỏ phiếu kín trực tuyến ...................................................33
2.4. Một số kỹ thuật áp dụng trong bỏ phiếu kín trực tuyến. .............................37
2.5. Kết luận chương...........................................................................................52
Chƣơng - 3. PHÂN TÍCH THIẾT KẾ ỨNG DỤNG BỎ PHIẾU KÍN TRỰC
TUYẾN...............................................................................................................................53
3.1. Phân tích ......................................................................................................53
3.3. Yêu cầu chức năng .......................................................................................56
3.4. Thiết kế chương trình. .................................................................................59
KẾT LUẬN ........................................................................................................68
TÀI LIỆU THAM KHẢO ..............................................................................................69

Trang: 4
DANH MỤC CÁC THUẬT NGỮ, TỪ VIẾT TẮT

BTC Ban tổ chức

CMTND Chứng minh thư nhân dân

CNTT-TT Công nghệ thông tin và truyền thông

CT Cử tri

ĐK Đăng ký

Gcd Ước số chung lớn nhất

KP Kiểm phiếu

KT Kiểm tra

LAN Local- Area- Network: Mạng cục bộ

MD5 Message Digest algorithm 5 - giải thuật của hàm băm

PKI Public Key Infrastructure – Cơ sở hạ tầng khóa công khai

RSA Rivest, Shamir and Adleman - Giải thuật mã hóa công khai

Server Máy chủ, cung cấp các dịch vụ, ứng dụng

SHA Secure Hash Algorithm – Giải thuật băm an toàn

TT Trung thực

Website Một loại siêu văn bản (tập tin dạng HTML hoặc XHTML) trình
bày thông tin trên mạng Internet, tại một địa chỉ nhất định

Trang: 5
MỞ ĐẦU

1. Lý do chọn đề tài

Ngày nay với sự phát triển mạnh mẽ của Công nghệ thông tin và Truyền
thông, Internet đã thâm nhập vào tất cả mọi lĩnh vực hoạt động của con người.
Trong thực tế các hacker, các dạng virus luôn tấn công và là mối đe dọa của các
nguồn tài nguyên thông tin. Như vậy những vấn đề đảm bảo an toàn thông tin trong
các hệ thống máy tính là rất quan trọng.

Mật mã học [1] là một trong kỹ thuật bảo mật thông tin và đảm bảo an toàn
thông tin trong truyền thông. Nó không chỉ dừng lại trong lĩnh vực bảo mật thông
tin mà còn phục vụ nhu cầu xác thực thông tin trên mạng. Một trong những giải
pháp được đưa ra đó là “Chữ ký điện tử”, chữ ký số và đang được sử dụng để đảm
bảo an toàn cho các giao dịch trên mạng như: Thương mại điện tử, Chính phủ điện
tử, Hành chính công điện tử, bỏ phiếu điện tử..

Trong thực tiễn của đời sống xã hội thì việc bỏ phiếu để bầu cử các chức vụ,
chức danh hay thăm dò sự tín nhiệm của lãnh đạo các cấp, các ngành thông qua việc
bỏ phiếu kín là hoạt động thường xuyên, liên tục. Nhằm tăng hiệu quả, khách quan
và tính chính xác, giảm chi phí trong việc bỏ phiếu, tác giả muốn nghiên cứu các kỹ
thuật đảm bảo an toàn cho việc thực hiện bỏ phiếu kín trực tuyến. Xuất phát từ
những vấn đề thực tiễn trên, em chọn đề tài: “Chữ ký mù và ứng dụng trong bỏ
phiếu kín trực tuyến” là chủ đề chính của luận văn tốt nghiệp.

2. Tổng quan về đề tài nghiên cứu.

[17] Nghiên cứu chữ ký điện tử và bỏ phiếu kín trực tuyến ở nước ngoài
đã được nghiên cứu và thực hiện cho người dân bỏ phiếu trực tuyến, như ở:
St.Alban của Anh do Oracle và British đồng phát triển, cử tri và mã nhận
dạng cá nhân được gửi tới qua đường bưu điện và một mã nhận dạng bầu cử,
do nhân viên phụ trách bầu cử trao tận tay. Cử tri sau đó có thể bỏ phiếu trực
uyến qua internet hoặc qua các ki-ốt điện tử được đặt ở các điểm cố định. Đây

Trang: 6
là các hệ thống mang tính bảo mật rất cao, chính vì vậy tác giả không tiếp cận
để tìm hiểu các hệ thống đó một cách đầy đủ, mà chỉ tiếp cận để hiểu về một
số vấn đề thuyết của các hệ thống bỏ phiếu trực tuyến đó.

Ở Việt Nam chưa có hệ thống bỏ phiếu kín trực tuyến. Tuy nhiên cũng
có rất nhiều các công trình nghiên cứu khoa học của PGS.TS Trịnh Nhật Tiến
về Chữ ký “mù”, Chữ ký “mù nhóm” và ứng dụng của nó trong bỏ phiếu điện
tử. Bên cạnh đó cũng có nhiều Luận văn thạc sĩ của tác giả Vương Thị Huyền
Trang (CT-1002), Phạm Thị Vân Anh (Đồ án tốt nghiệp, Trường Đại học
Công nghệ), Nguyễn Việt Thịnh (Đồ án tốt nghiệp, trường ĐH Dân Lập HP),
Vũ Mạnh Khánh (luận văn nghiên cứu các kỹ thuật đảm bảo an toàn thông tin
trong việc sử dụng tiền điện tử, trường Đại học công nghệ),.. Ở các công trình
nghiên cứu chủ yếu đưa ra các vấn đề về lý thuyết, và minh họa cho lý thuyết,
chưa đưa ra một ứng dụng cụ thể để có thể sử dụng trong hoạt động thực tiễn.

Do đó luận văn tập trung nghiên cứu về quá trình bỏ phiếu kín trực
tuyến, và xây dựng ứng dụng bỏ phiếu kín trực tuyến lấy phiếu tín nhiệm cho
lãnh đạo cấp sở, ngành.

3. Mục đích nghiên cứu

Luận văn nghiên cứu các kỹ thuật bảo mật thông tin phục vụ cho việc phân
tích thiết kế và xây dựng ứng dụng bỏ phiếu kín trực tuyến.

4. Đối tƣợng và phạm vi nghiên cứu

Tập trung nghiên cứu, tìm hiểu về quá trình thực hiện bỏ phiếu kín trực tuyến;
các tiêu chuẩn, cơ sở mật mã, giải pháp công nghệ; trên cơ sở đó xây dựng ứng
dụng bỏ phiếu kín tín nhiệm lãnh đạo cấp sở, ngành trực tuyến.

Trang: 7
5. Phƣơng pháp nghiên cứu

- Tiếp cận phân tích và tổng hợp: Đọc tài liệu, tổng hợp lý thuyết, phân tích lý
thuyết về Hệ mật mã đối xứng, hệ mật mã bất đối xứng (hệ mật mã khóa công khai),
chữ ký số, chữ ký mù

- Tiếp cận theo định tính và định lượng: Nghiên cứu cơ sở khoa học của mã
hóa, chữ ký số, chữ ký mù của các tác giả trong và ngoài nước, các bài báo, thu thập
thông tin trên mạng, tìm hiểu các mô hình bảo mật, chứng chỉ số. Từ đó trình bày
theo ý tưởng của mình về phân tích thiết kế và xây dựng ứng dụng bỏ phiếu kín trực
tuyến.

6. Bố cục Luận văn

Luận văn được trình bày trong 03 chương:

- Chương 1: Tổng quan về một số cơ sở mật mã cần thiết và chữ ký mù

- Chương 2: Bỏ phiếu kín trực tuyến và một số cơ sở mật mã cần thiết áp dụng
cho bỏ phiếu kín trực tuyến.

- Chương 3: Phân tích, thiết kế và xây dựng ứng dụng bỏ phiếu kín tín nhiệm
lãnh đạo cấp sở, ngành trực tuyến.

+ Tìm hiểu yêu cầu công tác bỏ phiếu tín nhiệm.

+ Phân tích thiết kế và áp dụng các thuật toán để giải quyết yêu cầu.

+ Xây dựng ứng dụng bỏ phiếu kín tín nhiệm lãnh đạo cấp sở, ngành trực
tuyến

Trang: 8
Chƣơng -1. CHỮ KÝ SỐ, CHỮ KÝ MÙ SỐ

Đặt vấn đề:

An toàn thông tin nghĩa là thông tin được bảo vệ từ các hệ thống và dịch vụ
hoạt động trên môi trường mạng có khả năng chống lại những can thiệp bất hợp
pháp hay những tai họa không mong đợi; các thay đổi tác động đến độ an toàn của
hệ thống là nhỏ nhất. Hệ thống không an toàn là hệ thống tồn tại những điểm như:
thông tin bị rò rỉ ra ngoài - dữ liệu trong hệ thống bị người không được quyền truy
nhập và lấy sử dụng, các thông tin trong hệ thống bị thay thế hoặc sửa đổi làm sai
lệch một phần hoặc hoàn toàn nội dung…

Giá trị thực sự của thông tin chỉ đạt được khi thông tin được cung cấp chính
xác, kịp thời, đầy đủ, do đó hệ thống phải hoạt động chuẩn xác thì mới có thể đưa ra
những thông tin có giá trị cao. Mục tiêu của an toàn bảo mật trong công nghệ thông
tin là đưa ra một số tiêu chuẩn an toàn và áp dụng các tiêu chuẩn an toàn này vào
chỗ thích hợp để giảm bớt và loại trừ những nguy hiểm có thể xảy ra. [1],[3]

Ngày nay, với sự phát triển rất nhanh của khoa học công nghệ, các biện pháp
tấn công của các tin tặc ngày càng tinh xảo hơn, độ an toàn của thông tin có thể bị
đe dọa từ nhiều nơi, nhiều cách khác nhau, do đó chúng ta cần phải đưa ra các chính
sách đề phòng thích hợp.

Các yêu cầu cần thiết của việc bảo vệ thông tin và tài nguyên:

- Đảm bảo tính bí mật (Security) thông tin không bị lộ đối với người không
được phép.

- Đảm bảo tính tin cậy (Confidentiality): Thông tin và tài nguyên mà người
nhận xác nhận chỉ có duy nhất của người gửi nó.

- Đảm bảo tính toàn vẹn (Integrity): Thông tin và tài nguyên không thể bị sửa
đổi, thay thế bởi những người không có quyền hạn.

- Đảm bảo tính sẵn sàng (Availability): Thông tin và tài nguyên luôn sẵn sàng
để đáp ứng sử dụng cho người có quyền hạn.

Trang: 9
- Đảm bảo tính không thể chối bỏ (Non-Repudiation): Thông tin và tài nguyên
được xác nhận về mặt pháp luật của người cung cấp.

1.1. Chữ ký số

1.1.1. Một số khái niệm trong số học

1.1.1.1. Số nguyên tố và số nguyên tố cùng nhau.

* Khái niệm

Số nguyên tố là số tự nhiên lớn hơn 1 và chỉ có hai ước số là 1 và chính nó.


Tức là số nguyên p>1 là số nguyên tố nếu p có các ước là ± 1 và ± p [2]

* Ví dụ:

Các số 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37 là số nguyên tố.

Số 2 là số nguyên tố chẵn duy nhất.

Số nguyên tố có vai trò và ý nghĩa to lớn trong số học và lý thuyết mật mã. Bài
toán kiểm tra tính nguyên tố của một số nguyên dương n và phân tích một số n ra
thừa số nguyên tố là các bài toán rất được quan tâm.

Nếu Ước số chung lớn nhất của a1 , a2 ,..., an , ký hiệu gcd( a1 , a2 ,..., an ) = 1, thì
các số a1 , a2 ,..., an gọi là nguyên tố cùng nhau.

Ví dụ: Hai số 8 và 13 là nguyên tố cùng nhau, vì gcd(8, 13) = 1.

1.1.1.2. Phần tử nghịch đảo đối với phép nhân

* Khái niệm: Cho a  Z n , nếu tồn tại b  Z n sao cho ab  1 (mod n), ta nói b

là phần tử nghịch đảo của a trong Z n và ký hiệu a 1 .

Với Z n = {0, 1, 2, .., n-1} là tập các số nguyên không âm < n

Một phần tử có phần tử nghịch đảo gọi là khả nghịch.

* Khái niệm Nhóm:

- Nhóm là một bộ (G, *) trong đó:

Trang: 10
+ * là phép toán hai ngôi

+ G  Ø, trên G thỏa mãn các tính chất

(x*y)*z = x*(y*z) với mọi x, y, z  G

Có phần tử trung lập e  G: x*e = e*x = x

Có phần tử nghịch đảo x’ G: x*x‟ = x‟*x = e với mọi x  G

- Cấp của nhóm, ký hiệu |G| là số phần tử của nhóm (có thể G có vô hạn các
phần tử, cấp của G là vô cùng).

* Định lí cơ bản của số học: Mọi số nguyên n > 1 đều có thể được phân
tích một cách duy nhất dưới dạng các lũy thừa của các số nguyên tố khác nhau.
k
n= p
i 1
i
i  p11 p22 ... pkk , i  0

Trong đó pi (i=1, 2, .., k) là các số nguyên tố, từng đôi một khác nhau.

Ví dụ: n= 2, n= 3, n= 4= 2.2, n= 5, n= 6= 2.3

* Hệ quả:

Nếu a là một số nguyên tố và a là ước s ố củ a b *c , k ý hi ệu a|(b*c) thì


ít nhất một trong 2 số b, c phải chia hết cho a.

+ Ước chung lớn nhất của 2 số tự nhiên a và b được kí hiệu là gcd(a,b). c là


ước chung lớn nhất của a và b, ký hiệu c= gcd(a,b) nếu:

+ c là ước số của a và b

+ Bất kì một ước số chung nào của a và b đều nhỏ hơn hoặc bằng c.

Tất cả các số nguyên khác 0 đều là ước của số 0.

Suy ra: gcd(a,0) = a.

* Một số định lý về số nguyên tố (đã đƣợc chứng minh)

- Định lý Mersenne:

Cho p = 2k -1, nếu p là số nguyên tố thì k phải là số nguyên tố.

Trang: 11
- Định lý Lagrang: Nếu G là nhóm cấp n và a  G, thì cấp của a là ước của n.

- Đị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ý Trung Quốc về số dư: [16]

Cho tập số nguyên tố cùng nhau từng đôi một m1, m2,…mk. Với mỗi bộ số
nguyên bất kỳ a1, a2,…ak , hệ phương trình dạng:

x ≡ ai (mod mi), (i =1, 2, …, k), luôn có nghiệm duy nhất theo modulo m,

M = m1.m2.…mk .

Nghiệm này có thể tính theo công thức:


k
x =  ai M i yi (mod M ) , Trong đó yi = Mi-1 (mod mi), i =1, 2,…,k.
i 1

Với Mi = M / mi

Nhận xét:

Định lý số dư Trung Quốc cho phép tính đồng dư theo modulo của một số
lớn (tích của nhiều số nguyên tố cùng nhau), thông qua tính toán đồng dư theo
modulo các số nhỏ (từng thừa số).

Vídụ: Tìm nghiệm của hệ phương trình:


x ≡ 2 mod 3
x ≡ 3 mod 5
x ≡ 5 mod 7

Vì các số 3, 5, 7 nguyên tố cùng nhau, nên theo định lý Trung Quốc về số dư,
hệ có nghiệm duy nhất theo modulo M = 3.5.7 = 105,

Để tìm x mod m ta tính:

M1 = M/3 = 35 → y1 = 35-1 mod 3 = 2

Trang: 12
M2 = M/5 = 21 → y2 = 21-1 mod 5= 1

M3 = M/7 = 15 → y3 = 15-1 mod 7 = 1

x = 2.35.2 + 3.21.1 + 5.15.1 (mod m) = 278 (mod 105)=68 (mod 105)

Như vậy x có dạng x= 68 + k.105 (k là số nguyên hoặc số nguyên thích hợp


nếu tìm nghiệm tự nhiên)

1.1.1.2. Hàm Euler:

Cho số nguyên dương n, số lượng các số nguyên dương bé hơn n và nguyên tố


cùng nhau với n được ký hiệu (n) và gọi là hàm Euler.

+ Nhận xét: Nếu p là số nguyên tố, thì (p) = p -1

Ví dụ:

Tập các số nguyên không âm nhỏ hơn 7 là Z7 = {0, 1, 2, 3, 4, 5, 6}.

Do 7 là số nguyên tố, nên tập các số nguyên dương nhỏ hơn 7 và nguyên tố
cùng nhau với 7 là Z7* = {1, 2, 3, 4, 5, 6}.

Khi đó |Z| = (p) = p - 1 = 7 - 1 = 6

+ Định lý về hàm Euler: Nếu n là tích của hai số nguyên tố p, q thì

(n) = (p) .(q) = (p-1).(q-1)

1.1.1.3 Quan hệ Đồng dư

* Khái niệm

Cho hai số nguyên a, b, m (m > 0). Ta nói rằng a và b “đồng dư” với nhau
theo modulo m, nếu chia a và b cho m, ta nhận được cùng một số dư.

Ký hiệu: a  b (mod m).

* Ví dụ:

17  5 (mod 3) vì chia 17 và 5 cho 3, được cùng số dư là 2.

* Tính chất của quan hệ đồng dƣ

Trang: 13
- Với mọi số nguyên dương m ta có:
a ≡ a (mod m) với mọi a  Z; (tính chất phản xạ)
a ≡ b (mod m) thì b ≡ a ( mod m); (tính chất đối xứng)
a ≡ b (mod m) và b ≡ c (mod m) thì a ≡ c (mod m); (tính chất bắc cầu)
- Tổng hay hiệu các đồng dư:
(a+b) (mod n) ≡ [(a mod n) + (b mod n)] (mod n)
(a-b) (mod n) ≡ [(a mod n) - (b mod n)] (mod n)
- Tích các đồng dư:
(a*b) (mod n) ≡ [(a mod n) * (b mod n)] (mod n)

1.1.1.4. Tập thặng dư thu gọn theo modulo

* Khái niệm

Kí hiệu Z n = {0, 1, 2, ..., n-1} là tập các số nguyên không âm < n.

Z n và phép cộng (+) lập thành nhóm Cyclic có phần tử sinh là 1, phần tử trung
lập e = 0, (Z n , +) gọi là nhóm cộng, đó là nhóm hữu hạn có cấp n.

Với phép (+) là phép cộng thông thường của các số nguyên.

Kí hiệu Z *n = {x  Z n , x là nguyên tố cùng nhau với n}. Tức là x phải  0.

Z *n được gọi là Tập thặng dư thu gọn theo mod n, có số phần tử là (n).

Z *n với phép nhân mod n lập thành một nhóm (nhóm nhân),

phần tử trung lập e = 1.

Tổng quát (Z *n , phép nhân mod n) không phải là nhóm Cyclic.

Nhóm nhân Z *n là Cyclic chỉ khi n có dạng: 2 , 4, p k hay 2p k với p là nguyên tố lẻ.

* Ví dụ: Cho n = 21, Z *n = {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}.

Trang: 14
1.1.1.6. Độ phức tạp của thuật toán

* Bài toán được diễn đạt bằng hai phần:

Đầu vào: Các dữ liệu vào của bài toán.

Đầu ra: Các dữ liệu ra của bài toán (kết quả).

* Khái niệm Thuật toán

“Thuật toán” được hiểu đơn giản là cách thức để giải một bài toán. Cũng có
thể được hiểu bằng hai quan niệm: trực giác hay hình thức như sau:

- Một cách trực giác, Thuật toán được hiểu là một dãy hữu hạn các qui tắc (chỉ
thị, mệnh lệnh) mô tả một quá trình tính toán, để từ dữ liệu đã cho đầu vào ta nhận
được kết quả đầu ra của bài toán.

- Một cách hình thức, người ta quan niệm thuật toán là một máy Turing.

Thuật toán được chia thành hai loại: Đơn định và không đơn định.

* Khái niệm Độ phức tạp của thuật toán

Chi phí thời gian của một quá trình tính toán là thời gian cần thiết để thực
hiện một quá trình tính toán. Với thuật toán tựa Algol: Chi phí thời gian là số các
phép tính cơ bản thực hiện trong quá trình tính toán.

Chi phí bộ nhớ của một quá trình tính toán là số ô nhớ cần thiết để thực hiện
một quá trình tính toán. Gọi A là thuật toán, e là dữ liệu vào của bài toán đã được
mã hóa bằng cách nào đó. Thuật toán A tính trên dữ liệu vào e phải trả một giá nhất
định. Ta ký hiệu: tA(e) là giá thời gian và IA(e) là giá bộ nhớ.

1.1.2. Khái niệm chữ ký số:

Để chứng thực nguồn gốc hay hiệu lực của một tài liệu văn bản (ví dụ như:
Quyết định, công văn, ...), người ta dùng chữ ký “bằng tay” vào phía dưới của mỗi
tài liệu. Như vậy người ký phải trực tiếp “ký bằng tay” vào tài liệu.

Với các tài liệu được số hóa, người ta cũng có nhu cầu chứng thực nguồn gốc
hay hiệu lực của các tài liệu này. Rõ ràng không thể “ký bằng tay” vào tài liệu, vì

Trang: 15
chúng không được in ấn trên giấy. Tài liệu “số” (hay tài liệu “điện tử”) là một xâu
các bít (0 hay 1), xâu bít có thể rất dài (nếu in trên giấy có thể hàng nghìn trang).
“Chữ ký” để chứng thực một xâu bít tài liệu cũng không thể là một xâu bít nhỏ đặt
phía dưới xâu bít tài liệu. Một “chữ ký” như vậy chắc chắn sẽ bị kẻ gian sao chép để
đặt dưới một tài liệu khác bất hợp pháp.

Các nhà khoa học đã phát minh ra “chữ ký số” để chứng thực một “tài liệu số”
vào những năm 80 của thế kỷ 20. Đó chính là “bản mã” của xâu bít tài liệu.

Người ta tạo ra “chữ ký số” (chữ ký điện tử) trên “tài liệu số” giống như tạo ra
“bản mã” của tài liệu với “khóa lập mã”.

Như vậy “ký số” trên “tài liệu số” là “ký” trên từng bít tài liệu. Kẻ gian khó
thể giả mạo “chữ ký số” nếu nó không biết “khóa lập mã”.

Để kiểm tra một “chữ ký số” thuộc về một “tài liệu số”, người ta giải mã “chữ
ký số” bằng “khóa giải mã” và so sánh với tài liệu gốc.

Ngoài ý nghĩa để chứng thực nguồn gốc hay hiệu lực của các tài liệu số hóa.
Mặt mạnh của “chữ ký số” hơn “chữ ký tay” là ở chỗ người ta có thể “ký” vào tài
liệu từ xa trên mạng công khai. Hơn thế nữa, có thể “ký” bằng các thiết bị cầm tay
(ví dụ điện thoại di động) tại khắp mọi nơi (Ubiquitous) và di động (Mobile), miễn
là kết nối được vào mạng.

“Ký số” thực hiện trên từng bít tài liệu, nên độ dài của “chữ ký số ” ít nhất
cũng bằng độ dài tài liệu. Do đó thay vì ký trên tài liệu dài, người ta thường dùng
“hàm băm” để tạo “đại diện” cho tài liệu, sau đó mới “Ký số” lên “đại diện” này.

Chúng ta có thể hiểu nôm na về chữ ký số như sau: là những thông tin đi kèm
với dữ liệu nhằm xác định chủ của người gửi nó.

Chữ ký số bao gồm 3 thành phần:

Thuật toán tạo ra khóa, hàm tạo chữ ký và hàm kiểm tra chữ ký.

Hàm tạo ra chữ ký là hàm tính toán chữ ký trên cơ sở khóa mật và dữ liệu cần ký.

Trang: 16
Hàm kiểm tra chữ ký là hàm kiểm tra xem chữ ký đã cho có đúng với khóa
công cộng không. Khóa này mọi người có quyền truy cập cho nên mọi người đều có
thể kiểm tra được chữ ký.

1.1.3. Sơ đồ chữ ký số bao gồm các thành phần sau:

Sơ đồ chữ ký là bộ năm (P, A, K, S, V), trong đó:

P là tập hữu hạn các văn bản có thể.

A là tập hữu hạn các chữ ký có thể.

K là tập hữu hạn các khóa có thể.

S là tập các thuật toán ký.

V là tập các thuật toán kiểm thử.

Với mỗi khóa k  K, có thuật toán ký Sigk  S, Sigk: P  A, có thuật toán


kiểm tra chữ ký Verk  V, Verk: P x A  {đúng, sai}, thỏa mãn điều kiện sau với
mọi x  P, y  A:

Đúng, nếu y = Sigk (x)

Verk (x, y) = Sai, nếu y  Sigk (x)

Người ta thường dùng hệ mã hóa khóa công khai để lập “Sơ đồ chữ ký số”. Ở
đây khóa bí mật a dùng làm khóa “ký”, khóa công khai b dùng làm khóa kiểm tra
“chữ ký”.

Ngược lại với việc mã hóa, dùng khóa công khai b để lập mã, dùng khóa bí
mật a để giải mã. Do “ký” cần giữ bí mật nên phải dùng khóa bí mật a để “ký”, còn
“chữ ký” là công khai cho mọi người biết, nên dùng khóa công khai b để kiểm tra.

1.1.4. Phân loại chữ ký theo đặc trƣng kiểm tra chữ ký

* Chữ ký khôi phục thông điệp:

Là loại chữ ký, trong đó người gửi chỉ cần gửi “chữ ký”, người nhận có thể
khôi phục lại được thông điệp, đã được “ký” bởi “chữ ký” này.

Trang: 17
Ví dụ: Chữ ký RSA là chữ ký khôi phục thông điệp.

* Chữ ký đi kèm thông điệp:

Là loại chữ ký, trong đó người gửi không chỉ cần gửi “chữ ký” mà phải gửi
kèm cả thông điệp đã được “ký” bởi “chữ ký” này. Ngược lại, người nhận sẽ không
có được thông điệp gốc.

Ví dụ: Chữ ký Elgamal là chữ ký đi kèm thông điệp.

1.1.5. Phân loại chữ ký theo mức an toàn

1/. Chữ ký “không thể phủ nhận”:

Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt nhất là người gửi
tham gia trực tiếp vào việc kiểm thử chữ ký. Điều đó được thực hiện bằng một giao
thức kiểm thử, dưới dạng một giao thức mời hỏi và trả lời.

Ví dụ: Chữ ký không phủ định (Chaum- van Antverpen).

2/. Chữ ký “một lần”:

Để bảo đảm an toàn, “khóa ký” chỉ dùng 1 lần (one-time) trên 1 tài liệu.

Ví dụ: Chữ ký một lần Lamport. Chữ ký Fail - Stop (Van Heyst & Pedersen).

1.1.6. Phân loại chữ ký theo ứng dụng đặc trƣng

Chữ ký “mù” (Blind Signature).

Chữ ký “nhóm” (Group Signature).

Chữ ký “bội” (Multy Signature).

Chữ ký “mù nhóm” (Blind Group Signature).

Chữ ký “mù bội” (Blind Multy Signature).

1.1.7. Thuộc tính của chữ ký số.

- Chữ ký phải có độ tin cậy (xác thực)

Trang: 18
- Chữ ký không thể giả mạo: Chữ ký chứng minh chỉ có người ký đã ký vào
tài liệu một cách chủ định mà không phải ai khác.

- Chữ ký không thể được dùng lại: Chữ ký phải là một phần của tài liệu và
không thể chuyển chữ ký sang tài liệu khác.

- Tài liệu đã ký không thể thay đổi được nội dung.

- Chống từ chối. Chỉ người ký mới có khóa bí mật để ký lên m.

Các khả năng tấn công đối với chữ ký điện tử:

1. Tin tặc có thể giả mạo chữ ký tương ứng với văn bản đã chọn.

2. Tin tặc thử chọn thông điệp mà tương ứng với chữ ký đã cho.

3. Tin tặc có thể ăn trộm khóa mật và có thể ký trên bất kỳ một bức điện nào
nó muốn giống như chủ của khóa mật.

4. Tin tặc có thể giả mạo người ký và ký một bức điện nào đó.

5. Tin tặc có thể đổi khóa công cộng bởi khóa của mình.

1.1.8. Một số vấn đề với chữ ký số

- Ký số thực hiện trên từng bít của tài liệu. Trong thực tế, ta cần ký vào các tài
liệu số có kích thước lớn. Như vậy tốn nhiều bộ nhớ để lưu trữ chữ ký, mặt khác tốn
nhiều vấn đề khác…

- Một sơ đồ chữ ký "an toàn" thì tốc độ ký chậm vì phải dùng nhiều phép toán
số học phức tạp như số mũ modulo.

- Sử dụng hệ mã hóa sơ đồ ký giống nhau (hoặc có thể khác nhau) nhưng thực
tế lại cho ra bản mã hay chữ ký giống nhau. Điều này sẽ dẫn đến phức tạp cho việc
xác thực.

Để giải quyết các tình trạng trên người ta thường sử dụng "hàm băm" để tạo
"đại diện" (hay bản tóm lược, thu gọn) cho tài liệu. Sau đó ký số lên "đại diện" này.

Trang: 19
1.1.8.1. Hàm băm: (Hash function)

* Hàm băm (h) Là hàm một chiều (One-way Hash) với các đặc tính sau:

- Với tài liệu đầu vào (thông điệp gốc) x, chỉ thu được giá trị băm duy nhất z =
h(x).
- Nếu dữ liệu trong thông điệp x bị thay đổi hay bị xóa để thành thông điệp
x‟, thì giá trị băm h(x‟)  h(x).
- Dù chỉ là một sự thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của thông
điệp gốc x, thì giá trị băm h(x) của nó cũng vẫn thay đổi. Điều này có nghĩa là: hai
thông điệp khác nhau, thì giá trị băm của chúng cũng khác nhau.
- Nội dung của thông điệp gốc “khó” thể suy ra từ giá trị hàm băm của nó.
Nghĩa là: với thông điệp x thì “dễ ” tính được z = h(x), nhưng lại “khó” tính
ngược lại được x nếu chỉ biết giá trị băm h(x) (kể cả khi biết hàm băm h).
* Tính chất của hàm băm.

- Hàm băm không va chạm yếu.


Hàm băm h được gọi là không va chạm yếu, nếu cho trước bức điện x,
“khó” thể tính toán để tìm ra bức điện x‟  x mà h(x‟) = h(x).
- Hàm băm không va chạm mạnh.
Hàm băm h được gọi là không va chạm mạnh nếu “khó” thể tính toán để tìm ra
hai bức thông điệp khác nhau x‟ và x (x‟  x) mà có h(x‟) = h(x).
- Hàm băm một chiều. Hàm băm h được gọi là hàm một chiều nếu khi cho
trước một bản tóm lược thông báo z thì “khó thể” tính toán để tìm ra thông điệp ban
đầu x sao cho h(x) = z.
Ví dụ hàm băm MD5 biến đổi một thông điệp bất kỳ có chiều dài bất kỳ thành
một khối có kích thước cố định 128 bits.
MD5("cộng hòa xã hội chủ nghĩa việt nam")
= 7b8e76fac176d53c53cb24843e31e759
Ngay cả khi một chuỗi rỗng cũng trả về một chuỗi số thập lục phân gồm 32 số
liên tiếp: MD5("")
= d41d8cd98f00b204e9800998ecf8427e

Trang: 20
1.1.8.2. Lược đồ ký số và thẩm định ký số:

Hình 0.1. Lƣợc đồ ký số và kiểm tra chữ ký số

Chữ ký số được tạo ra bằng cách mã hóa chuỗi băm (được tạo ra từ thông báo
ban đầu bằng cách sử dụng hàm băm) với khóa riêng của người gửi. Quá trình kiểm
tra chữ ký số gồm các bước: sử dụng hàm băm để tạo ra một chuỗi băm tính được từ
thông báo nhận được, giải mã chữ ký số với khóa công khai của người gửi để thu
được chuỗi băm, so sánh chuỗi băm mong muốn và chuỗi băm tính được, nếu trùng
nhau thì chữ ký số là hợp lệ, người nhận có thể tin cậy vào thông báo nhận được,
xác định thông báo không bị làm giả trong quá trình trao đổi và có nguồn gốc từ
người gửi.

1.2. Sơ đồ chữ ký số RSA (Đề xuất năm 1978)

Sơ đồ chữ ký RSA được Diffie-Hellman đề xuất và được Ronald Linn Rivest,


Adi Shamir và Leonard Adleman thực hiện. [14],[15]

Trang: 21
* Sơ đồ chữ ký RSA

Tạo khóa:

Quá trình tạo khóa cho sơ đồ chữ ký RSA giống như quá trình hình thành khóa
của hệ mật RSA, tức là: Người ký chọn cặp số nguyên tố đủ lớn p và q, với q  p ,

tính N=pq;  (N ) =(p-1)(q-1). Chọn số nguyên e thỏa mãn UCLN(e,  ( N ))  1. Người


ký đi xác định số nguyên d, thỏa mãn phương trình ed  1(mod  ( N )) . Số d là khóa
bí mật của Người ký.

Tạo chữ ký:

Để tạo ra chữ ký số của bức điện m  Z N* Người ký tạo ra số

s  Signd (m)  md (mod N ) .

Thẩm tra chữ ký:

Để thẩm tra chữ ký s có phải của Người ký ký không thì Người nhận kiểm
chứng bằng thủ tục sau:

Verify(N,e)(m,s)=TRUE, nếu như m  se (mod N ) .

Rõ ràng chúng ta thấy rằng quá trình tạo chữ ký và thẩm tra chữ ký giống với
quá trình mã và giải mã của hệ mật RSA chỉ khác là quá trình tạo chữ ký Người ký
dùng khóa mật còn quá trình thẩm tra thì Người nhận dùng khóa công cộng.

Ví dụ:

Chữ ký trên x = 2

* Tạo cặp khóa (bí mật, công khai) = (a, b):

Chọn bí mật số nguyên tố p = 3, q = 5, tính n = p*q = 3*5 = 15, công khai n.

Đặt P = C = Z n . Tính bí mật (n) = (p-1).(q-1) = 2*4 = 8.

Chọn khóa công khai b = 3 < (n), nguyên tố với (n) = 8.

Trang: 22
Khóa bí mật a = 3, là phần tử nghịch đảo của b theo mod (n): a*b  1 (mod
(n)).

* Ký số: Chữ ký trên x = 2  P là:

y = Sig k (x) = x a (mod n) = 2 3 (mod 15) = 8, y  A.

* Kiểm tra chữ ký:

Verk ( x, y) = đúng  x  y b (mod n)  2  8b (mod 15).

1.3. Chữ ký mù.

1.3.1. Khái niệm chữ ký mù (giao thức ký mù):

Chữ ký mù (Bind Signature) được David Chaum giới thiệu vào năm 1983, nó
là một loại chữ ký số, trong đó nội dung của thông điệp bị "che" đi trước khi nó
được ký [5], [7]. Chữ ký thu được có thể được xác thực như là đối với chữ ký số
thông thường. Chữ ký mù thường được dùng trong các vấn đề đòi hỏi sự nặc danh
như trong các ứng dụng tiền điện tử, bỏ phiếu điện tử … Một trong các sơ đồ nổi
tiếng là sơ đồ chữ ký mù Chaum. Sơ đồ này hình thành trên cơ sở sơ đồ chữ ký
RSA (như đã trình bày ở trên).

* Các bƣớc xây dựng chữ ký mù:

- Nếu người ký có khóa công khai RSA(n,e) và khóa bí mật d. thì:

- Người yêu cầu ký sẽ làm "mù" thông điệp m được m'  m  r e (mod n) , với r
 RZ n ngẫu nhiên và gửi m' cho người ký.

- Người ký, ký vào thông điệp đã được làm mù m' và cho chữ ký s'=m'd mod n
đến người yêu cầu ký.

- Người yêu cầu lấy lại được chữ ký S của thông điệp m bằng cách tính toán: S
= s'/r = m'd/r = mdred/r = mdr/r = md

* Mô hình chung của chữ ký mù

Trang: 23
Chữ ký mù phối hợp với không gian thông điệp M là bộ 5 gồm (ŋ,X,б,δ,Γ)
trong đó [11]:

- ŋ là một thuật toán xác xuất, với việc đặt khóa công khai của người ký là pk
và khóa bí mật tương ứng là sk.

- X là thuật toán mù, trong đó đặt một thông điệp m  M và một khóa công
khai pk và một xâu ngẫu nhiên r, đặt một thông điệp mù m‟.

- б là một thuật toán ký trong đó đặt một thông điệp mù m‟ và khóa bí mật sk
đặt chữ ký mù s‟ trong m‟.

- δ là một thuật toán đạt được trong đó đặt một chữ ký mù s‟ và một xâu ngẫu
nhiên r rút ra một chữ ký s trên m.

- Γ là một thuật toán xác minh chữ ký mà trên đó đặt một cặp thông điệp - chữ
ký (m,s) khóa công khai pk.
Đặt khóa
GEN(n): là thuật toán sinh khóa.

Chọn ngẫu nhiên hai số nguyên tố lớn p, q sao cho:

n=p*q; và Φn=(p-1)*(q-1);

Chọn ngẫu nhiên pk(khóa công khai) pk(1<pk<Φn).

Lúc đó sk(khóa bí mật), sk=pk-1.


Làm mù báo cáo.
X(pk,r,m): thuật toán làm mù.

m bản rõ

m‟ bản mù.

r xâu ngẫu nhiên.

m‟=mrpk mod n;
* Quá trình ký.
б(sk,s,m‟) là thuật toán ký.

Trang: 24
s‟=m‟sk mod n;
* Lấy lại chữ ký.
δ(s,m‟,m) thuật toán lấy lại chữ ký.

s=s‟/r=m‟sk/r=mskrpk sk/r=mskr/r=msk;

* Kiểm định chữ ký.


Γ(m,s) thuật toán kiểm định chữ ký.

kiểm địmh chữ ký dựa theo quá trình lập mã và giải mã của hệ thống mã RSA.

Lập mã m‟=mpk mod n;

Giải mã m=m‟sk mod n;

* Đặc điểm của chữ ký mù.

- Tính đúng đắn: Bất kỳ ai cũng có thể kiểm tra tính đúng đắn của chữ ký
thông qua khóa công khai của người ký.

- Tính chính xác: Chữ ký hợp lệ chỉ ra người ký mới ký lên được tài liệu.

- Tính xác thực: Một người ký hợp lệ có thể tạo ra một chữ ký hợp lệ.

- Không tái sử dụng: Người yêu cầu chữ ký không thể sử dụng chữ ký nhiều
hơn một lần.

- Chống chối bỏ: Những người ký lên văn bản không thể chối bỏ đã ký một
văn bản có chữ ký hợp lệ.

- Làm mù: sử dụng khóa công khai của người ký để làm mù nội dung trước
khi nó được ký bởi người đó.

- Tính bảo mật: Không ai có thể sửa được nội dung trừ người đã làm mù nội
dung đó.

* Ứng dụng của chữ ký mù: Thường được sử dụng trong hệ thống bỏ phiếu
điện tử và trong hệ thống tiền điện tử…

Trang: 25
1.3.2. Chữ ký mù RSA.

* Sơ đồ:

Người ký Người được ký


Khóa công khai: n= pq và b
Khóa bí mật a với ab = 1 mod Φn
m' r  RZ n ngẫu nhiên (  r-1modn)
m'=rbm mod n

s' = m'a mod n s' s = r-1s' mod n.

1. Người nhận chọn số ngẫu nhiên r, sao cho UCLN(r,n)=1 và dùng khóa
công khai b của người ký để làm mù thông điệp m thành m'

2. Người được ký gửi cho Người ký thông điệp m'  m  r b (mod n) , đây là
thông điệp để Người ký ký, Người ký không thể biết được thông điệp m.

3. Người ký ký lên m‟ và gửi cho Người được ký:

4. s'  m'a  ma  r ab (mod n)  r  ma (mod n) . Đến đây Người ký cũng không thể

biết được giá trị m a bởi bản mã s’ được mã bởi khóa r. Nếu như Người ký biết
được m a thì dễ dàng biết được M bằng cách:

5. (ma )b  m(mod n) .

6. Người nhận dùng thuật toán mở rộng Euclide để tính r 1 và khôi phục
chữ ký cho thông điệp m, bằng cách: s  k 1s'  k 1  k  ma  ma (mod n) .

Như vậy Người được ký nhận được chữ ký với thông điệp m mà Người ký
không biết được nội dung của thông điệp m.

1.3.3. Nghiên cứu của "Fan_Chen_Yeh's" về chữ ký mù.

* Nghiên cứu của Fan_chen_Yeh's vẫn dựa trên tưởng của mã RSA. Nhưng họ
gợi ý tới việc sử dụng nối chuỗi m‟=a1||…||at với a1= m ai=H(a1||…||ai-1), 1<i<t và
|m‟|=|n|.

Thay vào đó một hàm băm như là MD5 hay SHA. [16]

Trang: 26
Để giảm bớt khả năng bị tấn công trong sơ đồ chữ ký mù.

* Mô tả về sơ đồ chữ ký mù

1. Khởi tạo khóa và hàm băm.

Chọn ngẫu nhiên hai số nguyên tố lớn p, q sao cho:

n=p*q; và Φn=(p-1)*(q-1);

Chọn ngẫu nhiên pk(khóa công khai) với pk(1<pk<Φn).

Lúc đó sk(khóa bí mật) sk=pk-1 và một hàm băm H() với cách băm như là MD5.

2. Làm mù báo cáo.

Khi nhận được yêu cầu ký của một báo cáo m. Người sử dụng chọn ngẫu
nhiên một số nguyên r  Zn* và một số nguyên dương u  Zn. Tiếp theo tính toán
và đưa ra số nguyên a  ( rpk H(m) (u2+1) mod n ) cho người ký. Sau khi nhận a,
người ký chọn ngẫu nhiên một số nguyên dương x  Zn và gửi tới cho người sử
dụng. Sau khi nhận x, người sử dụng chọn ngẫu nhiên một số nguyên b  Zn* và
tính toán.

  (bpk(u-x) mod n ).

Cuối cùng người sử dụng đưa cho người ký số nguyên  .

3. Quá trình ký.

Sau khi nhận được  người ký tính toán.

t (a(x2+1)  -2 )sk mod n . tiếp theo người ký gửi tới cho người sử dụng.

4. Quá trình làm rõ sau khi nhận được t, người sử dụng tính c  ((ux+1)(u-x)-
1
mod n và s (r-1b2t ) mod n .

5.quá trình xác định chữ ký .

s là chữ ký của người ký trên (c,m), verify (c, m, s), nếu spk  H(m)(c2+1) mod
n

Trang: 27
1.3.4. Chữ ký mù Schnorr.

Sơ đồ chữ ký Schnorr được xây dựng bằng cách mù hóa sơ đồ ký số Schnorr


và thường được sử dụng để ẩn danh đồng tiền điện tử. [10]
Giao thức thực hiện:
Sinh khóa:
1. Khóa bí mật của Người ký là x, khóa công khai là y = g x mod n
2. Người yêu cầu muốn ký lên thông điệp M
Thực hiện ký:

3. Người ký lấy ngẫu nhiên r  Zq và tính t = gr và gửi t cho người yêu cầu.

4. Người yêu cầu lấy ngẫu nhiên γ, δ  Zq


Tính t‟ = t gγ yδ mod n
Tính m = H (M, t‟)
Tính m‟ = m - δ mod q = H(M,t‟) – δ mod q và gửi m‟ cho Người ký.
5. Người ký tính s = m‟ – r x mod q và gửi s cho Người yêu cầu
6. Người yêu cầu tính s‟ = s + γ mod q và được chữ ký là (m, s‟)
Kiểm tra chữ ký:
Chữ ký (m, s‟) là hợp lệ nếu: m = H(M, t‟) = H(M. gs * ym).

1.3.5. Chữ ký mù nhóm.

* Sơ đồ chữ ký nhóm: [5]

Người tin cậy Z là trưởng nhóm chọn hệ thống khóa bí mật, Z chuyển cho mỗi
thành viên trong nhóm một danh sách các khóa bí mật (các danh sách này là khác
nhau) và công bố một danh sách các khóa công khai tương ứng (theo thứ tự ngẫu
nhiên) trong thư mục công khai tin tưởng (TPD - Trusted Public Directory).

- Mỗi thành viên trong nhóm có thể ký bằng khóa bí mật si trong danh sách
của anh ta.

- Người nhận kiểm tra chữ ký bằng khóa công khai tương ứng h = g s i mod p.

Trang: 28
Mỗi khóa bí mật si chỉ được sử dụng một lần.

- Z biết danh sách khóa bí mật của mỗi thành viên, vì thế trong trường hợp cần
thiết, Z biết được ai đã tạo ra chữ ký đó.

- Theo sơ đồ này, Z biết danh sách khóa bí mật của mọi thành viên và có thể
giả mạo chữ ký. Điều này có thể giải quyết bằng việc sử dụng các khóa công khai
„mù‟. Bằng cách:

- Chọn p là số nguyên tố, g là phần tử sinh của nhóm nhân Z*p.

Thành viên thứ i lấy khóa bí mật “thực sự” của mình là si , khóa công khai
“thực sự” là h = gsi mod p. Trưởng nhóm Z có danh sách các khóa công khai khác
nhau h và tên của các thành viên tương ứng trong nhóm.

- Mỗi tuần Z đưa cho thành viên i một số ngẫu nhiên ri  {1, 2,…, p-1}, trong
tuần này thành viên i sẽ sử dụng si ri mod (p-1) làm khóa bí mật “mù”. (Khóa mật
si đã bị che bởi ri).

Khóa công khai “mù” tương ứng là h-mù = gsi . ri = (gsi ) ri

- Với cải biên này, Z “khó” giả mạo chữ ký, vì mỗi thành viên có “khóa mật
thực sự” si , không trao cho Z. Nếu chẳng may ri bị lộ, nhưng si vẫn không bị lộ.

1.4. Kết luận chương.

Trong chương này, luận văn đã tìm hiểu một số cơ sở về chữ ký số và chữ ký
mù số, cụ thể:

Tìm hiểu một số khái niệm trong số học; chữ ký số; sơ đồ ký số RSA; sơ đồ
chữ ký mù RSA và một số chữ ký số mù khác.

Trang: 29
Chƣơng- 2. TỔNG QUAN VỀ BỎ PHIẾU KÍN TRỰC TUYẾN

Để có hướng nghiên cứu và giải pháp phù hợp, chương này tập trung tìm hiểu
một số khái niệm về bỏ phiếu trực tuyến, đánh giá thực trạng và nhu cầu về bỏ
phiếu kín trực tuyến thăm dò tín nhiệm của lãnh đạo các sở, ngành.

2.1. Một số khái niệm cơ bản

2.1.1. Khái niệm bỏ phiếu kín.

Việc bỏ phiếu kín là việc làm theo nguyên tắc bầu cử trực tiếp và theo nguyên
tắc biểu quyết kín. Nó được áp dụng khi bỏ phiếu bầu cử Quốc Hội; Hội đồng nhân
dân các cấp; bầu các chức vụ, chức danh hay lấy tín nhiệm. Người được quyền bỏ
phiếu kín sẽ trực tiếp thể hiện ý chí của mình trên lá phiếu do Ban tổ chức bầu cử
phát hành (có dấu treo của BTC), sau đó gấp lá phiếu lại và bỏ vào hòm phiếu theo
quy định. [14]

Bầu cử trực tiếp có nghĩa là công dân trực tiếp thể hiện ý chí của mình qua lá
phiếu, chứ không thông qua một cấp đại diện cử tri nào.

Nguyên tắc bỏ phiếu kín thể hiện ở việc loại trừ sự theo dõi và kiểm soát từ
bên ngoài sự thể hiện ý chí (sự bỏ phiếu) của cử tri, nhằm đảm bảo tự do đầy đủ sự
thể hiện ý chí của cử tri. Cử tri viết phiếu bầu trong buồng kín và bỏ phiếu vào hòm
phiếu, việc lựa chọn của cử tri được đảm bảo bí mật, khi cử tri viết phiếu bầu không
ai được đến gần, không ai được biết và can thiệp vào việc viết phiếu bầu của cử tri
kể cả cán bộ, nhân viên các tổ chức phụ trách bầu cử.

Một cuộc bỏ phiếu thành công phải đảm bảo các tính chất:

Tính hợp lệ: Lá phiếu phải do Ban bầu cử phát hành (kiểm tra dấu của BTC
trên lá phiếu), cử tri phải thể hiện ý chí của mình trên lá phiếu và bỏ lá phiếu vào
hòm phiếu trong khoảng thời gian theo quy định của bầu cử.

Quyền bỏ phiếu: Chỉ người có quyền bầu cử mới được bỏ phiếu. Mỗi cử tri chỉ
được bỏ phiếu một lần.

Trang: 30
Bí mật: Không biết được lá phiếu nào đó là của ai, trừ cử tri của nó.

Kiểm soát kết quả: Phát hiện được sai sót trong quá trình bỏ phiếu (Tổng số
phiếu phát ra; tổng số phiếu thu về; tổng số phiếu hợp lệ; tổng số phiếu không hợp
lệ) và tính chính xác kết quả kiểm phiếu.

Công khai kết quả kiểm phiếu: Thể hiện đúng kết quả kiểm phiếu.

Ở Việt Nam cho đến nay các cuộc bỏ phiếu kín vẫn được thực hiện theo cách
truyền thống đã tốn không ít tiền của và công sức, tuy nhiên với việc ứng dụng công
nghệ thông tin và truyền thông đặc biệt là việc thực hiện Chính phủ điện tử và số
hóa chứng minh nhân dân thì việc bỏ phiếu kín trực tuyến thay thế phương thức
truyền thống là xu hướng trong tương lai gần.

2.1.2. Khái niệm về bỏ phiếu kín trực tuyến.

Bỏ phiếu kín trực tuyến là cuộc bỏ phiếu kín ứng dụng công nghệ thông tin -
truyền thông để đổi mới tổ chức, đổi mới các quy trình hoạt động bỏ phiếu, làm cho
việc bỏ phiếu được dễ dàng, hiệu quả, minh bạch hơn, cung cấp đầy đủ thông tin
hơn cho cử tri và tạo điều kiện tốt hơn cho cử tri thực hiện quyền dân chủ trong bỏ
phiếu. Tức là cử tri bỏ lá phiếu điện tử được thực hiện trên Internet thông qua các
phương tiện “điện tử” như máy tính cá nhân, điện thoại di động và “Phần mềm” bỏ
phiếu trực tuyến… “Phần mềm” bỏ phiếu kín trực tuyến cho phép cử tri sử dụng các
kỹ thuật mã hóa để giữ “bí mật” của lá phiếu điện tử trước khi chuyển đến hòm
phiếu điện tử qua các kênh công khai. Bỏ phiếu kín trực tuyến cũng như tất cả các
cuộc bỏ phiếu khác phải đảm bảo các yêu cầu: “Bí mật”, “toàn vẹn” và “xác thực”
của lá phiếu; mỗi cử tri chỉ được bỏ phiếu một lần; mọi người đều có thể kiểm tra
tính đúng đắn của cuộc bỏ phiếu. Cử tri không thể chỉ ra mình bỏ phiếu cho ai để
tránh cơ hội bán phiếu bầu.

2.1.3. Nhu cầu về bỏ phiếu kín trực tuyến.

Hoạt động bỏ phiếu tín nhiệm cán bộ là hoạt động thường xuyên được thực
hiện hàng năm của mỗi cơ quan đơn vị, tổ chức chính trị xã hội ở Việt Nam. Qua đó

Trang: 31
trong công tác quy hoạch, bổ nhiệm, luân chuyên cán bộ giữ cương vị và trọng trách
được tốt hơn. Hơn nữa, năm 2012, Quốc Hội nước Cộng hòa xã hội chủ nghĩa Việt
Nam đã có Nghị quyết số 35/2012/QH13 về việc lấy phiếu tín nhiệm, bỏ phiếu tín
nhiệm đối với người giữ chức vụ do Quốc hội, Hội đồng nhân dân bầu hoặc phê
chuẩn. Hơn nữa, Việt Nam đang muốn tiến tới một nhà nước của dân, do dân và vì
dân, do đó Nhà nước ta đã, đang xây dựng và phát triển Chính phủ điện tử, ở đó
Chính phủ điện tử mong muốn cải thiện các giao dịch và mang những dịch vụ công
trực tuyến của mình tốt nhất đến với người dân và doanh nghiệp ngày càng phổ biến
và sử dụng rộng rãi hơn. Một số các dịch vụ công trực tuyến hiện nay cũng đã làm
hài lòng người dân trong quá trình sử dụng các dịch vụ trực tuyến để giao dịch với
Nhà nước. Bỏ phiếu trực tuyến là một trong các dịch vụ công trực tuyến mà Nhà
nước và nhân dân luôn mong muốn được cung cấp, để thuận lợi cho Nhà nước nâng
cao hiệu quả quản lý, giảm chi phí, tăng cường sự công khai minh bạch trong quá
trình bầu cử và người dân có thể bày tỏ thái độ của mình trên lá phiếu một cách
khách quan, chính xác hơn và thuận lợi hơn. Do đó bỏ phiếu trực tuyến là nhu cầu
cấp thiết trong giai đoạn hiện nay. Tuy nhiên trong bối cảnh Internet hiện nay, hệ
thống bỏ phiếu trực tuyến cần phải đảm bảo an toàn thông tin của cử tri, của ứng cử
viên và cả thông tin của lá phiếu, đây là vấn đề cần bàn để hệ thống bỏ phiếu trực
tuyến vừa đảm bảo được an ninh thông tin của hệ thống, vừa đảm bảo tính thân
thiện đối với người sử dụng.

2.2. Thực trạng bỏ phiếu kín trực tuyến

2.2.1 Trên thế giới

Khái niệm bỏ phiếu điện tử (e-voting) không còn xa lạ với các nước phát triển,
nhất là ở Bắc Mỹ và Châu Âu. Tại Châu Á, có một số nước đã thử nghiệm hệ thống
bầu cử điện tử, đó là Hàn Quốc, Nhật Bản và Ấn độ, những nước có trình độ ứng
dụng công nghệ thông tin và viễn thông cao. Tuy nhiên bầu cử điện tử tại những
nước này vẫn chưa được xem là thực sự thành công khi kết quả thu được từ những
lá phiếu điện tử vẫn còn nhiều nghi vấn. Vấn đề lớn nhất chính là tính bảo mật của
toàn hệ thống. Câu hỏi đặt ra là liệu có khả năng ai đó can thiệp vào những chiếu

Trang: 32
máy bầu cử hay chương trình bầu cử trên Internet để làm thay đổi kết quả hay
không.

2.2.2. Ở Việt Nam

Bỏ phiếu trực tuyến ở nước ta mới chỉ dừng lại ở mục đích bầu chọn, bình
chọn (ví dụ như bầu chọn Vịnh Hạ Long là di sản Thiên nhiên thế giới, bình chọn
bài hát hay trên sóng truyền hình..) song chưa thể triển khai vào bầu cử Quốc hội
như một dịch vụ công trực tuyến cấp cao nhất do còn nhiều hạn chế (Cơ sở hạ tầng
CNTT và viễn thông còn nhiều bất cập, nhất là các thiết bị bảo mật, khoảng cách
vùng miền; trình độ ứng dụng công nghệ thông tin của cán bộ, công chức; người
dân; dịch vụ trực tuyến bỏ phiếu online vẫn chưa được thử nghiệm… Với nhu cầu
bỏ phiếu trực tuyến hiện nay đối với Việt Nam là vấn đề cấp thiết trong giai đoạn
hiện nay khi đẩy mạnh Chính phủ điện tử, hơn nữa việc thực hiện bỏ phiếu kín trực
tuyến lấy tín nhiệm lãnh đạo ở các cơ quan đơn vị, bộ, ngành…sẽ góp phần cho
việc xây dựng và phát triển hệ thống bỏ phiếu trực tuyến ở Việt Nam.

2.3. Tổ chức hệ thống bỏ phiếu kín trực tuyến

2.3.1. Các thành phần:

* Cử tri

Là người tham gia bỏ phiếu trực tuyến; Cử tri có quyền hợp lệ để bỏ phiếu
trực tuyến, có quyền che dấu nội dung bỏ phiếu của mình, đồng thời là người giám
sát cuộc bầu cử, tức là kiểm tra lá phiếu của mình có được đếm và bị sửa nội dung
hay không. [4]

* Ban tổ chức bỏ phiếu:

- Ban điều hành

Quản lý các hoạt động bỏ phiếu, trong đó có thiết lập danh sách cử tri cũng
như hồ sơ của mỗi cử tri, quy định cơ chế định danh cử tri.

- Ban đăng ký

Trang: 33
Nhận dạng cử tri và cấp quyền bỏ phiếu cho cử tri, theo dõi cuộc bầu cử chống
lại việc cử tri bỏ phiếu quá 1 lần. Có hệ thống ký hỗ trợ.

- Ban Kiểm tra

Kiểm tra cử tri có hợp lệ không ? kiểm tra tính hợp lệ của lá phiếu, vì lá phiếu
đã được mã hóa nên Ban kiểm phiếu không biết được nội dung lá phiếu có hợp lệ
hay không mà chỉ cần xác minh tính hợp lệ của lá phiếu trước khi nó chuyển đến
hòm phiếu.

- Ban Kiểm phiếu

Kiểm phiếu và thông báo kết quả bầu cử. Có hệ thống kiểm phiếu hỗ trợ.

* Các thành phần kỹ thuật trong hệ thống bỏ phiếu

- Hệ thống phân phối khóa tin cậy: Cung cấp khóa ký của Ban ĐK, quá trình
mã hóa và giải mã lá phiếu

- Hệ thống ký: Giúp ban ĐK ký vào các định danh cử tri

- Hệ thống kiểm phiếu: Giúp ban KP tính kết quả cuộc bầu cử

- Bảng niêm yết công khai (Biên bản)

Giúp theo dõi quá trình bầu cử. Đây là kênh liên lạc công khai của tất cả các
thành phần tham gia hệ thống bỏ phiếu trực tuyến.

- Hệ thống các máy tính, hệ thống mạng máy tính và các phần mềm phục vụ
quy trình bỏ phiếu trực tuyến.

- Người dùng thực kiểm soát Server đảm bảo yêu cầu bảo mật và toàn vẹn của
kết quả bỏ phiếu.

2.3.2. Quy trình bỏ phiếu kín trực tuyến và các vấn đề.

Hiện nay, ở các nước phát triển về CNTT-TT trên thế giới đã nghiên cứu và
thử nghiệm các hệ thống bỏ phiếu trực tuyến. Mỗi hệ thống bỏ phiếu có các quy
trình bỏ phiếu khác nhau và chúng có những ưu và nhược điểm riêng.

Trang: 34
Thông thường thì một quy trình bỏ phiếu kín trực tuyến bao gồm 4 giai đoạn:
Gồm giai đoạn đăng ký, giai đoạn bỏ phiếu, giai đoạn kiểm tra, giai đoạn kiểm
phiếu.

2.3.2.1. Giai đoạn đăng ký.

* Thực hiện.

Theo phương thức bỏ phiếu kín trực tuyến, mỗi lá phiếu phải có thông tin định
danh. Có thể là con số x nào đó và phải khác nhau (Ví dụ CMTND). Trên mỗi lá
phiếu phải có chữ ký trên số định danh x, thì lá phiếu mới có giá trị để bầu cử.

* Vấn đề xảy ra:

Vấn đề 1: Nếu cử tri chuyển ngay số định danh x (CMTND) cho Ban kiểm
phiếu ký, Ban kiểm phiếu xác lập được mối liên hệ giữa x và người bỏ phiếu (cử
tri). Đó là điều mà cử tri không muốn vì những vấn đề rắc rối với nội dung lá phiếu
mà cử tri đã thực hiện.

Để tránh điều đó, cử tri biến đổi x thành y trước khi đưa cho Ban kiểm phiếu
vào y mà không biết đó là số định danh x đã bị che dấu (làm mù). Ban kiểm phiếu
ký vào y thành z và trao z cho cử tri. Cử tri xóa mù trên z sẽ được chữ ký của Ban
kiểm phiếu (vì lá phiếu đã có chữ ký của Ban kiểm phiếu)

(Giải pháp khắc phục: Sử dụng kỹ thuật Chữ ký mù)

Vấn đề 2: Do ký mù trên lá phiếu nên ban bầu cử không ghi lại được định
danh của cử tri. Do đó cử tri có thể xin nhiều lá phiếu để bỏ phiếu nhiều lần.

Vấn đề 3: Một trong thành phần Ban đăng ký tùy tiện cấp chữ ký.

2.3.2.2. Giai đoạn bỏ phiếu

* Thực hiện:

Sau khi lá phiếu có chữ ký của Ban đăng ký, cử tri thể hiện ý chí của mình vào
lá phiếu.

Trang: 35
Khi CT chuyển lá phiếu tới Ban kiểm phiếu, thì họ chỉ cần mã hóa nội dung lá
phiếu là đủ. Vì tiếp theo Ban KP chỉ cần giải mã nội dung lá phiếu là tính được kết
quả bỏ phiếu (kiểm phiếu).

* Vấn đề xảy ra:

Vấn đề 4: Ban KP hay một nhóm thành viên trong Ban KP đã không trung
thực, và gian lận phiếu bầu, ví dụ “Sửa lại nội dung lá phiếu“ sau khi giải mã,
nhưng trước khi kiểm phiếu.

Để khắc phục tình trạng này, người ta sử dụng kỹ thuật "mã hóa đồng cấu -
Chia sẻ bí mật". Với giải pháp này, Ban kiểm phiếu không phải giải mã từng lá
phiếu, nhưng vẫn tính được kết quả.

Vấn đề 5: Để bảo đảm công khai việc kiểm phiếu, lá phiếu đã mã hóa khi tới
Ban kiểm phiếu phải được niêm yết công khai. Nhưng nhìn trên bảng niêm yết công
khai, cử tri sẽ nhận ra lá phiếu của mình và họ có thể "bán phiếu bầu".

Để khắc phục tình trạng này, người ta dùng "người xác minh trung thực" làm
trung gian giữa cử tri và Ban kiểm phiếu. Nghĩa là cử tri gửi lá phiếu cho người
trung gian sau đó người trung gian mới chuyển cho Ban kiểm phiếu.

Sau khi xác minh lá phiếu hợp lệ, người trung gian làm mù lá phiếu (mã hóa lá
phiếu lần thứ 2), tiếp đó Người trung gian gửi lá phiếu đã mã hóa lần 2 về cho Ban
kiểm phiếu. Trên bảng niêm yết công khai, cử tri không thể nhận ra lá phiếu của
mình để "bán phiếu bầu".

Vấn đề 6: Cử tri phải chứng minh cho Người trung gian biết rằng lá phiếu của
cử tri là hợp lệ mà nội dung lá phiếu không bị tiết lộ, trong khi mọi người có đủ
bằng chứng để tin rằng lá phiếu là hợp lệ.

Vấn đề 7: Người trung thực phải chứng minh cho cử tri, Ban kiểm phiếu, ban
đăng ký.. biết rằng lá phiếu bị làm mù (ký lần 2) vẫn hợp lệ mà không tiết lộ thông
tin, bằng cách Người trung thực sở hữu giá trị  mà không tiết lộ .

Trang: 36
2.3.2.3. Giai đoạn kiểm tra.

* Thực hiện:

- Kiểm tra tính hợp lệ của lá phiếu; nếu lá phiếu giả mạo (không khớp với chữ
ký của Ban đăng ký) thì lá phiếu này không được gửi tới hòm phiếu.

- Mã hóa lần 2 lá phiếu và gửi về hòm phiếu.

Vấn đề 8:

- Ban kiểm phiếu có thể sửa nội dung lá phiếu trước khi mã hóa lần 2 để gửi
vào hòm phiếu.

- Để khắc phục tình trạng này: Ban kiểm tra đứng trung gian giữa cử tri và
Ban kiểm phiếu để ngăn chặn một số tình huống thiếu an toàn hay vi phạm trong bỏ
phiếu.

2.3.2.4. Giai đoạn kiểm phiếu.

* Thực hiện:

- Các lá phiếu sẽ được "trộn" nhờ kỹ thuật "trộn" lá phiếu (Mixing the votes)
trước khi lá phiếu được chuyển về Ban kiểm phiếu nhằm giữ bí mật cho cử tri.

- Ban kiểm phiếu tính kết quả dựa vào lá phiếu đã mã hóa gửi về theo phương
pháp mã hóa đồng cấu. Khi kiểm phiếu các thành viên ban kiểm phiếu dùng các
mảnh khóa riêng của mình để khôi phục khóa bí mật. Ban kiểm phiếu dùng khóa
này để tính kết quả cuộc bầu cử.

- Kết quả được niêm yết trên bảng công khai.

2.4. Một số kỹ thuật áp dụng trong bỏ phiếu kín trực tuyến.

2.4.1. Áp dụng Chữ ký mù RSA.

Để biến định danh x thành y có rất nhiều cách thực hiện như là mã hóa định
danh x bằng các kỹ thuật mã hóa, ở đây sử dụng kỹ thuật "Chữ ký mù"

Trang: 37
Ban đăng ký sử dụng kỹ thuật ký "mù" để ký lên định danh mù y của cử tri.
Như vậy Ban đăng ký không thể biết được ai đã ghi ý kiến vào lá phiếu, tức là đảm
bảo không tiết lộ định danh của cử tri.

Cụ thể:

* Cử tri A muốn xin chữ ký của Ban kiểm phiếu B trên định danh x của mình,
A áp dụng chữ ký mù RSA và biến đổi x thành y = xa mod n

Nghĩa là: y = Blind(x) = x.rb(mod n), với n và b được lấy từ khóa công khai
của ban kiểm phiếu B, r là ngẫu nhiên  Zn và r nguyên tố cùng nhau với n. (để tồn
tại phần tử nghịch đảo r-1 mod n).

+ A gửi y cho B, B ký lên y, được chữ ký là z = sig(y) sau đó gửi lại A:

z = Sig(Blind(x))= xa .( rb)a (mod n)

+ A xóa mù trên z, sẽ nhận được chữ ký trên x

z = Unblind(z) = z/r mod n = xa .( rb)a / r(mod n) = xa .r/r mod n = xa mod n

Như vậy A nhận được chữ ký của B: xa mod n mà ban kiểm phiếu không biết
nội dung x, bởi vì nội dung của x đã được làm mù thành z thông qua việc nhân với
rb, mặc dù b là công khai lấy từ ban kiểm phiếu B, nhưng r là số ngẫu nhiên mà B
khó có thể biết được. Sau khi B ký xong, A xóa mù (nhân với r-1) chữ ký trên z để
nhận được chữ ký của B trên x.

Ví dụ:

* Áp dụng sơ đồ chữ ký mù RSA với K = (n, p, q, r, b, a) trong đó:

P =3; q=5; n = p*q = 15

(n) = (p-1).(q-1) = 2*4 = 8

Chọn khóa công khai b = 3 < (n), nguyên tố cùng với (n)

Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a=3

* Giả sử định danh x cần ký là 2

Trang: 38
A chọn ngẫu nhiên số r = 4 nguyên tố cùng nhau với n. A thực hiện làm mù x
bằng bí danh z:

z = Blind(x) = x.rb(mod n) = 2.43 (mod 15) = 8.

A gửi y=8 cho Ban kiểm phiếu B, nhận được chữ ký z

z =Sig(y) = ya mod n = 83 (mod 15) = 2.

Ban kiểm phiếu B gửi z cho A, A thực hiện xóa mù trên z sẽ nhận được chữ ký
trên định danh x:

Unblind(z) = z/r mod n = z . r-1 mod n = 2.4-1 mod 15 = 8

Tuy nhiên sử dụng phương pháp này sẽ phát sinh ra vấn đề:

Do ký mù trên lá phiếu nên ban bầu cử không ghi lại được định danh của cử
tri. Do đó cử tri có thể xin nhiều lá phiếu để bỏ phiếu nhiều lần.

Để giải quyết vấn đề này ta thực hiện như sau:

- Cử tri:

+ Cử tri chọn bí mật số định danh x, "làm mù" thành y = blind(x)

+ Cử tri gửi tới ban bầu cử thông tin nhận dạng của mình, chứng minh thư
điện tử, số y (định danh x đã được làm mù thành y).

+ Cử tri có thể kiểm tra chữ ký của ban bầu cử lên lá phiếu của mình có hợp lệ
hay không bằng cách dùng hàm kiểm tra chữ ký và khóa công khai của ban bầu cử.

- Ban bầu cử:

+ Ban bầu cử nhận dạng cử tri, kiểm tra chứng minh thư của cử tri.

+ Nếu hồ sơ của cử tri hợp lệ, khớp với danh sách cử tri của Ban điều hành, cử
tri chưa xin cấp chữ ký lần nào, thì ra lệnh cho hệ thống ký lên y. Đó là chữ ký z=
sign(y)

+ Ban bầu cử ghi số chứng minh thư của cử tri vào danh sách cử tri đã được
cấp chữ ký (để tránh việc cử tri đăng ký bỏ phiếu nhiều lần)

Trang: 39
2.4.2. Áp dụng chia sẻ bí mật phối hợp với hệ mã hóa Elgamal.
Giải quyết vấn đề 3 nêu ở trên:
Tuy nhiên không để 1 trong các thành viên của Ban đăng ký có thể tùy tiện
cấp chữ ký của cử tri khi cử tri yêu cầu thì ta phải sử dụng kỹ thuật "Chia sẻ khóa bí
mật Shamir phối hợp với Hệ mã hóa Elgamal" Tức là sau khi mọi thành viên của
Ban đăng ký nhất trí cho ký thì các thành viên này sẽ khớp các mảnh khóa riêng để
nhận được khóa ký.
Ví dụ: Áp dụng thủ tục chia sẻ bí mật dựa trên ý tưởng của Languange:
Giả sử ta có n thực thể A1, A2, …, An-1 và có 1 người được ủy quyền B biết
được toàn bộ khóa bí mật S  N.
Người được ủy quyền B thực hiện các bước sau đây:
- B chọn một số nguyên tố P đủ lớn sao cho: n << p Với S  Zp

- B tiếp theo chọn 2n-1 số một cách ngẫu nhiên:


a1, a2, …, an-1
v0, v1, …, vn-1
Trong đó: vi  0; vi  vj, i  j
- B xác định một đa thức với các hệ số a1, a2, …, an-1 trên Zp:
f(x) = an-1xn-1 + an-2xn-2 +.. + a1x + s(modP)
Bây giờ B gửi cho Aj một cách công khai cặp:
(vj, f(vj)) với j =0,1,2,..,n-1 coi như mảnh riêng của Aj
Khôi phục bí mật S:
Tất cả n người A1, A2, …, An có thể hợp tác lại để khôi phục lại bí mật S bằng
cách
S= g(x) =  f (v ) 
0 j 3
j
0i  n ,i  j
(v j  vi ) 1 ( x  vi ) mod p

Khi đó dễ dàng xác định được S= g(0) = f(0)


Ví dụ:
Có 3 người A1, A2, A3 muốn chia sẻ khóa bí mật S=472
Chọn số nguyên tố p = 1999 công khai
A chọn v0 = 626; v1= 674; v2= 93.

Trang: 40
a1=334; a2 =223
Tính F(v1) = a2 v21 +a1v1 + S mod p
Áp dụng công thức trên với S = 472 ta có
f(v0) =1724
f(v1) = 1925
f(v2) = 1241
A1 có cặp (v0,f(v0))= (626,1724)
A2 có cặp (v1,f(v1))= (674,1925)
A3 có cặp (v2,f(v2))= (93,1241)
Cả 3 người hợp lại sẽ xác định được S:
S= g(0) =  f (v
0 j 3
j )b j mod p , với bj =  v (v
0  i  n ,i  j
i i  v j ) 1 mod p

Áp dụng 2 công thức trên ta tính được:


b0 =1847; b1 =1847; b2 =1847
S= g(0) =  f (v
0 j 3
j )b j mod p = 472 Trùng với khóa S ban đầu muốn chia sẻ.

2.4.3. Áp dụng kỹ thuật mã hóa đồng cấu - chia sẻ bí mật


Giải quyết vấn đề 3 và vấn đề 4 ở trên đã nêu.
Với giải pháp này, Ban KP không phải giải mã từng lá phiếu, nhưng vẫn tính
được kết quả.
- Sử dụng kỹ thuật Chia sẻ bí mật ngưỡng Shamir và Mã hóa Elgamal.
Theo sơ đồ chia sẻ bí mật Shamir ngưỡng (t, n), khóa bí mật s có thể được chia
sẻ cho n thành viên Aj (1  j  n) , mỗi người sở hữu một mảnh Sj. Việc khôi phục
khóa bí mật s chỉ có thể được thực hiện khi có ít nhất t thành viên nhất trí.
Khóa bí mật s được khôi phục lại theo công thức s = s 
jA
j j, A ,

l
trong đó  j , A    l  j
lA \ j
là hệ số Lagrange.

Mỗi thành viên Aj giữ bí mật mảnh khóa sj, nhưng công khai giá trị h j  g s j

Trang: 41
Không cần khóa gốc s, Bản rõ m có thể tính được từ các mảnh khóa sj theo
giao thức:
1). Mỗi thành viên A j công khai w j  x và chứng minh không tiết lộ thông
sj

tin về sj, bằng cách cho biết: log g h j  log x w j .

(Chú ý: w j  x suy ra log x w j  log x x  s j


sj sj

hj  g suy ra log g h j  log g g  s j )


sj sj

2). Tính Bản rõ m theo công thức :


y y y y
m   
 j . j , A
x w
s s s j . j , A  j,A
x j A j
x jA jA

Trong đó A là tập con các thành viên truyền các chứng minh không tiết lộ
thông tin.
Ví dụ1: Giả sử cần lấy ý kiến về một việc nào đó, mỗi người chỉ cần trả lời có
(ghi 1) hoặc không (ghi 0) vào lá phiếu. Nội dung lá phiếu được mã hoá và gửi về
Ban kiểm phiếu.

Vấn đề đặt ra là Ban kiểm phiếu tính kết quả bỏ phiếu như thế nào trong khi
không biết nội dung từng lá phiếu ? (Vì chúng đã được mã hoá).
Giải quyết
Giả sử có 4 cử tri tham gia bỏ phiếu là V1, V2, V3, V4.
Lá phiếu tương ứng của họ là: v1 = 0, v2 = 1, v3 = 1, v4 = 0.
Hệ mã hoá Elgamal được sử dụng ở đây với các khoá như sau:
Khóa bí mật a =2. Khóa công khai h = g a với g=3. Như vậy h = 32 = 9.
Mỗi cử tri Vi, chọn một số ngẫu nhiên bí mật k đề mã hóa lá phiếu m của mình
thành
(x, y) = (g k, h k m). Chú ý văn bản m = gvi
Cử tri mã hoá lá phiếu
V1 mã hóa lá phiếu của mình như sau và gửi tới Ban kiểm phiếu:
V1 chọn k1 ngẫu nhiên là 5, mã hóa
v1 = 0 thành (x1, y1)=(35, 95 * 30 ) = (35, 95 )

Trang: 42
V2 mã hóa lá phiếu của mình như sau và gửi tới Ban kiểm phiếu:
V2 chọn k2 ngẫu nhiên là 3, mã hóa
v2 = 1 thành (x2, y2)=(33, 93 * 31 ) = (33, 93 * 3)
V3 mã hóa lá phiếu của mình như sau và gửi tới Ban kiểm phiếu:
V3 chọn k3 ngẫu nhiên là 3, mã hóa
v3 = 1 thành (x3, y3)=(33, 93 * 31 ) = (33, 93 * 3)
V4 mã hóa lá phiếu của mình như sau và gửi tới Ban kiểm phiếu:
V4 chọn k4 ngẫu nhiên là 7, mã hóa
v4 = 0 thành (x4, y4)=(37, 97 * 30 ) = (37, 97 )

Ban kiểm phiếu tính kết quả

Ban KP không cần biết nội dung từng lá phiếu, vẫn có thể tính kết quả bỏ
phiếu bằng cách nhân các lá phiếu đã được mã hóa lại.

(x1, y1)*(x2, y2)=(x1x2, y1y2)=(g k1+k2 h k1+k2 , g v1+v2).

Theo tính chất đồng cấu thì Tích của phép nhân trên chính là kết quả bỏ phiếu.

Tích 4 lá phiếu đƣợc mã hóa là


k1+k2+k3+k4 k1+k2+k3+k4 v1 + v2 + v3 + v4
(X, Y) = (∏i xi , ∏i yi) = (g ,h g ) = (318, 918
*32).

Giải mã bằng cách tính m= gv =Y / X a = 918 *3 2 / ( 318 )2 = 32 . Số phiếu đồng


ý là 2

Ví dụ 2: Bỏ phiếu chän L trong K.

Giả sử có 3 ứng cử viên: 0: NAM. 1: SAU. 2: BAY

Có 3 nguời kiểm phiếu là A1, A2, A3 .

Đây là cuộc bỏ phiếu chọn 2 trong 3 người vào chức vụ Giám đốc và phó
Giám đốc.

Cử tri không tin vào một số người trong Ban kiểm phiếu (Ban KP), nên họ
dùng sơ đồ chia sẻ bí mật Shamir để chia lá phiếu của mình thành các mảnh tin và
gửi cho mỗi người kiểm phiếu một mảnh.

Trang: 43
Vấn đề đặt ra là Ban KP phải khớp các mảnh tin để biết nội dung từng lá
phiếu ? (Vì nội dung mỗi lá phiếu đã được chia thành nhiều mảnh tin, từng mảnh lại
được mã hoá trước khi gửi về Ban KP).

Giải quyết

* BiÓu diÔn lùa chän (Néi dung phiÕu bÇu):

Cử tri V chọn bầu cho ông NAM vµ SAU tương ứng với lựa chọn 0 và 2.

Để diễn đạt sự lựa chọn của mình, cử tri dùng hệ số cơ số 3.

Nội dung lá phiếu của V được biểu diễn là s = 0*30 + 2*31 = 6.

* Ban kiểm phiếu chuẩn bị:

Trong Ban KP, mỗi người Aj chọn khóa bí mật zj và khóa công khai h j  g .
Zj

Khóa công khai hj cho mọi người sử dụng.

Trong đó Zp là nhóm nhân theo Modulo p, cã phần tử sinh g = 3.

A1 chọn khóa bí mật z1=2, khóa công khai là h1=32

A2 chọn khóa bí mật z2=3, khóa công khai là h2=33

A3 chọn khóa bí mật z3=5, khóa công khai là h3=35

* Cử tri V chia sẻ thông tin mật thành các mảnh tin:

Với nội dung lá phiếu là s = 6, cử tri V chọn đa thức ngẫu nhiên bí mật

P(x) = 6+2x+5x2 . Ở đây s = 0 = 6, 1 = 2, 2 = 5.

V tính các mảnh tin yj = P(j), theo ®a thøc trªn, P(1) =13, P(2) =30, P(3) =57.

Các mảnh tin được V mã hóa thành Hj= h Pj ( j ) , cụ thể là

H1 = h1p(1) = (32)13, H2 = h2p(2) = (33)30, H3 = h3p(3) = (35)57 .

Cử tri V chuyển H1, H2, H3 tương ứng cho A1, A2, A3.

* Ban KP khôi phục thông tin bí mật từ các mảnh tin:

Ban KP khớp các mảnh tin Hj khi tất cả t thành viên Aj đều nhất trí.

Trang: 44
Đầu tiên từng người kiểm phiếu Aj giải mã Hj bằng cách tính S j  H j
1/ Z j
.

Theo các quá trình trên ta nhận được:

Sj  H j = ( h Pj ( j ) ) 1/zj = ( ( ( g zj ) ) P(j) )1/zj = gP(j) , cụ thể là


1/ Z j

A1 giải mã H1 thành S1 = ((32)13)1/2 = 313

A2 giải mã H2 thành S2 = ((33)30)1/3 = 330

A3 giải mã H3 thành S3 = ((35)57)1/5 = 357

Bí mật g s = 3 6 được x¸c ®Þnh nhờ tính chất đặc biệt sinh ra do sự phối hợp
giữa sơ đồ Shamir và hệ mã hoá Elgamal:

 P( j ) j , A
 S j j,A   g
 P( j ) j , A
 g j A  g P (0) = g s
jA jA

l
trong đó  j , A  
l A { j } l  j
là hệ số Lagrange, A={1, 2, 3}.

Hệ số Lagrange được tính như sau:

λ1=2/(2-1)*3/(3-1) = 3, λ2=1/(1-2)*3/(3-2) = -3, λ3=1/(1-3)*2/(2-3) = 1.

gs = S1λ1 * S2λ2 * S3λ3 = (313)3 * (330)-3 * (357)1 = 36

Đây là nội dung lá phiếu đã được khôi phục sau khi “khớp mảnh”.

2.4.4. Áp dụng kỹ thuật chữ ký mù.

Để giải quyết vấn đề 8 nêu ở trên.

Nhìn trên bảng niêm yết công khai, CT sẽ nhận ra lá phiếu của mình và họ có
thể “bán phiếu bầu”.

Để khắc phục tình trạng này, người ta dùng “Người xác minh trung thực” TT
làm trung gian giữa CT và Ban KP.

CT gửi lá phiếu từ xa tới Ban KP thông qua người trung gian TT. Sau khi xác
minh lá phiếu hợp lệ, TT làm “mù “ lá phiếu (mã hóa lá phiếu lần thứ 2), tiếp đó TT

Trang: 45
gửi nó về Ban KP. Trên bảng niêm yết công khai, CT không thể nhận ra lá phiếu
của mình để có thể “bán phiếu bầu”.

2.4.5. Áp dụng kỹ thuật Chứng minh không tiết lộ thông tin

2.4.5.1 “Chứng minh không tiết lộ thông tin”.

Có thể tạm hiểu “Chứng minh không tiết lộ thông tin” không có nghĩa là
“không để lộ thông tin”, mà nghĩa là “để lộ thông tin ở mức ít nhất” về sự vật sự
việc cần chứng minh. [6]

Với những “thông tin để lộ”, người xác minh không có nhiều hiểu biết về sự
vật sự việc, họ chỉ thu được chút ít thông tin về đặc điểm tính chất của nó.

2.4.5.2. Khái niệm Giao thức .

Giao thức  là giao thức “Hỏi - Đáp” 3 bước để P chứng minh cho V một
vấn đề nào đó.

- P gửi cho V một giá trị ngẫu nhiên.

- V gửi lại P một giá trị ngẫu nhiên như là giá trị dùng để kiểm thử.

- P gửi đáp lại V một giá trị.

Kết quả V thừa nhận hoặc bác bỏ vấn đề mà P đã chứng minh.

Để giải quyết vấn đề 6, vấn đề 7 nêu ở trên, có 02 phương án giải quyết:

Cử tri và TT thống nhất sử dụng giao thức “chứng minh không tiết lộ thông
tin” với giao thức 1 và giao thức 2 sau:

Giao thức 1: đối với Cử tri:

* CT mã hóa lá phiếu bằng hệ mã hóa Elgamal.

Hệ mã hóa Elgamal trong Zp (p là số nguyên tố lớn).

Chọn khóa bí mật là s, khóa công khai là h = gs , g là phần tử sinh của Zp.

Trang: 46
+ Với bản rõ m  Zp , bản mã hóa là cặp (x, y) = ( g, h m ), trong đó tham số
 ngẫu nhiên bí mật do người mã hóa chọn.

+ Để giải mã dùng khóa mật s tính: m = y/xs .

Ví dụ: Trong cuộc bầu cử “chọn 1 trong k”, ký hiệu người thứ i được lựa chọn
là Gi

Lá phiếu mã hóa là (x, y) = ( g, h Gi ).

Lá phiếu mã hóa Elgamal (x, y) được làm “mù” nhờ cặp (u, v) = ( gβ, hβ), β là
phần tử ngẫu nhiên bí mật do TT chọn.

Sau khi đã làm “mù”, lá phiếu có dạng: (xu, yv) = ( g + β, h + β G i)

* CT gửi nó tới TT kèm theo “Chứng minh không tiết lộ thông tin” cho tính
hợp lệ của lá phiếu đó.

Như vậy cử tri muốn chứng minh với người xác minh trung thực TT: lá phiếu
(x, y) là hợp lệ, thì anh ta phải chỉ ra một trong số k đẳng thức sau là đúng.

(log g x  log h ( y / G1 ))  ...  ((log g x  log h ( y / Gk )). (*)

Ta thấy một trong số k đẳng thức trên là đúng vì:

log g x = log g (g )= 

log h ( y / G i ) = log h ( h  G i / G i ) = log h ( h  ) = 

Do đó log g x = log h ( y / G i )

Để chứng minh (1), nhưng không bị lộ Gi

- Cử tri thực hiện :

+ Mã hóa lá phiếu [( x, y)  ( g  , h Gi )]

+ Chọn ngẫu nhiên w  Z p và tính ai  g w , bi  h w

+ Với j = 1,…, i-1, i+1,…, k chọn d j , rj  Zp . (Chưa chọn di , ri )

Trang: 47
+ Tính a j  g x , bj  h ( y / G j )
rj dj rj dj

+ Đặt ( A, B)  (a1 , b1 ),..., (ak , bk ) (Sử dụng ai , bi đã tính ở trên)

- Cử tri gửi cặp (x,y) và (A,B) cho Người xác minh TT

- Người xác minh TT chọn ngẫu nhiên c  Zp và gửi cho Cử tri


- Cử tri (Trước đó chưa chọn di , ri ) tính:
di  c   d j
j i

ri  w  di
( D, R)  (d1 , r1 ),..., (d k , rk )

- Cử tri gửi (D,R) cho Người xác minh TT kiểm tra:

Nếu : c = d1+..+dk cho j = 1,..,k

aj = g rj x d j

bj = hrj (y/Gj) d j

đều đúng thì TT kết luận: Lá phiếu hợp lệ


Ví dụ 1: Chứng minh tính hợp lệ của lá phiếu đã mã hóa ( x, y)  ( g  , h Gi )
Giả sử cuộc bầu cử “chọn 1 trong 3”. Các lựa chọn phải là 1 hoặc 2 hoặc 3.
Ký hiệu lựa chọn ứng cử viên thứ i là Gi . Để chứng minh tính hợp lệ của lá
phiếu, cử tri phải chứng minh:
(log g x  log h ( y / G1 ))  ...  ((log g x  log h ( y / Gk )). (1)

CT và TT thống nhất dùng giao thức “Chứng minh không tiết lộ thông tin”:
Chọn khóa mật s = 7, phần tử sinh g = 3, khóa công khai h = gs = 37.
Tham số α = 5.
Ký hiệu 3 ứng cử viên G1 = 1, G2 = 2, G3 = 3.
Giả sử cử tri CT chọn Gi = G2 = 2
- Cử tri CT thực hiện :
+ CT mã hóa lá phiếu [( x, y)  (35 , (37 ) 5 . 2]=(243, …)
+ CT chọn ngẫu nhiên w = 2 và tính a2  32 , b2  (37 ) 2

Trang: 48
Với j = 1, 3 Chọn d1 = 8, r1 = 9 và tính:
(37 ) 5 .2 8
9 5 8
a1 = 3 . (3 ) , b1  (3 ) (7 9
)
1
(37 ) 5 .2 10
Chọn d3 = 10, r3 = 11 và tính: a3 = 3 . (3 ) , b3  (3 ) (
11 5 10
) 7 11

3
(37 ) 5 .2 8 (37 ) 5 .2 10
(A, B) = (39. (35)8, (37 ) 5 ( 2 7 2 11 5 10
) ), (3 , (3 ) ), (3 . (3 ) , (37 )11 ( ) )
1 3
+ CT gửi (x,y), (A,B) cho TT
+ TT chọn ngẫu nhiên c = 13 và gửi cho CT
+ CT tính d2 = c - d
j i
j = c - (d1+d3) = 13-(8+10) = -5

+ CT tính r2 = w – α d2 = 2 – 5 d2 = 2 -5.(-5) = 2 + 25 = 27
+ CT đặt (D,R) = (8, 9),(-5, 27),(10, 11) và gửi cho TT
+ Người xác minh TT TT kiểm tra: thấy đều đúng
c=d1+d2+d3=8+(-5)+10=13
aj  g j x
r dj

j=1,2,3.
bj  h j (y / G j )
r dj

=>Kết luận: lá phiếu hợp lệ

Giao thức 2: đối với Người xác minh trung thực TT

Sau khi xác minh lá phiếu của CT là hợp lệ, người xác minh trung thực (TT)
làm “mù“ lá phiếu và gửi nó về Ban KP kèm theo “Chứng minh không tiết lộ
thông tin” cho tính hợp lệ của lá phiếu vừa bị làm “mù“. TT làm “mù” lá phiếu
thông qua cặp (u, v) = ( g β, h β ), dựa trên giá trị bí mật .

Để chứng minh lá phiếu sau khi bị làm “mù“ vẫn hợp lệ, TT phải chứng tỏ
rằng anh ta sở hữu bí mật  thỏa mãn u = ( g β ), v = h β , nhưng TT không để lộ .

Có một giao thức để TT làm việc này: Giao thức , trong đó TT là người
chứng minh (P), người kiểm tra (V) là CT, Ban KP,…

Trang: 49
Ngƣời chứng minh TT (P) Ngƣời kiểm tra (V)

+ P có [ (u, v)  ( g  , h  ) ]
+ P chọn w  Zp

Tính (a, b) : ( g w , h w ) (



a ,b )

P gửi V giá trị ngẫu nhiên


w
thông qua (a, b)


c
+ V chọn c  Z p
V gửi lại P giá trị ngẫu
nhiên c
+ P tính r : w  c 

r
+ Kiểm tra:
P đáp lại V bằng r ?
g r  au c
?
h r  bv c

Nếu đều đúng =>


V thừa nhận P
sở hữu giá trị 

Rõ ràng nếu không biết , người chứng minh P không thể tạo ra r = w +  c
để kiểm tra.

g r  g w c  g w .g c  au c
h r  h w c  h w h c  bv c

Ví dụ 2: Người chứng minh P có  = 5.

P chọn s = 7, g = 3, tính h = g s = 3 7 .

Cặp số dùng để làm “mù” lá phiếu đã mã hoá của cử tri.


(u, v)  ( g  , h  ) = (3 , ( 3 ) ),
5 7 5

P muốn chứng minh với V rằng anh ta sở hữu , mà không để lộ giá trị này.

P thực hiện giao thức  với người xác minh V như sau:

Trang: 50
Ngƣời chứng minh TT (P) Ngƣời kiểm tra (V)

(

a ,b )
5 7 5
- P có [(u,v)=(3 ,( 3 ) )]
- P chọn w = 2  Zp . Tính

(a, b) = (gw, hw) = (32, (37)2)




c
- V chọn c = 11

- P tính r = w +  c 

r
- V kiểm tra các đẳng thức đều
= 2 + 5 * 11 = 57 đúng:
gr =357 = 32 (35)11 = auc

hr =(37 ) 57 = (37)5 ((37) 2) 11 = bvc

=> V thừa nhận P sở hữu  =5.

Nếu người nào đó giả mạo rằng đã biết  để tạo (u,v)=(gβ, hβ), thì “khó” có
thể tính được r = w+ c, tức là bước kiểm thử gr = a u c, h r= b v c
“khó” có thể
thực hiện được.

Vì a, b, c, r, g, h, u, v đều công khai, nên ai cũng có thể xác minh được r = w+


c.

Nhờ giao thức trên, mọi người tin rằng TT đã dùng  để làm “mù” lá phiếu.

Giao thức “Chứng minh không tiết lộ thông tin” để giải quyết hai vấn đề trong
giai đoạn Cử tri chuyển lá phiếu tới Ban kiểm phiếu. Như vậy trong giai đoạn này lá
phiếu đã bị mã hoá 2 lần, nhưng kết quả giải mã lá phiếu đúng như nội dung ban
đầu của nó, bởi vì:

- Nội dung lá phiếu: chọn ứng cử viên Gi .

- Lá phiếu sau khi mã hoá lần 1: ( x, y)  ( g  , h Gi ) .

- Lá phiếu sau khi làm “mù” (mã hoá lần 2): ( xu, yv)  ( g    , h   Gi )

- Sau khi giải mã lá phiếu:

Trang: 51
yv h   Gi h h h
  G = G = G i = Gi .
( xu ) s ( g    ) s ( g  ) s
i  i 
(g s ) (h)
Với mã hoá Elgamal, khoá bí mật là s, thì khoá công khai h = gs .
2.5. Kết luận chương.

- Trong Chương này đã nghiên cứu được bỏ phiếu truyền thống và các ràng
buộc của các thành phần trong hệ thống bỏ phiếu kín.

- Nghiên cứu được quy trình bỏ phiếu kín trực tuyến và các vấn đề phát sinh
trong quá trình thực hiện bỏ phiếu trực tuyến

- Tìm hiểu được một số kỹ thuật, thuật toán để khắc phục được các vấn đề trên
trong quy trình bỏ phiếu trực tuyến.

Trang: 52
Chƣơng - 3. PHÂN TÍCH THIẾT KẾ
ỨNG DỤNG BỎ PHIẾU KÍN TRỰC TUYẾN

3.1. Phân tích: Ứng dụng bỏ phiếu kín tín nhiệm lãnh đạo sở, ngành trực
tuyến.

3.1.1. Mục đích: Nhằm phân tích các yêu cầu cơ bản đối với ứng dụng bỏ
phiếu kín tín nhiệm lãnh đạo sở, ngành trực tuyến

3.1.2. Khảo sát.

- Hàng năm các cơ quan đơn vị trên địa bàn tỉnh Thái Bình đều phải thực hiện
lấy phiếu tín nhiệm các lãnh đạo cấp sở ngành để thực hiện các khâu của tổ chức
cán bộ.

- Ngay ở Trường Chính trị Thái Bình cũng thực hiện các nội dung trên vào các
thời điểm cuối năm.

- Việc lấy phiếu tín nhiệm lãnh đạo trong Nhà trường, các khoa phòng đều
thực hiện trên phương pháp truyền thống, dẫn đến nhiều bất cập về thời gian, tiền
bạc..

- Việc ứng dụng CNTT và sử dụng các thiết bị tin học của cán bộ, giảng viên
và nhân viên trong trường đều có thể thực hiện bỏ phiếu trực tuyến thông qua máy
tính.

Thực trạng: Chưa có ứng dụng trực tuyến để thực hiện.

Mục tiêu: Xây dựng ứng dụng Web bỏ phiếu kín trực tuyến bằng ngôn ngữ
ASP.net trên môi trường mạng và cơ sở dữ liệu SQL để đáp ứng yêu cầu bỏ phiếu
kín lấy tín nhiệm lãnh đạo của sở, ngành trực tuyến.

Trang: 53
TỔNG QUẢN TRỊ
- Quản lý tất cả những thông tin của Quản lý
nhân viên trong Trường
Dữ Liệu Thông Tin nhân viên
- Cấp quyền cho các ban quản lý bỏ Nhà trường
phiếu
- Ký cấp quyền để cử tri xin phiếu

Cấp quyền Cấp quyền


Tạo 2 - Xác thực cử tri
3- Cấp lá phiếu
BAN KIỂM TRA
NGƯỜI ĐƯỢC BỎ PHIẾU
Được ban quản trị cấp (Ứng cử viên) BAN ĐĂNG KÝ
Được ban quản trị tạo
quyền và chữ ký thông tin - Được ban quản trị cấp
quyền và chữ ký
- Kiểm tra cử tri bỏ phiếu
6-Lá phiếu hợp lệ - Cấp phiếu bầu
5 - Ban KT
sẽ được lưu (mã xem
hóa lần 1) kiểm tra phiếu

4 - Xem thông tin 1 - ĐK bỏ phiếu


-Thể hiện ý chí
Thông tin lá Lưu - Mã hóa lá phiếu lần 1
HÒM PHIẾU NGƯỜI BỎ PHIẾU
phiếu mã hóa 2 - Mã hóa lá phiếu lần 2
Tính kết quả (Cử tri)
lần
Là người có quyền xin
phiếu bầu.

Lấy kết quả


KẾT QUẢ BỎ PHIẾU

Hiển thị số lượng phiếu bầu cho từng người được


bỏ phiếu

Hình 2: Mô hình bỏ phiếu kín trực tuyến tín nhiệm lãnh đạo cấp sở, ngành.

Mô tả mô hình:

1. Tổng quản trị sẽ thực hiện ký bằng khóa bí mật của mình cho cử tri để xác
định cử tri có quyền xin phiếu -> Cử tri có chữ ký của Tổng quản trị.

Trang: 54
2. Cử tri khi có chữ ký của Tổng quản trị, xin ban đăng ký cấp quyền bỏ phiếu

3. Ban đăng ký xác thực cử tri bằng khóa công khai của Tổng quản trị, kiểm
tra tư cách bỏ phiếu (chỉ bỏ phiếu 1 lần), sau đó ký trên lá phiếu của cử tri yêu cầu.

4. Cử tri xác thực lá phiếu của Ban đăng ký sau đó Cử tri thể hiện ý chí của
mình trên lá phiếu, tiếp theo Cử tri làm mù lá phiếu bằng hệ Elgamal (cử tri làm mù
lần 1). Tiếp theo cử tri mã hóa lá phiếu (đã mã hóa lần 1) bằng khóa công khai của
Ban kiểm tra và gửi cho Ban kiểm tra.

5. Ban kiểm tra xác thực lá phiếu của cử tri gửi bằng khóa công khai của Ban
kiểm tra (Ban kiểm tra không biết được nội dung lá phiếu), sau đó gửi lá phiếu đến
hòm phiếu để tính kết quả.

6. Tính kết quả của lá phiếu đã được làm mù bằng Elgamal (không cần phải
giải mã lá phiếu).

3.2. Phân tích yêu cầu

3.2.1. Ứng dụng bỏ phiếu kín trực tuyến

- Là Website ứng dụng bỏ phiếu kín trên môi trường mạng LAN hoặc Internet
và hoạt động ổn định.

- Cung cấp các chức năng để Quản trị, Ban đăng ký, Ban kiểm phiếu, người bỏ
phiếu.. thực hiện quy trình bỏ phiếu trực tuyến thuận lợi.

- Phải đáp ứng được tính pháp lý như trong Luật Bầu cử quy định.

- Hiển thị kết quả bỏ phiếu.

- Chỉ cho cử tri bỏ phiếu 01 lần.

- Đảm bảo bí mật và an toàn thông tin (thông qua hệ thống mã hóa và ký).

3.2.1.1. Ban bầu cử

- Thực hiện đúng theo các yêu cầu đặt ra của ứng dụng.

Trang: 55
- Nhập danh sách thành viên ban đăng ký, ban kiểm tra, ứng cử viên.. và cử tri
vào hệ thống.

- Phân quyền cho thành viên vào các vị trí tương ứng.

- Xin hệ thống cấp chữ ký để thực hiện các chức năng của mình.

- Thực hiện cấp quyền cho cử tri hợp lệ bỏ phiếu.

- Kiểm tra tính hợp lệ của các lá phiếu để hệ thống tính kết quả.

3.2.1.2. Ngƣời bỏ phiếu

- Thực hiện đăng nhập vào tài khoản của mình

- Xin hệ thống cấp chữ ký để đảm bảo tính hợp lệ

- Chờ hệ thống cấp quyền bỏ phiếu.

- Thực hiện bỏ phiếu theo quy định.

3.2.2. Hệ thống ký

- Cho phép tạo khóa: Tạo cặp khóa công khai và bí mật cho lược đồ ký
Elgamal và lược đồ ký RSA.

- Cho phép Ký: Sử dụng thuật toán ký Elgamal và thuật toán ký số RSA.

- Cho phép giải mã: Sử dụng khóa riêng để thu được văn bản đã ký và chữ ký

- Cho phép Kiểm tra chữ ký: Sử dụng khóa công khai của thuật toán tạo chữ
ký để xác định xem có đúng của người gửi hay không, xác định xem nội dung đã
được ký có bị thay đổi không,

3.3. Yêu cầu chức năng

3.3.1 Chức Năng quản trị:

 Tổng quản trị:

o Xác nhận đăng ký và cấp quyền quản trị cho các ban quản lý bỏ phiếu
(Ban kiểm tra, Ban đăng ký, …).

Trang: 56
o Quản lý ứng cử viên: tạo xóa sửa thông tin người được bầu.

o Quản lý cử tri: xóa sửa thông tin người bầu cử.

o Thực hiện ký cho cử tri để cử tri hợp lệ xin phiếu bầu

 Ban đăng ký:

o Được tổng quản trị cấp quyền.

o Được cấp khóa (chữ ký).

o Xác thực cử tri (để xác nhận được cử tri hợp lệ, sử dụng khóa công
khai của Tổng quản trị để kiểm tra ).

o Cấp phiếu bầu cho cử tri

o Đảm bảo mỗi người bỏ phiếu chỉ được bỏ phiếu 1 lần cho 1 đợt bỏ
phiếu.

 Ban kiểm tra.

o Được tổng quản trị cấp quyền.

o Kiểm tra lá phiếu hợp lệ: sử dụng khóa công khai của Ban đăng ký để
xác thực lá phiếu (không xem được nội dung lá phiếu và thông tin
người bỏ phiếu)

o Được cấp khóa (chữ ký).

Sau khi xác nhận lá phiếu hợp lệ, Ban kiểm tra chuyển lá phiếu đến hòm phiếu

3.3.2 . Chức năng đăng ký:

- Người dùng đăng ký tài khoản truy cập vào hệ thống bầu cử bằng cách nhập
thông tin số chứng minh thư và mật khẩu. Ban kiểm tra thực hiện kiểm tra cử tri
trong hệ thống và cấp quyền cho cử tri.

- Người dùng đã có tài khoản, đăng ký phiếu bầu .

3.3.3. Chức năng bầu cử:

- Người dùng chưa có tài khoản phải vào phần đăng ký tài khoản.

Trang: 57
- Khi có tài khoản người dùng sẽ gửi đăng ký phiếu bầu. - (trạng thái chưa có
phiếu bầu - có chữ ký của tổng quản trị)

- Sau khi gửi đăng ký phiếu bầu, ban đăng ký xác thực cử tri và xác nhận
quyền được bỏ phiếu.

- Ban đăng ký xác nhận, người bỏ phiếu có quyền bỏ phiếu và nhận được chữ
ký xác nhận lá phiếu.

- Sau khi được ban đăng ký xác nhận quyền bỏ phiếu Cử tri truy cập vào trang
bỏ phiếu để tiến hành bỏ phiếu.

- Sau khi người bỏ phiếu chọn các tùy chọn (Tín nhiệm cao hoặc tín nhiệm
hoặc tín nhiệm thấp) cho người được bầu, hệ thống sẽ yêu cầu cử tri làm mù lá
phiếu lần 1 bằng cách nhập khóa phiếu bầu (chữ ký) để hoàn tất bỏ phiếu.

- Sau khi cử tri nhấn vào nút "hoàn tất", hệ thống yêu cầu cử tri ký tiếp lá
phiếu lần 2 bằng khóa công khai của ban kiểm tra và lá phiếu ở trạng thái chờ ban
kiểm tra xác nhận hợp lệ.

- Ban kiểm tra xác thực lá phiếu mà cử tri gửi (tại đây ban kiểm tra không
nhìn thấy được thông tin người bỏ phiếu và thông tin lá phiếu).

- Hệ thống sẽ yêu cầu ban kiểm tra nhập chữ ký để xác nhận lá phiếu hợp lệ,
sau đó hệ thống sẽ lưu lại các thông tin của lá phiếu vào dữ liệu.

- Kết quả bỏ phiếu sẽ tính để đưa ra bảng niêm yết.

3.3.4. Chức năng hiển thị kết quả bỏ phiếu:

- Hiển thị kết quả bầu cử tại từng thời điểm.

- Cho phép in kết quả ra văn bản.

3.3.5. Chức năng thông tin cá nhân

Hiển thị kết quả bỏ phiếu trước đó (khi đăng nhập vào tài khoản của mình-
nguy cơ lộ thông tin lá phiếu khi cử tri để lộ thông tin đăng nhập)

Trang: 58
3.4. Thiết kế chương trình.

3.4.1. Thiết kế cơ sở dữ liệu

Bảng thông Tin nhân viên: (mã NV, Họ tên, số CMND, Ban, Vị trí, Chữ ký,
trạng thái, ngày bỏ phiếu, mật khẩu, phân cấp)

Bảng thông tin ban đăng ký: (Mã Ban đăng ký, Mã nhân viên Ban đăng ký,
Bên nhân viên ban đăng ký, Chữ ký của nhân viên, Chứng minh thư nhân dân).

Bảng thông tin ban kiểm tra: (Mã ban kiểm tra, Mã nhân viên KT, Tên nhân
viên KT, Chữ ký, Chứng minh thư nhân dân).

Trang: 59
Bảng thông tin người được bầu: (Mã ứng cử viên, Tên ứng cử viên, Chức vụ,
thuộc Ban, Vị trí, thông tin, ảnh, CMTND).

Thông tin phiếu bầu: (Mã phiếu bầu, CMND, Khóa ký phiếu, Khóa ban đăng
ký, Khóa Ban kiểm tra, thời gian hết hạn, trạng thái, mật khẩu, địa chỉ Email của cử
tri)

Chi tiết thông tin phiếu bầu

Kết quả bầu cử

Trang: 60
Trạng thái phiếu bầu và trạng thái nhân viên

Thông tin phòng ban, vị trí và các tùy chọn của phiếu bầu

Trang: 61
3.4.2. Biểu đồ usecase

3.2.3. Danh sách Actor

STT Tên Actor Ý nghĩa/ Ghi chú

Actor này có chức năng quản lý thông tin nhân


viên cấp quyền cho nhân viên vào các chức
1 Admin
năng của hệ thống bỏ phiếu, tạo các ứng cử
viên

Actor này có quyền xem thông tin người đăng


2 Ban đăng ký
ký bỏ phiếu và cấp quyền bỏ phiếu

Actor này chỉ có quyền xác nhận lá phiếu hợp


3 Ban kiểm tra
lệ

Actor nay có quyền gửi yêu cầu đăng ký bỏ


4 Người bỏ phiếu phiếu và được bỏ phiếu sau khi được ban đăng
ký xác nhận quyền bỏ phiếu.

Trang: 62
3.4.3. Danh sách các Use Case

STT Usecase Ý nghĩa/ ghi chú

Cho phép Admin, ban đăng ký, ban kiềm tra


1 Đăng Nhập
và người bỏ phiếu đăng nhập vào hệ thống

Cho phép Admin thêm mới 1 nhân viên mới


2 Thêm nhân viên
vào hệ thống

Cập Nhật thông tin nhân Cho phép Admin chỉnh sửa thông nhân viên
3
viên có sẵn trong hệ thống

Cho phép Admin cấp quyền và các ban quản


4 Cấp quyền cho nhân viên
lý của hệ thống cũng như thêm 1 ứng cử viên

Cho phép Ban đăng ký xem thông tin các


5 Cấp quyền bỏ phiếu yêu cầu bỏ phiếu và cấp quyền bỏ phiếu cho
nhân viên yêu cầu

Cho phép Ban kiểm tra xem các là phiếu đã


6 Xác nhận phiếu hợp lệ được bỏ và xác nhận là phiếu hợp lệ, và gừi
là phiếu về chức năng hiển thị kết quả.

7 Đăng ký bỏ phiếu Cho phép nhân viên đăng ký bỏ phiếu

8 Chức năng bỏ phiếu Cho phép nhân viên tiến hành bỏ phiếu

Tự tổng hợp kế quả bỏ phiếu và hiện thị lên


9 Chức năng hiển thị kết quả
trang kế quả

Trang: 63
3.4.4. Biểu đồ lớp

1 Biểu đồ lớp

3.4.5. Danh sách các lớp đối tƣợng và quan hệ

Tên lớp và các phƣơng thức


STT Ý nghĩa/ Ghi chú
trong lớp
Class bptt_employee Lớp danh sách nhân viên
- Phương thức: Insert(..) - Thêm nhân viên
1
- Phương thức: Update(..) - Cập nhật nhân viên
- Phương thức:… -…
Class bptt_regis_manage Lớp danh sách ban đăng ký
- Phương thức: - Chọn nhân viên vào các ban
2
BpttRegisManageCollection() - Lọc ra nhân viên ban đăng ký
- Phương thức: Filter()
3 Class bptt_check_manage Lớp danh sách ban kiểm tra

4 Class bptt_department Lớp danh sách phòng ban(vd: KP, ..)


5 Class bptt_position Lớp danh sách vị trí (vd: giám đốc, ...)
6 Class bptt_status_employee Lớp danh sách trạng thái nhân viên
7 Class bptt_vote Lớp danh sách lá phiếu
8 Class bptt_status_vote Lớp danh sách trạng thái lá phiếu
9 Class bptt_vote_option Lớp danh sách các tuy chọn cho lá

Trang: 64
phiếu
Lớp thông tin các tùy chọn của các lá
10 Class bptt_vote_details
phiếu, đang ở trạng thái chờ xác nhận.
Lớp thông tin các tùy chọn của các lá
11 Class bptt_vote_offical
phiếu, đang đã xác nhận.
12 Class bptt_candidate Lớp danh sách các ứng cử viên

3.4.5. Thiết kế giao diện

* Giao diện Tổng quản trị nhập danh sách cử tri, người ứng cử

* Giao diện phân nhiệm vụ vào các vị trí:

* Giao diện màn hình đăng nhập và xác thực người dùng.

Trang: 65
* Giao diện Ban đăng ký xác nhận đăng ký bỏ phiếu cho cử tri:

* Giao diện bỏ phiếu và nhập chữ ký để chuyến tới ban kiểm tra

Trang: 66
* Giao diện Ban kiểm tra xác minh lá phiếu hợp lệ.

* Giao diện kết quả, niêm yết.

Trang: 67
KẾT LUẬN

Để nghiên cứu "Chữ ký mù và ứng dụng bỏ phiếu kín trực tuyến", luận văn tập
trung nghiên cứu các vấn đề sau:

- Trú trọng và tìm hiểu cơ sở lý thuyết toán học cơ bản mà bất kỳ bàn toán an
toàn thông tin cũng cần tới; Các khái niệm về mã hóa thông tin, hệ mã hóa thông
tin, sơ đồ của các chữ ký số, xác định ưu nhược điểm và ứng dụng của một số loại
chữ ký số. Đặc biệt là chữ ký mù và các giao thức ký số để áp dụng cho ứng dụng
bỏ phiếu kín trực tuyến.

- Nghiên cứu, tìm hiểu một số khái niệm, thành phần và các quy trình trong bỏ
phiếu kín trực tuyến; đánh giá thực trạng và nhu cầu trong việc xây dựng và sử dụng
hệ thống bỏ phiếu kín trong giai đoạn hiện nay. Tìm hiểu các vấn đề bất thường
trong mối quan hệ giữa các thành phần trong quy trình bỏ phiếu kín trực tuyến, để
từ đó tìm các kỹ thuật và ký số để giải quyết các vấn đề đó trên cơ sở lý thuyết.

- Trên cơ sở những nghiên cứu lý thuyết và sử dụng một số kỹ thuật áp dụng


để từ đó phân tích, thiết kế để xây dựng ứng dụng bỏ phiếu kín trực tuyến lấy tín
nhiệm của lãnh đạo các sở, ban, ngành.

Trong thời gian tới, tác giả sẽ tiếp tục nghiên cứu mở rộng các tính năng của
ứng dụng với các kỹ thuật như trong phần lý thuyết đã nghiên cứu để hoàn thiện
ứng dụng. Với thời gian và trình độ còn hạn chế, trong luận văn này không tránh
khỏi sơ suất. Rất mong nhận được sự đóng góp ý kiến của các Thầy Cô để luận văn
được hoàn thiện hơn.

Trang: 68
TÀI LIỆU THAM KHẢO

Tiếng Việt

[1]. Phan Đình Diệu, Lý thuyết mật mã và an toàn thông tin, Đại học Quốc
gia Hà Nội, 1999.
[2]. Phạm Huy Điển, Hà Duy Khoái, Mã hoá thông tin: Cơ sở toán học và
ứng dụng, nhà xuất bản Đại Học Quốc Gia Hà Nội, 2003.
[3]. Nguyễn Xuân Dũng, Bảo mật thông tin - mô hình và ứng dụng, NXB
Thống kế, 2007.
[4]. Trịnh Nhật Tiến, Trương Thị Thu Hiền, về một quy trình bỏ phiếu từ xa -
Tạp chí Khoa học ĐHQGHN, KHTN &CN, T.XXI, Số 2PT.2005.
[5]. Trịnh Nhật Tiến, Chữ ký: mù, nhóm, mù nhóm và ứng dụng. Kỷ yếu HN
KH FAIR lần 2 tại TP Hồ Chí Minh 9/2005.
[6]. Trịnh Nhật Tiến, Trương Thị Thu Hiền. “Chứng minh không tiết lộ
thông tin và ứng dụng chứng minh tính hợp lệ của lá phiếu điện tử”. Kỷ
yếu HT QG về CNTT tại Đà nẵng 8 2004. (Nhà xuất bản Khoa học kỹ
thuật năm 2005).
Tiếng Anh
[7]. David Chaum. Blind signatures for untraceable payments. New York
1983. Plenum Press. In R.L. Rivest, A. Sherman, and D.Chaum, proc. 82
[8]. David Pointcheval and Jacques Stern. Provably Secure Blind Signature
Schemes.
[9]. Foteini Baldimtsi and Anna Lysyanskaya, On the Security of One-
Witness Blind Signature Schemes.
[10]. Ming-Hsin Chang, T-Te Chen, I-Chen Wo and Yi-Shiung Yeh. Schonorr
Blind Signature Base on Elliptic Curver, 2003.
[11]. Zuzana Rjaskova, Electronic Voting Schemes, pages (5-18), 2002.
Tài liệu trên Internet:
[12]. http://vi.wikipedia.org/wiki/Chữ_ký_số, tr. 9.
[13]. http://vi.wikipedia.org/wiki/Bỏ phiếu kín.
[14]. http://www.cryptopp.com/wiki/RSA_Signature_Schemes
[15]. http://en.wikipedia.org/wiki/RSA
[16]. www.ijicic.org/ijicic-09-0565.pdf
[17]. http://vi.wikipedia.org/wiki/số dư trung quốc, october, 2014.
[18]. http://www.pcworld.com.vn/articles/kinh-doanh/giai-
phap/2004/05/1186263/bau-cu-dien-tu-e-voting/, 2014.

Trang: 69

You might also like