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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 06 июл 2011, 11:14 
Не в сети

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

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

Основа: прямая демократия

Способы работы с ЭЦП и шифрованием

Работа с ЭЦП и шифрованием будет производиться через специальную программу-агент, установленную на компьютере пользователя. При необходимости произвести какую-либо из операций по созданию подписи, шифрованию или расшифровке, на странице с сервера размещается специальный JavaScript код (AJAX), обращающийся по адресу 127.0.0.1 на соответствующий порт программы. В программу передается команда и данные, из программы - результат операции. В зависимости от настройки программы, она может спрашивать у пользователя подтверждение на некоторое или на все действия, запрашивать пароль и т.д.

Регистрация и авторизация

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

При необходимости авторизации, страница через JS код будет опрашивать программу работы с ЭЦП командой подписи каких-то данных (например "логин <дата>, <время>"). На основании этого будет определяться кто именно из пользователей заходит в систему.

Субъекты голосований

Все голосования будут производится в контексте субъектов голосования.

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

У субъекта голосования будут следующие свойства:
- название;
- идентификатор;
- фильтр голосующих (географический принцип или членство);
- ссылка на URL с сайтом данного субъекта;
- список пользователей, составляющих совет экспертов (в начале - только создавший субъект голосования. До выбора совета экспертов он занимается техническими вопросами);
- список голосований по выбору совета экспертов;

Голосование

Голосование в контексте субъекта голосования представляет собой набор документов и/или вопрос голосования и варианты выбора ответа.

Голосование, в процессе работы над ним, несколько раз меняет свой статус:

- "Инициировано советом" - такой статус у него сразу после создания;
- "Инициировано голосующими" - статус после инициации голосования кем-то из голосующих. Проводится обсуждение и уточнение текстов голосования;
- "Выдвижение голосующими" - процедура голосования, на которой простым большинством голосов данное голосование отправляется в совет экспертов;
- "Подготовка и обсуждение" - голосование обсуждается всеми голосующими. Уточняются тексты, обсуждается предмет голосования;
- "Установка параметров голосования" - обсуждение в совете типа голосования, срока поведения, количества голосов для принятия, кворум для данного голосования;
- "Запущено" - после окончания уточнения текстов, обсуждений голосование запускается. После этого проводится непосредственно голосование.
- "Завершено" - завершенное голосование;
- "Остановлено" - голосование, остановленное советом по каким-либо причинам;

Вывод результатов голосования

Результат открытого голосования выводится в виде:

"ФИО" - "Выбранный вариант" - "Персональная подпись выбора"

Результат тайоного голосования выводится в виде двух списков.
Список голосов:

"Одноразовый код" - "Выбранный вариант"

Список голосовавших:

"ФИО" - "Подпись пользователя о том что он участвовал в голосовании"

Процедура тайного голосования

1. Пользователь генерирует своей программой-агентом одноразовый идентификатор. В систему он передается в открытом виде для добавления в список голосов.

2. Пользователь генерирует с помощью ЭЦП расписку в том что принял участие в голосовании.

3. Пользователь выбирает вариант ответа и отсылает результаты голосования.

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

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

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Последний раз редактировалось Андрей 07 июл 2011, 09:55, всего редактировалось 1 раз.

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

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

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

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Отлично. Теперь я буду критиковать :)

Андрей писал(а):
1. Пользователь генерирует своей программой-агентом одноразовый идентификатор. В систему он передается в открытом виде для добавления в список голосов.


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

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


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

Вопрос. Если в списке голосов выбор пользователя изменен, как пользователь сможет доказать, что он проголосовал определенным образом?

В моей схеме пользователь расшифровывает Специальное Поле, где указан его выбор.


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
ameten писал(а):
Отлично. Теперь я буду критиковать :)

Андрей писал(а):
1. Пользователь генерирует своей программой-агентом одноразовый идентификатор. В систему он передается в открытом виде для добавления в список голосов.


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


Естественно.

ameten писал(а):
Андрей писал(а):
4. Пользователь размещает на странице личного кабинета одноразовый идентификатор (с введением случайного элемента в шифруемые данные) в подписанном И зашифрованном публичным ключем пользователя виде.


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

Вопрос. Если в списке голосов выбор пользователя изменен, как пользователь сможет доказать, что он проголосовал определенным образом?

В моей схеме пользователь расшифровывает Специальное Поле, где указан его выбор.

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

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей, что означают слова "на странице личного кабинета"? Мне не понятно.


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
ameten писал(а):
Андрей, что означают слова "на странице личного кабинета"? Мне не понятно.

Это значит, на странице, которая будет доступна только пользователю.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Кстати, если мы сразу будем использовать ЭЦП официально признанные в РФ, то голосования практически сразу можно будет считать официальными. Т.к. ЭЦП идентична собственной подписи. Т.е. если с помощью нашей системы по какому-то вопросу выскажется достаточное количество пользователей, этот можно будет считать официальным голосом народа.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей писал(а):
ameten писал(а):
Андрей, что означают слова "на странице личного кабинета"? Мне не понятно.

Это значит, на странице, которая будет доступна только пользователю.


Страница - это способ отображения данных. Данные должны где-то храниться. ГДЕ?


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

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


Я правильно понимаю, что это подписанный идентификатор голосования с помощью закрытого ключа ЭЦП пользователя?


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

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


Здесь мне не понятно, что шифруется, а что подписывается, и что шифруется и подписывается одновременно, и в каком подрядке - сначала шифруется, потом подписывается, или сначала подписывается, а потом шифруется.


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

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


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

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


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

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