Как проверить хеш рулетки

Обновлено: 04.07.2024

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

В процессе написания, узнал многое о игровом бизнесе вообще, заметка пойдет о «общепринятом способе», доказательства честности рулетки.

Как это происходит?
Еще до начала игры, рулетка генерирует случайный float от 0 до 1 и открыто публикует его хеш.

Каждый внесший деньги получает билеты, например 0,1$ = 1 билету, если я внесу 10$, то получу 100 билетов, выигрывает всегда один билет. т.е. чем больше внесу денег, тем больше шансов победить.

Победителя определяют по формуле
Случайное число * размер банка = (int)победивший билет

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

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

Это правда позволит нам удостоверится что число было случайным.

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

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

Это никак не изменить, нельзя ведь отобрать у игроков возможность ставить деньги?

Все ли казино этим пользуются?
Мой работодатель утверждает о свой честности, я ему верю, так как пишу код этой рулетки. В тз нет ничего о «регуляторах банка», но все же, хеши никакая не гарантия.

Есть ли 100% способ проверить честность казино? думаю нет, нечестный на руку всегда найдет лазейку.

В избранное В избранном 0


Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.

26 комментариев


Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.

Не знаю, как сделать «рулетку» для нескольких одновременных игроков без возможности обмана со стороны казино.

Но можно сделать честную «лотерею» для одного игрока:
0) Игрок выбирает желаемый целочисленный множитель ставки N.
1) Казино генерирует случайное целое число от 1 до N, отправляет хэш игроку.
2) Игрок делает ставку $x на целое число от 1 до N.
3) Казино открывает игроку число, сгенерированное на первом шаге.
4) Игрок проверяет, что хэш с первого шага совпадает с вычисленным хэшем от числа на третьем шаге.
5) При совпадении чисел казино выплачивает игроку сумму $x*N*(1-p/100), где p — процент маржи казино.

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

Лучше до розыгрыша подписать случайное число электронной подписью, например используя алгоритм на эллиптической кривой P-256, и выдать игроку открытый ключ и сигнатуру. В чём преимущество: в отличии от хэша он не сможет пробутфорсить 2^32 варианта, поскольку не знает закрытый ключ. Зато на основании открытого ключа сможет убедиться в достоверности случайного числа.

Можно, но проблема не там.

Поэтому только live -только няшные девочки , кидающие шарик ручками)

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

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

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

Еще ни разу в Live при живых девочках -не было серий больше 16 красного или черного при мне. Хоть и вероятность 50% при каждом броске. Но вероятность выпадения серии нескольких подряд — меньше с каждым броском. Так вот в автоматах казино и по 18 и по 25 было подряд.

Теория вероятности про шанс выигрыша 36/37 — это для владельцев казино, которые владеют всем множеством розыгрышей, что они всегда в выигрыше будут. А у каждого игрока -своя серия в этом множестве. Кто-то проигрывает, кто-то выигрывает. Тут ТВ не работает на мелких сериях. Больше вероятностная комбинаторика.

Никто никуда не скатывался. В реале, не в теории вероятности на автоматах, а в реале- ни на форумах, не в реале в live рулетку. не бывает выпадений больше 20. Нигде никто никогда не слышал. Был один случай..в Монако 18 августа 1913 года выпало черное 26 раз и Фсё.
Поэтому выигрывать в принципе, можно на пределе лимитов казино, умножая при каждом ходу ставку не в 2, а в хотя бы, и сидеть сутками, начиная ставить, когда около раз подряд подряд одного цвета. Но это нервы палит на раз.) Да и редко такие серии бывают..

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

Выйдет, 2,7% процента- это заработок казино, от ВСЕХ разыгранных ставок, конкретных игроков это касается индивидуально, постольку -постольку. И проверено когда-то было на Бетфейр лив. от верхнего до нижнего предела где-то 10- 11 удвоений получается. от 0,5 до 10 000. Другое дело ,что верхний предел- большая сумма, нервы палит ,с учетом того, что на Зеро тоже нужно ставить с удвоением. Но все может быть. Только не удваивать нужно, а в 2,5 где-то увеличивать. Чтобы не только минимальную ставку выигрывать ,а большие суммы. Желанным клиентом ты не будешь ,потому что такие серии не каждый час даже выпадают. Нужно дождаться ,чтобы серия до начала ставок уже была Сидеть часами ждать ставку тупо, но все реально. Вероятность серии из 19 КРАСНОЕ = 0,49 ** 18= 0,00000012.
Бывает, но редко, я такой серии в Live никогда не слышал даже на форумах, например.
А вот в автоматах, такое может быть, поэтому только Live.
Чаще будете выигрывать, а с учетом ,не удвоения, а в 2,5 раза- большие суммы, что компенсирует возможный проигрыш. Правда возможно забанят за догон.
И главное, не увлекаться и не играть несколько десятков тысяч спинов ,а то сработает статистика и мат. ожидание все-таки сыграет против вас)

Я не совсем въехал в алгоритм ставок, каким образом я могу выбрать выигрышный номер? Или это не предусмотрено?

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

1. Казино генерирует число (x) и рассылает md5 хэш числа X (h[X]md5) игрокам.
2. Игроки делают ставки: игрок вводит сумму ставки + генерирует пару ассиметричных ключей (Kpub + Kprivate).
3. Игроки шифруют сумму ставки E[X]Kpub и отсылают ее казино и другим игрокам.
4. После того как получены все ставки, Казино рассылает число X игрокам. Игроки могут посчитать md5 хеш от X и убедиться, что оно не изменилось.
5. Игроки обмениваются секретными ключами (Kprivate) между собой и Казино.
6. Игроки и Казино могут расшифровать все суммы ставок и вычислить номер выигрышного билета.

В классическом варианте рулетки игроки могут шифровать номер на который сделана ставка, в таком сумма ставки секретом не является.

Теперь по поводу md5 алгоритма:

1. MD5 не устойчив к коллизиям. Соответственно для числа X я могу найти числа Y,Z . для которых будет выполнятся h[X]md5 == h[Y]md5 == h[Z] md5. Это дает теоретическую возможность Казино выбрать наиболее выгодное число из последовательности X, Y, Z

2. Любой хеш алгоритм без соли не устойчив к атакам по словарю. В данном случае игрок может моментально узнать число X получив его хеш. Это дает возможность читить игроку.

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

Наиболее развернутый ответ

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

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

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

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

Вы сказали, что можно получить число Х, зная его хэш.(Если я правильно вас понял), то возьмем рулетку CSGOFAST (дабл, красное, черное, зеленое). Там всегда вначале раунда генерируется хэш раунда, а вот число скрыто ( и сказано, что рулетка работает на алгоритме sha224, т.е. когда выпало число показывается число от 0 до 1, мы умножаем его на 15 и получаем то, что и выпало. ), так.. можно ли тут предугадать число, которое выпадет, зная его хэш?

Вы сказали, что можно получить число Х, зная его хэш

ох уж этот эгоцентризм с примесями теории заговоров

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

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

Не в том случае, если это российское казино. Там жлобство изо всех щелей!

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

Нет, 100% способа на хешах нет. А соответственно нет и 0.0001%-ного способа.

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

Ключевой момент — это генерация случайного числа. Нужен такой генератор, который действует глобально, и на который 100% нельзя влиять. Например, градусник температуры. Или таймер, в который случится нечто предсказуемое, например упадёт капля воды. Но опять же, нужен гарант — без него никак. Иначе подделать можно всё. Мой совет — бери биржевую сводку, там крайне надёжная инфа, никаких «если». Например, цена барреля нефти на момент закрытия.

В общем, как ни крути, но если можно РАЗГРАНИЧИТЬ уровень доступа, то есть существует хоть один бит инфы, которую все игроки не могут получить их открытого доверенного источника — значит игра подделана.

Если случайное число сгенерировано заранее — то казино его знает. А значит знают и липовые игроки, которые участвуют ради получения выигрыша самим казино. Как видишь, такого не должно быть. Либо знают все, либо никто.
________
Ещё момент — лучше разбить участников на сегменты, например по 1000 билетов. И в начале избирается сегмент, а потом среди сегмента — победитель. Если же часть сегмента пуста, и жребий указал на некупленный билет — всё повторяется заново включая выбор сегмента. Это накаляет интригу. Особенно, если 4% изначально заполнить некупленными билетами. Математически ничего не даёт, но азарт прогревает круто!

Взлом рулетки на Гидре, что думаете по этому поводу? Гидра, Рулетка, Даркнет, Тор, Хакеры

"расшифруете" MD5 -- бегите за нобелевкой.

MD5 это не шифр. это хеш. и это принципиальная разница. Шифр предназначен для дешифрации, хеш не шифрует, хеш хеширует, восстановить из хеша нельзя, только взять хеш-образец, захешировать другие данные и сравнить их. если хеши идентичные -- то и данные идентичные

День, когда Все наконец выспались

День, когда Все наконец выспались Instagram, Кибератака, Хакеры, Даркнет, Карикатура, Интернет, Иллюстрации


Даркнет и Служба внешней разведки

Даркнет и Служба внешней разведки Свр, Разведка, Разведчик, Шпион, Шпионаж, Государство, Братья Коэн, Даркнет, Цифровая экономика, Данные, База данных, Тор, Армия, Биткоины, Криптовалюта, Крипота, Криптография, Видео, Длиннопост

На сайте Службы Внешней Разведки (СВР) пользователями была обнаружена единственная кнопка на английском языке "Report Information"

Даркнет и Служба внешней разведки Свр, Разведка, Разведчик, Шпион, Шпионаж, Государство, Братья Коэн, Даркнет, Цифровая экономика, Данные, База данных, Тор, Армия, Биткоины, Криптовалюта, Крипота, Криптография, Видео, Длиннопост

По ссылке инструкция как из-за пределов России передать ценные разведданные по сети TOR

Сразу вспомнился шедевр братьев Коэнов "После прочтения сжечь". Сцена когда американская труженица фитнес центра пытается заработать на искусственные сиськи, путем продажи компакт диска с шпиОнской информацией в русское посольство

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

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

Успешный опыт внедрения цифровых ГосУслуг для населения переносится на внешний контур

Оплата скорее всего будет в биткоинах по курсу ЦБ на дату слива информации.

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

Вы почти приспособились к тьме.

Вы почти приспособились к тьме. Картинка с текстом, Комиксы, Мемы, Даркнет, Тор, Браузер, Интернет, IT юмор

Вы почти приспособились к тьме. Картинка с текстом, Комиксы, Мемы, Даркнет, Тор, Браузер, Интернет, IT юмор

Как спецслужбы найдут тебя

Как спецслужбы найдут тебя Анонимность, Даркнет, Спецслужбы, ФСБ, Помогите найти, Хакеры, Слежка, Большой брат, Длиннопост

В качестве операционной системы он использует Tails, хотя для максимальной анонимности стоило бы взять Whonix. Так или иначе, весь трафик идет через Tor, он не доверяет VPN, да и для работы в Даркнете Tor ему все равно необходим.

Для общения он использует Jabber с PGP-шифрованием, он мог бы поставить и Телеграм, но это представитель старой школы преступников. Даже если у вас будет доступ к серверу Jabber, вы сможете получить лишь зашифрованные данные и IP-адреса Тор. Это бесполезная информация.

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

Лог выглядит примерно так: таблица входов и выходов

Как спецслужбы найдут тебя Анонимность, Даркнет, Спецслужбы, ФСБ, Помогите найти, Хакеры, Слежка, Большой брат, Длиннопост

Теперь на руках у вас есть лог его активности за несколько дней, пришло время воспользоваться системой ОРМ (оперативно-розыскных мероприятий). Подобные системы есть в распоряжении спецслужб большинства стран, в России это СОРМ. Нужно выяснить, кто в эти временные промежутки +/- 5 минут в вашей стране подключался к сети Tor.

Мы знаем, что цель, которую необходимо деанонимизировать, подключилась 22.04.2018 в 11:07 и отключилась в 12:30. В эти же временные точки (+/- 5 минут) на территории страны подключились к сети Tor и отключились от нее 3000 человек. Мы берем эти 3000 и смотрим, кто из них снова подключился в 14:17 и отключился в 16:54, как думаете, сколько человек останется?

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

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

Вот так это выглядит в Телеграм:

Как спецслужбы найдут тебя Анонимность, Даркнет, Спецслужбы, ФСБ, Помогите найти, Хакеры, Слежка, Большой брат, Длиннопост

Если в вашем мессенджере возможно скрыть данные о вашем статусе, скройте эту информацию.

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


Дабы зарабатывать в виртуальных казино настоящие деньги либо хотя бы не спустить все средства на балансе с первого же раза, стоит быть заверенным в том, что с боку казино не происходит обмана. Однако как такое сделать, когда число всевозможных онлайн казино уже давно превысило больше тысяч сотен? Ответ довольно очевиден – использовать расшифровку алгоритма именуемым md5, и который подавно считается «гарантией качества» крупнейших игровых заведений в сети.

Что собой представляет алгоритм md5?

Практически данный алгоритм (название расшифровывается – Algorithm Message Digest 5) являет собой скрипт, то есть выполняемую функцию для зашифровки любого кода, который состоит из чисел, букв и прочих символов. Алгоритм md5 обрабатывает строки защищенного кода, и итог такой работы – hash-строка со 128 битами, зашифрованная набором различных символов. Выглядит, разумеется, сложно, однако в системе работы данного алгоритма на практике разобраться довольно легко – а такое сделать нужно непременно, когда вы желаете быть точно заверенным в том, что казино функционирует на честных засадах по отношению к своим пользователям.

Мониторинг честности

В сфере азартных развлечений систему md5 применяют чаще для того, дабы пользователи имели возможность заверяться в честности игровых заведений – как раз поэтому большинство солидных интернет казино открыто сообщают, что поддерживают этот алгоритм. Благодаря такому «мониторингу честности» можно будет проверить, не были ли задействованы в казино прочие факторы, влияющие на результат игры (наиболее важно это для рулетки либо игровых слотов, в которых исход определяется ГСЧ). Солидные казино предлагают своим клиентам открытый доступ к шифрам алгоритма md5, применяя и, сопоставляя которые, можно проконтролировать, честно ли происходила игра.

Расшифровывание алгоритма md5

Совершить проверку md5 на практике можно таким образом:

Пользователь входит в любую из приглянувшихся азартных игр, представленных в казино с использованием md5 и получает засекреченный код на ответ (так званный md5-хэш). Он являет собой подборку случайных символов как правило длиной в 32 знака – к примеру, как это: 06hd6dki1ocach417543e471734s lsb8 (не стоит пугаться, самим вам такую бессмыслицу расшифровывать не доведется никогда). Данный код будет доступен на сайте интернет казино в личном кабинете или по вашему запросу будет автоматически отослан на электронный адрес почты, который вы указали во время регистрации.


Затем, как ставки произведены, и игра окончилась (ГСЧ показал результат), а алгоритм md5 сам генерирует новый код – к примеру, o02po9751f6fk104c81. Три первых символа – это засекреченный исход игры. Теперь лишается лишь применить любую программу либо специальный сервис для распознавания кодов системы md5, и мы заметим, что программа раскодировала сгенерированный код как 06hd6dki1ocach417543e471734s lsb8 – то бишь абсолютно схожий начальному коду ответа. Данное фактически числовое подтверждение того, что исходы игры не искажены и были установлены точно в момент старта (результат устанавливается непосредственно ГСЧ).

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

Немного о криптографии

Современная криптография включает в себя три направления: шифрование с закрытым ключом, шифрование с открытым ключом и хеширование. Сегодня мы поговорим о том, что такое хеширование и с чем его едят. В целом под хешированием понимают преобразование входных данных произвольной длины в выходную битовую строку фиксированной длины. Чаще всего хеш-функции применяют в процессе аутентификации пользователя (в базе данных обычно хранится хеш пароля вместо самого пароля) и для вычисления контрольных сумм файлов, пакетов данных и т. п. Одним из наиболее известных и широко используемых алгоритмов хеширования является MD5.

WARNING!

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

Начало

О том, что алгоритм MD5 можно взломать, впервые заговорили в 1993 году. Исследователи Берт ден Боер и Антон Боссиларис показали, что в алгоритме возможны псевдоколлизии. Через три года, в 1996-м, Ганс Доббертин опубликовал статью, в которой доказал наличие коллизий и описал теоретическую возможность взлома MD5. Это был еще не взлом, но в мире начались разговоры о необходимости перехода на более надежные алгоритмы хеширования, например SHA1 (на момент написания этой статьи уже было доказано, что коллизии имеются и в этом алгоритме, поэтому рекомендую использовать SHA2) или RIPEMD-160.

Первые атаки

Пример коллизии MD5-хешей

Пример коллизии MD5-хешей

Большая работа была также проделана и для ускорения взлома хешей. В 2007 году Кевин Бриз представил программу, использующую Sony PlayStation3 для взлома MD5. Он сумел добиться очень неплохих результатов: 1,4 миллиарда MD5-хешей генерировались всего лишь за одну секунду! Уже через два года, в 2009-м, на BlackHat USA вышла статья об использовании GPU для поиска коллизий, что позволяло повысить его скорость в несколько раз, особенно если он выполнялся с помощью нескольких видеокарт одновременно.

Брут MD5 по маске

Брут MD5 по маске

Видеокарта ATI Radeon HD 4850 X2 позволяет генерировать до 2,2 миллиардов хешей в секунду!

Использование алгоритма MD5 в ЭЦП неприемлемо вследствие недостаточной устойчивости этого алгоритма к поиску коллизий.

Это конец?

В 2011 году IETF согласилось внести изменения в RFC 1321 (MD5) и RFC 2104 (HMAC-MD5). Так появился документ RFC 6151. Он признает алгоритм шифрования MD5 небезопасным и рекомендует отказаться от его использования. На мой взгляд, этот документ официально положил конец MD5. Однако, несмотря на то что алгоритм MD5 был официально признан небезопасным, существуют тысячи, если не десятки и сотни тысяч приложений, которые используют его для хранения паролей, в электронно-цифровых подписях и для вычисления контрольных сумм файлов. Кстати, 31 октября 2008 года NIST объявила конкурс среди криптографов. Цель конкурса — разработать алгоритм хеширования на замену устаревшим SHA1 и SHA2. На данный момент финалисты уже определены — это BLAKE, Gostl, JH, Keccak и Skein.

Ighashgpu: взлом с помощью GPU

Мы используем вышеприведенный способ для взлома одного определенного хеша, сгенерированного при помощи алгоритма MD5. Максимальная длина возможного пароля составляет семь символов. Через какое-то время пароль будет найден (qwerty). Теперь давай попробуем взломать еще один хеш, но с немного другими условиями. Пусть наш хеш имеет вид d11fd4559815b2c3de1b685bb78a6283, а включает в себя буквы, цифры, знак подчеркивания и имеет суффикс «_admin». В данном случае мы можем использовать перебор пароля по маске, чтобы упростить программе задачу:

Здесь параметр '-u' позволяет указать набор символов, используемых при переборе, а параметр '-m' задает маску пароля. В нашем случае маска состоит из шести произвольных символов, после которых идет сочетание «_admin». Подбор пароля также не составит никакого труда.

Коллизии

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

Ighashgpu: списки

Теперь давай попробуем взломать сразу несколько паролей одновременно. Предположим, что к нам в руки попала база данных хешей паролей. При этом известно, что каждый пароль оканчивается символами c00l:

Сохрани хеши в файле encrypted.dat и запусти Ighashgpu как указано ниже:

После завершения работы программы в папке Ighashgpu появится файл ighashgpu_results.txt со взломанными паролями:

Взломаные хеши из файла encrypted.dat

Взломаные хеши из файла encrypted.dat

Ighashgpu: соль

Напоследок давай произведем взлом «подсоленного» хеша. Предположим, что хеш генерируется по следующему алгоритму:

В итоге мы получили следующий хеш: 42151cf2ff27c5181bb36a8bcfafea7b. Ighashgpu позволяет указывать «соль» в параметре «-asalt»:

И мы снова получили искомый пароль легко и быстро.

Занимательная математика

Взлом MD5 в режиме турбо

Взлом хешей путем полного перебора даже на самом лучшем железе занимает довольно много времени, особенно если пароль больше восьми символов. Самый простой способ увеличить скорость подбора пароля — это создать базу данных всех хешей для определенного набора символов. В 80-х годах прошлого столетия хакеры полагали, что когда у них появится более мощное железо, 640 Кб памяти и жесткий диск размером в 10 Мб, то такая база станет реальностью и подбор любого пароля превратится в минутное дело. Однако железо развивалось, а мечта так и оставалась мечтой. Ситуация изменилась лишь в августе 2003 года, после того, как Филипп Оэшлин, доктор философии в области компьютерных сетей из Швейцарского технологического института в Лозанне, опубликовал свою работу о проблеме выбора оптимального соотношения место-время. В ней описывался метод взлома хеш-функций с помощью «радужных» таблиц. Суть нового метода заключается в следующем. Сначала необходимо выбрать произвольный пароль, который затем хешируется и подвергается воздействию функции редукции, преобразующей хеш в какой-либо возможный пароль (к примеру, это могут быть первые 64 бита исходного хеша). Далее строится цепочка возможных паролей, из которой выбираются первый и последний элементы. Они записываются в таблицу. Чтобы восстановить пароль, применяем функцию редукции к исходному хешу и ищем полученный возможный пароль в таблице. Если такого пароля в таблице нет, хешируем его и вычисляем следующий возможный пароль. Операция повторяется, пока в «радужной» таблице не будет найден пароль. Этот пароль представляет собой конец одной из цепочек. Чтобы найти исходный пароль, необходимо прогнать всю цепочку заново. Такая операция не занимает много времени, в зависимости от алгоритма построения цепочки это обычно несколько секунд или минут. «Радужные» таблицы позволяют существенно сократить объем используемой памяти по сравнению с обычным поиском. Единственный недостаток описанного метода состоит в том, что на построение таблиц требуется довольно много времени.

Теперь перейдем от слов к делу и попробуем взломать пару-тройку хешей паролей с помощью этого метода.

Rainbow tables

«Радужные» таблицы — это особый тип словаря, который содержит цепочки паролей и позволяет подобрать пароль в течение нескольких секунд или минут с вероятностью 85–99%.

«Радужный» взлом

Сначала необходимо определиться с программой. Лично мне нравитсяRainbowCrack, которая распространяется бесплатно и работает как на Windows, так и на Linux. Она поддерживает четыре алгоритма хеширования: LN/NTLM, MD5 и SHA1. Программа не требует установки, достаточно распаковать ее куда-нибудь на диск. После распаковки необходимо найти «радужные» таблицы для алгоритма MD5. Здесь все не так просто: их можно либо скачать бесплатно, либо купить, либо сгенерировать самостоятельно. Один из самых больших архивов бесплатных таблиц доступен на сайте проекта Free Rainbow Tables. Кстати, ты тоже можешь помочь проекту, если скачаешь клиент с сайта и присоединишься к распределенной международной сети, которая генерирует «радужные» таблицы. На момент написания статьи на этом сайте уже было доступно 3 Тб таблиц для алгоритмов MD5, SHA1, LM и NTLM. Если у тебя нет возможности слить такой объем информации, то на том же сайте можно заказать диски с «радужными» таблицами. На данный момент предлагается три пакета: LN/NTLM, MD5 и SHA1 — по 200 долларов каждый. Мы же сгенерируем таблицы самостоятельно. Для этого необходимо использовать программу rtgen, входящую в состав RainbowCrack. Она принимает следующие входные параметры:

  • hash_algorithm — алгоритм хеширования (LM, NTLM, MD5 или SHA1);
  • charset — один из наборов символов, содержащийся в файле charset.txt;
  • plaintextlenmin и plaintextlenmax — минимальная и максимальная длина пароля;
  • tableindex, chainlen, chainnum и partindex — «магические числа», описанные в статье Филиппа Оэшлина bit.ly/nndT8M.

Рассмотрим последние параметры подробнее:

  1. table_index — индекс «радужной» таблицы, который можно использовать при разбивке таблицы на несколько файлов. Я использовал 0, так как моя таблица состояла всего из одного файла.
  2. chain_len — количество уникальных паролей в цепочке.
  3. chain_num — количество цепочек в таблице.
  4. part_index — это параметр, определяющий начало цепочки. Создатели программы просят использовать в качестве этого параметра только число (я использовал 0). Теперь запускаем генерацию «радужной» таблицы для MD5:

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

Генерирую радужную таблицу

Генерирую радужную таблицу

«Радужные» таблицы vs. CPU vs. GPU

Я думаю, ты обратил внимание на то, насколько быстро Ighashgpu способен взламывать MD5-хеши полным перебором, и на то, что RainbowCrack делает это еще быстрее при наличии хорошей «радужной» таблицы. Я решил сравнить скорость работы этих программ. Для чистоты эксперимента я использовал программу MDCrack, которая осуществляет брут пароля на CPU (и является одной из лучших среди программ такого типа). Вот что получилось в результате для GPU (nVidia GeForce GT 220M), CPU (Intel Atom N450, два ядра) и «радужных» таблиц:

Как видишь, скорость перебора с использованием CPU намного меньше, чем с использованием GPU или «радужных» таблиц. Более того, большинство специализированных программ позволяет создать кластер из видеокарт, благодаря чему скорость перебора пароля увеличивается в разы. Я думаю, ты обратил внимание на то, что скорость подбора 4- и 5-символьного паролей ниже, чем скорость подбора пароля из шести или семи символов. Это связано с тем, что поиск пароля начинается только после загрузки таблицы в память. Получается, что из шестнадцати секунд в среднем тринадцать тратится на загрузку и три — на взлом хеша.

Радужная таблица изнутри

Радужная таблица изнутри

bit.ly/vEhdir — добавление нового алгоритма хеширования в RainbowCrack при помощи API.

bit.ly/vTSB9K — описание формата «радужной» таблицы.

Вместо заключения

В конце я бы хотел немного поговорить о защите твоих паролей. Во-первых, не используй уязвимые алгоритмы хеширования, такие как MD5 или SHA1. На данный момент стоит задуматься об использовании одной из криптографических хеш-функций SHA2 или SHA3 (как только опубликуют соответствующий стандарт). Во-вторых, не используй функции хеширования напрямую. Всегда старайся использовать «соль» и комбинировать различные алгоритмы. И в-третьих, выбирай сложные произвольные пароли длиной как минимум восемь символов. Конечно, это не защитит тебя от взлома на 100 %, но хотя бы усложнит жизнь злоумышленникам.

Читайте также: