Приближаются выборы в Госдуму, и нам рассказывают о пользе и возможностях дистанционного электронного голосования. Мы видим (в том числе на встречах Эллы Памфиловой с «Голосом» (признан российскими властями «иноагентом») и другими наблюдательскими объединениями) рекламные выступления привлеченных экспертов, обещающих светлое цифровое будущее, и политиков, рассказывающих о замечательном примере Эстонии.
Так вот, как в Эстонии — не будет. Даже как раньше в России не будет.
УИК не фейсбук
Системы тайного голосования для выборов в органы государственной власти существенно сложнее, чем те голосования, которые вы сейчас встречаете на фейсбуке, в телеграме и на вебсайтах. В рамках выборов должна быть реализована возможность контроля над системой со стороны членов комиссии и наблюдателей, с помощью которого можно было бы убедиться, что: соблюдается тайна голосования; избиратель голосует лично и на него не оказывается давление; голосует тот, кто имеет такое право; голос был верно учтен системой; цифровые документы, предоставляемые комиссией в вышестоящую, не подменяются.
Контроль любой системы интернет-голосования является задачей грандиозной технической сложности, которая не по плечу отдельно взятому специалисту, поскольку требует наличия первоклассных знаний одновременно в области криптографии, математики, программирования, электроники, цифровых телекоммуникаций и в других технических областях, плюс — избирательного законодательства. На изучение всех материалов, если предположить, что они будут опубликованы, могут понадобиться годы работы. При этом нужно учитывать, что в состав аппаратно-программного комплекса системы интернет-голосования входит не только серверная часть (расположенная в неизвестном месте), но и персональные компьютеры и программное обеспечение избирателей, а также оборудование линий связи, контролировать которые не представляется возможным.
Но на предлагаемые в России системы, разработанные ПАО «Ростелеком» (для России кроме Москвы) и Департаментом информационных технологий (ДИТ) города Москвы более чем за два года работы, к сожалению, до сих пор не представлен полный пакет документации, который могли бы оценить независимые эксперты.
Неполнота опубликованных документов — одна из причин, по которой невозможно рассеять сомнения в уязвимости системы электронного голосования.
Ниже мы поговорим об одной из перечисленных выше пяти уязвимостей — вероятности разглашения тайны голосования.
Оговоримся, что, конечно, сама по себе публикация документов еще не гарантирует, что электронное голосование пройдет без нарушений, но, по крайней мере, мы будем в таком случае иметь основание утверждать, что нарушения имеют характер уголовного преступления.
Приведем аналог с обычным голосованием: представим, что члены комиссии не осматривали бы ящики для голосования, не запечатывали бы их вместе с наблюдателями, да и вообще в законе не было бы прописано, что урна должна опечатываться и должна быть сконструирована так, чтобы бюллетени оттуда не вываливались. Тогда избиркомы могли бы собирать бюллетени хоть даже в шапку. И это не было бы нарушением закона. Но дело обстоит не так, и председатель УИК, собирающий голоса «в шапку», сильно рискует. Сейчас, по сути, электронное голосование — в силу неопубликованности кода — может оказаться чем угодно: может — опечатанной по всем правила закона урной. А может — «шапкой».
Молчание ЦИК, ДИТ и «Ростелекома»
При Общественной палате Москвы еще в 2019 году была сформирована Техническая рабочая группа, которой было поручено «обсуждение технической стороны эксперимента по электронному голосованию». В нее вошли такие специалисты, как Григорий Мельконьянц («Голос»*), инженер-программист Дмитрий Кузнецов, кандидат физико-математических наук Дмитрий Нестеров, кандидат технических наук Алексей Сокирко, программист Евгений Федин и один из авторов этой статьи (программист Александр Исавнин). Последний лично требовал 5 августа 2021 года от начальника Управления по совершенствованию территориального управления и развитию смарт-проектов правительства Москвы Артема Костырко публикации кода и описания математического алгоритма, касающегося реализации «отложенного голосования» в московской системе, и не получил этих ссылок.
В свое время, еще в связи с электронным голосованием на выборах в Мосгордуму, Алексей Венедиктов следующим образом объяснял журналистам отсутствие публикации кода: «Потому что вы пришли или не пришли! Потому что вместо того, чтобы присылать программистов туда, туда послали политиков, которые так же, как я, ни хрена в этом не понимают. А вот теперь код будет открыт для всех, для хакеров. Надо приходить, когда вас зовут, а не когда вы хотите!»
С таким аргументом невозможно согласиться. Публикация — на то она и публикация, что код не «рассказывается» с чьих-то слов, а предается гласности в письменном виде на электронном ресурсе, с тем чтобы любой специалист, а не только вовремя зашедший в ДИТ мэрии или «Ростелеком», мог с ним ознакомиться.
В 2020 году конкретизированные, развернутые и хорошо структурированные требования предать гласности детали электронного голосования выдвинул «Голос». Именно «Голос» предложил:
1. «Включить в нормативные документы и реализовать на практике подготовленные требования к системе ДЭГ…;
2. Опубликовать для экспертной оценки следующие документы: техническое задание на разработку системы, техническую документацию, исходные коды, состав оборудования и его местоположение;
3. Провести серию общественных обсуждений системы ДЭГ с участием ее разработчиков;
4. До 11 сентября 2020 г. провести серию открытых тестирований системы ДЭГ;
5. В случае невозможности реализации вышеуказанных пунктов — отказаться от поспешного и непрозрачного для общества внедрения системы ДЭГ на выборах 13 сентября 2020 г.»
К осенним выборам 2021 г. требование «Голоса» № 2 в части публикации ТЗ не было выполнено, в части публикации технической документации, исходного кода — выполнено фрагментарно, в части раскрытия состава оборудования и его местоположения — не выполнено вовсе.
В настоящее время дело с публикацией обстоит так. Документы «федерального» ДЭГ, разработанные (как мы можем догадываться) ПАО «Ростелеком», опубликованы на ресурсе. Они включают в себя:
1. Математическое описание протоколов шифрования.
2. Описание процедуры голосования с помощью ДЭГ (документ называется «Описание протокола ДЭГ…»).
3. «Описание ПТК ДЭГ», в котором приданы гласности отдельные компоненты системы и принципы ее реализации с указанием базовых параметров «железа» (вычислительная мощность, уровни резервирования, разнесение по площадкам).
4. Схема деления ПТК ДЭГ на части в виде чертежа.
5. Анализ возможных угроз.
Доступна также ссылка на некоторые части исходного кода программного обеспечения федерального ДЭГ.
А вот от московского ДЭГ нам известна только ссылка с некомментированными и недокументированными, по нашему мнению, фрагментами кода.
Чего здесь не хватает? Казалось бы, все вам дали… Но нет. Чтобы эти публикации можно было считать достаточными, необходимо еще выполнить три группы условий:
1. У этих документов должен быть внятный правовой статус: их разработка, утверждение, режим доступности, неизменность должны быть закреплены правовыми актами, принятыми в силу и во исполнение действующего законодательства. В настоящее время на документах отсутствуют даты, подписи, указание на принятие во исполнение такого-то решения и т. п.
Аналогия: если государственная контора заказывает строительство какого-нибудь здания, то сначала объявляется конкурс на разработку проектно-сметной документации, затем ее несут в главгосэкспертизу, затем объявляется конкурс на строительство, и нельзя что-то перепутать — рассчитать не по тем ценам, взять не те СанПиНы, — на всяком документе расписано, кто за что отвечает. Все будет утверждено, и каждое решение будет принято и оформлено по закону, проектная документация будет на сотню томов. А тут ведь строят не сарай, а базовую для демократического государства конституционную процедуру.
2. Публикация кода должна быть аннотирована и комментирована, чтобы аналитик, который будет проверять, как работает каждый из компонентов системы, мог удостовериться в отсутствии скрытых возможностей. Так, на схеме программно-технического комплекса мы видим 22 элемента. По каждому из них необходимо представить:
- по программному обеспечению — полный код;
- по техническому обеспечению — модель, параметры компьютера.
А пока в коде федеральной системы встречаются комментарии типа: «Сережа просил добавить комментов, чтобы было понятно, что тут происходит, но это не так просто, как кажется…»
Вот так комментируют разработчики код для федерального ДЭГ
Пока что получается, что пользователь системы Windows имеет более подробное и понятное описание своего домашнего компьютера и операционной системы, чем ЦИК — всероссийской системы ДЭГ.
3. Должен существовать механизм проверки того, что реализуются именно те технические решения, которые заложены в систему. Грубо говоря, что ни на каком компьютере системы ДЭГ нет вредоносного программного обеспечения. Для этого должны были быть предусмотрены аналоги обычного наблюдения за работой компьютеров. Например: комиссия ДЭГ вместе с наблюдателями ставит на компьютер чистое программное обеспечение из Apple Store и ставит — из открытого кода — программное обеспечение ДЭГ, проверяют невозможность подключиться к этому компьютеру удаленно в целях установки другого ПО и далее блокируют доступ к установке программ (например, устанавливают root-пароль, состоящий из частей, хранимых каждым участником независимо). Это было бы электронным аналогом опечатывания сейф-пакетов, проводимого на офлайн-участках.
Наблюдатели уже столкнулись с тем, что проверить выполнение процедуры ДЭГ они не могут. Так Григорий Мельконьянц описал церемонию разделения ключа между наблюдателями и избиркомовцами, который будет применен для дешифровки голосов по завершении голосования. Напомним, что в разделе 1.2.6 «Протокол разделения ключа» математического описания протоколов шифрования сказано: «Зададим алгоритмы разделения и восстановления секрета. Предполагается, что их выполняет некоторый доверенный дилер».
Так в этом и оказалась засада! Ключ-то между наблюдателями поделили. Но — делалось это на компьютере, чистоту которого он проверить не мог. А теперь — вопрос, который задал Мельконьянц: как он может быть уверен, что на этом компьютере не установлено вредоносное программное обеспечение? Ответ — никак. Следовательно, есть ли гарантия, что кто-то не имеет у себя кусок ключа, который должен был достаться Мельконьянцу? Ответ — нет такой гарантии.
Мы, однако, еще надеемся, что вся перечисленная информация будет предоставлена не в виде общих отговорок, а в виде ссылок на GitHub с заверениями от уполномоченных лиц, что этот код — полон, то есть что никакие другие возможности в эту систему не заложены.
Предположим, что в ближайшее время будет полностью опубликован задокументированный и откомментированный полный код как московского, так и федерального ДЭГ. Но стоит напомнить, что выборы состоятся в ближайшие дни и срок обжалования результатов исчисляется сутками. Как возможно обнаружить нарушения, если время на анализ несметного количества информации и миллионов записей трудно даже оценить? Таким образом, результаты онлайн-голосования могут перестать носить объективный характер, а населению, неспособному наблюдать за столь наукоемким процессом, предлагается верить отобранным властями экспертам.
«Новая газета» направила в ДИТ Москвы, «Ростелеком» (разработчик федеральной системы) и ЦИК запросы с просьбой пояснить, каков юридический статус опубликованных кусков кода и кусков технической документации, какое место занимают опубликованные фрагменты в полной системе электронного голосования? Мы также попросили опубликовать для всеобщего сведения неопубликованное или пояснить, почему оно опубликовано не будет. Мы также хотим понять, какие фрагменты системы имеют должную сертификацию. Наконец, электронное голосование — это не только хард, но и софт. В наших запросах мы просим разъяснить, где конкретно располагаются сервера ДЭГ и как туда попасть кандидатам в депутаты и другим общественным контролерам выборов. По аналогии с обычным ящиком для бюллетеней: если кандидат и его представитель на участке имеет право удостовериться, что бумажные голоса собираются не в шапку, — то с электронными должно быть то же самое.
Мы понимаем, что сейчас все специалисты очень заняты, но ДЭГ с нами надолго, и мы готовы опубликовать ответы уже после выборов, продолжая исследовать эту тему.
Ответ из ДИТ Москвы мы уже получили и публикуем его.
ОТВЕТ ДИТ МОСКВЫ
Ниже приводим полностью, без правок и сокращений, ответы ДИТ на наши вопросы.
1. Могли бы вы ознакомить нас с полным перечнем оборудования и программных продуктов, используемым в системах ДЭГ в Москве?
«Московская система ДЭГ разработана специалистами Правительства Москвы и подрядных организаций согласно государственным контрактам, в ней не используются сторонние программные продукты. Система размещена на серверном оборудовании Центра обработки данных города Москвы».
2. Могли бы вы направить нам ссылку на репозитории программного кода, по которой можно ознакомиться с кодом, применяемым для дистанционного электронного голосования в Москве?
«Программный код московской системы ДЭГ с 2019 года размещается на GitHub. Ссылка на код текущей версии системы».
3. Просим разъяснить, где в указанных репозиториях находится:
- серверная часть программного обеспечения;
- клиентская часть программного обеспечения;
- мобильное приложение;
- программное обеспечение для наблюдения за электронным голосованием;
- иные программные продукты, со списком которых вы ознакомили нас согласно п. 1.3 настоящего запроса.
«Серверная часть ПО по требованиям информационной безопасности не является публичной. Мобильное приложение не будет использоваться на выборах 17–19 сентября. Остальные блоки программного обеспечения представлены на GitHub по данной ссылке и подписаны».
4. Если ссылки на репозитории по конкретным компонентам отсутствуют в публичном доступе или по ним опубликован не весь код, просим сообщить о причинах непубликации или неполной публикации кода и указать, какие именно компоненты не опубликованы.
«В открытом доступе на GitHub опубликованы все используемые в московской системе ДЭГ компоненты».
5. Просим вас сообщить, какие предложения из пункта 2 требований «Голоса» от 29.07.2020, опубликованных по ссылке, учтены к настоящему моменту?
«Все требования, озвученные в п. 2, были изначально учтены при разработке московской системы ДЭГ. Данные требования касаются федеральной системы, о чем прямо сказано в материале, ссылка на который указана в запросе».
6. Имеются ли у московской системы ДЭГ эксплуатационные документы? Кем и когда они выданы и/или утверждены? Могли бы вы нам их предоставить?
«Да, есть. В соответствии с моделью угроз ГИС ДЭГ эта информация является информацией ограниченного доступа и не подлежит ознакомлению неограниченным кругом лиц».
7. Имеется ли у московской системы ДЭГ технический паспорт? Кем и когда он выдан и/или утвержден? Могли бы вы нам его предоставить?
«Да, у московской системы ДЭГ есть технический паспорт. В соответствии с моделью угроз ГИС ДЭГ эта информация является информацией ограниченного доступа и не подлежит ознакомлению неограниченным кругом лиц».
8. Публично доступна ссылка. Просим вас сообщить, в каких подразделах этого репозитория находятся исходный код конкретных видов программного обеспечения, перечисленных выше?
«Исходный код московской системы ДЭГ представлен в данном репозитории, каждый компонент в нем подписан».
9. В соответствии с российским законодательством система ДЭГ должна быть сертифицирована. Сертифицировано ли оборудование и программное обеспечение московской системы ДЭГ, и если да, то можно ли ознакомиться с сертификатами и разработанной для этого документацией?
«Да, московская система ДЭГ получила аттестат ФСТЭК России. В соответствии с моделью угроз ГИС ДЭГ эта информация является информацией ограниченного доступа и не подлежит ознакомлению неограниченным кругом лиц».
10. По какому адресу расположено оборудование, входящее в московскую систему ДЭГ?
«Московская система ДЭГ размещена в городском Центре обработки данных, расположенном на территории Российской Федерации».
11. Предоставлен ли избирательной комиссии московского ДЭГ доступ в помещения, где расположено оборудование для проведения ДЭГ?
«Нет, доступ к ЦОД в период проведения дистанционного электронного голосования возможен только для специально аттестованного персонала. Это связано с повышенными требованиями к информационной безопасности системы. Система ДЭГ размещена в отдельном ЦОДе, сертифицированном по максимальному классу защиты, чтобы исключить возможность внешнего вмешательства в систему. Кроме того, такие высокие требования к информационной безопасности предъявляют регуляторы».
12. Кто контролирует доступ в эти помещения?
«Доступ в эти помещения в период проведения ДЭГ контролирует ДИТ Москвы совместно с правоохранительными органами».
13. Каким образом избирательная комиссия ДЭГ может убедиться в неизменности программного обеспечения и оборудования во время проведения голосования?
«В дни голосования на электронных УИКах будет развернута нода наблюдателя, которая позволит любому техническому специалисту получить доступ непосредственно к блокчейну, проверить работу системы и убедиться в ее стабильности и неизменности».
14. Имеют ли возможность разработчики или иные третьи лица вносить изменения в состав оборудования и программного обеспечения системы ДЭГ во время голосования?
«Нет, не имеют».
15. Применим ли документ к московскому ДЭГ?
«Да, применим».
Математика для безопасности избирателя
Базовые математические инструменты и понятия, которые нужны для понимания устройства любого электронного голосования, — это асимметричное шифрование, хеширование, электронная подпись.
ЧТО ТАКОЕ АСИММЕТРИЧНОЕ ШИФРОВАНИЕ
В 70-е годы прошлого века было изобретено асимметричное шифрование — когда для зашифровки сообщения применяется один ключ, а расшифровки — другой. Оно базируется на свойствах простой математической операции — возведения в степень и деления с остатком.
Идея его в следующем.
Пусть у вас есть два (больших) числа. Одно из них вы храните в тайне, это ваш приватный ключ («ключ от замка»). Другое — передаете вашему товарищу или вообще выкладываете в общий доступ — это ваш публичный ключ («замок»). Существует алгоритм шифрования, находящийся в публичном доступе. Публичный и приватный ключ подобраны таким образом, чтобы с помощью приватного ключа, — и только с помощью него, — можно было расшифровать сообщение, зашифрованное с помощью публичного. При этом не должно существовать простого и быстрого способа подобрать по публичному ключу приватный. (Тут аналогия с замком работает отчасти: если у вас есть цилиндровый механизм от замка, то по нему можно — хотя это у вас и займет время — выпилить ключ, а вот захлопнуть замок без ключа или открыть его ключом можно за секунды).
Далее ваш товарищ зашифровывает сообщение вашим публичным ключом и посылает его по открытой связи (где его могут перехватить, но расшифровать не могут), а вы расшифровываете его вашим ключом.
КАКАЯ МАТЕМАТИКА СТОИТ ЗА ШИФРОВАНИЕМ?
Операция «шифрования» и «дешифрования» математически может представлять собою, например, возведение в степень и деление с остатком.
В одном из популярных алгоритмов шифрования, RSA, публичный и приватный ключи — это пары чисел (e, n) и (d, n). Здесь n — произведение двух довольно больших простых чисел p и q (выбранных случайно).
Если вы хотите зашифровать посылаемое товарищу число m, вы его возводите в степень е (из публичного ключа) и вычисляете остаток от деления на n, затем посылаете результат товарищу; аналогично устроено дешифрование: вы берете полученное от вашего корреспондента число, возводите его в степень d (из приватного ключа) и вычисляете остаток от деления на n.
Как математики подбирают такие волшебные пары (e, n) и (d, n) не тема этой статьи, но важно, что злоумышленнику, который не имеет доступа к вашему приватному ключу, определить d при достаточно больших числах n и e на сегодняшний день довольно затруднительно. Для того чтобы сделать это, нужно ОЧЕНЬ быстро уметь разлагать числа на простые множители. Это будет доступно, когда физики сделают практически применимый квантовый компьютер. Пока не сделали.
ЧТО ТАКОЕ ХЕШИРОВАНИЕ
Хеширование — это, упрощенно говоря, одностороннее преобразование, то есть такое, что за разумное время существующими алгоритмами невозможно построить обратное преобразование к нему.
При этом функция хеширования подбирается так, чтобы от большого текста хеш был коротким, и чтобы небольшая замена в этом тексте приводила к существенной замене в хеше.
Например, вы никогда не отгадаете, что последовательность «бТЙпдНпЭе» взята из первых букв в первых строках страницы 165 диссертации Мединского (даже если предположить, что в ваших руках оцифрованная Российская государственная библиотека), в то же время, если вы назовете диссертацию, страницу и алгоритм («Возьми первые буквы строк»), то вы с легкостью восстановите эту бессмыслицу.
ЧТО ТАКОЕ ЭЛЕКТРОННАЯ ПОДПИСЬ?
Воспользуемся механизмом, описанным выше, с точностью до наоборот. Зашифруйте файл вашим ПРИВАТНЫМ (а не публичным!) ключом и пошлите товарищу вместе с незашифрованным файлом. А публичный ключ выложите в общий доступ. Теперь любой может попытаться расшифровать файл с помощью вашего ПУБЛИЧНОГО (а не приватного!) ключа. Если это получилось — значит, файл в самом деле послан вами. (Предполагаем, что та страничка, куда вы выкладываете ваш публичный ключ, защищена от взлома другими средствами, ну или что вы публикуете ваш публичный ключ в газете, т. е. никто не заменит ваш ключ на чей-то чужой без явного содействия с вашей стороны.)
Для упрощения на практике зашифровывают и расшифровывают не файл, а хеш от него, потому что хеш короче. Что такое хеш, объяснено выше. Механизм для хеширования является публично известным и, как правило, устроен таким образом, чтобы малейшее изменение исходного файла приводило к серьезному изменению хеша.
Простой протокол голосования
Как с помощью описанных средств придумать «простой» протокол голосования?
Например, так. И избиратель, и избирком создают по паре ключей — публичный и приватный — и публикуют публичный ключ. При этом избирком имеет списки избирателей.
Избиратель сообщает избиркому о своем волеизъявлении в сообщении, которое он подписывает своим ТАЙНЫМ ключом, а шифрует — ПУБЛИЧНЫМ ключом избиркома. Далее избирком своим тайным ключом расшифровывает сообщение и проверяет подпись: если оно пришло не от легитимного избирателя, то оно идет в мусор. Если от легитимного, то оно суммируется.
Уязвимости этой схемы настолько велики, что нет возможности их все перечислить. В частности:
нет гарантии, что голос расшифрован и учтен правильно;
нет гарантии, что у списков нет скрытой части (в отличие от обычного голосования, где это обеспечивается прошивкой списков избирателей и их доступностью наблюдателям);
нет гарантии, что избирком не записывает, кто как голосовал, ведь при проверке электронной подписи невозможно не знать, чью подпись вы проверяете публичным ключом.
Поэтому столь глупой и уязвимой схемой никто не пользуется.
Более защищенный «протокол двух агентств»
С использованием других криптографических базовых операций — одностороннего преобразования (хеширования), выработки общего секрета, традиционного симметричного шифрования — появилась практическая возможность организовывать защищенную связь в таком открытом пространстве, как интернет, или начать экспериментировать с основанным на математике электронном тайном голосовании. Так, еще в 90-е годы прошлого века были разработаны математические алгоритмы, позволяющие как идентифицировать голосующего, так и защищать тайну голосования применением цифровой подписи. Сохранение тайны может казаться удивительным при наличии «подписи», но в этом прелесть довольно несложной математики. Именно, известные сегодня работы в области интернет-голосования, как правило, используют алгоритм «протокол двух агентств».
Этот алгоритм, с одной стороны, дает возможности, не предоставляемые традиционным, бумажным голосованием. Например, избиратель может официально проверить, правильно ли был учтен его голос. С другой стороны, при неаккуратной реализации на практике все же остаются возможности для злоупотреблений, в том числе и раскрытия тайны поданного голоса.
Основной смысл такого алгоритма в том, что и создает бюллетени, и проверяет избирателя, и выдает ему бюллетень одно агентство, а результаты считает другое, которое убеждается в подлинности бюллетеня (но не знает, какой конкретно избиратель его получил),
и публикует список полученных зашифрованных голосов, чтобы голосующий мог убедиться, что его голос не потерян, а потом расшифровывает и считает результат.
КАК ТЕОРЕТИЧЕСКИ В ИДЕАЛЬНОМ СЛУЧАЕ РАБОТАЛ БЫ ПРОТОКОЛ ДВУХ АГЕНТСТВ
Для работы этого протокола нужны три участника: избиратель, регистратор, счетчик. Регистратор хранит данные о списках избирателей, но не имеет отношения к подсчету голосов. Счетчик, напротив, учитывает голоса, но не хранит данные списков избирателей. В «офлайн-голосовании» функции регистратора и счетчика объединены в избирательной комиссии.
Регистратор посылает каждому избирателю «метку» — некий набор символов. Эти же метки, но без указания того, кому какая принадлежит, он посылает счетчику — чтобы у него была возможность проверить, легитимен ли избиратель (имеет ли право голосовать на этих выборах). Далее избиратель генерирует свои публичный и приватный ключи, кроме того, избиратель генерирует еще один ключ шифрования — секретный до поры до времени.
Избиратель направляет счетчику свое подписанное сообщение, зашифрованное своим же секретным ключом, который пока что не знает никто. Но теперь в сообщение избиратель записывает не только свой выбор, но и ту метку, которую ему дали. И прилагает свою метку в открытом виде к сообщению. Метка служит счетчику указанием на то, что избиратель легитимен, но при этом счетчик не знает имени избирателя. Счетчик публикует пары «метка — зашифрованное сообщение». Убедившись, что эти пары опубликованы, избиратель посылает счетчику свой секретный ключ, тот расшифровывает сообщение, что и устанавливает волеизъявления граждан. В идеале счетчику следовало бы к опубликованной метке и шифротексту добавить расшифрованное значение бюллетеня, чтобы избиратель мог убедиться в том, что его голос учтен правильно: после голосования электронные избиратели заходят на страничку счетчика и проверяют учет своих голосов. Далее остается проверить подведение общей суммы, что тривиально.
Местами похоже на работу обычной избирательной комиссии. Но существенным моментом является необходимость, чтобы первое и второе агентство не могли сговориться, обменяться информацией и сопоставить, от какого пользователя какой бюллетень был получен.
Агент от агента айпишник не скроет
Однако системы интернет-голосований от ДИТ Москвы и «Ростелекома» даже не стали пытаться «разъединить агентов», а объединили в каждом из этих случаев функции двух агентств в одной организации (т. е. для московского голосования ДИТ — и «регистратор», и «счетчик»; для федерального голосования «Ростелеком» — и «регистратор», и «счетчик»)! Таким образом, каждое из них в своем сегменте (московском или федеральном соответственно) самостоятельно идентифицирует пользователя и обеспечивают анонимизацию.
Поэтому не исключена возможность реидентификации избирателя «по побочному каналу, о которой писал в своем блоге на сайте для айтишников один из авторов настоящей статьи». Рассказываем читателям «Новой Газеты», как она может теоретически работать.
Когда вы зашли на сайт организатора голосования, он знает ваш IP, операционную систему и версию браузера. Отправляемые организатору голосования сообщения идут как бы по трем независимым каналам: авторизация на «Госуслугах», «бюллетень», зашифрованный выбор. Но все их контролирует один и тот же организатор. И ниоткуда не следует, что организатор не пишет в таблички, которые никому не показывает, ваши IP-адрес, параметры компьютера и браузера. Далее, сопоставив данные из первой таблицы (в которой записаны IP и сообщения по авторизации на «Госуслугах») со второй (в которой записаны IP и метки «бюллетеней») и третьей (в которой записаны IP и результат голосования), организатор может выяснить, кто как голосовал.
Механизм возможной деанонимизации изображен на рисунке.
Системы идентификации избирателя, запроса бюллетеня и получения бюллетеня с голосом как бы независимы. Бюллетень с голосом в самом деле не содержит сведений об избирателе. Но во всех системах отображается один и тот же айпишник избирателя. Сличение этих айпишников может позволить понять, кто голосовал
Вот вам (неполная) аналогия: почему Центр «Э» с легкостью выявляет граждан, которые как бы «анонимно» оставляют где-то на форуме какие-нибудь «экстремистские» комментарии? Тоже по IP. Он позволяет идентифицировать гражданина с точностью до квартиры, так как у провайдера есть табличка, в которой IP сопоставлены с квартирами.
Разработчики систем (ДИТ для Москвы; «Ростелеком» для остальной части страны) и пропагандисты заверяют нас словесно (например, в блоге на «Эхе»), что этого делать никто не будет. Но в безопасности информационных систем сама возможность злоупотребления (уязвимость) должна быть ликвидирована, не дожидаясь того, что кто-то ею воспользуется.
Айтишники не могут уподобляться полицейским с их реакцией на опасные ситуации «вот когда вас убьют — тогда и приходите».
У кандидатов, избирателей и наблюдателей нет возможности убедиться — в отличие от обычных выборов с кабинками и шторками, — что в самом деле никто не подглядывает. Нам остается верить честному слову организаторов и разработчиков (ДИТ и «Ростелеком»).
Ничто не мешает организаторам выборов, полностью подконтрольным властям, реидентифицировать голосующего, выяснить по описанному выше механизму через сличение IP-номеров в системе выдачи бюллетеней и в системе подсчета голосов его волеизъявление, узнать по информационным системам его работодателя и положить работодателю списки нелояльных работников «для принятия мер».
Пока что единственный инструмент противодействия этой уязвимости мы нашли в описании процедуры ДЭГ в разделе 5.10. документа «Описание протокола ДЭГ…»: «При переходе в анонимную зону участник ДЭГ может воспользоваться дополнительными средствами усиления анонимности: использование VPN, смена IP-адреса, использование Tor-сети и т. д.». Звучит как изощренная насмешка над избирателем. Миллионам людей рука государства в лице «Ростелекома» предлагает освоить сервисы VPN со сменой IP-адреса, чтобы не дать родному государству раскрыть свою личность? И это притом что другая рука того же государства пытается удушить VPN-сервисы и препятствует распространению информации об их работе.
Александр Исавнин — преподаватель Свободного университета, член Технической рабочей группы при ДИТ Москвы для разработки программного кода к электронному голосованию.
P.S.
Мы намеренно не стали в этой статье освещать другие возможные уязвимости систем ДЭГ. Упомянем их вскользь, хотя они потенциально и более опасны, чем разглашение тайны голосования. Это:
вброс электронных псевдоизбирателей (т. е. аккаунтов мертвых душ или никогда не существовавших людей);
искажение суммирования голосов.
Им следует посвятить отдельный разбор. Подчеркнем, что все эти уязвимости имеют своим источником не несовершенство математических инструментов шифрования и не вероятность взлома внешними «хакерами». И вброс, и искажение суммирования если и могут произойти, то в силу офлайн-сговора государственных чиновников и членов избиркома. Поэтому данные фальсификации по сути своей — аналоговые, а не электронные. Они ничем не будут отличаться, если случатся, от тех фальсификаций, к которым человек с голосом, похожим на голос Жанны Прокофьевой, готовил подмосковные избиркомы на инструктаже.
Но уже описанная в этой статье уязвимость, как кажется, предполагает, что нужно остановиться и сначала хорошо подумать, можно ли без потери возможности полноценного наблюдения организовать безбумажное онлайн-голосование и как привести законодательство в соответствие с цифровыми реалиями, обеспечить гласность и независимость работы цифровой комиссии.
*признан иноагентом