Русский
Русский
English
Статистика
Реклама

2020og

Обсуждение системы голосования, разработанной ДИТ Москвы

22.06.2020 10:10:48 | Автор: admin

Открытые исходники


Недавно в открытый доступ были выложены исходники системы голосования, которая по всей видимости, и будет применяться на электронном голосовании по Конституции в Москве и Нижнем Новгороде.


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


Введение и просьба о помощи


Эта разработка Департамента информационных технологий (ДИТ) г.Москвы, предыдущая версия которой вероятно, уже знакома некоторым из читателей: как я понимаю, именно она применялась на выборах муниципальных депутатов в прошлом году.


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


Мои заметки


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


Платформа


Lumen PHP-Framework веб-оболочка
Exonium разновидность блокчейна


Как работает


Вот как я понимаю работу системы.


Веб-оболочка выполняет все интерфейсные функции, вплоть до формирования бюллетеня отдельной страницы с кодом, обращающимся прямо из браузера к серверной части подсистемы блокчейна через специального легкого клиента (входит в состав exonium).


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


В рамках обработки транзакции, выполняется печать (зашифрованной?) квитанции регистрации голосующего и квитанции с (зашифрованным?) голосом (согласно разъяснениям, на разных принтерах в разное время, чтобы исключить деанонимизацию по времени).


Ключ шифрования формируется перед началом голосования, делится на части и раздается лицам из числа наблюдателей.


После завершения голосования, ключ собирается и вводится в систему, что позволяет расшифровать транзакции и подсчитать голоса.


Возможные уязвимости


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


Уязвимость 51%


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


Регистрация голосующих


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


Подтверждение личности на сайте mos.ru


Данная уязвимость имеет более обширный контекст, нежели рассматриваемая система голосования.


Сайт mos.ru, используемый в качестве источника аутентификации московского избирателя, позволяет три степени подтверждения личности: отсутствие, сверка личных данных, личный визит клиента в центр авторизации. При этом, согласно сообщениям в социальных сетях и проговорке разработчика на рабочей группе, для предстоящего голосования достаточно второй степени подтверждения личности: сверки личных данных, которая должна была быть совершена до 5го июня. Таким образом, располагая до этого момента базой личных данных, фрагмент которой обнаружил корреспондент т/к Дождь, сайт mos.ru можно было скомпрометировать.


Заключение


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

Подробнее..

Требования по контролю за электронным голосованием

25.06.2020 00:10:20 | Автор: admin

Конституция, и далее везде


Приветствую всех, недавно я предложил вам обсудить систему голосования, разработанную Департаментом информационных технологий (ДИТ) г.Москвы.


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


Введение


Рассматриваемая система была впервые использована в муниципальных выборах, а сейчас ее предстоит опробовать в городах Москва и Нижний Новгород на голосовании по Конституции. Не нужно быть семи пядей во лбу, чтобы догадаться: география и область применения системы будет расширяться и далее.


На муниципальных выборах, к рассматриваемой системе было очень много замечаний. Думаю, будут замечания и на голосовании по Конституции. Нам всем предстоит выработать правила наблюдения и контроля за голосованиями в этой системе, для исключения использования ее для фальсификаций результатов голосования. Пока что, наблюдение за ее работой весьма формально: никто из наблюдающих по сути, не понимает, как она работает и где могут проявиться слабые места. Сообщество наблюдателей ждет от специалистов IT рекомендаций и методических указаний по наблюдению за ней.


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


Выработанные рекомендации


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


Регистрация участников


Верификация регистрационных записей на mos.ru личным визитом


В настоящий момент, система интегрирована с двумя системами регистрации: на сайте mos.ru и госуслугами. К обеим системам есть замечания, но если регистрационные данные на госуслугах не вызвали по большому счету, почти никаких подозрений (такая регистрация требует обязательного физического подтверждения личности с личным визитом регистрирующегося в уполномоченную организацию), то регистрация на mos.ru, достаточная для голосования по Конституции, оказалась верифицируема гораздо слабее, так как требует от регистрирующегося лишь осведомленности о личных данных, но не личного визита.


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


Формирование и проверка списка зарегистрированных


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


Использование систем суверенной идентификации Self Sovereign Identity


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


Голосование


Поддержка анкоринга и узлов аудита


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


Использованная система Exonum имеет в своем составе узлы аудита, специально предназначенные для наблюдения такого рода.


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


Принятые меры позволят предупредить тотальную подмену цепочки блоков с полной фальсификацией голосования.


Контроль развертывания


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


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


Доступ ко всем исходным кодам


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


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


Разрыв связи голоса и голосующего


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


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


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


Разрыв связи зашифрованного голоса и идентификации голосующего позволит безопасно раскрыть ключ дешифровки голосов после завершения голосования для независимого подсчета голосов наблюдателями на узлах аудита без риска деанонимизации голосующего.


Возможность пересмотра собственного голосования


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


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


Открытый API


В настоящий момент, система жестко привязана к разработанному пользовательскому интерфейсу на основе браузера.


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


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


Заключение


Мы, сообщество профессионалов IT, можем оказать решающее влияние на создание действующей, прозрачной, эффективной системы электронного голосования на территории России. Нашей экспертизы с нетерпением ждет сообщество независимых наблюдателей. Попробуем сделать наши выборы чуть честнее.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru