4 Chƣơng ỨNG DỤNG CỦA ECC TRONG BỎ PHIẾU ĐIỆN TỬ
4.3.2. Cấp quyền bầu cử
Hình 4.2. Giai đoạn cấp quyền bầu cử
Cử tri chọn ngẫu nhiên một thông tin định danh của mình ký hiệu là i. Cử tri sử dụng khóa ký công khai của Ban ĐK và phần tử chọn ngẫu nhiên r để làm mù danh tính i của mình. bi = blind (i) = i.re mod n.
Cử tri mang theo các giấy tờ cần thiết (Chứng minh thư) đến Ban ĐK. Ban ĐK kiểm tra các thông tin này, nếu thấy hợp lệ và cử tri này chưa xin cấp chữ ký lần nào thì Ban ĐK tiến hành ký mù trên blind(i), tạo thành chữ ký s = sign(blind(i)). Việc ký của Ban ĐK thực chất là việc tất cả các thành viên cung cấp các mảnh khóa bí mật cho hệ thống ký. Nếu cử tri đăng ký 2 lần, Ban ĐK sẽ phát hiện ngay được vì số Chứng minh thư đã được lưu giữ trong danh sách cử tri đăng ký. Nếu 2 cử tri cùng chọn định danh i1 và i2 là các giá trị ngẫu nhiên và các r1, r2 ngẫu nhiên nhưng blind(i1)=blind(i2) thì Ban ĐK phải yêu cầu một trong hai cử tri chọn lại định danh i
của mình. Khóa ký của Ban ĐK lấy từ hệ thống phân phối khóa tin cậy và được chia sẻ cho các thành viên. Chữ ký của Ban ĐK với sơ đồ ký RSA, cặp khóa là (e, d) trên định danh đã làm mù blind(i) của cử tri là: s = sign(blind(i)) = (ire)d mod n = idr mod n = sign(i).r. Cử tri có thể xóa mù để thu được chữ ký trên định danh i của mình: sign(i)=sign(blind(i))/r.
Với phương pháp trên chúng ta phải xem xét một số vấn đề: Ban ĐK không được tùy tiện cấp chữ ký mà cần có liên hệ với Ban KT để kiểm soát quá trình bỏ phiếu của cử tri. Nếu cử tri giả mạo chữ ký của Ban ĐK, lá phiếu sẽ bị hủy. Khi gửi thông tin về Ban KT, cử tri phải gửi kèm theo lá phiếu định danh i chưa làm mù của mình. Lúc này Ban KT biết định danh i của cử tri và chữ ký trên định danh đó nhưng không thể biết danh tính thật của cử tri (Họ tên, số CMT,..). Ban ĐK thì biết các thông tin thật này nhưng lại không biết định danh i của cử tri do nó đã bị làm mù khi gửi về để xin chữ ký (Ban ĐK đã ký mù trên định danh thật). Việc cử tri phải gửi định danh thật cùng chữ ký của Ban ĐK cho Ban KT để giúp Ban KT ký lại trên định danh thật đó xem có thu được chữ ký như chữ ký mà cử tri đã gửi về cho mình không. Điều này nhằm đảm bảo việc nếu chữ ký của Ban ĐK bị lộ trên đường truyền thì kẻ đánh cắp
Trong trường hợp xấu nhất: Nếu Ban ĐK cấp quyền bỏ phiếu cho một đinh danh giả thì định danh giả này vẫn được tham gia bỏ phiếu như những người hợp lệ. Ngay cả bầu cử truyền thống cũng không ngăn chặn được việc này nếu như Ban ĐK cho những cử tri không hợp pháp (chưa đủ tuổi, có tiền án tiền sự,người ngoại quốc) vẫn được bầu cử.Chúng ta chỉ có thể tăng tính an toàn bằng việc tăng số thành viên và tăng việc giám sát họ.
Cử tri có thể kiểm tra việc chữ ký trên định danh của mình có hợp lệ hay không bằng việc dùng khóa ký công khai của Ban ĐK để xác minh.
sign(i) = id mod n
(sign(i))e = (id)e = i (mod n)
Khóa ký không chỉ được chia sẻ cho các thành viên trong Ban ĐK mà cả các thành viên trong Ban KT. Giả sử Ban ĐK có t thành viên, Ban KT có k thành viên thì khóa ký sẽ được chia sẻ cho (t + k) thành viên, trong đó ta quy định p thành viên có thể tham gia ký. p≤ min (t, k). Việc này đảm bảo Ban KT có thể ký lại trên định danh thật của cử tri để xem cặp (i, sign(i)) có tương ứng nhau không?