Конституция, и далее везде
Приветствую всех, недавно я предложил вам обсудить систему голосования, разработанную Департаментом информационных технологий (ДИТ) г.Москвы.
Обсуждение вышло весьма продуктивным, и по его результатам можно выработать некоторые рекомендации по процедуре голосования. Все, кому это интересно, приглашаются под кат.
Введение
Рассматриваемая система была впервые использована в муниципальных выборах, а сейчас ее предстоит опробовать в городах Москва и Нижний Новгород на голосовании по Конституции. Не нужно быть семи пядей во лбу, чтобы догадаться: география и область применения системы будет расширяться и далее.
На муниципальных выборах, к рассматриваемой системе было очень много замечаний. Думаю, будут замечания и на голосовании по Конституции. Нам всем предстоит выработать правила наблюдения и контроля за голосованиями в этой системе, для исключения использования ее для фальсификаций результатов голосования. Пока что, наблюдение за ее работой весьма формально: никто из наблюдающих по сути, не понимает, как она работает и где могут проявиться слабые места. Сообщество наблюдателей ждет от специалистов IT рекомендаций и методических указаний по наблюдению за ней.
Со временем, можно прогнозировать и увеличение количества предложений на рынке по развертыванию таких систем от независимых поставщиков. Какая бы из систем ни была использована в будущем, опыт наблюдения за этой системой будет полезен для организации наблюдения и над другими системами подобного рода.
Выработанные рекомендации
Я взял на себя смелость собрать и формализовать практически все замечания и рекомендации к улучшению самой системы и контроля над ней, высказанные в комментариях к предыдущей статье, а также добавил к ним свои соображения. Предлагаю их вашему вниманию.
Регистрация участников
Верификация регистрационных записей на mos.ru личным визитом
В настоящий момент, система интегрирована с двумя системами регистрации: на сайте mos.ru и госуслугами. К обеим системам есть замечания, но если регистрационные данные на госуслугах не вызвали по большому счету, почти никаких подозрений (такая регистрация требует обязательного физического подтверждения личности с личным визитом регистрирующегося в уполномоченную организацию), то регистрация на mos.ru, достаточная для голосования по Конституции, оказалась верифицируема гораздо слабее, так как требует от регистрирующегося лишь осведомленности о личных данных, но не личного визита.
Практику регистрации по осведомленности следует прекратить, так как она предоставляет чересчур много возможностей для фальшивых регистраций, а сами зарегистрированные записи без верификации личным визитом — исключить из реестра голосующих.
Формирование и проверка списка зарегистрированных
Список зарегистрированных для электронного голосования представляет из себя по сути, электронный аналог книги избирателей на обычном участке для голосования. Так же, как книга избирателей брошюруется и подписывается, этот список требует электронной подписи со стороны как минимум, нескольких членов избирательной комиссии после завершения регистрации.
Использование систем суверенной идентификации Self Sovereign Identity
Новые разработки в области хранения и верификации личных данных позволяют возложить вопросы регистрации и идентификации голосующего на независимые распределенные системы, основанные на блокчейне. Интеграция таких систем в систему голосования позволит снизить риски недостоверной регистрации.
Голосование
Поддержка анкоринга и узлов аудита
Существенным условием, обеспечивающим безопасность и доверие к любой системе, основанной на блокчейне (а рассматриваемая система использует одну из разновидностей блокчейна под названием Exonum), является доступность цепочки транзакций этого блокчейна для проверки независимыми наблюдателями. Такая доступность позволяет любому независимому наблюдателю удостовериться в том, что вся цепочка остается целостной в течение всего голосования, так что подмена голоса невозможна.
Использованная система Exonum имеет в своем составе узлы аудита, специально предназначенные для наблюдения такого рода.
Кроме того, эта система подразумевает также периодическое сохранение контрольных сумм собранных блоков (т.н. анкоринг) во внешней, независимой от основной, цепочке блоков, например в цепочке Bitcoin. Этот механизм позволяет убедиться в том, что узлы, непосредственно вырабатывающие блоки транзакций голосования, не могут, сговорившись между собой, подменить всю цепочку целиком.
Принятые меры позволят предупредить тотальную подмену цепочки блоков с полной фальсификацией голосования.
Контроль развертывания
Бесконтрольное развертывание системы позволяет вольное или невольное вмешательство в работу системы со стороны администраторов, владеющих терминальным доступом к системе, что категорически снижает доверие к ней.
Развертывание рабочей системы электронного голосования должно происходить под контролем квалифицированных наблюдателей. Любое вмешательство в развернутую и действующую систему должно также производиться под контролем наблюдателей, с видеонаблюдением и другими средствами фиксации, документироваться как автоматическими средствами, так и вручную. Авторизация вмешательства должна производиться квалифицированными членами избирательной комиссии. Автоматические средства регистрации событий должны немедленно и явно для наблюдателей сигнализировать о создании любых успешных терминальных сессий, а также регистрировать все попытки установления таких сессий, в том числе неуспешные.
Доступ ко всем исходным кодам
На настоящий момент, в открытом доступе выложены исходные коды по всей видимости, большинства подсистем системы голосования.
Для повышения доверия и усиления защиты от рисков проникновения, не только все подсистемы системы голосования, но и конфигурация ее развертывания должны быть доступны в исходном виде. Закрытыми могут быть только секретные ключи, при этом их имена должны оставаться в открытом доступе.
Разрыв связи голоса и голосующего
Судя по исследованному коду, система сохраняет в цепочке блоков транзакцию голосования, которая содержит как идентификатор голосующего, так и поданный им голос, пусть и в зашифрованном виде.
Ключ, требуемый для расшифровки голоса, сейчас вырабатывается перед голосованием на компьютере администратора системы и разделяется на части, которые выдаются независимым наблюдателям и членам комиссии — хранителям ключа.
Ассоциация поданного голоса (пусть и в зашифрованном виде) и идентификатора голосующего является нежелательным фактом с точки зрения сохранения тайны голосования.
Разрыв связи зашифрованного голоса и идентификации голосующего позволит безопасно раскрыть ключ дешифровки голосов после завершения голосования для независимого подсчета голосов наблюдателями на узлах аудита без риска деанонимизации голосующего.
Возможность пересмотра собственного голосования
В настоящий момент, система не позволяет голосующему изменить единожды поданный голос. Это делает систему беззащитной перед недобровольным голосованием.
Чтобы снизить риск понуждения к голосованию, система должна позволять повторное голосование вплоть до завершения голосования, с учетом в итоговом результате только последнего поданного голоса.
Открытый API
В настоящий момент, система жестко привязана к разработанному пользовательскому интерфейсу на основе браузера.
Такая жесткая привязка увеличивает риск обмана голосующего со стороны недобросовестного разработчика, либо вредоносных программ, вносящих искажения в пользовательский интерфейс.
Открытый, хорошо документированный программный интерфейс системы позволяет конкурентное развитие клиентских приложений, при этом рыночный выбор лучших из них категорически снижает риск обмана со стороны разработчика, а их разнообразие затрудняет разработку вредоносных программ, которые могли бы нанести массовый вред.
Заключение
Мы, сообщество профессионалов IT, можем оказать решающее влияние на создание действующей, прозрачной, эффективной системы электронного голосования на территории России. Нашей экспертизы с нетерпением ждет сообщество независимых наблюдателей. Попробуем сделать наши выборы чуть честнее.