moscow-technologies / blockchain-voting_2019

137 stars 47 forks source link

Why use the blockchain? #9

Open mardy opened 5 years ago

mardy commented 5 years ago

For electronic voting, a centralized system is much more efficient, simpler and secure than what a blockchain can provide.

  1. What are the advantages of the blockchain?
  2. Which machines will be the nodes of this blockchain? Who controls them?
xuhcc commented 5 years ago

A centralized electronic voting system can not be secure because administrators can easily perform Sybil and other attacks and it is practically impossible to perform public audit of such system.

From various media reports it follows that they will run voting using a private blockchain, which amounts to a centralized system and therefore also not secure.

Secure electronic voting on public blockhain is possible in theory, but the technology stack is not developed yet. For one-person-one-vote voting schemes the missing piece is a decentralized Sybil-resistant identity system.

quenbyako commented 5 years ago

позволю себе написать на русском, хотя и не стоило бы

теоретически блокчейн был бы действительно надежнее, особенно в вопросе избирательного права. однако есть два момента: 1) выборы должны вызывать доверие. системы, которые разрабатываются по госзаказам (особенно в россии) доверия на данный момент не вызывают. 2) с точки зрания законодательства России, голосование должно быть приватным. а в дополнение к этому еще и тайным (то есть не должно быть известно до конца выборов). это противоречит технологии блокчейна как таковой.

я не знаю, если честно, может я где-то не прав?

mardy commented 5 years ago

@ololosha228, @xuhcc : Проблема в том, что в электронном голосование нам требуется доверять:

Кто даёт избирателю гарантию, что программа работает именно так, как она должна? Если государство хочет, оно легко может изменять голосы или результаты. Поэтому, в конце концов, я не вижу, как блокчейн нас помогает.

xuhcc commented 5 years ago

@mardy

В случае использования приватного блокчейна - почти никак не помогает, потому что при этом узлы сети контролируются ограниченным кругом лиц, которые могут быть в сговоре между собой, которые могут быть подкуплены, либо на них может оказываться давление.

Голосование с использованием публичного блокчейна, при условии правильной реализации, лучше защищено от подобных атак. Поскольку исходные тексты всего программного комплекса открыты и доступны для исследования, и поскольку каждый может стать узлом сети, то избирателю нужно доверять только собственному устройству. Алгоритм консенсуса даст уверенность в том, что все операции с голосами проведены верно.

Однако, как я писал выше, при этом нерешённой остаётся проблема идентификации избирателей. Если идентификация проводится централизованной сущностью (например, по паспорту), то именно она становится вектором атаки. Центр идентификации может создать неограниченное количество поддельных личностей и тем самым манипулировать результатами голосования.

Поэтому на сегодняшний день никакая система электронного голосования по схеме "один человек - один голос" не может считаться надёжной, стоимость атаки на неё значительно ниже, чем стоимость атаки на традиционную систему голосования (где у наблюдателей больше возможностей контроля).

@ololosha228

Тайное голосование на блокчейне возможно, если значения голосов зашифрованы лично избирателем перед отправкой транзакции. Подсчёт зашифрованных голосов - технически сложная, но решаемая задача. О том, как это реализовано в данной системе, надеюсь, расскажут сами разработчики.

monich commented 5 years ago

Чтобы результаты не стали известны до конца голосования, их можно дополнительно шифровать известным публичным ключом. Это всё хранится в блокчейне и обновляется в реальном времени. После окончания голосования публикуется приватный ключ и вся база расшифровывается. Недоверчивые люди могут сравнить результат расшифровки с зашифрованной версией (которая уже лежит в блокчейне и никуда не денется). Для каждого голосования генерится новая пара ключей.

Но как правильно указано выше, при отсутствии у большинства голосователей айдишек с крипточипом, результаты подкручиваются ещё проще (причём намного проще!), чем при использовании бумажных бюллетеней. И даже если у всех есть айдишки, никто не мешает человеку, имеющему доступ к узлу ввода информации, сгенерить произвольное количество фейковых ключей и добавить нужное количество "правильных" голосов в общий массив. Возможно, в этом и есть смысл инициативы? Вот уже и приватный блокчейн нарисовался, что как бы намекает на то, как всё будет честно и прозрачно.

Сдаётся мне, что задача не то что честных выборов, а даже честного голосования в России не решаема в принципе. Политическая проблема не решается техническими средствами.

BernhardBln commented 5 years ago

But how do you manipulate the results then? Was that the reason for the weak keys?

abramov231 commented 5 years ago

Guys touched good subject, electronic voting. Looks like here a lot of unsolved issues for now. Does anybody knows good theoretical research for the subject, how it is possible to create anonymous and trustworthy voting?

BernhardBln commented 5 years ago

I guess while the majority (or even a small but big enough group) is allowed to vote offline, it's possible to generate artificial votes on paper. Then the electronic ones look good, but are merged with votes that then give the desired results. I think common methods in Russia are having a group of people vote at several poll stations, or have e.g. soldiers vote offline and in advance.

xuhcc commented 5 years ago

@abramov231

For on-chain voting to be fully anonymous we need a privacy-preserving computation techniques. As far as I know, no production-ready solution exists, but this field of research is rapidly advancing:

Another requirement for on-chain voting is a robust decentralized identity system. This problem remains unsolved, but there is interesting approach that involves peer-to-peer verifications and subsequent analysis of social graph:

I would also recommend these articles about on-chain voting in general