Андрей писал(а):
Погодите. Что-то не стыкуется.
А если мы прогоним его липовый ключ по всем записям и обнаружится что ни к одной он не подходит - что это будет означать? То что он не голосовал? Или что? А если он при этом утверждает что голосовал? Что это будет означать? И что проверять?
Давайте еще раз. Случаи:
1. Пользователь нашел свою запись в БД, проверил - а) вабор совпал, с тем что он выбирал. Отлично. б) Не совпало с его выбором, но он может расшифровать СП - у него есть доказательство, что его выбор учтен неверно. Или доказать, что его голос учтен верно, если кто-то не верит в то, что он проголосовал именно так, а не иначе.
2. Пользователь нашел свою запись в БД, проверил - вабор НЕ совпал, с тем что он выбирал. Он пытается расшифровать запись. Не получается. Ему говорят, что запись не его. Объявляем, что ищем владельца этой записи. Если находится пользователь, который может расшифровать, то запись действительно не принадлежит первому пользователю. К нему применяются санкции. Если не находится, то, значит, с некоторой вероятностью, была попытка изменить выбор пользователя.
Андрей писал(а):
Вы не поняли. В публичный доступ выкладывается лишь подпись в списке голосующих - без привязки к голосам. Подпись голоса - исключительно для внутреннего использования системой и только. Ну или для того что-бы доказать какому-то пользователю что он голосовал именно так, если возникнет такая необходимость.
Согласен, вы можете возразить что будут утечки такой информации из системы. Но это лучше чем невозможность быстро и эффективно проверить честность работы системы.
В том-то и дело. В вашем случае потенциально можно связать выбор с пользователем без его ведома, так как вся необходимая информация есть в системе, и должна там находиться, чтобы иметь возможность проверять правильноть голосования.
В моем случае, если системы с открытым исходым кодом и никто не запоминает соответсвия УОИПГ <--> логин (это гарантируется открытостью исходного кода), то без желания пользователя нельзя узнать, как он проголосовал.