Тайны Дистанционного Электронного Голосования в России нет
TL; DR в Российских системах электронного голосования нет достаточного обеспечения тайны голосования, и похоже это сделано специально
Executive summary: В Российских системах Дистанционного Электронного голосования допущена организационная ошибка при постановке задания, позволяющая при использовании побочного канала сбора данных о пользователях (на уровне логов вебсервера) организатору голосования нарушить тайну голосования. Разработчики специально обходят тему наличия и необходимости ликвидации такой уязвимости.
Я же более двух лет стараюсь внимательно следить за разработкой систем Дистанционного Электронного Голосования (ДЭГ) в России. Пиратская Партия, делегировавшая меня на эту грустную работу выступает за прямую электронную демократию, но то, что сейчас под видом электронного голосования пытаются внедрять российские власти, не является шагом к электронной демократии, а скорее — очередным элементом строительства цифрового ГУЛАГа.
Разрабатываемые системы обладают от рождения множеством недостатков, с которыми бороться стоит не только техническими, сколько организационными мерами, но как раз такие меры организаторы выборов — заказчики систем отказываются прорабатывать. К явным недостаткам относятся невозможность контроля за составлением списка избирателей (мёртвые души), невозможность контроля за голосованием лично самим избирателем, «черный ящик» системы голосования, работа над бюллетенями неизвестного и очень широкого круга лиц, невписываемость электронного голосования в существующее законодательство, сохранение тайны голосования.
В самом общем виде требования к организации голосования на выборах описывает Федеральный закон 67-ФЗ «Об основных гарантиях избирательных прав и права на участие в референдуме граждан Российской Федерации». Его шестой пункт первой статьи гласит, что никакой иной акт, касающийся выборов, не может уменьшать права, гарантированные этим законом.
Статья 1 пункт 6 ФЗ-67
6. Федеральные законы, конституции (уставы), законы субъектов Российской Федерации, иные нормативные правовые акты о выборах и референдумах, принимаемые в Российской Федерации, не должны противоречить настоящему Федеральному закону. Если федеральный закон, конституция (устав), закон субъекта Российской Федерации, иной нормативный правовой акт о выборах и (или) референдуме противоречат настоящему Федеральному закону, применяются нормы настоящего Федерального закона.
Вообще, весь текст закона можно прочитать на сайте ЦИК РФ.
Сейчас я бы хотел поговорить о сохранении тайны голосования. Статья 7 67-ФЗ гласит: «Голосование на выборах и референдуме является тайным, исключающим возможность какого-либо контроля за волеизъявлением гражданина» и, значит, ДЭГ должно исключать возможность контроля. Тайна голосования важна для того, чтобы обеспечить свободу волеизъявления, в частности, не давая возможность наказывать поддерживающих «неправильных» пплитиков. За свежими примерами далеко ходить не надо — наказание нелояльных работников метрополитена.
Для сохранения тайны голосования в Российском законодательстве оговорены специальные меры: однотипные бюллетени, кабинки для голосования, работа с бюллетенями исключительно независимых комиссий, запрет на фиксацию действий избирателя на участке, и т.п.
Поскольку в случае с голосованиями, проводимыми с помощью информационных систем, меры, применяемые для обычных голосований, не годятся: бюллетени фактически пронумерованы (это вообще-то противоречит 67-ФЗ), от действий пользователей остаётся слишком много следов, то для электронных голосований математиками давно придуманы специальные алгоритмы, позволяющие обеспечивать тайну голосования. А из возможностей, с трудом предоставляемых бумажными выборами, обязательной считается возможность проверки избирателем правильности учёта его голоса — математика даёт такие возможности.
В Википедии есть хорошая статья, описывающая такие алгоритмы: https://ru.wikipedia.org/wiki/Протоколы_тайного_голосования
В существующих системах голосования от Департамента Информационных Технологий Москвы (далее ДИТ) и от Ростелекома/ЦИК (РТК) на текущий момент применяется что-то очень похожее на разновидности «протоколов двух агентств»: у ДИТ два агентства с какими-то добавками и протокол Хэ-Су у РТК. Хотя нигде в рекламных материалах и статьях разработчиков они не будут указаны под такими названием, догадаться можно только по косвенным причинам и посмотрев отдельные приоткрытые кусочки кода. (репозитории ДИТ, РТК) И нам об этом предпочтут не рассказать, потому что, помимо красивой математики, для работы такого протокола обязательно требуются «два агентства»: одно выдаёт бюллетени, а второе — проводит подсчёт. И для обеспечения тайности голосования важно чтобы эти агентства не могли обмениваться информацией. В современных протоколах, например Хэ-Су, заложены меры, усложняющие сговор агентств, но требуются и организационные меры.
В российских же системах двух агентств нет: оба — и ДИТ и РТК — и выдают бюллетени и пересчитывают их. Рекламные материалы и пропагандисты интенсивно рассказывают про какие-то меры, позволяющие охранять тайну голосования, но они аккуратно умалчивают о необходимости двух независимых сущностей для выдачи и подсчёта бюллетеней. А ещё нам не рассказывают о том, что протоколы тайного голосования из статьи в Википедии — это примерно как сферический конь в вакууме: для их аккуратной реализации в жизни требуется множество организационных мер, и эти протоколы не учитывают возможности нарушения тайны голосования с использованием «побочных каналов». И это даёт возможность нарушить тайну голосования злонамеренному организатору.
В предлагаемом реальном голосовании слово «отправляет» из описания протоколов в Википедии оставляет кучу следов, позволяющих так или иначе идентифицировать пользователя. Сопоставление логов вебсерверов, проводивших авторизацию пользователя в ЕСИА/mos.ru, выдающих бюллетень, «анонимно» принимающих голос избирателя позволяют ДИТу и РТК однозначно сопоставить пользователя и его голос. Ведь в логах вебсервера оказываются IP адрес, версия браузера, версия ОС и т. п. И поэтому ДИТ имеет возможность однозначно сопоставить расшифрованный голос в итоговом протоколе с зашифрованным голосом в блокчейне, а по ИП адресу и другим следам выяснить, кто же этот голос оставил. В случае с РТК всё немного сложнее, там применяется гомоморфное шифрование, фактически выбор избирателей суммируется не расшифровывая конкретные голоса. Но тут злоумышленному организатору голосования на помощь приходит блокчейн: у РТК есть голоса, поданные в последовательности. Они знают в какой последовательности сохранили голоса конкретных пользователей, и применяя гомоморфное суммирование не ко всем голосам, а выбрасывая из блокчейна по одному и суммируя остаток, они смогут понять, какой же выбор был сделан конкретным пользователем.
А утром понедельника после выборов руководителям бюджетных организаций лягут списки неблагонадёжных работников для принятия мер. Или чуть позже, чтобы не спалиться сразу. И наверняка такой список лежит уже с прошлых голосований.
Расположившись где-то здесь, злоумышленник из числа организаторов выборов вычислит тебя по ИП! А потом и выяснит как ты проголосовалОб информации о системах Дистанционного электронного голосования
В публичном пространстве информации о системах ДЭГ крайне мало.
Разрботчики публикуют её крайне аккуратно, чтобы не вызвать излишний интерес и критику. В основном общие слова, и пиар.
Картина выше о системе разрабатывемой РТК доступна из материалов на сайте Центральной Избирательной Комиссии.
Схемы современной системы от ДИТ в публичном пространстве нет.
Я обращал внимание разработчиков этих систем на наличие подобной уязвимости (ДИТу аж с эксперимента в 2019-м году). К сожалению, в ответ получал или явную неправду или пропаганду:
в 2019-м году обещали сбор бюллетеней и подсчет результата отдать в МГИК. Но на разборе после эксперимента выяснилось, что «ну не смогли».
На голосовании по поправке победно кричали, что «да хоть Навальному отдадим, но не отдадим, потому что безопаснось». «И вообще, никто кроме нас (ДИТ/РТК) в России не может обеспечить такую надёжность и безопасность ИТ системы, поэтому ну не может быть у нас второго агентства».
«Сергуниной клянёмся, что это у нас разные подразделения и никто не может сопоставить логи в такой схеме».
Пропагандисты подпевают: «это не задача ДИТ/РТК организовывать два агентства, это должны делать МГИК/ЦИК, а раз они ничего не говорят…»
«Если такая уязвимость существует теоретически, то пока в суде не доказано, что её использовали, то и обращать на неё внимания не стоит.» (WAT?)
«Ну пользователь может постараться, скопировать ссылки, получив бюллетень подключиться к другому провайдеру и поменять идентификацию браузера и тогда никто не узнает» (вы в это верите?)
Зато пропагандисты нам расскажут о многочисленных свистелках и перделках, якобы обеспечивающих безопасность и тайность голосования.
Казалось бы, при чём тут блокчейн? А не при чём, при правильно организованном по такому протоколу голосовании (как в любимой пропагандистами Эстонии) неизменность и целостность результатов подтверждается иным способом.
Можно рассказать и о других недостатках/уязвимостях применяемых сейчас в России ДЭГ. Вот эта конкретная уязвимость с нарушенной тайной голосований мне кажется наиболее неприятной для голосующих избирателей и наиболее покрываемой разработчиками и пропагандистами.
Из-за того что не только исходные коды или документация на систему не публикуются (хотя про «всё опубликовано» заливаются пропагандисты), но и нормальных описаний криптопримитивов нет, есть подозрение, что в системах могут быть и специально заложенные идентификаторы для отслеживания избирателей.
И ещё, из до сих пор не опубликованного нет деталей и подтверждения корректности работы системы ДИТа в части «отложенного» голосования. Там нельзя быть уверенным в корректности итогового результата.
А РТК ещё в 2020-м году обещал в статье на Хабре рассказать про используемое в его системе доказательство с нулевым разглашением, а воз и ныне там.
К сожалению, вся работа над этими системами электронного голосования серьёзно противоречит как основным принципам проведения выборов (тайна, наблюдение, гласность), принципам принятия общественно значимых нормативных актов, принципам разработки и тестирования информационных систем.
Мы можем только обращать внимание на эти противоречия. Если читателям будет интересно, я попробую помимо этой обозначить и другие организационно-технические проблемы. Нормативные проблемы пытается мониторить и рассказывает нам наблюдательское движение, например https://www.golosinfo.org/articles/145390