Pull to refresh

Comments 60

Сколь сложная защита электронного голосования ни придумывалась бы, одно условие должно выполняться всегда: избиратель доверяет центру по приему голосов.
Как я могу доверять сайту? Кто мне может гарантировать, что в вашей схеме (N+1)-й бюллетень приведет к переголосованию? Ведь мне не известно это N.
Это вопрос открытости платформы и общественного мониторинга. Если код открыт и верифицирован MD5 например.
Для общественного контроля кроме кода, общественности придется давать постоянный доступ на сервер (или сервера), на котором он работает. Только так можно получить гарантию что в реальности работает тот-же код, который открыт.
Если правильно расписать использование пар
открытый/закрытый ключ, то единственным узким местом останется процедура верификации. При учете доступности протоколов голосования. Впрочем тут нужно скорее обратное действие: сделать так чтобы закрытым ключом можно было и шифровать и дешифровать, а открытым только дешифровать.
Тогда открытые ключи остаются у ЦВК, а закрытыми пользователь просто формирует протокол голосования и высылает его в любой центр подсчета.
Так вообще открытый же на закрытом строится — это в любой системе шифрования с несимметричными ключами. Так и будет работать — закрытый у пользователя, открытый у ЦВК — пользователь сам его отдает после генерации. Просто нужно подтвердить что это открытый ключ именно этого пользователя.

Тут проблема обеспечить анонимность избирателя от ЦВК, но и единственность его для ЦВК.
Голос можно шифровать не основным, а одноразовым ключем пользователя, который тот сгенерирует именно для данного голосования.

В таком случае порядок голосования следующий:
— пользователь отправляет «расписку об участии», подписанную своей персональной ЭЦП;
— пользователь отправляет свой, зашифрованный своим одноразовым ключем, голос;
— по окончанию голосования, ЦВК публикует все пришедшие голоса в зашифрованном виде;
— после такой публикации все пользователи отправляют в ЦВК свой одноразовый ключ, которым можно расшифровать его голос;
— ЦВК публикует все поступившие ключи и результаты по расшифрованным с их помощью голосам;

В таком варианте что-то подделать через ЦВК будет практически невозможно. Т.к. после публикации зашифрованных голосов любые махинации будут раскрыты.

В этом методе нет прямого решения проблемы вброса. Но, как здесь уже отмечали, она решается другими методами. И я лично считаю, что вброс можно усложнить настолько, что он будет очень сложно осуществимым.
Проблема «мертвых душ» решается?
Есть две, почти не взимосвзанные проблемы:
1. Верификация голосующих;
2. Защита голосов от модификации владельцем системы голосований;

Мое предложение выше касается только проблемы 2. Проблема 1 решается совершенно другими средствами — сетью взаимного доверия (http://habrahabr.ru/post/156097/#comment_5331929).
Сеть взаимного доверия — она возможна тогда, когда правящая кодла пойдет на уступки, а когда она пойдет, то и сеть взаимного доверия не потребуется.
Предложение из области «заставить террористов стрелять резиновыми пулями».
Преимущество сети взаимного доверия в том, что она вообще не зависит от «правящей кодлы». Кроме того, с властью всегда будет риск того, что она незаметно скатится к возможности махинаций. Так что сеть доверия — единственно возможный вариант организации общественного управления, в том числе и в перспективе.
Т.е. мы опять вернулись к тому, что террористов надо попросить пользоваться гуманными пулями, не стрелять в голову: только ноги и не ближе 100 метров.

Печально.
Давайте без аналогий. Они ничего не доказывают. Кроме того, ваши аналогии я не понимаю. Поясните, пожалуйста, о чем вы.
Ок. Начну из далека

Вопрос Вам: для чего создается система? Конечная цель?
Исключить необходимость «особых людей» для формирования законов и принятия решений при управлении обществом. Исключение необходимости доверять кому-то одному, который может захотеть узурпировать власть. В принципе, исключить возможность такого захвата.
«Исключить»… хм. Утопичная мысль… хотя нет, посадить на нары 30% населения (или сколько у нас там чиновников??).
Власть — это бизнес. Директор, который крадет у Учредителей будет покрывать начальников отделов, помогающих ему.
Все можно реализовать только если Президентом и бОльшей частью парламента станут принципиальные люди. Которые не гонятся за деньгами (у них, возможно есть уже накопления и им на проценты и так хорошо живется, или заплата гос работника им достаточна). Мутанты какие то выходят.
Еще раз — мы делаем систему голосования не для правительства!!! Мы делаем систему голосования для народа. Мы хотим дать людям возможность самим выяснять что они думают по тому или иному поводу. Что-бы в такое выяснение не могли вмешаться те, у кого есть власть или те, у кого есть деньги. Так что ваши аргументы не совсем в тему. Можно это сделать или нельзя — покажет время. Но мы, все-равно, попытаемся. Лучше попытаться и проиграть, чем всю жизнь жалеть что даже не пытался.
Вы модели угроз можете прописать нормально?
Извините, я не теоретик, а практик. Я не знаю что для вас означает «нормально».

Если вы действительно хотите разобраться в нашей идее — почитайте информацию на сайте и форуме проекта — gplvote.org.
Смотрел сайт. В вики много воды и нет первоочередных документов.

1. Создайте схему работы
2. Пропишите все взаимодействия
3. Создайте модель угроз (на все связи возможность подмены данных, фальсификация, подстановки, подмены)
4. в получившемся многостраничном документа на каждый пункт создайте решение.

Привлеките «безопасника» адекватного, у него схема работы от зубов должна отскакивать.
Вы готовы нам в этом помочь? Проект принципиально не коммерческий. В нем работают только добровольцы. Поэтому мы не можем «привлечь адекватного безопасника». Только если он сам захочет нам в этом помочь.
Готов.
Если не был бы готов, то не стал бы прояснять «нафига?» и «каким макаром?» (основные вопросы :) )
В таком случае — добро пожаловать к нам на форум. :) К сожалению, на хабре не все участники проекта имеют возможность писать.
Этот метод не очень-то поможет защитить результаты в целом.
Предположим у нас есть десять человек, которые не имеют между собой личного контакта.
Они голосуют и получают квитанцию, в которой отмечено, за что каждый из них отдал голос.
Каждый из них может зайти и проверить, не изменился ли результат. Допустим, они видят, что результат не изменился.
Теперь смотрим, как это выглядит со стороны ЦИК:
пользователь голосует, запоминаем за кого проголосовала какая квитанция и вносим в базу свои, «нужные», результаты. Пользователь видит одно, результат в сумме другой. Проверить, кто как голосовал физически невозможно.
При этом, даже если подписывать код приложения, никто не мешает модифицировать данные базы сторонним софтом, которого «не видит» обычный пользователь.
Подлог можно обнаружить только прямым пересчётом квитанций.
Но тут точно такая же проблема: сайт по пересчёту может быть каким-либо образом ангажирован и также считать по своему усмотрению.
Получается, что ЦИК будет рисовать одну картину (допустим, даже абсолютно правильную и честную), а ресурсы, проводящие параллельный пересчёт могут скомпрометировать результат только тем, что он не сойдётся.
В данном смысле, можно добавить дополнительную опцию защиты результатов. Нужно предоставлять возможность любому пользователю заходить на сервер удалённо с правами только на чтение и возможностью читать данные из базы, снифить все сетевые карты (на предмет запросов, которые могут модифицировать данные в «нужную» сторону) и так далее. Кроме того, каждый голос должен идти одновременными запросами сразу в несколько независимых источников (которые находятся под контролем самих кандидатов или партий, а так же возможно каких-то независимых организаций-наблюдателей) и они должны при этом с определённой периодичности проходить сверку и в случае несовпадения результатов за определённый период, квитанции за этот период должны быть аннулированы вместе с голосами и избирателе должны переголосовать.
Зачем столько сложности, это рулится методом Д.Бисмарка. Если есть сомнение в правильности учета голоса — зашёл, проверил по своей «квитанции» как голос учтён…
Вам показало «белую бухгалтерию», а результат выводится по «черной».
Т.е. из X голосов Вы можете проверить только свой — выходит так?
Ну тогда только дублирование/троирование систем голосования… Видимо, это и есть выход в ситуации тотальной манипуляции.
Дублирование куда?
Во вторую черную бухгалтерию?
Если в «белую» на сторонние системы, то владельцы второй системы кто?

Нужна некая система, которая
1. верифицирует голосовавшего по его ключу — она должна быть независима от системы голосования, контролируема на уровне открытая база людей всей России. Доступ всем, но с подписанием документов о непередачи персональных данных + доступ свой для контроля своих данных.
2. система голосования, которая принимает голос, подписанный человеком, выдает список голосов и ключей/подписей для скармливания системе 1

Я бы систему 1 делал открытой до уровня открытого голосования (пусть все знают мой/твой/их выбор)
Любой человек может контролировать не только свой голос, но и голоса своих знакомых (спросить их лично и сверить, в случае несовпадения — аннулировать голоса: аларм!!! ахтунг!!)
Увы, в условиях принуждения к голосованию, тайное голосования увы пока единственный выход.
Принуэжения особого нет. Бюджетники (особенно ЖЭК и т.п.) кипятком ноги спарили себе в страхе «а что если не ввп), А с заводов народ гнать и контролировать — муторно.

Но в целом мы сейчас обсуждаем систему в которой все будет идеально, можно и помечтать о России, где люди понимают и осознают свой выбор и несут ответственность за него, а не получают свою доп. пайку в 500 рублей и рады по уши.
Мы не обсуждаем, мы проектируем ;)
Проектирование какое то «сферическое в вакууме» немного. Из ряда проблем рассмотрены не самые важные. Самая важная проблема — как осуществить правильный подсчет без просмотра личных данных любым человеком при полной достоверности голосов: т.е. любой человек должен иметь возможность импортировать себе файл статистики и при помощи некого алгоритма получить результат, при этом по этим импортированным данным так же, имея ключ/подпись, можно было бы проверить достоверность голоса. Так же бы системе не хватало бы базы подписей (части её для контроля) с данными человека (не полными, но достаточными, которые были бы доступны определенному кругу лиц после подписания документов о тайне личной информации (или как то без этого обойтись).
Как вариант задействовать номер паспорта и нечто подобное
В варианте когда публикуется два отдельных списка — список «расписок о голосовании» и список голосов, возможно следующее:

1. Каждый может проверить как учелся его голос;
2. Каждый может посчитать общий результат голосования;
3. Каждый может по списку «расписок о голосовании» увидеть кто именно принимал участие в голосовании;
4. Каждый может по списку «расписок о голосовании» связаться с данным голосующим, убедиться что он является реальным человеком и что его голос учелся верно (просто спросить — «ваш голос в голосовании учелся верно?»). При этом НЕ происходит раскрытия тайны голоса.

По моему мнению — это достаточно хороший набор возможностей. Хотя-бы потому, что голосования будут проверяемыми.
1. ОК
2. с учетом добавления «мертвых душ» — смысла не имеет
3. «мертвые души»
4. кол-центр для «мертвых душ»
2. С учетом пункта 3 и 4 — имеет.
4. А с чего вы взяли что звонок будет главным и единственным способом проверки? Из-за того что пока только такие способы предлагались? Я под проверкой имею ввиду что-то более естественное типа живой встречи. Соответственно, возражение по п.3 не имеет смысла.

Конечно, никто не будет проводить такие проверки глобально. Но провести ее имеет возможность любой голосовавший. Да и вообще любой. И даже потенциальная возможность проверки приведет к тому, что будет просто опасно использовать «мертвые души».
Если не звонок, то ??? открываем персональные данные??
Я, как работодатель начну проверять голоса и увольнять всех, кто не за моего кандидата.
Да — раскрытие персональных данных. НО! Не массово, а только проверяющему. И пишу еще раз — при проверке значение голоса не раскрывается. При проверке только выясняется что голосующий — реальный человек и что его голос учелся верно. При этом последнее проверяет сам голосующий.
А проверяющие должны иметь разрешение ФСБ, корочки нужной партии и справку из КВД и подпись Гундяева… ага.
Формально и сейчас Вы можете проверять списки голосования. Правда их быстро уничтожают да и получить доступ как слетать на Луну.
Зачем? Я разве не могу лично проверить у кого-то документы если проверяемый тоже на это согласен? Тем более, что проверка будет двусторонняя. Если люди соберутся вместе именно для того, что-бы удостоверить друг друга? Лично, как отдельные граждане, а не представители каких-то официальных структур.

Вся сеть доверия должна строится только на личных контактах. Никакого официоза.
Все мертвые души будут не согласны на проверку их.
Я под «мертвыми душами» имею ввиду голосующих, которым не соответствует реальный человек или которые вообще не голосовали.

Во втором случае, если человек при проверке сообщит что он голосовал и его голос учелся верно, хотя это и не так — это такое-же полное право данного человека, как и право на голосование. Такое-же полное право, как право продать свой голос. Это — не «мертвые души», а те, кто сделал свой выбор. Безответственный, но выбор.
Вот есть у вас ФИО человека и максимум телефон. Что либо говорить Вам он не обязан, подтверждать что либо тоже. Общается только по телефону, у 90% таких будут голоса похожи, но доказать Вы ничего не сможете.

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

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

В том-то и дело, что у нас не предусмотрено понятия «противник». Это просто система с обратной связью. Будет она работать или нет — покажет время. Наша задача ее реализовать. Дальше все будет зависеть от людей, которые ее будут использовать.
При любом голосовании на более чем 1 вариант есть противник. Даже при голосовании жильцов на установку домофона (тут кроме жильцов есть и прочие заинтересованные стороны).
Подразумевается что все заинтересованы в честности голосования. Подразумевается что процент желающих подделать результаты небольшой. И что система обратной связи с ними справится.

Истины ради, соглашусь что последнее может и не получится. Но что-бы это проверить, систему нужно сначала реализовать.
Пока нет четкой системы взаимодействия невозможно понять где есть «черные места» в системе и дыры.
В комментарии выше написал по пунктам что надо делать ДО того как работать над «деталями».

Например с учетом того, что голоса можно проверить по факту — теряется смысл в тайности голосования и кабинках и т.п.

В Вашем начинании есть много благого, но каша в целом сводит все на ноль.
Вот ради этого блага — подключайтесь к нам на форум и критикуйте.

Я согласен что нашей идее не хватает четкого оформления. Но в данных условиях это понятно. В проекте работают только энтузиасты, которые могут над ним работать лишь в свободное от основной работы время.
В том то и проблема, что каждый зайдет, убедится, что _его_ голос учтен верно, но как голосовали другие — не известно и в суммарном выражении достоверность результатов проверить без дополнительного контроля нельзя. На данный момент точно также избирательная комиссия каждого участка делает несколько заверенных копий протокола и он выдается представителю партии/кандидата на данном участке и они точно также пересчитываются параллельно с ЦИКом в штабах партий/кандидатов.
Станислав, главная ваша ошибка в том, что вы опять (как и многие до вас) не рассматриваете вариант «владельца системы голосований — злоумышленника». Если его рассматривать, то предложенные вами меры по предотвращению вбросов бессмысленны. А без них остается банальная задача идентификации своего голоса голосующим в бюллетене с результатами.

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

При голосовании пользователь отправляет в систему последовательно два документа: подписанную личной ЭЦП «расписку об участии» в выборах и непосредственно голос с уникальным идентификатором (можно использовать и предлагаемый вами способ его формирования).

При таком голосовании можно делать просто — не пускать в систему голоса, которые увеличивают их количество на величину, большую чем количество имеющихся «расписок об участии».

Конечно, это не панацея.Возможен «перехват» голоса мошенником если он сможет отправить свой голос в промежутке между отправкой пользователем «расписки» и своего голоса. На уровне сервера возможно косвенное раскрытие тайны голоса по таймингу поступивших «расписок» и голосов. Такой способ, конечно, можно дорабатывать.
Когда обсуждали FTN|NNTP транспорт для GPLVOTE у тов. Мицгола возник вопрос, можно ли сделать голосование анонимным, я и вспомнил про эту идею.
Концепция «злоумышленного ЦИКа», увы, актуальна, и, вообще, реально лечится только дублирующей системой голосования и сверкой результатов.
Наверно, поэтому я решил реактивировать свое участие в GPLVOTE.
«реально лечится только дублирующей системой голосования и сверкой результатов.»

Не согласен. Эта проблема решается использованием криптографии. Выше я предложил способ, который именно эту проблему вполне успешно решает.
Нет, от «злоумышленного ЦИКа» не спасет. Ибо кто правит базу данных, тот и прав. Единственный технически-надёжный способ работы на ненадёжных элементах — дублирование (троирование, при необходимости).
ЦИК не сможет «подделать» ЭЦП реального пользователя. В принципе, не сможет.
ЭЦП не сможет, а результаты в целом — сможет на 146%. Вариант прямого контроля — снифа и внешнего чексума базы был предложен выше, но мне он не нравится, так как сильно снижает безопасность хеш-алгоритма в целом. Утянутые мегабазы паролей неплохо статистически дешифруются, как выяснилось…
«Результаты в целом» должны публиковаться в виде базовых голосов. Если ЦВК публикует только сводные результаты — это не голосование, а фарс. Публикация голосов должна быть вообще базовым требованием ко всем голосованиям. Выше в комментариях я описал способ при котором ЦВК в принципе не сможет что-либо изменить. Т.к. при первой публикации зашифрованных результатов, ЦВК не будет знать сколько голосов за кого отдано. А мошенничать на более позднем этапе он не сможет, т.к. для этого понадобятся закрытые одноразовые ключи пользователей, которые, даже сам пользователь лучше-бы уничтожал сразу после отправки голоса.
Публикация большого числа хэшей создаёт возможность их статистического реверса. Это снижает защищённость системы в целом. Поэтому нельзя так.
Если для формирования хэшей использовать большое количество данных, как предлагаем мы, реверс хэшей будет достаточно проблематичным. Кроме того, не обязательно в качестве публичного идентификатора использовать именно хэш. Можно использовать хэш зашифрованных публичным ключем пользователя его персональных данных. Реверсирование в данном случае в принципе невозможно, а проверить его при наличии персональных данных пользователя можно легко.
В данном случае хеш-алгоритм не должен играть роли. Если аутентификация пользователя происходит с использованием ЭЦП, хранить пароли в базе никто не будет. Храниться будет только информация необходимая для сопоставления. Это может быть просто любой уникальный идентификатор вшитый в ключ. То есть безопасность перс. данных тоже не будет под угрозой. Ну и конечно в базе будут храниться сами данные, подвергаемые контролю.
Стальную Крысу — в президенты!
Only those users with full accounts are able to leave comments. Log in, please.