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

Конституция

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

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, можем оказать решающее влияние на создание действующей, прозрачной, эффективной системы электронного голосования на территории России. Нашей экспертизы с нетерпением ждет сообщество независимых наблюдателей. Попробуем сделать наши выборы чуть честнее.

Подробнее..

Альтернативная конституция

01.07.2020 22:06:22 | Автор: admin
Мы вовсе не собираемся разрушать ваш старый мир. Мы собираемся построить новый. Вот вы жестоки: вы не представляете себе строительство нового без разрушения старого. А мы представляем себе это очень хорошо. Мы даже поможем вашему поколению создать этот ваш рай, выпивайте и закусывайте на здоровье. Строить, господин Банев, только строить. Ничего не разрушать, только строить.
А и Б Стругацкие, Гадкие лебеди

image


Этот пост я задумываю как рискованный эксперимент. Я хочу выяснить, могут ли ИТишники самоорганизоваться для создания открытого, свободного (от слова freedom, а не free beer), чистого, высококлассного кода, используя привычные им инструменты (Git, fork, TDD, agile, stackoverflow и прочее). Только этот код это текст, который мог бы являться конституцией в альтернативной реальности (или фантастического рассказа), очень близкой к нашей. Если тебе не нравится чужой код напиши свой.

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

Заодно попробуем составить базу знаний лучших решений, какие были за историю конституций всех времен и народов, методов написаний и улучшений, а так же dark pattern'ы. Например, довольно поучительный кейс Исландии, как они писали-писали вики-конституцию, но так и не написали. Не помогли ни кастрюли, ни батя Бьорк, ни то, что их всего 300 000 человек.

(Надеюсь, что читатели Хабра смогут отнестись к моей идее конструктивно и не превратят в балаган. Если превратят то скрою статью и завершу эксперимент.)


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


Истории конституций


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

Когда появилась первая конституция? Кто ее писал и по каким механизмам? Как обеспечивалось её соблюдение?

image

Копия Великой хартии вольностей

image

Первая страница оригинального текста Конституции Соединённых Штатов

Первой конституцией в современном смысле этого понятия, то есть документ, описывающий и устанавливающий разделение властей и компетенцию каждой из них, является Конституция США, ратифицированная штатом Делавэр 7 декабря 1787 года

image

К первым писаным конституциям на Европейском континенте также относят Конституцию Речи Посполитой (принята 3 мая 1791 года) и Конституцию Франции (принята 3 сентября 1791 года). Обе конституции просуществовали недолго, в Речи Посполитой из-за окончательного раздела страны, во Франции из-за развития революционных событий.

image

Конституция казаков Филиппа Орлика 1710 года

Конституции составляются и принимаются:

  • чрезвычайно-созываемым парламентом (учредительное собрание) (например, Конституция Франции, Конституция Италии 1947 года, Конституция Чехословакии 1948 года, Конституция Югославии 1946 года, Конституция Румынии, Конституция Албании 1946 года, Конституция Германии 1918 года, Конституция Греции, Конституции Болгарии, Конституции Польши 1920 и 1952 годов, Конституция Норвегии);
  • регулярным парламентом (например, Конституция Дании, Конституция РСФСР 1978 года, Конституция ГДР 1968 года, конституции Венгрии 1949 и 2011 года, Конституция Польши 1997 года)
  • съездом советов депутатов (Конституция РСФСР 1918 года, 1925 года, 1937 года)
  • временным парламентом (Конституция Чехословакии 1919 года, Конституция ФРГ 1949 года, Конституция ГДР 1949 года)
  • народом, минуя выборные органы (Конституция Франции 1958 года, Конституция России 1993 года)
  • главой государства (Конституция Германии 1871 года, Конституция Франции 1814 года, Конституция Италии 1861 года, Основные Законы Российской Империи 1906 года);


Конституция Исландии


Из Википедии:

Главной задачей на повестке нового правительства стала разработка новой конституции. Первую попытку написания конституции правительство предприняло сразу после прихода к власти. Предполагалось, что на это уйдет год, но в итоге дело закончилось неудачей, потому что граждане не хотели признавать такую конституцию легитимной. Тогда правительство решилось на эксперимент: сделать так, чтобы граждане сами написали конституцию. Существует миф, что проект основного закона писали 950 простых граждан, но это не так. На первом этапе реформы действительно был собран Национальный форум, состоящий из 950 человек. Форум формировался жеребьевкой. Он определил ключевые ценности и направления новой конституции. Далее 7 профессиональных политиков составило заключение состоящие из 700 страниц. Чтобы доработать новую Конституцию, было избрано Конституционное собрание, в который вошли 25 граждан. В распространенном в интернете мифе говорится, что это собрание состояло из домохозяек, крестьян, рабочих и т. д., но в действительности совет состоял из семи руководителей (университетов, музеев, профсоюзов), кроме того, пяти профессоров и доцентов, четырёх представителей средств массовой информации, четырёх художников, двух юристов, священника, отца певицы Бьорк, видного профсоюзного деятеля и всего одного крестьянина. Совет должен был быть избран. Для этого кандидаты собирали по 30 подписей. Свою кандидатуру предложили 522 человека. 25 человек были избраны на всенародных выборах. Но в итоге голосование было признано парламентом недействительным, а членов собрания они назначали сами. Далее началась доработка текста Конституции и конституционных законов. От каждого гражданина требовалось посылать предложения по электронной почте, Facebook или YouTube и участвовать в обсуждениях Совета, давая комментарии и рекомендации.

В апреле 2011 г. совет начал работу. На написание проекта конституции у него было четыре месяца. Участники собирались ежедневно и работали полный рабочий день, получая за это жалование, эквивалентное зарплате парламентариев. Еженедельно на специальном сайте публиковались результаты проделанной ими работы то есть проект конституции на разных стадиях разработки. Предполагалось, что общественность будет это оценивать, комментировать и вносить предложения и поправки. Ответная реакция действительно была, она поступала через сайт, социальные сети и иные средства интернет-связи. Совет получал отзывы и предложения, которые, по утверждению Торвалдара Гильфасона, внимательно рассматривались и учитывались при создании новых версий проекта. 20 октября 2012 основные положения новой Конституции были утверждены референдумом. Итоговую точку должен был поставить парламент, но документ в итоге не был принят.


Интересные ИТ-ресурсы


Подробнее..

Категории

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

  • Имя: Макс
    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