Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Электронные ключи серии HASP 4




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

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

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

Рис. 37. Внешний вид электронных ключей HASP

Базовой основой ключей HASP является специализированная заказная микросхема (ASIC – Application Specific Integrated Circuit), имеющая уникальный для каждого ключа алгоритм работы. В процессе своего исполнения защищённая программа опрашивает подключенный к ПК HASP. Если HASP возвращает правильные ответы, работает по требуемому алгоритму и обладает требуемыми эталонными характеристиками, то программа выполняется нормально. В противном случае реализуется определенная реакция на несанкционированное использование: запуск в демонстрационном режиме, блокировка отдельных функций, отказ в запуске и т.д.

Семейство ключей HASP включает в себя следующие модели:

1. HASP4 Standard.

2. MemoHASP.

3. TimeHASP.

4. NetHASP.

HASP4 Standard

Данный тип ключей является простейшей модификацией электронных ключей HASP. Основным элементом их защиты является аппаратно реализованная в них на ASIC микросхеме функция шифрования и связанная с ней функция отклика f (x), принимающая на вход 16-битный аргумент и формирующая на выходе четыре 16-битных значения.

Для предотвращения несанкционированного использования программного обеспечения система защиты может осуществлять:

· проверку наличия HASP Standard;

· проверку соответствия выходов, формируемых функцией отклика f(x) для различных значений x, эталонным значениям;

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

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

MemoHASP

Основным отличием данного типа ключей от HASP4 Standard является наличие встроенной в них энергонезависимой памяти (EEPROM), доступной для чтения и записи во время выполнения защищенной программы. Каждому из данных типов ключей присваивается свой уникальный 32-битовый идентификационный номер ID

Кроме подходов к защите ПО, свойственных HASP Standard, с помощью MemoHASP могут быть реализованы, например, следующие подходы:

1. Хранение в энергонезависимой памяти MemoHASP конфиденциальной информации – ключей шифрования, части исполняемого кода и т.д.

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

3. Хранение в энергонезависимой памяти информации о количестве запусков программы, либо об оставшемся количестве запусков. Данный подход актуален при создании демонстрационных версий программ, работа с которыми ограничена количеством запусков.

TimeHASP

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

NetHASP

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

Существует несколько моделей ключей HASP4 Net, которые позволяют лицензировать программы для 5, 10, 20, 50, 100 и для неограниченного количества пользователей. Все они могут защищать до 112 различных программ (или модулей программы). Номер модели определяет максимальное число рабочих мест для любой из этих программ. Например, HASP4 Net-5 защищает до 112 программ, и каждая программа может лицензироваться на количество рабочих мест от нуля до пяти (например, три).

Работа с NetHASP осуществляется через менеджер лицензий.

Менеджер лицензий HASP4 Net – это программа-посредник, обеспечивающая связь защищённых приложений с сетевым ключом. При этом сам ключ может стоять на любом компьютере в сети – выделенном или невыделенном файл-сервере или на любой станции. Чтобы использовать в сети сервис NetHASP, нужно выбрать рабочую станцию, присоединить к ней ключ NetHASP и загрузить на ней менеджер лицензий NetHASP.

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

Когда защищённое приложение стартует на компьютере, подключенном к сети, оно обращается к менеджеру лицензий и запрашивает разрешение выполняться дальше (NetHASP LOGIN), для отключения от сервера используется процедура (NetHASP LOGOUT). При этом менеджер лицензий проверяет соблюдение ряда условий:

· наличие необходимого ключа HASP4 Net на машине, где он загружен;

· наличие лицензии на выполнение данной программы;

· лимит рабочих мест для этой программы на данный момент не исчерпан.

Если результаты всех проверок положительны, менеджер лицензий даёт запросившей его программе разрешение на выполнение и заносит данные о ней в журнал доступа.

Менеджер лицензий ведёт журнал доступа, в котором отмечаются все подключившиеся приложения, выполнившие LOGIN. В журнале содержатся сведения о том, какая программа и на какой рабочей станции была запущена. Эти данные сохраняются в журнале до тех пор, пока программа не выполнит отключение (LOGOUT). При помощи журнала доступа менеджер лицензий отслеживает количество машин, на которых одновременно выполняется защищённая программа, и не допускает превышения максимального их числа, заданного разработчиком программы.

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

В таблице 9 представлены основные элементы электронных ключей HASP и типы HASP, в которых данные элементы присутствуют.

Таб. 9. Элементы электронных ключей HASP

Элемент Описание Типы ключей
Серия Серия, присваиваемая каждому из производителей защищаемого продукта, либо каждому из продуктов. Различные серии ключей обладают различными функциями шифрования и различными кодами доступа. Серия не может быть программным путем прочитана, либо записана в HASP HASP4 Standard, MemoHASP, TimeHASP, NetHASP
Идентификационный номер ID Номер, уникально идентифицирующий каждый из выпущенных ключей HASP. Прошивается единожды в заводских условиях. Может быть прочитан программным путём MemoHASP, TimeHASP, NetHASP
Функция шифрования Аппаратно реализованная функция в HASP, позволяющая шифровать и дешифровывать информацию HASP4 Standard, MemoHASP, TimeHASP, NetHASP
Энергонезависимая память MEMO Защищенная по доступу память для долговременного хранения конфиденциальной информации. В нее могут быть программным путем записана информация, либо прочитана из неё MemoHASP, TimeHASP, NetHASP
Энергонезависимая память TIME MEMO Защищённая по доступу память для долговременного хранения информации, используемой TimeHASP при защите программного обеспечения по времени работы TimeHASP
Таймер Таймер, используемый для защиты программ по времени своей работы. Ограничение по доступу к таймеру с помощью кодов доступа HASP не позволяет злоумышленнику несанкционированно использовать программу путём корректировки таймера TimeHASP

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

1. HASP API (с помощью API функций).

2. Пакетный режим (HASP Envelope).

Первый способ защиты используется для встраивания защитных механизмов в исходные тексты. Фирма Aladdin предлагает набор функций для взаимодействия с HASP практически для всех платформ. Сам код API функций защищён и зашифрован. С помощью данных функций можно обратиться к HASP из любой точки программы и на основании проведённых проверок предпринять необходимые шаги. Использование API функций позволяет программировать разработчику любую реакцию на несанкционированный запуск.

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

При защите ПО более предпочтительно одновременное использование как первого, так и второго способа.

HASP API

Все функции API HASP (кроме NetHASP) вызываются через единую функцию hasp(), которая имеет следующий синтаксис

Hasp(Service, SeedCode, LptNum, Pass1, Pass2, Par1, Par2, Par3, Par4)

Для NetHASP та же функция имеет следующий формат

Hasp(Service, SeedCode, ProgNum, Pass1, Pass2, Par1, Par2, Par3, Par4)

Здесь

Service – номер вызываемой функции (и соответствующей ей операции).

LptNum – номер параллельного порта, к которому подключен HASP (если 0, то драйвер его ищет автоматически, 1 – LPT1, 2 – LPT2, 3 – LPT3, 201-255 – определённый ключ HASP для порта USB).

SeedCode – значение, посылаемое в функцию отклика f (x).

Pass, Pass2 – пароль для HASP. Он должен быть указан при доступе ко всем функциям, кроме функции проверки наличия HASP.

Par1, Par2, Par3, Par4 – параметры, через которые передаются значения в HASP и через которые значения возвращаются.

Система удаленного обновления (RUS)

Система удаленного обновления (Remote Update System – RUS) представляет собой утилиту, позволяющую безопасным образом удаленно обновить содержимое ключей HASP у пользователя без необходимости раскрытия паролей. Эта возможность позволяет отказаться от необходимости отправки разработчиком нового ключа HASP, когда покупатель желает обновить его содержимое.

Использование RUS позволяет, например, принять разработчиком ПО оплату от покупателя, после чего удаленно разблокировать запрет использования определенного модуля. Это позволяет использовать так называемую концепцию многоуровневого лицензирования.

Технология применения утилиты RUS включает в себя 2 этапа:

1. Создание утилиты RUS.

2. Обновление памяти ключей у пользователя.

С помощью утилиты RUS продавец создает две утилиты – утилиту продавца и утилиту пользователя.

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

Чтобы обновить память ключа HASP выполняются следующие действия.

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

2. Разработчик вводит идентификатор и обновляемые данные в утилиту Продавца.

3. Разработчик генерирует пароли RUS в утилите Продавца и передаёт их пользователю.

4. Пользователь вводит эти пароли в утилиту Пользователя и обновляет память своего ключа HASP.

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

Модель защиты структурным кодом (PCS)

Защита структурным кодом (Pattern Code Security – PCS) является средством, значительно повышающим защищенность приложения, защищаемого с помощью электронных ключей HASP.

Защита структурным кодом реализуется в процессе защиты с помощью HASP API. Использование PCS возможно лишь при наличии доступа к исходным текстам защищаемого приложения.

Защита структурным кодом осуществляет последовательность скрытых вызовов процедуры hasp(), не включая эти вызовы в исходный код явно. После каждого вызова процедуры hasp() происходит переключение на следующий скрытый вызов. Если вызов hasp() вдруг удален из защищенной программы, скрытые вызовы не выполняются, а это означает, что кто-то вмешался в работу программы. Тем самым PCS не дает удалить либо «заклеить» обращения к процедуре hasp().

Можно определить до 25 шаблонов в исходном коде. Каждый раз, когда вызывается процедура hasp(), переключается столько скрытых вызовов, сколько определено шаблонов.

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

Каждый вызов процедуры hasp() автоматически обновляет все шаблоны в коде программы, их после выхода из функции можно проверить. Если динамически изменять в шаблонах значения входных переменных, то автоматически будут меняться и выходные. Аналогично, можно изменять и значения сервисов.

Преимущества использования PCS:

1. Скрывание обращения к HASP.

2. Трассировка вызовов hasp() для шаблонов практически невозможна, так как их нет в исходном коде.

3. Легче обнаруживается вмешательство извне (если процедуру отключили). Если вызов hasp() будет удалён, то шаблоны не обновятся, а это значит – кто-то вмешался в работу приложения.

4. Препятствует эмуляции процедуре hasp().

Рекомендации по наиболее надежной защите с помощью HASP

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

Для более надежной защиты ПО от несанкционированного использования с помощью HASP рекомендуется использовать следующие приёмы.

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

2. Использовать больше вызовов hasp() и шаблонов PCS. Это создаст большие проблемы для взломщика в понимании схемы защиты и атаках на нее. Необходимо как можно больше рассеивать данные вызовы по всему приложению, чтобы затруднить анализ.

3. Шифровать внутренние и внешние данные защищаемого приложения. Дешифровку проводить на ключе HASP. В данном случае взломщику нужно будет не только взломать приложение, но и дешифровать данные. Нет необходимости шифровать все используемые приложением данные, но некоторые ключевые данные можно зашифровать. Объектом шифрования может быть все то, что оказывает влияние на основные функции приложения.

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

5. Разделять в коде программы шаги вызова процедуры hasp(), анализа ответных значений, возвращенных данной процедурой, и реакцию программы на результат анализа. В данном случае их хуже трассировать, нежели последовательные шаги. Например, можно проверять наличие ключа, когда пользователь щелкает мышью по определенной опции меню, после этого при сбое дать ему немного поработать, а затем выдать сообщение об ошибке. Это позволит скрыть действительное место проверки HASP.

6. Использование функционирования программы в качестве ответа на отсутствие HASP. Можно использовать целый ряд реакций на неприсоединение нужного ключа. Наиболее простое – вывод сообщения «HASP not FOUND», однако это подсказывает, что делалась проверка ключа. Лучше запрограммировать другую реакцию, например, отключить клавиатуру. После подсоединения ключа клавиатура включается.

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




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 2914; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.033 сек.