avva: (Default)
[personal profile] avva
Придумал сюжет для криптофантастического романа или повести. Точнее, не сюжет даже, а завязку.

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


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

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

Date: 2003-11-23 07:10 am (UTC)
From: [identity profile] med99.livejournal.com
ничего в этом не понимаю, но заинтригован.
у этой программы есть подсознание? она знает смысл жизни?

Date: 2003-11-23 07:12 am (UTC)
From: [identity profile] dimrub.livejournal.com
Неинтересно, потому как банально: 90% защит работают именно так, или еще проще. Кстати, 128 бит = 16 байт, а число, с которым сравнивают, поболе будет.

Date: 2003-11-23 07:16 am (UTC)
From: [identity profile] dimrub.livejournal.com
Да, а Шнайер, разумеется, рулез. Я как-то был на его лекции. Умеет говорить чувак, ну и писать, разумеется, тоже.

Date: 2003-11-23 07:18 am (UTC)
From: [identity profile] oblomov-jerusal.livejournal.com
Эта программа сама по себе вполне банальна. Вот ее ПРОИЗВОДИТЕЛЬ - кто-то очень интересный.

Ну...

Date: 2003-11-23 07:21 am (UTC)
From: [identity profile] pargentum.livejournal.com
Ну научились чуваки генерить номера с заранее известным MD5. И что дальше?

Не вдохновляет как-то, на мой непросвещенный взгляд.

Re: Ну...

Date: 2003-11-23 07:24 am (UTC)
From: [identity profile] dimrub.livejournal.com
Аааа... Теперь понял :))). Ну я тупой.

Да, действительно, забавно. Но и действительно не вдохновляет.

Date: 2003-11-23 07:24 am (UTC)
From: [identity profile] med99.livejournal.com
я понял! MD5 невозможно без потустороннего вмешательства расшифровать обратно? **сияет**

Date: 2003-11-23 07:27 am (UTC)
From: [identity profile] dimrub.livejournal.com
Ага, я тоже не сразу допер. Правда, расшифровать в случае с MD5 - не совсем правильный термин. Скорее, обратить.

Date: 2003-11-23 07:29 am (UTC)
From: [identity profile] med99.livejournal.com
открывает широкие дали
возможно ли, скажем, написать программу, которая работала бы назад во времени?
просто что-то делала в сторону уменьшения энтропии
причем написать обыкновенными программистскими средствами?

Date: 2003-11-23 07:30 am (UTC)
From: [identity profile] dimrub.livejournal.com
How many programmers does it take to change a light bulb? "This is not a software problem..."

Date: 2003-11-23 07:33 am (UTC)
From: [identity profile] oblomov-jerusal.livejournal.com
Ну, скажем так: предполагается, что это невозможно сделать за разумное время. Для этого его (md5) и изобрели. Тот, кто умеет его обратить, может подделывать основанные на нем "электронные подписи" и т.п.

Date: 2003-11-23 08:12 am (UTC)
From: [identity profile] angerona.livejournal.com
И все равно это не докажет P = NP :)

Re: Ну...

Date: 2003-11-23 08:14 am (UTC)
From: [identity profile] ex-egle611.livejournal.com
Или дают всем один и тот же serial number. Это мне, почему-то, сразу же в голову пришло. Хотя, если программа серьезная, то вряд ли, конечно.

Зря я это

Date: 2003-11-23 08:16 am (UTC)
From: [identity profile] ex-egle611.livejournal.com
Нет, не выходит. Результат не случайный.

Date: 2003-11-23 08:30 am (UTC)
From: [identity profile] egmg.livejournal.com
я мало чего поняла, но это вписывается в формат [livejournal.com profile] ekphrasisa, можно туда тиснуть?

Date: 2003-11-23 08:53 am (UTC)
From: (Anonymous)
Число, с которым сравнивают (0x0123456789ABCDEFFEDCBA9876543210),- 121-битовое.

Date: 2003-11-23 08:56 am (UTC)
From: [identity profile] dimrub.livejournal.com
И вправду...

Date: 2003-11-23 08:58 am (UTC)
From: [identity profile] thekonst.livejournal.com
Да это просто фильм ужасов.

Date: 2003-11-23 09:05 am (UTC)
From: [identity profile] avva.livejournal.com
Нет, 128-битовое, присмотритесь получше.

Date: 2003-11-23 09:06 am (UTC)
From: [identity profile] avva.livejournal.com
Конечно.

Date: 2003-11-23 09:18 am (UTC)
From: [identity profile] egmg.livejournal.com
спасибо

Date: 2003-11-23 09:20 am (UTC)
From: [identity profile] dimrub.livejournal.com
Первые 7 нулей можно не учитывать (и даже 8)

Date: 2003-11-23 10:26 am (UTC)
From: [identity profile] robinbobin.livejournal.com
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.

Date: 2003-11-23 10:31 am (UTC)
From: [identity profile] avva.livejournal.com
fignya... nikto nikogda ne izuchaet function generazii serial ###.

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

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


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

Советую не высказываться по поводу того, что "никогда никогда не делает" или "все всегда делают" в таких делах, это выглядит довольно глупо.

Date: 2003-11-23 10:37 am (UTC)
From: [identity profile] avva.livejournal.com
Это 128-битовая строка; именно такие строки получаются на выходе MD5. Посмотрел сейчас ещё раз специально на стандарт MD5; я не вижу там никаких гарантий того, что в начале строки не будет нулевых битов.
Page 1 of 4 << [1] [2] [3] [4] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
2829 30 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 1st, 2026 03:57 pm
Powered by Dreamwidth Studios