Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В ходе создания систем электронного голосования необходимо использовать параллельный аудит. Это такой аналог наблюдателей на обычных выборах.
Существует несколько способов организации параллельного аудита:
- с использованием криптографии
- с использованием бумажного подтверждения
- с использованием аудиоконтроля
- или даже технологии двойной записи (на электронный носитель и бумагу).
Профессор Ребекка Меркьюри, создатель концепции VVPAT (аудит по заверенным избирателями бумажным бюллетеням), обосновывает эффективность распечатывания бумажного бюллетеня с целью дальнейшего его подтверждения избирателем перед окончательным учётом (впоследствии этот метод стали называть «Метод Меркьюри»). Чтобы быть окончательно подтверждённым, голос должен быть подтверждён избирателем без использования визуальных или аудиосредств. Например, если избиратель использует сканер штрих-кода для того, чтобы подтвердить свой выбор, то такой голос не может считаться подтверждённым, так как фактически его подтверждает не сам избиратель, а электронное устройство.
Системы голосования со сквозным аудитом выдают избирателям подписанные квитанции, которые можно забрать домой. Такие квитанции не позволяют узнать, как именно проголосовал избиратель, но позволяют проверить, что голос был учтён, узнать общее количество голосов и результаты голосования.
В системах элеронного голосования это может быть некий GUID, введя который в личном кабинете избиратель может проверить за кого отдан его голос. Или сгенерированный приватный ключ, возможно даже одноразовый, с помощью которого избиратель может расшифровать только совой голос.
Также системы аудита могут использоваться для обнаружения неполадок оборудования и случаев мошенничества. В случае использования системы VVPAT, бумажный бюллетень является основным документом, а электронные голоса используются только для предварительного подсчёта. Для успешного аудита устройства для голосования необходима целая последовательность мероприятий, которая разработана, описана и именно за ее исполнением следят между народные наблюдатели (хотя и не только за этим).
На текущих выборах параллельный аудит происходил посредством печати данных из очереди на сервере до записи в блокчейн, то есть его инициировал централизованный орган и при этом у пользователя не было возможности проверить был ли учтен его голос была отключена возможность пользователям просмотреть результат своего голосования и проконтролировать правильно ли учли его голос избиратели не подтверждали свой голос без использования электронных средств.
Наша восстановленная схема выглядит так (комментарии, предложения приветствуются):
- пользовательский интерфейс и формы бюллетеня
- анонимайзер (расположен на стороне ДИТ) в коде на github он отсутствовал
- генератор бюллетеня
- передача данных для параллельного аудита (передача осуществляется с сервера ДИТ, до попадания данных в БЧ):
4.1.мониторы, установленные в УИК
4.2.печать данных на ленте (на печатном носителе) — кто проголосовал - запись данных в БЧ
5.1. вторая печатная лента в зашифрованном виде печатается в процессе голосования
Таким образом можно говорить о том, что сквозной аудит не проводился на самом деле. Более того использование принтеров для дублирования расшифрованных данных из очереди на сервере ДИТ оставляет возможность для администраторов системы ЭГ сопоставить результат голосования и избирателя.
Здесь следует сделать пояснение: ДИТ утверждает, что на сервере существовала задержка времени, которая призвана была сократить до минимума или полностью исключить возможность сопоставить данные избирателя (профиль на портала mos.ru) и результат его голосования. Тем не менее в ходе исследования мы посчитали, что эта задержка была не достаточно большой и оставляет хоть и низкую, но ощутимую вероятность сопоставления данных до записи в блокчейн.
Энтропия зависит от времени с точностью до секунды и координаты клика мышью.
userEntropy = Math.floor( (e.clientX + e.clientY) * (Math.floor(new Date() / 1000)) );
Координаты клика находятся всегда где-то в области соответствующей кнопки. Даже с учётом, что страницу можно открутить вверх-вниз и кнопка по вертикали сместится, всё равно это зона, допустим, 1000x200 точек. Время с точностью до секунды легко определить, так мы знаем, когда человек голосовал. Логирование действий пользователей и отправки голосов никто не отменял. Таким образом можно свести к нескольким сотням возможных значений.
Даже если, допустим мы не знаем время голосования пользователя i, то всё голосование длится 12 * 3600 = 43200 секунд. Итого всего 1000x200x43200 ~ 8,5 миллиарда. Можно на простом ноутбуке перебрать вероятные значения для каждого пользователя за несколько десятков минут.
Меняем ноутбук на сервер и gpu и получаем магию, сводящую энтропию к 0.
Поэтому мы можем утверждать, что администраторы портала проведения ДЭГ при наличии заинтересованности могли с легкостью сопоставить данные избирателя и результат его голосования.
Оксана. Координатор технической группы.