Немного об электронном голосовании и наблюдении за ним

На mos.ru сегодня испытания системы электронного голосования, и зачем-то наблюдателям в безумном количестве система показывает хэши, которые и программисту, по сути, ничего не говорят, а обычного пользователя лишь пугают.

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

#wget «https://observer.mos.ru/1/observer/files?methodId=8» -O m8-$time.csv
#cmp m8-$prevtime.csv m8-$time.csv

Должна выдавать нечто вроде cmp: EOF on m8-$prevtime.csv что означает, что данные из скачанного ранее файла идентичны.

Всё это прекрасно и делается в несколько строк скрипта, но меня настораживает тот факт, что при заявленных 3.9 млн избирателей, при явке всего в 2%, файлик этот размером 1.15Гб и на гигабитном канале качается 28 секунд со скоростью 44.2MB/s. Получается в среднем 15кб на одного избирателя.

Электронное голосование будет в следующих регионах:

  • Москва — 7 440 740 избирателей;
  • Курская область — 911 232;
  • Мурманская область — 581 159;
  • Нижегородская область — 2 546 549;
  • Ростовская область — 3 193 794;
  • Ярославская область — 1 005 695;
  • Севастополь — 324 596.

Итого 16 003 765 избирателей, при явке, предположим, 50%, из которых 15% из-за новизны, помноженной на ковид, проголосуют в онлайне, получаем 1.2 млн, помножив на 15кб, потенциально имеем файлик (или файлики) в объеме 17 гигабайт.

Электронные наблюдатели будут пытаться как можно чаще выкачивать файл, и если таковых будет хотя бы сотня, с периодом выкачивания раз в 5 минут, выходит 100*17Гб*8бит/5мин/60сек и получаем без всего прочего потребность в канале в 45 Гбит у сервера, который отдает эти файлы. А если наблюдателей таковых будет не 100, а тысяча, что вполне возможно, то 450 Гбит. А АКАДО Телеком, на котором размещено московское тестирование, пишет, что может предоставлять каналы до 10 Гбит.

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

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

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

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

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

Регистрация избирателя

В документации написано:

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

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

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

Я понимаю, что разрабы, не парясь, запросили всё, но у избирателя возникнет логичный вопрос: нахрена избиркому даты рождения детей?

P.S. Кто-то хлестался из организаторов о том, что нашедшему уязвимость полагается 2 млн рублей. Ну вот полторы уязвимости я нашел. Первая — это прогноз о том, что в реальных выборах система ляжет по каналу. Вторая — что пользователь при таких запросах данных откажется голосовать. Но я не для денег это пишу и согласен на ящик короны лично из рук руководителя этого проекта 🙂