1. Составление списков голосующих
  2. Вынесение инициатив на голосование
  3. Голосование
  4. Подведение итогов

Составление списков голосующих

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

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

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

Не будет большим преувеличением сказать, что нынешние власти России не будут в восторге от Росголоса и будут всеми силами стараться сорвать процесс голосования. Поэтому, несмотря на то, что мы просим приглашать только знакомых, мы попросим каждого регистрирующегося пройти процедуру проверки личности, которая будет включать сбор паспортных данных, региона регистрации и фото с паспортом в руке. До передачи этих данных на наш сервер они будут обязательно зашифрованы с использованием стойкого шифра (AES + RSA). Расшифровка и обработка этой информации будет производиться только на отдельных компьютерах, без подключения к сети. Мы очень серьезно относимся к утечкам информации и принимаем все меры для защиты вашей частной жизни.

Мы будем предпринимать различные шаги по выявлению людей:

  1. не являющихся гражданами России старше 16 лет
  2. не являющихся реальными людьми

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

Каждый избиратель генерирует пару RSA ключей, публичный ключ должен храниться избирателем в тайне, по возможности, на двух аппаратных носителях, например, Yubikey. Используя свой ключ, избиратель генерирует CSR (Certificate Signing Request), который отправляется владельцу его родительской ветви. После подтверждения запроса, избирателю выдается x.509 сертификат, подписанный ключем его родительской ветви. Этот сертификат будет использоваться для загрузки бюллетеней на сервер. Эти операции выполняются в удобном интерфейсе пользователя, но могут быть выполнены вручную с использованием openssl.

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

Выдвижение инициатив

Любой гражданин может инициировать рассмотрение любого вопроса. Чтобы не завалить сайт огромным количеством мусорных предложений, Росголос решил использовать финансовый фильтр. Чтобы инициатива была видна всем избирателям и по ней было назначено голосование, она должна быть поддержана как минимум 1%, но не более 10000 избирателей. Каждый из них должен будет подтвердить свою поддержку небольшим взносом в пользу Росголоса, в размере 2 евро. Евро используется, потому что именно в евро Росголос несет расходы, размещая серверы на территории ЕС. Этот небольшой взнос должен будет подтвердить серьезность намерений избирателя. В случае, если инициатива не наберет необходимое количество голосов, взносы не возвращаются.

Голосование

Схема голосования основывается на аддитивно гомоморфной системе Пэйе. Одно из основных достоинств системы – возможность суммирования зашифрованных голосов без необходимости расшифровки. Расшифровываются только конечные результаты, таким образом обеспечивается тайна голосования. Чтобы исключить возможность раскрытия тайны организатором голосования, приватный ключ разделяется при создании голосования между несколькими максимально независимыми друг от друга авторитетными лицами по схеме Шамира. Поскольку описание работы системы и весь код открыт в публичный доступ, всякий желающий сможет не только убедиться в его корректности, но и реализовать собственный клиент для системы, либо выполнить необходимые операции вручную, что гарантирует отсутствие закладок в ПО.

  1. Организатор голосования назначает уникальный идентификатор голосованию и формирует пару ключей Пэйе, приватный разделяется на части и раздается гарантам, после чего уничтожается, публичный выкладывается в сеть.
  2. Публикуется таблица избирателей, доступ к которой открыт всем желающим. Публикуется только номер избирателя и его публичный RSA ключ, без личной информации.
  3. Избиратель формирует бюллетень, состоящий из ячеек в количестве вопросов, поставленных на голосование, либо в количестве кандидатов. В каждую ячейку должно быть помещено зашифрованное публичным ключем значение в виде нуля или единицы, соответственно представляющее собой голоса против и за. Поскольку алгоритм Пэйе представляет сильное рандомизированное преобразование, понять по зашифрованному тексту ноль или единица находится в ячейке невозможно, это обеспечивает вместе с возможностью переголосования защиту от продажи голоса и голосования под давлением.
  4. Для невозможности помещения в ячейку данных, отличных от нуля и единицы, используется zero knowledge non-interactive доказательство, которое прикрепляется к каждому значению в ячейке. Кроме того, к бюллетеню прикрепляется доказательство того, что сумма голосов в бюллетене равна разрешенному для этого голосования количеству(если возможны множественные голоса "за" по разным вопросам).
  5. После того как избиратель проголосовал, готовый бюллетень загружается на сервер, используя аутентификацию по сертификату, выданному ранее на этапе регистрации. Избиратель может загружать любое количество версий бюллетеня до момента окончания голосования, учитываться будет только загруженный последним, что обеспечивает защиту от давления на избирателя. Сервер разрешает помещение бюллетеня в таблицу результатов, при условии, что все доказательства, прикрепленные на предыдущем этапе, верны. До окончания голосования загруженное в ячейку значение не публикуется, чтобы скрыть возможное изменение избирателем своего решения. При загрузке бюллетеня уникальный идентификатор голосования подписывается публичным RSA ключем, подпись также помещается в таблицу голосования, чтобы любой желающий мог проверить, что данные загрузил действительно тот избиратель, который указан в таблице.
  6. В результате получаем таблицу с данными избирателей и бюллетенями, загруженными ими.

Подведение итогов

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