3.5.1.1. Bỏ phiếu dạng có/không
Qua khảo sát thực tế tại UBND Tỉnh Tuyên Quang, có thể thấy rằng hầu hết các hội nghị, cuộc họp, buổi báo cáo tổng kết… khi cần lấy ý kiến đánh giá của các đại biểu về một vấn đề nào đó đều thông qua hình thức biểu quyết giơ tay (đồng ý / không đồng ý).
Tuy nhiên cùng với sự phát triển của khoa học kỹ thuật, nhu cầu trao đổi thông tin nhanh chóng và tiết kiệm thì hình thức họp trực tuyến đã đƣợc áp dụng vào các cuộc họp giao ban hành tuần/tháng/quý giữa lãnh đạo Tỉnh với các Huyện, Thành Phố, ngoài ra còn có các cuộc họp trực tuyến giữa lãnh đạo Tỉnh với các Bộ ban ngành khác. Trong hình thức họp trực tuyến, khi cần lấy biểu quyết về một vấn đề nào đó thì biểu quyết bằng giơ tay không hiệu quả và thiếu tính khách quan (do camera đặt cố định, không bao quát hết các thành viên tham gia họp), bên cạnh đó do yêu cầu muốn
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
ẩn danh ý kiến biểu quyết của các đại biểu (đại biểu không muốn ban kiểm phiếu biết đƣợc mình biểu quyết là đồng ý hay không đồng ý, ban kiểm phiếu chỉ có thể biết đƣợc tổng số phiếu nhƣng không biết đƣợc từng nội dung của lá phiếu).
Từ yêu cầu thực tế đó, luận văn đƣa ra phƣơng án giải quyết dựa trên tính chất đồng cầu của hệ mã Elgamal (nội dung chi tiết thuật toán trình bày trong mục 3.1.2). Theo phƣơng pháp này thì nội dung lá phiếu sẽ đƣợc mã hóa và gửi về ban kiểm phiếu, ban kiểm phiếu không biết đƣợc nội dung lá phiếu nhƣng xác minh đƣợc nguồn gốc của lá phiếu, ban kiểm phiếu sẽ tính đƣợc kết quả của cuộc bỏ phiếu từ các lá phiếu đƣợc mã hóa.
3.5.1.2. Bỏ phiếu dạng chọn L trong K
Trong cuộc bỏ phiếu bầu cử hội đồng nhân dân cấp tỉnh khóa XII, có 168 ứng cử viên đƣợc chọn tại 24 tổ bầu cử, tại mỗi tổ bầu cử có 7 ứng cử viên và chọn ra 3 đại biểu hội đồng nhân dân: N1, N2,… N3. Ban kiểm phiếu gồm có 3 ngƣời bên gồm đại điện tổ bầu cử và 2 cử tri đƣợc chọn ngẫu nhiên bất kỳ: A1, A2, A3. Theo luật bầu cử và thể lệ bầu cử thì kết quả của cuộc bầu cử chỉ đƣợc công nhận khi có ít nhất là 2/3 số cử tri đi bầu cử, tuy nhiên không phải lúc nào các cử tri cũng có điều kiện đến trực tiếp để bầu cử và có không ít các cử tri không thể đến tận nơi để bầu cử. Do vậy, để giải quyết vấn đề này, có thể sử dụng phƣơng án bầu cử điện tử. Các cử tri gửi lá phiếu của mình tới ban kiểm phiếu thông qua mạng Internet.
Đây là cuộc bỏ phiếu chọn 3 trong 7 ngƣời, giả sử cử tri không tin vào độ trung thực của các thành viên trong ban kiểm phiếu, để giải quyết vấn đề họ đã 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. Ban kiểm phiếu chỉ có thể biết nội dung của lá phiếu khi và chỉ khi có đủ các thành viên của ban kiểm phiếu ghép các mảnh của lá phiếu lại với nhau. Nội dung lá phiếu đƣợc chia thành nhiều mảnh tin, từng mảnh lại đƣợc mã hóa – mảnh mã trƣớc khi gửi về ban kiểm phiếu.
Từ yêu cầu của bài toán và qua nghiên cứu tìm hiểu, luận văn sử dụng sơ đồ chia sẻ bí mật Shamir để chia nhỏ lá phiếu, phối hợp với tính chất đồng cấu của hệ mật Elgamal để khôi phục lại lá phiếu ban đầu khi có đủ các mảnh mã (nội dung chi tiết thuật toán trình bày trong mục 3.3).
3.5.2. Chương trình demo
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Trong phần này, luận văn trình bày về cách thức xây dựng và sử dụng chƣơng trình Demo nhằm kiểm chứng tính đúng đắn của bài toán kết hợp sơ đồ chia sẻ bí mật Shamir và hệ mã hóa Elgamal - ứng dụng trong bỏ phiếu điện tử tại tỉnh Tuyên Quang. Trên thực tế, để thiết kế đƣợc một chƣơng trình hoàn chỉnh, ngoài modul mã hóa và giải mã còn cần rất nhiều modul hỗ trợ khác nhƣ: xác thực quyền bầu cử của cử tri, phân bổ khóa, xác định tính hợp lệ của phiếu bầu…Tuy nhiên, do giới hạn về mặt thời gian nghiên cứu nên luận văn chỉ tập trung vào làm rõ việc sử dụng thuật toán mã hóa Elgamal trong mã hóa sự lựa chọn của cử tri nhằm đảm bảo tính tự do trong lựa chọn
và sử dụng sơ đồ chia sẻ bí mật Shamir nhằm đảm bảo tính kiểm tra được và minh bạch trong bầu cử.
Chƣơng trình Demo đƣợc xây dựng trên nền phần mềm Matlab 2012a. Cấu trúc chƣơng trình cụ thể nhƣ sau: Chƣơng trình chính; Nhóm các thủ tục cho Bài toán bỏ phiếu có/không đồng ý; Nhóm các thủ tục cho Bài toán bỏ phiếu chọn L trong K.
3.5.2.2. Chương trình chính
Gồm file main.fig để tạo ra giao diện sử dụng và file main.m cho việc thực thi các thủ tục gọi hai bài toán bỏ phiếu: Bài toán bỏ phiếu có/không đồng ý, Bài toán bỏ phiếu “chọn L trong K”.
3.5.2.3. Nhóm các thủ tục cho Bài toán bỏ phiếu có/không đồng ý
Gồm một số các file với các mục đích cụ thể đƣợc mô tả trong Bảng 3.2
Bảng 3.2 Các file chính để minh họa Bài toán bỏ phiếu có/không đồng ý
Tên File Mục đích
bophieucokhong.fig Tạo giao diện GUI trên nền Matlab thuận tiện cho việc sử dụng bophieucokhong.m Tiến hành các thủ tục khi ngƣời dùng thao tác trên giao diện GUI
của chƣơng trình bỏ phiếu có/không đồng ý
phieubauck.m Tạo ngẫu nhiên n phiếu hợp lệbầu đại diện cho sự lựa chọn của n
cử tri
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
kiemphieuck.m Giải mã phiếu bầu và đƣa ra kết quả theo dựa trên tính chất đồng cấu của thuật toán mã hóa Elgamal
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
3.5.2.4. Nhóm các thủ tục cho Bài toán bỏ phiếu chọn L trong K
Gồm một số các file với các mục đích cụ thể đƣợc mô tả trong Bảng 3.3
Bảng 3.3 Các file chính để minh họa Bài toán bỏ phiếu “chọn L trong K”
Tên File Mục đích
bophieuL_K.fig Tạo giao diện GUI trên nền Matlab thuận tiện cho việc sử dụng
bophieuL_K.m
Tiến hành các thủ tục khi ngƣời dùng thao tác trên giao diện GUI của chƣơng trình bỏ phiếu “chọn L trong K”
khoitaolk.m Tạo khóa bí mật và công khai theo thuật toán mã hóa Elgamal
manglk.m
Tạo ngẫu nhiên một phiếu bầu hợp lệ (gồm L bít 1 đại diện cho lựa chọn đồng ý L ứng viên tƣơng ứng với L trong K vị trí)
taophieulk.m
Tạo ngẫu nhiên n phiếu bầu hợp lệ đại diện cho sự lựa chọn của n
cử tri
guiphieulk.m
Mã hóa phiếu bầu theo thuật toán mã hóa Elgamal. Ứng với mỗi lá phiếu, tính toán N mảnh phiếu chia sẻ bí mật Shamir để gửi cho
N thành viên ban kiểm phiếu
ketqualk.m
Các thành viên ban kiểm phiếu ghép các mảnh phiếu theo thuật toán chia sẻ bí mật Shamir, giải mã phiếu bầu và đƣa ra kết quả theo dựa trên tính chất đồng cấu của thuật toán mã hóa Elgamal. Sắp xếp và hiển thị thứ tự trúng cử của L trong K ứng viên.
3.5.3. Một số kết quả đạt được
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Chạy file main.m ta đƣợc giao diện nhƣ Hình 3.7. Trên giao diện này, để tiến hành phân tích bài toán bỏ phiếu có/không đồng ý ta click chuột vào nút Bỏ phiếu dạng Có/Không. Để phân tích bài toán bỏ phiếu “chọn L trong K” ta click chuột vào nút Bỏ phiếu dạng chọn L trong K.
Hình 3.7 Giao diện chương trình chính
3.5.3.2. Chương trình bỏ phiếu có/không đồng ý
Trên giao diện của chƣơng trình chính, click chuột vào nút Bỏ phiếu dạng Có/Không hoặc chạy chƣơng trình bophieucokhong.m ta đƣợc giao diện nhƣ Hình 3.8.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 3.8 Giao diện chương trình bỏ phiếu có/không đồng ý
Bƣớc 1. Khởi tạo khóa bí mật và công khai
Từ giao diện của chƣơng trình, ta nhập giá trị của phần tử sinh g cũng nhƣ khóa bí mật a. Sau khi click vào nút khởi tạo, khóa công khai h đƣợc tính theo công thức
a
h g . Ví dụ chọn g 3, a 5ta đƣợc h 243. Bƣớc 2. Bỏ phiếu
Trên giao diện của chƣơng trình, ta nhập giá trị của số cử tri n và khi click vào nút
bỏ phiếu, chƣơng trình phieubauck.m đƣợc gọi và cho ta kết quả bầu cử của n phiếu
với bít 1 đại diện cho đồng ý và 0 đại diện cho sự lựa chọn không đồng ý. Cụ thể trong ví dụ trên, khi chọn n=15, kết quả ngẫu nhiên đƣợc tạo ra nhƣ sau:
V= [1 1 0 1 1 0 0 1 1 1 0 1 1 0 1] Bƣớc 3. Gửi phiếu
Khi click vào nút gửi phiếu , chƣơng trình guiphieuck.m sẽ tạo ra n giá trị k ngẫu nhiên ứng với n cử tri. Từ các giá trị ngẫu nhiên này sẽ tiến hành mã hóa sự lựa chọn của các cử tri theo thuật toán mã hóa Elgamal. Tƣơng ứng với mỗi sự lựa chọn T của
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
cử tri (0 hoặc 1), một cặp mã ( , )x y (g h gk, k T) đƣợc gửi đến ban kiểm phiếu. Trong ví dụ này, khi K=[ 1 4 9 8 10 7 0 8 9 7 8 7 4 7 2], ban kiểm phiếu sẽ nhân đƣợc kết quả sau:
Phiếu = (3^1,243^1*3^1); (3^4,243^4*3^1); (3^9,243^9*3^0) (3^8,243^8*3^1); (3^10,243^10*3^1); (3^7,243^7*3^0); (3^0,243^0*3^0) (3^8,243^8*3^1); (3^9,243^9*3^1); (3^7,243^7*3^1); (3^8,243^8*3^0) (3^7,243^7*3^1); (3^4,243^4*3^1); (3^7,243^7*3^0); (3^2,243^2*3^1) Phiếu= (3,729); (81,10460353203) (19683,2954312706550833600000) (6561,36472996377170788000) (59049,2153693963075557700000000) (2187,50031545098999704) (1,1) (6561,36472996377170788000) (19683,8862938119652501400000) (2187,150094635296999100) (6561,12157665459056929000) (2187,150094635296999100) (81,10460353203) (2187,50031545098999704) (9,177147) . Bƣớc 4. Kiểm phiếu
Khi click vào nút kiểm tra , thay vì giải mã từng cặp phiếu chƣơng trình
kiemphieuck.m sẽ dựa trên tính chất đồng cấu của thuật toán mã hóa Elgamal để tính
giá trị (X,Y) từ n cặp (x,y)nhận đƣợc, sau đó giải mã ra giá trị kq
m g (với kq là tổng số phiếu đồng ý). Với ví dụ trên ta có
X= 26183890704263137000000000000000000000000000
Y=7267473295882058100000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000
m= 59049=310. Kết quả giải mã là 10 cử tri đồng ý và 5 cử tri không đồng ý. Nhận xét: Chƣơng trình trên đƣợc thử nghiệm khi chƣơng trình guiphieuck.m tạo ra
n giá trị k ngẫu nhiên nằm trong khoảng từ 0 đến 10. Kết quả là phép tính X, Y cuối cùng sẽ bị tràn số. Vì vậy không thể áp dụng trong trƣờng hợp số cử tri lớn (vài ngàn ngƣời). Trong trƣờng hợp này luận văn đề xuất tạo ra các giá trị k ngẫu nhiên nằm trong [0,1]. Chƣơng trình đã đƣợc kiểm thử với n=1200và cho kết quả sau 10s. Qua đó cho thấy ngoài tính bảo mật kết quả, bỏ phiếu điện tử còn chứng tỏ đƣợc sự ƣu việt về thời gian hơn sơ với bỏ phiếu truyền thống.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Trên giao diện của chƣơng trình chính, click chuột vào nút Bỏ phiếu dạng chọn L/K hoặc chạy chƣơng trình bophieuL_K.m ta đƣợc giao diện nhƣ Hình 3.9.
Hình 3.9 Giao diện chương trình bỏ phiếu chọn L trong K
Bƣớc 1. Khởi tạo khóa bí mật và công khai
Từ giao diện của chƣơng trình, ta nhập giá trị của modul p, phần tử sinh g, số ứng viên K, số ứng viên đƣợc lựa chọn L và số thành viên ban kiểm phiếu N. Sau khi click vào nút khởi tạo, khóa bí mật của các thành viên Zi đƣợc tạo ra .Tƣơng ứng là khóa công khai hi đƣợc tính theo công thức Zi
i
h g . Ví dụ chọnp 23, g 3, K 7, 5
L , N 4và Zi=[ 2 2 3 4] ta đƣợc hi=[ 9 9 27 81] Bƣớc 2. Bỏ phiếu
Trên giao diện của chƣơng trình, ta nhập giá trị của số cử tri n và khi click vào nút
bỏ phiếu, chƣơng trình taophieulk.m đƣợc gọi và cho ta kết quả bầu cử của n phiếu hợp lệ (có L bit 1 và K-L bit 0) với bít 1 đại diện cho đồng ý và 0 đại diện cho sự lựa chọn không đồng ý. Cụ thể trong ví dụ trên, khi chọn n=10, kết quả ngẫu nhiên đƣợc tạo ra nhƣ sau:
V= [0 1 1 0 1 1 1, 0 1 1 1 0 1 1, 1 0 1 1 0 1 1, 1 1 1 1 1 0 0 1 1 1 1 1 0 0, 1 1 1 0 1 0 1, 1 1 1 1 1 0 0, 1 1 1 0 1 1 0, 1 1 1 0 1 0 1, 1 1 1 0 0 1 1]
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Bƣớc 3. Gửi phiếu
Khi click vào nút gửi phiếu , chƣơng trình guiphieulk.m sẽ tạo ra n phiếu bầu hợp lệ ngẫu nhiên tƣơng ứng với n cử tri. Từ các giá trị ngẫu nhiên này sẽ tiến hành mã hóa sự lựa chọn của các cử tri theo thuật toán mã hóa Elgamal, dùng thuật toán chia sẻ bí mật Shamir tạo ra N mảnh ứng với mỗi phiếu để gửi cho N thành viên ban kiểm phiếu. Trong ví dụ trên, các mảnh phiếu đƣợc tạo ra là:
412 1743 5466 13453 406 1737 5460 13447 400 1731 5454 13441 364 1695 5418 13405 364 1695 5418 13405 S = 382 1713 5436 13423 364 1695 5418 13405 376 1707 5430 13417 382 1713 5436 13423 388 1719 5442 13429 Bƣớc 4. Kiểm phiếu
Khi click vào nút kiểm phiếu , thay vì giải mã từng cặp phiếu chƣơng trình
ketqualk.m sẽ dựa trên tính chất đồng cấu của thuật toán mã hóa Elgamal và thuật toán
chia sẻ bí mật Shamir để ghép các mảnh phiếu và giải mã ra số lƣợng cử tri lựa chọn đối với mỗi ứng viên. Tiếp đó, sắp xếp thứ tự các ứng viên theo thứ tự số phiếu giảm dần để có cơ sở chọn L trong K ứng viên trúng tuyển.
Với ví dụ trên ta có các mảnh phiếu đƣợc ghép lại là Sghép= [129 123 117 81 81 99 81 93 99 105] Sau khi giải mã thu đƣợc kết quả:
[UV(1) UV(2) UV(3) …. UV(7) ]= [8 9 10 5 7 5 6] Vậy kết quả bầu cử là:
Kq= (UV[3],10) (UV[2],9) (UV[1],8) (UV[5],7) (UV[7],6) (UV[4],5) (UV[6],5) Theo kết quả trên, trong K=7 ứng viên, số ứng viên trúng tuyển là L=5 (ứng viên thứ 3, 2, 1, 5, 7). Ứng viên thứ 4, 6 sẽ bị loại.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Nhƣ đã giới thiệu trong các phần trƣớc, mục tiêu của luận văn là xây dựng thử nghiệm chƣơng trình bỏ phiếu điện tử tại UBND tỉnh Tuyên Quang. Để đảm bảo hai yếu tố cốt lõi của vấn đề bỏ phiếu là: tính kiểm tra đƣợc và tính tự do trong lựa chọn, luận văn sử dụng hệ mật Elgamal kết hợp với kỹ thuật chia sẻ khóa bí mật Shamir. Sử dụng hệ mật Elgamal với tính chất đồng cấu sẽ cho phép kiểm tra kết quả tổng phiếu thay cho việc kiểm tra đơn lẻ trong bài toán bầu cử có không. Kỹ thuật chia sẻ khóa bí mật Shamir sẽ tạo phân quyền trong ban kiểm phiếu để chống gian lận trong bài toán bỏ phiếu chọn L trong K. Chƣơng trình thử nghiệm cho thấy kết quả đúng với lý thuyết và mang lại ƣu thế vƣợt trội về mặt thời gian cũng nhƣ khắc phục đƣợc những “lỗi do con ngƣời” so với bỏ phiếu thông thƣờng, đặc biệt khi số lƣợng cử tri là lớn.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
KẾT LUẬN
Sau một thời gian nghiên cứu và tìm hiểu, luận văn đã đạt đƣợc một số kết quả nhƣ sau:
- Tìm hiểu tổng quan về bỏ phiếu điện tử và các bài toán trong bỏ phiếu điện tử - Trình bày cơ sở lý thuyết về an toàn bảo mật thông tin, cơ sở toán học của các
phƣơng pháp mã hóa.
- Nghiên cứu tính chất đặc biệt của sơ đồ chia sẻ bí mật Shamir và tính chất đồng cấu của hệ mã hoá Elgamal, đặc biệt là tính chất sinh ra khi phối hợp hai hệ mật mã trên.
- Chỉ ra đƣợc ứng dụng của các tính chất trên trong bỏ phiếu hay thăm dò từ xa trên mạng công khai (bỏ phiếu điện tử)
- Khảo sát thực trạng các cuộc bỏ phiếu tại UBND Tỉnh Tuyên Quang, từ đó phát biểu bài toán và đƣa ra phƣơng án giải quyết bài toán.