Проект "Свободные голосования"
http://gplvote.andyhost.ru/forum/

Текущий вариант системы по моему разумению
http://gplvote.andyhost.ru/forum/viewtopic.php?f=21&t=59
Страница 1 из 5

Автор:  Андрей [ 06 июл 2011, 11:14 ]
Заголовок сообщения:  Текущий вариант системы по моему разумению

Решил здесь описать систему так, как я ее понимаю на текущий момент...

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

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

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

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

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

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

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

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

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

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

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

Голосование

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор:  Андрей [ 06 июл 2011, 11:19 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

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

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

Автор:  ameten [ 06 июл 2011, 21:48 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

Отлично. Теперь я буду критиковать :)

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


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

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


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

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

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

Автор:  Андрей [ 07 июл 2011, 09:50 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

ameten писал(а):
Отлично. Теперь я буду критиковать :)

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


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


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

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


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

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

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

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

Автор:  ameten [ 07 июл 2011, 19:56 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

Андрей, что означают слова "на странице личного кабинета"? Мне не понятно.

Автор:  Андрей [ 07 июл 2011, 21:24 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

ameten писал(а):
Андрей, что означают слова "на странице личного кабинета"? Мне не понятно.

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

Автор:  Андрей [ 07 июл 2011, 21:27 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

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

Автор:  ameten [ 07 июл 2011, 21:30 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

Андрей писал(а):
ameten писал(а):
Андрей, что означают слова "на странице личного кабинета"? Мне не понятно.

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


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

Автор:  ameten [ 07 июл 2011, 21:52 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

Андрей писал(а):
"Подпись пользователя о том что он участвовал в голосовании"


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

Автор:  ameten [ 07 июл 2011, 21:58 ]
Заголовок сообщения:  Re: Текущий вариант системы по моему разумению

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


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

Страница 1 из 5 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/