Система распределенного голосования на FIDO/FTN

    Имею честь быть знакомым с ребятами из проекта http://ru.gplvote.org/. Суть его проста как песня и нужна как воздух. Ребята создают полностью распределенную систему голосования на открытом исходном коде.
    Надеюсь, здесь всем понятно, что для системы голосования означает «распределённость» и «opensource».

    У ребят есть целая концепция организации верификации голосов, на GnuPG, которая не требует единого координационного центра. Читайте их сайт, там интересно.
    У меня есть подозрение, что если бы выборы в КС оппозиции делались на этой платформе, то… но, история не терпит сослагательности, кроме как в книжках про войну…

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

    Плюсами такой системы вижу:
    1. готовый, обкатанный, открытый софт,
    2. развитые, умные политики оптимизации обмена трафика между узлами, а одно голосование масштаба города — уже десятки тысяч писем,
    3. десятки, а то и сотни человек в каждом городе, знакомые с технологией ФИДО (это только бывшие НОДы, а с поинтами тысячи их), которые просто из ностальгии могут поднять у себя узел сети...


    Собственно, если докрутить там гибкую маршрутизацию, (когда один узел умирает, почта идет в обход) неубиваемая ДДОСом вещь получается… А протоколы динамической маршрутизации в FIDO уже есть:

    Протокол FRIP (расшифровывается как Fidonet routing information protocol) и одноимённая утилита, созданная Дмитрием Завалишиным, работающая по принципу «объявления» — каждый узел рассылает связанным с ним узлам объявления о том, что он готов принимать почту для некоего списка узлов (как правило, для самого себя и своих даунлинков). Получатели объявления продолжают рассылать его всем связанным узлам. Рассылка не происходит, если получатель объявления уже «знает» более короткий путь к целевому узлу. В результате должна быть автоматически построена карта роутинга, обеспечивающая доставку сообщений по наиболее короткому пути. В настоящее время этот протокол не используется.
    Программа Hubroute generator (также известная как «сафроутер» — по имени создателя, Юрия Сафронова; в пакете Husky она называется Fidoroute). Эта программа строит роутинг на основе общих для региона списка жестко заданных путей роутинга и списка «доверенных» узлов, принимающих почту для определённой сети (в российском Фидо — R50.ROU и R50.TRU соответственно) с учётом данных об узлах, на которые данный узел может напрямую отправлять сообщения. Общерегиональные списки путей роутинга и доверенных узлов составляются региональным координатором на основании данных, которые ему присылают сетевые координаторы.


    ФИДО функционировало на 40 000 узлах, без денег, в условиях платной междугородной связи. Соответственно, мысли типа «большой трафик», «не выдержит большой трафик» порождают один ответ — RTFM. Информация эхоконференций распределена в сети нодов (узлов). На этом уровне сеть — p2p. Но сейчас мощности хранения данных вполне позволяют держать нода и поинта на одной машине. Даже по старым стандартам в сети может быть 2^45 нодов = 32 триллиона узлов, так что архитектурно это вполне реализуемо…

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

    • Улица — «босс» домов,
    • район — «босс» улиц,
    • город — «босс» районов,
    • область — «босс» всех населенных пунктов,
    • страна — «босс» областей.


    Тогда маршрут письма для каждой ноды можно сделать таким:

    получив новое письмо;
    послать его соседу ; // они сами разберутся, есть уже такая посылка или нет 
     проверить уровень конференции; 
       если (она есть у ноды  уровнем выше), то {
           послать боссу;}
    


    Есть предложение не переливать из пустого в порожнее, а поднять FTN сетку из 3-5 узлов на том же Хаски husky.sourceforge.net и погонять там сообщения.

    Если мы упремся во что-то, то, думаю можно написать ребятам которые делали Хаски, там половина русских, и попросить подправить нам руки и/или конфиги. А может они проникнутся идеей и допишут нужный функционал.

    Собственно, кто еще хочет тряхнуть стариной и погонять сделать нормальную электронную демократию на FTN?

    ЗЫ понимаю сам, что технология не идеальна, например (пока) не знаю, как сделать в FTN анонимизацию для тайного голосования. Но с чего-то начинать надо.
    ЗЗЫ (небейтебольно) А вообще можно не заморачиваться FTN в силу экзотичности, а сделать транспорт на новостных группах NNTP (USENET). Архитектура та же, что и в FTN — группы распределены на NNTP серверах см. www.bog.pp.ru/work/usenet.html То есть, каждый участник сети поднимает у себя NNTP сервер и «подписывается» на интересные ему голосования. Доп. плюсом этого решения является то, что NNTP протокол поддерживается большинством современных почтовых клиентов, (в т.ч. Thunderbird) которые поддерживают GnuPG ЭЦП.
    ЗЗЗЫ: Да, в Husky есть не GPL код. Непонятно, какая там лицензия на часть файлов, просто лицензионный текст… EULA короче ((( Посмотрел NNTP серверы- там Apache James идет соответственно под Apache License (GPLv3 совместима), и ISC — (не удивляйтесь! ) -под ISC license (GPL совместима и даже CopyFree)

    Бывш. 5040/33.35
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

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

      0
      Так я и не нашел ничего про верификацию голосующего… на сайте написано «Если количество голосов будет соответствовать количеству подписей об участии и голосование признается состоявшимся, участниками голосования производится отправка в сеть одноразового открытого ключа, которым можно расшифровать его голос.»
      но где гарантия что некто не завёл 1000 виртуальных голосовальщиков и не проголосовал от их имени…
        0
        Верификация — это вообще отдельная от самого голосования задача.

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

        Т.е. идентификация человека будет производится с помощью сети взаимного доверия. Да, может быть такое, что какой-то группе захочется наплодить виртуалов для какого-то голосования. Сделать это они смогут. Но в сети взаимного доверия должна существовать обратная связь. В конечном итоге, такие виртуалы обнаружатся и те, кто их создал больше никогда никого не смогут заверить (что не исключает их участие в голосованиях).
        0
        Верификация только очная. Люди подписывают друг другу открытые ключи по предъявлению паспорта.
        ru.gplvote.org/details.html#secvote
        Подтверждать принадлежность этих данных и ключа определенному человеку будут обычные участники этой системы. Для этого им необходимо будет очно проверить соответствующие документы данного человека, проверить соответствие идентифицирующего хэша указанным документам и, при совпадении, произвести в системе процедуру удостоверения этих данных с помощью своей ЭЦП. Таким образом, сообщество будет само контролировать идентификацию пользователей.

          0
          А потом МММ-щики подпишут друг другу 100500 выдуманных пользователей — и плакала ваша красивая идея.
            +1
            Паспорта то реальные нужны… А с паспортами МММщики — такие же граждане как и все остальные. И имеют такое же право голоса.
            А как только кто-то будет замечен во фроде, его сертификат аннулируют и все его поинты тоже потеряют голос. Тем самым результаты голосования переучтутся.
              0
              Собралось 100 МММщиков, договорились сделать подтасовку голосования.
              Сначала они по-честному пройдут верификацию. С паспортами и всё такое.
              А потом придумают — каждый по 100 пупкиных и переподпишут их друг у друга.
              Итого будет 100 МММщиков + еще 10000 выдуманных людей.

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

                Голосование же, как справедливо заметил тов. Мицгол, неанонимно. А если с одного устройства идут 100 одинаковых голосов, ну явно же видно что фрод.
                На время проверки доверие к подозрительному узлу прекращается, что аннулирует голоса всех его подписантов.
                  0
                  … и 10000 выдуманных людей инициируют проверку «подозрительных» проверяющих и успешно аннулируют их ключи…
                    +1
                    … Честные граждане пройдут проверку, а ботов вычистят… Издержки прямой демократии, что ж…
                      +1
                      Так то оно так, да только не совсем. Честные граждане пройдут проверку, если проверять их будут другие честные граждане.

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

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

                      И это — фундаментальный изъян любых схем идентификации участников на основе сетей доверия, где стоимость создания identity близка к нулевой.
                        +1
                        И это — фундаментальный изъян любых схем идентификации участников на основе сетей доверия, где стоимость создания identity близка к нулевой.

                        Именно. Где-то предлагался способ борьбы с массовыми рассылками: увеличить стоимость отправки одного письма, чтобы она стала быть околонулевой для всех. Если цена одного письма будет <рубль> то обычный человек легко заплатит такую цену, спамеру же отправка миллиона писем влетит в копеечку в миллион рублей.
                        Тут — точно такой же принцип: либо увеличивать стоимость идентити, либо отказываться от полного доверия.
                        PS Технические моменты утрированы. Разумеется, например, отправка письма меряется не в рублях — а требует решения задачи некоторой сложности.
                          0
                          Спасибо, интересная идея! Вообще-то мопед не мой… Я про FTN/NNTP как транспорт для этой системы поговорить хотел.
                            +1
                            Интересный момент. Сделать не нулевой «стоимость» верификации. Это нужно обдумать. Спасибо за идею.
            0
            «В свойствах субъекта может указываться необходимый для участия в субъекте уровень достоверности персональных данных пользователя, который зависит от количества других участников, удостоверивших его персональные данные.»

            Завел я 10 нод, с них верефицирую сотни поинтов и…?
              0
              1. Вас должны еще верифицировать лично
              2. как только Вы замечены во фроде, ваш сертификат аннулируют и все ваши поинты тоже потеряют голос. Тем самым результаты голосования переучтутся.
              Как Вы понимаете, снова зайти в систему с тем же паспортом Вам не дадут уже…
              Обмануть любого можно, но умного — только один раз…
                0
                когда нас 10 в системе это одно, когда сотни тысяч или миллионы это другое. Я себе представляю как может центр сертификации удостоверять подписи, но когда центров может быть бесконечное количество я не представляю как им можно доверять…
                  0
                  А в чем проблема? Давайте право верификации только тем, кому доверяете.
                  Тем более, что ФИО строка паспортных данных тоже входят в хэш и можно определить, принадлежит ли ЭЦП этому человеку или нет…
                    0
                    Вы написали что распределённая система более обузоустойчива, но по факту нельзя сделать безграничное количество сертифицирующих центров, а если их будет конечное число, то в принципе на них легко будет надавить и успешно прикрыть. Я правильно понимаю?!
                      0
                      1. сейчас это сделать вообще элементарно… Звоним с нужного телефона в ТИК и просто меняем данные на 146%. И даже самой возможности альтернативного учета голосов нет.
                      2. А нас то за что?? мы действуем исключительно в рамках Конституции.
                      3. Мы исходим из предположения, что наше государство вменяемо (с понятными оговорками) и на тотальный террор не пойдет.
                      0
                      А в чем проблема? Давайте право верификации только тем, кому доверяете.
                      А чем это лучше государственного ЦИК?

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

                        Если какой-то узел теряет доверие, то он навеки становится простым пользователем. см. wiki.gplvote.org/index.php/Распределенная_система
                          0
                          … влечет за собой проверку ...
                          Проверку кем? :-)

                          Прочитал. Там последний раздел как раз объясняет, почему все это чисто академический проект.

                          Кроме того, не раскрыта тема продажи голосов и голосования под принуждением.
                            0
                            Идеальных проектов сразу не бывает. Либо вы пробуете и получаете обратную связь, либо брюзжите до старости.
                            А продажа голосов и голосование под принуждением — это не техническая, а социальная проблема.
                0
                Фидонет — не анонимная сеть (у каждого движущегося по сети сообщения есть адрес отправителя и перечень транзитных узлов, через которые оно прошло).

                Если Вам удастся преодолеть это ограничение, то мне было бы интересно узнать тот способ, благодаря которому это удастся.
                  0
                  По FIDO решения анонимного голосования пока нет, факт. Но анонимное голосование — нужно только в очень ответственных случаях, а для решений «бытовой е-демократии» — где построить детский центр, а где торговый — вполне пройдет авторизованное голосование.
                    0
                    В Интернете тайное голосование можно реализовать через бюллетени: habrahabr.ru/post/156121/
                    Наверно, и сюда можно прикрутить эту технологию, но пока непонятно как. Анонимизировать то письма с голосами в общем-то можно…
                    0
                    Хочу, как один из авторов идеи, пояснить что подразумевается под сетью доверия и как она должна работать.

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

                    Сеть доверия работает независимо от способа ее реализации и транспорта, который используется для ее работы.

                    Средством для технической реализации сети доверия была выбрала ЭЦП. Для каждого человека будет существовать несколько уровней доверия по критериям:
                    1. «Верификация». Уровень доверия к тому, что данный ключ ЭЦП принадлежит данному человеку и человек — реален;
                    2. «Доверие». Уровень доверия к тому, что данный человек честно удостоверяет чужие «верификации».
                    3. «Принадлежность конкретному субъекту голосования». Уровень доверия тому, что данный голосующий может голосовать в определенном субъекте голосования.

                    Эти три критерия — основа. Критерии 1 и 2 — это основа самой сети доверия. Критерий 3 — уже более практический критерий для использования в системах голосования.

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

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

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

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

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