Как стать автором
Обновить

Комментарии 153

Сделать систему голосования на принципах работы Bitcoin и нет проблем.
Угу, неделями один голос генерировать? :)
А почему бы и нет? Но только голос этот можно будет продать, поэтому не катит)))
Комплекс программы состоит из 3 секторов:

1) Программно-вычислительный комплекс голосования

2) Промежуточно-вычислительный комплекс передачи информации в ЦИК РФ

3) Центр обработки данных

Структура:

В каждый комплекс программы заложен p2p алгоритм, который генерирует два типа ключа публичный и приватный хеш-ключ. Приватный ключ содержит в себе блок информации об успешной идентификации гражданина РФ, с помощью приложения зашитого в Универсальную Электронную Карту РФ. После того, как гражданин РФ идентифицировался в программе голосования и выбрал кандидата, формируется публичный ключ, который содержит в себе блок информации об электронном адресе кандидата (буквенно-цифровой код). Этот код автоматически передаётся по сети интернет в промежуточно-вычислительный комплекс. После транзакции голоса, второй комплекс формирует новую пару ключей и автоматом передаёт её в конечную точку (ЦОД). При этом информация о транзакции голоса в сети, по широковещательному каналу сообщается всей сети комплекса. Весь комплекс имеет распределенную базу данных и вся история транзакции голосов находится в открытом доступе сети интернет, где каждый может проверить движение своего голоса к ЦОД, при этом сохраняется тайна голосования, так как приватные ключи зашифрованы, в открытом доступе только голоса избирателей за того или иного кандидата.

Защита от фальсификаций:

Каждая программа имеет функцию закачки всей базы данных на локальный диск и обмена информацией о проверки транзакции голосов с другими программами (p2p сеть). Алгоритм проверяет транзакции (многократно потверждается подлинность голоса) и передает информацию о проверке в широковещательную сеть. Таким образом исключается подделка публичных ключей (голосов).

Проблемы при реализации:

1) Открытость информации до окончания голосования.

Так как все публичные ключи (голоса) находятся в открытом доступе и система имеет открытую архитектуру, то зная адреса кандидатов, можно вычислять исход выборов в режиме реального времени. Решение этой проблемы лежит в плоскости Промежуточно-вычислительного комплекса передачи информации ЦИК РФ, есть возможность скомпилировать неограниченное число программ, которая будет подменять (генерировать) публичные адреса кандидатов в рамках своей подсистемы и передавать результаты в ЦОД. После окончания голосования, выкладываются все сборки программ и их исходники в открытый доступ, чтобы общественность и технические специалисты (криптологи, программисты) были уверены, что все фальсификации на уровне административного ресурса, исключены.

2) Генерация чипов УЭК РФ под контролем государства.
Есть одна проблема то, что ТотКогоНельзяНазывать будет майнить голоса, на бюджетных компьютерах министерств.
НЛО прилетело и опубликовало эту надпись здесь
Я про проблему построения проверяемого электронного голосования говорил на основе принципа биткоина, а не про проблему этого звездеца что у нас творится.
Согласен, это самый жирный минус такого подхода, нагенерировать людей в электронной системе могут сколько угодно.
в любой системе нагенерировать людей могут сколько угодно
Стоп. Так как эмиссия ограничена и запрограммирована (по аналогии с БТК), а общее количество никогда не превысит некоторого числа, это кол-во должно быть ограниченно числом избирателей. Ведь будет какой-то момент, когда намайнить больше уже будет невозможно.
Векторная, гипертекстовая система распределенного голосования на FIDO/FTN.
ЦИК проверяет подпись. Удостоверившись, что эта подпись есть в списке избирателей

Вот здесь я не понял. Как ЦИК проверяет, что подпись есть в списке избирателей? Как это вообще возможно? У ЦИКа есть база открытых ключей, зашифрованный бюллетень и подпись зашифрованного бюллетеня закрытым ключом. Что он может определить? Примени любой ключ из базы и получишь какую-то последовательность байт, которая должна выглядеть случайной.

И вообще как-то сумбурно алгоритм изложен. Толком ничего не понятно. Например, отправляя первый раз бюллетень избиратель идентифицирует себя как-то? Может составите диаграмму «известности» на каждом шагу, что конкретно известно ЦИКу, что в паблике, а что только избирателю, и между чем и чем есть связи.

Извиняюсь, если непонятно написал.
У ЦИКа хранится список избирателей, где каждому сопоставлен открытый ключ. На этапе 3 ЦИК получает зашифрованный бюллетень, который подписан ЭЦП избирателя. Подписывает бюллетень избиратель уже после шифрования и без закрытого ключа, который известен только избирателю, никто его подпись подделать не может. ЦИК, имея открытый ключ избирателя, может удостовериться, что подпись его.

1) Избиратель знает свои приватный и открытый ключи, ЦИК знает открытый ключ и личные данные избирателя. В паблике — список адресов избирателей.
2) Избиратель знает свой бюллетень, знает ключ его шифрования.
3) ЦИКу избиратель известен и верифицирован с помощью его ЭЦП. Содержание бюллетеня неизвестно — бюллетень зашифрован. В паблике лежит список, где видно сколько избирателей с одного адреса прислало в ЦИК зашифрованных бюллетеней.
4, 5) Избиратель после расшифровки имеет на руках бюллетень, подписанный ЦИКом. То же самое у ЦИКа, но без привязки избирателя. В паблике лежит случайное число избирателя, к которому привязан бюллетень, зашифрованный теперь уже ЦИКом.
6) В паблике лежит случайное число избирателя с привязанным к нему голосом.
Вот так более понятно. Спасибо, Но что мешает ЦИКу связать адрес отправителя (IP, e-mail, логин на госуслугах и т. п.) с шага 2 и шага 4? Использовать анонимизаторы? Так его владелец будет получать незашифрованный бюллетень на 4-м атапе и неанонимизированый адрес пользователя. Как минимум на 4-м шаге нужно зашифровывать бюллетень и подпись ЦИКа открытым ключом ЦИКа. Да и вообще весь обмен с данными с ЦИКом шифровать как это происходит при просмотре по https в браузере — не только ЦИК заинтересован.

И вот ещё что не понял. Разве ЦИК по своей подписи расшифрованного сообщения не может определить кому он подписывал зашифрованный бюллетень на шаге 3? Подписи ведь совпадают, а на шаге 3 он не просто знает, а должен знать кто прислал зашифрованный.
Общение с ЦИКом можно анонимизировать при помощи цепочки промежуточных серверов. ЦИК должен предоставить открытый API для приема зашифрованного и расшифрованного бюллетеней и опенсорсную реализацию сервера, который будет поддерживать работу с этим API. Избиратель может послать бюллетень как напрямую в ЦИК, так и на один из промежуточных серверов (параноики поднимают свой промежуточный сервер, известный только им). Адрес своего промежуточного сервера можно зарегистрировать в ЦИК, тогда при отправке бюллетеня можно будет получить список этих серверов, составить маршрут через длинную цепочку серверов и отправить бюллетень по ним. Тогда для анонимности достаточно, чтобы хотя бы один сервер в цепочке не слил данные пакетов в соответствующие органы. Ну и проверка доставки нужна, но это просто. Шифрование всего процесса открытым ЦИКовским ключом также нужно.

Подпись у ЦИКа одна, он по ней идентифицировать избирателей не может.
Сервера нужно как минимум два, независимых ни от ЦИКа, ни друг от друга, чтобы ни ЦИК, ни владельцы не могли их связать.

Как это подпись одна?! Подписей должно быть столько сколько бюллетеней и эти подписи должны быть уникальны, по крайней мере коллизии должны быть маловероятны. А насколько я понял слепая подпись базируется на том, что sign(crypt(doc))==sign(doc). То есть получив неанонимно crypt(doc)+sign(crypt(doc)), а потом получив анонимно doc+sign(crypt(doc)), по sign(crypt(doc)) мы можем провести деанонимизацию doc.
Ответил тут: habrahabr.ru/post/156423/#comment_5342475

Подпись именно одна для всех избирателей. С помощью добавления контрольной суммы можно добиться однозначности расшифровки.
Вы не путаете подпись и ключи подписи?
Можно, например, попросить избирателя посылать еще и свой открытый ключ. Или просто добавлять в начала бюллетеня 10000 нулей, что сделает многозначную расшифровку невозможной.
> Удостоверившись, что эта подпись есть в списке избирателей
А в этой же строке в БД лежит вся остальная информация об избирателе. Сопоставить таки можно, было бы желание.

Ну и не совсем понятно, каким образом «ЦИК получает бюллетень, проверяет валидность своей подписи» после того, как этот самый бюллетень расшифровал избиратель — хэш-то поменялся, и подпись, естественно, стала невалидной по определению.

Единственный (очевидный) способ — раздавать по паспорту вместо бюллетеней одноразовые, ни к чему не привязанные пароли для голосования на сайте.
У ЦИКа есть соответствие «адрес — открытый ключ», «открытый ключ — шифрованный бюллетень» и «расшифрованный бюллетень — голос». Соответствия «шифрованный бюллетень — расшифрованный бюллетень» у него нет (если он подписывает честно).

И суть системы слепой подписи как раз в том, что ЦИК может подписать зашифрованное сообщение, а проверить валидность подписи — на расшифрованном. Такая криптографическая «магия».
>А в этой же строке в БД лежит вся остальная информация об избирателе. Сопоставить таки можно, было бы желание.
На этом этапе ЦИК знает избирателя.

>Ну и не совсем понятно, каким образом…
В этом и есть прелесть слепой подписи. После расшифровки ЭЦП будет валидна по отношению к бюллетеню.

Еще требуется, чтобы ЦИК доказал, что все бюллетени он подписывает одинаково, иначе ЦИК сможет отследить связь между избирателем и голосом. Системы слепой подписи позволяют это сделать?
ЦИК заранее публикует свой открытый ключ, который, конечно, должен быть единственным. Пользователь может проверить корректность ЭЦП ЦИКа.
Насколько я понял, слепая подпись такие ограничения не накладывает.
Поразмышлял я тут на сон грядущий, вроде всё с технической стороны правильно за исключением одного «но» — что, всё-таки, помешает ЦИКу зарегистрировать тыщутыщ липовых избирателей по левым адресам? Недавно вот читал, что в Питере нашлись якобы 200 тысяч непонятно откуда появившихся избирателей. Власти заявляют, что это такая демографическая ситуация, волна рождаемости, как-бы, была в каком-то там году. Но по тем же данным, через несколько месяцев количество избирателей вернулось на прежний уровень с точностью до сотни. Не вижу технических ограничений ЦИКа для проведения подобной операции.
PS. допускаю, что информация про 200 тысяч мёртвых душ выдумка, сейчас я не про политику, а про теоретическую вероятность подобного сценария фальсификации.
Можно давать данные с точностью до квартир. И раскидать нетривиальное количество вбросов так, чтобы нигде не заметили — малореально. При доле вбросов в 1% и проверке 300 случайных адресов мы с вероятностью 90% наткнемся на вброс.
И понятно, что при обнаружении единичного вброса нужно полностью перепроводить выборы, дисквалифицировав ЦИК.
1) Есть же всякие режимные объекты, воинские части и т.д., где проверить количество человек просто так не получится и однозначно доказать, что действующее правительство «вписало» в воинскую часть тысячи мёртвых душ не получится.
2) Не совсем пока понимаю как должны проводиться регистрация избирателей по адресам, но есть ли вероятность как-то «подставить» ЦИК и зарегистрироваться неправильно, тем самым после голосования заявить, что ЦИК смухлевал вот тут и его надо дисквалифицировать. Сюда также можно отнести какую-либо человеческую ошибку при вводе данных, например. И тогда надо будет проводить всю процедуру выборов сначала, где так же можно провернуть ту же схему и устроить таким образом «отказ в обслуживании» ЦИКа.
1) Такой вброс увидят военнослужащие этой части. Да и задрать число военнослужащий так, чтобы оказать заметное влияние на итоги выборов сложновато.
2) У нас пока остается институт прописки, что упрощает соотнесение человека с адресом. К тому же, эти данные есть уже на первом этапе, что дает время разобраться с косяками.
Регистрация по паспортам, идентификация потом по адресам, все просто.
«4. Избиратель расшифровывает бюллетень, проверяет подпись ЦИКа и отправляет расшифрованный, подписанный ЦИКом бюллетень обратно в ЦИК.»

Если ЦИК подписал зашифрованный голос, каким образом голосующий сможет отправить расшифрованный, который будет подписан ЦИК? :)

То что вы описали в этом пункте, невозможно.
Автор специально дал ссылку на слепую подпись. По этой ссылке можно даже кое-что почитать и получить немного больше информации по теме разговора.
А автор специально употребляет слова шифрует, подписывает и не называет какими конкретными ключами (в этой схеме участвует минимум 4 пары ключей)? Как раз в википедии и то понятнее вся процедура описана.
Да, извиняюсь, не ознакомился с деталями. Довольно интересное понятие эта «слепая подпись». Раньше не сталкивался.

Если у этого метода действительно нет подводных камней, как переходный вариант к распределенной системе может подойти.
Я «еще тогда» смотрел про «слепую подпись», но там нет анонимности. Боб и Алиса всяко знают друг друга.
На самом деле, избиратель не только шифрует бюллетень! Но и маскирует!
Шаг 2. Избиратель маскирует свой выбор (алгоритм слепой подписи) и подписывает все сообщение (шифрует приватным ключом из шага 1).
Шаг 3. ЦИК проверяет подпись избирателя (убирает ее) и подписывает маскированный бюллетень, но бюллетень он разобрать не может, потому что он маскирован.
Шаг 4. Избиратель проверяет подпись ЦИК и удаляет маскирующий множитель (слепая подпись!), таким образом сообщение внутри расшифровано, но остается подписано ЦИК.
(Очень важно для соблюдения анонимности, что используется абсолютно другой канал связи и анонимный — иначе ЦИК сопоставит избирателя с дешифрованным бюллетенем из шага 5 и избирателя из шага 3).
Шаг 5. ЦИК результатов принимает сообщение и проверяет, что оно подписано ЦИК голосования. В этом сообщении в открытом виде указано рандомное число и выбор. Оно и заносится в таблицу.

Сразу отмечу, что мне кажется странным.
1) Можно несколько раз отправить сообщение на шаге 5 они все занесутся в таблицу? Или рандомное число это уникальный ключ? Тогда как избежать коллизий и сохранить анонимность при генерации этих ключей?
2) Если избиратель с такой легкостью удаляет маскирующий множитель и сохраняет подпись ЦИК. Может ли он заменить маскирующий множитель на другой и получить «второй» бюллетень и отправить таким образом 2 разных бюллетеня.
В википедии написано, про коммутируемые операции подписи и маскирующего множителя, если это так, то избиратель может подобрать любой маскирующий множитель и составить сколько угодно валидных подписанных ЦИК бюллетеней.
1) Рандомный ключ уникален. Избежать коллизий можно, выбрав ключ подлиннее.
2) На вскидку, можно, например, в конец бюллетеня добавить хеш бюллетеня, и ЭЦП ЦИКа будет подписывать весь этот блок с хешем. Тогда пользователю нужно будет подобрать множитель так, чтобы совпал еще и хеш, а это уже нереально.
Еще раз, мне кажется, серьезная проблема с 2)
Если добавить хеш нешифрованного бюллетеня, тогда ЦИК легко сопоставит, адрес и нешифрованный бюллетень.
Если добавить хеш шифрованного бюллетеня, тогда тоже ЦИК деанонимизирует только с другого конца.
Да и как добавить хеш, умножением или дописывать (мне кажется я могу подобрать инвертированный маскирующий множитель в любом случае)…

Хм… мне кажется получив слепую подпись однажды, я могу подписывать любые документы в будущем (и это плохо)…
Берем случайное число и голос, получаем от этого хеш. Шифруем все вместе с хешем и отправляем ЦИКу. ЦИК подписывает все это вслепую. У нас подписан блок рандом+голос+хеш.
Мне кажется либо я, либо вы не понимаете как работает подпись вслепую
X = random || vote || hash(random || vote).
Y = mask (X) = X * random_mask .

(не называйте маскировку шифрованием, маскировка это умножение на рандомное число, чтобы ЦИК не догадался, но это умножение согласовано с операцией подписи ЦИК. Если это любое шифрование то операция может быть не согласована и слепая подпись не работает)
  Y -> CIK.
  Y_cik_signed = sign(Y).
 =>  X_cik_signed = Y_cik_signed / random_mask.

Но что мешает подписать другой бюллетень?
 X = random2 || vote2 || hash(random2 || vote2).
 X2_cik_signed = X_cik_signed * X2 / X.
Хммм… Если это так, то слепая подпись вообще не имеет смысла. Видимо, это не так.
Идея в том, что ЦИК подписывает шифрованный блок данных, и по этой подписи можно получить подпись для исходного. Но не для какого-то другого.
Расскажите лучше как:-) Я по википедии эту механику не понял, поэтому и написал про их маскирующий множитель. Эта подпись всяко основопологающая часть статьи.
В английской вики вроде бы расписано чуть подробнее.
ЭЦП избирателя и так есть хэш бюллетеня и практически случайного числа.
Долго, читал все пункты, пожалуйста добавьте больше конкретного описания в каждые пункты иначе решение кажется не полным!!!

Шаг 2. Обязательно подчеркните, что избиратель шифрует абсолютно новым известным ему ключом. А затем подписывает ключом из пары с публичным ключом, который уже в ЦИК (!) + к этому в открытом виде отправляет информацию о себе (ЦИК же не будет все ключи перебирать, чтобы найти, чем расшифровать подпись).

Шаг 4. >>Избиратель расшифровывает бюллетень? Проверяет подпись…
Вроде как ЦИК не шифровал, а только подписал зашифрованный бюллетень? Хотя технически расшифровать=проверить подпись, но это один шаг! Опять же непонятно как избиратель расшифрует бюллетень и отправит его с подписью ЦИК, как он подпишет другое сообщение подписьюЦИК?

P.S.: может я что-то упустил. Пожалуйста, пронумеруйте все ключи ЦикPub1, ЦикPriv1,… и когда они публикуются и что держится в тайне. Очень хочется, верить что алгоритм правильный, но досконально проверить крайне тяжело.
У избирателя есть бюллетень, шифрованный ключом, известным только изберателю, и подписанный ЦИКом слепой подписью. Т.к. избиратель знает ключ, то он может расшифровать этот бюллетень и получить исходный с подписью ЦИКа.

1. Избиратель отправляет в ЦИК ключ ИзбPub1 и свой адрес.
2. Избиратель делает бюллетень (случайное число + голос), шифрует его ключем Изб2, подписывает ключем ИзбPriv1, отправляет в ЦИК.
3. ЦИК проверяет подпись с помощью ключа ИзбPub1, слепой подписью подписывает шифрованный бюллетень ключом ЦикPriv1, отправяет результат обратно избирателю.
4. ЦИК отмечает, что получил голос от соответствующего адреса.
5. Избиратель, используя шифрованный подписанный бюллетень и ключ Изб2, получает нешифрованный бюллетень, подписанный ключом ЦикPriv1.
6. Избиратель отправляет подписанный нешифрованный бюллетень обратно в ЦИК.
7. ЦИК проверяет подпись с помощью ключа ЦикPub1.
8. ЦИК публикует пару (число, бюллетень, зашифрованный ЦикPub2) и учитывает голос избирателя.
9. По окончании выборов ЦИК публикует ЦикPriv2.

Вроде бы так.
Только непонятно зачем избирателю расшифровывать если у него есть оригинал. По сути ему нужна только слепая подпись ЦИКа
Если я правильно понимаю — то слепая подпись для зашифрованного и исходного документов всё же отличаются. И под расшифровкой я имел в виду именно преобразование подписи для зашифрованного в подпись для исходного.
Я понял ровно наоборот, что слепая подпись базируется на факте sign(crypt(doc, key1), key2) == sign(doc, key2).
По крайней мере в английской вики написано достаточно недвусмысленно: «s' is sent back to the author of the message, who can then remove the blinding factor to reveal s, the valid RSA signature of m».
Т.е. sign(doc, key2) = f(sign(crypt(doc, key1), key2), key1), где f легко вычисляется.
Это я как-то упустил, в русской в разделе где на пальцах объяснено такого упоминания нет вроде.
В принципе, да. Он может только проверить подпись ЦИКа по его публичному ключу и приложить ее к нешифрованному бюллетеню.
Что-то мне почему-то подозревается, что на шаге 5 ЦИК совершенно спокойно может вычислить голосующего по IP, в прямом смысле слова. Дело в том, что если у ЦИКа ведутся логи, то на шаге 3 у него появляется цепочка IP-подпись-ФИО, а на шаге 5 — цепочка IP-номер_кандидата. Даже если на одном IP будет несколько голосующих, секретность все равно не будет 100%, а с учетом того, что можно использовать идентификацию не просто по IP, но и по сокету, и по времени, а два человека/приложения одновременно один и тот же сокет использовать не могут (не должны), то… тайность такого голосования плавно стремится к нулю. Разве что TOR'ы да I2P использовать.
Шаг 1. Каким образом «регистрирует»? Если я спрошу соседа/знакомого пойдет ли он голосовать, он ответит, что не собирается, могу ли я тогда зарегистрироваться и проголосовать за него? Или просто взять и зарегиться раньше, вообще ничего не спрашивая. Надо, пожалуй, с паспортом очно регистрировать ключи.
А кто сказал, что это происходит онлайн? Хотя есть варианты, например, регистрация открытого ключа через аккаунт на госуслугах, или по электронным паспортам.
Да, я имел в виду, что первый шаг оффлайновый, с паспортом.
С технической точки зрения алгоритм вроде как правильный, но как всегда остается человеческий фактор. Если я — кровавый диктатор и я хочу сфальсифицировать выборы, то я использую административный ресурс, то есть руководство госпредприятий. Допустим, я директор крупного завода и мне поставлена задача обеспечить нужный результат. Тогда я а) беру в отделе кадров список адресов сотрудников и запугиваю их, чтобы непременно проголосовали, причем за кого надо. Открытый список адресов проголосовавших с точностью до квартиры у меня есть, и после выборов я знаю, что конкретный наладчик Иванов не проголосовал, гад, и могу его уволить. б) После голосования собираю под угрозой увольнения у всех их случайные числа и проверяю, чтобы все проголосовали за кого надо. Кто отказался дать ключ/проголосовал неправильно — уволить.

В общем случае достаточно хорошенько пригрозить, тогда и увольнять никого не надо будет.
Точно.
К списку требований нужно обязательно добавлять пункт — невозможность принудить человека к определённому голосованию. Как это сделать — очень сложный вопрос.
У меня возникают мысли, или разрешить «переголосовать», или дать хотя бы возможность «удалить» свой голос.
Достаточно сделать так, чтобы нельзя было проконтролировать как он проголосовал. Но по этой схеме не получается.
Берем список проголосовавших, выбираем кого-нибудь, проголосовавшего как надо, и сообщаем его случайное число, а не свое.
Есть возможность указать работнику использовать заранее определённое «рандомное» число при голосовании.
До окнчания шолосования мы не знаем кто как голосует, а ключ вполне могут «попросить» и до окнчания.
Ну в целом такие ситуации уже сводятся к терморектальному криптоанализу. Против которого криптогравия бессильна.

Эта схема предназначена именно для того, чтобы не жульничал ЦИК (точнее, чтобы он смог доказать, что не жульничал, если действительно не жульничал).
Это я понимаю, просто указал что ваше предложение не панацея.
Это не фальсификация. Это принуждение к «правильному» выбору. Если результаты выборов не фальсифицированы, то мне всё равно почему большинство выбрали Президентом кандидата П или обеспечили «контрольный пакет» в Думе партии Е. Может проанализировали предвыборный программы и оценили вероятность их выполнения, может искренне верят в правильность пути без анализа, может считают свой выбор наименьшим злом, может голосовали за стабильность или преемственность власти, может боятся увольнения или семейных сцен, может ещё что-то, но свой выбор они сделали. А тем, кто против этого выбора, нужно решать или подождать следующего «цикла», рассчитывая, что поймут ошибочность выбора сами, или следующий «цикл» постоянно указывать на ошибочность. Ну, или сваливать.
А что тогда фальсификация? Выборы — процесс долгий и мучительный, и день, когда в ящики закидывают бюллетени и подсчитывают их — всего один из этапов этого процесса, не первый и не последний. А фальсифицируются выборы на всех этапах.
Фальсификация когда голоса проголосовавших учитываются неправильно, учитываются «правильно» голоса непроголосовавших и учитываются «правильно» голоса вообще не существующих людей. И обратите внимание на название топика, речь идёт не о выборах в целом, а только о голосовании, о возможности объективной проверки избирателем того, что его голос учтён правильно, о возможности объективно проверить правильность итогового подсчёта и возможности субъективно оценить соответствие статистики известным ему фактам («сосед один живёт, а по его адресу 500 человек голосовало, а соседнего адреса вообще не существует»).
Название топика я вижу, но тем не менее считаю нужным сообщить и о моих опасениях касающихся принуждения к голосованию, поскольку из-за него электронное голосование как его видит топикстартер может привести к результатам, противоположным декларируемым (вместо честных выборов — нечестные).
Давно стоило бы так сделать. Но то ли ригидность, то ли желание фальсифицировать…
Но ситуацию можно изменить, допустим, если все решат проголосовать открыто. Лично я не скрываю за кого голосую, а вы?
В догонку… Мне вообще кажется, что это специально нас убедили, что голосовать нужно тайно, чтобы никто не мог проверить результаты
(1) Если человек знает, что все его знакомые будут голосовать за кандидата 1, а он хочет за своего особенного кандидата 2, на него может давить эта ситуация, если он точно знает, что все узнают.
(2) Проще применить административный ресурс, если известно кто проголосовал «неправильно».
(3) Политика — это холиварная тема, начнутся локальные распри. Это спорить можно бесконечно и ни к чему не прийти. Незачем тратить на это энергию, нервы и т. д.
Я думаю это проблема культуры уважения к чужому мнению. Походу вы правы, мое решение не для этой планеты…
Я вообще удивляюсь, насколько стыдным считается кого-то поддерживать. Критика считается полезнее чем поддержка. Если, вообще, кто-то задается вопросом пользы от своих действий.

Да, открытое голосование для идеального мира. Но в идеальном мире нет и махинаций, про которые собственно и сабж)
Я предпочитаю подразумевать лучшее и акцентировать внимание на расхождениях. Возможно кто-то задумается.
Касательно темы топика, в любом случае неплохо было бы иметь выбор открыто/закрыто голосовать, и электронная система учета, прозрачная для всех. Независимая технология, объективно безопасная, с открытым исходным кодом.
Дело не в стыде, я думаю, а в нежелании лишних конфликтов. Вплоть до семейных.
НЛО прилетело и опубликовало эту надпись здесь
Получилась небольшая неумышленная скрытая агитация за одну из партий в статье в день выборов :)
За которую сейчас схожу и проголосую, кстати :)
а что мешает произвольному избирателю зарегистрировать произвольное количество мест проживания в произвольных местах? система будет полностью дискредитирована при первых же выборах.
А что мешает использовать старые добрые списки? Прописку, к тому же, у нас никто не отменял.
Извиняюсь, я не написал, что на первом шаге избиратель регистрируется оффлайн, предъявляя паспорт.
Можно биометрические данные привязывать. Регистрация оффлайн, конечно.
Не хочу, чтобы комментарий вышел политическим, но все же: если нет доверия к самому ЦИКу, о каких алгоритмах мы вообще говорим? В нашей стране даже самые тщательно продуманные, суперзащищенные и сверхнадежные технологии разбиваются о человеческий фактор: даже в случае применения такой схемы можно спокойно заявить, что волею божьей произошел сбой, все данные уничтожены, победил «кто надо», явка 146%, омон уже на площадях всех крупных городов страны.
Мы говорим о верифицируем технологиях! Если у вас нету доверия != у вас есть факты не доверять (хотя факты могут быть только ваши субъективные). Верифицируемые технологии подразумевают, что вы можете проверить ход и цифры голосования и можете проверить свой голос!

Конечно, ваш голос может не совпасть в финальной таблице голосов, но тогда для вас будет очевидным факт нарушения или сбоя.
В этом и смысл таких топиков — найти вариант, при котором можно провести нефальцифицируемые выборы без доверия к ЦИК. А в случае уничтожения всех данных должны назначаться повторные выборы. Да даже одной записи.
В том-то и дело, что если нет доверия к ЦИК, то любая затея «снизу» бесполезна, а вопрос становится чисто академическим.
Нет, можно сделать так, чтобы любая попытка фальсификации была сразу видна. Наверное, можно.
Весьма элегантно, однако:

1. Если я избиратель и не владею подписями и прочим или у меня нет инета? Бабушки, которые составляют основную избермассу не пропустят.

2. Анонимность — кому-то хорошо, а кому-то оочень хорошо для накруток.

3. Основная неудача у нас с тем, что мы в данном подходе доверяем ЦИКу, а это корень всех зол. Например тот же первый шаг — почему мы должны верить, что ЦИК выложить истинные данные? Или напр., что он инкрементирует счетчик? Надо эти моменты проработать. М.б. даже вся проблема, что веками это было централизовано — м.б. попробовать в сторону децентрализации или независимого дублирования во многие точки.

К сожалению тов. Чуров читает и тихонько посмеивается нашей доверчивости.
1. Проблема решается за счёт мобильных терминалов.
2. Согласен, мы слишком долго молчали и потеряли контроль за государственной машиной (хотя его и не было никогда).
3. Эти ребята из ЦИКа намутили воды с выборами, что теперь никому доверия нет в избирательной процедуре (даже родным учителям из школ/институтов).
1. Пример в студию, чтобы те же условия соблюдались, как в изначальном алгоритме.
2. Всё равно каждый человек может проверить, что лично его голос посчитали правильно. А другим давать такую возможность незачем.

3. Каждый человек может проверить, нужное ли количество людей зарегестрировались в его квартире. Или правда ли есть такой дом на соседней улице. Аналогично он может проверить, что счетчик при его голосе инкрементировали.
2 & 3. А как проверить «мёртвых душ»?

См. тов. Гоголя. Наверняка у нас тоже можно юридически настругать их over 1005000.
На практике у местных избиркомов есть списки тех, кто никогда не голосовал (алкаши, уехавшие в другой регион и не выписавшиеся, бирюки, просто не интересующиеся политикой и т.п.). Вот за них и вбрасывают перед самым окончанием выборов.
Но криптографией это не решается.
Поясните пожалуйста защищенность алгоритма от неблагонадёжных участников:

1) Что будет если ЦИК будет нагло генерировать голосующих? Тут уже упоминались режимные объекты, на которых количество человек проверить проблематично.
2) Что будет, если избиратель — тролль, и будет в наглую подавать в суд на то, что его голос изменен (хотя он не изменен)?
3) Как обеспечить полную невозможность проверить стороннему человеку голос избирателя (дабы обеспечить невозможность голосования под давлением)?
1) Никак, но вы можете проверить обычной логикой. Что на объекте не может быть 10 миллионов человек или не может быть 10 000 объектов. Или попытаться провести журналистсткое расследование. Согласитесь узнать тот факт, что процент на этих объектах абсолютно не совпадает с другими — уже что-то подозрительное. И этот факт будет потвержден ЦИК!
2) Я предлагал схему, что избиратель мог бы проверить свой голос в момент голосования, тогда он бы мог в момент голосования, сняв с себя анонимность, проголосовать. Но в этой схеме это невозможно.
3) В этой схеме это принципиально невозможно. Если вы можете проверить свой голос, значит, и кто-то может проверить ваш голос по уникальному ключу. С другой стороны, если бы результаты появлялись сразу и не зашифрованные, но анонимные, вы могли бы выдать любой случайный голос за ваш.
1) По стране таких объектов — пруд пруди. В каждом добавить по 1000 человек — уже можно заметно колебать результаты. И проценты по таким объектам будут другими точно — предпочтения то неравномерно размазаны по обществу.
3) Ну собсно вот тут надо бы реализовать некую методику, чтоб можно было любой голос предоставить как свой. Иначе честное голосование не обеспечить в принципе.

2) Я думаю, что этот момент не столь страшен конечно, ибо наврядли таких будет много. Но у нас и из-за одного такого случая могут вонь поднять до небес.

На хабре уже об этом говорилось, но суть честных выборов такая. Нельзя доверять никому — ни ЦИКу, ни избирателям, ни кандидатам, ни наблюдателям. Система должна обеспечивать полную защищенность от подлога со стороны всех сторон одновременно. Вот только я сомневаюсь, что это возможно. Надеюсь, что какой-то крипто-гений сумеет меня опровергнуть.
Как не доверять избирателям? :)
Очень просто. Я могу прийти и голосовать за одного, а потом кричать на всех углах, что голосовал за другого, а голос мой был украден. А могу вообще забыть, за кого я голосовал — и всё равно кричать. А могу некорректно заполнить бюллетень — и всё равно кричать.
2) Он должен будет предоставить в суд случайное число, голос, ключ шифрования. Эксперты проверят соответствует ли зашифрованный ими бюллетень зашифрованному в базе ЦИК и верна ли подпись в базе ЦИК по предоставленному ранее в ЦИК открытому ключу.

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

3)… а так же разрешение на скрытую аудио-видео съемку, которая принимается судами (например, диктофон/камера с глонассом и цифровой подписью). И тут сразу все с ног на голову становится. Если начальник под угрозой увольнения требует сотрудника голосовать так-то и так-то и потом проверяет твой голос, а у сотрудника все это записано, то теперь уже сотрудник (и особенно несколько сотрудников) могут шантажировать начальника статьей УК.
Я так понимаю, если вы предлагаете свой метод, то у вас есть претензии к электронному голосованию осуществленному недавно не системной оппозицией? На сколько я понимаю, все 3 условия соблюдены были.
Ну да, все, кроме 3.2 — «Любой человек должен иметь возможность посчитать итоговые результаты и проверить на отсутствие «вбросов».»
Проверка на отсутствие вбросов — это вообще большая проблема систем электронного голосования.
Насколько я помню, есть даже какая-то фундаметнальная теорема о невозможности реализации системы голосвоания, одновременно анонимной и защищенной от вбросов.
Вбросы были теоретически возможны только со стороны ЦВК, но они же возможны и в данном случае со стороны ЦИК, ваша теорема верна)
А можно ссылочку на теорему?
Эта схема слабо применима к голосованиям, которые проводятся не государством, и процент голосующих от общего числа мал.
Во-первых, нужно утрясти все юридические тонкости с публикацией адресов избирателей, и хранением личной информации.
Во-вторых, приписка 10 голосов в десятитысячном городке не так заметна, как приписка 1000.
Вы знаете, таких схем — анонимность+открытость+верифицируемость — стотыщмиллионов, и непонятно, какую Америку Вы открываете. Вот на недавних выборах в КС ровно так и было — и анонимно, и открыто, и верифицируемо.

Проблема-то не в этом. Проблема в том, что «из воздуха» берутся дополнительные голоса за альфа-кандидата, и Ваша схема от этого никаким образом не защищает. Анонимна? Прекрасно. Открыта — да пожалуйста, вот в таком-то УИК-е столько-то голосов с такими-то хэшами, всё открыто. Верифицируема? Да ради бога, если вы голосовали, то проверяйте свой хэш. А вот эти 100500 хэшей за Путина, что рядом? А это не ваши, извините, их вы проверить не можете.

В условиях, когда ЦИК может быть не честен, эта схема ни от чего не защищает.
Публикация числа проголосовавших по каждому адресу поможет частично контролировать вбросы, затрудняя их. Хотя бы что на ваш адрес не «пропишут» вдруг 1000 человек. Что у вас в доме вдруг появилась новая квартира, или что новый дом на улице, или новая улица в доме, или новый город/деревня в районе, или новый район в регионе.
Посмотрите статистику по президентским выборам, скажем, в Питере. Там была туча участков с 99,(9)% голосов за самизнаетекого, но все они были на предприятиях, в режимных учреждениях и т. п. Проверить их нет возможности.

Кроме этого, один из основных каналов вброса — это голосование вместо тех избирателей, которые физически существуют, но на выборы давно не ходят (и в УИКах это знают). Таких очень большое количество — до половины списочного состава. Такой резерв позволяет корректировать голоса как угодно, и это тоже не проверить в предложенной схеме — в списках реально существующие люди, в реально существующих квартирах, только на самом деле они в этот день картошку сажали, а проголосовали за них ребята из карусельных автобусов.

>только на самом деле они в этот день картошку сажали, а проголосовали за них ребята из карусельных автобусов.

Здесь вы ошибаетесь. Я не голосовал, но обязательно бы проверил, если бы мог, что мой голос не украли. И таких как я, уверен, не мало.

Но сейчас у меня такой возможности нет.
Я _знаю_, что голоса на думских выборах на моём участке были украдены. Это видно по статистике. Но статистику на хлеб не намажешь и к делу не подошьёшь.

Так что лучше бы придумать протокол, который исключает такую возможность, а не надеяться на то, что все будут ходить по подъездам и сверять с соседями протоколы голосований.
А криптографическими методами такое не решается. Как где-то писали, «Человек, вместо которого проголосовали, неотличим от человека, который смотрит только первый канал»,
Откуда Вы знаете, что не решается?
НЛО прилетело и опубликовало эту надпись здесь
Хотя бы потому, что она прописана в Конституции. В теории она нужна для гарантии отсутствия репрессий против проголосовавших «неправильно». Скажем, чтобы еле пришедший к власти не мог расстрелять всех кто за него не голосовал, чтобы в следующий раз получить 100%. Или чтобы жена не лишила секса, за то, что ты не проголосовал за «её лапочку».
НЛО прилетело и опубликовало эту надпись здесь
Вообще-то это наша Конституция. По крайней мере я за неё голосовал, внимательно изучив текст проекта.

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

И демократические механизмы есть.
НЛО прилетело и опубликовало эту надпись здесь
Поддерживаю.
Большинство, вообще понятия не имеют, кого они выбирают и за что голосуют. Продавать свой голос за бутылку водки или за красивые ролики в ютубе — легко, а вот получить хотя бы среднее образование для таких людей проблематично.

Я предлагаю более радикальное решение проблемы — вообще отказаться от выборов партий и политиков!

Страной должны управлять не политики, а ученые, которые выдвигают наилучшие программы развития страны. И люди должны выбирать ПРОГРАММЫ РАЗВИТИЯ, а не красноречивых шарлатанов.

КАЖДАЯ категория граждан, должна понимать, что если она выберет 1й вариант — то через X лет получит конкретно то-то то-то, но не получит вот-это. Если 2й — вариан, то получит вот это, но с чем-то придется подождать… и т.п. И должны быть назначены КОНКРЕТНЫЕ люди, отвечающие за реализацию выбранной программы и несущие ПЕРСОНАЛЬНУЮ ответственность, каждый на своем участке реализации.

Каждая ПРОГРАММА РАЗВИТИЯ должна иметь свой срок и КОНКРЕТНЫЙ РЕЗУЛЬТАТ, который проверяется/оценивается по истечению срока. Причины не достижения прогнозируемого результата, должны быть прозрачны и выявляться на промежуточных результатах.

И такое голосование за ПРОГРАММУ РАЗВИТИЯ, должно быть ОТКРЫТЫМ, т.к. люди не выбирают политика, они выбирают свой образ жизни на следующие X лет и знают, что КОНКРЕТНО получат по истечении этого срока и КТО за это будет отвечать.
НЛО прилетело и опубликовало эту надпись здесь
Все красиво на бумаге, но забыли про овраги. А кому принимать решения в случае стихийных бедствий или, например, военной угрозы?
Исполнительная власть и законодательная — несколько разные вещи. Если от законодательной можно легко отказаться в пользу прямой демократии, с исполнительной так не получится. А уж аварийные службы точно должны оправляться почти как сейчас для обеспечения быстрого реагирования. Так что к прямой демократии надо подходить разумно.
При отсутствии анонимности все будут в приказном порядке голосовать. Кто на заводе за нужного кандидата не проголосует — премии не получит. Поэтому анонимность нужна обязательно.
НЛО прилетело и опубликовало эту надпись здесь
Принуждение к голосованию «правильно» под страхом лишения премии или увольнения на местечковом уровне — это не повод для анонимности, это личный выбор каждого, позаботиться о будущем страны вообще и своём в частности или о своих текущих доходах, непротивление такому принуждению такая же гражданская позиция как, например, не ходить на выборы: «мне пофиг что будет, сейчас хорошо и ладно».

Основная причина — гарантия отсутствия репрессий (лишение прав, свободы, здоровья, жизни) на государственном уровне после демократических выборов приведших к тоталитаризму. То есть, проще говоря, чтобы меньшинство не пострадало от желания большинства иметь «сильную личность» у власти.
Защититься от тоталитарного режима анонимностью, мне кажется, не самый лучший способ. Ведь если режим действительно тоталитарный то во-первых он и так может узнать кто за кого проголосовал. Во вторых, в случае анонимности у тоталитарного режима развязаны руки в плане фальсификации. Прикрываясь защитой прав человека и рассказывая страшилки о репрессиях такой режим может вбрасывать голоса и мы это никак проверить не можем. Анонимность совсем не на нашей стороне…

Другой вопрос, что некоторые действительно могут захотеть проголосовать анонимно. Я думаю такое право должно остаться (например если все в семье голосуют за другого кандидата и ты не хочешь ссориться на политической почве).
Конечно, негодяй диктатор может сказать, что за меня проголосовало 70% и все анонимно, а за остальных 30%, но открыто, но согласитесь, это уже все будет шито белыми нитками. Особенно с учётом того, что мотива голосовать анонимно за текущую власть опасаясь репрессий очевидно меньше
У нас итак результаты голосования шиты белыми нитками. И разве это кого-то смущает?
Допустим создана идеальная система для голосования.

Тогда просто появятся различные более хитрые средства для формирования определенного мнения у избирателя ( а значит и определенного выбора ) — а отсюда следует, что выбранная власть все равно не будет отражать справедливость
Но такая система покажет реальный выбор людей. Чем он обусловлен — дело десятое. Если вас лично он не устраивает, то есть, как минимум, три варианта:
1) подождать следующих выборов в надежде, что народ сам поймёт ошибочность своего выбора
2) самому активно объяснять народу ошибочность его выбора
3) свалить подальше от народа, которому так легко промыть мозги.

В условиях когда вы или я не можем узнать реальный выбор народа, сваливать на основании заведомо фальфицированных результатов может быть несколько опрометчиво, не зная точно реальные проценты раскладов.
НЛО прилетело и опубликовало эту надпись здесь
Напомнили — Гайя: будущее мировой политики
Я не знаю как в России, у нас в Латвии есть портал latvija.lv, там есть различные электронные услуги, аутентификация проходит через банковские аккаунты. Почему просто не сделать такую систему? Голосуешь через банк и всё. Имя, фамилия персональный код. Если пробуешь два раза, через другой банк, то тебе говорят — простите, вы уже голосовали. И всё это может соответствовать всем вашим критериям — анонимность, открытость, верифицируемость.
Анонимность откуда, если аутенфицируешься именем, фамилией и персональным кодом? И как проверить, что твой голос учтён правильно?
Смотря что мы подразумеваем под словом анонимность, я имею в виду, что каждый может посмотреть результаты голосования, но без имен, фамилий и персональных кодов. И проверить так-же, ввел опять банковские данные — выдало тебе твой результат, за кого ты голосовал (считало с базы).
Анонимность — это тогда, когда никто, никакими способами не может сопоставить ваш голос и ваши персональные данные, потому что такой информации просто нет. Их этого ясно, что способ «слепой подписи» — совершенно неанонимен.
Ничего не ясно. У вас 2 системы одна отмечает что вы проголосовали, а вторая знает результат. И отсылаете им вы абсолютно с разных айпи. Как вторая система принимает ваш голос? Потому что он подписан первой, но первая подписала шифрованный голос, а второй вы прислали открытый. И онитне могут быть сопоставлены.
Как человек, долго думавший над тайным электронным голосованием и даже написавший этот самый пост: habrahabr.ru/post/156121/, я так и не понял: где же анонимность в предложенном подходе?
ЦИКу для расшифровки голоса необходимо знать второй публичный ключ избирателя, так?
То есть изначально, у ЦИКа есть сопоставление избирателя и его обоих ключей, так?
Ну и где логика тайность голосования? Все же ясно, как на исповеди.

Нет, не нужен. Избиратель отсылает свой зашифрованный бюллетень со своими данными, получает подпись ЦИКа для зашифрованного, на её основе избиратель формирует подпись ЦИКа для незашифрованного и отправляет её уже анонимно (в теории, на практике можно соотнести адрес, например IP, неанонимный и анонимный).
Тогда это получается та же самая «выдача бюллетеня» и зачем городить огород с первым шагом подписи?
А если ЦИК для каждого сообщения будет генерировать «свою» подпись, то получаем однозначное сопоставление и прощай анонимность…
Механизм публичных случайных серий бюллетней более анонимен, думаю…
Грубо говоря предлагается система, в которой на бюллетень наносится избирателем в каюинке кроме галочки рандомное число и это число будет опубликовано в побюлететнных результатах — число и голос.
Единственный серьёзный минус во всей этой системе состоит в том, что действующей власти и правящей партии она (система) нахрен не сдалась.
Я против тайного голосования, да и все тут. В США каждый человек, регистрируясь избирателем явно указывает, за кого он голосует и ничего страшного. Конечно, сознание нации должно к этому подойти
Вы забыли о самом главном. Обнаружить фальсификацию — еще не значит ее доказать.
А кто-то серьезно исследовал данную схему (на математическом уровне)?

Т.к. с приведенным алгоритмом на основе RSA, если я ничего не упустил, имеем алгоритмическую проблему, позволяющую ЦИКу деанонимизировать избирателя.

А именно, ЦИК имеет:

1. m — оригинальное сообщение.
2. t — маскированное сообщение.
3. t^d — подпись маскированного сообщения.
4. s — подпись оригинального сообщения.

Причем t сопоставлено с конкретным изберателем (которого ЦИК знает), а вот m (сообщение) и s (подпись сообщения) — не сопоставлены.

Цель ЦИКа — сопоставить t с m или s.

Так вот, как я вижу, имея s и t^d — можно вычислить маску k (делим t^d на s по модулю n). А зная маску k, можно из m получить t (т.е. сопоставим m и t, что и требовалось). Правда для конкретного s придется брутфорсом находит конкретное t^d, но несколько миллионов вариантов (причем после каждого совпадения — число сокращается) — это не так много.

Возможно есть более совершенный алгоритм и там не будет такого недостатка?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории