Назад в библиотеку

Метод построения системы защиты от несанкционированного распространения программного обеспечения


Лалушкин Ю.П. д-р техн. наук;
Кабанов А.С. канд. техн. наук

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

Актуальность работы обусловлена тем, что одной из важных задач охраны авторских прав разработчиков программного обеспечения является разработка средств защиты от несанкционированного распространения (НСР). В настоящее время широко используются системы защиты (СЗ) от НСР защищаемого программного обеспечения (ЗПО), реализованные на электронных ключах (ЭК). На российском рынке информационных технологий все больше и больше появляется отечественных производителей ЭК. Однако они, как правило, используют алгоритмы защиты зарубежных ЭК. Применение идентичных алгоритмов защиты в СЗ на ЭК различных производителей привело к тому, что в сети Internet можно найти универсальные эмуляторы для определённых типов ЭК. В связи с этим задача повышения эффективности СЗ на ЭК является актуальной. Цель работы состоит в разработке метода построения СЗ от НСР ЗПО с заданным уровнем обеспечения защиты. Метод основан на использовании ЭК, электронного замка (ЭЗ) и монитора безопасности.

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

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

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

Определение 1. Монитором безопасности (МБ) назовём программный модуль, представляющий собой процесс-сервер (в ОС с микроядерной архитектурой), выполняющий функции контроля целостности ЗПО, библиотек защиты и системных библиотек перед каждым сеансом аутентификации ЭК.

Ниже представлены характеристики СЗ, ОС и возможности потенциального нарушителя.

Электронный ключ обладает следующими свойствами:

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

Вскрытие системного блока ПЭВМ обеспечивается организационными мерами и т. п.

Рассмотрим предлагаемый метод построения СЗ от НСР ЗПО.

Перехваты системных вызовов (на пользовательском уровне), как правило, осуществляются нарушителем путём модификации системных библиотек (или библиотек защиты) или ЗПО. Некоторые отладчики также модифицируют ЗПО (например, внедрением в код ЗПО байта CCh прерывания int 3). Следовательно, для всех СЗ целесообразно контролировать целостность ЗПО и библиотек защиты (и/или системных библиотек). Для контроля целостности ЗПО, библиотек защиты, системных библиотек предлагается использовать МБ. Поскольку в ОС с микроядерной архитектурой все процессы разделены между собой, то при реализации МБ в виде процесс-сервера ядро ОС будет защищать его от других процессов.

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

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

На данный момент основными методами защиты от эмуляторов процессоров являются контроль интервалов времени и использование параллельных процессов. Следовательно, целесообразно реализовать контроль интервалов времени обработки запросов со стороны ЗПО и ЭК. Очевидно, что в ЭК необходимо реализовать таймер. Если в эмуляторе процессора будет реализован эмулятор микросхемы таймера ПЭВМ, способный синхронно работать с эмулятором процессора, то контроль интервалов времени будет осуществляться со стороны ЭК. В случае превышения интервалов времени обработки данных защищаемым приложением ЭК будет блокирован. Это справедливо и для контроля со стороны ЗПО.

Схема функционирования предлагаемой СЗ приведена на рис. 1.

Условие. ЭК в случае превышения интервалов времени обработки данных ЗПО прекращает работу.

Описание функций и необходимые и достаточные условия корректной работы ЭЗ отражены в работах [13].

Утверждение. В СЗ, построенной на основе предлагаемого метода, возможны только аппаратные перехваты данных, передаваемых через интерфейс ПЭВМ —ЭК, и/или исследование кода ЗПО дизассемблером.

Доказательство.

Атаки нарушителя могут быть направлены только на:

Схема функционирования СЗ

Рисунок 1 - Схема функционирования СЗ

Следовательно, в СЗ, построенной на основе предлагаемого метода, атаки нарушителя могут быть направлены только на перехват данных, передаваемых между ЭК и ПЭВМ и/или на исследование кода ЗПО дизассемблером.

Утверждение доказано.

Рассмотрим аутентификацию ЭК защищаемым программным обеспечением в предлагаемой СЗ.

Определение 2. Системы защиты на ЭК, использующие частичное шифрование ЗПО (СЗ с частичным шифрованием ЗПО), называются СЗ, в которых аутентификация ЭК защищаемым программным обеспечением осуществляется проверкой работоспособности и корректности (при запуске), полученной от ЭК расшифрованной криптограммы, причём криптограммы, передаваемые ЭК от ЗПО, являются результатом шифрования открытого кода ЗПО [4].

Внедрение механизмов защиты в СЗ с частичным шифрованием ЗПО осуществляется по следующему алгоритму:

Шаг 1. Генератор случайных чисел (ГСЧ), реализованный в ЭК, вырабатывает секретный ключ к\.

Шаг 2. Секретный ключ записывается в память ЭК.

Шаг 3. Электронный ключ шифрует участок кода ЗПО х криптографическим алгоритмом на к\, т.е. у = fk(х).

Шаг 4. у записывается в ЗПО вместо х.

Аутентификация ЭК осуществляется по следующему алгоритму.

Шаг 1. Запуск ЗПО.

Шаг 2. у передаётся ЭК.

Шаг 3. Электронный ключ расшифровывает у, т. е. х = fk1(у).

Шаг 4. Электронный ключ передаёт х ЗПО.

Шаг 5. Полученный х копируется в оперативную память ПЭВМ и выполняется.'

Возможные атаки на СЗ даны на рис. 2. Пунктирные стрелки означают, что между модулями находятся промежуточные блоки и интерфейсы. Атаки в данных блоках и интерфейсах имеют одну и ту же цель и отличаются только по способу реализации.

В СЗ с частичным шифрованием ЗПО нарушитель может осуществлять только следующие атаки (см. рис. 2):

Допустим, для защиты данных, передаваемых от ЭК, используется шифрование (см. рис. 3). Передаваемая криптограмма у’ расшифровывается с помощью криптографического модуля, который может быть реализован или в библиотеке защиты, или в ЗПО с использованием системных библиотек. Секретный ключ вводится пользователем при работе ЗПО (в процессе аутентификации ЭК). Результат расшифрования заносится в память процесса родителя и выполняется. Нарушитель может осуществлять только следующие атаки (см. рис. 3):

  1. криптоанализ криптограмм у, передаваемых ЭК в целях получения х;
  2. криптоанализ криптограмм у', передаваемых от ЭК в целях получения х;
  3. накопление криптограмм, передаваемых к/от ЭК в целях построения таблицы запросов/ответов (у, у');
  4. дизассемблирование ЗПО в целях поиска и криптоанализа у;
  5. модифицировать библиотеки защиты или системные библиотеки в целях осуществления перехвата данных (или секретного ключа, на котором расшифровывается у') и/или доступа к памяти процесса;
  6. копировать расшифрованные участки кода х из оперативной памяти (с помощью отладчиков или программных перехватов).
Возможные атаки на систему защиты

Рисунок 2 - Возможные атаки на систему защиты

Атаки на СЗ с частичным шифрованием ЗПО

Рисунок 3 - Атаки на СЗ с частичным шифрованием ЗПО

Из утверждения следует, что нарушитель не может выполнить атаки № 5 и б (см. рис. 3).

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

ПЭВМ, на которой реализована СЗ, построенная на основе предлагаемого метода, обозначим ПЭВМ-СЗ, ПЭВМ нарушителя обозначим ПЭВМ-Н.

Из утверждения следует, что на ПЭВМ-СЗ нарушитель не может применять средства отладки и осуществлять программные перехваты. Очевидно, что на ПЭВМ-Н нарушитель может применять средства отладки и осуществлять программные перехваты, т. е. может осуществлять атаки № 5, б).

Допустим, что нарушитель осуществляет несанкционированное копирование ЗПО на ПЭВМ-Н. В данной ситуации рассмотрим два возможных случая:

Первый случай.

Будем считать, что секретный ключ k2 для расшифрования у' вводится пользователем при работе ЗПО (в процессе аутентификации ЭК). Следовательно, нарушитель, скопировав программную часть СЗ на ПЭВМ-Н, не получит k1, k2 (k1, k2 содержатся в ЭК). Перехватить k2 на ПЭВМ-СЗ нарушитель не может. Часть кода ЗПО содержится в зашифрованном виде (у). Следовательно, нарушитель может получить у из ЗПО или перехватив запрос к ЭК. Очевидно, что для получения х нарушителю необходимо осуществлять криптоанализ у.

Допустим, что k2 хранится в библиотеке защиты. В этом случае нарушитель, скопировав программную часть СЗ на ПЭВМ-Н, получит k2 Поскольку нарушитель не обладает ЭК, то он не получит для расшифрования у. Владение k2 ничего не даст нарушителю, поскольку нет устройства (ЭК), расшифровывающего криптограмму у. Очевидно, что в данной ситуации нарушителю придётся осуществлять криптоанализ у для получения х и последующего внедрения в ЗПО вместо у.

Второй случай.

Будем считать, что секретный ключ k2 для расшифрования у' вводится пользователем при работе ЗПО (в процессе аутентификации ЭК).

Допустим, нарушитель скопировал программную часть СЗ на ПЭВМ-Н. Нарушитель не сможет расшифровать у', поскольку ему не известен k2. Получить k2 на ПЭВМ он не может. Часть кода ЗПО содержится в зашифрованном виде у. Очевидно, что в данном случае нарушителю придётся осуществлять криптоанализ у или у' в целях получения x.

Допустим, k2 хранится в библиотеке защиты. В этом случае нарушитель, скопировав программную часть СЗ на ПЭВМ-Н, получит k2 очевидно, что нарушитель может получить х программным перехватом или с помощью отладчика. Полученный х нарушитель внедрит в ЗПО вместо у. После этого ЗПО можно распространять без СЗ.

Заключение

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

Литература:

  1. Першаков А. С. Одна реализация алгоритма гарантированного исключения постоянного влияния на программную среду//Проблемы информационной безопасности. 1999. Т. 1. С. 56-62.
  2. Першаков А. С. О возможности гарантированной защиты информации в недоверенной среде//Там же. С. 63 — 69.
  3. Программно-аппаратные средства обеспечения информационной безопасности. Защита программ и данных: Учеб, пособие/Белкин П. Ю., Михальский О. О., Першаков А. С. и др. — М.: Радио и связь, 1999. — 169 с.
  4. Кабанов А. С. Оценка защищенности систем защиты на электронных ключах, использующих частичное шифрование защищаемого приложения//Проблемы информационной безопасности. Компьютерные системы. 2006. № 2. С. 67 — 73.