Система тайного голосования с возможностью проверки

в 13:00, , рубрики: highload, безопасность, выборы, голосование, информационная безопасность, опросник, прозрачность, метки: , , , , ,
Дисклеймер

Внимание, политика!

Задача

Создать систему голосования, удовлетворяющую следующим условиям:

  1. Теоретически неограниченное количество голосующих (среди жителей России)
  2. Строгое соблюдения принципа «один человек — один голос
  3. Максимально упростить участие для голосующих

С первым пунктом всё просто — это чисто технические требования.

Без накруток

Немного облегчает ситуацию то, что система должна быть не worldwide, а для России.

Какой у нас самый общедоступный и имеющийся у всех уникальный идентификатор?
Всё правильно, обычный российский паспорт.

Значит, именно по паспортным данным надо регистрировать пользователей.

Для решения задачи „без накруток“ необходимо проверять подлинность паспорта, но учитывать пункт 3 — максимальную простоту. Физически смотреть не можем — надо действовать по всей России, а ресурсы ограниченные.
Значит, надо доверить непосредственно верификацию тем, кто уже этим занимается. Таких структур достаточно много — берём, например, банковские переводы.
При банковском переводе (не путать с платежом по карте) банк сообщает ФИО плательщика, следовательно можем это автоматически распарсивать.

Но тут встаёт проблема — хранить персональные данные просто так нельзя, нужны лицензии и т.п., которые достаточно сложно получить за короткий срок.
Решение следующее: при регистрации по введённым данным (ФИО, дата рождения, телефон) генерируем некий хэш, который и запоминаем вместе с 3х-значным числом. Пользователь делает перевод нужной суммы (для числа 123 это будет 1.23р, или 11.23р или 101.23р — лишь бы последние три цифры совпадали) и мы получаем подтверждение, что пользователь тот, за кого себя выдаёт.

При этом, данные мы не храним — голосование тайное. Но есть индивидуальный хэш, по которому сам пользователь может проверить, правильно ли учтён его голос.

Но ходить в банк долго, интернет-банк есть не у всех…

Упрощаем

Самый главный пункт упрощения — всё можно сделать через Сеть, никуда ходить не обязательно.
Вспоминаем, что некоторые платёжные системы тоже умеют верифицироват пользователя — например, Яндекс.Деньги (как, в свою очередь, максимально простая для использования). +1 способ получен.

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

Безопасность

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

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

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

Итоги

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

В тестовом режиме система уже функционирует.
Боевой запуск ожидается 20-21 октября, регистрация открыта до 18 октября.

p.s.

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

p.p.s. В качестве экспертов в проекте участвуют такие люди как Илья Сегалович, Антон Носик и другие

Автор: norlin

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


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