?

Log in

криптосюжет - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

криптосюжет [ноя. 23, 2003|05:01 pm]
Anatoly Vorobey
Придумал сюжет для криптофантастического романа или повести. Точнее, не сюжет даже, а завязку.

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


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

Но что-то продолжает его беспокоить, почему-то он всё время возвращается мысленно к коду этой функции. Что-то там было знакомое, хоть даже и в ассемблере... В конце концов через пару дней он открывает опять пропущенный через дизассемблер код программы, находит эту функцию, читает внимательно, тщательно выписывает, что она делает с серийным номером, мучительно пытается вспомнить, где он это видел. Наконец срывается с места, прыгает к книжной полке, хватает изрядно потрёпанное второе издание Applied Cryptography и быстро находит в нём обсуждение MD5. Да, не может быть никаких сомнений! Загадочная функция проверки серийного номера попросту пропускает его через MD5, и сравнивает после этого с фиксированным 128-битным числом. Более того, числом этим оказывается 0x0123456789ABCDEFFEDCBA9876543210 . Герой откладывает книгу в сторону и надолго задумывается, облокотившись на клавиатуру и уставив невидящий взгляд в горящие на мониторе строки ассемблерных команд, составляющих функцию проверки серийного номера...
СсылкаОтветить

Comments:
[User Picture]From: med99
2003-11-23 07:10 am
ничего в этом не понимаю, но заинтригован.
у этой программы есть подсознание? она знает смысл жизни?
(Ответить) (Thread)
From: oblomov_jerusal
2003-11-23 07:18 am
Эта программа сама по себе вполне банальна. Вот ее ПРОИЗВОДИТЕЛЬ - кто-то очень интересный.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: dimrub
2003-11-23 07:12 am
Неинтересно, потому как банально: 90% защит работают именно так, или еще проще. Кстати, 128 бит = 16 байт, а число, с которым сравнивают, поболе будет.
(Ответить) (Thread)
[User Picture]From: dimrub
2003-11-23 07:16 am
Да, а Шнайер, разумеется, рулез. Я как-то был на его лекции. Умеет говорить чувак, ну и писать, разумеется, тоже.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
(Удалённый комментарий)
(Удалённый комментарий)
(Удалённый комментарий)
(Удалённый комментарий)
(Удалённый комментарий)
[User Picture]From: pargentum
2003-11-23 07:21 am

Ну...

Ну научились чуваки генерить номера с заранее известным MD5. И что дальше?

Не вдохновляет как-то, на мой непросвещенный взгляд.
(Ответить) (Thread)
[User Picture]From: dimrub
2003-11-23 07:24 am

Re: Ну...

Аааа... Теперь понял :))). Ну я тупой.

Да, действительно, забавно. Но и действительно не вдохновляет.
(Ответить) (Parent) (Thread)
From: ex_egle611
2003-11-23 08:14 am

Re: Ну...

Или дают всем один и тот же serial number. Это мне, почему-то, сразу же в голову пришло. Хотя, если программа серьезная, то вряд ли, конечно.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: angerona
2003-11-23 08:12 am
И все равно это не докажет P = NP :)
(Ответить) (Thread)
[User Picture]From: egmg
2003-11-23 08:30 am
я мало чего поняла, но это вписывается в формат ekphrasisa, можно туда тиснуть?
(Ответить) (Thread)
[User Picture]From: avva
2003-11-23 09:06 am
Конечно.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: thekonst
2003-11-23 08:58 am
Да это просто фильм ужасов.
(Ответить) (Thread)
[User Picture]From: robinbobin
2003-11-23 10:26 am
fignya... nikto nikogda ne izuchaet function generazii serial ###.

ee prosto zovut i vse...

1 raz mne popalas' takaya function, kotoroya uzala kuchu vsego iz programmy. vylechilos' prosto.

moj kraker delal LoadLibrary ("SuperSecret.dll");
GetProcAddress ( "MakeCoolSerialNumber");
call tuda...

MessageBox ( "Serial num for ur name is", to sho ono tam v buffer vernula...);

ready.
(Ответить) (Thread)
[User Picture]From: avva
2003-11-23 10:31 am
fignya... nikto nikogda ne izuchaet function generazii serial ###.

У меня речь идёт о функции проверки серийного номера, а не генерации.

moj kraker delal LoadLibrary ("SuperSecret.dll");
GetProcAddress ( "MakeCoolSerialNumber");
call tuda...


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

Советую не высказываться по поводу того, что "никогда никогда не делает" или "все всегда делают" в таких делах, это выглядит довольно глупо.
(Ответить) (Parent) (Thread) (Развернуть)
From: 9000
2003-11-24 02:59 am
Иногда серийный номер играет более важную роль, чем быть просто болванкой для сравнения: по нему, например, может расшифровываться участок кода, etc.

Я знаю по крайней мере одного человека, на моих глазах изучившего и взломавшего функцию *генерации* серийного номера, а именно nav2.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: msh
2003-11-23 10:55 am
Да ну, чего тут фантастического

Лучше пусть будет история про юного хакера, который обратил MD5, потому что не знал что это такое.
(Ответить) (Thread)
[User Picture]From: avva
2003-11-23 11:07 am
Ну так это и есть один из возможных сюжетов. Я же только завязку написал.

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

Или оказывается, что в фирме работает астроном-любитель, который уже год подряд получает из окрестностей Альфа Центавра модулированный радиосигнал, который является потоком нулей и единиц, и в попытке его расшифровать он как-то случайно заметил, что поток кодирует одну за другим строки с этим значением MD5. Собственно, как он это заметил: он написал кучу скриптов на Перле для статистического анализа строк из потока. Среди структур данных, к-е используют скрипты, есть хэш, в котором ключом служит строка. Он замечает, что после очередной попытки разделить поток на строки скрипты почему-то начали бежать очень медленно. Долго отлаживает, и обнаруживает, что именно в этом хэше все строки попадают в один bucket (а это какой-то новый Перл, к-й использует MD5 в качестве хэш-функции), и поэтому обращение к хэшу внезапно стало линейным по времени. Ну и так далее.

Про квантовые машины Тьюринга и писать не буду, и так всё очевидно ;) ну и ещё есть 2-3 других возможных продолжения, из которых можно выстроить собственно сюжет.
(Ответить) (Parent) (Thread) (Развернуть)
(Удалённый комментарий)
Bzz - (Анонимно) Развернуть
[User Picture]From: cmm
2003-11-23 11:29 am
ага.

ровно за одну минуту, под дулом пистолетом у виска и с барышней, делающей ему минет.

в Голливуде уже всё придумали, да.  там, правда, был вроде бы DES, но мы им считать не будем. :)
(Ответить) (Parent) (Thread)
[User Picture]From: e_bananan
2003-11-23 11:28 am
страшное дело, - one-way function под названием route666()
(Ответить) (Thread)
[User Picture]From: meshko
2003-11-23 01:33 pm
А мне очень понравилось. Но не слишком реалистично: я не думаю, что можно узнать МД5 в чужом ассемблерном коде.
(Ответить) (Thread)
[User Picture]From: stas
2003-11-23 02:02 pm
Думаю, если видел (а тем более, писал) свой подобный код - можно. Если задаться такой целью. Тем более, что код, скорее всего, не ассемблерный, а компилированый C-шный ;)
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: real_hobbit
2003-11-23 01:34 pm
сдается мне, Билли, что нечто похожее уже было у Гашека: роман Людвига Гангофера "Грехи отцов" и новейшая шифровальная система.
(Ответить) (Thread)
[User Picture]From: xen0n
2003-11-23 07:07 pm

А может проще?

... просто хакера выслеживало ФБР и написало программу, которую может даже немного порекламировали, и либо всем досталась "глючная" версия, которая не регистрялась, либо только нашему герою ее подсунули своими хитрыми способами, но вот только та версия, что он ломал, не обязательно вообще позволяла зарегистрировать софтину (по замыслу авторов). Просто ленивый программист вбил значение хэша покрасивее, и все. Цель - чтобы он просто помучался с ней.

P.S.
кстати, а обязательно в md5 у каждого значения Y есть такое X что Y=md5(X)? а то может некоторые значения хэша в принципе не обращаются? тогда можно открывать охоту на открытие данных, генерирующих красивый md5 и первый приз - красивое значение X, которое после MD5 дает красивое значение Y.

P.P.S.

RFC 1321 - The MD5 Message-Digest Algorithm: "3.3 Step 3. Initialize MD Buffer"
буфер заполняется какими-то числами? почему именно этими? скорее всего при разработке алгоритма можно было любые на их место поставить (главное - чтобы они были в стандарте), но почему авторы решили именно их использовать? Может быть как раз пошутили так, что при этих вот значениях, которыми весь мир пользуется, "что-то веселое" (X) шифровалось в "что-то не менее веселое" (Y).
:)

(Ответить) (Thread)
(Удалённый комментарий)
From: ex_yonkie852
2003-11-24 02:04 pm
Я делал нечто отдаленно похожее сначала в своем crackme, затем для защиты одной софтины. Могу отмылить, если интересно..
(Ответить) (Thread)
[User Picture]From: avva
2003-11-24 04:24 pm
Объясните, что именно "отдалённо похожее", интересно. Можно почтой, если публично это лучше не раскрывать.
(Ответить) (Parent) (Thread) (Развернуть)