С. постройте криптографический протокол (аутентификации), обеспечивающий абсолютно честные выборы. требования к протоколу: а) конфидециальность данных б) каждый избиратель может убедиться, что его голос засчитан правильно в) каждый избиратель должен быть уверен, что его голос не может никто узнать ( за кого он голосовал) г) обеспечить каждого избирателя только 1 голосом (у 1 человека не должно быть несколько голосов) д) обеспечить возможность голосования только зарегистрированных пользователей подсказка: должны быть 2 доверенные стороны (и они не могут между собой договариваться), то есть, 1-ая - от действющей власти, 2 - от оппозиции. буду !
Для обеспечения конфиденциальности следует использовать однонаправленную функцию. Например, хэш-функцию от личных данных голосующего и его личного ключа, чтобы потом невозможно было отследить его голос по его личным данным.(пункт в). По хэшу невозможно узнать личные данные.
Поскольку хэш-функция однонаправленная, каждый избиратель может использовать эту функцию и получить свой бюллетень (пункт а).
Вторым полем должна быть некоторая переменная, которая обозначает, за кого голосовал человек (например, 1 - власти, 2 - оппозиция, 0 - не явился). Это пункт г.
Пункт д обеспечивается составлением списка перед выборами. Данные хранятся опять же по хэшу для обеспечения конфиденциальности.
Таким образом, получаем алгоритм:
По списку избирателей создаём хэши и записываем их в первое поле. Во второе поле вносится значение по умолчанию = 0.
При явке избиратель получает свой хэш по личным данным, и в соответствии с ним находит своё поле. Во второе поле вносит 1 или 2.
Если такой избиратель не найден, поле не может быть заполнено.
Проверить избиратель может так же. получает хэш по своим данным и собственному ключу. По результату проверяет соответствие.