Бюллетень Бисмарка и облачная демократия
Мало кто задавался вопросом, что же конкретно стоит улучшать в современной системе голосования и системе выборов. Большинство придумывают различные костыли, якобы ремонтирующие/подпирающие недостатки существующей системы голосования. Но ведь никто не проводил ее анализ. Так же как и не существует требований к некой идеальной системе выборов.
Грубо говоря, что вообще хотим получить в финале? Какую систему? Как должна выглядеть идеальная система выборов? Что она должна уметь делать? С какими другими(!) системами будет взаимодействовать и как она это будет делать?
К любой системе голосования мы можем предъявить следующие разумные с точки зрения любого человека требования:
- Прозрачность (сюда входит и отслеживаемость/проверяемость каждого голоса самим избирателем).
- Отсутствие/невозможность различных фальсификаций.
- Обратная связь для оспаривания ошибочных результатов.
Итак, для начала рекомендую прослушать 7-минутный ролик Дэвида Бисмарка (очень толковый программист из Швеции) об идее его бюллетеня.
Исходные посылки Дэвида Бисмарка следующие:
- ЦИК (Центральная Избирательная Комиссия) не знает, кто за кого голосовал.
- Существует некая программная процедура, позволяющая получить соответствие «пин-код vs. порядок кандидатов в бюллетене» (и обратно). Без нее никак не собрать вместе, за кого же именно голосовали избиратели на самом деле.
- Введя пин-код в онлайн систему можно узнать, за кого голосовал тот, у кого данный пин-код.
- Пин-код – никак не связан с ФИО избирателя (выдается случайным образом). Т.е. отсутствует соответствие «пин-код vs. ФИО избирателя».
Вы берете свой бюллетень, читаете, выбираете нужного кандидата слева и ставите галочку напротив него справа. После этого вы разрываете бюллетень пополам. Слева у вас остаются названия кандидатов, вы можете их сжечь, выкинуть, унести домой на память, просто для себя сохранить – они не имеют никакого значения, просто информативная иллюстрация правых галочек. А правую сторону вы можете отсканировать или сунуть в избирательный ящик.
При подсчете важны два объекта, сканер должен передать информацию о них в центральную базу данных избирательной комиссии. Первый – число – номер галочки по порядку, например, 3 – то есть вы проголосовали за третьего по счету кандидата на вашем бюллетене. Второй объект – это пин-код, ключик, который расшифровывает, что в данном случае значит галочка в третьем квадратике. Этот же ключик может быть использован и вами, если вы взяли этот листик с собой, отсканировали или сфотографировали это пин-код.
Вы можете проверить, как учтен ваш голос. Заходите в систему, например, http://голосование.ком/выборы/, вводите там ваш QR-код (ключик, взятый с бюллетеня) и смотрите, верно ли, что у вас ваша галочка учтена правильно. Но при этом, ни один человек на земле, никакие партии, никто и никогда не в состоянии разгадать, за какую партию лично вы проголосовали. Тайна голосования полнейшая, при этом полная прозрачность для голосующего, имеющего свой ключик.
Как это работает дальше? Дэвид Бисмарк не раскрывает (критика его идеи будет несколькими абзацами ниже).
Одна из возможных моделей дальнейших действий такова (как ее видит Илья Сегалович, сооснователь «Яндекса»): в день X после голосования у нас есть зашифрованная(!) база данных с результатами текущего голосования. Т.е. никто пока не знает финальных результатов. Такая база из нескольких сотен миллионов записей (в зависимости от числа голосующих). Чтобы ее расшифровать, надо чтобы дешифровальный ключик собрался из отдельных кусков, находящихся у каждого участвовавшего кандидата (или партии). Если они согласны с тем, как выборы проходили, то предоставляют свою часть ключа, ключи собираются вместе, складываются, база с голосами расшифровывается. Результаты оглашаются. Вуаля! Выборы прошли.
Что делать, если кандидаты не согласны с прошедшими выборами, Илья Сегалович не уточняет. Предполагаю, придется проводить выборы снова, т.к. без части ключика данного несогласного кандидата – расшифровать данные всего голосования невозможно.
Взято отсюда: Как сделать выборы честными (навеяно нечестными выборами 2011) и переработано.
На мой взгляд система, предложенная Дэвидом Бисмарком, хоть и кажется красивой и элегантной, на самом деле мало от чего защищает и никаких реальных преимуществ не даёт. Пин-код и оторванная половина всего лишь делают бюллетень не читаемым для человека, что, в общем-то, нам совсем и не нужно. Анонимность голосования обеспечивают и обычные бюллетени. Единственное, что даёт данная система – это возможность проверить правильность учёта своего голоса, но никаких возможностей для оспаривания эта система не предоставляет. Территориальные избирательные комиссии могут просто напросто подделать левую половину бюллетеней, заменив её содержание. Вы голосуете, к примеру, за кандидата-А, приходите домой, вводите пин-код, и узнаёте страшную правду, что оказывается вы проголосовали за кандидата-Б. По вашему пин-коду отмеченная вами галочка действительно соответствует кандидату-Б, и кто ж виноват, что вы не туда галку поставили? Оставшаяся у вас на руках левая половина теоретически может быть использована для доказательства факта фальсификации, но для этого бюллетень должен обладать какими-либо степенями защиты. Но даже если вы докажете, что вас обманули, в лучшем случае ваш голос просто аннулируют (что согласно действующему законодательству [как РФ, так и Украины] размажет ваш голос между кандидатами-лидерами). От вброса бюллетеней эта система не защищает вообще никак. И кстати, фотографировать/сканировать пин-код не очень удобно, да и не всякий телефон сможет его сфотографировать достаточно чётко.
Дополнительно стоит заметить, что тот, кто имеет доступ к программной процедуре проставления соответствий, легко может организовать «вброс» дополнительных записей в базу данных с «галочками, проставленными в нужных местах (за нужных кандидатов)». Вопрос электронной безопасности такой базы данных – это отдельная тема для отдельной статьи (надеюсь коллеги, разбирающиеся в безопасности баз данных напишут эту часть).
А пока (в рамках данной статьи) примем, что взломать такую БД в «вбросить» в нее дополнительные данные – невозможно.
[Изменено и переработано относительно оригинальной статьи в контексте анонимности и нескольких других моментов]
Вариант организации выборов с учетом российской/украинской (а, возможно, и чьей-то еще) специфики, который защищен и от «вброса», и в какой-то мере от «карусели». Система выборов онлайновая, то есть голоса обрабатываются непосредственно в момент опускания бюллетеня в урну и по зашифрованному интернет-каналу голос отправляется в ЦИК.
Исходные посылки альтернативного варианта (отличие от варианта Дэвида – минимальны, но devil in the details):
- ЦИК имеет полный и корректный список избирателей.
- ЦИК знает, что избиратель «имярек-1» уже проголосовал, а «имярек-2» еще нет.
- ЦИК не знает, кто за кого голосовал.
- Существует некая программная процедура, позволяющая получить соответствие «пин-код vs. порядок кандидатов в бюллетене» (и обратно). Без нее никак не собрать вместе, за кого же именно голосовали избиратели на самом деле.
- Введя пин-код в онлайн систему можно узнать, за кого голосовал тот, у кого данный пин-код.
- Пин-код — никак не связан с ФИО избирателя (выдается случайным образом). Т.е. отсутствует соответствие «пин-код vs. ФИО избирателя».
- База данных голосования и программный код – защищены от взлома и от «нечестных» сотрудников самого ЦИК.
- Прокуратура и суды – действительно наказывают за нарушения процедур выборов.
Как всё это работает:
- Накануне выборов (а лучше сильно заранее, с периодическим/регулярным обновлением) территориальная избирательная комиссия (или другой орган, ответственный(!) за этот процесс) собирает списки избирателей в привязке к адресам и подаёт их в ЦИК. На основании этих списков формируется список людей, которые могут голосовать, другие люди к выбором допущены быть не могут. Каждый человек онлайн на специальном сайте может заранее проверить, допущен ли он к приближающимся выборам и учтен ли вообще в системе.
- Избиратель приходит на избирательный участок, подаёт свой паспорт, оператор сверяет данные паспорта и внешность человека (примерно как при пересечении границы), вводит эти данные в компьютер и отправляет запрос в ЦИК.
- ЦИК проверяет факт того, что данный человек ещё не голосовал, автоматически генерируется номер бюллетеня (пин-код) и отправляется оператору [security issue: в этот момент ЦИК теоретически может проставить соответствие «пин-код vs. ФИО избирателя» (и, имхо, должен, но временно, до завершения тайм-аута жизни номера бюллетеня)]. В данном сгенерированном номере (пин-коде) закодирован порядок следования кандидатов на бланке.
- Оператор получает номер бюллетеня, сгенерированный ЦИКом, печатает бюллетень с этим номером на принтере, ставит на нём печать и свою подпись. Отдаёт его избирателю.
- Избиратель идёт в кабинку, делает свой выбор, ставит галочку, после чего вставляет листок в сканер, который просто сканирует бюллетень, выводит на дисплей результат отсканированного выбора в виде «Номер бюллетеня: NNN, Вы проголосовали за пункт №х» и запрашивает подтверждение у избирателя, правильно ли прочитал сканер. Если пользователь отвечает «да», то эти данные (номер бюллетеня и последовательный номер пункта, за который отдан голос) уходят в ЦИК. ЦИК, получив обратно выданный им номер бюллетеня не менее, чем время тайм-ауда назад, маркирует избирателя как проголосовавшего и удаляет запись соответствия «пин-код бюллетеня vs. ФИО избирателя» из временной таблицы своей базы данных. Обработанный бюллетень остаётся на руках у избирателя, с ним он уходит домой.
Если избиратель случайно испортил бюллетень (сканер его не примет), то можно подойти к оператору, он пошлет запрос на отмену бюллетеня по причине брака (чтобы не ждать истечения времени жизни выданного бюллетеня), запросит новый номер бюллетеня, и снова распечатает его. И так можно повторять сколько угодно раз, пока избиратель не заполнит бюллетень правильно и пока его голос не будет отправлен в ЦИК. Либо в процессе отмен-распечаток избиратель вообще передумает голосовать, тогда в системе он так и останется не проголосовавшим, т.к. даже выданные ранее бюллетени помрут по тайм-ауту, а новые не будут запрошены.
По номеру бюллетеня (который избиратель забрал с собой после успешного голосования) в интернете в режиме реального времени можно посмотреть как он был учтен: либо принят голос за того или иного кандидата, либо отменен по причине просрочки или порчи бюллетеня. Также можно будет загрузить весь многомиллионный список номеров бюллетеней, сгруппированных по кандидатам – для выборочной проверки правильности подсчёта голосов сторонними наблюдателями и простыми энтузиастами.
Поскольку у избирателя остается на руках заполненный им бюллетень с номером, сделанным выбором, печатью и подписью члена избирательной комиссии, в случае если его голос всё же был посчитан неправильно, избиратель может обратиться в избирательную комиссию для исправления ошибки в индивидуальном порядке. Если там не принимают, то обратиться в прокуратуру или другие соответствующие органы.
Все действия с бюллетенем логгируются в системе. В ней видно ФИО оператора, выдавшего бюллетень, а также все другие действия этого оператора с бюллетенем конкретного избирателя. Таким образом происходит персонификация ответственности за возможные нарушения с бюллетенями. И если суд по неким причинам не помогает, избиратель всегда может «прийти в гости» к оператору и задать свои «весомые» вопросы ;).
Ограниченное время жизни бюллетеня частично защищает от карусели – пока бюллетень будут носить туда-сюда, его время жизни в системе закончится. Можно будет, конечно, получить новый бюллетень (мол, не успел проголосовать), но он будет чистый, плюс это дополнительный риск засветить карусель. От людей, которые за деньги, но по своей воле будут голосовать за того или иного кандидата, защититься невозможно в принципе – с этим надо просто смириться. Подкуп мне кажется совершенно нормальным элементом конкурентной борьбы: в одних магазинах дают скидку в 5%, в других — бесплатный шампунь, и т.д. Если кто-то готов обещания кандидата променять на 500 тугриков — значит эти обещания стоят меньше этой суммы.
Онлайновый учет использованных бюллетеней (и проголосовавших избирателей) позволяет защититься от вброса в самом начале выборов (до начала выборов вброса быть не может просто потому, что ЦИК не выдаст номера бюллетеней раньше начала выборов на участке). Если избирательная комиссия осуществит вброс, то когда придут люди, от имени которых был осуществлен вброс, система сообщит им, что они уже проголосовали на таком-то участке. Т.е. моментально можно выяснить, кто из операторов и какой именно избирательной комиссии «выдавал» (и, соответственно, вбрасывал) вброшенный бюллетень (извините за тавтологию).
Вброс в самом конце выборов от имени тех, кто не пришел на выборы, теоретически возможен, но нужно учесть, что после окончания выборов голоса уже не будут приниматься ЦИКом, плюс время жизни 15 минут, плюс бюллетени загружаются в сканер по одному. Человек с пачкой бюллетеней перед сканером не сможет остаться незамеченным сторонними наблюдателями.
Дополнительный плюс данной системы ещё и в том, что она позволяет не привязывать избирательные участки к конкретным адресам. Избиратель может придти в любой избирательный участок, который ему ближе с учетом его реального места проживания или места нахождения в день выборов, и проголосовать. Благодаря тому, что всё идёт через интернет и подтверждается ЦИКом, избиратели не могут проголосовать дважды на разных участках.
Даже анонимность в данной системе реализована (хотя существуют вопросы безопасности, которые должны быть решены на уровне программирования и уровней доступов к базам данных). Плюсы данной системы перевешивают незначительные минусы (необходимость в сканерах, немного затянутый процесс голосования), т.к. практически полностью лишают избирательные комиссии возможности манипулировать с голосами. От таких местных комиссий, по сути, уже ничего не будет зависеть — они простые исполнители.
При чем здесь облачные технологии, спросите вы? А очень просто. Когда у нас есть одна централизованная база данных, где хранятся результаты голосования, то ее [базу], а точнее, компьютер (или кластер, но это сложнее), на котором она установлена, вполне можно атаковать извне. Ведь система-то подключена во внешний мир, иначе описанные выше принципы и методики не заработают.
Но если наша база данных находится в облаке, то какой конкретно компьютер вы, уважаемые хакеры, будете атаковать? На такую базу данных даже бомбу не сбросить.
Т.о. безопасность хранения данных — лежит где-то по дороге в облака 🙂
Здесь привожу ссылки на документы и статьи, благодаря которым я таки решился написать данный текст, хотя и не все вещи из перечисленных ниже документов были мной использованы. Но вдруг кому будут полезны 🙂
- Дэвид Бисмарк: Электронное голосование без обмана => http://live9.ted.com/talks/lang/ru/david_bismark_e_voting_without_fraud.html
- Как сделать выборы честными (навеяно нечестными выборами 2011) => http://www.66.ru/user/5180/blog/317699/
- О фальсификации тайного голосования => http://umonkey.net/blog/elections-2011/
- План модернизации прямых выборов => http://umonkey.net/blog.2010-09-16.direct-elections.html
- О книге «Облачная демократия» => http://umonkey.net/books/cdem/ (и сама книга: http://cdem.ru/)
Комментарии
Ravlik (25 Фев, 2013)
мнение: если «прокуратуры и суд» не обеспечивают законность процедуры то глубоко фиолетовы все эти вычурные механизмы с пин-кодами и шифрованными ключами. Ручной суд «докажет» что чёрное это белое и пошлёт всех несогласных.
А вот если правоохранительная система действительно борется с правонарушениями, а не недругами режима… тогда и финтифлюшки избыточны, всё и так будет хорошо.