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

UPD: Поступил "Ответ Чемберлену" от пропагандистов

В блоге @AnalogBytes появился ответ на эту статью.

Ответ в части федеральной системы голосования (РТК).

Спасибо им большое за напоминание о документах о про высокоуровневую схему ПТК ДЭГ, я дам ссылку на оригиналы этих документов на сайте vybory.gov.ru, а не на их частном:
Описание ПТК ДЭГ
Схема деления ПТК ДЭГ

Из этих документов совершенно не следует как будет решаться описанная в моей статье проблема. Ок, у Ростелекома есть 4 датацентра в Москве. И?

Внезапно, над упомянутым и мною и АналогБайтезами документом с кусочком Модели Угроз И Нарушителей надругался известный специалист в области безопасности А. Лукацкий. Советую прочитать это, чтобы понять как именно организаторы ДЭК относятся к подготовке существенных документов. Сравните с вот этим восторженным описанием от авторов ответа.

На самом деле на сайте ЦИК есть официальный график публикации документов, и согласно нему ещё 31 июля должно было быть опубликовано "Описание реализации протокола ДЭГ к выборам, голосование на которых состоится 17, 18 и 19 сентября 2021 г." которое может бы и давало ответы на поставленные мною вопросы, но к сожалению оно так и не опубликовано.
Нам обещают 1 сентября, но состоится ли это? Насколько содержательными будет опубликованное? Насколько опубликованное будет соотве��ствать реальному положению дел? Как это можно будет проверить?

Что касается остальных рассказов про "...ДЭГ обеспечивает тайну голосования...", без официальных документов это всё из разряда "Рабинович Артамонов напел Карузо какую-то теорию", что в сочетании с "Дыра в безопасности несчитово пока её не проэксплуатировали", "Вы всё врёти, редиски" и хвастовством о "квалификации и ресурсах" и позволяет мне считать его частью пропаганды, достойной исторических предшественников.
Надеюсь, вы достойно оцените и такой ответ и его авторов.

UPD2: через неделю после написания статьи опубликовано ещё кое-что

31 августа в примерно в 22:00 с задержкой ровно в месяц от ранее заявленного графика опубликовано ещё два документа про федеральную систему ДЭГ:

  1. Про протокол голосования (его надо поанализирровать внимательнее)

  2. И "техническое описание".

"Техническое описание" вызывает странные ощущения и ни разу не добавляет определённости про корректность реализации системы, возможности наблюдения итп.
Зачем-то там СУБД Postgress. У нас же блокчейн, база то зачем? ;)
Часть ПО имеет сертификаты ФСТЭК, часть в реестре импортозамещения, а часть "просто ПО".
Зачем вражеский недоверенный CentOS, если у есть сертифицированный AltLinux?
60 гигабит ДДОСа будет достаточно.

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

Но и это лучше, чем у системы от ДИТА, там не опубликовано даже такого.

UPD3: ответ от ДИТа

03 сентября 2021 года прошла встреча Венедиктова и Костырко со студентами физтеха.

Там один из студентов смело процитировал кусочек про реидентификацию из статьи.

Можно насладиться ответом Костырко: "версия операционки и браузера не позволяет реидентифицировать пользователя". Ага, только вот IP адрес он немного забыл.

Всё это видео прекрасно от начала и до конца. Венедиктов топит за Большого Брата и Цифровой Гулаг.