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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: 24 янв 2012, 11:15 
Не в сети

Зарегистрирован: 11 янв 2012, 11:51
Сообщения: 83
Начнем составлять описание процесса голосований.
Вопросы сверки и коммуникации в системе оставляем пока за скобками.
Очевидно, каждый голосующий генерирует в системе пару ключей. Каждая нода при установке софта тоже. Кстати, из текста ниже следует, что д.б. т.н. "сертификаты" голосующих и нод, в которых присутствует дополнительная информация о владельце ключа - ID по крайней мере.
Распишем четыре вида голосований.

1. Открытое голосование с отображением в процессе голосования только процентов принявших участие в нем.
Человек голосует на ноде, результат шифруется ключом ноды. Из ID голосующего убираем левый домен, получаем ID группы голосующих, его и ID ноды подписываем ключом ноды. В итоге получился зашифрованный известной нодой голос, известно кто (т.е. из какой группы) голосовал и на какой ноде. Сам голос скрыт шифрованием. Отправляем этот пакет в сеть.
В другой ноде пришедший голос запоминается в backup в том виде, как пришел, и в виде отдельной (важно) записи, добавляется вместе с ID ноды (базовый вариант подсчета) или вместе с ID группы голосующего в БД.
Проверку целостности принятого пакета нода не проводит, так как для этого ей нужны публичные ключи отправителя. Доверяем как есть – разбор полетов будем производить при наличии на то оснований и используя хранящиеся в backup (принятые) пакеты. Главное - сохранить в backup ВСЕ данные (которые будут использованы нодой) в таком виде, как пришли. Ну и логи вести (вопрос про протоколирование работы не сложен, но не сейчас). Это касается всех видов голосований и всех уровней подсчета голосов.
Когда нода получила всю нужную информацию для текущего уровня подведения итогов, она агрегирует данные, получает результат, добавляет ID ноды, подписывает и отправляет пакет в сеть. И так до окончательного подведения итогов.
Время, отведенное на голосование, кончилось. Требуется открывать голоса и подводить итоги. В системе требуется второй проход подсчета голосов.
Расшифровываем хранящийся в ноде голос проголосовавшего на ней человека. Вместе с ID группы голосовавшего и ID ноды подписываем его ключом ноды и отправляем в сеть.
В другой ноде пришедший голос запоминается в backup в том виде, как пришел, и заменяет существующую ранее в виде отдельной записи строку в БД, пополняя строку дополнительными данными (как проголосовал человек).
Обновив всю нужную информацию текущего уровня иерархии, нода агрегирует результат, вместе с ID ноды подписывает его, отправляет в сеть, и так далее.
Возможна (или принята как принцип работы системы) отправка нодой неполной (промежуточной) информации по ходу голосования. При этом важно задать (и регулировать с целью регулирования трафика) временнЫе или другие параметры периода выдачи промежуточной информации в сеть.

2. Открытое голосование с отображением всех результатов в процессе голосования.
Человек голосует на ноде, голос вместе с ID группы голосующего и ID ноды подписывается ключом ноды. Получился пакет, в котором указано кто голосовал (т.е. принадлежность к группе), как и на какой ноде голосовал. Отправляем этот пакет в сеть. Все остальное – как и для п.1 , но без второго прохода.

3, 4. Закрытое голосования двух типов - с и без отображения результатов в процессе голосования.
Сам процесс ничем не отличается от описанного в п.1 и п.2. Отличается только начало – требуется «отвязать» голос от человека, который его подал. Так, чтобы однозначно установить волеизъявление голосующего было невозможно.
Как всегда, человек голосует на ноде, результат, для разных типов голосований, шифруется ключом ноды или не шифруется вовсе. Добавляем ID группы голосующего, ID и подпись ноды, Все как всегда, но.
И вот тут отличие закрытого голосования. Если взять ID и ключ СЛУЧАЙНОЙ ноды из группы, то установить достоверно, где проводилось голосование, окажется невозможным, а значит невозможно и определить, кто там голосовал (понятно только, что голосовал кто-то из данной группы голосующих).
Для обеспечения такого варианта решения проблемы после объявления закрытого голосования (или раньше - надо думать, в чем разница) нода набирает у себя в БД (запрашивает, например) определенное кол-во ID и ключей от соседних по группе нод. Например, штук 100 (как установить порог - вопрос). После этого она готова взять случайный ID, подписать соответствующим случайным ключом и отправить голос в сеть. Во втором проходе (если он нужен, см. п.2) зашифрованый голос человека, проголосовавшего здесь, извлекается из памяти ноды (или где он там хранился) и расшифровывается. Затем, как всегда, вместе с ID группы голосующего, голос подписывается случайным ключом случайной ноды (вместе с ее ID, разумеется), и отправляется в сеть.
Ну а далее – как подробно описано в п.1 и п.2.


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

Зарегистрирован: 24 сен 2011, 23:06
Сообщения: 395
IgorK писал(а):
Кстати, из текста ниже следует, что д.б. т.н. "сертификаты" голосующих и нод, в которых присутствует дополнительная информация о владельце ключа - ID по крайней мере.
Хорошо бы расписать поподробнее. Как вариант это могут быть составные сертификаты. Отдельные для персоны, права участия в субъекте, (возможно) участия в голосовании, принадлежности ноды, доверия ноде.
IgorK писал(а):
Человек голосует на ноде, результат шифруется ключом ноды.
Мне кажется лучше если подписанный голос передаётся в открытом виде демону на собственную или доверенную ноду. Вне зависимости от типа голосования. Дело в том, что подразумевается несколько автоматических действий и не кошерно запрашивать каждый раз у пользователя подпись. В часности при обнаружении вброса голосов в тайном голосовании инициируется переголосование. Злоумышленник может просто "задолбать" вбросами обычных голосующих. Это несколько усложнит систему, но сделает её проще в использовании.

ПС. Кажется это не всё но далее вечером постараюсь продолжить из дома.

_________________
Во вселенной нет общества в котором "Vox populi, vox Dei" не переводилось бы "О, Боже, как мы в это вляпались".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 янв 2012, 15:40 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Начал писать ответ и запутался. Что-то вы не то наворотили с этими подсчетами.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 янв 2012, 16:22 
Не в сети

Зарегистрирован: 11 янв 2012, 11:51
Сообщения: 83
Dim писал(а):
IgorK писал(а):
Кстати, из текста ниже следует, что д.б. т.н. "сертификаты" голосующих и нод, в которых присутствует дополнительная информация о владельце ключа - ID по крайней мере.
Хорошо бы расписать поподробнее. Как вариант это могут быть составные сертификаты. Отдельные для персоны, права участия в субъекте, (возможно) участия в голосовании, принадлежности ноды, доверия ноде.

1. Насколько я понял ранее из общения (м.б. ошибаюсь, в любом случае не слышал другое), ключи в вашей системе "голые". Термин же "сертификат" подразумевает "публичный ключ" + сведения о владельце.
В любом случае в предложенных мной вариантах работы СГ у голосующего и у программной точки голосования (узла, ноды - неважно как назвать) должны быть атрибуты (записанные в явном виде в сертификаты и легко оттуда извлекаемые, например). У голосующего - его идентификатор (или атрибуты в другом виде - неважно), однозначно "приписывающий" его к определенной группе голосующих. Примеры групп: мужщина/женщина или УИК_NNN.ТИК_MM.ОИК_ОО.ЦИК. Точку голосования определяем в группу нод по уникальному ID вида NNN.MMM.OOO.PPP.RRR. Другая информация из сертификата в этом описании не используется.

Исходя из написанного, поясняю фразы из описания
1. ... Человек голосует на ноде ...
понятно, я думаю. Хорошо, не на ноде а в своей "точке голосования".

2. ... голос вместе с ID группы голосующего и ID ноды подписывается ключом ноды....
голос - написанный в тексте ответ на вопрос голосования. Например, "да" или "нет".
ID группы голосующего извлекается из атрибутов голосующего (из сертификата). Например, в виде 1234.4345.54.565.44, где цифры обозначают соответственно номера УИК, ..., ЦИК, в системе которых голосует этот человек.

Получился текст: да 1234.4345.54.565.44

Далее добавляем ID точки голосования (например, 43.777.437.587.32).

Получился текст - итог:
да 1234.4345.54.565.44 43.777.437.587.32

Этот тект подписывается ключом точки голосования. Получится, например, так (упрощаю подпись):

да 1234.4345.54.565.44 43.777.437.587.32
begin pgp
валпдвалплавыждавыжэаждвыоавыоалдвыоа
end pgp

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

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

Dim писал(а):
IgorK писал(а):
Человек голосует на ноде, результат
шифруется ключом ноды .
Мне кажется лучше если подписанный голос передаётся в открытом виде демону на собственную или доверенную ноду. Вне зависимости от типа голосования. Дело в том, что подразумевается несколько автоматических действий и не кошерно запрашивать каждый раз у пользователя подпись. В часности при обнаружении вброса голосов в тайном голосовании инициируется переголосование. Злоумышленник может просто "задолбать" вбросами обычных голосующих. Это несколько усложнит систему, но сделает её проще в использовании.

"результат шифруется ключом ноды"
Софт сам шифрует. Разве требуется участие человека в этом? Или я чего-то недопонимаю? Остальное из фразы давайте пока оставим на "потом".

Вообще, я не дока в криптографии. Когда-то активно использовал PGP в электронной почте, потом, было время, возился с Windows - сетрификатами. Может я чего неправильно написал в принципе в этом отношении?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 янв 2012, 18:09 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
IgorK писал(а):
Но основная задача текста была уйти от вашей идеи (условно) "кидать в сеть ключи" для чего-то там. Ну и вообще закрепить хоть какой-то вариант на бумаге.

Не надо уходить от нашей идеи.
И как же ваша система будет работать без "кидания ключей в сеть"?
Хоть какой-то вариант на бумаге закреплять не надо - интернет просто кипит ими.

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


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

Зарегистрирован: 11 янв 2012, 11:51
Сообщения: 83
yurial писал(а):
И как же ваша система будет работать без "кидания ключей в сеть"?

В посте выше я подробно написал, "как же ВАША система будет работать без "кидания ключей в сеть".
yurial писал(а):
Хоть какой-то вариант на бумаге закреплять не надо - интернет просто кипит ими.

Я не знаю, чем там кто кипит, но Вашего варианта на бумаге я не читал.
А вообще в интернете, который кипит, есть вики, а там - статья про флуд. Почитайте, интересно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 янв 2012, 20:47 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
IgorK писал(а):
В посте выше я подробно написал, "как же ВАША система будет работать без "кидания ключей в сеть".

IgorK писал(а):
нода набирает у себя в БД (запрашивает, например) определенное кол-во ID и ключей от соседних по группе нод.

Не зачтено.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 янв 2012, 00:36 
Не в сети

Зарегистрирован: 24 сен 2011, 23:06
Сообщения: 395
IgorK писал(а):
Софт сам шифрует. Разве требуется участие человека в этом? Или я чего-то недопонимаю?
Недопонимаете. Каждый раз подписывая что-то пользователь вводит кодовое слово. Т.о. машина убеждается, что данные подписывает человек которому принадлежит подпись.
Транспортный ключ не требует ввода кодового слова. Но демон получив сообщение с выбранным вариантом должен быть уверен в том, что это сообщение подписано владельцем ключа от имени которого он и будет работать по соответствующему протоколу голосования.

_________________
Во вселенной нет общества в котором "Vox populi, vox Dei" не переводилось бы "О, Боже, как мы в это вляпались".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 янв 2012, 03:01 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Dim писал(а):
Но демон получив сообщение с выбранным вариантом должен быть уверен в том, что это сообщение подписано владельцем ключа, от имени которого он и будет работать по соответствующему протоколу голосования.

Лучше сказать так: должен иметь возможность "доказать" владельца голоса. Я допускаю возможность голосования на чужой ноде (если конечно доверяю ей).

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 янв 2012, 09:16 
Не в сети

Зарегистрирован: 24 сен 2011, 23:06
Сообщения: 395
yurial писал(а):
Лучше сказать так: должен иметь возможность "доказать" владельца голоса. Я допускаю возможность голосования на чужой ноде (если конечно доверяю ей).
Доверенные ноды в любом случае будут. Например, в семье могут голосовать через одну ноду все члены семьи. С одного компа. Или с разных компов, но обменом и подсчётами будет заниматься сетевое хранилище включенное постоянно.

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

_________________
Во вселенной нет общества в котором "Vox populi, vox Dei" не переводилось бы "О, Боже, как мы в это вляпались".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

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


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

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


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

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