Обзор методов защиты программного обеспечения ПЭВМ
Д. Е. Орлов, Э. М. Пройдаков
Статья посвящена обзору методов и инструментальных средств защиты программного обеспечения (ПО) от несанкционированного копирования.
Людей, непосредственно связанных с хранящейся в ЭВМ информацией, можно разделить по уровню её использованы на три группы.
1. Системные программисты
Досконально знают устройство и принципы работы ЭВМ, способны использовать в своих целях все её ресурсы. В основном создают "средства производства" (инструментальные, языковые), т. е. ОС, системные утилиты, трансляторы, СУБД, интегрированные пакеты, оболочки экспертных систем, пакеты графики (в том числе средства защиты ПО и средства её снятия).
2. Разработчики прикладного ПО
Пользуясь продукцией системных программистов – "средствами производства", создают "предметы потребления", т. е. системы для реального применения – базы данных, электронные таблицы под конкретные заказы, экспертные системы. Они владеют методами программирования и пишут программы как правило, на языках высокого уровня: Си, Паскале, Прологе, Бейсике и входных языках СУБД.
3. Пользователи
В системах, разработанных прикладными программистами, используют программы для получения разного рода информации и вычислительных услуг. Пользователи практически не связаны с программированием.
К сожалению, в текущий момент в СССР нет отлаженного рынка ПО, так как отсутствует маркетинг программных продуктов. С одной стороны, этому способствовала многолетняя практика адаптации легкодоступного западного ПО, инерция печатных изданий (распространение информации обычно, задерживается на 1–1,5 года) и медленное распространение самих программ. С другой стороны, то, что производится профессиональными программистами, практически не может быстро попасть к потребителю. В результате потребители либо совсем не получают необходимое ПО, либо получают слишком поздно или покупают за фантастически высокую цену.
Не удивительно, что процветает несанкционированное копирование ПО как зарубежного, так и советского. Государством поощряется продажа чужого ПО под маркой своего, причём в массовом количестве. Несанкционированное копирование возникло как противодействие обкрадыванию потребителя. В результате – явное нарушение авторских прав производителя и убытки от упущенной прибыли.
Поскольку до сих пор нет законодательства о ПО, требуются мероприятия не только по защите от несанкционированного копирования и распространения, но и по стабилизации рынка ПО:
- борьбе со сверхприбылями, получаемыми при адаптации зарубежного ПО;
- развитию отечественных центров разработки (а не русификации) ПО;
- развитию издательской базы для выпуска документации;
- изменению устоявшихся порочных (ГОСТовских) взглядов на документацию;
- созданию школы отечественных авторов технической литературы;
- увеличению числа издаваемых журналов по практическому использованию средств ВТ и ПО.
Защита от несанкционированного копирования включает в себя:
1) защиту сообщений об авторских правах разработчика, выводимых программой на экран или находящихся внутри программы;
2) защиту от дизассемблирования и (или) модификации программы;
3) собственно защиту от незаконного тиражирования программы тем или иным способом.
Виды защиты
1. Защита с помощью серийного номера
Предполагается наличие уникального номера в каждом экземпляре программы. При размножении программы (как правило, копировании на дискету) в нее заносится её порядковый номер, который затем проставляется на регистрационной карточке продажи этой программы конкретному покупателю.
При обнаружении копии программы у незарегистрированного пользователя можно найти источник похищения программы и даже проследить цепочку. Такой способ отлично работает, если есть соответствующее законодательство. По идеологии защита с использованием серийного номера близка к защите с помощью пароля.
Примеры пакетов, защищенных серийным номером: базы данных FОХВАSЕ 2 Plus и Dbase IV.
2. Защита счетчиком установленных копий
Некоторые фирмы продают дискеты с заранее обговоренным числом копий, которые можно получить с дистрибутивной (поставочной) дискеты. Как правило, для такого продукта существует программа установки (инсталляции), которая при очередном копировании уменьшает счетчик числа копий. Если же основную программу скопировать без программы установки, то такая копия, в лучшем случае, не будет работать. Нельзя также скопировать и всю дискету с установочной программой, так как программа установки проверяет оригинальность дискеты, на которой она записана. В основном такую защиту применяют на игровых программах. Этот вид защиты может сочетаться с защитой серийным номером.
Примеры: игра Ice Hockey (MindScape), пакет SuperLock.
3. Программная защита от дизассемблирования
Практически любую защиту можно снять или обойти. Поэтому необходимо принять меры, чтобы для "взлома" программы требовались такие же затраты, как и на создание программы, подобной защищаемой, или же покупка программы была бы дешевле.
Применяемые чаще всего методы вскрытия:
а) прямое построение по загрузочному модулю текста программы на ассемблере или другом языке. После этого из текста удаляются подпрограммы проверки и строится заново загрузочный модуль [1];
б) в загрузочном модуле отладчиком прослеживается система защиты, а затем в модуль вносятся такие изменения, чтобы соответствующая подпрограмма уже не смогла активизироваться;
в) с помощью отладчика программа загружается в ОЗУ, проходятся все ступени защиты, и в момент завершения работы программы защиты на диск записывается копия ОЗУ, чтобы в дальнейшем можно было загрузить с диска программу с пройденным этапом защиты;
г) аппаратная трассировка с помощью внутрисхемных эмуляторов или логических анализаторов с блоками для трассировки.
Все эти методы имеют свои недостатки.
а) Если исполняемые коды зашифрованы и расшифровываются лишь в момент исполнения, по загрузочному модулю практически невозможно восстановить его первоначальный вид на ассемблере. Пример: вирус, осыпающий экран;
б) Существуют приемы противодействия, прерывающие процесс дизассемблирования. На ПЭВМ большинство отладчиков используют для отладки стандартные прерывания. Если изменить векторы этих прерываний, исследование программы отладчиком становится затруднительным. Второй путь – передача управления в программе с помощью изменения указателя стека так, что отладчик не будет знать адрес следующей исполняемой программы. Примеры: экспертная система SAGE, резидентная часть программы Norton Guide;
в) Этот метод имеет смысл применять для программ небольшого размера и только в том случае, если защита проверяется сразу, а не в середине работы и нет проверок в течение всего сеанса. Как правило, необходима полная информация о работе защиты (в частности, долговременное наблюдение). Пример: этот способ снятия защиты для ПЭВМ использует программа Unlock Master. Она снимает более 400 защит;
г) Нужна специальная дорогостоящая аппаратура и специалисты, умеющие с ней работать. Противодействие аналогично борьбе против отладчиков и дизассемблирования.
4. Использование технических отличий в машине для программной защиты
Как правило, каждая модель ПЭВМ имеет свои индивидуальные особенности. Это можно использовать для проверки уникальности компьютера, на котором установлена программа.
4.1. Тактовая частота работы ПК имеет различия, доходящие до ±0,001 и даже ±0,01 МГц. Если точно измерить частоту, можно проверить уникальность ПЭВМ.
Пример: PowerMeter (программа для сравнения характеристик машин между собой).
4.2. ППЗУ (КОМ) одинаково только для машин одного класса одной и той же фирмы. Поэтому подсчет контрольной суммы ПЗУ, либо ППЗУ (BIOS в ПЭВМ) может ограничить использование программы одной модификацией машины данной фирмы.
Справка: производителей ПК, совместимых с IBM, более 1000, каждый выпускает от одной до десяти и более моделей.
4.3. При копировании программа записывается в произвольное место на диске типа винчестер (для MS-DOS). Если не узнать, на какие физические секторы произведена запись, практически невозможно перенести программу на другой диск [2].
Пример: типичная в СССР защита от "черного копирования".
4.4. Специальная обработка конкретного бита на диске. При нормальном чтении диска происходит анализ: если есть магнитный сигнал, – 1, нет – 0. А если сигнал слабый? Тогда считывание десять раз дает, допустим, три раза 1, а семь раз – 0. Можно записать такой слабый сигнал, а потом проверять его.
Пример: плавающие биты.
4.5. Прожигание лазером (или прокалывание) отверстия в оригинальной дискете по заранее определенному адресу. Во время проверки делается попытка записи 1 по такому адресу и считывание её. Если считалась 1, то это копия, а не оригинал.
Пример: пакет ProLok.
5. Производится опрос пароля при загрузке программы, причем сам пароль не хранится в программе, а обрабатывается введенная строка и по полученному адресу вызывается следующая выполняемая подпрограмма. В случае ошибки вероятность верного входа ничтожно мала.
Пример: шифровка архива PKARC с паролем.
6. Использование программно-аппаратной защиты.
Она аналогична программной, но требует больших усилий при снятии.
6.1. Установка на разъём AUX специальной заглушки, содержащей микросхему и, возможно, элемент питания. Программа проверяет наличие этой заглушки путем проведения специального протокола обмена между ними. Снятие защиты заключается либо в имитации заглушки, либо в её воспроизводстве, либо в обнаружении и нейтрализации подпрограммы проверки её наличия. Этот метод прогрессивный из-за возможности использования заказной БИС.
6.2. Наличие платы защиты, вставляемой в слот ПЭВМ. Эту защиту практически невозможно обойти, но такая плата слишком дорога для широкого применения.
Литература
- Пройдаков Э. М. Дизассемблер, управляемый данными // Микропроцессорные средства и системы. №5/1988.
- MS-DOS Technical Reference. – Microsoft Corp. – USA, 1988.
Статья опубликована в сборнике БИТ, выпуск 3, – М.: ИнфоАрт, 1991 г.