Лучше один из двух, чем ничего
11:18, 29 августа 2019

28 августа прошло четвертое и последнее тестирование интернет-голосования перед тем, как эту систему впервые опробуют на выборах в Мосгордуму 8 сентября. Воспользоваться таким вариантом голосования готовы около пяти тысяч москвичей в трех округах, где проходит эксперимент (чуть меньше 1% избирателей в этих округах). Перед последним тестированием мэрия Москвы исправила критическую уязвимость, которая позволила бы узнавать результат выборов прямо во время голосования. Признать это организаторы голосования отказались — зато решили до последнего момента не показывать исходный код системы независимым экспертам.
Утечка бита
В чем проблема
Главную уязвимость московской системы интернет-голосования обнаружил в начале августа французский криптограф Пьеррик Годри: он показал (и «Медуза» это воспроизвела), что ключи шифрования слишком короткие, их можно взломать за 20 минут на бытовом компьютере. Мэрия оперативно заменила ключи на более длинные, Годри отправили миллион рублей за его находку (хотя власти до сих пор отказываются признавать это успешным взломом). В своей работе Годри говорил, что взламывал ключи шифрования, поскольку это было проще всего. При этом он сразу же заметил другой недостаток, взлом которого потребовал бы дополнительного исследования: из-за особенностей ключа один бит секретной информации мог оказаться незашифрованным. Это мэрия также исправила.
Проблему с утечкой бита по мотивам публикации Годри исследовал белорусский математик из Гарварда Александр Головнев. Он выяснил, что даже после всех исправлений возможна ситуация, когда один бит исходной информации (то есть часть сведений о голосе избирателя) может «утечь» — его можно будет опознать даже после шифрования. Эта уязвимость не позволяет расшифровать все голоса, но в некоторых случаях позволяет посчитать, сколько избирателей подали голос за одного из кандидатов. Если кандидатов всего два (или если это вопрос с двумя вариантами ответа), то, при совпадении некоторых условий, можно вычислить голоса и одного, и второго — то есть узнать полные результаты голосования. А поскольку в интернет-голосовании зашифрованные голоса публикуются по мере поступления (чтобы подтвердить, что с ними нет манипуляций), то метод Головнева позволил бы в реальном времени следить, кто побеждает.
«Конечно, первым делом я сообщил мэрии», — рассказал Головнев «Медузе». 23 августа он отправил письма и на адрес службы поддержки интернет-голосования, и на адрес пресс-службы департамента информационных технологий (ДИТ), который ему порекомендовал Годри. Затем Головнев опубликовал результат своей работы, а Годри на него сослался. Когда 28 августа началось тестирование, из программного кода процедуры шифрования, который используетмэрия, стало очевидно, что они исправили ошибку, найденную Головневым. Но в мэрии это признать отказались.
<button class="Button-root Button-default Button-gray Button-isInSpoiler">ЧТО ИЗМЕНИЛОСЬ В КОДЕ</button>
Что ответила мэрия
Во время тестирования 28 августа сопредседатель «Голоса» Григорий Мельконьянц по просьбе «Медузы» попросил организаторов интернет-голосования прокомментировать статью Головнева. По словам замглавы ДИТ Артема Костырко, они не видели письма от математика, а его статью им прислали «знакомые», поэтому в мэрии не связывались с Головневым, так как якобы не знали, кому и куда писать. «Но со статьей мы ознакомились», — заметил Костырко.
Дальше он начал рассуждать только о примере, который привел Головнев в своей статье: если обозначать голоса просто цифрами 1, 2, 3 и 4, то их потом легко найти. «Мы на самом деле так [голоса] и не кодировали, просто мы этого не говорили», — пояснил замглавы ДИТ. По мнению Костырко, Головнев в своей статье предлагал искать среди зашифрованных бюллетеней именно те, где стоит голос, обозначенный цифрой 1. Это не так, в статье Головнева явно сказано: «Мы подчеркиваем, что эта атака сможет различить (с высокой вероятностью) два сообщения, которые отличаются лишь голосом избирателя. Каким бы ни было обозначение кандидата и какие бы части бюллетеня ни были зашифрованы».
Наконец, Костырко добавил, что не считает приведенные Головневым выкладки уязвимостью, так как они не позволяют взломать ключ. Он никак не прокомментировал изменения в коде, которые явно указывают, что в мэрии учли замечания математика.
«Медуза» показала новый программный код Пьеррику Годри, и он согласился, что эти изменения затрагивают именно ту проблему, которую описал Головнев. «Забавно, как они говорят, что проблемы нет, но по-тихому исправляют уязвимость», — отметил французский криптограф.
Головнев, Годри и «Медуза» проверили публичные ключи и обозначения ответов в бюллетене на тестировании 28 августа, где было всего два варианта на выбор. Если бы мэрия не внесла исправления в программный код, результаты этого голосования можно было бы вычислить в реальном времени.
Хотите проверить сами?
<button class="Button-root Button-default Button-gray Button-isInSpoiler">ВОТ ДАННЫЕ ОТ 28 АВГУСТА</button>
«Если бы я хотел схимичить»
В чем проблема
Другой момент, на котором в своем выступлении остановился Костырко, касается предыдущей публикации «Медузы» — о взломе коротких ключей по методу Годри. Тогда «Медуза» выложила ответ на тестовое задание мэрии от 7 августа: расшифрованные приватные (секретные) ключи. Но мэрия решила не публиковать правильный ответ, то есть формально подтвердить или опровергнуть успех взлома невозможно.
КАК «МЕДУЗЕ» ЭТО УДАЛОСЬ
- Криптограф взломал систему интернет-голосования в Москве. Мы тоже это сделали, и вы тоже можете
- Алексей Венедиктов заявил, что «Медуза» неправильно взломала систему интернет-голосования. Кажется, он сам не понимает, о чем говорит
Что ответила мэрия
По словам Костырко, ответы на задание от 7 августа не выложили «из-за скорости, из-за всего». «Если бы я хотел схимичить или что-нибудь там сделать, я бы просто сделал приватный ключ другим. Опубликовал бы его и сказал: „Смотрите, они на самом деле ничего не смогли!“» — заметил Костырко.
То, о чем говорит Костырко, математически невозможно, объяснил «Медузе» Головнев. Существует ровно одно число, которое является приватным ключом и соответствует публичному ключу из задания мэрии.
Мэрия до последнего не будет публиковать программный код интернет-голосования
В чем проблема
Одна из гарантий безопасности и надежности системы интернет-голосования — это возможность ее независимой проверки. После многочисленных замечаний и призывов дать доступ к исходному коду мэрия с июля публиковала части программы. Именно эта открытость позволила и Пьеррику Годри, и Александру Головневу обнаружить уязвимости в системе. Которые мэрия затем устранила.
Но код, использовавшийся на финальном тестировании 28 августа, заранее опубликован не был. К примеру, уязвимость Головнева исправлена, но об этом можно судить лишь по косвенным признакам — по скомпилированному коду. По словам организаторов, исходный код будет показан, скорее всего, ко вторнику, 3 сентября. Это означает, что на проверку окончательного кода перед настоящими выборами будет всего четыре дня.
Что ответил Алексей Венедиктов
«Мне вообще непонятен этот разговор с публикациями кода: „Вы нам публикуете код, и мы вас взломаем!“ Это выглядит, согласитесь, достаточно интересно», — заметил один из инициаторов системы интернет-голосования Алексей Венедиктов. Он добавил, что всегда был против широкой публикации кода, желая оставить его обсуждение только в пределах технической рабочей группы экспертов. «Наша задача, чтобы 8-го числа никто не смог взломать. И чтобы результат был адекватен голосованию. Все!» — подытожил Венедиктов.
* * *
Ранее в мэрии уже отказались от идеи печатать на бумажных копиях электронных бюллетеней публичный ключ — это часть ключа, которую каждый избиратель получает на свой компьютер и может легко посмотреть в коде страницы с бюллетенем. Наблюдателям публичный ключ также не показывают. «Затруднение доступа к публичному ключу — это неправильный подход и очень плохой знак, который показывает, насколько создатели не уверены в своей схеме шифрования», — сказал Пьеррик Годри «Медузе» по поводу этого решения.
Головнев признался, что «после такого отношения» не хотел бы дальше проверять интернет-голосование московской мэрии на надежность. «Мне кажется, что под публичным тестированием организаторы понимают что-то другое и на самом деле не ищут уязвимости системы», — добавил он.
Комментарии
Онлайн голосование, ишо та туфта. Хоть обтестируйтесь, хорошой пентестер уязвимость найдёт, да и заинтересованные стороны смогут обеспечить массовые фальсификации.
https://golovnev.org/papers/election.pdf
p =10062759081450625618037903678618826196600591242500860802791085970455088 29615914188038720723057459046019130152450978128758867982127126946624453 23678201384359740027439588690880234391145675099291004487668846511981135 30933109486902142540395785614572268133031351548262091859360232929939444 1379077427748866822254003
Но не подвернулось подходящего онлайн калькулятора. (А на обутый компьютер лень переходить.)
Здесь, например,https://www.dcode.fr/prime-factors-decomposition
ответили так: Computing Time Exceeded. Your calculation is too complex and requires paid resources... size limited to 250
А вы бы где проверили?
https://www.alpertron.com.ar/ECM.HTM