Chƣơng 3 CÁC THUẬT TOÁN NỀN TẢNG TRONG BỎ PHIẾU ĐIỆN TỬ
3.2. Hệ mã hóa đồng cấu
3.2.3. Mô hình hệ mã hóa đồng cấu trong bầu cử điện tử
3.2.3.1. Ứng dụng hệ mã hóa đồng cấu ElGamal cho mô hình bỏ phiếu có/không
Mô hình bầu cử này đƣợc đề xuất bởi Cramer (1997), nó sử dụng thuộc tính đặc biệt của thuật toán mã hóa đồng cấu để thiết lập kiểm chứng phổ quát trong cuộc bầu cử với quy mô lớn, mặt khác vẫn giữ đƣợc sự riêng tƣ bảo mật cho mỗi lá phiếu. Cho
(plaintext) là tập bản rõ, (Ciphertext) là tập các bản mã. Và là một nhóm đối với phép ⨁, là một nhóm đối với phép ⊗. Kí hiệu là kí hiệu mã hóa thông điệp m sử dụng thông số r1. Một mô hình mã hóa là ⊗ ⨁ -đồng cấu nếu: cho
Trong mô hình bỏ phiếu điện tử, biến thể của thuật toán mã hóa ElGamal đƣợc sử dụng [13]. Cho p, q là các số nguyên tố lớn sao cho q|p-1, và Gq là nhóm con của cấp q. Đối với mô hình này, các lá phiếu là m1 = g, m0 = 1/g (yes, no), với g là phần tử sinh cố định của Gq. Khóa bí mật là s đƣợc chọn ngẫu nhiên, khóa công khai tƣơng ứng là
, với g là phần tử sinh của Gq. Một cử tri i gửi lá phiếu của mình theo mẫu
với và chứng minh tính hợp lệ của lá phiếu. Kết thúc cuộc bỏ phiếu, ban bầu cử sẽ tính toán:
(∏
∏
)
cho tất cả các lá phiếu hợp lệ. Cuối cùng, ban bầu cử tính và nhận đƣợc
, với T là sự khác biệt của những lá phiếu yes và những lá phiếu no. Vì trong thực tế T không phải là lũy thừa quá lớn, nên thuật toán “Baby step gaint step” hoặc phƣơng thức Pollard có thể giải quyết đƣợc.
3.2.3.2. Ứng dụng hệ mã hóa đồng cấu Paillier trong hệ thống bầu cử
Giả sử cuộc bầu cử có [20]: Nv: Số cử tri tham gia
Nc: Số ứng cử viên
Ta kí hiệu b là số cơ sở, b > Nv (b dùng để mã hóa thông tin tƣơng ứng cho cử tri). Thông tin mã hóa cho các ứng cử viên sẽ đƣợc biểu diễn là:
Ứng cử viên 1: b0 Ứng cử viên 2: b1
….
Ứng cử viên Nc:
Số lƣợng tối đa có thể lựa chọn cho một lá phiếu (Một cử tri có thể chọn tất cả các ứng cử viên):
∑
Số lƣợng tối đa của việc kiểm đếm cho tất cả các lá phiếu:
Tmax = Nv * mmax (tất cả các cử tri có thể chọn tất cả các ứng cử viên)
Sinh khóa:
- Để mã hóa Tmax, modulo n của hệ mã hóa RSA phải thỏa mãn: n ≥ Tmax + 1; n = p*q
- Chọn ngẫu nhiên số nguyên và ( ( ) )
với và
Khóa công khai là (n, g) Khóa bí mật là: (p, q, )
Mã hóa:
, với r Zn*
Kiểm phiếu:
Sau khi kết thúc cuộc bầu cử, cơ quan bầu cử sẽ có Nv lá phiếu mã hóa. Sau đó, cơ quan bầu cử có thể tính tổng đƣợc tất cả các lá phiếu:
∏ Giải mã: ∑ là tổng tất cả các lá phiếu đƣợc giải mã.
Sau đó, để xác định số phiếu cho mỗi ứng cử viên ta sử dụng phép chia có dƣ với số cơ sở b, phân tích T =
Nếu ta đƣa ra đƣợc T là một mảng m số, , thì đó là số phiếu tƣơng ứng cho mỗi ứng cử viên.
Ví dụ: Ứng dụng hệ mã hóa đồng cấu Paillier trong việc kiểm phiếu
Giả sử Nv = 9 Nc = 5
Số cơ sở b = 10 (b> Nv)
Giả sử chúng ta muốn chọn 2 ứng cử viên cho chức Giám đốc và phó giám đốc cho công ty.
Tên cử tri Ứng cử viên 1 100 Ứng cử viên 2 101 Ứng cử viên 3 102 Ứng cử viên 4 103 Ứng cử viên 5 104 Mã hóa sự lựa chọn trên lá phiếu cử tri
Quyên m = 101 = 10 Duyên m = 102 + 104 = 10100 Hoa m = 0 Hƣng m = 103 = 1000 Phƣơng m = 100 + 103 = 1001 Lệ m = 101 + 103 = 1010 Việt m = 102 + 103 = 1100 Tuân m = 101 + 103 = 1010 Tuyến m = 100 = 1 Tổng phiếu 2 3 2 5 1
Bảng 3.1. bảng thống kê sự lựa chọn của các cử tri
;
Tmax = Nv * mmax = 9 * 11000 = 99000; Để mã hóa Tmax, chọn n > Tmax; n > 99000 Từ đó, chọn √
Sinh khóa:
(1)Chọn ngẫu nhiên 2 số nguyên tố p = 293, q = 433; gcd(pq, (p-1), (q-1)) = 1 (2)n = p*q = 126869; n2 = 16095743161
(3)
(4)Chọn ngẫu nhiên số nguyên và ( ( ) )
g = 6497955158 Mã hóa lá phiếu:
; r Zn* Bảng dƣới đây thống kê các lá phiếu mã hóa của cử tri:
Tên cử tri
Mã hóa sự lựa chọn
trên lá phiếu cử tri r ngẫu nhiên Mã hóa lá phiếu ci
Quyên m = 101 = 10 35145 13039287935 Duyên m = 102 + 104 = 10100 74384 848742150 Hoa m = 0 96584 7185465039 Hƣng m = 103 = 1000 10966 80933260 Phƣơng m = 100 + 103 = 1001 17953 722036441 Lệ m = 101 + 103 = 1010 7292 350667930 Việt m = 102 + 103 = 1100 24819 4980449314 Tuân m = 101 + 103 = 1010 4955 7412822644 Tuyến m = 100 = 1 118037 3033281324 Tổng 23251
Bảng 3.2. Thống kê các lá phiếu mã hóa của cử tri
Kiểm phiếu: Tổng số phiếu đã đƣợc mã hóa: ∏ Giải mã: Tính: Suy ra:
Bây giờ, để xác định số phiếu của mỗi ứng cử viên, chúng ta sử dụng số cơ sở b =10 để chuyển đổi:
Theo kết quả này, thì ứng cử viên thứ tƣ chiến thắng với 5 phiếu.