<< Предыдущая

стр. 38
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>

применяя только программные решения, невозможно. Если программа мо-
жет быть запущена, она может быть взломана.
Однако существуют идеи, способные значительно затруднить работу про-
тивника. В середине 2000 года в конференции новостей fido7.ni.crypt было
опубликовано сообщение, автором которого являлся человек под псевдони-
мом stpark. В сообщении перечислялось несколько интересных методов,
разработанных специалистами по защите и анализу программ для собствен-
ных нужд, не получивших открытой реализации и, возможно, именно по-
этому не взломанных. Далее приведены три из них:
• перекрестная проверка целостности исполняемого модуля и используе-
мых им динамически загружаемых библиотек;
• защита, выполняющаяся одновременно в нескольких потоках, где каж-
дый поток контролирует целостность кода программы, выявляет непреду-
смотренные задержки в выполнении других потоков и постоянно изме-
няет внутреннее состояние модуля защиты;
• применение виртуальных машин для выполнения специальным образом
обработанного кода.
Еще одна идея, которую собирштась реализовать (а может быть, уже и реа-
лизовала) компания Protection Technology, заключалась в разработке специ-
ального компилятора языка С, который бы создавал код, очень сложный
для дизассемблирования.
Смысл этой идеи в том, что даже простейшие операции можно записать та-
ким образом, что будет далеко не очевидно, что же они делают. И это очень
часто получается при включении оптимизации в компиляторе. Например,
эквивалентный ассемблерный текст следующей простейшей функции на
языке С приведен в листинге 23.1:
int divFn (int x) { return x / 10; )
Данная функция выполняет одну-единственную операцию — целочисленное
деление аргумента на 10.

! "Листинг 23.1. Функция целочисленного делении на 10 |

mov ecx, x
mov eax, 66666667h
imul ecx
mov eax, edx
266 Часть V. Заметки об исследовании средств защиты

sar eax, 2
mov ecx, еах
shr ecx, lFh
add eax, ecx
retn


А вот пример другой функции, ассемблерный код которой приведен
в листинге 23.2:
int caseFn (int х) { return x > 100 ? 15 : 25; }
Эта функция в зависимости от значения аргумента возвращает одно из двух
возможных значений.

Листин! '/•'•2. Функции выбора результата по значению аргумента

mov ecx, [esp+arg_0]
хог eax, eax
стпр ecx, 64h
al
setle
eax
dec
al, 0F6h
and
eax, 19h
add
retn


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


23.4. Защита данных
Несмотря на то, что на рынке полно откровенно плохих средств защиты
(которые, тем не менее, часто хорошо продаются), с обеспечением секрет-
ности научились приемлемо справляться многие разработчики. И все чаще
средства зашиты, встраиваемые в архиваторы и электронные таблицы, про-
граммы ведения финансовой истории и текстовые процессоры, позволяют
предотвратить раскрытие секретной информации даже самым сильным про-
тивником. Но беда в том, что пользователи не приучены правильно исполь-
зовать функции защиты. Для большинства простых людей предложение вы-
брать криптопровайдера, который будет использоваться для защиты данных,
равносильно предложению выбрать марку стали, из которой будут делать
гайки для закрепления двигателя автомобиля.
Здесь может быть два решения: или обучать пользователей, донося до них
правильное понимание того, что такое безопасность, или построить защиту
таким образом, чтобы пользователь просто не смог использовать короткий
ключ шифрования или легко подбираемый пароль. Но, к сожалению, ни
одно из этих решений работать не будет — не все пользователи хотят изу-
чать то, что они сами считают ненужным. А применение жестких политик
безопасности снижает совместимость и удобство использования (чем не все
готовы пожертвовать), а также порождает другие виды уязвимостей, напри-
мер пароли, записанные на бумаге и приклеенные к системному блоку.
С защитой цифрового контента ситуация более сложная. Задачи DRM яв-
ляются сравнительно новыми, но практически все попытки их решения
оказались неудачными. Частично это была вина разработчиков, частично
причиной явилась невозможность абсолютной зашиты данных при DRM.
Владельцы контента пытаются искать самые разные подходы к обеспечению
защиты. Потерпев неудачи в применении технических методов, они пустили
в ход законодательные. В дополнение к законам, запрещающим тиражиро-
вание информации, защищенной авторскими правами, появились законы,
по которым даже исследование технических средств защиты контента может
быть признано уголовным преступлением. Медиамагнаты пытаются провес-
ти и новые законы, по которым каждое электронное устройство должно бу-
дет иметь встроенный блок, отвечающий за контроль соблюдения цифровых
прав. А устройства, не имеющие подобного блока контроля (а это, напри-
мер, почти все персональные компьютеры), должны быть признаны неза-
конными.
Можно понять желание продавцов контента любым способом собрать
столько денег, сколько в состоянии заплатить пользователи, но для этого
268 Часть V. Заметки об исследовании средств защиты

совершенно необязательно превращать универсальный компьютер в узко-
специальное устройство для продажи звука и изображения. Можно попро-
бовать и другие модели.
Так еще несколько лет назад озвучивались идеи продавать электронные
книги не "в темную", как это делается сейчас (сначала заплати, а потом раз-
бирайся, нужна тебе эта книга или нет), а авансом. Например, первую главу
можно прочитать бесплатно. Но чтобы получить возможность читать сле-
дующую главу, необходимо оплатить предыдущую.
И не стоит делать таких жестких и порою бессмысленных ограничений на
использование тех же электронных книг. Пока электронные книги не станут
действительно удобными, мало кто будет их покупать. Уж лучше контроли-
ровать пути нелегального распространения с помощью стеганографии.
А в этом направлении сделано пока не очень много.


23.5. Методы анализа программ
Основное преимущество исследователя перед разработчиком — неограни-
ченность времени. В распоряжении разработчика есть период с момента за-
пуска проекта и до момента выхода готовой программы. Этот период может
длиться 2 недели, а может 3 года. Но именно за это время необходимо про-
думать и реализовать все необходимые средства защиты.
Исследователь получает систему защиты в свое распоряжение после того,
как разработка завершена. И, начиная с этого момента, он может пробовать
самые разные подходы для того, чтобы найти в защите слабое место. Иссле-
дователь не ограничен во времени — с программой ничего не случится ни
через год, ни через 10 лет. В крайнем случае, всегда можно отключить ком-
пьютер от сети, отвести часы назад и восстановить конфигурацию системы
с предварительно сохраненной резервной копии.
Разработчик может выпускать новые версии программ, добавляя или моди-
фицируя их защитные механизмы, но он не может исправить уже сущест-
вующую версию программы. А его противник, исследователь, имеет воз-
можность обновлять свой инструментарий и навыки до тех пор, пока не
найдет правильный подход.
То есть, несмотря на то, что разработчик всегда может оказаться впереди
исследователя (о чем очень любят заявлять некоторые производители
средств защиты от несанкционированного тиражирования программного
обеспечения), их преимущество всегда носит локальный, временный харак-
тер. Для каждой защиты рано или поздно отыскивается метод противодей-
ствия, а программы, использующие такую защиту, оказываются взломаны.
Глава 23. Чего ожидать в будущем 269

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




I
Благодарности


Книга закончена, и хочется сказать спасибо всем тем, кто способствовал ее
скорейшему появлению на свет, а именно:
руководителям и работникам компании ElcomSoft Co. Ltd.
(www.elcomsoft.cora) за моральную поддержку, практическую помощь и воз-
можность писать книгу в рабочее время;
кафедре информационной безопасности МГТУ им. Баумана
(www.iu8.bmstu.ru) за создание идеальных условий для преподавания;
работникам компании SmaitLine, Inc. (www.protect-me.com) Ашоту Оганеся-
ну (Ashot Oganesyan) за консультации в NT Drivers Development и Станисла-
ву Винокурову (Stanislav Vinokurov) за подборку информации о протекторах;
посетителям форума Reversing.net за сложные вопросы и интересные ответы;
Брюсу Шнайеру (Bruce Schneier), www.counterpane.com, за замечательные
книги, выпуски CRYPTOGRAM и тяжелую работу по популяризации идей
криптографии и информационной безопасности;
Эрику Янгу (Eric Young) и Тиму Хадсону (Tim Hudson) за великолепную крип-
тографическую библиотеку SSLeay, распространяемую в исходных текстах;
работникам издательства БХВ-Петербург, сделавшим все возможное для
того, чтобы эта книга попала в руки читателей;
читателям, для которых писалась эта книга и которые, надеюсь, нашли
в ней для себя много интересного и полезного.
Список
использованных источников

1. Biham E., Kocher P. "A Known Plaintext Attack on the PKZIP Stream
Cipher". Fast Software Encryption 2, Proceedings of the Leuven Workshop,
LNCS 1008, December 1994.
2. Cerven P. Crackproof Your Software — The Best Ways to Protect Your Soft-
ware Against Crackers — San Francisco: NO STARCH PRESS, 2002 —
272 pages.
3. Ferguson N., Schneier B. Practical Cryptography — John Wiley & Sons,
2003 - 432 pages.
4. Menezes A. J., van Oorschot P. C, Vanstone S. A. Handbook of Applied
Cryptography — CRC Press, 1996 — 816 pages.
5. Вернет С, Пэйн С. Криптография. Официальное руководство RSA
Security. — М.: Бином-Пресс, 2002 — 384 с.
6. Зегжда Д. П., Ивашко А. М. Основы безопасности информационных
систем. — М.: Горячая линия — Телеком, 2000 — 452 с.
7. Иванов М. А. Криптографические методы защиты информации в ком-
пьютерных системах и сетях. — М.: КУДИЦ-ОБРАЗ, 2001 — 368 с.
8. Нечаев В. И. Элементы криптографии (Основы теории защиты
информации): Учеб. пособие для ун-тов и педвузов / Под ред.
В. А. Садовничего — М.: Высш. шк., 1999 — 109 с.
9. Чмора А. Л. Современная прикладная криптография. 2-е изд., стер. —
М : Гелиос АРВ, 2002 — 256 с.
10. Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исход-
ные тексты на языке Си. — М.: Издательство ТРИУМФ, 2002 — 816 с.
11. http://aspack.corn/asprotect.html — ASPACK SOFTWARE— Best Choice
Compression and Protection Tools for Software Developers.
12. http://cryptome.org/ms-drm-os.htm — CRYPTOME. Microsoft Digital Rights
Management Operating System — US Patent No. 6,330,670.
274 Список использованных источников

13. http://news.bbc.co.Uk/2/hi/technology/3202116.stm — ВВС News. Questions
cloud cyber crime cases.
14. http://pilorama.cora.ru/library/rflirt.html — Ilfak Guilfanov. FLIRT — Fast
Library Identification and Recognition Technology.
15. http://research.microsoft.com/sn/detours — Microsoft Research. Detours.
16. http://resistor.topgamers.net — khaciez. Resistor Challenge.
17. http://retro.icequake.net/dob — Ryan Underwood. The Central Point Option
Board.
18. http://securityhorizon.com/whitepapers/archives/lanman.html — Brian. NT /
LANMAN Password Security Discussion.
19. http://triade.studentenweb.org/GInt/gint.html — Triade systems — GInt Page.
20. http://uozp.akcentplus.ru/16.htm — Общества защиты прав потребителей
г. Уфы. Статья 16. Недействительность условий договора, ущемляющих
права потребителя.
21. http://www.ahead.de/en/ — Ahead Software. Nero.
22. http://www.anticracking.sk/elicz/export.htm — EliCZ's Export (ApiHooks 5.6).
23. http://www.arjsoftware.com — ARJ Software, Inc.
24. http://www.atstake.com/research/advisories/1999/95replay.txt —
weld@10pht.com. Win95/98 File Sharing Impersonation.
25. http://www.average.org/freecrypto — Использование "сильной" крипто-
графии в России.
26. http://www.cacr.math.uwaterloo.ca/hac — Centre for Applied Cryptographic
Research. Handbook of Applied Cryptography.
27. http://www.caesum.com/game/index.php — Cronos. Electrica the Puzzle
Challenge.
28. http://www.casi.org.uk/discuss/2003/msg00457.html — Glen Rangwala. [casi]
Intelligence? the British dossier on Iraq's security infrastructure.
29. http://www.computer.org/security/garfinkel.pdf — Simson L. Garfinkel, Abhi
Shelat. Remembrance of Data Passed: A Study of Disk Sanitization Practices.
30. http://www.computerbytesman.com/privacy/blair.htm — Richard M. Smith.
Microsoft Word bytes Tony Blair in the butt.
31. http://www.convertlit.com — Dan A. Jackson. Convert LIT.
32. http://www.cryptonessie.org — New European Schemes for Signature, Integrity,
and Encryption.

<< Предыдущая

стр. 38
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>