0,0
рейтинг
11 сентября 2013 в 23:38

Разработка → Доступны исходные коды двух версий КОИБов

C#*
Евгений Федин раскопал где-то на ГосЗакупках техническое задание и автодокументацию на КОИБы (архив «КОИБ 500 шт»...).

КОИБы или комплексы обработки избирательных бюллетеней используются на некоторых избирательных участках России для автоматизации процесса подсчёта голосов на выборах и референдумах.

Автодокументация, PDF из архива, оказалась склейкой исходников, которые я без особого труда «расклеил» и положил на гитхаб. Там два коммита — старая, но комментированная, версия и новая, без комментариев, но зато с инсталлятором.

ПО написано на C#, в версии КОИБ-2003, по всей видимости, запускалось на Widnows, сейчас работает на unix-like системе под mono.

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

Контрольные соотношения в КОИБе программируются и могут не проверяться, если не введены соответствующие формулы.

Шаблон итогового протокола в КОИБах таков, что имена членов комиссий можно заполнять только руками…

Призываю всех искать фичи/баги, анализировать и делиться в комментариях!

UPD: Не уверен, что топик скоро наберёт 100 голосов, но хотелось бы пригласить Евгения на хабр, чтобы он здесь тоже мог поделиться своими наблюдениями. Если в этом меня поддерживает кто-то, у кого есть инвайт — скиньте ему, пожалуйста, личкой в твиттер (или мне в профиль, а я уж ему). Встречайте: efedin
Константин Подшумок @kpp
карма
29,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (139)

  • –76
    После выборов руками не машут.
    • +48
      Правильно — возят бумагу грузовиками, как и требуется по закону.
    • +49
      Что значит после. Это были не последние выборы в этой стране, я надеюсь.
      • –35
        Я к тому что «Почему эта тема возникла именно сегодня?», на волне повышенного интереса к выборам.
        • +14
          Это плохо?
        • +2
          Что бы за 2 дня до выборов с попой в мыле не пришлось ревьюшить исходники, как это было с камерами.
  • 0
    Для удобства анализа нужно добавить файлы проектов (csproj)
    • +1
      Гитхаб же. Флаг в руки
      • +5
        Если до утра никто не сделает — завтра займусь.
        • +39
          Это угроза?
          • +7
            Мне показалось что автор топика далек от .net, иначе он, как мне кажется, добавил бы файлы проектов. Своим комментарием я указал именно их отсутствие и ничего более. Возможно сейчас у кого-то найдется время сгенерить эти файлы каким-либо скриптом. У меня нет возможности заняться этим прямо сейчас, но возможно будет завтра. Надеюсь теперь моя позиция ясна?
            • +1
              красненький же
        • +3
  • +7
    Форк!
    • –5
      Хэй Джонни! Вот зэ форк?
  • +3
    А что про систему автоматического подсуживания? Ни слова?
    • +4
      если про ГАС Выборы, то пока ничего
      вот список всех (вроде) закупок ЦИКа
      www.cikrf.ru/zakazy/zakfci/konkursy.html
      может быть, где-то в них также зарыты исходники
  • +14
    По-хорошему эти исходники изначально должны были быть на гитхабе e.t.c
    • +13
      С другой стороны, никто не помешал бы на гитхабе быть одним исходникам, а на поле боя другим…
      • +2
        наблюдатели должны программу загружать
        • +8
          но тогда они смогут загрузить что-то своё)
        • +6
          Никто не помешает программе делать вид, что она загружается.
        • +1
          и компилировать
          • +2
            Достаточно чтобы хеши сходились
            • +17
              Ещё нужно чтобы программы подсчета хэшей одинаковые были.
              • +6
                И ОС, которая запускает программы подсчета хешей.
                • +4
                  И процессор который будет выполнять не свои инструкции, а то что в программе.
                  • 0
                    И жёсткий диск, чтобы давал настоящие файлы.
            • +1
              Если исходники два раза подряд скомпилировать — хэши сборок будут разные в дотнете.
              • 0
                Какой-нибудь timestamp?
  • +17
    Что могу сказать…

    Вбросы, мухлёж… всё предусмотрено. :)

    + public bool CheckMask(VoteKey mask)

    Создаем нужное количество бланков за кандидата, оставляя все поля пустыми (не инициализированными, ммм… а, да, вы же не курсе, что все поля VotingKey предусмотрительно сделаны Nullable ?), кроме «нужных»:

    1) VotingKey.GetHashCode()

    Если VotingMode.Value == 0, ScannerSerialNumber.Value % 16 == 0, BlankId и ElectionNum совпадают с Id «для нужного», кандидата, тогда

    VotingKey a;
    VotingKey nuzniyKey;

    a.GetHashCode() == nuzniyKey.GetHashCode();

    2) public bool CheckMask(VoteKey mask) успешно проходится, если заполнено только CandidiateId (=CandidateId «за нужного» кандидата), BlankType (BlankType = All) из-за:

    + if (mask.CandidateId != null && mask.CandidateId != CandidateId ||
    +
    + mask.ElectionNum != null && mask.ElectionNum != ElectionNum ||
    +
    + mask.BlankId != null && mask.BlankId != BlankId ||
    +
    + mask.ScannerSerialNumber.HasValue && mask.ScannerSerialNumber.Value != ScannerSerialNumber ||
    +
    + mask.VotingMode.HasValue && mask.VotingMode.Value != VotingMode)
    +
    + return false;
    +
    +
    +
    +
    +
    + return true;
    +
    + }

    3) Вызываем AddVote(VoteKey)
    • +10
      Не понял вашей паники. И как по-вашему эти воспользоваться? Посмотрите SourceData, который передается на флешке из ТИКа. Так нет никаких «nuzniyKey».
  • +42
    Результаты моего небольшого исследования.

    Во время инициализации КОИБ программа просит вставить флешку с исходными данными для голосования. Там содержится название выборов, список кандидатов для голосования, координаты квадратиков — и т.д. Всё как и должно быть.

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

    В файле исходных данных все формулы пишутся прямо на C#. Некоторые метапеременные разворачиваются на этапе загрузки в соответствующие C#-выражения.

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

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

    Судя по коду, накрутить общее количество принятых бюллетеней во время голосования не представляется возможным. А значит, счётчику на панельке КОИБ можно доверять. Если в конце дня он показывает N, то будьте уверены, что внутри N бюллетеней. Если в протоколе окажется M > N, значит имело место жульничество. Одно но — КОИБ при этом не должен быть подключен к сети. В противном случае, эмулируя удалённый сканер (второй КОИБ, который стоит рядом с главным называется RemoteScanner), можно через процедуру AcceptNewState внедрить желаемые результаты по команде из центра. Прям натурально КОИБ примет хэш «кандидат => число_голосов». Чтобы защититься, наблюдатели должны внимательно проверять наличие лишних проводов, ведущих к КОИБам. А также не позволять их подключать после того, как голосование завершено, что бы там ни вешал на уши председатель.

    В общем, резюме, как защищаться от фальсификаций на участках с КОИБами:
    1. следить за ростом счётчика принятых бюллетеней. Какое значение было за 1 секунду до конца голосования, такое должно попасть в протокол.
    2. следить, чтобы ничего не подключали к КОИБу ни во время, ни после голосования.

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

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

      Наличие проводов тоже ни о чём не говорит, данные можно заслать хоть по gsm. Внутрь корпуса никто не даст залезть всё равно.

      Делаю вывод, что нужно вообще убирать коибы.
      • +59
        Не-не, то, что там полноценная ОС, это как раз ожидаемо. Машина работает с кучей всякой периферии — принтер, сканер, всякие детекторы подлинности, упаковывает-распаковывает XML-структуры, работает с USB, с файловой системой и т.д. Делать всё это на низкоуровневом контроллере — зачем? Поставили одноплатный ARM-компьютер с линуксом на борту — и огонь, всё работает.

        По поводу GSM и прочей беспроводной паранойи — это всё маловероятно. Представляете, сколько техников будет знать, что внутри есть сим-карта или wi-fi антенна? Этого же не замаскируешь. Тайну такому количеству людей доверять нельзя. Достаточно одного техника, чтобы фотки в интернете оказались.

        А вот где ложь, ###деж и провокация — так это вот тут: www.cikrf.ru/banners/smi_tech/12/011211.html
        Выполнение КОИБ каких-либо программ с флэш-карты не предусмотрено технически, и отсутствие такой возможности проверено путем анализа исходного кода. Внутрь программного обеспечения не может быть встроено ничего лишнего, КОИБ выполняет только подсчет голосов.
        Теперь мы точно знаем, что это не так.
        • 0
          По поводу GSM и прочей беспроводной паранойи

          КОИБов сделано всего 500 штук, судя по заказу, может быть, будет ещё 500. Это не так уж и много.
          И всё же да, я думаю, вряд ли там внутри радиомодули есть. Но нельзя сейчас исключить того, что к ним можно подключить и модем и блютус и вафлю.
      • 0
        Простым микроконтроллером можно распознать, в какой клетке галочка? хм…
        • 0
          Если форма бюллетеня фиксированная, то простой оптопарой определяется — целиком ли заданный участок белый, или нет.
          • 0
            Она не фиксированная
            • 0
              Это же очевидно — зафиксировать.
              • +2
                От выборов к выборам бюллетени отличаются.
                Также, запрещено брать бюллетень на одном участке, а голосовать на другом. У каждого УИКа своя печать, которую ставят на бюллетени. КОИБы сейчас умеют проверять печати.
      • –1
        Коибы нужно переделывать, защищать, и снабжать средствами прямой публикации результатов в интернет, чтобы независимые наблюдатели могли логгировать рост и бить тревогу при резких скачках счётчиков. И внедрять повсеместно, для исключения пост-фактумной ночной возни с подсчётом.

        Для сокрытия результатов голосования (кстати, это почти то же самое что экзит-полы, но их вроде не запрещают почему-то) можно счётчики шифровать, и публиковать ключи пост-фактум.
        • +1
          Само по себе подключение этих устройств к сети — дыра в безопасности.
          Если это нужно только для контроля числа приходящих на голосование — это совсем не оправдано.
          Если выкладывать в сеть зашифрованные голоса типа (12:33 участок№3 голос за МиккиМауса) то как только будут опубликованы ключи, будет де-факто раскрыта и тайна голосования. Так как эти временные отметки вполне можно соотнести с опусканием бюллетеня в урну.
          Экзит-полы анонимны, добровольны и позволяют отвечающему соврать.
    • 0
      Также, учитывая, что протокол распечатывается после того, как в КОИБ введены данные о неиспользованных бюллетенях, председатель УИК мог втихаря залезть в сейф и хорошо спрятать некоторое количество бюллетеней.

      Все контрольные цифры перед вводом 10 раз проверяются в присутствии наблюдателей. Не могу понять, чего этим можно добиться, спрятав N бюллетеней? Еще до начала голосования известно, столько их выделено на участок, количество проголосовавших тоже известно. Вычесть одно из другого не сложно. Если будут расхождения, то контрольные соотношения не сойдутся и протокол не напечатается.
      • +1
        Я как раз и говорю, что строго надо сверять количество проголосовавших — на экране перед завершением голосования и в протоколе. И да, сомневаюсь, что будут именно так фальсифицировать — очень стрёмно.

        Гораздо проще первым способом — перекинуть голоса с одного кандидата на другого.
        • +3
          алгоритм получается простой (я спецом ездил в москву наблюдать на участок с КОИБ, ради опыта этих киобов)

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

          единственное, что у меня вызывает (проф. наблюдателя) вызывает недоверие, как посчитала машина, но тут мы должны верить в жребий проводимый в присутствие нашего представителя и пересчет на участке в присутствии нашего предствителя.
          если любое из этих 2 пукнтов не выполняется, у меня нет оснований верить коибу
    • +2
      Да ладно, накрутить гораздо проще в других местах. Что мы и наблюдали)
      • 0
        Если всё будет электронное, то накрутки в других местах будут ненужны. И вообще незаметны.
  • +22
    Отвечу одним махом на горстку комментариев вида «как это должно быть».

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

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

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

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

    Все эти вещи рассмотрены в курсе на Coursera «Securing Digital Democracy».
    А я могу написать обобщающий пост, если хабралюдям будет интересно.
    • +3
      Напишите пост, а ещё лучше петицию. Нужно привлечь внимание к этому вопросу.
      • +13
        нет, ну как петиция может быть лучше хорошего поста? :)
        • 0
          Как — как… Как дополнение :)
        • +1
          Хм, ну а почему нет. Хорошая петиция для РОИ — переход на защищенное, корректное электронное голосование.
    • +1
      еще хорошей вещью для выборов должна быть отмена книг избирателей привязанных к участку.
      Данные всех избирателей уже занесены в ГАС ВЫБОРЫ, перед членом комиссии стоит компьютер, в него предварительно загружены данные всех местных жителей(для скорости), но может подойти любой гражданин имеющий право голосовать (житель города на выборах мэра),
      его данные вгоняются в комп, идет запрос на подтверждение в ГАС ВЫБОРЫ, возвращается ответ что имеет право, не голосовал.
      Для наблюдателей стоит большой телек со списком последних проголосовавших.

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

      исчезнет проблема открепительных, люди станут мобильнее.
      • +1
        Это замечательно, но кто и как проверит корректность системы ГАС ВЫБОРЫ? Если ГАС ВЫБОРЫ будет выдавать ответ, что «имеет право, не голосовал», с помощью этой системы будет очень легко организовать карусели. Гораздо надёжнее ставить несмываемый штампик на руку, как в некоторых странах.
    • –1
      Если представить, как это должно быть, то:
      — Было бы неплохо, чтобы в КОИБе на выходе было несколько лотков и он сортировал в них листы за разных кандидатов. Например, листы за популярных кандидатов А, Б и В складываются соответственно в лотки №1, 2 и 3. А все остальные малопопулярные кандидаты складываются в лоток №4. Популярность кандидатов брать из опубликованных соцопросов. Рассортированные по лоткам бюллетени будет намного удобнее пересчитать вручную, ручной пересчёт можно будет проводить на 100% участков для исключения мухлежа и технических ошибок.
      — в КОИБе плату с процессором и остальными потрохами поместить в прозрачный корпус, в котором плату было бы хорошо видно с двух строн. Всё это хозяйство прикрыть крышкой, чтобы не смущать обывателей. То есть голосующие любуются красивой крышкой, но наблюдатели могут её легко поднять и ревизовать начинку.
      • 0
        По правилам урна для бюллетеней в КОИБе должна иметь определенный процент прозрачности, чтобы на просвет было видно ее содержимое. Введение лотков нарушит тайну голосования.
        • 0
          Прозрачность нужна обычным урнам, чтобы контролировать вбросы. А в КОИБе вброс невозможен, поэтому прозрачность необязательна.
          Можно сделать так: прозрачная урна, внутри несколько прозрачных лотков, а сверху урны непрозрачный кожух или чехол. Соблюдается тайна голосования, но при необходимости наблюдатели снимают кожух и ревизуют урну.
          • 0
            Тогда, снимая чехол (что вообще чрезмерное усложнение, на моё взгляд), можно будет примерно понять, какой кандидат набирает больше или меньше. Это, по сути, агитация, гарантирующая неравные права кандидатам. Ну и если смотреть, что под чехлом, после каждого голоса, то будет нарушена тайна голосования первых проголосовавших за каждого из кандидатов на данном участке.

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

            Так что, вы предложили плохое решение для проблемы, которой, в общем-то и не существует.
            • –1
              > снимая чехол (что вообще чрезмерное усложнение, на моё взгляд)
              Для вас копеечный пластиковый чехол — чрезмерное усложнение? Может тогда лучше вообще отказаться от сложных КОИБов и видеокамер заодно? А бюллетени пересчитывать при свете лучины?

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

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

              > При этом не решается проблема нечестной машины
              Как раз полностью решается, т.к. можно будет делать 100% ручной пересчёт. То есть КОИБ будет делать предварительный подсчёт голосов и сортировку бюллетеней. Люди будут делать окончательный подсчёт, устраняя любую нечестность машины.

              • +1
                Для вас копеечный пластиковый чехол — чрезмерное усложнение?
                Усложнение в приборе, который вместо простого сканирования должен ещё и сортировать.
                Запрещено только публиковать эту информацию до окончания выборов.
                Практически любой желающий, придя на участок во время проверки наблюдателями, сможет увидеть, за кого отдают голоса. Если будет работать видеонаблюдение, то как раз и будет происходить публикация предварительных результатов.
                Думаю, что нет никаких технических проблем сделать урну и лотки так, что первые бюллетени будут не видны снаружи.
                Проект в студию!
                Люди будут делать окончательный подсчёт, устраняя любую нечестность машины.
                Вообще-то весь смысл КОИБов в том, чтобы не приходилось много пересчитывать руками и точность увеличилась. Сортировке, которую будет делать ваш гипотетический аппарат нельзя верить всё равно, её нужно проверять.Таким образом, все имеющиеся проблемы с недоверием к КОИБам остаются и в вашей схеме. Может быть ручной пересчёт будет немного быстрее. Но в скорости ли ручного пересчёта главная проблема?
                • –1
                  > Усложнение в приборе, который вместо простого сканирования должен ещё и сортировать.
                  Прибор и так сложный с кучей периферии. Для него усложнение будет незначительное. А человеческого труда сэкономится немало.

                  > Практически любой желающий, придя на участок во время проверки наблюдателями, сможет увидеть, за кого отдают голоса.
                  Во-первых, наблюдателям не смысла просто так ковыряться в урне, эта возможность только на какой-то экстренный случай. Например посмотреть, не замялась ли бумага. Постороннему человеку издалека будет сложно что-то увидеть. Если даже он что-то увидит, он не сможет сопоставить лотки с кандидатами. Даже если сопоставит, ничего незаконного в этом нет. Незаконна только публикация в СМИ.

                  > Если будет работать видеонаблюдение, то как раз и будет происходить публикация предварительных результатов.
                  Много вы там увидите через веб-камеру.

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

                  > Вообще-то весь смысл КОИБов в том, чтобы не приходилось много пересчитывать руками и точность увеличилась.
                  КОИБам нельзя на 100% доверять, т.к. невозможно проверить прошивку тысяч КОИБов.

                  > Сортировке, которую будет делать ваш гипотетический аппарат нельзя верить всё равно, её нужно проверять.
                  Разный объём работы. Одно дело сортировать вручную, а другое дело проверить готовую пачку, что все квадратики отмечены одинаково. Заодно и посчитать.

                  > все имеющиеся проблемы с недоверием к КОИБам остаются и в вашей схеме.
                  Ещё раз: к КОИБу в любом случае будет недоверие. Но в моей схеме данные легко и просто верифицируются вручную.

                  > Но в скорости ли ручного пересчёта главная проблема?
                  Проблема в том, чтобы сделать процедуру простой в исполнении и простой для контроля. Чтобы машина делала всю черновую работу, а людям было просто её проконтролировать.
                  • 0
                    1. Прибор надо упрощать, а не усложнять. И не только из-за стоимости, но и для простоты контроля.
                    2. Вы создаёте ситуацию, когда в СМИ нельзя показать, что под чехлом.
                    3. Может увидим, а может и нет. Так себе защита.
                    4, Это всё ещё идея (и не очень понятная до сих пор), а не проект.
                    5. Невозможно проверить даже одну прошивку: см. иной, опробированный, способ верификации
                    6. Объём работы тот же, поскольку процедуры должны быть гласны и открыты (то есть каждый листик берётся, показывается всем желающим, произносится, что на нём...)
                    7,8. см. п 5
                    • –1
                      1. Вся бытовая техника и электроника со временем усложняется. Это естественный путь развития. Примеров упрощения как-то не припомню.
                      2. Показать в СМИ можно, после окончания голосования.
                      3. Ещё раз: «Если даже он что-то увидит, он не сможет сопоставить лотки с кандидатами.»
                      4. Чтобы было понятнее, развивайте абстрактное мышление. Проекты делают в специальных бюро за отдельную плату.
                      5. Этот способ верификации трудоёмок, запутан и не позволяет однозначно судить о честности аппарата.
                      6. Когда все бюллетени уже рассортированы, процесс идёт быстрее.
                      • 0
                        1. В данном случае, чем проще прибор, тем проще его контролировать. Задача не робота с ИИ создать, а выборы честные провести. Поэтому надо упрощать. Хотя бы чисто конструкцию. Пример упрощения ровно такой же природы — отказ от XHTML 2 в пользу HTML5.
                        2. А я как раз про то, что происходит в день. Голосование — процесс открытый и гласный. Чем больше вещей нельзя показывать, тем меньше доверия к такому волеизъявлению.
                        3. Ещё раз: может сможет, а может и нет. «Так себе защита»
                        4. ОК, раз моему абстрактному мышлению не поддаются ваши мысли, а вы не готовы изложить их доступно, придётся сдаться. Пусть в вашем абстрактном мышлении все абстрактные выборы будут снабжены абстрактным сортирующим прибором, абстрактным образом (но абсолютно надёжно) защищающим тайну голосования.
                        5. Вообще-то, это не мой способ, а, как бы это сказать… лучшее, что на сегодняшний день придумало человечество. Но вполне возможно, вы правы и куда лучше запрятать всё в лотки и чехол, сортировать, а потом «быстренько» проверять руками.
                        6. Насколько быстрее? Если контрольный пересчёт делает не один человек, а комиссия, то максимум экономится время на том, что вместо фамилии кандидата, можно произносить только «верно» или «ошибка». Обычная схема — один человек берёт каждый бюллетень, показывает всем, произносит вслух отметку, кладёт в определённую стопку. Потом каждую стопку перебирают и, показывая, что берут ровно по одному бюллетеню, считают в слух. По времени эти два этапа занимают примерно одинаково. То есть, если ваш способ позволит уменьшить время, которое тратится на первый этап, скажем в два раза, то имеем вместо 1 часа — 45 минут.

                        Я, пожалуй, всё-таки закончу на этом с вами спорить и горько сглотну любую правду-матку, которую вы напишете в ответ.
                        Хочу только посоветовать думать о выборах (да и не только) с позиций «а что может пойти не так».
                        Вот пример, что может пойти не так с вашей схемой. Я — владелец маленькой фирмы, 20 человек кроме меня. Я член комиссии или наблюдатель. Мой помощник и я договорились с одним из кандидатов, что все мои сотрудники голосуют за него. Я им объявляю — на выборы приходим в алфавитном порядке, все вместе. голосуем строго подряд, никого не пропускаем между собой, голосуем после меня, последним голосует помощник. Один человек голосует неправильно, все 20 не получают 13-ю зарплату.
                        Опуская бюллетень, я ставлю отметку за моего кандидата и делаю пометку, не портящую бюллетень, например пишу название своей фирмы внутри квадратика. Сотрудники голосуют, мой помощник делает как я.
                        Теперь достаточно лишь убедиться, что в лотке за моего кандидата, между двумя помеченными находится ровно 19 бюллетеней. Тоже самое может быть повторено для всех фирм/отделов вокруг.
                        • 0
                          1. Прибор может быть каким угодно сложным. Надо контролировать не сам прибор, а выдаваемые им результаты.
                          2. Совершенно надуманный аргумент. Голосование закончится и всё станет полностью открыто и гласно. Таков закон.
                          3. Пачки бюллетеней в лотках не подписаны. Посторонние люди не поймут, за кого какая пачка.
                          4. Вы не можете представить пластиковый офисный лоток для бумаг? Погуглите, как он выглядит.
                          5. Вот это? Лучшее? Кто так решил?
                          6. Однотипные действия выполняются быстрее. Для верификации такая сложная процедура подсчёта не нужна.
                          7. Надуманый пример. Принудить сотрудников можно гораздо проще: присылаешь снимок правильно заполненного бюллетеня, получаешь премию или отгул.
                          8. У вас крайне параноидальный подход. Советую немного расслабиться и почитать свежую статью Даниила Кислова «Ваш голос учтен. Выборы в парламент Норвегии еще долго не смогут стать примером для России».
                          • +1
                            >Голосование закончится и всё станет полностью открыто и гласно.
                            И будет как с видеозаписями выборов, которые, по решению суда, «не могут расцениваться как достоверные доказательства незаконности».
      • +1
        И разъём JTAG наружу, чтобы любой наблюдатель мог верифицировать с помощью программатора что там выполняется. Запретить наблюдателям перешивать процы законодательно.
        • 0
          У нас, знаете ли, законодательно запрещено фальсифицировать результаты выборов.
    • 0
      Ещё можно прикрутить проверку правильного заполнения бюллетеня. Подходит избиратель, скармливает КОИБу бюллетень, если всё заполнено верно КОИБ зажигает зеленую лампочку и человеческим голосом говорит: «Спасибо, ваш голос принят». Если бюллетень заполнен неправильно, КОИБ зажигает красную лампочку и предлагает вернуть бюллетень обратно. Если избиратель нажмёт соответствую кнопку возврата, испорченный бюллетень выплёвывается обратно и избиратель идёт его менять на новый у члена УИК.
      • 0
        Неправильно заполненный бюллетень — по сути, голос против всех. И на него также должна распространяться тайна голосования.
        Испорченный бюллетень — просто ошибка, которую можно и нужно исправить до опускания бюллетеня в урну для голосования.

        Кстати,

        %голосов за кандидата = (количество голосов за кандидата) / (количество бюллетеней в урне).

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

            КОИБы помечают недействительные бюллетени красной чертой, при этом в ТЗ указано, что шум при печати этой отметки должен быть такой же, как при сканировании обычного бюллетеня.
            • 0
              > Ошибки при заполнении происходят реже, чем умышленная порча бюллетеня.
              Какая разница, чаще они происходят или реже? Если есть техническая возможность корректировать ошибки — почему бы ей не воспользоваться?
              • 0
                Потому что корректировка редких ошибок вносит недопустимые изменения в основную функциональность?
                • 0
                  Поясните, какие изменения вносятся в основную функциональность и почему они недопустимы?
              • 0
                Потому что это нарушает тайну голосования, и большинство людей, которые неправильно заполняют бюллетени, не поймут, что означает эти лампочка и кнопочка.

                Как вариант, можно установить в кабинках для голосования прибор, который бы подсказывал, правильно заполнен бюллетень или нет. Но тут тоже будет целый ворох проблем — и с финансами, и с тайной голосования и с наблюдением за этими устройствами во время выборов.
  • +5
    $ conspiratorial_mode_on

    Странный слив. Не факт все-таки что в реальных КОИБах именно это програмное обеспечение.

    Похоже КОИБы решили замочить с тех пор как они на выборах в госдуму выдали результат на 4% отличаюшийся от обычных участков.

    Нарегигили кучу фейковых партий, и из-за того что они все на один лист не влезают, КОИБы уже не производятся и на выборах в госдуму их точно не будет.

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

    $ conspiratorial_mode_off

    btw на Coursera есть хороший курс — Securing Digital Democracy посвященный как раз проблемам и уязвимостям электронных устройств для голосования, с многочисленными примерами реальных ошибок.
    • +4
      Про кучу партий — это безусловно часть хитрого плана, а про КОИБ и бюллетень — в голове связь не родилась. Спасибо.



      • +1
        КОИБы могут обрабатывать только один лист. Но по этим листам их потом можно проконтролировать. А если голосование просто нажатие кнопки на виртуальном экране, подсчет никак не проконтролируешь.
        • 0
          Да, я понял, просто не точно выразился похоже. До вашего комментария я не видел связи кучи партий с КОИБ, а после — увидел
      • 0
        Товарищ shara, перестаньте уже наконец этот видос постить, не вгоняйте в крайнюю степень уныния.
        Я только-только про него забыл)
        • 0
          Когда говорю о том, что партий нет, встречаю упрёки, мол вон их сколько дофига, регистрируй. Похоже ещё не все поняли что это за финт ушами был. *больше не буду*
    • 0
      Ходят слухи, что производство КОИБов приостановлено, но уже действующие будут использоваться и дальше. Для голосования по бОльшему числу кандидатов КОИБ нужно просто перепрошить и печатать бюллетени рулонами: ширина А4, длина — сколько нужно для указания всех кандидатов.
    • +1
      На замену КОИБам приходят полностью электронные устройства, без бюллетеней, только с контрольной лентой, печатающейся где-то внутри автомата.

      Это вы про КЭГи? Насколько мне известно, не пошли они в России. Планируют выходить на мировой рынок.
    • 0
      Если не ошибаюсь, то без разницы сколько партий, но лист должен быть один, и на этом листе можно ставить только одну птичку.
      У нас в Башкирии 8го были выборы в местное зак. собрание с непроизносимым названием. Так вот — у нас были длинные бюллетени с куче партий-спойлеров, которые уместились только на лист длиной в 2 А4, который был согнут пополам.
      В КОИБе сканер не планшетный, а барабанный, так что ему хоть лист длиной в метр можно скормить, главное его не в согнутом виде вставлять. Поэтому не вижу технических препятствий — хоть 100 партий на одном бюллетене можно разместить.
  • +11
    А представьте, anonymous захватят власть в какой-нибудь стране при помощи SQL injection в коибе
    • +2
      А почему нет :) Разработчики, например, забывают отключить инженерный режим, который позволяет загружать новые формулы через QR-коды.
      • +8
        Это вы приходили на голосование и написали в графе "[ ] против всех, укажите причину _____________" слова "; drop table votes"? зайдите еще раз на участок, нужно еще раз переголосовать, у нас машина забарахлила.

        • +4
          Нет, наклейку в квадрат для галочки
          qrfree.kaywa.com/?l=1&s=8&d=%3B+drop+table+votes
          • 0
            Была бы шляпа — снял бы! Знатная идея!

            Надо с названием определиться: это уже не какой-то банальный «SQL Inject», это — «SQL Inset»!

          • 0
            Ну так сканируется же наличие тёмных участков в квадрате, а не их содержание.
  • +1
    Одни из первых КОИБов умели «звонить в центр», для чего за урной на выборах в 2004ом году был обнаружен самый настоящий аналоговый модем U.S. Robotics Courier.
    • –1
      С каких это пор, курьер стал аналоговым?
      • +1
        Всегда был, потому что принцип передачи информации у него такой — аналоговый.
        • 0
          По вашему, фазовая манипуляция это тоже чисто аналоговая операция?

          То, что устройство оперирует аналоговым сигналом на выходе, не делает его аналоговым. С вашей точки зрения, WiFi точка — тоже аналоговое устройство, поскольку радиоволна, распространяющаяся в эфире (а не в кабеле, как у модема), является аналоговым сигналом. DSSS стало быть тоже аналоговая вещь. И любимый mp3 плеер тоже, поскольку в уши пищит синусоидами.
          • +1
            В любом плеере есть аналого-цифровой преобразователь. Модемы традиционно делят на аналоговые, использующие звуковой сигнал в качестве несущего и цифровые, использующие другие частоты. Я думаю, вы и так это знаете, давайте не будем разводить флейм на ровном месте.
  • +1
    Чего там искать в исходном коде, когда все решает прямой update БД?
    • +2
      Прямой update в КОИБ до подведения итогов — палево, т.к.требует какого-то физического соединения КОИБа с жуликом. Прямой update после подведения итогов смысла не имеет, т.к. протоколы уже распечатаны, копии розданы наблюдателям, и потом можно проверить соответствие данных в базе ГАС Выборы и подписанных протоколов с УИК.

      Если не было честных (или хотя бы оппозиционных) наблюдателей на участке, то легко можно подделать цифры в протоколе, и для этого никакой update вообще не нужен.
      • +3
        Александр, вот Вам повод задуматься, было ли время на физическое соединение с БД КОИБа и его щелью для ручного голосования =)
      • +1
        Переписать протокол ещё проще.
        Просто садимся и пишем новый, даже и после сдачи.
        И хрен ты чё докажешь, потому что просто скажут, что ты не прав и всё — иди лесом.
        • 0
          Чтобы это было статистически значимо, надо чтобы много на каких участках так сделали. На последних выборах вроде такого беспредела не было.
          • 0
            Судя по твиттеру, фб и тому что слышал от других ПСГ — были случаи.
            Просто не такие массовые.
            Ну и участки без наблюдателей «голосовали» в нужную сторону.
          • 0
            Это на московских такого (массово) не было. Но не только Москва голосовала 8 сентября.
    • +2
      В исходном коде может быть интересно поискать, как минимум, следующее:
      • то, что может быть использовано для корректировки результатов,
      • то, что может быть использовано для осуществления контроля волеизъявления (вот, например, блестяще найденное kpp),
      • то, что может быть использовано для задания необычного режима работы (как, например, возможность отключения контроля печати через системное меню или возможность нескольких печатей и печати вышестоящей комиссии),
      • то, что может свидетельствовать о (не)защищённости перед атаками man-in-the-middle при передаче данных от главного сканера к подчинённому сканеру,
      • просто не вполне понятные вещи (пример).
  • 0
    В коде проскакивает url:
    www.croc.ru
    Авторы сего кода?
    • 0
      Судя по тому, что у них все начинается на Croc. — да, это авторы
    • +3
      И они есть на Хабре: habrahabr.ru/company/croc/
    • +1
      Судя по поиску они делали, но страницу с этой статьёй удалили уже, только в поиске и осталась ссылка.
    • +2
  • 0
    А кто-нибудь знает, что такое xib.dll / xib.so?
    • 0
      Кажется вот это оно.
      • 0
        К сожалению, нет.
  • +1
    Код использует модифицированную версию iTextSharp 4.x, которая под MPL/LGPL. Обе лицензии копилефтные. Внимание вопрос: где скачать исходники измененной версии?
  • +2
    Возможно, здесь будет уместным приведение ссылки на Руководство по эксплуатации сканера избирательных бюллетеней СОИБ-2011, описывающее устройство, формат данных, а также содержащее в качестве приложения Д руководство оператора КОИБ-2010, практически неотличимое от руководства по эксплуатации КОИБ-2010, используемое при обучении операторов КОИБ и при их использовании в день голосования.
    Кроме того, в контексте обсуждаемого вопроса интерес может представлять техническое задание с совсем внятным описанием формата исходных данных и даже с примером таковых.
    • 0
      ТЗ (и, кажется, более новое) есть в архиве из первой ссылки поста
  • 0
    Надо вернутся к истокам:
    Сделать бюлетень в форме картонки сворачивающейся вдвое по одной стороне, при голосовании человек проходит в кабинку отрывает кусочек на месте понравившегося кандидата, или если заставляют за кого то проголосовать то около двух (дабы небыло голосований по чужим бюлетеням с последующей отдачей своего) сворачиваем отрывной частью внутрь, кидаем в урну опосля разворачивает комиссия стопочкой это аккуратно складывает и там уже практически сразу становится видно сколько и за кого проголосовало.
  • 0
    А ещё можно отказ от тайны ввести, чтобы можно было сразу по желанию сразу поставить свой бюллетень «на баланс»
    • 0
      Аргументируйте минус, пожалуйста
    • 0
      Можно подробнее, что вы имеете в виду? Не понял, что подразумевается под «на баланс».
      А вообще, всех бюджетников тут же обяжут отказаться от тайны и голосовать за кого надо.
      • 0
        «на баланс» — сказать наблюдателям как проголосовал и отложить бюллетень в отдельную ячейку.
        С бюджетниками да, беда. А ещё беда с деанонимизацией при условии отказа от анонимности большинства на участке.

        В общем плохая идея, верните минус.
        • 0
          Идея отличная.
          Легко проверить куда ушёл твой голос и всё публично.
          Не вижу никаких причин скрывать за кого вообще голосовал, это всё равно потом обсуждается между своими, а на работе и в других местах по закону не имеют права тебя заставлять голосовать за кого-то конкретного.
          И если бюджетник голосует за своих — это тоже логично.
          • +1
            > на работе и в других местах по закону не имеют права тебя заставлять голосовать за кого-то конкретного
            Вы, наверное, не в России живетё? Если человек идёт против системы, у него волшебным образом начинаются проблемы. Система очень мстительна. Яркий пример — Ксения Собчак. Она особо ничего не делала, просто высказала оппозиционные взгляды. С ней тут же прервали все контракты, она осталась без работы. Провели обыск, спёрли миллион долларов. Прополоскали по ТВ. Маму выгнали из Совета Федерации. Но это Ксения Собчак в Москве. А что делать сотруднику градообразующего предприятия в моногороде, если его уволят за неправильное голосование? А если его репрессировать начнут? Кто о нём узнает? Кто ему поможет?
            Для этого и нужна тайна голосования.

            > И если бюджетник голосует за своих — это тоже логично.
            Может, его тошнит от «своих», но деваться некуда.
            • 0
              В России живу и всё понимаю.
              Пусть они себе голосуют так, как решили, не важно по каким причинам.
              Не бюджетников всё равно больше.
              • 0
                Результат московских выборов был определён парой десятков тысяч голосов. Каждый голос важен, каждый избиратель должен быть защищён от голосования по принуждению.
              • 0
                > Пусть они себе голосуют так, как решили, не важно по каким причинам.
                Т.е. если голосуют по принуждению — это ОК?

                > Не бюджетников всё равно больше.
                Любого можно так или иначе прижать. Разрушить бизнес, отобрать детей, выгнать с работы и т.д. и т.п.
                • 0
                  Да кому вы нужны, по отдельности вам мешать. потому и водят бюджетников, что их много и можно дать пинок централизовано.
            • 0
              история (например, история народных восстаний, в том числе удачных, 1917 года, например) учит нас, что в единстве — сила :)
              Если 100% сотрудников предприятия отказываются голосовать «как надо», заставить их невозможно. Особенно если предприятие делает танки, за которые Индия или Сирия уже заплатили. Но в реальности 100% откажутся, только если их дедов, отцов и их самих уже невыносимо достало, и жрать уже нечего и сейчас прямо помирать все равно. Чего в нашем случае не наблюдается, так что вы — правы.
              • 0
                Ага, точно. Пусть будет революция и гражданская война. Так?
                • 0
                  1) для того, чтобы не доводить до гражданской войны, полезно проявлять гражданскую солидарность до того, как всем станет совсем уж нестерпимо жить
                  2) если жизнь ухудшается из-за факторов, на которые власть повлиять не может (мировые кризисы, стихийные бедствия, появление новых востребованных источников энергии типа сланцевого газа и т.п.), то какие-то формы народного недовольства будут все равно (включая — в каких-то сценариях — и вооруженные мятежи типа ГКЧП). Это может случиться независимо от того, поддержите ли вы всеобщие забастовки ради того, чтобы учителей не заставляли агитировать или голосовать за кого-то конкретного.
  • 0
    У меня есть гениальная идея, как сделать проверку голосов вообще моментальной. Нужно вместо простановки галочки делать дырочку. Исключаются ошибки распознавания, исключается возможность подтасовки, путём разложения не в ту кучку. Если отверстие в пачке листов просвечивает — значит в этой пачке голоса только за данного кандидата
    • 0
      Там могут быть ещё и испорченные бюллетени с несколькими «отметками».
    • 0
      Это хорошая идея, но только в плане наглядности. Вообще она усложнит процесс голосования. Сейчас плохо видящие люди с трудом, но всё же могут поставить галочку куда хотят, а тут целая процедура будет…
      У меня была обратная идея — сделать прозрачным бюллетень, и всю стопку на просвет лазерной указкой смотреть, но тоже ничего особенного не даёт, кроме некоторой наглядности и увеличения стоимости изготовления бюллетеня.
      • 0
        Не только в плане наглядности, но и в плане контроля процесса сортировки — под каждого кандидата можно поставить лоток со штырём (который должен попадать в его ячейку), на который будут нанизываться бюллетени, поданные за этого кандидата.
        • 0
          К сожалению, только в наглядности. Вы верно заметили выше, что могут быть ещё испорченные. Плюс, сделать дырку в нужном месте бюллетеня очень просто, а уж если есть штырь… Также совсем непонятно как использовать схему для выборов, где можно указать нескольких кандидатов.

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