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

Электронная системы голосований через интернет
Текущее время: 28 апр 2024, 10:02

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




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 29 июн 2011, 01:36 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Хочу рассмотреть эту узкую тему

Желаемые свойства:
1. Один человек - один голос.
2. Голосовать можно несколько раз во время проведения голосования, но учитывается только последний выбор.
3. Тайное голосование.

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

Голосование: вопрос, варианты ответов (конечное число, варианты определяются предварительно). Каждое голосование имеет Уникальный Серийный Номер Голосования (УСНГ). УСНГ передается по каналам связи. Варианты ответов и их числовые представления (ЧПВО) известны всем. Они передаются по каналам связи.

Процесс голосования:
Пользователю выдается Уникальный Одноразовый Идентификатор Пользователя в Голосовании (УОИПГ), который используется только в этом голосовании. УОИПГ передается по каналам связи. Пользователь выбирает произвольное число, какое захочет, назовем его Секрет Пользователя в Голосовании (СПГ). СПГ НЕ передается по каналам связи в первозданном виде. Теперь пользователь указывает вариант ответа, за который он голосует, то есть выбирает определенный ЧПВО.

Составляем таблицу результатов голосования:
1. Уникальный Серийный Номер Голосования (УСНГ)
2. Уникальный Одноразовый Идентификатор Пользователя в Голосовании (УОИПГ)
3. Числовое Представление Варианта Ответа (ЧПВО)
4. Специальное Поле.

Столбцы 1,2,3 используются для подведения итогов голосования.

Столбец 4 - используется для проверки самим пользователем правильности стобцов 1,2,3.

СП - это зашифрованное поле, состоит из (УСНГ, УОИПГ, ЧПВО, логин, СПГ). Этот набор шифруется приватным ключом, используемым для шифрования. Расшифровать его может только сам пользователь. Зашифрованное Специальное Поле передается по каналам связи.

После проведения голосования, база данных с результатами отчуждается из системы и выкладывается в открытый доступ. Любой человек может подвести итоги голосования. Тайна голосования сохраняется, так как УОИПГ действует только для данного голосования.

Проверка своего голоса: скачиваем базу данных, ищем свою запись по УОИПГ, расшифровываем Специальное Поле. Если получилось восстановить его структуру (УСНГ, УОИПГ, ЧПВО, логин, СПГ), то оно не модифицировалось. Можно продемонстрировать заинтересованным лица, что имено этот голос учтен правильно. Для того, чтобы все проверяли свои голоса по одной и тоже базе, с ней может распространяться и контрольная сумма.

Невозможно выдать один и тот же Уникальный Одноразовый Идентификатор Пользователя в Голосовании нескольким пользователям, так как иначе будет несколько записей в базе данных с одинаковыми УОИПГ, что легко проверяется, либо одна запись, Специальное Поле которой сможет расшифровать только один из пользователей.

Описанная выше схема работает при следующих условиях:
1. Никто не запоминает соответсвия УОИПГ <--> логин
2. УОИПГ могут получить только пользователи, прошедшие аутентификацию, то есть не существует УОИПГ, которые бы не соответствовали реальному пользователю системы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2011, 11:09 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Вот здесь описан мой вариант: http://облачная-демократия.рф/forum/viewtopic.php?p=224#p224

Он кажется проще вашего, но позволяет делать все что нужно.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2011, 18:58 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
По результатам обсуждения с Андреем я делаю поправки в свой пост:

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2011, 19:50 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Я все еще не понимаю зачем.

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

Мой пример...
Пользователь подписывает "одноразовый код" своим ключем и передает в систему свой код, его подпись, свой голос и подпись своего голоса. В выводимом списке отображается одноразовый код и голос по нему. Пользователь может по своему коду проверить как он проголосовал. Гарантом неизменности кода является его подписанный вариант этого кода на личной странице. Далее. Т.к. вместе с голосом будет передаватьсе еще и грубо говоря текст "Субъект голосования такой-то, голосование такое-то, пользователь такой-то, голос - такой-то". Из-за наличия подписи пользователя для этого текста будет гарантия в системе что либо его отправил сам пользователь, либо его секретный ключ и ЭЦП скомпрометированы (т.е. что его ключем воспользовался посторонний). Если пользователь заявляет о компрометации после проведения голосования, а не заранее, обнаружив это самостоятельно, и такое повторяется ни один раз - это ведет к усилению мер безопасности для данного пользователя (дополнительные пароли, жесткие правила на пароль, карточки кодов и т.д.).

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2011, 20:16 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей писал(а):
Вот смотрите ваш пример...
Пользователь шифрует своим закрытым ключем это поле. Расшифровать он может его лишь своим-же закрытым ключем. Потом в присутствии кого-то третьего, кому он должен доказать что это не его голос, он использует другой - совершенно левый ключ для расшифровки (т.к. ключ секретный никто не сможет проверить тот-ли это ключ) и, естественно, ничего не расшифровывает. На основании этого он начинает кричать что голос не его и зашифрован (подписан) не его ключем.


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

Андрей писал(а):
Мой пример...
Пользователь подписывает "одноразовый код" своим ключем и передает в систему свой код, его подпись, свой голос и подпись своего голоса. В выводимом списке отображается одноразовый код и голос по нему. Пользователь может по своему коду проверить как он проголосовал. Гарантом неизменности кода является его подписанный вариант этого кода на личной странице. Далее. Т.к. вместе с голосом будет передаватьсе еще и грубо говоря текст "Субъект голосования такой-то, голосование такое-то, пользователь такой-то, голос - такой-то". Из-за наличия подписи пользователя для этого текста будет гарантия в системе что либо его отправил сам пользователь, либо его секретный ключ и ЭЦП скомпрометированы (т.е. что его ключем воспользовался посторонний). Если пользователь заявляет о компрометации после проведения голосования, а не заранее, обнаружив это самостоятельно, и такое повторяется ни один раз - это ведет к усилению мер безопасности для данного пользователя (дополнительные пароли, жесткие правила на пароль, карточки кодов и т.д.).


Раз подписывает - значит любой может проверить подпись, да? Где тогда тайна голосования?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2011, 20:40 
Не в сети

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


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


Погодите. Что-то не стыкуется.
А если мы прогоним его липовый ключ по всем записям и обнаружится что ни к одной он не подходит - что это будет означать? То что он не голосовал? Или что? А если он при этом утверждает что голосовал? Что это будет означать? И что проверять?

Кроме того, как вы будете искать владельца записи если у нас голосование тайное?

ameten писал(а):
Андрей писал(а):
Мой пример...
Пользователь подписывает "одноразовый код" своим ключем и передает в систему свой код, его подпись, свой голос и подпись своего голоса. В выводимом списке отображается одноразовый код и голос по нему. Пользователь может по своему коду проверить как он проголосовал. Гарантом неизменности кода является его подписанный вариант этого кода на личной странице. Далее. Т.к. вместе с голосом будет передаватьсе еще и грубо говоря текст "Субъект голосования такой-то, голосование такое-то, пользователь такой-то, голос - такой-то". Из-за наличия подписи пользователя для этого текста будет гарантия в системе что либо его отправил сам пользователь, либо его секретный ключ и ЭЦП скомпрометированы (т.е. что его ключем воспользовался посторонний). Если пользователь заявляет о компрометации после проведения голосования, а не заранее, обнаружив это самостоятельно, и такое повторяется ни один раз - это ведет к усилению мер безопасности для данного пользователя (дополнительные пароли, жесткие правила на пароль, карточки кодов и т.д.).


Раз подписывает - значит любой может проверить подпись, да? Где тогда тайна голосования?


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

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

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей писал(а):
Погодите. Что-то не стыкуется.
А если мы прогоним его липовый ключ по всем записям и обнаружится что ни к одной он не подходит - что это будет означать? То что он не голосовал? Или что? А если он при этом утверждает что голосовал? Что это будет означать? И что проверять?


Давайте еще раз. Случаи:

1. Пользователь нашел свою запись в БД, проверил - а) вабор совпал, с тем что он выбирал. Отлично. б) Не совпало с его выбором, но он может расшифровать СП - у него есть доказательство, что его выбор учтен неверно. Или доказать, что его голос учтен верно, если кто-то не верит в то, что он проголосовал именно так, а не иначе.

2. Пользователь нашел свою запись в БД, проверил - вабор НЕ совпал, с тем что он выбирал. Он пытается расшифровать запись. Не получается. Ему говорят, что запись не его. Объявляем, что ищем владельца этой записи. Если находится пользователь, который может расшифровать, то запись действительно не принадлежит первому пользователю. К нему применяются санкции. Если не находится, то, значит, с некоторой вероятностью, была попытка изменить выбор пользователя.

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

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


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

В моем случае, если системы с открытым исходым кодом и никто не запоминает соответсвия УОИПГ <--> логин (это гарантируется открытостью исходного кода), то без желания пользователя нельзя узнать, как он проголосовал.


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Так. Давайте с самого начала по пунктам. Я опишу какие задачи необходимо решить, а вы опишете как это решается тем способом, который вы предлагаете.

1. Тайность голосования.

С этим, вроде-бы все в порядке.

2. Возможность проверить самим пользователем что его голос учелся так как он голосовал.

В вашей системе получается что если пользователь упрется, то у нас не будет никакой возможности доказать что он голосовал именно так, а не иначе. Это сразу приведет к претензиям и к утверждениям что система ненадежна.

3. Возможность любому проверить что в голосовании участвовали только реальные пользователи и была возможность с ними связаться для того что-бы спросить правильно-ли учелся его голос.

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

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2011, 22:03 
Не в сети

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

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

Это намного лучше чем полная тайность, но совершенная бесконтрольность, предлагаемая вами.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2011, 22:28 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей писал(а):
ameten писал(а):
В том-то и дело. В вашем случае потенциально можно связать выбор с пользователем без его ведома, так как вся необходимая информация есть в системе, и должна там находиться, чтобы иметь возможность проверять правильноть голосования.

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


Можно ставить галочку в перчатках. Так что есть тайна голосования. Кто хочет себе ее обеспечить, обеспечивает.

Андрей писал(а):
Это намного лучше чем полная тайность, но совершенная бесконтрольность, предлагаемая вами.


Почему бесконтрольность? Я объяснил, как будет проходить контроль.


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

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


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

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


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

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