Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
защита информации 2.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1.21 Mб
Скачать

Лекция 16. Методы защиты от несанкционированного использования программ

План лекции:

  1. Необходимость защиты программ от несанкционированного использования

  2. Регистрационные коды для программ

  3. Привязка к носителям информации

  4. Аппаратные ключи защиты

  5. Использование навесных защит

1. Необходимость защиты программ от несанкционированного использования

Несмотря на все усилия различных организаций во главе с BSA в последние годы продолжается рост компьютерного пиратства. В среднем доля пиратского ПО в мировом масштабе составляет 40%. Россия находится на пятом месте в списке стран с наивысшими показателями пиратства, и доля пиратского ПО в нашей стране составляет 89%. Экономическая конкуренция с пиратством дело очень тяжелое, поэтому задача защиты своих программных продуктов от несанкционированного использования для российских производителей очень актуальна. При этом, если программный продукт плохо защищён, то его достаточно быстро "вскрывают", и на рынке появляется дешёвая пиратская версия, которая не позволяет лицензионной версии завоевать свою долю рынка, и продажи легального продукта быстро падают. Если же продукт хорошо защищён, то у пиратов уходит достаточно много времени на вскрытие защиты и продукт успевает достичь требуемого уровня продаж и достаточно долго удерживаться на рынке.

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

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

  2. Защиту от изучения алгоритма работы системы защиты

  3. Согласование системы защиты с функциями защищаемой программы в случае ее санкционированного использования.

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

Рассмотрим средства, которые применяются на практике для выполнения этих функций.

2. Регистрационные коды для программ

Регистрационный код – это уникальный в определенных пределах номер, который призван предотвратить нелегальное копирование программного продукта. При использовании регистрационного кода программа содержит механизм, позволяющий проверить, является ли введенный пользователем серийный номер или регистрационный код правильным. Для того чтобы противник, исправив несколько байт, не смог заставить программу работать так, как будто она корректно зарегистрирована, нужно защищать те фрагменты кода, которые отвечают за проверку. Для этого применяют шифрование этих фрагментов кода стойким алгоритмом, а ключ шифрования вычисляют, используя регистрационный код. Разработаны специальные программы, которые обеспечивают такую функциональность: ASProtect (ASPack Software), EXECryptor (SoftComplete Development).

Методы генерации кодов и проверки их правильности

Алгоритмический метод

В этом случае генератор регистрационного кода и процедура проверки используют один и тот же алгоритм. При использовании этого метода разрабатывают некоторый алгоритм, специально запутанный, чтобы его было трудно понять и «обратить» (т.е. найти способ вычислять новые регистрационные коды). «Обращение» алгоритма – это самый распространенный способ взлома защиты с помощью регистрационного кода. Как правило, по самой процедуре проверки получить правильный код невозможно, но имея один правильный код и обратив процедуру проверки, взломщик может вычислить любые новые коды. Алгоритмический метод прост в реализации и позволяет использовать короткие коды. Однако практика показывает, что почти все процедуры проверки с помощью алгоритмического метода могут быть взломаны. Раньше этот метод использовался часто, но сейчас переходят на проверки, основанные на сложных математических задачах.

Проверка, основанная на сложной математической задаче

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

Табличные методы

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