Программно-аппаратная защита информации

Автор работы: Пользователь скрыл имя, 20 Февраля 2011 в 14:59, курс лекций

Описание работы

Программные и аппаратные механизмы защиты

Файлы: 1 файл

Аникин_Катасёв_Кривилёв_ПАЗИ_Конспекты_лекций_2008.doc

— 1.34 Мб (Скачать файл)

   HASP Envelopment

«+» 1. простота использования и простота внедрения

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

«-» 1. используется детерминированный алгоритм, который могут попытаться вскрыть

         2. жесткая реакция  защиты программы на несовпадение  характеристик среды (отказ в запуске)

   Блок сравнения характеристик среды

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

   Для того, чтобы затруднить злоумышленнику атаку на этот блок, данный блок должен отвечать ряду требований:

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

Блок  установки характеристик  среды.

Наиболее уязвимым местом данного блока является способ сбора характеристик среды и способ передачи их от ПА среды блока установки и от блока установки к блоку сравнения. Если характеристики среды по открытому каналу, хранятся в открытых объектах, то такой способ защиты не является стабильным. 

Лекция  № 7

Электронные ключи. Защита программ с помощью электронных  ключей HASP

 

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

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

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

   Ключи являются разработкой израильской  фирмы Aladdin и используются для ЗПО от НС использования: предотвращают запуск программ при отсутствии электронных ключей, ограничивают максимальное количество копии, одновременный запуск программ в сети, ограничивают время работы программы и ограничивают максимальное количество её запусков.

   Типы  электронных ключей HASP.

    1. HASP4 Standart
    2. HASP4 Memo
    3. HASP4 Time
    4. HASP4 Net
 

    HASP Standard

   Самая простая модификация электронных  ключей HASP. Включает в себя только функцию шифрования и связанную с ней функцию отклика. Стоимость – 13$. Может реализовывать следующие функции по защите:

    1. проверять наличие электронного ключа
    2. подавать на вход функцию отклика различные значения и сравнивать ответ с эталонными значениями
    3. использовать функцию шифрования для шифрования/дешифрования исполнительного кода программы или используемых данных.

    Основные  элементы защиты:

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

    HASP Memo

   Данные  ключи включают в себя все функции  HASP Standart. Кроме того, имеют уникальный идентификационный номер и энергонезависимую память определенного объёма.

   2 типа по объёму энергонезависимой памяти:

    • HASP4 М1 – 112 байт
    • HASP4 М4 – 496 байт

   Кроме тех функций, которые можно реализовать  с помощью HASP4 Standart, эти ключи могут:

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

   HASP Time

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

   Включает  в себя встроенный календарь с  датой и временем. Используется для  защиты ПО по срокам использования.

   HASP Net

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

   

   Способы защиты программного обеспечения с  помощью электронных  ключей HASP

   Можно реализовывать с помощью встроенных и пристыковочных механизмов.

   Встроенные  – HASP API.

   Пристыковочные  HASP Envelopment.

   Электронные ключи HASP Memo, Time и Net включают в себя подсистему полного управления доступом (FAS), позволяющую защитить одновременно несколько программ одного производителя, и ограничить их в зависимости от типа ключей по количеству запусков, по сроку действия, по количеству одновременно запущенных копий.

   Электронные ключи HASP Memo, Time и Net обладают возможностью их удаленного перепрограммирования с помощью подсистемы RUS.

   Для реализации удаленного управления формируется 2 утилиты: продавца и покупателя. Они формируются под конкретный электронный ключ, привязывающийся к его идентификационному номеру.

Pattern Code Security (Механизм защиты структурного кода)

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

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

Лекция  № 8

Защита программного обеспечения от исследования

 

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

      В первом случае злоумышленник пытается получить листинг программы на каком-либо языке для возможности дальнейшего изучения и исследования логики защитных механизмов с использованием таких средств как Ida Pro, Soucer.

   Большая часть средств защиты от отладки  основывается на обнаружении отладчиков в оперативной памяти с целью  дальнейшего противодействия отладке, либо на включенных в исполняемый код механизмов, которые не могут быть корректно выполнены под отладкой в режиме трассировки.  Работа отладчиков в реальном режиме процессора основана на прерываниях int1, int3, которые устанавливают точки прерывания, в защищенном режиме работа отладчиков основана на использовании регистра отладки dr0 – dr7.

    Приемы защиты:

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

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

    push ss

    pop ss

    push f

    pop ax

    test ax, 100h

    je debugger detected 

  1. переопределение стека в 0. Вершина стека «растет» сверху вниз, поэтому после определения  ее в ноль, любая попытка положить что-то в стек приведет к его переполению  и аварийному завершению работы программы. В том числе не может быть вызвано ни одно прерывание.
  2. Контроль исполняемого кода. Установка точки прерывания в реальном режиме процессора требует модификации кода программы для защиты от установки точек прерывания можно периодически контролировать исполняемый код на целостность.
  3. В защищенном режиме можно воздействовать на регистры отладки dr0-dr7,  например, периодически обнулять или использовать для своих нужд.
  4. Обнаружение наличия отладчиков в оперативной среде путем использования преднамеренно оставленных в них «дыр»
  5. Использование недокументированных возможностей процессора:

    1. mov ax, cs:[100]=ds:es:cs:mov ax, [100]

    2. cs:nop

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

Противодействие средствам статического анализа:

  1. Шифрование исполняемого кода программы на хороших ключах. Универсальное и наиболее стойкое средство защиты.
  2. Самомодифицирование кода программы. Замена одних участков кода программы на другие.
  3. Внедрение между инструкциями некой области данных

Информация о работе Программно-аппаратная защита информации