Проверяемое электронное голосование

в 21:28, , рубрики: криптография, электронная демократия, электронное голосование, электронное правительство, метки: , ,

Проверяемое электронное голосование

За последние дни было три поста на хабре, посвященных электронному голосованию:
Система распределенного голосования на FIDO/FTN
Про электронное тайное голосование
Открытое электронное голосование (доказательство от противного),
но полноценного решения, обеспечивающего тайное электронное голосование, результаты которого мог бы проверить каждый избиратель, найдено не было.

Как мне кажется, такое решение есть.

Задача

Электронное голосование должно отвечать следующим условиям:

  • Анонимность — никто не должен иметь возможность соотнести конкретный голос с конкретным избирателем.
  • Открытость — результаты голосования должны быть доступны всем.
  • Верифицируемость — каждый избиратель должен иметь возможность проверить свой голос. Любой человек должен иметь возможность посчитать итоговые результаты и проверить на отсутствие «вбросов».

Ключевой технологией для решения поставленной задачи является слепая подпись — способ подписания тела зашифрованного сообщения, без его расшифровки.

Порядок голосования

  1. Избиратель генерирует пару ключей и регистрирует свой открытый ключ в ЦИК. По результатам регистрации в общий доступ выкладывается список адресов избирателей. Примерно такой:
    Проверяемое электронное голосование
    Уже на этом этапе каждый может проверить, что он внесен в списки, в его квартире не прописалось еще 146 человек, а по соседству за ночь не вырос новый микрорайон.
  2. Избиратель генерирует свой бюллетень вида:
    Проверяемое электронное голосование
    Далее он шифрует бюллетень (ключ может быть любой), подписывает его своим закрытым ключом и отправляет в ЦИК
  3. ЦИК проверяет подпись. Удостоверившись, что эта подпись есть в списке избирателей, подписывает бюллетень слепой подписью и отправляет его избирателю. После этого ЦИК в публичном списке избирателей инкрементирует счетчик голосующих:
    Проверяемое электронное голосование
    Здесь избиратель может удостоверится, что его посчитали.
  4. Избиратель расшифровывает бюллетень, проверяет подпись ЦИКа и отправляет расшифрованный, подписанный ЦИКом бюллетень обратно в ЦИК.
  5. ЦИК получает бюллетень, проверяет валидность своей подписи, шифрует его и сразу выкладывает в общий доступ пару [случайное число бюллетеня (из пункта 2), зашифрованный бюллетень]. Бюллетень шифруется ЦИКом, ключ шифрования хранится втайне до конца голосования.
  6. После окончания голосования публикуется ключ к шифру бюллетеней.
Что имеем в результате?

В общем доступе есть:

  • Список адресов избирателей из пункта 3. Каждый может проверить количество проголосовавших, убедиться в отсутствии «вбросов».
  • Список бюллетеней из пункта 5. Каждый избиратель может найти свой голос по случайному числу, которое он генерировал на этапе создания бюллетеня. Любой человек может посчитать итоги голосования и сравнить количество бюллетеней с количеством проголосовавших избирателей.

Ни на одном из этапов ЦИК или кто-то другой не может сопоставить избирателя и его голос. В процессе голосования можно отслеживать изменения в публичных списках, выявляя подозрительную динамику изменений. Каждый избиратель может проверить правильно ли учтен его голос. Любой может самостоятельно посчитать итоги голосования. Приписки можно выявить. Чуров рыдает, забившись под стол.

Как думаете, сработает?

Автор: AlexSky

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js