Как верить «Голосу» если ты сам программист?

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


В дискуссиях о выборах в Беларуси 2020, один из моих знакомых, которого я глубоко уважаю использовал аргумент о том, что Александр Лукашенко, согласно данным платформы «Голос» набрал всего-то 31%. Ну и следовательно блокировки дорог, травля семей силовиков, покраска чего только можно в бело-красно-белый — естественная и справедливая реакция людей на фальсификацию.

Давайте я расскажу вам, что может сказать на это всё программист. Напомню, «Голос» использует два вида показателей: «голоса» подтверждённые с использованием мобильного телефона и фотографии бюллетеней, которые прислали участники голосования.

Начнём с телефонных номеров. В Беларуси по приблизительным оценкам, около 12 млн. абонентов сотовой связи.

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

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

То есть даже предположив, что это всё живые люди, которые действительно проголосовали — мы даже на этом этапе получаем недопустимо высокую погрешность. Однако, идём дальше.

В разделе часто задаваемых вопросов, видим следующий текст:

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

Постараюсь объяснить как можно проще: существуют алгоритмы «хеширования» (не путать с «кэшированием»!), позволяющие превратить любую последовательность данных в набор символов. Не важно, что мы подаём на вход «Капитал» Маркса или коротенькую строку «1234567» — на выходе мы получим строку, что-то вроде 1126c96e64fbd1ecfd10f63564f2b6cde61… длина этой строки одна будет и та же, и зависит от выбранного алгоритма хеширования.

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

Мобильные номера у нас семизначные, начинаются +375, после чего возможен один из кодов оператора (25, 29, 33 или 44). Следовательно у нас 9 млн. комбинаций, умноженных на четыре. Много ли времени займёт такой перебор?

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

Программа для проверки времени перебора всех номеров

Мой домашний компьютер выполняет цикл в тысячу итераций за 13.3 сек, скорость 75 хешей в секунду. Следовательно, на своём стареньком ноуте я мог бы расшифровать базу за…

Пошла генерация…

4 * 9000000 / 75 = 480 000 сек. — чуть больше 5 суток. Плюс-минус, если будет длинная соль. Но, как видите, время вполне вменяемое, даже на домашней машине. Сколько надо времени КГБ-шным суперкомпьютерам — предположите сами :)

И вот тут напрашивается интересный вывод: Если хеши можно дешифровать перебором — то мы получаем небезопасную базу данных.

А если нельзя — то мы получаем совершенно непроверяемые голоса. Может быть это хеширован номер телефона, а может текст арии Ленского или фотография любимой собачки админа «Голоса» — никто никогда не узнает. Можно добавить в базу сколько угодно голосов, кому угодно и сказать, что это телефоны и всё! Даже на один и тот же номер! (если «соль» динамическая) Это не фотографии, которые вы можете хоть как-то увидеть своими глазами.

Как это может влиять на конечный результат?

Возьмём какой-нибудь участок, например 29 в Витебске. Он помечен красной звёздочкой, потому что по мнению Голоса на нём сфальсифицированы результаты. Но вывод сделан только на основании данных с телефонных номеров, которые элементарно фальсифицируются добавлением строчек в базу данных, как мы рассмотрели выше.

И вообще, откуда такая разница между «номерными» и «фото» голосами, почти в два раза?

Если бы вывод о доверии участку 29 делался только на основании фотографий — с ним всё было бы в порядке, 118 сфотографированных голосов за Тихановскую вполне реалистично выглядят рядом с официальными 176. Но тогда революция была бы совсем не интересной, правда? :)

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

 

Как при помощи фотошопа подделать картинку бюллетеня

Вывод

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

Официальные извинения евроньюса за тот самый фейк, с которого начались «ямы97»

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


Источник: m.vk.com

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