Комментарии 35
Объясните мне, как этой штуке можно доверять?
Я уж не говорю о возможности недопуска части пользователей через портал ЕСИА. Если на физическом участке это вызывает съемку нарушений и неприятные вопросы, то в случае когда портал ЕСИА не работает у нескольких человек — это официально не нарушение.
# SELECT COUNT(*) AS `votes`, `candidate` FROM `votes` GROUP BY `candidate`;
# Запрос, вроде правильный, но выдаёт не то, что нам нужно.
# Исправлено на:
SELECT 80 AS `percent`, 'Our Greatest Leader' as `candidate`
UNION SELECT 20, 'pitiful opposition candidate';
Кажется что правильно было выдавать "чистый" бюллетень (электронный, бумажный, неважно), но в процессе постановки голоса ты можешь (кроме голоса) добавить к нему произвольную строку или число, а потом публикуются пары "число" — "голос"
однако все равно есть две проблемы:
- никак нельзя убедиться что в списке проголосовавших нет "мертвых душ"
- любая возможность проверить голос также открывает возможность проверить голос любым "начальникам" бюджетников.
Тут проблемы другого порядка — как обеспечить тайну голосования и сохранить возможность проверить свой голос для избирателя. Не сказать, чтобы нерешаемая, но проблема. Которая стоит обдумывания.
По моему проблема как раз принципиально нерешаемая. Если избиратель может проверить свой голос — то его может попросить его руководитель или преподаватель (в случае студентов), командир (в армии), проверить результат при нем.
Всё вместе — анонимность, верифицируемость, отсутствие бюллетеней — да, невозможно.
- Или у вас нет анонимности: все подписывают свои голоса, всё можно проверить. Но тогда нет тайны голосования.
- Или у вас нет верифицируемости: хоть все голоса анонимные, но вы (и никто другой) не можете проверить, что конкретно ваш голос учтён именно так, как вы голосовали.
- Или у вас нет бюллетеней, и кто угодно может вбросить сколько хочет голосов. Зато никто уж точно не может связать ничей голос ни с кем.
Промежуточная сущность в виде пустого бюллетеня как раз позволяет получить анонимность и верифицируемость, с практичным способом сохранения тайны голосования: уничтожить свой "корешок" от бюллетеня после проверки, что ваш голос учтён. Это не спасает от недобросовестной системы голосования, которая записывает, кому какой бюллетень был выдан. Равно как и от голосования под присмотром, когда у вас нет времени проверить свой голос и забыть номер бюллетеня.
Если номер на бюллетене вводить самому то это не дает возможность "системе" узнать как кто проголосовал — но все равно дает возможность это сделать "начальнику" пусть и не исключая возможность огласки
Если «номер» граждане будут вводить сами без ограничений, то один гражданин сможет отправить сколько угодно голосов, когда ему положен лишь один. Соответственно, должна быть некая сущность, которая следит за тем, что у каждого гражданина есть возможность проголосовать не более одного раза.
Если анонимность не нужна, то всё просто: в списках может быть только один голос, подписанный ключом гражданина. Если же надо сохранить тайну, то как и с бумажным голосованием: в одном месте списки граждан, получивших бюллетени (одному гражданину — один бюллетень), а в другом — заполненные бюллетени (один бюллетень дважды подать нельзя, и подделать новый нельзя). Всё это держится на том, что тот, кто выдаёт бюллетени, не записывает в тетрадочку, кому какой был выдан.
В случае электронных бюллетеней можно сделать так, что генерирует «пустые бюллетени» одна сущность, а выдаёт их гражданам — другая. Причём вторая не знает, какой конкретно бюллетень выдаёт, а первая — кому нагенерированное уйдёт. Это только гражданин увидит.
По моему проблема как раз принципиально нерешаемая. Если избиратель может проверить свой голос — то его может попросить его руководитель или преподаватель (в случае студентов), командир (в армии), проверить результат при нем.
Почему не решаемая? Пусть, скажем, пользователь проверяет свой голос при помощи некоторого ключа. Можно предусмотреть в системе возможность выдачи двух ключей: один выдаёт реальный голос, а второй — фейковый — выдаёт какой-то другой.
Если попросят, показываешь фейковый.
Отлично, и как теперь вы и считающие итоги смогут понять, что в общую сумму должен идти ваш реальный голос, а не подложный? Почему таким же образом не сможет проверить ваш реальный голос Большой Брат? Что мешает Брату попросить вас показать все голоса, раз это публичная фича системы? Что мешает вам его послать при этом?
Не надо пытаться решить политические проблемы техническими средствами.
Если вы задаёте вопросы, на которые трудно ответить, — это не доказательство невозможности.
Вы хотите, чтобы я сразу предложил вам алгоритм? У меня его нет, я над этой проблемой вообще не работал и долго не думал. Да и я не криптограф. Но ещё раз повторю, что отсутствие алгоритма у меня — это не доказательство безапелляционного утверждения, что такого алгоритма нет.
Я лишь сомневаюсь в том, что это невозможно. Вот если вы предъявите доказательство невозможности или нереализуемости, то тогда да, я соглашусь, деваться некуда.
Давайте определимся, что мы говорим о криптографической системе, где пользователь голосует тайно, а потом его просят показать, как он проголосовал. Без пыток, без скрытых камер, которые записывали его действия. Понятно, что если человека заставить голосовать открыто при начальнике, то ничего не будет работать.
Отлично, и как теперь вы и считающие итоги смогут понять, что в общую сумму должен идти ваш реальный голос, а не подложный?
Сразу замечу, что я не предлагаю какую-то конкретную схему, я говорю, как это может выглядеть концептуально.
Например, если я проголосовал за, система может записать три голоса: за, за, против. Последние два всегда за и против. Они компенсируют друг друга и на результат не повлияют. А выдаёт она два ключа — один позволяет найти и декодировать мой голос, а второй — найти и декодировать противоположный.
В момент выдачи он говорит, какой из ключей реальный, а какой нет, больше эта информация нигде не появляется и не сохраняется.
Я в момент получения ключа, запоминаю, что ключ A3BC75… — это от моего голоса, а ключ 74A09F… — фейковый. (Можно предложить и более простые способы запоминания.) Если я сам проверяю голос, то я знаю, какой ключ чему соответствует, и вижу, что мой голос ещё там. Если меня спросят, я уже могу показать второй ключ.
Да, к этой схеме, которую я сейчас за пять минут соорудил, есть вопросы, но я думаю, что если сформулировать разумные требования, то систему реально построить. Есть много работ по криптографическим системам в голосовании, наверняка, уже даже что-то такое придумали.
Почему таким же образом не сможет проверить ваш реальный голос Большой Брат?
Потому что для извлечения голоса нужен ключ, а у меня их два.
Что мешает Брату попросить вас показать все голоса, раз это публичная фича системы?
Ну, хорошо, я даю ему оба ключа. По одному ключу он видит, что я проголосовал за, а по второму против. Без меня он не узнает, где реальный голос, а где фейковый.
Что мешает вам его послать при этом?
Этот вопрос уже к системе голосования отношения не имеет. Большой брат, если он достаточно большой, может просто не пустить меня на голосование и проголосовать за меня.
Не надо пытаться решить политические проблемы техническими средствами.
Почему же? А закрытая кабинка для голосования — это не решение политической проблемы техническими средствами?
Да и мы сейчас не политическую проблему обсуждаем, а техническую.
Да и вообще, по теореме Эрроу идеальной выборной системы не существует.
Я не о том, что подобного алгоритма тайного голосования не существует и не может существовать. Я больше о том, что реальный мир с его реальными «начальниками», которые «заставляют» проголосовать «как надо» — это не алгоритм, правильность или осуществимость которого можно доказать или опровергнуть. Это нельзя сделать, точно так же, как нельзя доказать отсутствие белых ворон.
Обеспечить анонимность и проверяемость голосов — это техническая задача. Обеспечить неувольнение с работы за «неправильный» голос — политическая.
Конечно, технические средства усложняют давление и ведут к более свободному обществу, так как при достаточном уровне сложности «начальникам» становится влом заниматься подобными манипуляциями. Закрытая кабинка для голосования — отличное решение для эпохи, где у людей нет смартфона, которым они могут сфоткать свой бюллетень, например. А теперь можно давить на людей таким образом, если им влом заниматься фотошопом своей галочки.
Я думаю, что вшивать защиту от подобных «атак» в алгоритм голосования — это всё равно что расписываться в своём политическом бессилии.
Впрочем, ваша идея с балансирующими голосами интересная. Она позволяет продемонстрировать любой вариант голоса «проверятелям». Из сложностей: людям придётся доверять системе в том, что их скрытый, недоказуемый, истинный голос — действительно тот, который они отдавали. Если я даю голоса истинно-за#1, балласт-за#2, балласт-против#3, а получаю в ответ только доказательство#1 и доказательство#3 — то где гарантия, что мой второй голос записан в систему таким, каким я его давал, и вносит дисбаланс в нужную сторону? Только честное слово, похоже.
Если нет, то опять-таки должен быть какой-то уничтожаемый купон, который позволит мне проверить все голоса, а потом его съесть. И снова мой «начальник» может потребовать не съедать, или я считаюсь проголосовавшим «неправильно».
Только вот у нафотошопленной галочки есть plausible deniability. А у технически гарантированной доказуемости или недоказуемости — нет, by design. В итоге техническое решение выходит боком для политической проблемы.
Если я даю голоса истинно-за#1, балласт-за#2, балласт-против#3, а получаю в ответ только доказательство#1 и доказательство#3 — то где гарантия, что мой второй голос записан в систему таким, каким я его давал, и вносит дисбаланс в нужную сторону? Только честное слово, похоже.
Да, я хотел изначально про это написать, но понял, что чем больше деталей я описываю, тем больше я углубляюсь в решение конкретной инженерной задачи. А я хотел лишь концепт показать.
Можно, например, для двух выдавать ключ, позволяющий узнать значение, а для третьего некоторый секрет, позволяющий доказать, что этот третий существует, и что в тройке голосов один из элементов отличается.
Опять же, я не криптограф, я не знаю, как конкретно это делать. Возможно, я тут какого-то монстра изобретаю, а уже есть схема, которая делает то же самое, но гораздо проще.
Просто мне кажется, что всё это возможно провернуть. Вполне допускаю, что это только кажется, и можно доказать, что такую схему не построить. :)
После того как ключ собран и загружен, начинается подсчет итогов для их дальнейшей фиксации в блокчейне и последующего оглашения.
А сразу фиксировать в блокчейне каждый голос не судьба? Тут краеугольный камень всей системы. Нет мгновенной фиксации каждого голоса — нет доверия.
Очередеой Спутник.
Уровень и качество разработок — просто жуть. Для начала личный кабинет сделайте, чтоб корректно отображался и чтоб ваш винк не вис каждый час.
- Смарт контракты — дырявая фигня, написанная на коленке. Про ее уязвимости куча статей. Вся эта децентрализация — маркетинговая туфта. Всегда есть управляющий узел.
- Какая корелляция между блокчейном, всеми этими учётами, системами и озвучиванием итоговых результатов? Как, чем и кто сможет проверить, что результаты действительно из системы, а не из select 146 from dual ;
- Как наблюдатель сможет отслелить (какими независимыми, открытыми инстркументами), что голос избирателя ушел в систему, а не в помойку? Как я, как избиратель, смогу проверить, свой голос, что он за того, за кого я голосовал и как проверить, что он не просто показываетчя мне, а что встроен в результаты?
Вобщем и целом — очередна профанация и растрата бюддетных денег с сомнительными целями.
И все таки, почему не дать возможность считать голоса всем желающим? Как минимум, всем участвующим в выборах кандидатам. А также любому желающему внешнему наблюдателю. Какая разница отправлять зашифрованный и не привязанный к избирателю бюллетель в одну точку, или сразу на несколько серверов?
Выборы считать состоявшимися, если результаты подсчета у всех кандидатов сходятся.
Если у кого-то отличается от остальных и он уверен в фальсификации с других сторон, то просит своих сторонников проверить свой голос в блокчейне (да, такая возможность необходима, а для защиты от принуждения надо иметь теневой голос, т.е. два ключа для проверки своего голоса, и только пользователь знает какой настоящий. а теневой можно показывать работодателю).
А, главное — просит выйти этих людей на митинг. Значимые фальсификации — это десятки тысяч голосов. Это число гарантия, что такое количество людей невозможно подкупить. Далее следствие и суды просто набирают из этой толпы достаточное число людей, которые под присягой дают показания в уголовном деле против фальсификаторов.
Митинг необходим, чтобы продажные суды и полиция не делали липовые дела. Так как выход десятков тысяч людей, проверивших свои голоса, это гарантия что была фальсификация.
Единственная возможность здесь сжульничать — это если кто-то из кандидатов убедит своих последователей дать ложные показания (десятки тысяч человек, под угрозой уголовного преследования за ложные показания, серьезно?!). Но и это решается тем, что остальные кандидаты попросят выйти своих последователей. Чья толпа больше, тот и победил. Не думаю, что можно заставить солгать большую часть населения. Большинство людей хорошие.
А позднее, в цивилизованных условиях, у всех кандидатов будут сходиться результаты подсчета, и все будет ок.
Если есть теневые ключи, то как определить что результат голосования собрался из реальных ключей, а не из теневых? Ведь определить какой ключ правильный нельзя никак by design
В интерфейсе два поля для голосования: первое настоящее и второе для теневого голоса. По сути, проводятся параллельно два голосования. И для каждого выводится свой ключ для проверки потом своего голоса.
А вот как избежать коррупционной проверки, если начальники будут иметь прямой доступ к правильному блокчейну, а не просто к общему интерфейсу проверки для обычных людей… Вот это хороший вопрос! Как показало электронное голосование по прошедшему недавно конституционному перевороту, во многих фирмах у руководства были списки еще не зарегистрировавшихся на электронном голосовании и по этим спискам они принуждали работников голосовать. Т.е. какая-то инсайдерская информация разработчиками явно сливалась на сторону. Видимо, в российских условиях это не сработает. Слишком высокий уровень коррупции в высших ветвях власти.
Так что спасет только параллельный подсчет голосов конкурентами, имхо. Тем более, что он делается элементарно в рамках текущей системы электронного голосования. Вот этот обезличенный зашифрованный бюллетень, прошедший авторизацию на госуслугах (и поэтому гарантированно единственный для каждого избирателя и обезличенный), должен отправляться сразу на несколько серверов оппозиции, которые их подсчитывают независимо. А для защиты от тотальной фальсификации, когда реальная оппозиция вообще не допущена к выборам, также любым желающим быть наблюдателями. Open-source софт, который можно запустить на своем сервере, и всего лишь заранее добавив себя в список кому надо рассылать бюллетени во время голосования.
P.S. Таааак… я дико извиняюсь, но похоже и это не панацея. Ничего не мешает генератору бюллетеней (госуслугам) нагенерировать фальшивых бюллетеней с нужным голосом и отправить их всем наблюдателям. Нет в мире совершенства =). Почему бы населению самому не обеспечить сменяемость власти, чтобы властям наконец можно было доверять, и все эти трудности просто не требовались бы?
Почему бы населению самому не обеспечить сменяемость власти, чтобы властям наконец можно было доверять, и все эти трудности просто не требовались бы?
Трудности не отменяет, ведь сменяемая власть может и передумать сменяться. Так что населению стоит быть начеку всегда.
Slightly Skew Systems Of Government
В Кламзории — акаузальная демократия.
Демократия плоха тем, что голосование происходит до того, как победитель получает должность. Ведь если кто-то ни разу не был президентом, то как можно понять, хорошим ли президентом он будет? Осознав глупость подобной ситуации, Кламзория проводит свои выборы в последний день срока полномочий.
Когда экс-Президент покидает офис, страна голосует по вопросу одобрения его срока: можно или поддержать, или освистать кандидата, который недавно был у власти. Результаты голосования подсчитываются, оглашаются, а потом больше никого не волнуют.
Потому что в Кламзории кандидаты выбираются свободным рынком. Центральный Банк выпускает разнообразные облигации для каждого желающего кандидата, по которым они обязаны выплатить X денег в конце своего срока, где X — это процент избирателей, одобривших каденцию по её завершению. Трейдеры свободно торгуют этими облигациями на бирже. В первый день нового срока определяется победитель — на чьё имя выпущены облигации с наивысшей текущей ценой, тот и назначается Президентом. Все остальные облигации отзываются, Центробанк возмещает их стоимость трейдерам. Президент управляет Кламзорией свой срок, по окончании которого происходит голосование, по результатам которого облигации погашаются соответственно их номиналу.
Кламзорийцы считают, что таким образом они защищаются от демагогов. Ведь можно легко пообещать звезду с неба на выборах, но под конец срока избирателям будет точно понятно, чего добился кандидант, и как дела у страны в результате его правления. Поэтому вместо вместо тупого популизма кандидатам выгоднее проталкивать непопулярные идеи, но которые действительно улучшают благосостояние страны, её безопасность, и всё прочее, что влияет на итоговый рейтинг правления в конце срока. Естественно, всё это несколько ограничено возможностями рынка успешно предсказывать будущее, но обычно трейдеры более рациональны, чем немытые массы населения.
Система отлично работала многие десятилетия, до правления князя Кровопускова. Он баллотировался в президенты с необычной программой: в случае избрания он обещал назначить себя Пожизненным Диктатором, упразднить демократию в пользу выборов князя Кровопускова, и убить всех несогласных. Зная князя, все трейдеры единодушно решили, что он вполне способен выполнить свою предвыборную программу на 100%. То есть, голосование по итогам срока гарантированно даст 100% рейтинг. Естественно, облигации князя взлетели в цене, побили все рекорды, и принесли ему сокрушительную победу. Увы, князь Кровопусков оказался честным политиком — по завершению срока было проведено голосование, держатели облигаций получили причитающиеся им выплаты в полном объёме — и на этом история акаузальной демократии в Кламзории закончилась.
1. Послать подальше
2. Обмануть и показать чужое
3. Смириться
Обзор системы дистанционного электронного голосования ЦИК РФ