Программно-аппаратные системы защиты программного обеспечения

Доклад на Международной конференции аспирантов при Экономической Академии Республики Молдова (сентябрь 1999)

Автор: Сергей Середа, аспирант Экономической Академии

    В последнее время все большую популярность среди производителей программного обеспечения (ПО) приобретают программно-аппаратные средства защиты ПО от несанкционированного доступа и копирования (НСД). Под программно-аппаратными средствами защиты, в данном случае, понимаются средства, основанные на использовании так называемых «аппаратных (электронных) ключей». Электронный ключ - это аппаратная часть системы защиты, представляющая собой плату с микросхемами памяти и, в некоторых случаях, микропроцессором, помещенную в корпус и предназначенную для установки в один из стандартных портов ПК ( COMM, LPT, PCMCIA, USB ...) или слот расширения материнской платы. Так же в качестве такого устройства могут использоваться СМАРТ-карты. По результатам проведенного анализа, программно-аппаратные средства защиты в настоящий момент являются одними из самых стойких систем защиты ПО от НСД.

В данном сообщении рассматривается комплекс вопросов, связанных с классификацией программно-аппаратных средств защиты, их достоинствами и недостатками, критериями/условиями выбора данного типа средств.

Электронные ключи по архитектуре можно подразделить на : ключи с памятью (без микропроцессора) и ключи с микропроцессором (и памятью).

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

 В зависимости от типов входящих в комплекс частей варьируется и стойкость систем защиты. Наименьшей стойкостью обладают системы с программной частью первого типа (вне зависимости от типа аппаратной части), так как для их преодоления достаточно проанализировать логику процедур проверки и должным образом их модифицировать. Более стойкими являются системы с программной частью второго и третьего типов и аппаратной частью первого типа. В таких системах критическая информация (ключ дешифрации, таблица переходов) хранится в памяти электронного ключа. Для дезактивации таких защит, в большинстве случаев, необходимо наличие у злоумышленника аппаратной части системы защиты (основная методика: перехват диалога между программной и аппаратной частями для доступа к критической информации). И, наконец, самыми стойкими являются системы с программной и аппаратной частью второго типа. Такие комплексы содержат в аппаратной части не только ключ дешифрации, но и блоки шифрации/дешифрации данных, таким образом при работе защиты в электронный ключ передаются блоки зашифрованной информации, а принимаются оттуда расшифрованные данные. В системах этого типа достаточно сложно перехватить ключ дешифрации, так как все процедуры выполняются аппаратной частью, но остается возможность принудительного сохранения защищенной программы в открытом виде после отработки системы защиты. Кроме того, к ним применимы методы криптоанализа.

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

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

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

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

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

Положительные факторы:

1. Значительное затруднение нелегального распространения и использования ПО;
2. Избавление производителя ПО от необходимости разработки собственной системы защиты;
3. Высокая автоматизация процесса защиты ПО;
4. Наличие API системы для более глубокой защиты;
5. Возможность легкого создания демо-версий;
6. Достаточно большой выбор таких систем на рынке;
7. Повышение «престижности» ПО при наличии мощной защиты;

Отрицательные факторы:

1. Затруднение разработки и отладки ПО из-за ограничений со стороны системы защиты (так же почти невозможно распространение «заплаток»);
2. Дополнительные затраты на приобретение системы защиты и обучение персонала;
3. Замедление продаж из-за необходимости физической передачи аппаратной части;
4. Повышение системных требований из-за защиты (совместимость, драйверы);
5. Снижение доверия пользователей при некорректной реализации защиты;     

С точки зрения пользователя ПО так же можно рассмотреть некоторые аспекты:

Положительные стороны:

1. Защита прав собственности на приобретенное ПО;
2. Повышение внимания к пользователю со стороны производителя ПО;

Отрицательные факторы:

1. Снижение отказоустойчивости ПО;
2. Ограничения из-за несовместимости системы защиты и системного или прикладного ПО пользователя (драйверы/программы для модемов, принтеров, ZIP-drive ...);
3. Ограничения из-за несовместимости системы защиты и аппаратных средств пользователя (модемов, принтеры, ZIP-drive ...);
4. Ограничения из-за несовместимости электронных ключей различных фирм (у пользователя может быть несколько продуктов с различными марками систем защиты);
5. Снижение расширяемости компьютерной системы (заняты слоты);
6. Затруднения или невозможность использования защищенного ПО в переносных и блокнотных ПК (габариты, энергозатраты);
7. Наличие у аппаратной части размеров и веса (средние размеры «ключа» для COMM/LPT= 5х3х2см при весе ~ 50гр, при наличии хотя бы 3-5 продуктов, защищённых программно-аппаратными средствами, из электронных ключей получается своеобразная конструкция длиной 15-25см и весом 150-250гр);
8. Угроза кражи аппаратного ключа (в этом случае пользователь полностью теряет возможность использования законно купленного ПО, в отличие от пользователя ПО с защитой других типов, например парольной);

Кроме того ошибки в реализации процедур защиты реализуют такие угрозы как «отказ в обслуживании» и «перегрузка трафика» (при конфликтах с сетевым ПО).

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

Другим аспектом программно-аппаратных средств защиты является сфера их применения, она может зависеть от ряда факторов, в том числе от:
1. Степени распространенности ПО;
2. Условий распространения и использования ПО;
3. Соотношения потерь от пиратства и затрат на разработку/приобретение защиты;
4. Соотношения потерь от пиратства и общего объема прибыли;
5. Экономической эффективности системы защиты;
6. Мощности юридической базы для борьбы с пиратством;
7. Соответствия того или иного типа защиты требованиям производителя ПО.
8. Системных требований ПО или типовая конфигурация ПК пользователя.
9. Сложность освоения ПО без фирменной документации и поддержки.

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

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

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

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

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

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

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

Проведенный анализ существующей ситуации показал, что программно-аппаратные средства защиты обеспечивают высокий уровень защиты ПО и применимы к большинству прикладного ПО для IBM-совместимых ПК настольного и напольного типов с ОС DOS, Windows и OS/2. В то же время эти системы защит слабо либо вообще не применимы к системному ПО, переносным ПК, другим ОС и платформам.