Комментарии 72
Не то чтобы у бумаги нет своих преимуществ, безусловно есть плюсы. Но видится так что можно реализовать систему, собрав большое колличество как бумажных, так и онлайн «плюсов».
>не стоит вопрос с подделкой цифр при подсчётах, а вот наслать бюлетеней от мёртвых душ, это уже более реалистично.
Наоборот. По своему богатому опыту работы на выборах в разных качествах могу однозначно сказать: основная точка фальсификации выборов - ТИК. Туда стекаются протоколы участков, там почти нет наблюдателей (ну кроме ПСГ, что вообще круче, чем простой наблюдатель на участке, но их не всегда бывает), там же вбивают данные в ГАС Выборы. За чеченские аулы не посужу, но в Москве попытку "набросать" увидит сотня глаз, поэтому у нас основной способ весьма редких фальсификаций - подделка протокола (правка цифр, например) в ТИКе, где нет ПСГ от кандидатов.
По своему богатому опыту работы на выборах в разных качествах могу однозначно сказать: основная точка фальсификации выборов — ТИК.
+
поддержу
да, ТИК до ЦИК - могут и по-пути все переделать... И когда камеры выключают в момент подсчета вообще чудеса творятся... Блокчейн это может прикрыть быстро - но не факт - тоже зависит от схемы
И какие есть решения(идеи) по этому поводу ? В глобальном смысле. Как исправить все эти проблемы ?
1. Где гарантия (на достаточно больших масштабах) — что а) отсутствуют «мёртвые души» в количестве, нужном для требуемого варианта голосования. б) что 5% «за» — это действительно 5%, а не «слегка исправленные цифры».
2. Как гарантированно обеспечить конфиденциальность пользователя на длинной дистанции, при «закрытом голосовании»?
Ну и не увидел, как решается проблема 51% (хотя, возможно, этой проблемы и нет)
1.б — Данных, публикуемых на блокчейне в соответствии с нашим протоколом достаточно для того чтобы самому посчитать эти «5%». Есть часть расчетов производимых группой криптографических сервисов, и эти рассчеты нельзя провести самостоятельно, но проблему доверия результатам этих вычислений мы решаем с помощью децентрализации и криптографических доказательств.
2. Когда конфиденциальность обеспечивается через гомоморфное шифрование, эта гарантия достигается довольно просто. Мы не расшифровываем индивидуальные бюллетени, и даже если будет установлено что этот конкретный ключ принадлежит Иванову И.Н., и мы можем найти все транзакции которые он от имени этого ключа отправил, понять как именно он голосовал нам это не поможет. Если Иванов И.Н. слегка параноит, он может создавать новый ключ под каждое новое голосование: )
3. Проблема 51% решается базовым слоем — мейн-нетом Waves Enterprise. Не стал включать эту тему в статью, мы используем блокчейн просто как один из инструментов. Хотя в целом, система выстроена на той же идее распределения ответственности за данные между независимыми участниками.
Никакой алгоритм не может гарантировать, что голосует именно сам пользовательСобственно, эта проблема решается в системах оплаты. Если системы недостаточно адекватны — финансовые проблемы оставят проблемы выборов далеко за флагом.
Так что — двухфакторная аутентификация, биометрия и так далее.
Электронное голосование по крайней мере может позволять (в зависимости от схемы) переголосовать с зачетом нового голоса вместо старого.
не совсем. если брать блокчейн с цифровыми профилями, такой как Erachain например, то там всё чётко - каждый пользователь подтвержден большим числом других пользователей и банковскими процедурами KYC
Как бы вы не изгалялись, но блокчейн это явная попытка сесть на уходящий поезд хайпа и попытка влиять на управленцев принимающих решение на основе списка ключевых слов, а не глубокого анализа свойств системы.
Как я уже писал здесь, блокчейн не добавляет ничего принципиального к свойствам системы электронного голосования по сравнению с централизованной системой выдающей подписанные подтверждения принятия голоса и публикацией принятых голосов (не важно делается это во время или по окончанию голосования). Разумеется, я здесь говорю о именно голосовании вида "один гражданин — один голос" с центральным органом определяющим кто является гражданином, а кто нет. В случае голосования вида "акционерное общество" где голос даётся владеющему токеном и имеется возможность передачи и накопления токенов использование блокчейнов и "умных" контрактов имеет определённый смысл.
Будущего, конечно, никто не знает, но готов спорить что все это не заглохнет «поездом уходящего хайпа». А смысл применения блокчейна конкретно в онлайн-голосованиях я постарался продемонстрировать в статье.
Вы прочитали комментарии по ссылке или нет? Потому что "смысл" приведённый вами в статье это набор пустых маркетинговых заявлений, тогда как по ссылке я наглядно аргументирую почему блокчейн (и в смысле распределённой бухгалтерской книги и даже в смысле простой цепи Меркла) это неоправданное усложнение системы никоим образом принципиально не улучшающее свойства системы электронного голосования. Разумеется, буду рад услышать нормальную контр-аргументацию.
Да, если говорить о глобальных голосованиях и глобальной идентификации — проблема на данный момент не решена. Это в любом случае централизованное решение (ниже в комментах я тоже об этом писал), которому приходится доверять. Но это же не означает что нужно все бросить и даже не пытаться развивать это направление? Так же это не означает что эту проблему нельзя решить существующими инструментами на меньших масштабах. Вы сами пишете об использовании ЭЦП — хорошее решение. Да, в текущих условиях это предельно дорогой способ, но он существует.
Или есть попытки развития SSI, о чем пишет ftdgoodluck. Базовую схему SSI мы реализуем сами — ключи на сервисе можно создать самостоятельно, зарегистрировать публичный ключ для включения его в смарт-контракт и дальше никто кроме вас не сможет отправить голос от вашего имени. В масштабах страны это должны быть более сложные решения, но принцип сохраняется.
А в остальном, про необходимость ZKP, про возможность переголосования, про публичный аудит — полностью согласен с ftdgoodluck и мы реализовали на WE.Vote все преечисленное. ZKP используем очень широко, возможность переголосования и учет только последнего голоса — базовая возможноть системы. В плане публичного аудита — есть возможность самостоятельно развернуть ноду WE и получать данные «из первых рук».
Только криптография у нас пока не пост-квантовая )
Так же не увидел каких-то предметных недостатков конкретно применения блокчейна. Блокчейн это не всегда маркетинговая магия. Можно обозвать его распределенной БД с криптографической защитой консистентности данных — сразу звучит менее привлекательно для желающих прокатиться на хайпе, но смысл не меняется. Зачем здесь распределенность — кажется очевидно. Вы говорите про «предъявление старой ветки дерева Меркла» в случае если централизованная БД будет изменена оператором, но как будет в реальности решаться такая коллизия? Придет Иванов И.Н. в ЦИК и скажет — «Мое дерево Мерка отличается от вашего, вы все подделали!», потом придет Петров Н.И. со своим деревом, которое отличается от двух других деревьев — начнется бардак, в котором так или иначе всеравно победит ЦИК. Блокчейн в этом смысле является системой, которая согласует «официальное дерево» в режиме реального времени и бесконечно усложняет его переписывание кем бы то ни было.
Так же не увидел каких-то предметных недостатков конкретно применения блокчейна.
Ещё раз: дело не в недостатке блокчейна, а в его полной ненужности, и даже вредности если говорить об общей сложности системы, которая и без блокчейнов слишком сложна для понятия большинством граждан.
Я же вроде достаточно наглядно показал, что в целях защиты от игнорирования принятого голоса достаточно публикации условным ЦИКом архива с принятыми голосами по окончанию процесса голосования (достаточно даже простого набора блобов, без организации их в цепочку Меркла) и получения голосующими криптографической расписки подписанной ЦИКом факта принятия голоса. Если появляется хотя бы один голос подтверждённый распиской, но не включённый в финальный архив голосования, то это означает, что ЦИК мухлевал с принятием голосов и итоги голосования должны быть отменены, виновные покараны и т.д.
Да, ЦИК может отказаться принимать голос и выдавать расписку, но с тем же успехом он может делать это и с блокчейном, отказываясь принимать чужие ветки.
Если мы боимся, что ЦИК будет отказываться принимать голоса из оппозиционных районов прикидываясь шлангом и ссылаясь на технические проблемы, то мы вполне себе можем ввести "прокси" для приёма голосов поддерживающиеся теми или иными общественными организациями, которым ЦИКу будет значительно сложнее отказывать с приёмом голосов (и т.к. подписи электронные, то не получится отфильтровывать "неправильные" подписи). В конечном счёте, решение проблема с отказом приёма голосов всё-равно сводится к социальным методам.
Зачем здесь распределенность — кажется очевидно.
Лично для меня "очевидно" является большим красным флагом, указывающим на неосознанную шаткость аргументации и я стараюсь ловить себя при попытках использовать "очевидно" в дискуссиях.
Вы говорите про «предъявление старой ветки дерева Меркла» в случае если централизованная БД будет изменена оператором, но как будет в реальности решаться такая коллизия?
Очень просто, если обе ветки были подписаны ЦИКом, то мы имеем на руках криптографическое доказательство того что он не выполнял свои обязанности должным образом, поэтому как и выше отменяем результаты голосования и караем виновных.
Распределённая БД в виде блокчейна это ненужная сложность в условиях неизбежного наличия центрального органа проводящего голосование и ответственного за него. Мы в любом случае полагаемся на данный "орган", от исполнения роли УЦ подтверждающего ЭЦП граждан и до поддержки инфраструктуры голосования, включающей в себя железо, софт и протоколы. Основной вклад блокчейна это практическая демонстрация возможности построения протокола в котором нет центрального авторитета, что просто напросто не соответствует обсуждаемым условиями. Да, мы хотим как можно больше повысить прозрачность работы данного авторитета и сузить возможности для неправомерного вмешательства в процесс, но как выше описано получить похожие гарантии можно и более простыми средствами.
Не поддавайтесь техноабсолютизму, далеко не все социальные проблемы можно решить техническими средствами и помните, что простота системы голосования чрезвычайна важна для культивирования доверия к ней.
Если посмотреть на ваше решение — да, оно работает в плане защиты от игнорирования. Но как написали ниже, это же не единственное требование к голосованию? Конфиденциальность голосования в этой схеме не работает в принципе — с шированием голосов или без, все нужные ключи на руках у центрального органа. Даже если он не может отказать в принятии голоса, у него есть все возможности «принять меры» после голосования. Хотя и отказать в приеме голоса он тоже может. Он имеет полную картину по промежуточным итогам, знает что именно вы принесли ему в своем бюллетене и под любым предлогом может его не принять — «техническая ошибка и все тут!» В результате публикуется официальный архив, заявления о «незначительных технических проблемах» и все. Не требуется ничего подтасовывать. Да, «прокси»-организации отказать сложнее чем индивидуальному персонажу, но кого и когда это останавливало?
Как тут может работать блокчейн? Может, потому что как я упомянул в статье, одной биркой «блокчейн» не обойдешься, необходимо правильно развернуть систему. Вашим «прокси»-организациям мы ставим блокчейн-узлы, используем ЦИК как держателя реестра голосующих. В ЦИК мы подписываем не заполненный бюллетень, а только открытый ключ участника — отказать здесь тоже можно, но мотивация значительно ниже, т.к. мы не знаем как будет голосовать гражданин (да, есть технологии профилирования, но согласитесь, мотивация все же ниже, чем в случае, когда ему приносят бюллетень где точно выбран «неправильный» кандидат?). Дальше участник голосования формирует и подписывает своим ключом транзакцию и несет ее не в ЦИК, а в любую «прокси»-организацию, где он уверен что ему не откажут. Да, он не получит подтверждения о том что голос принят в ЦИК, но в этой схеме мы отобрали у центрального органа роль валидатора, это делает «техника». Правильному блокчейну всеравно за кого вы проголосовали, он примет вашу транзакцию. И ЦИК не может отбросить несогласованную цепочку блоков, т.к. у него одна-две ноды, а не 51%.
Да, вы правы, не все полномочия можно отобрать у центрального органа, почти наверняка это и не нужно. Все что мы пытаемся реализовать — «повысить прозрачность его работы» )
P.S. дискуссия все время скатывается к гос. выборам, это не совсем моя область, но по-дискутировать о «гипотетическом ЦИК» тоже интересно.
Да, можно и без блокчейна. Вопрос в свойствах системы, которые можно получить «с» или «без».
Будьте добры внимательно прочитать комментарии по ссылке и если после этого вы будете считать так же, то более подробно привести конкретную контр-аргументацию.
Виталик недавно писал пост о голосовании на блокчейне, не знаю читали ли вы.
А по существу, меня больше интересует как в онлайн голосовании на блокчейне типа эфириума предотвратить голосование фейковыми личностями, которым власть сама раздаст миллионы ключей или как защититься от того, чтобы те кто контролирует раздачу ключей или соответствие ключа реальной личности, не проголосовали за тех, кто не придет на голоосование? Как нам узнать, что бабка из кукуева голосовала не сама, а действующая власть не проголосовала за нее её ключем?
Как при этом обеспечить проверку истинности явки и присвоения голоса кандидату при сохранении анонимности? Я могу себе предстваить как голосовать и проверять голосование онлайн или на блокчейне при открытом голосовании, но не понимаю как это будет работать при анонимном. Ведь, если голоса анонимны, то как я могу знать, что нет мертвых душ или переброса голосов, ведь кто-то должен раздать ключи и признать соответствие проголосовавшего ключа реальной личности, реальному гражданину.
Значит онлайн не должно быть анонимным. Хочешь онлайн, будь добр что бы все видели тебя и твой выбор. Хочешь что бы никто не узнал о твоём выборе будь добр дотопай до ближайшего избирательного пункта. Наверное как-то так. Ну и те кто идут голосовать анонимно должны иметь возможность проверить как учтён и посчитан их голос. Тут можно сделать такую схему все бюллетени номеруются, но номера скрыты под скретч слоем. Когда ты приходишь тебе дают на выбор пачку как по типу лотереек и ты в кабинке отмечаешь галочку и стираешь слой, этот код кроме тебя никто не знает. Ты его фоткаешь или записываешь и потом по нему можешь в протоколе проверить.
Ок, у тебя есть фотография бюллетеня с номером и голосом за А, на сайте отображается что это голос за В, что дальше? И что на счет бюджетников, которых уже иногда заставляют фоткать бюллетени?
Но есть в вашей схеме нюанс — номер бюллетеня, который знает только проголосовавший, является связкой между его личностью и его выбором. Т.к. этот номер известен только ему, выглядит неплохо. Но если подумать о возможности голосующему, доказать заинтересованной стороне что он проголосовал за правильного кандидата, это является лазейкой для взлома конфиденциальности голосования и торговли голосами.
Наше решение предполагает выдачу пользователю идентификаторов его голоса и возможность убедиться что его голос попал в обработку (да, для этого необходимы некоторые инструменты для проверки криптографии, но тем не менее). При этом он не может доказать как именно он проголосовал, т.к. голос зашифрован.
На глобальном уровне, пока что любая идентификация в онлайне это централизованное решение. Будь то ЕСИА или глобальная PKI инфраструктура, где несколько корневых УЦ вынуждают весь интернет доверять их сертификатам (Web of Trust конечно существуют, но в сильно меньших масштабах). Поэтому это отдельная большая задача — выработать глобальные механизмы доверенной идентификации.
Если считать что эта проблема решена (а на более локальных масштабах это так и есть), то ничего не мешает провести конфиденциальное онлайн-голосование. Блокчейн обеспечивает прозрачность, криптография конфиденциальность.
Все хуже. У нас процессы в реальном мире проходят eventually. Вот, предположим, мы сделали реестр участников голосования. Но пока участник голосования идет до УИКа — он может умереть. Естественно, если гос-во об этом узнает заранее, то будет "мертвая душа", которой можно будет воспользоваться и пририсовать ей любой голос. Или обратный пример. Переехал ты из региона в регион. Штамп в паспорте уже стоит, но до УИК не дошла информация о том, что ты имеешь право голосовать. Основанием ведь для включения в реестр избирателей будет паспорт? Просто возьмут и допишут. И таким образом у нас "карусели" и крутились. Или представьте себе, что кто-то проголосовал на участке А, а потом решил и проголосовать на участке Б. Очевидно, что синхронизации между различными УИК нет, тем более в отдаленных регионах. Иначе надо везде проводить интернет, причем надежный /хотя, насколько мне известно, эта проблема практически решена/. И тогда попросту запрещать оффлайн регистрацию процесса и результатов голосования...
- Кто вообще определяет повестку дня голосования? Ну вот есть у вас два кандидата в президенты: Вася Пупкин 85 года рождения, член партии Раздельная Россия с 2010 года, и Федя Кочерыжкин 84 года рождения, член партии Раздельная Россия с 2011 года — выбирайте, кто вам больше нравится. Ну или недавний пример с поправками, когда их поставили на голосвание пакетом.
- Что делать, если подтасовки обнаружены в том или ином виде? Без организованного движения, способного призвать власти к ответу, толку от подобного контроля около нуля. Это будет примерно как если бы камеры следящие за скоростью повесили, а штрафные квитанции никому не присылали.
Но так или иначе, есть надежда что комбинация новых технологий и общественного самосоознания помогут привести и регуляторику к приемлемому виду, и выработать правильные паттерны применения этих новых технологий. Возможно это чересчур оптимистично с моей стороны, но надежда есть )
Если даже систему будут долго педалировать на государственном уровне (ведь у них уже готовится электронное голосование через Госуслуги, ещё менее прозрачное чем бумажное), то ничто не мешает использовать некую негосударственную систему праймериз на правах соцопроса: все желающие ещё до официального голосования смогут проголосовать в этой криптосистеме и оценить её надёжность, посмотреть расклады в разных разрезах, а затем сравнить с официальными результатами голосования. Я так понимаю, в качестве удостоверяющего центра вполне можно использовать Госуслуги (если постараться), чтобы была привязка к реальным гражданам, а не ботам, при этом чтобы в Госуслуги никак не просачивалась инфа о том кто и за кого конкретно проголосовал.
Ещё из материала статьи не смог узнать — есть ли зарубежные аналоги криптоголосований именно на официальном государственном уровне? Вроде, тема лежит на поверхности. Слышал о таком в фэнтезийном сериале «Миллиарды» чтобы внедрить на уровне штата Нью-Йорк, если не ошибаюсь.
Зарубежные аналоги онлайн-голосований безусловно существуют как в гос. секторе, так и в бизнесе. Бразилия является чуть ли не пионером электронных национальных выборов, но у них это делается без блокчейна и не в Интернете, а на выделенной сети электронных машин для голосования. Эстония проводит онлайн выборы, но опять же без блокчейна. В США было несколько локальных экспериментов с блокчейном, но не сказать что они прошли блестяще.
Онлайн-голосования для бизнеса зарубежом тоже развиваются, в каждом отдельном случае они могут строиться с применением блокчейна или без, либо использовать гомоморфное шифрование, где-то примененяется биометрия для идентификации. Паззл интересный и сложный, собирать его можно несколькими способами )
Расклад по голосам на каждый момент времени несколько противоречит цели сохранить конфиденциальность голосования, т.к. увидев новый +1 за кандидата мы понимаем что это голос последнего проголосовавшего. Можно конечно делать такие срезы не полностью реал-тайм, а через заданные промежутки, но тем не менее, конфиденциальность голосования ослабевает.
у нас и так есть экзит поллы, а учитывая размеры страны — Владивосток уже полностью проголосовал, а Калининград еще нет… А результаты уже есть
Я вижу проблему только в точке привязки лица к ФИО и его ключам. То есть как то надо убедиться, что вот этот конкретный человек голосует (он не передал свой ключ и его у него не увели) и этот человек тождественен его паспорту (никто не похитил паспортные данные и не получил по ним ключ).
Начинается всё вроде как с желания сделать устойчивую к обману систему, но собственно план обеспечения устойчивости банально отсутствует. Есть, конечно, много слов про криптографию и прочие ништяки, но плана-то реально нет. Вы предлагаете решать по одной проблеме, а проблем много (во первых) и они тесно взаимосвязаны (во вторых). Что толку от задаваемых вами вопросов, если это лишь частные вопросы, относящиеся к части проблемы? И решения вы предлагаете такие же фрагментарные. А в целом же получается отсутствующее решение, потому что взаимозависимые части рассмотрены отдельно и решения предложены лишь для отдельных составляющих.
Вот пример:
[Участник] хочет убедиться, что его голос будет учтен, его голос не будет изменен и никто не сможет определить, как именно он проголосовал
Во первых, почему вы выбрали только эту проблему? Вам уже писали в комментариях, что есть другие способы обмана, например — вброс виртуальных голосов.
Во вторых, где решение хотя бы выбранной вами проблемы? Оно размазано тонким слоем по всему тексту. То есть для понимания решения от читателя требуется внимательно прочитать все ваши слова про криптографию и прочую математику, с использованием непоясняемых специфических теминов, разумеется. Вы думаете, что средний читатель что-то поймёт? Нет, он не поймёт, потому что криптографию не изучал.
В третьих, даже понимая криптографию, я не вижу собственно решения. Где оно? Почему вы догадались выделить проблему (хоть и случайно выбраную) в виде относительно короткого списка, а вот решение предложить в виде относительно короткого и выделенного каким-то образом алгоритма вы не смогли? Получается, что читатель за вас должен подробно просканировать ваш текст, глубоко его осмыслить, и самостоятельно найти спрятанное где-то в глубинах решение. И я даже по началу попытался так сделать, но очень быстро понял, что передо мной просто произвольный поток сознанния, перескакивающий с мысли на мысль без какого-либо плана и структуры. Вы по ходу изложения задаётесь миллионом вопросов, очень слабо связанных с тем списком, который сами же сочинили в начале текста. Ну а раз задан миллион вопросов, то и далее мысль автора тянется осилить ответы на весь этот миллион. И при этом забывает про необходимость ответить на главные вопросы. Хотя да, тот список, видимо, был такой же флуктуацией в блуждающем по смыслам разуме, а потому начальный список был моментально забыт и ответ на вопросы, поставленные в списке, автор просто забыл оставить потомкам. Потому что нужно бежать и задавать новые вопросы. И пытаться так же бессвязно на них отвечать…
Автор, вам нужно выделить один-два вопроса, это раз, потом коротко (я повторяю — коротко) сформулировать в виде текста способ решения выделенных одного-двух вопросов. Если вы этого не можете — не надо больше писать текстов, потому что они полностью бесполезны.
Я поробовал дать обзор используемых нами техник, прошу прощения если формат изложения вам не зашел. Если попробовать сделать это коротко, то вот список и выжимка смысла:
1. Блокчейн как распределенная БД, позволяющая защититься от подмены исторических данных
2. Блокчейн как основной транспорт системы, позволяющий сделать процесс обмена прозрачным
3. Смарт-контракты — опциональный, но очень удобный инструмент автоматизации
4. Гомоморфное шифрование — инструмент обеспечения конфиденциальности
5. Распределенная генерация ключа — инструмент обеспечения надежного шифрования без единой точки отказа
6. ZKP на бюллетене — защита от злоумышленника в лице голосующего
7. ZKP на частичных расшифровках — защита от внутреннего нарушителя
8. ZKP в целом — инструмент верификации корректности процесса для внешнего наблюдателя
9. Локальная генерация ключа голосующего — защита от его использования кем-то еще
Надеюсь в этот раз достаточно коротко?: )
- Блокчейн как распределенная БД, позволяющая защититься от подмены исторических данных
нет. Потому что блокчейн будет находиться в руках authorities. Которым мы вынуждены доверять, а на самом деле мы им не доверяем. Выше уже предлагали — ну, будет блокчейн, ну, будет форк — и что мы этим докажем? Что независимые наблюдатели хотят сорвать выборы? Или что гос-во пытается надурить граждан?
- Блокчейн как основной транспорт системы, позволяющий сделать процесс обмена прозрачным
он тут не нужен.
- Смарт-контракты — опциональный, но очень удобный инструмент автоматизации
принимается.
- Локальная генерация ключа голосующего — защита от его использования кем-то еще
чем мне это поможет, если ключ должен быть подписан УЦ? Который под контролем сами знаете кого.
и так далее
2. Да, можно найти другое решение по транспорту. Очереди, например. Но пойди докажи чем там сервисы обмениваются в этих очередях? Блокчейн в этом смысле капризен, но предельно прозрачен.
3. Спасибо: )
4. Согласитесь, есть разница — получить подпись на персональном ключе, что можно воспринимать как подтверждение избирательного права, не совсем то же самое, что получить подпись на бюллетене, в котором указано что вы проголосовали против «правильного» кандидата. Получить подпись регистратора в первом случае гораздо проще.
Если говорим о голосе конкретного избирателя, значит у нас есть идентификатор созданной и подписанной им транзакции — этот идентификатор формируется в момент подписания транзакции на устройстве голосующего. Проверить что эта транзакци принята в блокчейне (т.е. прошла валидацию смарт-контрактом), можно проверив список зарегистрированных голосов в контракте — это публичная информация, доступная через блокчейн-эксплорер. Голос зашифрован, мы не знаем что в нем зашито, можем только убедиться что зашифрованные значения не нарушают правил голосования (проверка ZKP).
Чтобы убедиться, что голос не просто принят контрактом, но и учтен в итоговых результатах необходимо самостоятельно пройтись по списку голосов, провести над ними криптографическую операцию сложения в зашифрованном виде (тут потребуется утилита, умеющая это делать, но математика не секрет, утилиту можно написать самому, если вы никому не доверяете). Далее вы должны проверить, что те частичные расшифровки (их тоже можно найти в блокчейне), которые опубликованы криптографическими сервисами были основаны на таком же «суммарном бюллетене», какой получился у вас — т.е. сервисы, которые считали результаты не выкинули и не добавлили лишних голосов, а сложили именно то что нужно. Проверка так же опирается на ZKP. Сами частичные расшифровки выполняются на приватных ключах, и эта операция стороннему наблюдателю недоступна, но благодаря ZKP он может убедиться в корректности результата.
После того как наблюдатель убедился в корректности частичных расшифровок он может самостоятельно «совместить» их и получить расшифрованные итоги выборов — они должны совпасть с тем что опубликовал смарт-контракт.
Как видите, мы не пытались и не могли получить информации о том, за что голосовал избиратель, но на основе публичных данных убедились что система его не обманула.
Если вам интересно копнуть глубже, вот по этой ссылке можно посмотреть пример данных завершенного голосования, сохраненных в смарт-контракте.
Далее вы должны проверить, что те частичные расшифровки (их тоже можно найти в блокчейне), которые опубликованы криптографическими сервисами
Частичные расшифровки чего? Волеизъявления других избирателей, содержащиеся в том же блоке?
У нас на сервисе валидность голоса определяется а) наличием открытого ключа участника в списке голосующих, б) валидностью ZKP на бюллетене, в) валидностью подписи транзакции. Так же, голос участника становится «невалидным», если он отправил транзакцию повторно. Возможность переголосования — учитываем только последний бюллетень.
Все эти проверки доступны внешнему наблюдателю и опираются на публичные данные.
Любой желающий может скачать все эти бюллетени и увидеть только некий ничего ему не говорящий уникальный ID. Организатор by design также может извлечь из бюллетеня вариант голосования, выбранный избирателем, и ничего больше.
Я знаю уникальный ID своего бюллетеня, т.к. он был сформирован на моей стороне с моей ЭП при получении бланка бюллетеня. Я нахожу свой бюллетень в общей куче и убеждаюсь, что он был получен организатором голосования. Как я могу убедиться, что мой голос был учтен и учтен правильно в итогах голосования?
Т.е. что «за» в бюллетене с таким-то ID было добавлено ко всем остальным «за»? Напоминаю, организатор голосования не знает что мой ID – это именно мой ID, для него как и для остальных это бессмысленный набор знаков, он лишь знает, что ID был сгенерирован с валидной ЦП и нет других бюллетеней с этой ЦП.
Но если следовать вашему примеру, то у нас организатор (хотя на самом деле сами голосующие) вываливает на публичный FTP (в блокчейн) все полученные бюллетени. Эти бюллетени уже провалидированы как корректные, мы на уровне публичных ключей отправителей знаем, что они пришли от легитимных голосующих. Но мы не знаем содержания бюллетеней. Организатор by design ничего не может извлечь из бюллетеня, только id отправителя (публичный ключ). Все остальное зашифровано и сопровождено ZKP.
Вы как голосующий знаете ID своего бюллетеня, можете найти его в пачке (на смарт-контракте), убеждаетесь что он получен системой/организатором.
Никто — ни организатор, ни вы как голосующий не может доказать что в бюллетене с таким-то ID зашифровано голос «за». Мы разрываем не связь голосующего с бюллетенем, мы разрываем связь между бюллетенем и тем что в нем зашифровано.
Для того чтобы убедиться, что ваш голос не просто записан в контракт, но еще и вошел в итоговый результат, вам надо проверить работу системы. Со стороны системы, посчитанные бюллетени представленны «частичными расшифровками» суммы валидных бюллетеней (не каждого отдельного бюллетеня, а именно суммы). Таких расшифровок несколько, по числу криптографических сервисов. Эти расшифровки делаются независимо каждым из сервисов и должны быть выполненны на одинаковой «сумме». Если это так, значит система следует протоколу. Чтобы убедиться что вас не обманули и ваш бюллетень попал в эту «сумму», вы производите гомоморфное сложение шифротекстов самостоятельно и с помощью ZKP проверяете что сумма, которую расшифровывали крипто-сервисы совпадает с вашей. Т.к. вы, при расчете суммы включили свой бюллетень в расчет, это означает что и крипто-сервисы его также учли.
Наверное звучит так, что я просто повторяю то что уже написал, но я действительно не представляю как это объяснить по другому ) Принцип работы системы голосования описанный в статье основан на том что мы никогда не расшифровываем индивидуальные бюллетени и не знаем что в них положил голосующий. Эта идея тяжело ложится на аналогию с подписанными PDF )
Основная проблема решения это криптосистема эльгамаля. Слишком много бит нужно для реализации, а криптоплатформы, этериум, например, хорошо работает на 256 битах. Надо все что написал педерсон адаптировать на эллиптические кривые. Без этого это будет поделкой.
В шаге 3 важно указать по какому модулю выполняется вычисление экспоненты.
Прикольно, в статье все про голосования в целом, но комменты про выборы гос.масштаба, странно, что хабровчане так зашорено стали смотреть. Хабр уже не торт, где же все гики )
(выше в комментариях писали, например, что нет никакой проблемы сфотографировать свой бумажный бюллетень и продать голос таким образом).
учитывая, что бюллетни не номерные и на них не написано имя избирателя — можно "покупателя голоса" наколоть и прислать ему фотографию чужого бюллетеня, но заполненного "как надо"
В любом случае проблема продажи голоса это скорее про возможность голосующему доказать покупателю как именно он проголосовал. С бумагой это возможно сделать с некоторой степенью достоверности, с онлайном это возможно с той же степенью достоверности.
Исключение составляют случаи когда покупатель голоса стоит у вас за спиной — в случае онлайна эта возможность имеется и является проблемой. Но она никак не связана с блокчейном.
Честное онлайн-голосование: миф или реальность?