Проект "Свободные голосования" http://gplvote.andyhost.ru/forum/ |
|
Процедура тайного голосования. http://gplvote.andyhost.ru/forum/viewtopic.php?f=21&t=97 |
Страница 1 из 4 |
Автор: | Андрей [ 14 авг 2011, 15:45 ] |
Заголовок сообщения: | Процедура тайного голосования. |
Только-что закончил процедуру тайного голосования. Весьма и весьма специфическая штука. Попробую здесь описать ее нюансы и особенности реализации. В процедуре тайного голосования нам нужно формировать 2 списка и записывать на сервере зашифрованные данные пользователя. Списки: 1. Список проголосовавших. В него включается ссылка на пользователя и его подпись данных в которых нет упоминаний сделанного выбора. 2. Список голосов. Здесь для определенного голосования записывается одноразовый код пользователя и его выбор. По одноразовому коду пользователь сможет определить правильно-ли учелся его голос. Данные пользователя: 1. Записывается, в зашифрованном ключем пользователя виде, одноразовый идентификатор из списка голосов. Ради оптимальности я реализовал сохранение зашифрованного одноразового кода пользователя в его подписи об участии в голосовании в списке проголосовавших. Далее начинаются интересные вещи. Мы подходим к технической реализации анонимности на уровне страницы и форм. На этом уровне анонимность обеспечивается тем, что данные для списка проголосовавших и данные для списка голосов идут разными запросами, которые, в принципе, связать можно только по времени (а время, по крайней мере в списке голосов, НЕ записывается). Здесь есть одна небольшая потенциальная возможность для злоумышленников подделать результаты голосования. Т.к. анонимные данные отправляются без привязки к пользователю, эти данные может отправить любой. И, теоретически, если запрос злоумышленника попадет между отправкой данных для списка голосовавших и анонимными данными обычного пользователя, тогда этот поддельный голос может попасть в список голосов. Что-бы как-то защититься от такой атаки, при добавлении анонимных данных я проверяю что подписей в списке проголосовавших меньше чем записей в списке голосов. Кроме того, при обнаружении обратной ситуации (когда идет атака), я выдаю соответствующее предупреждение пользователям и отправляю на свою почту (можно будет поменять на общую) предупреждение с IP злоумышленника. В принципе, я так подумал, что принятые мною меры, как минимум, блокируют голосование при такой атаке. Т.е. злоумышленник сможет таким образом добавить лишь один поддельный голос. Т.е. подделать голосование злоумышленник не сможет, но заблокировать его, при желании, вполне. Возможно, в будущем, можно будет сделать более интеллектуальный анализ такой атаки и автоматическую блокировку IP злоумышленника. |
Автор: | Сергей [ 14 авг 2011, 16:32 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
Есть сервис который предоставляет за 1000р в месяц оч. много динамических айпи. блокировка айпи не поможет. В случае атаки необходимо продумать другие меры. |
Автор: | Андрей [ 14 авг 2011, 18:02 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
Выход - отказ от части анонимности. По крайней мере технической. Для избежания такой атаки достаточно передать вместе с анонимной частью идентификатор на подпись. Минус здесь в том, что не передавая его мы избавились-бы от большого количества потенциальных претензий на счет того что мы сохраняем где-то связь между голосом и человеком. Т.к. в текущем варианте такая связь не передается. Если, конечно, не считать IP клиента. Однако, он может быть и динамическим и "серым" - здесь нет однозначной связи. |
Автор: | Сергей [ 14 авг 2011, 18:28 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
думаю надо делать, по лучшему по Вашему мнению варианту. Потом когда в числе участников проекта будет больше технических специалистов, думаю если путем голосования решим изменим порядок, на более продвинутый. |
Автор: | Андрей [ 14 авг 2011, 19:05 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
По моему мнению, пока лучше остановиться на имеющемся варианте. Если будут вышеописанные атаки, сначала попробуем с ними разобраться и если уж не получится, тогда будем думать на счет уменьшения анонимности. |
Автор: | Сергей [ 14 авг 2011, 19:11 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
Согласен |
Автор: | Dim [ 26 сен 2011, 15:00 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
Задам вопрос. Допустим группа товарисчей договаривается и при помощи нехитрых технических средств отсылает уже неверные сообщения голосования. Затем заявляет о фальсификации. Проводим проверку и, естественно, обнаруживаем несовпадение. Вывод фальсификация на стороне сервера. Как отмываться? |
Автор: | yurial [ 26 сен 2011, 15:16 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
Dim писал(а): Задам вопрос. Допустим группа товарисчей договаривается и при помощи нехитрых технических средств отсылает уже неверные сообщения голосования. Затем заявляет о фальсификации. Проводим проверку и, естественно, обнаруживаем несовпадение. Вывод фальсификация на стороне сервера. Как отмываться? Мне кажется вы не вдавались в технические подробности реализации. |
Автор: | Dim [ 26 сен 2011, 15:25 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
Я вообще не изучал реализацию. Но изучал темы в разделе "технические вопросы реализации". Этот момент там вообще не рассматривался. |
Автор: | yurial [ 26 сен 2011, 15:34 ] |
Заголовок сообщения: | Re: Процедура тайного голосования. |
viewtopic.php?f=5&t=32 viewtopic.php?f=5&t=104 |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |