3.2.1. Giai đoạn Đăng ký bỏ phiếu
+ Bảo vệ hồ sơ của CT xin bầu cử: Để đảm bảo hồ sơ của cử tri đƣợc đảm bảo về nội dung không bị sửa chữa.
+ Ban bầu cử thẩm định hồ sơ của CT xin bầu cử: Đảm bảo tƣ cách bầu cử của mỗi cử chi.
+ Ẩn danh lá phiếu: Phòng tránh lá phiếu bị theo dõi.
+ Một cử tri đăng ký bỏ phiếu nhiều lần: Đảm bảo mỗi cử tri chỉ đƣợc bỏ phiếu đúng một lần. (ví dụ: Giả danh tên cử tri không bỏ phiếu)
+ Ban bầu cử ký nhiều lá phiếu cho cho 1 CT: Mỗi cử tri chỉ đƣợc cấp không quá một lá phiếu.
3.2.2. Giai đoạn bỏ phiếu
+ Bảo mật nội dung lá phiếu: Đảm báo nội dung lá phiếu không bị lộ (phiếu bị xem trộm)
+ Bảo toàn nội dung lá phiếu: Đảm báo nội dunglá phiếu không bị bị sửa đổi nội dung.
3.2.3. Giại đoạnkiểm phiếu
+ Thành viên ban KP thông gian: Có thể ngƣời kiểm phiếu thông gian với ứng cử viên để sửa nội dung lá phiếu
3.3. PHƢƠNG PHÁP GIẢI QUYẾT CÁC BÀI TOÁN VỀ THÔNG TIN TRONG BỎ PHIẾU TỪ XA BỎ PHIẾU TỪ XA
Quy trình bỏ phiếu từ xa đƣợc chi tiết trong hình 3.1
Hình 3.1.Quy trình bỏ phiếu điê ̣n tử
3.3.1. Bài toán trong Giai đoạn đăng ký bỏ phiếu
Quy trình đăng ký bỏ phiếu đƣợc chi tiết trong hình 3.2.
a/. Bảo vệ hồ sơ của cử tri xin bầu cử:
Giải quyết: Dùng phƣơng pháp mã hóa, chữ ký số, …
b/. Ban Bầu cử thẩm định hồ sơ của cử tri xin bầu cử:
Giải quyết: Dùng phƣơng pháp giải mã, kiểm tra chữ ký số, …
Cử tri
Ban đăng ký
Ban kiểm phiếu
Hòm phiếu Lá phiếu Lá phiếu Bảng niêm yết công khai Chứng minh không
tiết lộ thông tin
Mã hóa đồng cấu
Trộn phiếu
Sơ đồ chia sẻ bí mật Chữ ký mù
c/. Ẩn danh lá phiếu: Đề phòng lá phiếu bị theo dõi.
Giải quyết:Dùng phƣơng pháp chữ ký “mù”
Giả sử ban KP dùng sơ đồ chữ ký RSA (n, p, q, b, a).
Nếu CT chuyển ngay Số định danh x của mình cho ban KP thì sẽ nhận đƣợc chữ ký là Sig(x) = x a (mod n). Cử tri không làm nhƣ vậy vì có thể bị theo dõi lá phiếu.
Cử tri che dấu Số định danh x bằng bí danh y: y = Blind(x) = x * r b(mod n)
với r đƣợc chọn ngẫu nhiên sao cho tồn tại phần tử nghịch đảo r -1 (mod n). Cử tri gửi bí danh y cho ban KP.
Ban KP ký trên bí danh y đƣợc chữ ký z:
z = E(y) = Sig(Blind(x)) = Sig(x * rb) = (x * rb) a = xa * (rb)a= xa * r . Ban KP gửi chữ ký z cho CT.
CT “xoá mù” trên z sẽ nhận đƣợc chữ ký trên Số định danh x:
Unblind(z)=Unblind(Sig(blind(x)))=Unblind(xa * r)= (xa * r) * r -1 = x a (mod n). Cử tri đó có đƣợc chữ kí của ban KP trên x, đó là x a (mod n).
Hình 3.2. Quy trình đăng ký bỏ phiếu
d/. Một cử tri đăng ký bỏ phiếu nhiều lần:
Giải quyết: Sử dụng “nhóm” thẩm định hồ sơ: Khóa giải mã hồ sơ đƣợc chia sẻ
thành nhiều mảnh và mỗi ngƣời trong ban thẩm định giữ một mảnh.
Cử tri
Id đã bị làm mù, Số CMT, Hộ khẩu,…
Ban ĐK
- Kiểm tra các giấy tờ của CT. Nếu hợp lệ thì ký trên Id đã làm mù do CT gửi về.
- Ghi lại Số CMT của CT để tránh việc CT đăng ký 2 lần. Xóa mù để thu đƣợc
Chữ kýtrên Id
e/. Ban bầu cử ký nhiều lá phiếu cho một cử tri:
Giải quyết:
+ Cách 1: Chia sẻ khóa ký mù đơn, mỗi ngƣời trong ban ĐK giữ 1 mảnh khóa.
+ Cách 2: Ký mù nhóm
+ Cách 3: Ký mù bội
Mỗi lá phiếu phải có thông tin định danh. Nó có thể là một con số x nào đó, và phải khác nhau. Trên mỗi lá phiếu phải có chữ ký trên số định danh x, thì lá phiếu mới có giá trị để bầu cử. Nếu cử tri chuyển ngay số định danh x cho ban KP ký, thì lập tức họ xác lập đƣợc mối liên hệ giữa cử chi và x (ví dụ qua địa chỉ nơi gửi trên Internet).
Đó là điều cử tri không muốn vì sợ rắc rối sau này.Để tránh tình huống trên, cử tri biến đổi x thành y trƣớc khi đƣa cho ban ĐK kí xác nhận.ban ĐK ký vào y, mà không biết đó là số định danh x đã bị che dấu (làm mù). Họ trao chữ ký trên y là z cho cử chi. Cử tri “xoá mù” trên z sẽ đƣợc chữ ký của ban ĐK trên số định danh x, nhƣ vậy cử chi có quyền bầu cử.
Để phòng tránh sự gian lận “thông đồng” giữa một ngƣời nào đó trong ban KP và cử tri, hệ thống dùng “đa chữ ký mù” để bảo đảm sự nhất trí cao khi cấp quyền bỏ phiếu cho cử tri.
3.3.2. Bài toán trong giai đoạn bỏ phiếu
Quy trình trong giai đoạn bỏ phiếu đƣợc chi tiết trong hình 3.3.
a/. Bảo mật nội dung lá phiếu: Phòng tránh lá phiếu bị xem trộm.
Giải quyết: Dùng phƣơng pháp mã hóa để mã hóa lá phiếu.
Giải quyết: Dùng phƣơng pháp mã hóa, chữ ký số, … Hình 3.3. Quy trình bỏ phiếu Chọn ý kiến cho lá phiếu của mình Cử tri
- Chữ ký của Ban đăng ký. - Lá phiếu đã mã hóa bằng khóa công khai của Ban KP.
- “Chứng minh không tiết lộ thông tin”. -
- Kiểm tra chữ ký (Liên hệ với Ban ĐK).
- Thực hiện các giao thức tƣơng tác với CT để kiểm tra tính hợp lệ của lá phiếu.
- Mã hóa lại lá phiếu, gửi về Ban KP. - Chứng minh không tiết lộ thông tin
XMTT Bankiểm phiếu
3.3.3. Bài toán trong Giai đoạn Kiểm phiếu
Quy trình giai đoạn Kiểm phiếu đƣợc chi tiết trong hình 3.4
a/. Thành viên Ban kiểm phiếu thông gian: Sửa đổi nội dung Lá phiếu.
Theo suy nghĩ thông thƣờng, khi cử tri chuyển lá phiếu tới ban KP thì họ chỉ cần mã hóa nội dung lá phiếu là đủ. Vì tiếp theo ban KP chỉ cần giải mã nội dung lá phiếu là tính đƣợc kết quả (kiểm phiếu).
Nhƣng trên thực tế có thể xảy ra các tình huống sau: ban KP hay một nhóm thành viên ban KP không trung thực đã gian lận phiếu thăm dò, ví dụ sửa lại nội dung lá phiếu sau khi giải mã (trƣớc khi kiểm phiếu). Để khắc phục tình hình này, ngƣời ta sử dụng kỹ thuật “mã hóa đồng cấu - chia sẻ bí mật”. Với giải pháp này ban KP không phải giải mã từng lá phiếu nhƣng vẫn tính đƣợc kết quả.
Giải quyết:
+ Cách 1: Dùng phƣơng pháp chia sẻ khóa giải mãlá phiếu, mỗi ngƣời kiểm
phiếu giữ 1 mảnh khóa.
+ Cách 2: Mã hóa lá phiếu nhiều lần với các khóa công khai của từng thành viên
ban KP. Sau đó Trộn thứ tự các lá phiếu sau mỗi lần giải mã.
+ Cách 3: Chiasẻ lá phiếu thành nhiều mảnh, mỗi ngƣời trong ban KP giữ một
mảnh.
Chia sẻ khóa giải mã và chia sẻ lá phiếu:
Chìa khoá để giải mã nội dung lá phiếu đƣợc chia thành m mảnh, mỗi ngƣời trong ban KP giữ 1 mảnh, và phải bảo đảm rằng 1 nhóm ngƣời ít hơn m không thể khôi phục đƣợc khoá giải mã.
Bản thân nội dung lá phiếu có thể đƣợc chia thành m mảnh.Cử tri gửi cho m thành viên của ban KP, mỗi ngƣời giữ 1 mảnh và phải bảo đảm rằng 1 nhóm ngƣời ít hơn m không thể xác định đƣợc nội dung lá phiếu.
Với kỹ thuật này, cuộc bỏ phiếu bảo đảm đƣợc bí mật và kiểm soát đƣợc kết quả bỏ phiếu: cụ thể là tránh gian lận phiếu.
Hiện nay có nhiều loại sơ đồ “chia sẻ bí mật” để thực hiện các công việc nhƣ trên, ví dụ: sơ đồ chia sẻ bí mật ngƣỡng Shamir, cấu trúc mạch đơn điệu, không gian Vector Brickell,…
b/. Phòng tránh cử tri bán lá phiếu cho ứng cử viên:
Giải quyết: Dùng ngƣời XMTT mã hóa lá phiếu lần thứ 2. Do đó cử tri không
nhận ra lá phiếu của mình.
Giải quyết: Kiểm tra định danh, kiểm tra chữ ký của ban ĐK
Hình 3.4. Quy trình kiểm phiếu
3.3.4. Bài toán trong kiểm tra phiếu của ngƣời XMTT a/. Kiểm tra tính hợp lệ lá phiếu của CT: a/. Kiểm tra tính hợp lệ lá phiếu của CT:
Giải quyết: Dùng phƣơng pháp “Chứng minh không tiết lộ thông tin”.
Chứng minh không tiết lộ thông tin
+ Khái niệm:Chứng minh không tiết lộ thông tin là phép chứng minh để một
ngƣời P thuyết phục một ngƣời V tin vào một điều gì đó có thật mà không để lộ thông tin.
Chứng minh không tiết lộ thông tin đƣợc Goldwasser, Micali và Rackoff năm 1981 (đƣợc viết tắt GRM) có ảnh hƣởng rất lớn trong lĩnh vực khoa học máy tính.
+ Giao thức :
Giao thức là giao thức “hỏi - đáp” 3 bƣớc, để P chứng minh cho V một vấn đề nào đó.
- Bƣớc 1: P gửi cho V: một giá trị ngẫu nhiên.
- Bƣớc 2: V gửi lại P: một giá trị ngẫu nhiên nhƣ là giá trị dùng để kiểm thử. - Bƣớc 3: P gửi đáp lại V: một giá trị.
Kết quả V thừa nhận hoặc bác bỏ vấn đề P chứng minh.
+ Ví dụ: Hòm phiếu Mạng trộn Ban KP - Khôi phục khóa bí mật. - Tính kết quả bầu cử. - Công bố kết quả lên bảng niêm yết công khai
Phép chứng minh không tiết lộ thông tin đã đƣợc mô hình hóa bởi Quisquater và Guillou trong ví dụ về “hang động của Ali Baba”. Ví dụ này đƣợc minh họathông qua hình 3.5 và đƣợcgiải thích nhƣ sau:
Hình 3.5. Ví dụ minh họa chứng minh không tiết lộ thông tin
Từ bây giờ chúng ta sẽ coi Peggy là Prover (ngƣời chứng minh), còn Victor là Verifier (ngƣời kiểm thử). Peggy(P) muốn chứng minh với Victor(V) rằng cô ta biết câu thần chú có thể mở đƣợc cánh cửa bí mật tại các điểm R-S, nhƣng cô ta không muốn tiết lộ bí mật đó với Victor.
Quá trình đến nơi đó diễn ra nhƣ sau: Victor đi tới P và đợi đến khi Peggy đi khỏi R hoặc S. Sau đó Victor di chuyển đến Q và gọi Peggy ra ngoài từ bên trái hoặc bên phải của đƣờng hầm(kỹ thuật cut and choose). Nếu Peggy không biết câu thần chú, cô ta chỉ có 50% khả năng ra ngoài từ bên đúng. Giao thức có thể đƣợc lặp lại nhiều lần đến khi Victor tin rằng Peggy đã biết câu thần chú. Nếu giao thức đƣợc lặp lại k lần, xác suất lừa gạt của Peggy là 2k.Và nó không có nghĩa là giao thức đã đƣợc lặp bao nhiêu lần.Victor vẫn không biết đƣợc bí mật.
Ý nghĩa chính ẩn trong nguyên nhân là: Peggy muốn chứng minh một sự thật hiển nhiên F1 nhƣng cô ta không muốn tiết lộ sự chứng minh này. Vì thế cô ta đi tìm những sự thật F2 khác, mà có thể tiết lộ công khai, nhƣ là F2 là đúngnếu F1 đúng
(điều kiện cần thiết).Vì thế cô ta “thay thế” phép chứng minh của F1 chỉ bằng chứng minh F2. Trong ví dụ, F1 là câu thần chú bí mật,và F2 là khả năng xuất hiện từ mọi phía của đƣờng hầm. Nếu Victor đồng ý rằng F2 không thể đúng nếu F1 không đúng, sau đó giao thức có thể tiến hành.
Theo quy trình trong hình 3.3 giai đoạn CT chuyển lá phiếu tới Ban KP, phải thực hiện giao thức nhƣ trong bảng 3.1. Tức là CT sẽ mã hóa lá phiếu bằng hệ mã hóa Elgamal, lá phiếu đã mã hóa đƣợc gửi tới ngƣời XMTT kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đó. Giả sử trong cuộc bầu cử “chọn 1 trong k”, nếu cử tri nào đó chọn Gi là ứng cử viên thứ i trong danh sách thì lá phiếu hợp lệ phải ghi Gi với i = 1, 2,…, k. Bằng mã hóa Elgamal, lựa chọn Gi đƣợc mã hóa
thành (x, y) = (gα, hαGi). Nhƣ vậy CT muốn chứng minh với ngƣời XMTT rằng lá phiếu (x, y) là hợp lệ, thì anh ta phải chỉ ra một trong k đẳng thức sau là đúng: (logg x = logh (y/G1))… (logg x = logh (y/Gk)). Để chứng minh đẳng thức trên là đúng mà không bị lộ Gi, CT và ngƣời XMTT thống nhất dùng giao thức “Chứng minh không tiết lộ thông tin” nhƣ sau:
Bảng 3.1. Giao thức cử tri chứng minh lá phiếu hợp lệ
Cử tri Ngƣời XMTT
- Mã hóa lá phiếu [(x, y) = (gα, hαGi)] - Chọn ngẫu nhiên wZ p Tính ai = gw, bi = hw - Với j = 1,…, i - 1, i + 1,…, k Chọn ,dj, rj Zpf(chƣa chọn di, ri) Tính a j= 𝑔𝑟𝑖𝑥𝑑𝑖, b j= ℎ𝑟𝑖(𝑦 𝐺𝑗)𝑑𝑖 - Đặt (A,B)= (a1,b1),…,(ak,bk) (Sử dụng ai, bi đã tính ở trên) (x, y), (A,B) c Chọn ngẫu nhiên c Zp - Tinh: di= c- 𝑗 ≠𝑖𝑑𝑗 r i=w-𝛼𝑑𝑗 d, r = (d1, r1),…, (dk, rk) d, r -Kiểm tra: c=d1+d2+...dk Cho j = 1,…, k aj= 𝑔𝑟𝑖𝑥𝑑𝑖 và bj=ℎ𝑟𝑖(𝑦 𝐺𝑗)𝑑𝑖 Nếu đều đúng ngƣời XMTT kết luận: Lá phiếu hợp lệ
b/. Kiểm tra tính hợp lệ khóa mã hóa của ngƣời XMTT:
Giải quyết: Dùng phƣơng pháp “Chứng minh không tiết lộ thông tin”.
Theo quy trình trong hình 3.3 ngƣời XMTT sẽ thực hiện Giao thức 2. Tức là sau khi xác minh lá phiếu của CT là hợp lệ ngƣời XMTT làm “mù” hoặc mã hóa lá phiếu một lần nữa và gửi nó về ban KP kèm theo “Chứng minh không tiết lộ thông tin” cho
tính hợp lệ của lá phiếu đã bị làm “mù”. Ngƣời XMTT làm “mù” hoặc mã hóa lá phiếu thông qua cặp (u, v) và dựa trên giá trị bí mật f. Để chứng minh lá phiếu bị làm “mù” hoặc đã đƣợc mã hóa vẫn hợp lệ, ngƣời XMTT phải chứng minh đƣợc là anh ta sở hữu giá trị bí mật thỏa mãn u=g, v=h. Nhƣng mặt khác ngƣời XMTT không muốn để lộ . Có một giao thức hiệu quả để ngƣời XMTT làm việc này: giao thức ∑. Trong sơ đồ sau đây, ngƣời XMTT là ngƣời chứng minh (P), ngƣời kiểm tra (V) là CT, ban KP,..
Bảng 3.2. Chứng minh lá phiếu đã làm mù hoặc mã hóa hợp lệ
Ngƣời XMTT (P) Ngƣời kiểm tra (V)
- Có [(u, v)= (g, h)] - Chọn wZp -Tính (a,b) = (gw,hw) (a,b) c - V chọn cZp - Tính r := w +c r - Kiểm tra: gr =a.uc, hr=b.vc
Nếu đều đúng V thừa nhận với P sở hữu giá trị
3.3.5. Kỹ thuật trộn các lá phiếu (mixing the votes)
3.3.5.1. Khái niệm:
Khi bỏ phiếu từ xa, để đám bảo tính bí mật, cử tri phải mã hóa nội dung lá phiếu. Ban kiểm phiếu phải giải mã mới biết lá phiếu ghi gì. Có thể có một ngƣời hay một nhóm ngƣời trong ban kiểm phiếu muốn biết nội dung cũng nhƣ tác giả của lá phiếu, điều đó có thể dẫn đến rắc rối đối với cử tri sau này.
Để tránh những rắc rối trên, ngƣời ta sử dụng kĩ thuật “Trộn các lá phiếu”.
Theo kĩ thuật này thì danh tính của cử tri (ví dụ: nhƣ số định danh) không cần phải ẩn đi, vì số định danh cử tri và lá phiếu đã bị xáo trộn.
Với kỹ thuật này, cuộc bỏ phiếu đảm bảo đƣợc bí mật và kiểm soát đƣợc kết quả bỏ phiếu.
3.3.5.2. Kỹ thuật trộn các lá phiếu
1/. Giai đoạn bỏ phiếu:
Giả sử có n cử tri ghi ý kiến của mình vào lá phiếu, ban kiểm phiếu gồm m
ngƣời.
CT sử dụng khóa công khai của m ngƣời để mã hóa lá phiếu của mình. Nhƣ vậy mỗi cử tri phải mã hóa lá phiếu m lần (m bậc)
2/. Giai đoạn kiểm phiếu:
Ngƣời kiểm phiếu 1: Có n lá phiếu đã mã hóa.
- Anh ta chỉ giữ 1 khóa giải mã của mình nên chỉ giải mã bậc 1, không thể biết đƣợc nội dung lá phiếu nhƣng có thể biết ai đã gửi lá phiếu đó
- Sau khi giải mã bậc 1, anh ta hoán vị các lá phiếu đó một cách ngẫu nhiên. - Anh ta gửi hoán vị này cho các cử tri, họ sẽ biết hành trình của các lá phiếu để kiểm tra kết quả có đúng nhƣ lựa chọn của họ hay không.
- Mặt khác anh ta chuyển hoán vị các lá phiếu trên cho ngƣời kiểm phiếu thứ 2
Ngƣời kiểm phiếu 2: Thực hiện tƣơng tự các công việc nhƣ ngƣời kiểm phiếu 1. - Tức là giải mã bậc 2 cho các lá phiếu. Hoán vị các lá phiếu này một cách ngẫu nhiên gửi chúng cho ngƣời kiểm phiếu số 3
- Ngƣời kiểm phiếu tiếp theo sẽ thực hiện các việc tƣơng tự nhƣ ngƣời kiểm phiếu trƣớc đó.
Ngƣời kiểm phiếu thứ m: Nhận đƣợc toàn bộ các phiếu với đầy đủ nội dung. - Do thứ tự của các lá phiếu đã đƣợc thay đổi nên ngƣời kiểm phiếu 1 không nhận ra lá phiếu của ai mặc dù trƣớc đây anh đã biết [4].
3.3.5.3. Ví dụ “Trộn các lá phiếu” : + Có ba ứng cử viên: 1. Nguyễn Văn A 2. Đỗ Văn B 3. Lê Thị C + Có ba cử tri là : CT1, CT2, CT3