Как стать автором
Обновить

Исследование причин аномального голосования на сайте РОИ или особенности электронной демократии в России

Время на прочтение 7 мин
Количество просмотров 126K
Всего голосов 244: ↑233 и ↓11 +222
Комментарии 261

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

Не думал что так нагло будут списывать.
НЛО прилетело и опубликовало эту надпись здесь
Мы, например. Общественное внимание. Нужно следить, анализировать, доказывать, распространять информацию.
К сожалению, все это приведет только к улучшению технологии мошенничества. Будут добавлять по 1 голосу за раз в разные промежутки времени. Для замедления голосования введут какой-нибудь 5-минутный кеш и будут в течение этих 5 минут делать с поступившими голосами все что им заблагорассудится. А голосовать за подобные инициативы, понятное дело, надо. Хотя бы чтобы они были вынуждены идти на подобное мошенничество.
НЛО прилетело и опубликовало эту надпись здесь
Если обновлять раз в 5 минут все счетчики, то ничего вы не заметите. Даже если набрать группу людей, чтоб они проглосовали в заданный промежуток времени, и смотреть на сколько прибавилось голосов, то возможно уменьшение т.к. «кто-то еще отказался от своего голоса».
Все что видно- это те циферки какие они захотят показать. Эта статься показывает, что даже мухлевать с ними они толком не умеют.
отказы отменили
А если например я согласен публично проголосовать и чтобы моё имя мог проверить любой в списке проголосовавших, уже не отминусуешь
Это надо инициативу такую создать на РОИ :)
А так они отказываются публиковать список проголосовавших.
Даже хэши от СНИЛС, например, публиковать отказываются.
Хэши от снилс — плохая идея. Их можно просто перебрать и выяснить кто голосовал.
Чтобы сделать этот процесс сложнее, стоит выкладывать хэши от ФИО и СНИЛСа, например. Или выкладывать полный лог голосования с хэшами от ФИО, СНИЛС и номера инициативы. Ещё лучше — добавить отдельный пароль для подобных проверок, которым так же вмешивать в хэш.

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

Даже если обнаружится Ваше ФИО в инициативе, за которую Вы явно не голосовали — ничего доказать не получится. Спишут на полного тёзку — уж в рамках РФ таковой наверняка найдётся даже на самое хитрое имя.
Я не спорю, что так не получится защититься от накрутки голосов, но получится от скрутки.
украсть много уже не получится
Вы правильно понимаете почему собственно и отказываются, как и предыдущая ветка комментов. Такая информация как и любой другой хеш от(паспорт, СНИЛС, телефон, номер банки где деньги лежат, кличка Тузика кототрый прнадлежал женщине из ЕКБ девичья фамилия тетки матери которой совпадает с фамилией первой учительницы Вашего сына по английскому) — могла бы иметь место только с целью проведения внешней точечной проверки.
Любую точечную проверку можно будет списать на технический сбой.
Я Вам за 30 минут нагенерирую и опубликую 25 миллиардов хешей несуществующих СНИЛС. Наверное смысл то как раз в возможности проверки достоверности а не в том, чтоб «было», м?
Я третий раз уже пишу :)
Смысл в том, чтобы не дать пропасть моему голосу. Я проголосовал и я хочу быть уверен, что мой голос учтён.
Если будет база хэшей, я смогу сказать, что мой хэш там есть, значит всё ok.
А как Вы будете уверены в том что Ваш хеш там есть, и в том что хеш соответствует голосу в этом опросе, и в том что соответсвует вашему голосу?
А как же увериться посредством хешей в том что не 99% нагенерированых хеш-голосов, среди которых 0.01 Вашего процента? Пишите хоть четвертый раз — такой метод не эффективен! Думайте дальше, сами идеи хорошие!
Допустим, за инициативу проголосовало 73495 человек. Идём на страницу хэшей, видим там 73495 хэшей.
Ищём там свой. Нашёлся — ok, не нашёлся — караул.
И если у каждого человека будет такая возможность, то украсть голос не получится.
Механизм создания хешей еще должен быть публичным и проверяемым независимо. Иначе можно в списке проголосовавших показать один и тот же хеш как «собственный» разным посетителям и все они удовлетворятся, их же «посчитали».
Я прямо представил как 73495 человек пошли проверять хеши…
Пришел человек, залогинился — видит свой хэш, проверил — все ок. Но сумма голосов все равно ручками свыше выставляется.
В паблике должен быть как код человека, так и его голос в открытом виде без смс и регистраций. Неким доверенным лицам и организациям должно быть позволено получать доступ к контактным данным человека для полной или выборочной проверки.
Идея проверки такая: РОИ говорит, что проголосовало только x человек. Общественность подозревает, что проголосовало гораздо больше и часть голосов не учтена. Рассеять все подозрения очень просто — если будет опубликовано x хешей, все смогут посчитать, что их там действительно x. Также, все желающие смогут проверить, что их голос учтен. Если мухлеж был, то проголосовавших фактически людей больше x. Кто-то из них среди этих хешей свой не найдет просто потому, что опубликованных хешей меньше, чем людей, считающих, что они проголосовали. Генерировать левые хеши никакого смысла нет, так как это только повысит вероятность кого-то не найти свой хеш.

Эта проверка не спасет от накруток в положительную сторону, но к данному вопросу это не относится.

Да, даже при публикации мухлеж будет обнаружен только если достаточное количество людей проверит свой хеш. Но есть основание пологать, что проголосовавшие за инициативу с радостью побегут разоблачать воров, особено если кое-кто из публичных личностей призовет к этому.
После чего вам сообщают, что люди, якобы не нашедшие свой хеш, на самом деле на зарплате, пятая колонна, едят младенцев и вообще не голосовали. Ваш ход?
Куча конкретных людей, увидив, что их конкретный голос своровали, с тройным остервенением агитируют своих знакомых отдать свой голос, РОИ ворует еще 100500 голосов, но инициатива, таки, набирает 100к голосов.

Если серъезно, то пытаться переиграть мошейника на его территории — неблагодарное занятие. Но выкладывание хешей могло бы хоть немного исправить репутацию РОИ, если бы они этого хотели.
надо не хеш, а некий «пруф», вроде текста «Иванов И.И. проголосовал ЗА инициативу #666 1.01.2015 в 12:33, подтверждение [код]», подписанную приватным ключом ROI.

Код — пусть даже случайно генерится каждому (но уникальный).

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

Остается только проблема ложных голосований (например, против инициативы)
даже круче — форма «проверить свой хеш» просто будет говорить «Ваш голос учтен», все хеши то никто не проверит!
Какая форма? Речь же о полном списке, доступном без регистрации и ввода данных.
Я с трудом представляю, зачем генерировать ложно-положительно голосование. Ведь эти товарищи могут свои инициативы напрямую вносить, без РОИ. Типа как для имитации поддержки, что ли?
Главная проблема в умышленно-ложно-негативных голосованиях.
И эту проблему хешами не исправить. В списке будет миллион всех голосовавших за (и все мы найдём себя в списке по хешу), и 2 миллиона против, нагенерированых. И ничего не докажете.
Все верно. Не только мочь, но и делать! Это не детсад — в реалиях так все и есть. Тут речь скорее об использовании халявных возможностей. Хуже то им от этого не будет, м? Пока котики кушают кайбаску тузики бесятся в клетке, а РОй в этом плане — явно попытка отвести клетку «подальше» от домика котика
Формирование Общественной палаты шло через РФ. Там, например, Потупчик была среди кандидатов. Имитация поддержки, продвижение нужных «мурзилок» во всякие палаты и советы. Много может быть причин.
Надо еще требовать, чтобы этот список лежал в открытом доступе целиком и полностью. А то, будут вам все время выдавать список, где ваша фамилия есть, дальше что?
именно так и сделали:
Изменения в счетчиках на РОИ. Раньше они обновлялись мгновенно, теперь —раз в минуту, невозможно отследить минусы внутри минуты.— Anna Wiens (@a_wiens) December 3, 2014

К сожалению, все это приведет только к улучшению технологии мошенничества.

Для эффективности общественного контроля пусть РОИ повышает прозрачность механизма. Например, один из шагов (необходимый, но недостаточный) — перевод исходников в OpenSource.
Это бесполезный шаг. Как вы гарантируете, что именно этот код работает на сервере?
Как вы им помешаете? На выборах в Узловой, Тульская область, всех наших ПСГ(член комиссии с правом совещательного голоса) перед подсчетом голосов забрали в милицию и продержали до конца подсчета. На этот единый день голосования моему знакомому наблюдателю в Железнодорожном люди, зарегистрированные от Едра, сломали нос, милиционер смотрел. На Собянинских выборах на одном участке(где не было налюдателей) в Новогиреево проголосовало 300 человек на выездном, в то время как по всей остальной Москве максимум 25. В приведенных случаях есть 100% доказательства, только дел по ним нет, и виноватых нет. По Касимову 2012, где милиция была на нашей стороне и реально задерживала вбросчиков, суды все еще идут, результатов не видно. А вы хотите добиться правды там, где у вас никаких доказательств нет.
А как бороться, если внос пачку беллютеней в кабинку и выход без пачки, зафиксированый камерой наблюдения, не является доказательством вброса, потому что не зафиксировано само деяние (шторка закрывает обзор)? Да просто чувак съел пачку бумаги в кабинке.
Ещё лучше. Зачем тогда миллионы в них вбухали? Сынок депутата научился ip-камеру настраивать?
Распил@Откат
Плюс иллюзия прозрачности.
Я когда наблюдал за участками — в конце камеры вырубились и подсчёт уже прошёл без них. Всё прозрачно как чёрный квадрат.
Если речь о федеральных выборах, то сам момент подсчёта не должен быть доступен в прямом эфире, т.к. в другом часовом поясе голосование могло ещё не завершиться, а оглашение результатов до окончания голосования приравнивается к незаконной агитации. После завершения голосований в последней временной зоне должны (были) появиться записи без пропусков.
С камеры всё равно было не видно, за кого там голоса. Но хотя бы можно было бы следить за тем, что кто-то не придёт с пачкой бумаги и не положит к уже собранным. А так как бы ну вообще особого смысла не видел в камерах по итогам выборов.
Вообще-то, процесс подсчёта должен выглядеть так: председатель комиссии поднимает каждый бюллетень, громко вслух оглашает, за кого отдан этот голос, демонстрирует всем членам УИК и наблюдателям (и в камеру, если есть), потом кладёт в стопку с голосами за этого кандидата. И так — с каждым бюллетенем. Это если голосовать можно только за одного кандидата, если за несколько (в СПб так на выборах муниципальных депутатов было), то всё сложнее.
На нашем избирательном участке камеры стояли. Но направлены они были неизвестно куда: от урны был виден тольо один угол, а кабины и вовсе не видно. Только столы как на ладони. Система просто люто тормозила — по всей видимости не выдерживала наплыва наблюдателей. Но тут еще сказывается то, что многие школы до сих пор используют ADSL 512 килобит (наверняка для этого «видеонаблюдения» использовали именно школьные интернет-каналы). В определенные моменты времени вместо обстановки на участках вообще показывало черный экран.

А по поводу распилов — ЕМНИП, ставили лоджитеки стоимостью 1000-1500 руб, хотя у меня у самого дефендер за 400 рублей дает картинку не хуже.
Отсутствие смысла. Зачем списывать, если инициативы прекрасно заворачивают потом.
НЛО прилетело и опубликовало эту надпись здесь
Это проще чем объяснить скрутки и вбросы. Другое дело что можно не объяснять ни то, ни это. Но это прям во славу сатане.
НЛО прилетело и опубликовало эту надпись здесь
Типичная отмазка в этом плане — де 20-я статья нарушает презумпцию невиновности.
И хотя уже разъяснялось, почему она эту презумпцию НЕ нарушает, довольно странно слышать такой аргумент относительно нашей судебной системы.
Вообще хабр — не политическая арена, как ни раз уже говорилось, но наберусь смелости и отвечу на вопрос. Данная инициатива в текущем её изложении, насколько я понимаю — подразумевает возможность почти безболезненной «уборки» любой крупной фигуры, которая кому-то мешает или не нравится. Т.е. почти легальный инструмент для переделки мира под нужды того, кто найдёт компромат или «даст на лапу» за левые бумажки. Сам я не «за» и не «против», т.к. с одной стороны надо, с другой стороны опасно, как нашумевший «закон об интернете».
Вот мне интересно, а чем закончилась инициатива с «Дорогими машинами гос. служащих»?
Формально — ничем, т.к. её отклонили. Но инициатива и её продвижение привели к началу общественной дискуссии по этому вопросу. В результате Медведев подписал постановление о запрете государственных и муниципальных закупок машин иностранного производства.
И теперь их «берут в аренду»
То есть изначальная инициатива была бы настолько же успешной
Изначальная инициатива учитывала этот момент, но кто же читает…
Да, сейчас не покупают авто за 4-6 млн, а берут в аренду под 5-8 млн в год у частных компаний.
и оплата на 5 лет вперёд? :(
Система сопротивляется
Вся штука в том, что когда инициатива #20 наберет таки необходимое количество голосов, её сольют под любым удобным предлогом. Я голосовал.
Стараюсь об этом не думать в таком ключе. Во-первых, это зависит не от инициативы и 100 000 голосов, а от активности людей, которые благодаря инициативе узнают об этой проблеме. То есть, инициатива — это только начало. Во-вторых, я просто хочу, чтобы сайт РОИ работал честно и понятным образом, чтобы можно было и дальше запускать какие-то общественные кампании через него. Иногда они приводят к успеху.
Сайт РОИ, может быть когда то и заработает как надо. Только любой адекватный человек понимает, что наши толстопузы в госдуме максимум это посмеются над каким то сайтиком с какими то циферками.

Все прекрасно понимали еще при запуске РОИ — что это цирк с огнями и только. Я тоже слежу за РОИ, просто обратите внимание что НИ ОДНА инициатива которая набрала 100к — не получила адекватного одобрения и издания соответствующих законов/нормативов/вотэвер.
НЛО прилетело и опубликовало эту надпись здесь
> какой-то партии

Нету нас партий, нету. вообще. забудьте о них. как скажут так и проголосуют. И пока совершенно непонятно что еще можно сделать кроме «лайка» на РОИ.
НЛО прилетело и опубликовало эту надпись здесь
Жалобы на того кто приносит денег более высоким чинам равен echo «текст жалобы» > dev/null
Многие не понимают, что результата по щелчку пальцев не будет. Нужно целенаправленно посылать жалобы постоянно. Со временем, видя хоть какие-то результаты подтянутся новые люди. А если так вот после одной-двух жалоб разочаровываться — то всегда будет круговорот: один ушёл, другой пришёл.
>Нету нас партий, нету. вообще. забудьте о них. как скажут так и проголосуют. И пока совершенно непонятно что еще можно сделать
Участвовать в создании собственных партий, что же ещё. Но это же нужно напрягаться и что-то делать, поэтому мы будем сидеть в интернетиках и жаловаться на несовершеннство государства. А как ему становиться совершенней, если у большинства его граждан нет никакой гражданской сознательности?
А почему в РОИ-то все упирается? Поднять общественный резонанс можно огромным количеством способов, были прецеденты и с хабром и даже с ЯПъ
Это в столицах можно поднять — у нас же большинство до сих пор радуется Крыму и санкциям, ну а падение нац валюты это так, мелочи, прорвемся. :(
Не «прорвемся», а «потерпим».
Э не… вы забыли про праведную борьбу с умирающими США и гейропой :(
>А через пару месяцев его специально приглашали на заседание областного ГАИ, где как местному начальству делали выволочку по поводу ситуации с этими частниками.

Непонятно, пальчиком погрозили (ворон ворону...) а частников-то оставили или нет?
Сольют (скорее всего) или нет — это даже не самое важное. Главный профит, мне кажется, в популяризации электронного доступа к госуслугам вообще, «с верификацией и вот этим всем»: хотелось бы, чтобы именно так в России будущего голосовали не только за инициативы, но и за мэров городов, и президента.
После каждого голосования/отзыва запускалась проверка показаний счетчиков.
С того же клиентского ip?
И с того же, и с других. И с того же аккаунта (с передачей SESSIONID) и без авторизации. Разницы нет.
Оновной массив данных собирался с отдельного ip без авторизации.
Тогда получается, что синхронизация все-таки есть и есть некий третий «фронтенд», который может быть как ботом для накрутки, так и чем-то еще, например, фронтендом для другого региона или фронтендом для каких-нибудь госучреждений.
Причем такая архитектура бота оптимальна в том плане, что работники РОИ могут ее и не заметить, мало ли кто непосредственно в базу пишет. Хотя мотивация накруток непонятна, про автомобили тоже говорили, что аномалии там, однако инициатива спокойно дошла до цели.
На автомобилях ход голосовани сильно изменился после того, как в интернете подняли шум. Но и тогда речь шла только о «накрутках» других инициатив.
Это как раз нормально, подняли шум — кодеры пофиксили мелкий баг.
Третий фронтенд — да, можно придумать что-то суперсложное, чтобы объяснить интервалы. Кеш по диапазонам ip, кеш по знаку зодиака голосующего, склонность к голосованию исключительно в определенное время и в рабочие дни…

Странное голосование на РОИ
Ну нафига этот сарказм? Суть графика в том, что кто-то если и пишет, то в базу напрямую, мимо фронтендов, поэтому образуются пачки при синхронизации. Что можно объяснить одним — в коде РОИ нигде накруток не найдешь (и комментариев от них не будет, им нечего сказать), а у товарища в штатском просто есть пароль к базе.
Потому что если бы злоумышленник и писал бы накрутчик, то не пачками, какой в этом смысл.
не надо искать умысел там, где достаточно глупости
По поводу decision_id — думаю раньше использовался, когда возможных «решений проблемы» было более одного (пример: www.roi.ru/3729).
Но активных инициатив, на которых можно проверить это предположение что-то сходу не нешёл (может уже нельзя такие создавать?)
Да, похоже на то. Я считаю, что голосование без decision_id — это такая не особо критичная ошибка в коде, которая позволила установить интересное совпадение. Мы увидели, что это не некий робот настроен на голосование раз в шесть минут, а сайт РОИ настроен на обновление счетчика с таким периодом. По идее, API не должен принимать запрос без decision_id, т.к. даже при одном варианте решения голосование все равно происходит за decision, а не за petition.
У них на сайте написано что счетчик обновляется раз в 5 минут. Соответственно, не может ли быть что счетчик просто экстраполирует кол-во голосов между обновлениями кэша? Если за прошлый час проголосовало 120 человек, на 5 минут вперед мы проэкстраполируем +10 голосов, но если реально за это время проголосовало 8, когда кэш обновится — мы увидим -2 голоса.

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

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

Кроме того, всё это происходит только с 24 ноября и только на одной инициативе. На многих других инициативах происходит повышение количества голосов такими же пакетами (и там это всегда было, а не с ноября).

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

> сделать это незаметно — не прибавлять голоса, вместо того чтобы их отнимать
И да, и нет. Сейчас любой, кто проголосовал, сразу же видит изменение счетчика на +1 голос. Если не прибавлять, то это легко вычисляется.
А может исполнители хотели, чтобы увидели?
Ещё один аргумент в пользу (а) открытых (б) децентрализованных систем голосования.

Какая может быть верификация у анонимного (тайного) централизованного подсчёта?
Такая система по определению не верифицируема.
Вот! Есть ли какие-то готовые наработки по этому вопросу? Я еще очень боюсь, что будет рынок угнанных аккаунтов Госуслуг, как он есть для соцсетей, например. Это тоже нужно как-то учитывать. Понятно, что любая государственная инициатива в вопросах IT катастрофически отстает от прогресса. Нужно самим что-то придумывать.
Сдвиг по фазе. Читал еще в живой бумажной Компьютерре…
А такие есть?
На основе Bitcoin сделать весьма просто
Интересно, кто еще в этом случае, кроме ЦБРФ, объявит его пособником террористов?
Децентрализованность добавит других проблем.
Вместо децентрализации и биткоинов проще и лучше использовать уже накопленный опыт электронных голосований. Например, в Эстонии активно применяется, даже на выборах президента. Кроме того, можно использовать технику под названием «homomorphic encryption» для организации голосований с возможностью проверки голосов, общей суммы, с такими свойствами как тайна голосования, и другими важными функциями. Криптография уже давно предложила разные решения на счет e-Voting.

Проблема только в том, что это уже будет другое РОИ, и в этом никто из них не заинтересован — мухлевать сложнее. Дальше говорить не о чем.
Абсолютно согласен. Децентрализация, биткоины, p2p — это романтично и красиво. Но не менее проблематично. Эти подходы хороши, но не везде.
Например, в Эстонии активно применяется, даже на выборах президента.
Прочитайте статью по ссылке из комментария выше.
Кто-то предлагал опубликовать хэши СНИЛС проголосовавших, чтобы можно было проверить, засчитан ли голос.
Тут сложно. Если самим проверять, то нужно знать алгоритм хеширования. Если знать алгоритм, можно их все перебрать и составить открытый список с фамилиями.
Согласен, но можно ввести доверенную третью сторону, которая, не публикуя список, сделает сервис проверки по нему, с капчей и задержками.
доп-попил. Нет, это не искаженное написание Дип Пёрпл, это именно то во что выльется любая идея «благородных» аудиторов. Потому что нет такого масштаба страховки кроме революции, который мог бы покрыть нелигитимные выборы.
Если хешировать что-то типа СНИЛС_ДатаРождения_ФИО, то перебрать уже не получится, а себя проверить просто.
Не спасет так как свои +1 ты видишь, а другие проверить не получится (реальный человек или бот). Фактически проверка может произойти только если ВСЕХ голосовавших собрать в одном месте и при свидетелях проверять поштучно с пересчетом иными способами.

На деле данные о прогосовавшем должны быть открыты, как и его голос. Все несут ответственность за свою точку зрения и голос. Если ты мудак, то признайся честно, а не прячься на md5.
Это не спасёт от лишних голосов, а вот от кражи голоса — вполне.
Я думаю, реально было бы попросить почти всех проверить свои голоса. Если воруют несколько десятков голосов в час, за день получается пол тысячи голосов. Такими темпами на 88 тысяч учтенных голосов есть несколько тысяч неучтенных. В среднем, более чем каждый сотый себя не найдет.

Публиковать персональные данные в открытом виде — это противоречит некоторым законам, да и некоторые могут реально боятся последствий. Скажем, участковые начнут инетероватся проголосовавшими, или нашисты травить начнут.
Ну если нет храбрости послать в эротическое пешее участкового и нашиста, то может сразу похоронить себя стоит. Уж личные данные всех проголосовавших тем кто имеет доступ к БД есть в полном объеме. И если потребуется, то прокошмарят и в текущем состоянии системы.

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

Более того, это легко реализуется и при «бумажном» голосовании: Илья Сегалович за 10 минут объяснил, как сделать прозрачную систему выборов
Характерное время работы POST-запроса голосования (/ajax/voting/) — 300..350 мс. Маловероятно, что 7 таких достаточно тяжелых запросов можно выполнить с удаленного сервера за секунду

Поясните, пожалуйста, этот момент.

while sleep 180; do
    for COOKIE in $(sort -R stolen_user_cookies.txt | head -n 7); do
        curl -b "$COOKIE" -d "$VOTE" http://www.roi.ru/ajax/voting/ &
    done
    wait
done

Что здесь маловероятного? Эти запросы тяжелы не для клиента, а для сервера, клиент же их может пачками фигачить.

Это, кстати, объясняет и постепенное «сползание» интервалов («через несколько дней минуты сдвинулись на одну») — к фиксированному трёхминутному ожиданию добавляется сетевой лаг, который со временем аккумулируется.
Да, но выполняться они будут не одновременно. Я ведь тоже могу запустить какое-то количество GET-запросов на сервер. И, по идее, они должны встать в очередь где-то между этими POST-запросами, даже если те стоят очень плотно.
> Да, но выполняться они будут не одновременно

Почему? Обратите внимание на амперсанд в конце команды curl.
Выполняться сервером РОИ, а не тестовым. Он же обычно чем-то там занимается 300 мс. Маловероятно, что все эти операции хорошо распараллелены и все поступившие запросы будут обработаны в одно и то же время. Напомню, их по 8 за раз бывает. И это несколько запросов к БД, многие из которых на запись.
Между HTTP-запросом и запросом к БД чёрт-те что может (и будет) торчать. Самый очевидный пример — AMQP.

Если бы сервер РОИ все голоса обрабатывал в один поток, он бы помер давно. Маловероятно, что там всё так плохо. То есть гораздо менее вероятно, чем то, о чём вы говорите.
Ok, я понимаю, что архитектура всякая бывает. Но как объяснить совпадение этих интервалов с интервалами отмены голосования без decision_id? Не робот же их отменяет?
Не знаю. Я не в курсе того, как строят системы голосования, я просто увидел несостыковку в ваших рассуждениях и обратил на неё внимание :-) Может быть, кто-то другой найдёт объяснение.
> Я ведь тоже могу запустить какое-то количество GET-запросов на сервер.
> И, по идее, они должны встать в очередь где-то между этими POST-запросами

Я вроде понял, что вы имеете в виду, но это совершенно не так. GET-запрос идёт в кэш, POST идёт мимо кэша, фронтенд — Nginx. Ни в какой очереди (достойной упоминания в контексте 300-350 мс) эти запросы не стоят.
> к фиксированному трёхминутному ожиданию добавляется сетевой лаг, который со временем аккумулируется
Нет, дело было не так. Не было постепенного сползания. Просто раньше это происходило, условно, в 57 минут 52 секунды, а сейчас — в 58 минут 45 секунд. Я не отследил точный момент, когда это произошло.
Тогда можно из скрипта убрать wait и считать, что он был в какой-то момент остановлен и перезапущен накрутчиком.
Перезапустили скрипт, может быть.
Во всех шедулерах задачи, запускаемые через интервал времени, постепенно сползают из-за частоты системного таймера не совпадающей с интервалом времени. Здесь нет ничего удивительного.
Не было сползания. Было резкое изменение, а сейчас снова стабильность.
«Тогда можно из скрипта убрать wait и считать, что он был в какой-то момент остановлен и перезапущен накрутчиком» — вот эта версия мне кажется правдоподобной.
Весной по-моему все это уже будет неактуально. Придут голодные суровые мужики с УралВагонЗавода, и они не будут смотреть графики, искать ошибки. Все будет как на Майдане.

Линкольн сказал: «Вы можете обманывать небольшое количество людей долго, вы можете обманывать большое количество людей недолго, но вы не можете обманывать всех постоянно».

Самые точные графики что нас нае… (обманывают) — это курсы рубля и цены в магазинах. По ним даже клиническим идиотам все ясно.
Альтернативный вариант развития событий — мужики с УралВагонЗавода идут в опричники и выстраивается инфраструктура для оптимизации дешевых трудовых ресурсов в виде трудовых лагерей.
>Все будет как на Майдане.
Т.е. обрушение государственности, гражданская война и крах экономики? Спасибо, не надо нам такого. Опыт Украины многих отрезвил, так что суровые мужики с Уралвагонзавода придут этот самый Майдан разгонять.
Ага, в августе 91-го уже разогнали. 16 000 000 членов КПСС сидели по домам обделавшись и никто из них не пошел защищать СССР. Многомиллионная армия, КГБ, МВД не пошли штурмовать Белый Дом.

А 20-100 тысяч граждан у Белого Дома все решили.

Если империя построена на лжи из говна и палок, то она рушится за 3 дня внезапно. Так было с СССР и Российской Империей. Так будет с путинской РФ! Это законы истории. Наука. Ее не переиграешь.
>Ага, в августе 91-го уже разогнали.
В августе народ купили лживыми обещаниями благоденствия. И перед глазами не было примеров цветных «революций».

>Это законы истории.
Расскажите, какие такие законы истории вывели людей на Майдан.
То есть, отстранение коррупционеров от руля, интеграция с ЕС и начало правового государства. Не забывайте, что «гражданская война» – если верить только фактам, а не мнениям – следствие вмешательства соседней страны, а вовсе не последствия Майдана. (Справедливости ради – Майдан стал причиной этого самого вмешательства соседней страны, это так)
>отстранение коррупционеров от руля
Ну да, теневого олигарха Януковича сменил явный олигарх Порошенко — сильное достижение.

>интеграция с ЕС
Пока только на словах. Ну если не считать назначением гражданина Литвы министром интеграцией.

>начало правового государства
Это государство, где толпа может «люстрировать» любого чиновника в мусорный бак и никто не понесёт наказание — правовая? Страна, где до сих пор не проведено внятного расследования смертей на Майдане и сожжения в Одессе — правовая?

>если верить только фактам, а не мнениям – следствие вмешательства соседней страны
Никаких фактов вмешательства никто не предоставил. Госдеп ссылается на фотографии в соцсетях — это смех просто при их то бюджетах на разведку.
Ну да, теневого олигарха Януковича сменил явный олигарх Порошенко — сильное достижение.
Но это действительно огромное достижение – смысл борьбы с коррупцией именно в том, чтобы не было «теневого» сектора (чтобы он был как можно меньше).

Пока только на словах.
Ествественно, такое серьёзное взаимодействие двух государств (а точнее – государства с группой государств) – это процесс не мгновенный, а растянутый на годы. Но главное – что есть движение в эту сторону, подписываются документы и всё такое. То есть, это уже не «только на словах».

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

Никаких фактов вмешательства никто не предоставил.

Я бы мог сейчас перечислить с десяток фактов, но что толку-то, если вы не хотите видеть. Просто оставлю это здесь и на этом вам отвечать тут перестану.
Sapienti sat
image
>Но это действительно огромное достижение – смысл борьбы с коррупцией именно в том, чтобы не было «теневого» сектора (чтобы он был как можно меньше).
Да-да, никакого теневого сектора, депутат на одну зарплату покупает рейндж

> это процесс не мгновенный, а растянутый на годы.
Процесс, который приводит к неминуемому краху экономики Украины.

>Но главное – что есть движение в эту сторону, подписываются документы и всё такое.
Да-да, подписать документ это главное. Мы тоже подписывали много каких документов, например о том же Южном Потоке. Как-то это не спасло проект от блокады.

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

>расстрелов собственных граждан.
Войска Украины собственных граждан не расстреливают? Вот из свеженького: Human Rights Watch зафиксировала случаи применения кассетных бомб киевскими силовиками HRW проплачена Путиным, наверно?

>Просто оставлю это здесь
Сама подпись на картинке на ней указывает, что она из Крыма. В Крыму никакой гражданской войны нет, там всё спокойно.
Война идёт на Донбассе, и данное «доказательство» к ней никак не относится.
Вы сайтом ошиблись. Мы тут обсуждаем не экономику и политику, а техническую проблему организации голосования без фальсификаций.
А почему вы пишите это мне, а не автору треда, который ни слова про технические проблемы не сказал?
Расскажите пожалуйста подробнее о теневой олигархии, у MI5 еще не достаточно сведений!
Кстати не многие знают что в 91 году очень многих(в т.ч. мирных жителей) в России убили снайперы через окошко. Так что это не очень хороший пример.
По поводу цен на сланцевую нефть — да, тут действительно все ясно даже клиническим идиотам.
Но революция «специально» — не нужна, всем очевидно что это дело времени.
Мне кажется стоит добавить ссылку на #20 в конец поста
И, всё-таки, конспирология: А почему 6 минут? Ведь нет никакой сложности запускать чаще или запускать с рандомными интервалами. Тогда никто ничего бы и не заметил вообще. Автор робота пытается нам что-то сказать.

Чувак, первую цифру я записал «6». Давай следующую.
Хм… Или 666? o_O
2016?
Хотя, может он хотел делать накрутку раз в час и просто нолик не поставил… Раз в час бы фиг отследили. Или скрипт до этого запускался раз в час, но кто-то сверху приказал ускорить в 10 раз.
А вы Интерстеллар смотрели? Я бы не хотел спойлерить, но тут есть некоторые параллели
А где-нибудь собраны значения в аномальных пиках??
Профессионала денег нанять не хватило — студент случайные задержки реализовать не додумался.
А я вот верю, что кодер, который писал скрипт на самом деле все прекрасно понимает и сделал такую явную задержку специально. Начальство приказало — выполнил, ну извините, что проклятая «пятая колонна» докопалась-таки опять…
Инициатива Об уголовной ответственности за незаконное обогащение чиновников. И голоса начали пропадать как раз в такой момент, чтобы сложно было ускорить голосование или еще что-то предпринять. До выходных осталось крайне мало времени.
Кто возьмётся по истечении срока голосования опубликовать её снова?
Голосование полезно хотя бы потому, что 100 000 человек узнают о том, что чиновники у нас сейчас никак не наказываются.

А моя (отчасти конспирологическая) теория такая: А если попробовать посмотреть прибыток голосов за другие инициативы? Не вызывают ли они отток от наиболее популярных? то есть раз в 6 минут голоса перераспределяются от тех, где и так много голосов, в пользу бедных собратьев?
Голоса за другие инициативы прибавляют уже очень давно. Посмотрите, этот фееричный естественный ход голосования по инициативе 14141:



Люди в едином порыве отдают по 500 голосов в час, потом вымирают на день.
Может кто то отпиарил хорошо и навалились. Потом следующий и так далее.
Может просто в каком нить РЖД внутрикорпоративная рассылка прошла.
Я выше выложил график голосования по их инициативе: habrahabr.ru/post/244753/#comment_8162011
Никакая рассылка не будет работать с такой точностью по времени. Про чиновников тоже были рассылки. Ничего подобного нет в графиках.

Как человек который на ряде сайтов в качестве админки держит sql клиент я 99.999% уверен в мухляже, а общаясь с разными людьми уверенность доходит до 146%.
Кто мешает при устройстве на работу в госсекторе незаконно обязать сотрудников сдавать свои логины-пароли работодателю?
Вот пример данных из начала графика:

234, 63, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 46, 141, 195, 257, 322, 490, 494, 495, 375, 255, 253, 247, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 139, 192, 194, 193, 193, 195, 192, 193, 194, 29, 2, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 4, 29, 27, 24, 32, 28, 26, 24, 31, 27, 15, 1, 2, 0, 0, 2, 0, 0, 1, 0, 0, 2, 1, 1, 1, 30, 22, 27, 23, 23, 24, 20, 22, 23, 23, 11, 1, 0, 0

Данные по часам. Может быть вы знаете, как можно так отпиарить, чтобы после 247 сразу шел 0? (в обратную сторону еще можно поверить).
Очень просто. У чиновников в министерстве закончился рабочий день. ;-)
Кстати, при всем при том:

Против инициативы подано: 96 голосов
Вы не следите о чем речь. Против этой инициативы 1346 голосов.
Видел в комментариях на другом сайте кто-то писал, что зашел проверить свой голос, а он оказался отозванным… человек проголосовал снова. Может быть, стоит призвать уже проголосовавших людей заходить и проверять?
Сейчас зашел посмотреть голос. Я правильно помню, что раньше внизу страницы рядом с прогресс-баром была большая надпись «Вы проголосовали положительно» или «Вы проголосовали отрицательно»? Куда она теперь делась..? Тперь совершенно непонятно, отдан ли голос. Видно только по по цвету плашек в э этом разделе.
Во. Я тоже не пойму, проголосовал я или нет. (точно помню, что сделал это, но мало ли)
Тут (пока) хранятся голоса ЗА
Кнопка была. Сейчас убрали возможность отзывать голоса.
Голоса можно было отозвать в течение какого-то времени, а вот надпись ЗА\ПРОТИВ была всегда или нет?
Сейчас совсем убрали возможность отзывать голоса. Вообще совсем убрали. Раньше можно было отзывать голос в течение двух часов. И была надпись: вы проголосовали так-то, время отзыва истекло.
Это интересно. Сейчас — это когда? А через REST тоже не работает?
В 16:30, примерно. API отмены возвращает статус 200 и 0 байт. Отмены не происходит.
Счетчики теперь работают синхронно (верхний и нижний) и закешированы на минуту.
А откаты продолжаются?
Нет (это было бы совсем тупо с их стороны).
Только теперь никак не проконтролировать, учтен ли мой голос.
Я голосую — и ничего не происходит. Счетчик не прибавляется, т.к. там кеширование на минуту. Голос можно просто не учитывать, если за эту минуту был еще хоть один. Проголосовали шестеро — посчитали 1.
Если что, речь идет о
image

За которую стоит проголосовать, хотя бы в ответ за github…
Простите за неосведомленность, а что с гитхабом?
Вы на луне? Роскомнадзор опять шалит :(
Отвечу за vitalets: лично у меня не так много свободного времени на Хабр, да и на интернет непосредственно, а телевизор и вовсе не смотрю, уж извиняйте покорно.
У меня, кстати, при попытке захода на гитхаб сертификат подменяется ростелекомовским.
Так это Ростелеком вас на страницу-заглушку на своём сайте пытается перенаправить.
Мало что я поймал снижение количества голосов просто перезагружая страницу, так еще и это. Сколько, говорите, стоила система, которая отображает неверные данные?

image
Этот прекрасный момент в логах:

2014-12-03 13:21:02     89161   89159   68
2014-12-03 13:21:06     89161   89159   68
2014-12-03 13:21:11     89161   89159   68
2014-12-03 13:21:17     89161   89159   68
2014-12-03 13:21:22     1       1       68
2014-12-03 13:21:26     1       1       68
2014-12-03 13:21:32     1       1       68
2014-12-03 13:21:36     1       1       68
2014-12-03 13:21:41     1       1       68
2014-12-03 13:21:47     1       1       68
2014-12-03 13:21:51     1       1       68
2014-12-03 13:21:57     1       89164   68
2014-12-03 13:22:02     1       89164   68
2014-12-03 13:22:06     1       89164   68
2014-12-03 13:22:11     1       89164   68
2014-12-03 13:22:17     1       89164   67
2014-12-03 13:22:22     1       89164   67
2014-12-03 13:22:26     2       89165   67
2014-12-03 13:22:32     2       89165   67
2014-12-03 13:22:36     2       89165   67
2014-12-03 13:22:42     89164   89165   67
2014-12-03 13:22:46     89164   89165   67
2014-12-03 13:22:51     89164   89165   67
2014-12-03 13:22:57     89164   89165   67
2014-12-03 13:23:02     89164   89165   67
ну есть десяток ботов которые голосуют-отзывают-голосуют-отзывают, а мы пугаемся, крестимся, говорим, что РОИ похекали и тут же ставим под сомнение весь результат (который в данный момент весьма положителен).
Если там нет ограничения на количество спама с одного СНИЛС, то вариант рабочий. Наворовать 500 логинов и сидеть дискредитировать.
Да, есть такой вариант. Есть инициатива, которая так продвигается. Сейчас найду график…
Только этот не наш случай по многим причинам.
Аномальное голосование на РОИ
Не очень понятно, что тут происходит. Робот голосует и отзывает голоса, чтобы накрутить голоса в час? Но это вроде не работает, голоса в час так не прибавляются.
«Голоса в час» прибавляются при голосовании и вычитаются при отзыве. Если голосовать, держать голос долго, потом отзывать и снова голосовать сразу же, то можно накрутить голоса в час:

накрутка голосов
Я внимательно следил за инициативой с момента, когда Навальный начал ее пиарить. «Внимательно», это раз в день или раз в два дня зайти посмотреть количество голосов за час, посчитать остаток. Не точная статистика, ясное дело, но, например, такие вещи как «всплеск голосования» явно видны, если ты наблюдаешь уже второй месяц. А так же начинаешь ощущать динамику голосования.
Так вот примерно с указанных в публикации чисел мой внутренний статист (как это ни смешно звучит) сказал, что прирост голосов в день упал резко. Очень резко для подобных инициатив. Это как если бы Навальному запретили вести твиттер, вк, fb да еще сам roi был бы недоступен для населения в какие-то промежутки. Тут надо принять во внимание, что люди могут голосовать «прохладно», иногда, в случае самых удачных пиар-ходов голосовать очень резво. Но когда динамика уходит в минус «прохладно», в этом трудно не отдать себе отчет.
Боты не смогли бы отозвать свои голоса отданные два месяца назад. А другим «естественными» вещами я не могу объяснить почему при среднесуточной цифре в 60-80 голосов за час, инициатива неделю не может перевалить с 87 000 за 90 000.
Тоже заметил, именно в момент 86 000 голосов.
как же будет тяжело на 95 000 — 97 000
А инициатива про машины очень быстро добрала эти последние голоса, т.к. многие с радостью подключаются, даже те, кто изначально не верил.
> когда Навальный начал ее пиарить

Ну вот, все испортил. Теперь точно статью на Гитхаб Гиктаймс перенесут.
Ну да. Там — воры!
Спасибо, не думаю, что остались Люди, которые не в курсе.

Обсуждать к сожалению, бессмысленно, только ради «схем» и любимой математики.

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

И да, я голосовал, естественно.
Уже писал, но повторюсь — если инициатива набирает 100 000 — она переходит в экспертную группу, ФИО которой известны, запад не поддержит решение группы если оно будет отрицательным — попадут под санкции, ровно тоже самое будет в Думе, так, что будет интересно посмотреть что же будет…
> Обсуждать к сожалению, бессмысленно, только ради «схем» и любимой математики.

1) Тут собрались любители математики в том числе. Сайт такой.
2) Оказалось смысл-то был. Оказалось, что прошла. А без этой стать вроде как оказывалось, что не проходит. Такие вот дела.
2.Пару недель назад друг скинул мне эту статью с сайта навального, я быстро накатал свой парсер и стал собирать информацию со скоростью раз в полминуты (они пишут что раз в минуту собирали), с их результатами не сошлось, у них там ниже пики отзыва голосов (то есть по моим данным -3, по их -6, с учётом того что я в 2 раза чаще данные опрашивал) и меньше указано плюсов и динамика голосования была ПОЛОЖИТЕЛЬНАЯ. Правда мерять я начал уже после того как они выложили пост про минусование каждые 6 минут, этого ни у меня ни у них в графиках уже не было. Так что панику они зря поднимали.

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

Это уже не математика, а скорее сфера массовой коммуникации, но я остаюсь при своих: то, что происходит — копание в песочнице, которую нам же дали те бандиты, которых мы хотим убрать с авансцены.
«Для рассмотрения решения на федеральном уровне осталось 10 584 голоса»
Хабраэффект в действии.
Было бы неплохо если бы хабраэффект добавил еще 10 584 голоса =) а то там уже по разному голоса собирали, и активная реклама в блоге у Н и каждодневные твиты и компания 20 +1
А лучше 100 000, чтоб наверняка :)
Ну что… Сколько на хабре посещаемость сотен тысяч в сутки? Массировано голосуем. :) Сколько б жулики не воровали голосов, если их будет, скажем, полмиллиона вместо 100 тысяч, сложнее будет скрыть воровство.
Ну тут скорее всего НЛО немного не обрадуется если мы будем обмазываться ссылкой на данную инициативу по понятным причинам
немного банально, но заведите документ с публичным доступом на добавление и проголосовавший с хабра после заведения этого документа, пишет свой ник или случайный набор символов в этот док. Может наберете только хабравчанами 10 тыс.
Большинству людей просто лень регистрироваться в госуслугах — это вам не лайк поставить. Плюс многие боятся деанонимизации.
Поэтому набрать 100к действительно сложно.
Радует, что такие проекты увеличивают вовлеченность, подогревают интерес к проблеме
«Самая большая глупость — это делать то же самое и надеяться на другой результат.»

Я думал, с бесполезностью roi всем всё давно понятно — ан нет, люди продолжают голосовать и мониторить.
image
А ведь все эти РОИ и Госуслуги написаны за счёт налогоплательщиков? Тогда необходимо открывать исходники под GPL3, переносить код на открытую площадку и вести работу там.
Надо. Но они настолько закрытые, что если и откроют какой-то код, то совершенно не тот, который работает на сервере. А разницу будут объяснять тестированием усовершенствованных алгоритмов.

Достаточно, чтобы Госуслуги сделали открытый API авторизации. Тогда можно сделать независимый сайт для голосований, соответствующий всем нашим требованиям, а РОИ больше не нужен будет.
Как говорится, два чая этому господину! Только вчера после чтения этой статьи думал над тем, что всё ПО, писанное на деньги налогоплательщиков, кроме оборонного, конечно, должно быть открытым. Тогда не будет ни каких сомнений в честности работы тех или иных сервисов.
Это не спасет от раздачи пароля от базы желающим. StopDesign прав, нужен открытый API для авторизации. И это будет очень круто, хотя и довольно по-оруэлловски.
Какого пароля от какой базы?
К базе на продакшене должны иметь доступ лишь ответственные лица, а для тестирования используются фейковые базы с рандомными данными.
И что помешает ответственному лицу запустить скрипт, редактирующий базу напрямую? Хоть обвыкладывай исходники на github, ничего не помешает. Поэтому «всё ПО, писанное на деньги налогоплательщиков, кроме оборонного, конечно, должно быть открытым. Тогда не будет ни каких сомнений в честности работы тех или иных сервисов.» не сработает.
написаны за счёт налогоплательщиков? Тогда необходимо открывать исходники

Вы имеете ввиду, что есть какие-то такие законы? Не знал.
Или же, вам хотелось бы, чтобы так было?
Хотелось бы. Можно на РОИ инициативу отправить. Только нужно всё грамотно составить.
Нужно обсудить, что делать в сложившейся новой ситуации. Конечно, можно мониторить поминутные изменения счетчиков, и это дает некоторые результаты, но пространство для возможных манипуляций тут слишком большое.

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

Мое предложение: на сайте РОИ (на странице инициативы или по какой-то ссылке с нее) необходимо выводить лог голосов за последний час. Лог должен обязательно содержать максимально точное время поступления запроса на сервер (с секундами и миллисекундами). Никакое кеширование не должно влиять на этот таймстемп.

Последний час — чтобы не создавать лишнюю нагрузку на сервер. И чтобы итоговый лог хранился у нескольких независимых наблюдателей. Так будет лучше. Лог можно кешировать на разумное время (1-5 минут).

По возможности, лог должен содержать уникальный идентификатор голосовавшего. Мы не можем попросить публиковать ip или СНИЛС, но можем попросить сгенерить UUID, который должен выводиться в лог и должен быть отправлен пользователю по почте. Таким образом, каждый сможет проверить, что его голос присутствует в логе, но никто другой не узнает, чей там голос.

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

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

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

время | идентификатор | за/против
Почему бы просто не создать разово всем пользователям сервиса некий GUID и показывать его в личном кабинете РОИ? Это как-то нарушает законы о сохранности личных данных?
В принципе нет, не нарушает. Только вот, если один раз GUID человека скомпрометирован, то станут известны все его голоса за все инициативы. Например человек громко скажет «вот мой GUID, мой голос не учтен!», сам себя раскроет во всех других инициативах.
Какие плюсы/минусы? Я вижу такой минус: человек не захочет публиковать свой GUID, т.к. это раскроет сразу все его голосования. А публиковать иногда нужно в контексте «вот я проголосовал» или «я проголосовал, но свой GUID не вижу в списке».
Ваш минус весом, готов признать. Плюс я вижу один, он тоже достаточно весом: нельзя один и тот же guid подсунуть разным людям.
Посмотрите: ведь сейчас если проголосуют два человека и РОИ им выдаст один и тот же GUID на почту — то каждый будет уверен, что учёлся его голос, оба увидят запись в логе (я уверяю: сверять до миллисекунд никто не будет, достаточно слеплять два неугодных голоса, которые отстоят друг от друга на пять-десять секунд, что вещь маловероятная, но не редкая: зашли на хабр, написали пост — за сутки прилетела пара тысяч человек, все дружно ставят лайки).
В случае, если же в лог пишется некий guid, который ты опознаёшь как твой личный идентификатор — то возможности манипуляции сужаются.
Проверьте логическую цепочку, я прав, что подобный плюс имеет место или я ошибаюсь?
А как GUID предлагаете генерировать? От этого будем дальше думать.
Знаете, я возможно не очень хорошо понял ваш вопрос.

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

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

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

Ответ заключается в том, что на выборах при голосовании выдают бюллетень. А на РОИ никакого аналога бюллетеня нет. Вдумайтесь в эту аналогию. Может быть имеет смысл попробовать этот GUID пользователя обозвать бюллетенем для голосования и показывать его ПЕРЕД голосованием, с тем, чтобы ПОСЛЕ момента голосования каждый мог увидеть свой бюллетень в общей прозрачной УРНЕ для голосования (некий лог-файл, который публично доступен любому, кто хочет на него взглянуть).

Возможно также, что ни GUID человека, ни GUID в логе не являются правильными вариантами, а нужно продумывать более сложные вещи: бюллетень, отрывной корешок на бюллетене… Неужели эти задачи не решались математиками, не рассматривались раньше криптографами?
Первый вопрос: А если GUID из официальных логов РОИ пропадет или вообще не появится там, при этом юзеру придет емайл все как надо? Как пользователь будет доказывать что он проголосовал?

Второй вопрос. Допустим, пользователь выйдет на публику и скажет «воры! обокрали! вот мой e-mail распечатанный, вот мой GUID, а его не учли!» Вам не кажется что в таком случае все голосования юзера по другим инициативам станут тоже известны, ведь GUID один для него?
Можно генерировать новый GUID для каждого голосования.
выдаст один и тот же GUID на почту — то каждый будет уверен, что учёлся его голос, оба увидят запись в логе (я уверяю: сверять до миллисекунд никто не будет, достаточно слеплять два неугодных голоса

Это всё довольно сложно в реализации и раскрываемо экспериментально. При том, если человек записал UUID, то он и время может записать легко. А потом два человека проверяют UUID и время. Можно собираться контрольными группами и голосовать по 10 человек «на счёт три». Пусть слепляют.
При одноразовом GUID для каждого голосования:
Вы рассматривали возможность подтасовки: двум людям проголосовавшим в приблизительно одинаковое время (до минут) и выбравшим одинаковый вариант — упадет в ящик абсолютно идентичная информация: GUID/timestamp/ЗА-ПРОТИВ?
Эти «оба» проверят свой голос и убедятся, что он засчитан (а на самом деле нет).
Скорее всего есть логи по любой активности при голосовании. Если «манипуляции» шли напрямую в БД, в обход логики, то логи не должны совпадать с актуальным состоянием. Может просто попросить РОИ выложить анонимные логи за какой-то промежуток времени, например за неделю, затем агрегировать лог, посчитать что вышло и сравнить со сторонними логами?
Конечно, подстроить логи можно, но было проведено множество разных сторонних наблюдений, что может помочь отследить такие «подстройки».
Прошу прощения, тут предлагается обсудить что делать в будущем, а я под впечатлением от прочитанного стал думать о том, что делать с этой инициативой в настоящем. Виноват.
Будем просить логи. У РОИ есть данные о времени голосования «за» и «против» с точностью до секунды, но нет времени отзыва. Уже хорошо. Одного только списка голосов с привязкой по времени хватило бы, чтобы многое проверить.
Очень хорошее предложение.
То есть я правильно понял — кэширование имеет право влиять на время появления этой информации, но не на её содержание? Вы можете сделать так, что запрос в логе появится спустя минуту, но время обращения должно быть реальным. А не временем появления.

Да, это в самом деле спасёт от скруток. Накрутки пока не являются настолько острой проблемой — хотя и с ними нужно бороться.
Да, про кеширование — всё верно.
Раз в час выкладывать подписанные ЭЦП логи голосов. Тогда мы уже сможем их отложить в сторонку и в случае чего предъявить в суде.
1. Считать переходы со своих сайтов и кнопок #20, потом сравнивать со статистикой снятой с сайта РОИ.
2. Призвать активных граждан еще разок зайти и перепроверить свой голос.
3. Публичных счетчиков посещаемости на РОИ нет? Там есть Яндекс.метрика и еще пара жучков, может как-то с них снять статистику?
Из всего этого я могу только п. 2 поддержать в некоторой мере. Смотрите: ставите на своих сайтах информацию о РОИ — обязательно показывайте информацию о независимый центрах мониторинга. И как в пункте два: не просто проголосуй на РОИ — но и зайди на сайт независимого мониторинга, подтверди, что ты нашёл себя в логе, что твой голос засчитан.
Остальное… Не поможет ничем статистика своих сайтов, не сравнить со статистикой РОИ. Я думаю, что это тупиковый путь.
Мое предложение я написал в посте тут — habrahabr.ru/post/245017/
Думаю, стоит это предложить и РОИ. Отказаться от предложения, ссылаясь на конфиденциальность персональных данных в такой схеме не получится, так как конфиденциальность сохранена.
Идея с UUID очень интересна, хотя и не так надежна, как криптографический подход, предложенный almax. Тут все же остается возможность учесть два голоса как один, отправив двум проголосовавшим один и тот же UUID, но вероятность обнаружения такой «ошибки» конечно достаточно высока. В принципе, точное время отправки голоса — это уже почти UUID, так что даже публикация логов с временами голосования с точностью хотя бы до секунды (с обязательным указанием этого времени в подтверждающем письме по электронной почте) даст уже очень много.

Только должен быть не просто UUID, а UUID подписанный РОИ, чтобы можно было его потом предъявить им с подтверждением, что пользователь не сам его придумал.
Если сделать этот UUID равным, например, sha256( СНИЛС_пользователя + ID_инициативы_на_РОИ ) — то можно убить двух зайцев: с одной стороны, невозможно будет пересечь данные от разных голосований (защита персданных), с другой — пользователь сможет убедиться, что его голос учтен.

А если еще и сделать «цепочку подписей», чтобы на каждый голос кроме UUID публиковать еще и метку времени current_timestamp и контрольный хэш, равный sha256( UUID + current_timestamp + контрольный_хэш_предыдущего_голоса ) — то получим вообще прекрасную надежную систему.

Вот только добиться от РОИ, чтобы они это реализовали, ни у кого не получится.
Господа, техническими средствами эту проблему не решить. Даже с помощью хеширования проголосовавшего васи пупкина целиком.
Вася легко найдет свой хеш среди 100 000 проголосовавших «за», это не проблема. Проблема в том, что рядом будут лежать хеши 90 000 проголосовавших «против», а искать и сверять их никто не будет.
Увы.
Формально, голоса «против» ничто не дают. Инициатива попадает в экспертную группу, если наберёт 100 000 голосов «За». Поэтому сейчас жульничество заключается не в том, что прибавляют голоса «против», а в том, что уменьшают счётчик голосов «за».
Хорошо, но ведь никто не мешает «отмотать» счетчик обратно, не трогая при этом хеши васей.
Голосования на сайтах — безграничное поле для жульничества и в любом случае эта проблема не техническая.
Нет, нельзя будет отмотать счетчик, если все хеши уже опубликованы и логи записаны. Точнее, отмотать можно, но сумма не сойдется и фальсификация будет очевидна.

Фальсификации и защита от них — это очень даже техническая и математическая проблема.
Допустим В. Пупкин проголосовал, он видит себя среди проголосовавших, а все другие его — нет. С этим тоже надо что-то придумать.
он видит себя среди проголосовавших, а все другие его — нет.

Это как? Все видят один и тот же набор данных.
Решается контрольными проверками с разных адресов.
Около месяца назад голосовал за эту инициативу.
Залогинился, а мне предлагают голосовать, как будто я не голосовал. Проголосовал ещё раз.
Это четвертый случай, про который я знаю. И неизвестно, сколько их еще, т.к. не все проверяли и не все помнят о голосовании, которое было несколько месяцев назад.
Писал про что-то похожее. Легко могут сказать, что эти ваши 4 случая — это некая ложная память (человек думает, что проголосовал, а на деле нет) и ничего тут не докажешь. Может быть имеет смысл агитировать за то, чтобы люди не только голосовали, но и подтверждались на независимом центре по мониторингу?
На данный момент я считаю, что у РОИ был какой-то сбой в районе 27 сентября. Может, откат из бекапа с потерей данных. Есть странные совпадения. Возможно, речь идет об отмене нескольких сотен голосов, судя по нашим логам. Не трагедия, конечно… Просто хотелось бы разобраться, а не бросать всё, как будто так и задумано. Пока нет времени разобраться с этим. Просто собираем все случаи.

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

Косвенно, это должно снизить вероятность каких либо манипуляций с голосами.
Теоритически манипулировать с голосами могли бы и не на ROI, а некие внешние злоумыленники через XSS-уязвимость (которую до сих пор не закрыли): www.roi.ru/error/authentication-incorrect?token=%3Cimg%20src=http://i.imgur.com/sFmJspZ.png%3E
Подозреваю отозвать через неё голос залогоненого на ROI пользователя не сложно…
Очень подозрительно, что время поступления пакетов голосов точно совпадает со временем синхронизации счетчиков. При том, что кеширование экспериментально обнаружить так и не удалось, а РОИ не дает технических подробностей. Я просто не вижу причин, по которым внешние злоумышленники стали бы так основательно заморачиваться.

Кроме того, в этом случае тоже нужно расследование со стороны РОИ, а они каждый раз отвечают «у нас всё ok».
Есть 100 тысяч за #20!
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории