Chƣơng trình bỏ phiếu lấy ý kiến về mức độ tín nhiệm đối với tổng công ty xăng dầu Việt Nam với 3 chức năng chính là: Ban tổ chức tạo cơ sở dữ liệu cho cán bộ và ban kiểm phiếu, cán bộ bỏ phiếu và ban kiểm phiếu thực hiện kiểm phiếu tính kết quả cuộc bỏ phiếu.
Giao diện chính của chƣơng trình:
Hình 3.4. Giao diện chính của chƣơng trình
a, Đối với ban tổ chức
Hình 3.5. Ban tổ chức đăng nhập vào hệ thống
Nếu sai tên đăng nhập hoặc mật khẩu, hệ thống báo lỗi. Nếu đúng hệ thống thông báo đăng nhập thành công.
Ở đây, Ban tổ chức sẽ có 3 quyền đƣợc phân chia: đầu tiên là sinh khoá cho toàn bộ cán bộ có trong cơ sở dữ liệu, chia sẻ khoá cho ban kiểm phiếu và sửa đổi khoá cho bất kì cán bộ nào.
Khi ban tổ chức chọn nút “Tạo dữ liệu cho cán bộ”, hệ thống sẽ tự động sinh khóa cho toàn bộ cán bộ có trong cơ sở dữ liệu, mỗi cán bộ sẽ là một bộ tham số khác nhau để tăng tính bảo mật.
Hình 3.7. Bảng danh sách cán bộ sau khi đƣợc ban tổ chức tạo cơ sở dữ liệu Khi ban tổ chức chọn nút “Tạo dữ liệu cho ban kiểm phiếu”, hệ thống sử dụng sơ đồ chia sẻ bí mật Shamir tạo bộ khóa cho ban kiểm phiếu, danh sách trong cơ sở dữ liệu có bao nhiêu ngƣời thì hệ thống sẽ tự động chia thành từng đó mảnh khóa. Ở đây ban kiểm phiếu có 3 thành viên, hệ thống sẽ chia làm 3 mảnh khóa và cấp cho mỗi ngƣời một mảnh:
Hình 3.8. Thông báo tạo cơ sở dữ liệu ban kiểm phiếu thành công.
b) Đối với cán bộ
Cán bộ đăng nhập vào hệ thống để bỏ phiếu. Yêu cầu cán bộ có tài khoản trong danh sách cán bộ ở hệ thống cơ sở dữ liệu trung tâm thì mới đƣợc tham gia bỏ phiếu:
Hình 3.9. Cán bộ đăng nhập vào hệ thống
Nếu tên đăng nhập hoặc mật khẩu là sai hệ thống báo “Bạn chƣa đăng nhập đúng”. Nếu đúng “Bạn đã đăng nhập thành công”
Tiếp theo, hệ thống hiển thị giao diện thông tin cán bộ. Cửa sổ này đƣợc chia làm hai phần: Phần bên trái chứa thông tin cán bộ, phần bên phải là các phƣơng án bỏ phiếu.
Hình 3.10. Quá trình bỏ phiếu
Khi cán bộ vào chức năng sửa các thông tin cá nhân của mình:
Hình 3.11. Cán bộ cập nhật thông tin
Cán bộ có thể chỉnh sửa các thông tin cá nhân của mình nếu có sai sót. Sau đó nhấp chuột vào nút “CẬP NHẬT”, hệ thống sẽ tự động cập nhật thông tin mà cán bộ vừa thay đổi vào cơ sở dữ liệu của hệ thống.
Cuối cùng, cán bộ lựa chọn phƣơng án mà mình muốn bỏ phiếu sau đó ghi nhận bằng việc nhấn vào nút “BỎ PHIẾU”, hệ thống sẽ đƣa ra thông báo xác nhận “Bạn đã chắc chắn với phương án lựa chọn chưa?”
Hình 3.12. Thông báo nhắc nhở lựa chọn của cán bộ
Nếu chƣa nhấn vào nút “No” hệ thống đƣa cán bộ về giao diện bỏ phiếu. Nếu đã chắc chắn với phƣơng án lựa chọn nhấn vào nút “Yes” khi đó hệ thống đƣa ra thông báo xác nhận lại phƣơng án mà cán bộ đã lựa chọn.
Hình 3.13. Thông báo xác nhận lựa chọn của cán bộ
Hệ thống đƣa ra thông báo bỏ phiếu thành công và tự đăng xuất tài khoản của cán bộ sau khi cập nhật phƣơng án lựa chọn vào cơ sở dữ liệu của hệ thống.
c) Ban kiểm phiếu thực hiện kiểm phiếu và tính kết quả.
Sau khi các cán bộ hoàn thành việc bỏ phiếu, nhiệm vụ của ban kiểm phiếu là tiến hành giải mã các lá phiếu để kiểm phiếu. Việc giải mã các lá phiếu đƣợc thực hiện bằng cách ghép các mảnh khóa của các thành viên ban kiểm phiếu lại sau đó thực hiện giải mã các lá phiếu. Nếu thiếu bất kỳ một mảnh khóa nào của thành viên ban kiểm phiếu thì việc kiểm phiếu sẽ không thực hiện đƣợc. Vì vậy việc kiểm phiếu sẽ đƣợc thực hiện khi tất cả thành viên trong ban kiểm phiếu đăng nhập vào hệ thống bỏ phiếu và gửi mảnh khóa mà mình giữ.
Hình 3.14. Ban kiểm phiếu đăng nhập vào hệ thống
Hệ thống thông báo “Bạn chưa đăng nhập đúng” nếu thành viên ban kiểm phiếu đăng nhập với TÊN ĐĂNG NHẬP hoặc MẬT KHẨU sai, khi đó ban kiểm phiếu phải đăng nhập lại.
Ngƣợc lại, hệ thống thông báo “Bạn đã đăng nhập thành công với vai trò ban kiểm phiếu”.
Khi ban kiểm phiếu đăng nhập thành công, màn hình sẽ hiển thị bộ khóa mà ngƣời thuộc ban kiểm phiếu này đang giữ.
Hình 3.14. Mảnh khóa của ban kiểm phiếu
Cũng nhƣ cán bộ, ban kiểm phiếu có thể xem và sửa đổi thông tin cá nhân của mình.
Hình 3.15. Ban kiểm phiếu cập nhật thông tin
Ban kiểm phiếu có thể thay đổi mật khẩu của mình sau đó nhấn nút “Cập nhật” để ghi nhận quá trình sửa đổi. Hệ thống đƣa ra thông báo cập nhật thành công: Hoặc nếu không muốn thay đổi cán bộ chọn nút “Thoát” để đăng xuất khỏi hệ thống.
Từng thành viên ban kiểm phiếu phải thực hiện một công việc quan trọng đó là gửi mảnh khóa mà mình đang giữ tới cơ sở dữ liệu của hệ thống bằng cách nhấn nút “Gửi khóa”, hệ thống đƣa ra thông báo xác nhận cán bộ đã chắc chắn muốn gửi khóa chƣa:
Hình 3.16. Thông báo xác nhận quá trình gửi mảnh khóa
Nếu không đồng ý gửi mảnh khóa của mình thì nhấn nút “No”, ngƣợc lại nếu đã chắc chắn với phƣơng án lựa chọn nhấn nút “Yes”, khi đó hệ thống sẽ hiển thị thông báo “Đã submit khóa thành công”.
Tất cả các thành viên của ban kiểm phiếu đồng ý gửi mảnh khóa mà mình giữ khi đó đã có thể tiến hành kiểm phiếu bằng cách nháy chuột vào nút “Kiểm phiếu”, hệ thống sẽ đƣa ra thông báo “Đã tổng hợp đủ các mảnh khóa nhấn OK để ghép các mảnh khóa”,
Hình 3.17. Xác nhận tổng hợp đủ các mảnh khóa
Tiếp tục nhấn “OK” hệ thống đƣa ra thông báo xác nhận “Các mảnh khóa đã khớp nhấn OK để kiểm phiếu”, lúc này hệ thống sẽ tự động ghép các mảnh khóa lại thành khóa bí mật để giải mã các lá. Nhƣ vậy, nhờ áp dụng giao thức chia sẻ bí mật Shamir hệ thống bỏ phiếu sẽ phòng tránh đƣợc bài toán “Thành viên ban kiểm phiếu thông gian sửa đổi nội dung lá phiếu”.
Hình 3.18. Thông báo ghép mảnh khóa thành công Sau khi nhấn “OK” hệ thống đƣa ra kết quả cuộc bỏ phiếu nhƣ sau:
Hình 3.19. Kết quả bỏ phiếu
Ban kiểm phiếu công bố tất cả những phiếu kín đƣợc chấp nhận. Mỗi cán bộ phải kiểm tra xem phiếu của mình đã đƣợc công bố chƣa.
Bất kì ai đều có thể kiểm tra tính hợp lý của các phiếu kín và xem tổng số phiếu kín có bằng tổng số đăng kí hay không để ngăn chặn ban kiểm phiếu bỏ thêm phiếu kín vào.
Trên cơ sở dữ liệu: bảng CanBo sẽ đƣợc công khai, trên đó có hiển thị sự lựa chọn của cán bộ ở cột “Chon” tuy nhiên nhìn vào đó cán bộ không thể chứng minh cho ngƣời khác biết đƣợc mình đã lựa chọn phƣơng án nào vì lựa chọn đó đã bị mã hóa bởi thuật toán ElGamal cải tiến. Nhƣ vậy sẽ giải quyết đƣợc bài toán chống mua bán phiếu.
Hình 3.20. Cơ sở dữ liệu trong mô hình bỏ phiếu tín nhiệm
Kết quả thực nghiệm chƣơng trình thu đƣợc: Bảng thống kê đƣa ra đƣợc số phiếu bầu cho các phƣơng án và phƣơng án đƣợc lựa chọn nhiều nhất. Và trên hết đó là kết quả của cuộc bỏ phiếu đảm bảo đƣợc các tính chất: tính bí mật của lá phiếu, tính toàn vẹn lá phiếu và yêu cầu xác thực của lá phiếu.