Обзор системы дистанционного электронного голосования ЦИК РФ

    31 августа 2020 состоялся публичный тест системы дистанционного электронного голосования (далее ДЭГ) с применением технологии блокчейн, разрабатываемой по заказу ЦИК РФ.

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

    Требования к системе


    Основные требования, которые предъявляются к любой системе для голосования, в целом одинаковы и для традиционного очного голосования, и для дистанционного электронного голосования, и определены Федеральным законом от 12.06.2002 N 67-ФЗ (ред. от 31.07.2020) «Об основных гарантиях избирательных прав и права на участие в референдуме граждан Российской Федерации».

    1. Голосование на выборах и референдуме является тайным, исключающим возможность какого-либо контроля за волеизъявлением гражданина (ст.7).
    2. Возможность голосования должна быть предоставлена только лицам, обладающим активным избирательным правом на этом голосовании.
    3. Один избиратель – один голос, не допускается «двойное» голосование.
    4. Процесс голосования должен быть открытым и гласным для избирателей и наблюдателей.
    5. Должна обеспечиваться неизменность поданного голоса.
    6. Должна отсутствовать возможность подсчитать промежуточные итоги голосования до его завершения.

    Итак, у нас три участника: избиратель, избирательная комиссия и наблюдатель, между которыми определен порядок взаимодействия. Еще можно выделить четвертого участника – органы, осуществляющие регистрационный учет граждан на территории (прежде всего, органы МВД, а также другие органы исполнительной власти), поскольку активное избирательное право связано с гражданством и местом регистрации.

    Все эти участники взаимодействуют друг с другом.

    Протокол взаимодействия


    Рассмотрим процесс голосования на традиционном участке, с урной и бумажными бюллетенями. В общем упрощенном виде он выглядит так: избиратель приходит на участок и предъявляет документ, удостоверяющий личность (паспорт). На участке работает участковая избирательная комиссия, член которой проверяет личность избирателя и наличие его в списке избирателей, который был составлен ранее. Если избиратель найден, член комиссии выдает избирателю бюллетень, а избиратель расписывается в получении бюллетеня. После этого избиратель отправляется в кабинку для голосования, заполняет бюллетень, и опускает его в урну. Чтобы все процедуры соблюдались строго по закону, за всем этим следят наблюдатели (представители кандидатов, общественных институтов наблюдения). После завершения голосования избирательная комиссия в присутствии наблюдателей производит подсчет голосов и устанавливает итоги голосования.

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

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

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

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

    Компоненты системы


    С технической точки зрения система ДЭГ представляет из себя программно-технический комплекс (далее ПТК), объединяющий набор компонентов для обеспечения взаимодействия участников избирательного процесса в единой информационной среде.

    Схема взаимодействия компонентов и участников системы ПТК ДЭГ приведена ниже на рисунке.


    Кликабельно

    Процесс дистанционного голосования


    Теперь подробно рассмотрим процесс дистанционного электронного голосования и его реализацию компонентами ПТК ДЭГ.

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

    При визите избирателя на участок происходит его аутентификация (сопоставление с данными паспорта) и идентификация в списке избирателей, а также проверка того, что этот избиратель ранее еще не получал бюллетень. Здесь важный момент – невозможно установить, опустил ли избиратель полученный бюллетень в урну или нет, только факт того, что бюллетень уже выдавался ранее. В случае ПТК ДЭГ визит избирателя представляет собой обращение пользователя на Портал ДЭГ – это сайт, расположенный по адресу vybory.gov.ru Как и на традиционном участке, на сайте размещены информационные материалы о проводимых избирательных кампаниях, сведения о кандидатах и другая информация. Для проведения идентификации и аутентификации используется ЕСИА Портала Госуслуг. Таким образом, сохраняется общая схема идентификации как при подаче заявления, так и при участии в голосовании.

    После этого начинается процедура анонимизации – избирателю выдается бюллетень, который не содержит никаких идентификационных отметок: у него нет номера, он никак не связан с избирателем, которому он был выдан. Интересно рассмотреть вариант, когда участок оборудован комплексами электронного голосования – в этом случае анонимизация выполняется следующим образом: вместо бумажного бюллетеня избирателю предлагается выбрать из стопки любую карточку со штрих-кодом, с которой он подойдет к устройству для голосования. На карточке нет никаких данных об избирателе, только код, определяющий, какой бюллетень должен быть предоставлен устройством при предъявлении такой карточки. При полностью цифровом взаимодействии основная задача – реализовать такой алгоритм анонимизации, чтобы, с одной стороны, невозможно было установить никакие идентификационные данные пользователя, а с другой стороны – предоставить возможность голосования только тем пользователем, кто ранее был идентифицирован в списке. Для ее решения в ПТК ДЭГ применяется криптографический алгоритм, известный в профессиональной среде как «слепая электронная подпись». Мы подробно расскажем о нем в следующих публикациях, а также опубликуем исходный код, вы тоже можете собрать дополнительную информацию из публикаций в интернете по ключевым словам – «криптографические протоколы тайного голосования» или «слепая подпись»

    Затем избиратель заполняет бюллетень в месте, где невозможно увидеть сделанный выбор (закрытая кабинка) – если в нашей информационной системе избиратель голосует дистанционно, то единственное такое место – это личное устройство пользователя. Для этого пользователь сначала переводится на другой домен – в анонимную зону. Перед переходом можно поднять VPN-соединение и сменить IP-адрес. На этом домене и происходит отображение бюллетеня и обработка выбора пользователя. Исходный код, который исполняется на устройстве пользователя, изначально открыт – его можно увидеть в браузере.

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

    Одна из важнейших характеристик протокола – это невозможность узнать итоги голосования до его завершения. На традиционном участке это обеспечивается опечатыванием избирательной урны и контролем со стороны наблюдателей. В цифровом взаимодействии лучшим решением является шифрование выбора избирателя. Используемый алгоритм шифрования исключает возможность раскрытия результатов до завершения голосования. Для этого используется схема с двумя ключами: одним (открытым) ключом, который известен всем участникам, производится шифрование голоса. Расшифровать его этим же ключом нельзя, нужен второй (закрытый) ключ. Закрытый же ключ разделен между участниками избирательного процесса (членами избирательных комиссий, общественной палаты, операторами серверов подсчета, и так далее) таким образом, что каждая отдельная часть ключа бесполезна. Приступить к расшифровке можно только после того, как закрытый ключ будет собран. В рассматриваемой системе процедура разделения ключей включает в себя несколько этапов: разделение части ключа внутри системы, разделение ключа вне системы и формирование общего публичного ключа. Мы подробно покажем процесс шифрования и работы с криптографическими ключами в следующих публикациях.

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

    Ниже приведена схема процесса голосования.


    Кликабельно

    Блокчейн-платформа


    Теперь, когда мы разобрали основные особенности реализации системы дистанционного электронного голосования, ответим на вопрос, с которого начинали – а какую роль в этом играет технология блокчейн и какие задачи она позволяет решить?

    В реализованной системе дистанционного голосования технология блокчейн решает определенный круг задач.

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

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

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

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

    Серверы подсчета


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

    • Обеспечение распределённой генерации части ключа шифрования бюллетеней. Процедура генерации ключа будет рассмотрена в следующих статьях;
    • Проверка корректности зашифрованного бюллетеня (без его расшифрования);
    • Обработка бюллетеней в зашифрованном виде для формирования итогового шифротекста;
    • Распределенное расшифрование итоговых результатов.

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

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

    • Электронная подпись;
    • Слепая подпись публичного ключа избирателя;
    • Схема шифрования Эль-Гамаля на эллиптических кривых;
    • Доказательства с нулевым разглашением;
    • Протокол DKG (Distributed Key Generation) Pedersen 91;
    • Протокол разделения закрытого ключа по схеме Шамира.

    Более подробно криптографический сервис будет рассмотрен в следующих статьях.

    Итоги


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

    • Верифицируемость избирателей. Система принимает голоса только от верифицированных избирателей. Это свойство обеспечивается с помощью идентификации и аутентификации голосующих, а также фиксации списка избирателей и факта предоставления доступа к бюллетеню в блокчейн.
    • Анонимность. Система обеспечивает тайну голосования, закрепленную в законодательстве РФ, личность голосующего невозможно определить по зашифрованному бюллетеню. Реализовано с помощью алгоритма «слепой подписи» и анонимной зоны для заполнения и отправки бюллетеня.
    • Конфиденциальность голосов. Организаторы и другие участники голосования не могут узнать результат голосования до его окончания, подсчета голосов и расшифрования итоговых результатов. Конфиденциальность достигается за счет шифрования бюллетеней и невозможности расшифрования до окончания голосования.
    • Неизменность данных. Данные о волеизъявлении избирателей не могут быть изменены или удалены. Неизменное хранение данных обеспечивается блокчейн-платформой.
    • Проверяемость. Наблюдатель может проверить, что подсчет голосов осуществлялся корректным образом.
    • Надежность. В основе архитектуры системы лежат принципы децентрализации, обеспечивающие отсутствие единой «точки отказа».
    Ростелеком
    Компания

    Похожие публикации

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

      +17
      Сразу скажем – технология блокчейн не является здесь «серебряной пулей»

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


      Схема шифрования Эль-Гамаля на эллиптических кривых

      Почему бы сразу не назвать ГОСТ Р34.10-94? Или вы используете что-то отличное от российских стандартов?


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


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


      Спасибо.

        +7

        Впрочем, скорее всего, ответов не будет.


        RTteam
        Пользователь
        Публикации 21, Комментарии 1

        Ну… ок, ждем в новостях "широко обсуждалось в профильных сообществах". Эх…
        А еще в новостях обязательно промелькнет "на внедрение системы было выделено...", но это, как говорится, "совсем другая история". Но тоже интересная :)

          +11

          RTteam
          Я уже понял, что вам не нравлюсь. А ответы на вопросы будут? :)

          0
          >есть ли возможность самому избирателю найти и проверить свой голос в системе?
          А как сейчас вы это делаете?
            0
            Так цель по идее должна быть не в том чтобы автоматизировать бардак. Иначе получится собственно просто автоматизированный бардак.
          +17
          Смотрим на картинку с блокчейн: все ноды принадлежат одному актору. Никаких независимых наблюдающих нод на картинке нет. Очевидно, что в его руках находится и возможность атаки 51% (он же все 100% нодов контролирует!).
          Объясните мне, как этой штуке можно доверять?

          Я уж не говорю о возможности недопуска части пользователей через портал ЕСИА. Если на физическом участке это вызывает съемку нарушений и неприятные вопросы, то в случае когда портал ЕСИА не работает у нескольких человек — это официально не нарушение.
            +2
            image
              +4
              Собственно, интересен пункт «проверяемость». Как можно убедиться, что подсчёт голосов в программе производится по правильному алгоритму? Что мешает системе хранить один голос, а в результат выдавать другой? Или ещё проще:
              # SELECT COUNT(*) AS `votes`, `candidate` FROM `votes` GROUP BY `candidate`;
              # Запрос, вроде правильный, но выдаёт не то, что нам нужно.
              # Исправлено на:
              SELECT 80 AS `percent`, 'Our Greatest Leader' as `candidate`
                UNION SELECT 20, 'pitiful opposition candidate';
                +5
                В этой системе ничего нельзя проверить. С голосом может произойти что угодно.
                +11
                Факты:
                1. Чёрный ящик. Нет независимого мониторинга и контроля за тем, что происходит внутри с голосами.
                2. Есть сторонний доступ для мощнейших фальсификаций в пользу текущей власти (те, кто разработали систему).

                Электронное голосование — инструмент для манипуляций с голосами и фальсификации волеизъявления граждан. Его внедрение станет ещё одним гвоздём в крышку независимых и честных выборов (которых у нас уже давно нет).
                  +14
                  Как уже писали выше, пока я сам не смогу проверить что мой голос учтен правильно, пока этот «блокчейн» не будет лежать и у меня и и других на компе (как криптовалютный) — «не верю»!
                    +3

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


                    однако все равно есть две проблемы:


                    • никак нельзя убедиться что в списке проголосовавших нет "мертвых душ"
                    • любая возможность проверить голос также открывает возможность проверить голос любым "начальникам" бюджетников.
                      +2

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


                      Описанные вами проблемы не решаются тахнологиями. В этом смысле технологии уж точно не "серебряная пуля". Но хотя бы вопросы нечестного подсчета голосов при сколь угодно честном голосовании, при котором от нас нужна только явка, а голоса нарисуем какие нужно — вот с этим можно что-то сделать именно технологически.


                      (раз уж РКТ до нас не снисходит, будем обсуждать сами, междусобойчиком)

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

                        По моему проблема как раз принципиально нерешаемая. Если избиратель может проверить свой голос — то его может попросить его руководитель или преподаватель (в случае студентов), командир (в армии), проверить результат при нем.
                          0

                          Всё вместе — анонимность, верифицируемость, отсутствие бюллетеней — да, невозможно.


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

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

                            0

                            Если номер на бюллетене вводить самому то это не дает возможность "системе" узнать как кто проголосовал — но все равно дает возможность это сделать "начальнику" пусть и не исключая возможность огласки

                              +2

                              Если «номер» граждане будут вводить сами без ограничений, то один гражданин сможет отправить сколько угодно голосов, когда ему положен лишь один. Соответственно, должна быть некая сущность, которая следит за тем, что у каждого гражданина есть возможность проголосовать не более одного раза.


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


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

                                0

                                Не усложняйте. Использование нескольких защит не увеличивают общую защищенность. Как минимум, не увеличивают.

                            0

                            Решаемая. Необязательно сохранять привязку к избирателю. Это может проверяться и учитываться (увеличивать нужный "счетчик") на моменте голосования, а в реестре сохранять только сам голос.


                            Но это надо строить модели, придумывать консенсусы, продумывать защиту от атаки Сибиллы.

                              0
                              По моему проблема как раз принципиально нерешаемая. Если избиратель может проверить свой голос — то его может попросить его руководитель или преподаватель (в случае студентов), командир (в армии), проверить результат при нем.

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


                              Если попросят, показываешь фейковый.

                                0

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


                                Не надо пытаться решить политические проблемы техническими средствами.

                                  0

                                  Если вы задаёте вопросы, на которые трудно ответить, — это не доказательство невозможности.


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


                                  Я лишь сомневаюсь в том, что это невозможно. Вот если вы предъявите доказательство невозможности или нереализуемости, то тогда да, я соглашусь, деваться некуда.


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


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

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


                                  Например, если я проголосовал за, система может записать три голоса: за, за, против. Последние два всегда за и против. Они компенсируют друг друга и на результат не повлияют. А выдаёт она два ключа — один позволяет найти и декодировать мой голос, а второй — найти и декодировать противоположный.


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


                                  Я в момент получения ключа, запоминаю, что ключ A3BC75… — это от моего голоса, а ключ 74A09F… — фейковый. (Можно предложить и более простые способы запоминания.) Если я сам проверяю голос, то я знаю, какой ключ чему соответствует, и вижу, что мой голос ещё там. Если меня спросят, я уже могу показать второй ключ.


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


                                  Почему таким же образом не сможет проверить ваш реальный голос Большой Брат?

                                  Потому что для извлечения голоса нужен ключ, а у меня их два.


                                  Что мешает Брату попросить вас показать все голоса, раз это публичная фича системы?

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


                                  Что мешает вам его послать при этом?

                                  Этот вопрос уже к системе голосования отношения не имеет. Большой брат, если он достаточно большой, может просто не пустить меня на голосование и проголосовать за меня.


                                  Не надо пытаться решить политические проблемы техническими средствами.

                                  Почему же? А закрытая кабинка для голосования — это не решение политической проблемы техническими средствами?


                                  Да и мы сейчас не политическую проблему обсуждаем, а техническую.


                                  Да и вообще, по теореме Эрроу идеальной выборной системы не существует.

                                    0

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


                                    Обеспечить анонимность и проверяемость голосов — это техническая задача. Обеспечить неувольнение с работы за «неправильный» голос — политическая.


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


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


                                    Впрочем, ваша идея с балансирующими голосами интересная. Она позволяет продемонстрировать любой вариант голоса «проверятелям». Из сложностей: людям придётся доверять системе в том, что их скрытый, недоказуемый, истинный голос — действительно тот, который они отдавали. Если я даю голоса истинно-за#1, балласт-за#2, балласт-против#3, а получаю в ответ только доказательство#1 и доказательство#3 — то где гарантия, что мой второй голос записан в систему таким, каким я его давал, и вносит дисбаланс в нужную сторону? Только честное слово, похоже.


                                    Если нет, то опять-таки должен быть какой-то уничтожаемый купон, который позволит мне проверить все голоса, а потом его съесть. И снова мой «начальник» может потребовать не съедать, или я считаюсь проголосовавшим «неправильно».


                                    Только вот у нафотошопленной галочки есть plausible deniability. А у технически гарантированной доказуемости или недоказуемости — нет, by design. В итоге техническое решение выходит боком для политической проблемы.

                                      0
                                      Если я даю голоса истинно-за#1, балласт-за#2, балласт-против#3, а получаю в ответ только доказательство#1 и доказательство#3 — то где гарантия, что мой второй голос записан в систему таким, каким я его давал, и вносит дисбаланс в нужную сторону? Только честное слово, похоже.

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


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


                                      Опять же, я не криптограф, я не знаю, как конкретно это делать. Возможно, я тут какого-то монстра изобретаю, а уже есть схема, которая делает то же самое, но гораздо проще.


                                      Просто мне кажется, что всё это возможно провернуть. Вполне допускаю, что это только кажется, и можно доказать, что такую схему не построить. :)

                        +4
                        Это тот самый «Ростелеком», который спамит звонками и не может показать подпись под согласием на получение рекламного спама? И эти люди будут заниматься выборами?!
                          +4
                          После того как ключ собран и загружен, начинается подсчет итогов для их дальнейшей фиксации в блокчейне и последующего оглашения.

                          А сразу фиксировать в блокчейне каждый голос не судьба? Тут краеугольный камень всей системы. Нет мгновенной фиксации каждого голоса — нет доверия.
                            +6

                            Очередеой Спутник.
                            Уровень и качество разработок — просто жуть. Для начала личный кабинет сделайте, чтоб корректно отображался и чтоб ваш винк не вис каждый час.


                            1. Смарт контракты — дырявая фигня, написанная на коленке. Про ее уязвимости куча статей. Вся эта децентрализация — маркетинговая туфта. Всегда есть управляющий узел.
                            2. Какая корелляция между блокчейном, всеми этими учётами, системами и озвучиванием итоговых результатов? Как, чем и кто сможет проверить, что результаты действительно из системы, а не из select 146 from dual ;
                            3. Как наблюдатель сможет отслелить (какими независимыми, открытыми инстркументами), что голос избирателя ушел в систему, а не в помойку? Как я, как избиратель, смогу проверить, свой голос, что он за того, за кого я голосовал и как проверить, что он не просто показываетчя мне, а что встроен в результаты?

                            Вобщем и целом — очередна профанация и растрата бюддетных денег с сомнительными целями.

                              +3

                              Цели-то как раз очевидны. "Блокчейн же" — ответ на любое сомнение в подтасовке фактов. А как он устроен, мало кто понимает, да и им не покажем "ибо гостайна".

                              +4

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


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


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


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


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


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


                              А позднее, в цивилизованных условиях, у всех кандидатов будут сходиться результаты подсчета, и все будет ок.

                                +1

                                Если есть теневые ключи, то как определить что результат голосования собрался из реальных ключей, а не из теневых? Ведь определить какой ключ правильный нельзя никак by design

                                  0

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


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


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


                                  P.S. Таааак… я дико извиняюсь, но похоже и это не панацея. Ничего не мешает генератору бюллетеней (госуслугам) нагенерировать фальшивых бюллетеней с нужным голосом и отправить их всем наблюдателям. Нет в мире совершенства =). Почему бы населению самому не обеспечить сменяемость власти, чтобы властям наконец можно было доверять, и все эти трудности просто не требовались бы?

                                    0
                                    Почему бы населению самому не обеспечить сменяемость власти, чтобы властям наконец можно было доверять, и все эти трудности просто не требовались бы?

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


                                    Вот вам история

                                    Slightly Skew Systems Of Government


                                    В Кламзории — акаузальная демократия.


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


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


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


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


                                    Система отлично работала многие десятилетия, до правления князя Кровопускова. Он баллотировался в президенты с необычной программой: в случае избрания он обещал назначить себя Пожизненным Диктатором, упразднить демократию в пользу выборов князя Кровопускова, и убить всех несогласных. Зная князя, все трейдеры единодушно решили, что он вполне способен выполнить свою предвыборную программу на 100%. То есть, голосование по итогам срока гарантированно даст 100% рейтинг. Естественно, облигации князя взлетели в цене, побили все рекорды, и принесли ему сокрушительную победу. Увы, князь Кровопусков оказался честным политиком — по завершению срока было проведено голосование, держатели облигаций получили причитающиеся им выплаты в полном объёме — и на этом история акаузальной демократии в Кламзории закончилась.

                                +2
                                Делали как обычно — 6-9 месяцев и в продакшен лишь бы в сроки уложиться и заказчику, и подрядчику? Или есть какая-то иная причина публичного теста всего за 2 недели до единого дня голосования?
                                  +1
                                  Не понятно, чем текущее предоставь начальнику фото бюллетеня отличается от предоставь свой ключ для проверки? Варианты всё те же
                                  1. Послать подальше
                                  2. Обмануть и показать чужое
                                  3. Смириться

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое