Анимация
JavaScript
|
Главная Библионтека 2.10. Особенности программной реализации алгоритмов защиты информации Одной из основных причин компрометации систем защиты является неправильная реализация алгоритмов защиты информации, иначе говоря, наличие дефектов в программном коде. Печальная действительность такова, что ошибки в ПО будут возникать всегда. Основная причина ошибок - сложность современных компьютерных систем; сложные системы по определению менее надежные; сложные системы обязательно модульные, а взаимодействие модулей создает дополнительные возможности для взлома защиты; н сложные системы трудны для понимания их устройства, а это является необходимым условием безопасного управления ими; Ш сложные системы трудны для анализа из-за огромного числа вариантов взаимодействия отдельных компонентов. Большинство дефектов в ПО не приводит к разрушительным последствиям. Ошибки, влияющие на выполнение основной задачи, относительно легко обнаруживаются на этапе тестирования. Значительно сложнее обнаружить дефекты в ПО системы безопасности. Ошибки, влияющие на вычисления, заметны, в то время как изъяны системы защиты могут долгое время оставаться невидимыми. Более того, эти дефекты вовсе не обязательно находятся в коде, относящемся к системе безопасности. Они могут присутствовать повсюду: в интерфейсе пользователя, в гфограмме обработки ошибок, в любом другом месте, иначе говоря, на защищенность системы может повлиять любая самая безобидная с виду профамма, не имеющая никакого отношения к компьютерной безопасности. Распространенная ошибка разработчиков ПО - расчет на "хорошего" пользователя, который будет обращаться с профаммой именно так, как задумано автором. Например, в результате отсутствия или неправильной обработки нестандартных ситуаций, которые могут иметь место при работе профаммы (неопределенный ввод, ошибки пользователя, сбой и пр.), у противника появляется возможность искусственно вызвать в системе появление такой нестандартной ситуации, чтобы выполнить нужные ему действия: остаться в системе с правами привилегированного пользователя или заставить процессор выпоЛ нить произвольный код. Наконец, относительно недавно получили распространение так называемые атаки ч рез побочные каналы. Для ПО наиболее опасными являются временные атаки. Напр" мер, при взломе криптоалгоритмов противник вместо того, чтобы анализировать толь!*" lfsr2m - процедура выполнения одного такта работы LFSR без использования команд условного перехода =========== и арифметических операций. ============================ Вход: AL - текущее состояние регистра, ================ выход; AL - новое состояние регистра ================== для ф(х)= X + X + PROC cbw shl al,l and ah,Feedback X + 1 Feedback = 2Bh рдные и выходные данные, обращает внимание также на скорость выполнения объек-атаки отдельных операций. Различные трассы выполнения алгоритма работы про-.раммы, а также команды, выполняемые процессором, требуют разного времени. 3 результате, анализируя временные характеристики отдельных шагов алгоритма, можно делать предположения о значениях аргументов, т. е. исходных данных или ключе. Например, можно провести следующую временную атаку на профамму проверки пароля- Берем случайный пароль и варьируем только первый символ. Предположим, что ,оя(но использовать только строчные и прописные английские буквы, 10 цифровых символов и некоторые знаки пунктуации (всего около 70 вариантов паролей с различным первым символом). Скорее всего, один из паролей будет проверяться дольше других, прежде чем будет отклонен. Можно предположить, что это пароль с правильным первым символом. Повторим то же самое с остальными символами. Если атакуется 8-символьный пароль, то нужно проверить всего 560 паролей и измерить соответствующие временные задержки. Приблизительный анализ уязвимостей различных операций с точки зрения временных характеристик дает следующие результаты: 1 поиск по таблицам - неуязвим для временных атак; фиксированные сдвиги - неуязвимы для временных атак; булевы операции - неуязвимы для временных атак; сложение/вычитание - трудно защитить от временных атак; умножение/деление - наиболее уязвимые для временных атак операции. Стойкость к временным атакам можно повысить внесением неопределенности i длительность работы отдельных актов алгоритма программы, например сделать ак, чтобы случайное время выполнения подпрограмм было равномерно распреде-1ено на интервале [t„i„, t„„]. Ниже приведен пример процедуры одного такта работы восьмиразрядного генератора Галуа, время работы которой не зависит от исходных данных из-за отсутствия арифме-ческих команд и команд условных переходов. lfsr2m хог al,ah ENDP Задания для самостоятельной работы 1) Разработать подпрограмму для нахождения табличным способом элемента под GF(2*), обратного заданному. 2) Разработать подпрофамму для формирования 32-разрядного CRC-кода области памя-ти с использованием 32-канального CRC-генератора, соответствующего (р(х) = + х + 1 (контрольный код снимается с младщих разрядов генератора). 3) Используя смешанное программирование, разработать программу для определения содержимого таблищ>1 стохастического преобразования на основе заданного фраг. мента ПСП конечной длины, полученного с выхода 8-разрядного RFSR (N = 4). 4) Разработать подпрограмму выполнения преобразования (а - Mix Word (рис. 2.9.6), б -MixLayer (рис. 2.9.8)). Параметры должны передаваться через стек. 5) Разработать без использования команд условного перехода и арифметических команд подпрофамму выполнения следующего преобразования (а - умножения не табличным способом двух элементов поля GF(2); б - поиска не табличным способом элемента поля GF(2), обратного заданному; в - 8-разрядного стохастического преобразования; г - генеравд1И элемента ПСП по алгоритму RFSR для N = 4; д -преобразования MixLayer (рис. 2.9.8)). 6) Разработать подпрофамму выполнения следующего преобразования (а - умножения не табличным способом двух элементов поля GF(28); б - поиска не табличным способом элемента поля GF(28), обратного заданному; в - 8-разрядного стохастического преобразования; г - генерации элемента ПСП по алгоритму RFSR для N = 4; д - преобразования MixLayer, случайное время выполнения которого равномерно распределено на интервале [tmin, tmax]. 7) Разработать подпрофамму определения байта, который необходимо добавить к заданной последовательности байтов, чтобы получить требуемое значение кода CRC-8 (ф(х) = X* + х + х + х + 1). 8) Разработать профамму, которая замещает фрагмент кода заданного произвольного сот-файла от его точки входа кодом функций вывода на экран некоего сообщения й завершения профаммы таким образом, чтобы код CRC-32 и размер сот-файла остались неизменными. 9) Разработать программную модель (резидентный обработчик прерывания 60h) генератора слУ" чайных и псевдослучайных последовательностей (8-разрядный RFSR, N = 4) с функциями: ah = О - профаммный сброс; ah = 1 - создание таблицы стохастического преобразования, на входе ds:si - аДР* ключевой последовательности байтов, сх - размер последовательности (в байтах)» выходе - сформированные таблицы Addr и Н; (•/\ава 2- Программирование алгоритмов защиты информации = 2 - формирование контрольного кода, на входе ds:si - адрес обрабатываем последовательности байтов, сх - размер последовательности (в байтах), на вых1 (ix:ax - сформированный контрольный код; gj, = 3 - чтение элемента ПСП (байта) и один такт работы RFSR; gji = 4 - инициализация RFSR случайным значением Count, где Count - значе! с выхода профаммного счетчика, изменяющего свое состояние по каждому преры нию от таймера; его состояние фиксируется в момент профаммного сброса RFSR. ]0) Используя профаммную модель генератора случайных последовательностей (СП) задания 9, разработать пермутирующую модульную профамму, в которой поря; выполнения модулей определяется элементами СП (функция профаммы и состав г дулей выбираются самостоятельно). !1) Разработать профамму для стеганофафического скрытия текстовой строки внут текстового файла. Скрытие осуществляется путем кодирования расстояния ме» словами файла-контейнера (О - один пробел, 1 - два пробела). Текстовая строка В1 дится с клавиатуры, имя файла контейнера задается при запуске программы. Пре, смотреть режим извлечения скрытой информации. 2) Используя смешанное профаммирование, разработать профамму для стеганограс] ческого скрытия информации в bmp-файле. На входе - файл-контейнер и скрываем файл, на выходе - результирующий файл. Информация скрывается в младших раз дах байтов Red, Green и Blue. Предусмотреть равномерное распределение скрыв мой информации по файлу-контейнеру с использованием генератора ПСП. Пре, смотреть режим извлечения скрытой информации. 3) Используя смешанное профаммирование, разработать профамму для renepaL ПСП заданной разрядности (бит, 2 бита, 3 бита, 4 бита, байт, 2 байта, 4 байта, 64 б; та ) и длины (до 217 байт) с использованием алгоритма GATE-2 и записи ее в фа Ключевая информация, необходимая для работы алгоритма, считывается из файла. Глава 3. Программные средства защиты информации Глава 3 Программные средства защиты информации в данном разделе рассматриваются чисто программные средства защиты информ, -ции, надежность которых определяется знанием последних достижений общей теориц программирования и умением разработчика использовать специальные приемы. 3.1. Защита программ от исследования Одним из наиболее качественных методов защиты профамм является криптографическое преобразование информации. Однако исследование подсистемы шифрования под отладчиком или дизассемблером позволяет взломщику понять алгоритм криптофафической защиты и повторить его. Поэтому шифрование должно применяться совместно с защитой от статического и динамического анализа кода профаммы. Важную роль при этом ифает стиль программирования. В отличие от общепринятых "наглядности" и "структурности", для защитных механизмов следует применять "изощренность", т. е. стиль, позволяющий получить сложный и запутанный исполняемый модуль. 3.1.1. Введение в последнее время все чаще раздаются утверждения, что противоотладочные подсистемы морально устарели, так как хакерский инструментарий-де позволяет пройти любую защиту от исследования профаммного кода. И вообще, неснимаемых защит не существует. Действительно, любую систему защиты можно вскрыть за конечное время - это следует из того факта, что ее код однозначно интерпретируется процессором. Противник может исследовать профамму в виртуальной системе, где эмулируются процессор, память, внешние устройства, операционная среда и т. д. В этой ситуации большинство приемов противодействия оказываются неэффективными; однако, какой бы качественной не была эмуляция среды, все равно последняя отличается от истинной (например, из-за невозможности точной эмуляции временных характеристик аппаратуры, наличи" недокументированных прерываний и т. п.), и защищаемая профамма может это распознать со всеми вытекающими отсюда последствиями. Можно выделить типичные ошибки разработчиков профаммных систем защиты: ограмма защищается только от средств статического анализа, в результате она ко изучается динамически, и наоборот; g защита, вскрываемая изменением одного байта, - в момент, когда система заи сравнивает контрольную информацию с эталонной, простым изменением комг перехода она направляется по правильному пути; f аналогичная ситуация имеет место, когда результат работы функции, возвращаю текущую контрольную информацию, может быть подменен на эталонное (ожидае; значение (например, с помощью перехвата соответствующего прерывания); щ после расшифровки системой защиты критичного кода он становится доступен и жет быть скопирован в другое место памяти или на диск в момент или вскоре п передачи управления на него. Итак неснимаемых защит действительно нет и быть не может, но задачу сделать не ходимую для любого отладчика (в сочетании с умным хакером) защиту никто никогда ставил. Задача разработчика защит от исследования может состоять в том, чтобы I либо вынудить противника потратить на снятие защиты время, достаточное для i нятия контрмер; либо гарантировать, что ресурсы, потраченные для ее вскрытия, будут сопостав! с написанием защищенной программы заново. Другая группа возражений сводится к тому, нет смысла создавать защиты DOS, так как якобы DOS устарела, DOS умерла. Однако это логика офисного г граммиста! Действительно, практически ни в одном офисе под DOS уже не раб( ют. Но под ней работают программы компьютерных систем ответственного цел< го назначения - а в защите от исследования именно они нуждаются в nepi очередь! От взлома офисной программы пострадает только интеллектуальный с ственник, который недополучит сверхприбыль. Взломом программы ответственн назначения могут воспользоваться диверсанты или террористы, а это уже гро катастрофой. Итак, мы пишем профамму (или профаммную подсистему), предназначенную ответственного целевого применения. Соответственно, мы должны учитывать существ( чие вероятного противника, который хотел бы исследовать наш код, чтобы в дальней! для достижения нужных ему целей изменить алгоритм функционирования профаммы. •1.2. Обзор хакерского инструментария Для исследования и вскрытия профамм хакерами применяются разнообразные п "Раммные средства, которые можно разделить на несколько категорий: * отладчики реального режима (InSight, Meffistofel, Turbo Debugger (TD) и др.); * отладчики защищенного режима (Soft-Ice, DeGlucker и др.); 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [ 35 ] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |