Введение в курс дела

На мартовских выборах президента я был официальным наблюдателем за федеральным электронным голосованием с доступом к ноде наблюдения. Совместно с коллегами мы обнаружили, что количество голосов в официальных протоколах на 211 тысяч больше, чем было загружено избирателей в систему ДЭГ. То есть в онлайн голосовании в некоторых регионах явка превышает 100 процентов. Как так получилось?

Кто я такой?
Чтобы понять, о чём будет идти речь дальше и чем вообще занимается наблюдатель за электронным голосованием в нынешних реалиях, нужно кратко объяснить процесс наблюдения. Важно не путать федеральный ДЭГ и Московский, у них разная архитектура, поэтому моя критика касается только федеральной системы. Если опустить сложности получения официальных документов, то наблюдателю дается доступ к двум вещам — порталу и ноде наблюдения.

  • Портал наблюдения — это сайт в интернете, куда Ростелеком загружает данные о ходе голосования, как в виде готовой визуализации, так и в виде исходных данных о работе системы ДЭГ (они же дампы). Проверить, связаны ли эти данные непосредственно с идущим голосованием не представляется возможным, предполагается просто доверять организаторам. Вдобавок были прецеденты, когда подписанные дампы с данными подменяли задним числом. Было даже судебное разбирательство по этой теме, но вы сами понимаете, какое решение вынес российский суд.

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

Я как раз работал с нодой, скачивал с неё данные для последующего анализа, чтобы найти аномалии. Поскольку у ДЭГа во время работы на президентских выборах был крупный сбой, все моё внимание было приковано к нему. И только спустя несколько месяцев после выборов Виктор Толстогузов привлёк моё внимание к тому, что данные о количестве избирателей разнятся в дампах работы электронного голосования и в официальных документах. Я копнул глубже и очень удивился тому, что нашёл.

К делу!

Оказалось, что в выгрузках как с ноды, так и с портала на 211 тысяч голосов больше, чем избирателей, что делает в некоторых регионах явку выше 100 процентов. И сразу возникает очевидный вопрос: это вброс? После расследования оказалось, как говорил классик, что это кое-что получше, чем вброс — это рисунок вброса.

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

Регион

Избирателей в дампе

Избирателей в протоколе

Разница

Алтайский край

238299

276808

38509

Камчатский край

5125

44042

38917

Калининградская область

7684

67794

60110

Новосибирская область

188922

245767

56845

Томская область

73048

90049

17001

Сумма

513078

724460

211382

Количество голосов в протоколе и в дампах приблизительно совпадает, разнятся только избиратели. Например, в Камчатке всего 5125 избирателей в дампе, а это в 8,8 раз меньше, чем заявлено в итоговом протоколе. Но если посмотреть по голосам в дампах, то их там те же 40 тысяч, что и в официальных данных. Похоже, что это не добавили голоса сверху, а скорее убрали избирателей. Но как такое возможно?

С очень высокой вероятностью это была банальная техническая ошибка, а не попытка махинации. Об этом говорят относительно малые объёмы и локальное распределение "исчезнувших" граждан по регионам. По моим инсайдам от разработчиков ДЭГ, это был сбой загрузки списка избирателей в блокчейн; программа некорректно отработала и просто не залила часть базы. Верить этой версии? На самом деле ответ на этот вопрос не так уж важен, мы это не сможем достоверно проверить, здесь самое важное и интересное другое.

Ошибка показывает истинную архитектуру ДЭГ
Ошибка показывает истинную архитектуру ДЭГ

Ошибки системы зачастую говорят о ней намного больше, чем её документация или заявления разработчиков. Что нам показывает факт возможности присутствия в ДЭГ голосов больше, чем избирателей? Это значит, что они в блокчейне существуют отдельно друг от друга без каких-либо прочных связей, т. к. очевидно, голос не может взяться из ниоткуда без избирателя. И это уже очень весомый аргумент в пользу того, что реальная архитектура ДЭГ не завязана на открытый наблюдателям блокчейн, что открывает пространство для гипотез о вмешательствах в выборы.

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

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

Я построил схему бизнес-процессов федерального ДЭГ с учётом открывшихся фактов архитектуры для того, чтобы понять, где может быть уязвимость.

Чтобы разобраться, как можно реализовать реальный вброс, я построил схему бизнес-процессов ДЭГ, используя свой многолетний опыт реверс-инжиниринга и внешние консультации со знающими людьми. Я сознательно не прибегал к официальной документации, потому что в ней может быть написано всё что угодно, и непонятно, как она вообще коррелирует с реальностью. Более того, это ГОСТ 34, который, по слухам, даже не дописан до конца уже после многолетней эксплуатации системы. Поэтому реверс-инжиниринг — наше всё.

Схема основных бизнес-процессов ДЭГ (Будет дополняться)
Схема основных бизнес-процессов ДЭГ (Будет дополняться)

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

Уникальный идентификатор избирателя для наблюдателя различен между моментами выдачи и приемки бюллетеня
Уникальный идентификатор избирателя для наблюдателя различен между моментами выдачи и приемки бюллетеня

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

Учитывая все эти обстоятельства, возникает широкое поле для скрытого вмешательства организаторов в выборы.

Инструкция по вбросу

Я посоветовался с несколькими аналитиками ДЭГ и разработчиками подобных систем и пришёл к следующей схеме потенциального вброса голосов, исходя из вышеописанных фактов. Неформально мне подтвердили, что такая схема манипуляции в теории возможна.

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

Ростелеком может редактировать списки избирателей незаметно для наблюдателей
Ростелеком может редактировать списки избирателей незаметно для наблюдателей

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

Для наглядности приведу пример:
Представим, у нас есть выборы с 10 реальными избирателями. Это количество заливают в блокчейн и в базу Ростелекома. Начинается голосование, но из этих 10 голосуют только 5, то есть явка 50 процентов. Эти 5 голосов видны для наблюдателей в блокчейне. Для коррекции результатов кто-то добавляет в базу РТК ещё 5 избирателей, и они тоже голосуют, то есть явка получается уже 100 процентов. Со стороны блокчейна обнаружить вмешательство невозможно из-за отсутствия связи между голосом и избирателем, т. е. мы не понимаем, пришёл ли голос от избирателя, который был в списках изначально или нет. Нужная явка достигнута, но на самом деле избирателей в сумме 15, а не 10. Чтобы совсем не оставлять следов, можно перед добавлением "мертвых душ" убрать из списка избирателей такое же количество непроголосовавших.

Ну и выводы:

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

Чтобы устранить возможность такого типа вбросов, нужно, как минимум, всю работу с избирателями проводить через блокчейн, а не через свою внутреннюю базу данных, которая недоступна наблюдению. И, разумеется, формировать идентификаторы избирателей (GUID) из одного места, чтобы можно было понять, что тот же избиратель, который получил бюллетень, тем же бюллетенем и проголосовал. Но это всё полумеры.

Чтобы хотя бы начать говорить о честности ДЭГ, нужен, как минимум, открытый код и гарантия того, что именно он используется в ходе голосования. Но пока этого нет как в Московском ДЭГ, так и в федеральном.

Спасибо за внимание!

Комментарии (42)


  1. ifap
    03.09.2024 10:53
    +4

    Первая мысль администратора ДЭГ после прочтения статьи: черт, спалили! Вторая мысль: постойте, все можно было сделать так просто?! А мы-то схемы мутили... ;)


    1. konst90
      03.09.2024 10:53

      Пила Чурова с 2011 года намекает, что да, можно.


      1. Harwest
        03.09.2024 10:53
        +3

        Вы таки правы на все 146% )


  1. Skipy
    03.09.2024 10:53
    +6

    А я с момента появления первой системы ДЭГ говорил, что без физического носителя голоса можно сделать всё что угодно. Насмотрелся на то, что творили с помощью ГАС Выборы, даже с бумажными бюллетенями, как там результаты меняли как надо. А без возможности проконтролировать, пересчитать и т.п. - выборы закончились как явление.


    1. Robastik
      03.09.2024 10:53
      +1

      Все совсем по другой причине они закончились.


  1. aleksandr99
    03.09.2024 10:53
    +9

    Неважно, как проголосовали, важно, как подсчитали


  1. mihmig
    03.09.2024 10:53
    +2

    Здесь есть люди с математическим/криптографическим аппаратом?
    Я правильно понимаю - задача "статически неопределима", то есть:
    1. Я, проголосовав, получаю некий UUID
    2. После выборов, я могу скачать vibory_blockchain_2024.zip
    3. Найти там свой UID
    4. Проверить, что мой голос учтён именно за ID того кандидата, что я голосовал.
    5. Отправить начальству некую ссылку на ту часть блокчейна, где я якобы проголосовал за нужного кандидата (бюджетники, вояки - привет!)
    6. Проверить, что голос моего соседа-алкаша, который валялся в отключке все три дня голосования на даче (самолично видел) не "закаруселен"?


    1. Ytugator
      03.09.2024 10:53
      +1

      Держим только в голове, что 6 незаконно, а 5 тоже можно считать принуждением, но кого это волнует, да?


      1. SuharkovMP
        03.09.2024 10:53
        +2

        Бюджетников никто ни к чему не принуждает, они сами это делают, добровольно. Спросите любого из них, прежде чем тут выводы свои голословные выводить.


        1. Ytugator
          03.09.2024 10:53
          +6

          А живут они в самой мирной и лучшей стране в мире!


          1. SuharkovMP
            03.09.2024 10:53
            +1

            Верно, товарищ!
            Верно, товарищ!


          1. ifap
            03.09.2024 10:53
            +1

            Хочу в СССР!!! (с) Вовочка


        1. randomsimplenumber
          03.09.2024 10:53
          +2

          добровольно

          И с песней! (ц) кошка


      1. mlnw
        03.09.2024 10:53

        Держим только в голове, что 6 незаконно, а 5 тоже можно считать принуждением, но кого это волнует, да?

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

        Более того, во многих развитых странах (например, Бельгия) пошли дальше: по закону проголосовать обязаны все без исключения.


    1. xi-tauw
      03.09.2024 10:53
      +3

      Скорее всего, пункты 4 и 6 вместе, не позволяют сделать голосование тайным.


    1. Peterlos Автор
      03.09.2024 10:53
      +1

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


      1. mlnw
        03.09.2024 10:53
        +1

        Нет, обезличенные голоса должны быть доступны для просмотра за кого голосовали, для дальнейшего подсчёта результатов. Иначе теряется смысл.


    1. Zalechi
      03.09.2024 10:53

      Ой, что Вы так всё усложняете? (с) Ей богу


    1. Sadler
      03.09.2024 10:53
      +1

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

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


  1. roginvs
    03.09.2024 10:53
    +1

    Теперь понятно почему мне и супруге не приходили sms с госуслуг во время голосования - чтобы можно было подсунуть другие бюллетени вместо наших и при этом количество бюллетеней сошлось. Как только голосование закончилось всё сразу стало приходить.

    Напоминаю что без sms с госуслуг было невозможно проголосовать


    1. Peterlos Автор
      03.09.2024 10:53

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


    1. Inojj
      03.09.2024 10:53

      увеличенную нагрузку на систему вы не рассматриваете, из-за чего сервисы с нотификациями могли прилечь?)


      1. uhf
        03.09.2024 10:53

        При смене подключения на VoWiFi sms начинали приходить, вот такие чудеса.


  1. grishkaa
    03.09.2024 10:53
    +4

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

    • Голосование должно быть тайным

    • Голосовать должны мочь только те, у кого есть на это право, и только один раз

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

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

    Если дать голосовать с ключом, который человек сам себе генерирует на своём устройстве, не будет возможности соблюсти второе условие, голосовать сможет кто угодно.

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


    1. sintech
      03.09.2024 10:53
      +1

      Кто мешает привязать бумажный бюллетень к человеку в момент его выдачи в ИК? Выдача производится по паспорту, бюллетени пронумерованы(или нет?).


      1. grishkaa
        03.09.2024 10:53

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


        1. konst90
          03.09.2024 10:53
          +1

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


          1. vadimk91
            03.09.2024 10:53

            У нас на участке в последние выборы стояли только электронные урны (фактически это сканер), всех предупреждали, чтобы не сворачивали и не мяли бюллетень, иначе мол сканер его не примет. То есть идти из кабинки до урны надо с бюллетенем "во весь рост". И да, ты такой стоишь под камерой около урны, тут же и твоя морда лица на записи и результат твоего голосования, всё "в одном флаконе"


    1. haqreu
      03.09.2024 10:53

      Ну математики не зря хлеб едят. Вот система, которая позволяет выполнить ваши два требования:

      https://www.belenios.org/howitworks.html


      1. grishkaa
        03.09.2024 10:53

        By default, the election server generates and sends one credential for each voter. The public part of each credential is stored on the election server while the private credentials are discarded.

        А что мешает этому серверу сохранить рядом с публичным ключом СНИЛС или номер паспорта? Хотя с другой стороны,

        In the context of a standard election, one does not have access to the individual votes because the ballots are never decrypted one by one. We use a property of the encryption system which allows to aggregate all the votes into one and decrypt only the result.

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


        1. haqreu
          03.09.2024 10:53

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

          Я не призываю использовать непосредственно этот протокол, я просто говорю, что математики работают над вопросом, и подвижки очень даже есть.


    1. Skipy
      03.09.2024 10:53

      Вообще-то еще должна быть возможность пересчета, чтобы исключить злоупотребления на уровне ПО


  1. event1
    03.09.2024 10:53

    Чтобы разобраться, как можно реализовать реальный вброс, я построил схему бизнес-процессов ДЭГ, используя свой многолетний опыт взаимодействия с ним и внешние консультации со знающими людьми

    = "Я выдумал схему бизнес-процессов"

    Оказалось, что блокчейн работает как бы сбоку

    Могли бы выдумать другую схему и там бы оказалось, что блокчейн работает "как бы снизу". Или наискосок

    Инструкция по вбросу

    Хотите я вам предложу метод вброса, который проще, надёжней и дешевле, чем вот эти ваши фантазии? Держите:

    • отменяете и даже запрещаете всякие электронные голосования

    • разрешаете голосовать по почте без ограничений

    • разрешаете в каждой деревне иметь собственный избирательный закон

    • делаете схему голосования двух-, а лучше трёхступенчатой

    • ....

    • Profit

    Теперь, проверить ваше голосование будет невозможно. А если и получится где-то что-то оспорить, то дело погрязнет в судебных разбирательствах.

    Кстати

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

    Очевидно нужно для сохранения тайны голосования. Я думаю, что наблюдателям надо выбрать пару тысяч бюллетеней, найти избирателей и проверить верно ли записаны/подсчитаны бюллетени.

    В целом, построить систему где будут одновременно соблюдаться, и тайна голосования, и возможность валидации собственного голоса, и возможность наблюдения трудно. Неудивительно, что есть шероховатости.


    1. konst90
      03.09.2024 10:53
      +1

      Двухступенчатая схема голосования наоборот, "гасит" вбросы на нижнем уровне. Есть в некотором регионе кандидат А набрал больше половины голосов, то рисование 99% голосов при 99% явке никакого смысла не имеет, потому что никак не "усилит" его результат. А вот в одноуровневой системе такое рисование имеет смысл - и при этом чем больше реальная поддержка кандидата А, тем проще нарисовать ему дополнительные голоса, потому что его противники имеют меньше возможностей наблюдения за выборами.

      А в регионах, где результат непредсказуем, наблюдение будет самым интенсивным, и рисовать будет сложнее.


      1. event1
        03.09.2024 10:53

        Есть в некотором регионе кандидат А набрал больше половины голосов, то рисование 99% голосов при 99% явке никакого смысла не имеет, потому что никак не "усилит" его результат

        Никто не рисует 99%. Это сложно сделать и ещё сложнее сделать незаметно. А вот докинуть 1000 бюллетеней, что бы выиграть весь регион, это да. И сделать легко, и шансов попасться мало.


        1. konst90
          03.09.2024 10:53
          +1

          Никто не рисует 99%. Это сложно сделать и ещё сложнее сделать незаметно.

          Посмотрите на результаты по Чечне, например. Президентские '24: явка - 97%, Путин - 99%. В одноуровневой системе это имеет смысл, потому что каждый голос из этих 99% приближает победу своего кандидата. В двухуровневой системе эти аномальные голоса не повлияют на общую картину, что снижает возможность достижения общего результата за счёт такого рисования.

          Скорее всего, такая система и появилась именно потому, что центральная власть была слаба, а власть на местах сильна и неконтролируема: никто из Вашингтона не проверит, что нарисовали в далёком Техасе, поэтому все жители Техаса представлены некоторым зависящим от числа жителей числом выборщиков, которые выражают консолидированную волю штата.


          1. event1
            03.09.2024 10:53

            Посмотрите на результаты по Чечне, например. Президентские '24: явка - 97%, Путин - 99%

            И у вас разумеется есть обоснованные доказательства, что это не настоящие результаты? Не "так не бывает, потому что такова моя вера", а нормальные.


  1. nespressopixie
    03.09.2024 10:53

    относительно переписи всё в пределах погрешности


  1. sal0ma
    03.09.2024 10:53

    А в советское время небыло тайного голосования.

    Мы голосовали своими комсомольскими билетами все разом и прелюдно.


    1. vadimk91
      03.09.2024 10:53
      +2

      Ну на первые выборы я ходил ещё при советской власти в Ленинграде в 1989 и голосовал бюллетенем тайно, это были выборы народных депутатов СССР.

      PS минус не мой, я вообще считаю минусовать оппонента не написав аргументацию - по меньшей мере некрасиво


  1. Fedorkov
    03.09.2024 10:53

    На Хабре есть целый глава ТИК ДЭГ. @olartamonov


  1. Herdan
    03.09.2024 10:53

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

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


  1. Kirikekeks
    03.09.2024 10:53

    Поправьте, не спец, но блокчейн - распределённая система владения, которая пропадает сама при концентрации в одних руках одного владельца. Не может же быть блокчейна Гагарина, блокчейна РосТК, и блокчейничка Аделии? Что -то близко к "колобок повесился!"