Основная проблема голосований (выборов и референдумов) в том, что они фальсифицируемы. Не важно, пользуется кто-нибудь этой возможностью или нет. Предлагаю рассмотреть возможность организации голосований таким образом, чтобы вмешаться в подсчёт результатов было невозможно. По крайней мере таким образом, чтобы это не было очевидно.
Невозможно фальсифицировать открытое голосование. Голос каждого избирателя заносится в таблицу, после чего каждый может проверить, что лично его голос учтён верно. Чтобы сохранить проверяемость результатов и сохранить тайну голосования предлагается воспользоваться методикой хэширования данных. Будем хэшировать данные об избирателях и выбранных ими кандидатах.
Предлагаю рассмотреть алгоритм хэш-выборов на простом примере. В небольшом городе Большие Волки проходят выборы мэра. На должность претендуют 2 кандидата: Иванов и Сидоров. Население города 30 тысяч человек, из них 20 тысяч избирателей. Голосование полностью электронное.
Чтобы проголосовать каждый избиратель должен скачать специальное ПО (с открытым исходным кодом). В интерфейсе ПО следует ввести личные данные, выбрать кандидата и придумать пин код. ПО на основе личных данных и пин кода генерирует уникальную хэш строку, которую вместе с выбранным кандидатом передаёт на сервер. Также ПО передает на Госуслуги информацию о том, что избиратель проголосовал.
![Таблица 1. Информация кто и как голосовал. Нигде не хранится, никому не доступна. Таблица 1. Информация кто и как голосовал. Нигде не хранится, никому не доступна.](https://habrastorage.org/getpro/habr/upload_files/da8/4a1/38d/da84a138df2a61472ca90853e78837c9.png)
![Таблица 2. Информация кто голосовал. Хранится на сервере, доступна всем. Таблица 2. Информация кто голосовал. Хранится на сервере, доступна всем.](https://habrastorage.org/getpro/habr/upload_files/443/050/e2e/443050e2eb308f028ded801030aa98a8.png)
![Таблица 3. Обезличенная информация с выбранными кандидатами. Хранится на сервере, доступна всем. Таблица 3. Обезличенная информация с выбранными кандидатами. Хранится на сервере, доступна всем.](https://habrastorage.org/getpro/habr/upload_files/1f0/408/0ac/1f04080acf8cb4cefd8bffd64d605335.png)
Наличие пин кода гарантирует, что из хэш-строки невозможно будет получить информацию об избирателе. Основным требованием к алгоритму будет отсутствие коллизий, то есть алгоритм не должен генерировать одинаковые хэш-строки для разных избирателей.
После завершения выборов таблицы 2 и 3 будут опубликованы в общем доступе. Каждый избиратель сможет проверить свой голос, зная личную хэш-строку. Человек видит, что его голос опубликован верно, все его друзья, коллеги, родственники и знакомые подтверждают правильность подсчёта голосов. После этого человек доверяет выборам (референдуму) и уверен, что результат не фальсифицирован.
Единственным способом вмешаться в результаты голосования будет добавить в таблицу 3 хэш-строки, не соответствующие реальным избирателям. Чтобы исключить подобные манипуляции заполняется и публикуется таблица 2. В ней содержится список жителей города, имеющих право голосовать, и информация о том, кто из них голосовал. Содержимое таблицы также может быть проверено любым жителем города, а количество голосовавших людей должно совпасть с количеством хэш-строк в таблице 3.
Предложенный алгоритм голосования обойдется бюджету гораздо дешевле классического, позволит повысить доверие избирателей и создаст высококвалифицированные рабочие места. Вбросы, карусели и ошибки в подсчётах будут исключены. Минусом является невозможность сохранить в тайне сам факт голосования, что кажется вполне адекватной ценой.