Проект "Свободные голосования"

Электронная системы голосований через интернет
Текущее время: 27 ноя 2024, 15:39

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 141 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 15  След.
Автор Сообщение
СообщениеДобавлено: 07 окт 2011, 12:31 
Не в сети

Зарегистрирован: 23 сен 2011, 07:11
Сообщения: 42
povischuk
Немного поясню. Видно не совсем поняли.
1) Один сервер, много серверов или каждый участник сервер - это для описанного мной случая не важно. Это вопрос реализации. В данном случае я подразумевал что серверов может быть много, и они уже (сервера) обмениваются между собой информацией о голосовании. Пример такого сервиса - eDonkey сеть. Живет курилка. Дистрибутив сервер доступен и открыт, кто хочет - ставит у себя. Он общедоступен. Если будет желание - можно каждого клиентом сделать.
2) Говорить о том, что человек объявил результаты и заверил одной подписью - не очень хороший случай. Вы доверяете результатам голосования ровно на столько, на сколько доверяете данному человеку.
3) Делать автоматический подсчет голосов компьютером - вы будете доверять результатам ровно на столько, на сколько доверяете КАЖДОМУ компьютеру (серверу) в системе. Собственно говоря - никак.
4) Единственный способ автоматического подсчета голосов возможен только в полностью открытой системе. Т.е. когда голосование открыто кроме всего прочего. Т.е. когда легко можно идентифицировать каждый голос и каждый может сказать, что его голос не учли или учли неправильно. При наличии анонимных голосов, нужно вводить механизм выдачи "электронных бюллетеней". Если выдает их только компьютер - вы не можете доверять системе. Выдает один человек - доверяете ровно на столько, на сколько доверяете человеку, выдает группа - на сколько вы доверяете кворуму группы.

Собственно говоря, описанный мной способ не отменяет возможность злоупотреблений анонимными голосованиями. Тут вопрос в том, что должно сойтись число выданных анонимных анонимных голосов (использованных) и записей в базе анонимных пользователей. И все доверие будет строится на том, что пользователь должен быть сознательными и если увидит, что его голосом воспользовались - должен трубить об этом и подвергать сомнению результаты голосования.

Вопрос реализации распределенной системы - чисто технический. В данном случае будут сложности по синхронизации данных, по реализации транзакций (прием голосов и выдача идентификаторов для анонимных голосований) и много других. Но это не вопрос к тому, как сделать систему достоверной.

Собственно говоря, для проверки, можно оставлять в базе (пусть распределенной) соответствие идентификатора анонимного голосования и голосующего (который в моем предварительном варианте планировалось не хранить), но хранить только в виде зашифрованного ключами организаторов сообщения.

Но в данном случае нарушается принцип тайного голосования - запись может быть расшифрована кворумом и информация может стать доступной.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 12:34 
Не в сети

Зарегистрирован: 23 сен 2011, 07:11
Сообщения: 42
povischuk писал(а):
каждый может посмотреть его коды

Добавлю. Открытость исходных кодов не гарантирует подмены результатов голосования. Это проблема администратора системы или злоумышленников, которые могут скомпрометировать систему (взломать по русски).
Если же мы делаем доступными результаты голосования (что бы каждый мог пересчитать результаты и перепроверить) - то мы отказываемся от тайного голосования.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 12:59 
Не в сети

Зарегистрирован: 04 окт 2011, 20:10
Сообщения: 32
Можно не отступать от нынешней реальности, разделив функцию выдачи бюллетеня и функцию подсчета голосов. Можно создать сеть серверов - избиркомов по всему миру. Желающие создать голосование, должны обратиться в избиркомы и найти сервер (или несколько), готовые это голосование обслужить (скажем, избирком Владивостока может не захотеть перегружать себя данными о голосовании за мэра Тулы). Все избиркомы, согласившиеся обслуживать данное голосование, постоянно обмениваются между собой списками избирателей.
Избиратель, который хочет и имеет право участвовать в голосовании, обращается в любой избирком. Там ему выдают бюллетень - некий код, который знает только он. Ответственность за анонимность бюллетеня и его валидность несет избирком. Вопрос анонимности - вопрос доверия к избиркомам. Все без исключения должны иметь доступ только для чтения к кодам избиркомов, чтобы убедиться, что он правильно ставит галочку о получении бюллетеня напротив ЭЦП, и при этом не пишет его номер.
А далее голосовать можно в любой момент, например в распределенной сети. Все передают друг другу голоса, и все занимаются подсчетом. Только каждый, кому дают голос, всегда может обратиться в избирком и спросить, нормальный ли это бюллетень или нет. Если все хорошо, то регистрировать голос. Каждый знает номер своего бюллетеня и может проверить свой голос. Другие не знают, кому это бюллетень принадлежит.

Но мы сейчас пытаемся построить систему, чтобы обойтись без избиркомов.

_________________
[url="http://povischuk.livejournal.com/7922.html"]"... И во многих царствах были олигархи иудейские, которые продавали и покупали...
И пилил Вайншток сорок дней и сорок ночей, и увозил золото колесницами...
Многие же тогда говорили: вот, по закону Моисееву, не дозволено пилить в субботу,.."[/url]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 13:02 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Dmitry писал(а):
3) Делать автоматический подсчет голосов компьютером - вы будете доверять результатам ровно на столько, на сколько доверяете КАЖДОМУ компьютеру (серверу) в системе. Собственно говоря - никак.

... на сколько доверяете СВОЕМУ компьютеру ...

Dmitry писал(а):
4) Единственный способ автоматического подсчета голосов возможен только в полностью открытой системе. Т.е. когда голосование открыто кроме всего прочего. Т.е. когда легко можно идентифицировать каждый голос и каждый может сказать, что его голос не учли или учли неправильно. При наличии анонимных голосов, нужно вводить механизм выдачи "электронных бюллетеней". Если выдает их только компьютер - вы не можете доверять системе. Выдает один человек - доверяете ровно на столько, на сколько доверяете человеку, выдает группа - на сколько вы доверяете кворуму группы.

Как у вас все сложно: выдает компьютер, человек, группа. Почему не ограничиться программой на вашем компьютере? Не доверяете? - изучайте коды программы.
Dmitry писал(а):
Собственно говоря, описанный мной способ не отменяет возможность злоупотреблений анонимными голосованиями. Тут вопрос в том, что должно сойтись число выданных анонимных анонимных голосов (использованных) и записей в базе анонимных пользователей. И все доверие будет строится на том, что пользователь должен быть сознательными и если увидит, что его голосом воспользовались - должен трубить об этом и подвергать сомнению результаты голосования.

Прям как и в моем случае. ("Трубление" можно автоматизировать)
Dmitry писал(а):
Вопрос реализации распределенной системы - чисто технический. В данном случае будут сложности по синхронизации данных, по реализации транзакций (прием голосов и выдача идентификаторов для анонимных голосований) и много других. Но это не вопрос к тому, как сделать систему достоверной.

Собственно говоря, для проверки, можно оставлять в базе (пусть распределенной) соответствие идентификатора анонимного голосования и голосующего (который в моем предварительном варианте планировалось не хранить), но хранить только в виде зашифрованного ключами организаторов сообщения.

Но в данном случае нарушается принцип тайного голосования - запись может быть расшифрована кворумом и информация может стать доступной.

Как у вас все сложно...

_________________
AF4B DFB0 0E41 2F7A 09FD 4971 96F0 B176 EA1C DD85


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 13:14 
Не в сети

Зарегистрирован: 23 сен 2011, 07:11
Сообщения: 42
povischuk писал(а):
Но мы сейчас пытаемся построить систему, чтобы обойтись без избиркомов.


Вот в этом я и вижу проблему. Я не вижу способа, как построить систему одновременно анонимную (для реализации тайного голосования) и надежную, что бы в ней не было злоупотреблений.

Или одно, или другое. Если кто предложит вариант - я за. Но вроде я изложил правильно, почему это в принципе невозможно.
Если распишете систему, как оно должно взаимодействовать, то я попробую найти способ для ее обхода и фальсификации результатов.

Основное условие - анонимность (поддержка тайного голосования) - т.е. в какой то момент должен возникнуть голос, который засчитается системой, но к которому не будет привязан голосующий (т.е. что бы по этой информации нельзя было восстановить, кто же голосовал).

В моем варианте возможна атака по типу раскрытия информации. Т.е. если изменить код так, что бы он сохранял соответствие, то в дальнейшем можно скомпрометировать систему (не результаты) разгласив эту информацию.

----

Поясню немного, а то не совсем понятно.
В данном случае имеется в виду подсунуть "левый" сервер (если у нас каждый сервер - то это может быть любой компьютер в сети), и этот сервер будет сохранять соответствие идентификатора и пользователя, то можно будет установить информацию о том, кто как голосовал, но только в рамках того, кто получал идентификаторы через данный узел. В общем случае, при большом количестве узлов, данный тип атаки будет не эффективен, т.к. нельзя гарантировать, кто будет ходить через твой узел, а наличие информации о том, как голосовали 2 учителя, 1 дворник и 3 водителя мало кому интересна и не сможет скомпрометировать систему (я надеюсь). Но это уязвимость и о ней еще нужно будет подумать.
Например - нужно получить не один идентификатор куском, а 3 части от него от разных систем (к примеру). Тогда взлом одного узла будет неэффективен.


Последний раз редактировалось Dmitry 07 окт 2011, 13:53, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 13:21 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Dmitry писал(а):
Если распишете систему, как оно должно взаимодействовать, то я попробую найти способ для ее обхода и фальсификации результатов.

Описание системы в первом посте - опишите схему атаки.

_________________
AF4B DFB0 0E41 2F7A 09FD 4971 96F0 B176 EA1C DD85


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 13:31 
Не в сети

Зарегистрирован: 23 сен 2011, 07:11
Сообщения: 42
yurial писал(а):
... на сколько доверяете СВОЕМУ компьютеру ...

Неверно. Вы же получаете информацию о том как голосовали от других компьютеров, значит вы доверяете ей на столько, на сколько доверяете тем компьютерам и тем пользователям. Если голосование открытое - вопросов нет, всегда можно проверить (подсчитав у себя на компьютере и проверив все подписи электронные).
А вот в случае с анонимным голосованием - вы проверить ничего не можете. А значит данные могут быть подменены.

yurial писал(а):
Как у вас все сложно: выдает компьютер, человек, группа. Почему не ограничиться программой на вашем компьютере? Не доверяете? - изучайте коды программы.

Априори будем считать, что СВОЕМУ компьютеру мы доверяем - если уже себе не доверять... Даже коды из которых собрана программа - проверили и убедились в их чистоте. Договорились.
Но, повторюсь, доверять данным полученным вашим компьютером из других источников вы доверять до их проверки не можете. А проверка возможна только с использованием электронной подписи того, кто голосовал или тех, кому мы доверяем.

yurial писал(а):
Прям как и в моем случае. ("Трубление" можно автоматизировать)

Можно, но всегда есть возможность, что человек нехороший захочет скомпрометировать результаты голосования - он начнет "трубить" пытаясь сорвать результаты голосования. Так что в данном случае нужно будет все равно проверять. Частично можно автоматизировать - например если наберется больше определенного процента таких случаев или если они могут повлиять на результат голосования - то нужно будет разбираться уже людям - или искать виноватых или устраивать повторное голосование. Собственно это уже вопрос анализа и построение алгоритмов детектирования по сигнатурам атак.

yurial писал(а):
Как у вас все сложно...

А просто не бывает :)
Но на самом деле все не так сложно. Это только звучит страшно, команда программистов достаточно быстро такое сможет написать. Главное требования сформулировать к системе и написать толковое ТЗ. А кодеров найти - это уже второй вопрос.
Сначала нужно толково спроектировать систему.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 13:46 
Не в сети

Зарегистрирован: 23 сен 2011, 07:11
Сообщения: 42
yurial писал(а):
Описание системы в первом посте - опишите схему атаки.

Давайте отбросим практически все. Там в основном описан механизм, но он не имеет отношения к самой уязвимости.

Обратим внимание на такие строчки в описании:
1. Свой голос в голосовании, зашифрованный одноразовым ключем. Этот блок подписывается обычной персонализированной подписью пользователя.
2. По окончанию голосования все пользователи распространяют через сеть свои публичные ключи, в помощью которых можно расшифровать их голос.

В первом случае у нас имеется информация о том, кто голосовал и зашифрованный результат.
Во втором - ключ для расшифровки голосования (пусть и без привязки к пользователю).
Методом следования - у нас есть расшифрованный результат голосования, привязанный к голосу.
Значит система является открытой и не обеспечивает тайну голосования.

Если мы начнем мудрить (уберем подпись в голосе, но свяжем ключ для расшифровки с пользователем) - то опять же получим связку результата голосования (расшифрованного) с пользователем.

Если удалим привязку к пользователю совсем - не будет информации о том, легальный это голос или накрученный (можно скомпрометировать результаты голосования).

Если введем "мастер ключ шифрования", например разовый на голосование и один для всех пользователей. Т.е. все шифруют одним ключом, а дешифрует "сервер", то уязвимым становится мастер ключ - голосование настолько достоверно, на сколько мы доверяем данному ключу (что он не будет утерян или скомпрометирован). И вопрос - кто будет держать этот ключ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 14:38 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
povischuk писал(а):
Ситуация поменялась.
Нужно всего лишь следующее.
Вот есть публичный ключ, и к нему есть секретная пара.
Нужно, чтобы данные, зашифрованные одним и тем же публичным ключом (в разное время на разных машинах, допустим) - давали один и тот же результат. Другим ключом те же данные - другой результат.

То что вы описываете называется downgrade. Т.е. возврат к тому что было лет 50 назад если не раньше. Это если использовать именно шифрование с возможностью восстановления. А то что вы описываете называется "хэширование" которое я и описал в предыдущем письме.

povischuk писал(а):
Секретный ключ - он ведь в паре к публичному навсегда?
Или он (секретный ключ) - какой-то одноразовый?

В паре конечно. Но не обязательно в паре. Насколько я понимаю, можно создавать подключи и тогда будет несколько секретных ключей для одного открытого. Или наоборот. Я еще детально не изучал возможности GPG в этом плане.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 окт 2011, 14:43 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
povischuk писал(а):
Конечно, у голосования есть администратор - тот, кто его инициирует. Он, например, выбирает случайный узел для текущих официальных итогов, распределяет по сети список найденных злоумышленников. Все это он заверяет своей подписью - что это он сказал.

Думаю, даже без этого можно обойтись. Все это можно делать распределенно и автоматически. С таким "администратором голосования" все это будет прощще технически но сложнее в смысле надежности. Злоумышленникам достаточно найти этого администратора и официальных итогов голосования не будет.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 141 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 15  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB