Дисклеймер
Внимание, политика!
Задача
Создать систему голосования, удовлетворяющую следующим условиям:
- Теоретически неограниченное количество голосующих (среди жителей России)
- Строгое соблюдения принципа «один человек — один голос
- Максимально упростить участие для голосующих
С первым пунктом всё просто — это чисто технические требования.
Без накруток
Немного облегчает ситуацию то, что система должна быть не worldwide, а для России.
Какой у нас самый общедоступный и имеющийся у всех уникальный идентификатор?
Всё правильно, обычный российский паспорт.
Значит, именно по паспортным данным надо регистрировать пользователей.
Для решения задачи „без накруток“ необходимо проверять подлинность паспорта, но учитывать пункт 3 — максимальную простоту. Физически смотреть не можем — надо действовать по всей России, а ресурсы ограниченные.
Значит, надо доверить непосредственно верификацию тем, кто уже этим занимается. Таких структур достаточно много — берём, например, банковские переводы.
При банковском переводе (не путать с платежом по карте) банк сообщает ФИО плательщика, следовательно можем это автоматически распарсивать.
Но тут встаёт проблема — хранить персональные данные просто так нельзя, нужны лицензии и т.п., которые достаточно сложно получить за короткий срок.
Решение следующее: при регистрации по введённым данным (ФИО, дата рождения, телефон) генерируем некий хэш, который и запоминаем вместе с 3х-значным числом. Пользователь делает перевод нужной суммы (для числа 123 это будет 1.23р, или 11.23р или 101.23р — лишь бы последние три цифры совпадали) и мы получаем подтверждение, что пользователь тот, за кого себя выдаёт.
При этом, данные мы не храним — голосование тайное. Но есть индивидуальный хэш, по которому сам пользователь может проверить, правильно ли учтён его голос.
Но ходить в банк долго, интернет-банк есть не у всех…
Упрощаем
Самый главный пункт упрощения — всё можно сделать через Сеть, никуда ходить не обязательно.
Вспоминаем, что некоторые платёжные системы тоже умеют верифицироват пользователя — например, Яндекс.Деньги (как, в свою очередь, максимально простая для использования). +1 способ получен.
А для тех, кто совсем не хочет возьни ни с какими деньгами — достаточно сделать фотографию себя с паспортом и отправить. Команда волонтёров разбирает фотографии очень быстро, не дольше часа.
Безопасность
Паспортные данные — серьёзная штука и мало кто стремится указывать их в интернетах. Поэтому, несмотря на то, что сами данные не сохраняются, даже таблица хэшей и телефоны хранятся отдельно.
Это накладывает некоторые ограничения — например, можно сделать смс-рассылку по всей базе, но нельзя отправить смс кому-то конкретному (после того, как регистрация завершена), только если повторно запросить номер.
Площадки, предоставляющие функциональность непосредственно голосования, проходят проверку на соответствование требованиям создателей основной системы.
Итоги
Меньше чем за два месяца и практически без затрат получаем общероссийскую систему, в которой могут участвовать все граждане страны, без возможности накруток и фальсификаций.
В тестовом режиме система уже функционирует.
Боевой запуск ожидается 20-21 октября, регистрация открыта до 18 октября.
p.s.
Технические подробности постараюсь выяснить, если хабравыживу после данного топика.
p.p.s. В качестве экспертов в проекте участвуют такие люди как Илья Сегалович, Антон Носик и другие
Автор: norlin