Две недели назад на Хабре писали о найденной уязвимости в системе электронного голосования на выборах в Мосгордуму. Разработчики обещали ее устранить, но как выяснилось это породило новую уязвимость.

В опубликованной на сайте arxiv.org заметке Александра Головнева указывается, что хотя разработчики устранили найденную Пьерриком Годри уязвимость в реализации схемы Эль-Гамаля, они вновь реализовали ее неправильно, что привело к возможности подсчета голосов в любой момент работы системы. Поскольку у нас в стране публикация результатов голосования запрещена до окончания выборов это, видимо, является серьезной уязвимостью.

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

Под спойлером немного математики
Пусть $p=2q+1$ и $q$ простые числа длины порядка 1024 бита. $Q_p$ — группа квадратичных вычетов по модулю $p$, $ |Q_p| = (p ? 1)/2 = q$. Для шифрования система выбирает $g \in Q_p$, $pk \in Q_p$ — открытый и $sk \in {1, . . . , q}$ — секретный ключи ($pk=g^{sk}$). Результат шифрования голоса $m$ имеет вид пары$(g^r,pk^rm)$, $r$ -случайное число.

Если $m$ квадратичный вычет, то при любом $r$ второй компонент шифротекста тоже квадратичный вычет (аналогично — если не квадратичный вычет). Это дает возможность отличать различные голоса с помощью критерия Эйлера. Для этого нам достаточно возвести шифротекст в степень $(p-1)/2$ и проверить равен ли результат единице (в этом случае — это квадратичный вычет).

Например, номера кандидатов 1, 3 и 4 — квадратичные вычеты, а 2- нет. То есть, мы можем анализируя блокчейн по мере его обновления подсчитывать количество голосов за кандидата 2.

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


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

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


  1. motpac
    29.08.2019 10:38

    Складывается ощущение, что систему изначально планировали дырявой, и вся эта суета вокруг нее за НЕДЕЛЮ до голосования только для отвода глаз. А потом скажут, мол не успели, дайте нам еще немного времени и еще МНОГО ДЕНЕГ!

    — Пилите, Шура, пилите!


    1. ReklatsMasters
      29.08.2019 11:14
      +7

      Ну или просто недостаточная квалификация разработчиков, без всяких теорий заговора.


      1. HappyGroundhog
        29.08.2019 11:27
        +1

        Поддержу! Скорее всего дали обычным разрабам без опыта работы с криптографией. Отсюда специфичные ошибки. Вспомните историю первых «крипто-вымогателей», в которых опытные криптографы быстро находили уязвимости и подбирали ключ.


      1. VIPDC
        29.08.2019 14:28

        Ни что не ново под луной. В России даже поговорка про это есть «Простота, хуже воровства»


    1. joyfolk
      29.08.2019 11:34

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


  1. xFFFF
    29.08.2019 11:22
    +4

    Система скорее всего спроектирована с возможностью подтасовки.


    1. prostofilya
      29.08.2019 11:54
      +3

      Ну а если не получится, то по тв и в сми покажут какие надо цифры, в первый раз что ли.


    1. slavashock
      29.08.2019 13:21
      -2

      Почему вы так считаете?


      1. Amistad
        29.08.2019 14:12
        +1

        По качану, забыли телеэфир с 146%?

        image


        1. solariserj
          29.08.2019 16:27

          Смешно… но не показатель.
          В Молдове к примеру во время выборов взломали сайт ЦИК, и установили каждому кандидату по 100%, 200%, 1000%. И вышел глава ЦИКа сказал что официально имеют силу только протоколы на бумаге, а циферки на сайте это только предварительное информирование


          1. Amistad
            29.08.2019 16:42

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


        1. slavashock
          29.08.2019 18:56

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


  1. amarao
    29.08.2019 12:25
    +7

    Дать Эйлеру двушку, чтобы не высовывался тут со своими вычетами.


  1. yatagarasu
    29.08.2019 12:34
    -2

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


    1. Nikoobraz
      29.08.2019 12:43
      +7

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


      1. dimm_ddr
        29.08.2019 13:37
        +1

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


      1. Serge78rus
        29.08.2019 16:12

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


  1. webhamster
    29.08.2019 12:48
    +4

    У меня у одного формулы не отображаются ни в Firefox 60.8.0ESR, ни в Chromium 73.0.3683.75?


    1. gmini
      29.08.2019 13:05

      #никтонечитаетформулы


    1. Xobotun
      29.08.2019 13:15

      Не у одного. Зато заголовок спойлера радует: "Под спойлером немного математики". Открываешь – а её там действительно немного. 1024, 1, 3, 4, 2 и квадратичный вычет. Вот и вся математика. :)


      Картинка

      image


    1. GrafIn
      29.08.2019 14:38

      Аналогично Firefox 68.0.2


    1. Valeriyan
      29.08.2019 14:38

      Почему-то у картинок с формулами стоит css visibility: hidden;


  1. ClearAirTurbulence
    29.08.2019 15:02
    +3

    Все эти уязвимости несущественны, ибо главная уязвимость находится вне софта — его заказчики.