4 Chƣơng ỨNG DỤNG CỦA ECC TRONG BỎ PHIẾU ĐIỆN TỬ
4.2.2. Kỹ thuật mã hóa đồng cấu
Đặc điểm của mã hóa đồng cấu là tính chất có thể tính tổng được các lá phiếu mà không cần giải mã từng lá phiếu riêng biệt. Đây cũng là đặc điểm nổi bật nhất. Mã hóa đồng cấu đảm bảo tính chất tích của các dữ liệu đã mã hóa bằng mã hóa của tổng các dữ liệu : Enc(v1)*…*Enc(vn) = Enc(v1+…+vn).
Quá trình được tiến hành như sau: trước thời gian bầu cử, Ban KP sẽ phân phối một khóa (giả sử dùng sơ đồ chia sẻ bí mật). Mỗi thành viên trong Ban KP sẽ có một khóa mã hóa công khai, cùng với khóa bí mật tương ứng mà họ sẽ dùng để giải mã.
Chỉ có các cử tri đã được xác định danh tính mới được cho phép thêm thông tin lên bảng niêm yết, cùng với các chứng minh không tiết lộ thông tin cho tính hợp lệ của lá phiếu của họ. Khi thời hạn bỏ phiếu kết thúc, các thành viên kiểm phiếu sẽ thu thập tất cả các lá phiếu mã hóa được gửi lên bảng niêm yết và tính tổng của chúng. Tổng này được giải mã bằng khóa bí mật của các thành viên, và kết quả được gửi lên bảng niêm yết cùng các chứng minh tính đúng đắn của tổng và của việc giải mã. Vì ai cũng xem được thông tin trên bảng niêm yết nên mọi người đều có thể kiểm tra được tính đúng đắn của kết quả cuối cùng. Các hệ thống sử dụng phương pháp này có thể được kiểm tra tính đúng đắn trong và sau khi bầu cử.
Sơ đồ 4.3. Sơ đồ bỏ phiếu với tính chất đồng cấu
1. Hệ mã hóa Elgamal Zp, C ={ (a, b) / a, b Zp, ta chọn g là phần tử nguyên thuỷ của Zp*, khóa bí mật a Zp*, khóa công khai h = ga. Để mã hóa văn bản m, ta chọn số ngẫu nhiên k.
Bản mã hoá là cặp số (x, y) = Ek (m) = (g k, h k m ) Giải mã: m = y/xa .
2. Cử tri Vi có các lá phiếu vi. Họ sẽ mã hóa lá phiếu của mình: Chọn ngẫu nhiên ki và mã hóa vi thành (xi, yi) = ( ki
g , hki vi
g ). Sau đó, gửi (xi, yi) về Ban kiểm phiếu
3. Ban kiểm phiếu khi nhận được tất cả các (xi, yi) sẽ tính: (X, Y) = (∏ xi , ∏ yi) = (gk1k2kn , hk1k2kn gv1v2vn ) 4. Kết quả Y / Xa = v v vn g 1 2 Ví dụ
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 KP. Vấn đề đặt ra là Ban KP 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ả 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 = ga 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 km).
V1 chọn k1 ngẫu nhiên là 5, mã hóa v1= 0 thành (x1, y1) = (35, 95* 30) = (35, 95)
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 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 chọn k4 ngẫu nhiên là 7, mã hóa v4 = 0 thành (x4, y4) = (37, 97* 30) = (37, 97)
V1, V2, V3, V4gửi các lá phiếu mã hóa đến Ban KP.
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) = (gk1+k2 hk1+k2, gv1+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à:
(X, Y) = (∏i xi , ∏i yi) = (gk1+k2+k3+k4 , hk1+k2+k3+k4 gv1+v2+v3+v4) = (318, 918*32).
Giải mã bằng cách tính m= gv=Y/ Xα = 918*32 / (318)2 = 32. Số phiếu đồng ý là 2.