Дисклеймер: у меня немалый опыт наблюдения на выборах — в основном в России, пару раз на Украине. Мне кажется что я кое-чего понахватался — поэтому, в надежде что моё мнение чего-то стоит, хочу записать что думаю про «нестандартные» формы голосования.
Ещё дисклеймер: я не то чтобы очень слежу за выборами в США, любимого кандидата у меня там нет.
Пост начался как комментарий сюда, но получилось длинно.
Чего в целом следует хотеть от процедуры волеизъявления на выборах? Ну, лично мне, среди прочего, хотелось бы такого:
— голосуют только те, у кого есть право голоса
— проголосовать можно только один раз
— голосование тайное: нет способа проконтролировать, за кого человек проголосовал
— внешний наблюдатель может убедиться в корректности процедуры
Как организовать такую процедуру, чтобы это всё было?
Вы удивитесь, но «классическая» схема голосования — с бумажными списками избирателей, бумажными бюллетенями, кабинками для голосования и урнами для бюллетеней — при добросовестной организации работает в этом смысле гораздо лучше, чем о ней принято думать.
Голосуют те, у кого есть право голоса? Да, избирательная комиссия проверит документы перед тем, как выдать бюллетень. Голосовать можно один раз? Да, каждый избиратель приписан к конкретному участку, при выдаче ему бюллетеня в списке избирателей сделают отметку, и второй раз уже не выдадут — а на «чужом» участке голосовать нельзя. Нет способа проконтролировать, за кого человек проголосовал? Да, его нет: галочка тайно поставлена в кабинке для голосования, и эта тайна навсегда растворяется в урне для голосования уже через несколько секунд.
Есть схемы давления на избирателей, которые пытаются эту тайну «взломать» — можно потребовать у избирателя фото бюллетеня, или можно выдать уже заполненный, а взамен потребовать вернуть чистый — но и в этом случае у избирателя есть возможность извернуться, испортив бюллетень: поставил галочку, сделал фото для отчёта, поставил ещё галочек — а дальше бюллетень можно бросить в урну так или попросить у избирательной комиссии новый взамен испорченного. Сложно? Да, сложно — но эта возможность есть.
Вот этот момент стояния в кабинке и принятия собственного, тайного решения о судьбе своего голоса — он в этой схеме голосования есть, и его не следует недооценивать.
Ну и конечно внешнее наблюдение. «Взломать» классическую схему с урнами и бюллетенями так, чтобы внешний наблюдатель (если он есть) ничего не заметил — это не так-то просто. Всё же на виду: вот с утра пустые урны, вот чистые списки избирателей. Весь день избиратели получают бюллетени, расписываются за них в списках, кладут бюллетени в урны. Вечером по спискам подсчитываем, сколько бюллетеней должно быть в урнах, потом вскрываем урны и пересчитываем бюллетени там. Если их там сколько должно быть или чуть меньше — ОК, если больше — был вброс.
Всё это происходит в одном помещении, в ограниченные сроки и на виду у каждого, кто желает смотреть. Внешний наблюдатель либо видит, что всё хорошо, либо видит, что от него что-то пытаются скрыть (не показывают чистого списка или чистых урн до, не дают убедиться в корректности подсчёта списков или бюллетеней после, не пустили на участок вообще, etc) — и делает выводы.
Один из известных способов «взломать» эту схему — т.н. «карусель». Группа граждан приходит на чужой участок, там находящийся с ними в сговоре член избирательной комиссии выдаёт им бюллетени, записывая их в список под именами тех, кто имеет право на этом участке голосовать. Группа граждан голосует и едет на следующий.
Схема эта сложна, дорога, плохо масштабируется, оставляет бумажный след и требует сговора очень большого количества людей — самих карусельщиков, членов избиркомов, организаторов карусели — и потому легко вскрывается, если есть кому вскрывать.
Но как только голосование выходит за рамки «классической» схемы, всё становится сложнее.
Возьмём, например, голосование через интернет.
Во-первых, встаёт вопрос доверия к организатору голосования. Окей, есть сайт где можно голосовать, и который потом расскажет результаты, а как узнать что результаты верные? Всё крутится на серверах организатора, и зайти туда по ssh внешнему наблюдателю никто не даст (и правильно сделает). Мечта фальсификатора: достаточно одному человеку в одной базе данных подправить пару строк — и всё. Шито-крыто.
«Блокчейн!», подумаете вы, и усугубите следующую проблему:
Во-вторых, голосование через интернет нарушает тайну голосования — потому что даёт третьим лицам возможность контроля над процессом волеизъявления.
Как бы сильно эти третьи лица ни стращали избирателей, в классической схеме избиратель всё равно ставит галочку тайно, в кабинке для голосования, и после того, как бюллетень брошен в урну — никто никогда не узнает, где именно она стояла. Если же голосование происходит через интернет, то «зависимых» избирателей — бюджетников, военнослужащих — достаточно завести в кабинет к начальству, где стоит компьютер с открытым браузером, и сказать: «голосуй». И проследить что голосуют «как надо».
Ещё в классической схеме не так-то просто купить чей-то голос: деньги избиратель возьмёт, но поставит ли галочку куда обещал? Голосование же тайное, причём принудительно тайное. Но если дело происходит через интернет, то достаточно попросить избирателя проголосовать на сайте при скупщике и только потом расплатиться.
Окей, скупка голосов и принуждение к голосованию — дело незаконное, а как насчёт схемы поцивилизованнее? Вот такой: агитаторы кандидата Х проходят по домам и задают вопрос: «за кого хотите голосовать?». Если избиратель отвечает «за кандидата Y», то с ним прощаются, а если «за X» — то «о, а вы знаете, что вы можете проголосовать заранее через интернет? давайте мы вам поможем!». И помогут.
Предположим, лично вы имеете твёрдый характер, давлению не поддаётесь и таких агитаторов шлёте — но не все имеют твёрдый характер. Кто-то хотел сделать приятное этим милым девочкам-агитаторам (чего не сделаешь ради девичьей улыбки). Кто-то назвал Х, потому что если открыто поддерживать Y, то на работе/учёбе будут проблемы. Кто-то вообще на выборы не собирался. Кто-то на самом деле сомневается и окончательное решение принял бы позже, но тут пришли эти вот… ну и ладно, бог с ними.
Ничего такого уж очевидно плохого в этой схеме нет, но точно ли мы хотим превращать выборы в соревнование о том, у кого агитаторы наглее и лучше на людей давить умеют?
И кстати про блокчейн. Часто электронные голосования для обеспечения прозрачности позволяют человеку подтвердить, что его голос засчитан правильно — путём публикации посоленных хэшей голосов, где соль известна только проголосовавшему, или добавления их в блокчейн, или ещё чего-нибудь в этом роде.
Но если вы можете подтвердить для себя, что вас голос засчитан правильно, то вы можете подтвердить это и для кого-то ещё. И какие тут открываются возможности!
Облегчается «зависимое» голосование. Нет нужды заставлять зависимого избирателя голосовать при начальстве, достаточно проверить пост-фактум.
Сильно облегчается «скупка» голосов. От продавшего голос избирателя теперь можно потребовать подтверждения.
Появляются возможность «общественного» давления на избирателя. «Говоришь, что голосовал за X? Докажи! А то что-то мы думаем, что ты Y supporter, а таким в нашем коллективе не место!».
И так далее.
И вот стоит ли экономия на бумаге всех этих проблем?
Попробуйте посмотреть таким взглядом на другие формы голосования, которые выходят за рамки «классической» схемы: голосование по почте, голосование на voting machines вместо бумажных бюллетеней, досрочное голосование, многодневное голосование — вы увидите везде те же проблемы: либо нарушается прозрачность процедуры, либо тайна голосования, либо и то, и другое.
Интересно заметить, что у нас про эти проблемы все всё понимают. Когда кровавыйпутинскийрежим™ пытается ввести голосование по почте (уже передумали, «оно сопровождается скандалами обычно: невозможно наблюдать, контролировать» — да, всё так) или через интернет (ввели, получили принуждение к голосованию и сливы данных), про-демократическая либерально настроенная общественность выступает против и верно указывает на эти проблемы.
И ещё интереснее то, как за океаном прогрессивная либерально настроенная общественность отрицает возможность существования этих проблем вообще. Там люди на полном серьёзе годами борются против того, чтобы у избирателей при выдаче бюллетеня спрашивали документы — «Voter ID Laws Are Discriminatory». Там пишут заголовки в духе «Trump makes unsubstantiated claim that mail-in ballots will lead to voter fraud», где «unsubstantiated» аргументируется тем, что «мы тут поисследовали, и кажется такого обычно не происходит» (надеюсь, эти люди не занимаются информационной безопасностью). Там, наверное, мне не удалось бы написать этот пост, не испортив отношений с кем-нибудь, и не прослыв conspiracy theorist и trump supporter.
Дичь, разве нет?
Я не думаю, что меня читает так уж много граждан США с правом голоса, так что трампосрача надеюсь избежать (дисклеймер: я не trump supporter), но мы все где-нибудь избиратели. Не сейчас, так потом, в Прекрасной России Будущего — или Прекрасной Белоруссии Будущего, или ещё где-нибудь.
И как по мне — избирателю хорошо бы помнить, что задача «чтобы президентом/депутатом/мэром стал X, а не Y» — это важно, но задача «чтобы президентом стал тот, кого хочет видеть президентом большинство» — важнее.
И для её достижения хорошо бы иметь прозрачные, надёжные, устойчивые к атакам и попыткам манипуляций процедуры. Даже если кандидат Y их тоже поддерживает.
Неужели до сих пор математики-криптографы не придумали какую-нибудь хитрую схему, лишённую этих недостатков?
Я совсем не криптограф, но вот первое, что я смог придумать минут за 15:
Можно, например, разделить голосование на несколько организаций. Первая организация хранит список identity тех, кому можно голосовать, и по аутентифицированному запросу избирателя выдаёт ему обезличенныq сертификатов с некоторым id. Затем избиратель формирует запрос R, вкладывая в него сертификат, имя кандидата, подписывает и отправляет его во вторую организацию. Эта организация формирует поток случайных данных K, вычисляет C = (R XOR K), кладёт C в какой-нибудь блокчейн, сообщает избирателю K и запоминает K в базу. Когда голосование заканчивается, третья организация запрашивает у второй базу K, вычисляет R = (C XOR K) и выполняет подсчёт.
Если избирателя вынуждают проголосовать за некоторого кандидата, то он может сформировать запрос R’, затем вычислить K’ = (C XOR R’) и использовать это значение в качестве «доказательства» отправки запроса R’.
P.S. На всякий случай напишу сюда, что я получил твоё письмо (2107211612878261@mail.yandex.ru) и ответил на него. Если мой ответ не пришёл, то сообщи мне об этом.