22 4. Протоколирование | Телекоммуникации вчера, сегодня, завтра

Последовательность действий при создании объекта радиосвязи

Бланк формы №1 ТАКТИКО-ТЕХНИЧЕСКИЕ ДАННЫЕ РЭС

Поставка оборудования обеспеченного радиочастотами

Витрина



22 4. Протоколирование

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

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

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

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

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

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

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



Поиск по сайту


Смотрите также