Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Искусство защиты и взлома информации / Скляров Д.В. Искусство защиты и взлома информации

.pdf
Скачиваний:
366
Добавлен:
02.05.2014
Размер:
2.63 Mб
Скачать

258

Часть V. Заметки об исследовании средств защиты

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

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

Чтобы получить возможность протоколирования, необходимо перехватить все обращения к криптографическим функциям. Это может быть выполнено разными способами, например при помощи запуска программы под своим отладчиком, реализованным средствами Microsoft Debugging API.

Другой способ — модифицировать образ программы в памяти таким образом, чтобы при обращении к криптографическим примитивам управление поступало к специальным функциям-переходникам. Функция-переходник должна записать в протокол все аргументы запроса, вызвать оригинальную криптографическую функцию, к которой производится обращение, и сохранить в протокол возвращенные результаты. Обычно при реализации этого способа весь код, отвечающий за протоколирование, компилируется в виде отдельной динамически загружаемой библиотеки. А эта библиотека подключается к исследуемой программе с помощью технологии DLL Injection — внедрение DLL в адресное пространство процесса.

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

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

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

Глава22.Реконструкциякриптографическихпротоколов

 

259

22.5. Внесение искажений

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

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

Если же протокол является единственной секретной частью "черного ящика", реконструкция протокола, фактически, означает полный взлом защиты.

Глава 23

Чего ожидать в будущем

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

23.1.Концепциибезопасности

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

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

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