Chƣơng 3 CÁC THUẬT TOÁN NỀN TẢNG TRONG BỎ PHIẾU ĐIỆN TỬ
3.3. Hệ mã hóa EC-ElGamal
3.3.5. Ví dụ về trƣờng hợp thăm dò dƣ luận
Trƣờng hợp có lựa chọn: m1, m2, m3 tƣơng ứng với các ý kiến có, không, phiếu trắng. Giả sử m1 = 1, tƣơng ứng với ý kiến “Có”;
Giả sử m2 = 2, tƣơng ứng với ý kiến “Không”; Giả sử m3 = 3, tƣơng ứng với ý kiến “Phiếu trắng”;
(1) Thiết lập:
Sinh đƣờng cong Elliptic: Xét đƣờng cong elliptic: y2
= x3 – x + 188 mod 751. Ta có E751(-1, 188). Khi đó, 726
Chọn điểm P = (0,375) thuộc đƣờng cong E làm phần tử sinh.
Ta nhúng thông tin đại diện cho 3 ứng cử viên thành 3 điểm trên đƣờng cong nhƣ sau:
Sử dụng phƣơng thức nhúng bản rõ lên đƣờng cong Elliptic (mục 3.3.2.4). Chọn k_nhung = 10.
(12, 235)
= (21, 133)
= (30, 236)
Bảng sau cho thấy ba tùy chọn đƣợc đại diện bởi những điểm cơ sở:
Lựa chọn 1 (Yes) Lựa chọn 2 (No) Lựa chọn 3 (Blank)
P1 = (12, 235) P2 = (21, 133) P3 = (30, 236) Bảng 3.4. Điểm cơ sở đại diện cho mỗi sự lựa chọn
Sau đó, hệ thống lƣu trữ khóa tạo khóa bí mật và khóa công khai nhƣ sau: - Chọn ngẫu nhiên số nguyên d = 5 làm khóa bí mật
- Tính Q = d*P = 5.(0,375) = (188, 94)
- Khóa công khai là điểm Q = (188, 94) và khóa bí mật là d = 5.
(2) Bỏ phiếu:
Giả sử một cử tri A muốn bỏ phiếu bầu cho lựa chọn 3:
Bƣớc 1: Lựa chọn ứng cử viên
Ta có điểm P3 là điểm trên đƣờng cong đại diện cho sự lựa chọn của cử tri A, ta thực hiện các bƣớc sau:
- Mã hóa P3 bằng khóa công khai Q. Chọn ngẫu nhiên k = 13
o Chữ kí số của lá phiếu đã đƣợc mã hóa:
C2 = M1 + kQ = (79, 418) + k.(188, 94) = (533, 74) - Gửi (C1, C2) = ((285, 655), (533, 74)) đến trạm bỏ phiếu.
Bƣớc 2: Kiểm tra hồ sơ cử tri
Khi các trạm bỏ phiếu nhận đƣợc lá phiếu từ cử tri, việc đầu tiên hệ thống sẽ kiểm tra tính hợp lệ của chữ kí số, và đảm bảo rằng cử tri chƣa bỏ phiếu trƣớc đó.
(3) Mở phiếu bầu: Khi cuộc bầu cử kết thúc, ban bầu cử bắt đầu giải mã phiếu và thống kê phiếu bầu.
Bƣớc 1: Giải mã
Sau khi nhận đƣợc cặp bản mã (C1, C2), ban kiểm phiếu sử dụng khóa bí mật d = 5 để giải mã.
Ban kiểm phiếu tính toán: C2 – dC1 = (M + kQ) – d(kP) C2 – dC1 = (533, 74) – 5.(285, 655) C2 – dC1 = (533, 74) – (188, 94) C2 – dC1 = (30, 236)
Khôi phục thông điệp m bằng cách tính: m’ = [x/k_nhung] = [30/10] = 3 = m3. Vậy lá phiếu đã đƣợc bỏ cho ý kiến 3.
Bƣớc 2: Tính tổng và công bố kết quả thăm dò: Ban bầu cử thống kê kết quả bầu cử và công bố cho cử tri.