Search
Write a publication
Pull to refresh

Comments 37

Электронное голосование в текущем виде это фарс и профанация, не далеко ушедшая от тупой голосовалки на сайте с привязкой к ЕСИА.


Уже писал вкратце о системах электронного голосования здесь. Вот этот комментарий тоже в целом хорошо описывает дело (кроме части с блокчейном и пост-квантовой криптографией).


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


Новые разработки в области хранения и верификации личных данных

Что? Это какие такие "новые разработки"? Криптографии с публичным ключом и использованию HSM (частным случаем которых являются ЭЦП-токены) уже сто лет в обед. Если вы о чём-то содержащем слово "блокчейн" в описании, то сразу забудьте, в случае электронного голосования почти гарантированно задача решается значительно проще, ибо у нас неизбежно есть центральная организация ответственная за проведение выборов (обращаю внимание, деревья Меркла != "блокчейн").

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

В публичный блокчейн ничего пихать не надо, достаточно записи в оперативно обновляемой "цепочке" Меркла подписывать подписью органа отвечающего за проведение голосования (публичный ключ органа фиксируется условным постановлением центризбиркома перед голосованием). Если будет попытка переписать историю, то наблюдателям в качестве доказательства будет достаточно предъявить стёртую ветку.


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

UFO landed and left these words here

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


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


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

UFO landed and left these words here

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


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


Часть исходных текстов системы и кое-какие детали уже известны, их можно изучить и по мере сил использовать в экспертизе, см предыдущий пост


Выработанные требования должны быть таковы, чтобы представители Голоса могли их преъявить на своих встречах с разработчиками системы.


Вот этим самым — выработкой требований, — я сейчас и занимаюсь по мере сил.

Допустим, но как тех, кто противится контролю и открытости, заставить реализовать эти требования? Просто попросить? Что делать, когда они скажут "нет"?

Давайте по очереди. Сделаем экспертизу, отдадим Голосу, они пообщаются, получат какие-то ответы, будем смотреть — какие именно. Разработчики опубликовали бОльшую часть исходного кода системы — это говорит об их заинтересованности в диалоге с сообществом.

Судя по местным Issues — нет. Ни одного ответа от разрабов.
UFO landed and left these words here

Прежде всего, спасибо, что присоединились к обсуждению.


Судя по всему, от обсуждения того, что мы имеем, мы начинаем плавно переходить к обсуждению того, что у нас должно быть.


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


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


Опираясь на сообщество независимых наблюдателей, ждущей от нас экспертизы проекта, мы можем повлиять на постановку ТЗ. Как вы можете заметить, в обсуждении деталей эксплуатации системы с разработчиками участвует представитель Голоса например.


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


Если вы о чём-то содержащем слово "блокчейн" в описании, то сразу забудьте, в случае электронного голосования почти гарантированно задача решается значительно проще, ибо у нас неизбежно есть центральная организация ответственная за проведение выборов

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


Что касается регистрации, то на ее примере я полагаю, хорошо заметно прежде всего, что детали административной верификации исходных данных в настоящих обстоятельствах гораздо важнее технических деталей реализации контроля целостности собранных данных. Регистрация московских участников голосования на mos.ru на основании осведомленности о личных данных, вызвавшая скандал на идущем сейчас голосовании, — хороший пример этому. При всех недостатках, ЕСИА оказался по всей видимости, значительно более устойчив к фальсификации за счет требования о непременном личном визите к уполномоченному регистратору.

блокчейн <..> вполне достаточен для того, чтобы прикрыть часть системы голосования от махинаций

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

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


Если вы готовы построить полную модель угроз для этой задачи, просто сделайте это, вам все будут благодарны.

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

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

UFO landed and left these words here

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

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

Это ортогональные вещи. Отменить уже данный голос просто: в новой транзакции указываем, что вон тот предыдущий голос заменяется этим, доказывая владение ключом, которой подписана предыдущая транзакция. Деанонимизация происходит не здесь.

Если те кто контролировал за кого Вы проголосовали уничтожат ключ то переголосовать Вы уже не сможете?

Это публичный ключ, его мало смысла уничтожать. Можете принести свою копию.


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


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


Контролирующие могут протерять свои ключи, которыми они визируют, что вы действительно существуете и при них показали, что ваш голос технически корректный. Если виза контролёра обязательна для приёма голоса в систему, то решение очень простое: делаем утерю ключей нарушением статьи за препятствие осуществлению избирательных прав.

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

Про этот приватный ключ я и говорю.

Ситуация: ваш начальник принуждает пройти процедуру получения приватного ключа. Ключ остаётся у него либо уничтожается после «правильного» голосования. А жаловаться Вы не пойдёте т.к. потеряете работу (или Вас убедят в этом). Как вариант Вы можете работать в структуре куда надо жаловаться о нарушениях :).

Если сделать механизм повторного получения ключа то теряем доверие к системе которая выдаёт ключи.

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

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


Блокчейн и криптография тут никак сами по себе не помогают, потому что ваша свобода воли — только ваша свобода воли. Вы — не смартконтракт. Данные в системе не могут вас вынудить поступить каким-то образом.


Если сделать механизм повторного получения ключа то теряем доверие к системе которая выдаёт ключи.

Почему теряем? Просто у неё другой подход к аудиту и ответственности. Все зарегистрированные ключи записываются, доступ к копиям сертификатов отзыва логгируется, и они торжественно сжигаются после завершения голосования.


нужна привязка каждого голоса конкретному лицу для отмены записей сделанных ранее

Конечно нужна. Но эта привязка не обязана связывать вас с другими голосованиями или другими реестрами.

Как-то сложно всё. Обычному человеку вся эта криптография и блокчейны ничего не докажут, а только запутают.
Лично меня бы удовлетворил обычный txt/xls файл, где в строке указан уникальный ключ голосовавшего (можно получать на госуслугах) и голос. Файл публикуется в доступном месте, где каждый может его скачать и убедиться что его голос учтен правильно, и посчитать, что кол-во голосов соответсвует объявленному.
Я не очень понимаю, зачем нужна тотальная анонимность.
UFO landed and left these words here
Согласен, эту проблему мой метод не решит.
Но если проголосуют 86% и потом убедятся что их голоса на месте, то кол-во подложных будет уже несущественно.
Как простому трактористу не ходившему голосовать убедиться, что его голос не посчитали в блокчейне?
С электронным голосованием, самая большая проблема даже не техническая, а то что удалённо не возможно проверить было ли принуждение или нет, а якобы переголосовать поможет только если есть мотивация и возможность это сделать, есть же места где такой возможности тупо нет, как в домах престарелых где многие даже не поймут за что голосовали, а ещё есть места и организации где люди постоянно под присмотром.
У нас в Эстонии уже всё готово для электронного документа оборота, но даже у нас хотят полностью отказаться от электронного голосования.

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

UFO landed and left these words here
Голосование должно быть открытым, так что бы каждый мог посмотреть хоть через год хоть через 10 лет за что он голосовал, или кто-то другой за что проголосовал. Только тогда можно быть уверенным, что выборы реально честные. Любое тайное голосование, это подделка, чем бы вы там не пытались её защитить, деревьями или блокчейнами, что мешать ваш выбор изменить нужным людям до того как запись попадёт туда куда где изменения уже можно отследить? Топящие, ааа как же так мой выбор станет известен другим, если вы этого боитесь, то вам уже надо не в этом государстве жить, потому что тайным изменить ничего нельзя. Мог конечно опосредовано привести пример про выборы президента, опрашивал знакомых ты голосовал за этого? нет… нет… нет… вообщем единичные случаи да. Вопрос кто врёт, они или система, не проверить.
Мне кажется, главная проблема из технических заключается в том, что сервер, выдающий юзеру все необходимые данные (ключ, кодовые значения для опций, клиентский код и тд) может за юзера заполнить бюллетень как надо. Или даже подсунуть такой бюллетень, в котором обе опции означают одно и то же. По идее, мы ещё можем проверить, что сервер нам отдал именно тот dit.bundle.js, что и был выложен на Github (правда, 99.99% юзеров не заметят подмены), но то что на сервере, отрабатывающем наши запросы, крутится аутентичный код — никакой гарантии нет.

Пункт "Контроль развертывания" именно об этом

ну вот мы проконтролировали развертывание, а потом кто-то зашел на сервер по ssh и подменил пару файлов

вот мне просто интересно, какую часть того, что я так старательно для вас писал, прочитали. Или вам термин терминальные сессии ни о чем не говорит?

Да это просто как пример. Уверен, что подменить код или данные можно десятком разных способов, которые не искушенный наблюдатель не проконтролирует (да и искушёный — не факт)
Sign up to leave a comment.

Articles