2004 г.
Анализ рынка средств защиты от копирования и взлома программных средств
Новичков Александр,
независимый консультант
Сардарян Рубен,
независимый консультант
Сокращеный вариант статьи опубликован в Pc Week, #6/2004
Оглавление
Введение
Виды и характеристики современных средств защиты
Способы взлома и противодействия
Обзор современных средств защиты
Подведение итогов
Послесловие
Введение
Несмотря на все усилия различных организаций во главе с BSA в последние годы продолжается рост компьютерного пиратства. В среднем доля пиратского ПО в глобальном масштабе составляет 40%, то есть каждые четыре из десяти копий программы оказываются в каком-то смысле украденными у производителя и лишают его прибыли. По расчетам BSA в 2002 году убытки софтверной отрасли от пиратства составили порядка 13 миллиардов долларов .
Россия находится на пятом месте в списке стран с наивысшими показателями пиратства, и доля пиратского ПО в нашей стране составляет 89% (!) . Для западных компаний это хоть и приносит ощутимые убытки, но не является критичным для их бизнеса. Для российских же компаний такая распространённость пиратства может оказаться подводной скалой, о которую разобьются все инвестиционные планы.
С пиратством можно бороться различными способами. Основным, наверное, всё же должен быть легитимный. То есть взлом и незаконное распространение программного обеспечения должны быть правильно описаны в соответствующих законах, и государство должно осуществлять преследование пиратов и привлекать их к ответственности. Но наше государство пока еле справляется с исполнением своих обязанностей в других областях.
Ещё одним эффективным методом борьбы с пиратством является экономический. Это когда цена продукта настолько низкая, что может сравниться с ценой взломанного продукта, продаваемого пиратами. В большинстве случаев, если цена будет приблизительно одинаковой, покупатель предпочтёт лицензионный продукт пиратскому. Тем не менее, экономическая конкуренция с пиратством дело очень тяжелое и подходит далеко не всем производителям программного обеспечения.
Такие производители (а их большинство) обращаются к третьему методу - защите программного обеспечения от взлома и нелегального копирования. Хорошая защита доставляет больше всего хлопот пиратам и, в конечном счёте, приводит софтверные предприятия к требуемой цели (получению прибыли).
На рис. 1 показаны графики получения прибыли от продаж незащищённого и защищённого продуктов. Как видно из графиков, если продукт плохо защищён, то его достаточно быстро "вскрывают", и на рынке появляется дешёвая пиратская версия, которая не позволяет лицензионной версии завоевать свою долю рынка, и продажи легального продукта быстро падают. Если же продукт хорошо защищён, то у пиратов уходит достаточно много времени на вскрытие защиты и продукт успевает достичь требуемого уровня продаж и достаточно долго удерживаться на рынке.
![](1.gif)
Рис. 1 - Динамическая зависимость прибыли от степени защищённости продукта
Технологии защиты постоянно эволюционируют. Как показывает практика, для взлома новой защиты требуется от нескольких дней, до нескольких месяцев. Также существуют пока не взломанные защиты, о них речь пойдёт ниже.
Целью данной статьи является ознакомление читателя с различными решениями, предлагаемыми сегодня на рынке защит. Этим я постараюсь внести свой посильный вклад в дело борьбы с компьютерным пиратством.
В начале статьи проводится обзор архитектуры и характеристик современных средств защиты. Далее рассматриваются основные способы взлома программных продуктов и методы противодействия. В завершение проводится анализ рынка защит и приводятся сравнительные характеристики основных на сегодняшний день продуктов в этой области. И самое главное, в конце статьи даются рекомендации по выбору. Причем рекомендации не абстрактные, конкретные, ведь написание данной статьи предварила Научно-исследовательская работа по подбору защиты для одной из российских компаний, которая стремительно выходит на отечественный и международный рынок высокотехнологичного ПО и очень нуждается в защите собственных инвестиций от посягательства пиратов разных мастей.
Итак, заказчик изначально имеет несколько программных продуктов, рассчитанных на разные сегменты рынка.
Известно, что систем защит существует множество, и не все из них могут удовлетворять заказчика по соотношению цена\качество.
В таблице 1 приведены все исходные данные по программным продуктам.
Особое внимание хочется отметить на ценовые категории и сегмент рынка, хотя каждую позицию в таблице нужно считать ключевой.
Таблица 1. Характеристика программ для ЭВМ.
Программа для ЭВМ |
Ценовая категория ($, тыс.) |
Объем продаж |
Тип лицензии |
Сегмент рынка |
Объект защиты |
LSHead |
0.5-2 |
100-1000 |
Раб. место |
USA, Индивидуальный |
EXE, DLL plug-in к 3D-MAX, Maya |
LSHead Pro |
10-30 |
10-100 |
Раб.место, время |
USA, Корпоративный |
EXE, DLL plug-in к 3D-MAX, Maya |
LSHead SDK |
10-30 |
10-20 |
% с тиража, время |
USA, Корпоративный |
LIB |
LSHead WWW |
3-10 |
10-100 |
Сайт, время |
USA, Корпоративный |
ActiveX |
PsyTest |
0.4-2 |
100-1000 |
Раб.место |
РФ, Корпоративный |
EXE |
Game |
1-20 |
100-1000 |
Раб.место |
РФ, частный сектор |
EXE |
Итак, мы имеем 6 программных продуктов, для которых необходимо подобрать защиту.
Кратко опишем каждый из продуктов
Таблица 2. Описание программных продуктов Заказчика
Продукт |
Краткое описание |
LSHead |
Дополнительный модуль расширения к трехмерным программам, предназначенный для отображения мимики лица персонажей в реальном масштабе времени |
LSHead Pro |
Дополнительный модуль расширения к трехмерным программам, предназначенный для отображения мимики лица персонажей в реальном масштабе времени. Профессиональный вариант. |
LSHead SDK |
Набор библиотек и документов для компаний-разработчиков игрового ПО, которые хотят использовать технологию мимики персонажей в своих играх |
LSHead WWW |
|
PsyTest |
Программа психологического тестирования |
Game |
Условно-игровая программа с элементами квеста и аркады |
Прошу обратить особое внимание читателей на стоимость каждого программного продукта. Так как любая система защиты удорожает исходный продукт, то нужно выбрать именно ту защиту, которая не одинаково удорожает стоимость продукта для каждой отдельной категории.
Рассмотрим основные требования, которые можно предъявить к современной системе защиты:
-
Защита должна быть с большим запасом прочности. Учитывать высокий уровень пиратов вообще, и Российских в частности, способная противостоять их натиску долгое время;
Известно, что абсолютно надежной защиты не бывает, но выбранная система должна обеспечить компании-разработчику достаточную фору во времени, пока пираты не научатся вскрывать данный продукт.
-
По возможности не привязываться к аппаратной конфигурации компьютера, поскольку персональный компьютер не есть вещь в себе, и его отдельные компоненты могут и должны быть заменяемыми по мере старения;
Данный критерий в процессе работы над отчетом менялся довольно часто, поскольку компании-разработчики защиты смогли сделать так, что привязка к оборудованию не вызывает особых проблем при работе. не следует привязываться к аппаратной конфигурации компьютера (правильно - логичнее привязывать защиту к ключу или компакт-диску). Ключи - вещь хорошая, с их помощью можно реализовывать различные схемы продаж. Но, самое главное,- ключами осмысленно защищать достаточно дорогой софт. И совсем противоположная ситуация с дисками - для них подходят и недорогие программные продукты
-
По возможности не использовать для защиты дорогие дополнительные аппаратные приспособления, которые только повышают стоимость защиты, а стало быть, и конечного продукта;
Защиту от проникновения и копирования можно организовать разными способами. При этом учитывается, что для недорогой программы нельзя использовать дорогую защиту. Во-вторых, при расчете стоимости защиты учитываем стоимость защищаемого программного продукта
-
Должна быть основана на оригинальных принципах защиты от взлома. Показателем критерия может служить тот факт, что защита еще не взломана, либо взломана, но всеми возможными способами;
Это критерий прогрессирования. Защита может быть эффективной, если она находится в состоянии постоянного развития. Если разработчики защиты отслеживают хакерские форумы и делают выводы о дырах собственных систем.
-
Не препятствует свободному копированию защищенных данных (должна запрещать только несанкционированный запуск, то есть копируется копировщиком, но не исполняется);
В принципе можно рассматривать отдельно защиту от копирования и от распространения (или нераспространения). Данный критерий предполагает свободное копирование, но авторизованный запуск.
-
Защита должна быть подобрана с учетом традиций данного сегмента рынка ПО.
Самый интересный критерий, изменивший начальный расклад советов по выбору. Поскольку заказчик хочет выйти на мировой рынок, то используемая защита, должна быть типичной для того сегмента, на который направлена программа. Так, например, мало кто решится ставить защиту, основанную на электронных ключах на игровую программу, поскольку НИКТО из производителей в данном сегменте не пользуется такой защитой.
Соответственно, защита НЕ ДОЛЖНА вызывать отторжения у конечного пользователя своей экстравагантностью.
-
Стоимость защиты для разработчика и покупателя должна соотноситься со стоимостью программы.
Виды и характеристики современных средств защиты
Достаточно трудно дать точную характеристику понятию "защита", поскольку оно слишком широко трактуется, и подразумевает практически все аспекты информационной безопасности.
Защита - совокупность действий, направленных на противодействие взлому, нелегальному копированию и несанкционированному доступу.
Спектр данной статьи несколько более узок, но это не слишком сужает спектр мер. Для того, чтобы в последних строках дать совет по выбору наиболее эффективной схемы защиты (с соответствующей программной поддержкой) необходимо рассмотреть основные виды защит и их производителей.
Давайте немного углубимся в смысл словосочетания "защита от копирования". Целью всех современных средств защиты от копирования является ограничение использования программных продуктов. Для достижения этой цели используются самые различные методы.
Программные и аппаратные методы защиты
Методы защиты можно разделить на программные и аппаратные. К программным относятся методы, реализуемые чисто софтверным путём, в них не затрагиваются физические характеристики носителей информации, специальное оборудование и т.п. К аппаратным относятся методы, использующие специальное оборудование (например, электронные ключи, подключаемые к портам компьютера) или физические особенности носителей информации (компакт-дисков, дискет), чтобы идентифицировать оригинальную версию программы и защитить продукт от нелегального использования.
Рассмотрим различные подходы к защите и характеристики, которые используются в современных продуктах.
Устойчивость к прямому копированию
Основой любой защиты можно считать ее способность к идентификации носителя, с которым она попала к пользователю. И не просто к идентификации, а к способности отличить данный носитель от нелегальной копии. Причем, уровень защиты на данном этапе должен быть такими, чтобы та условная метка или характеристика, которая была присуща данному носителю, не воспроизводилась любыми средствами битового копирования. Эффективность данного этапа определяет стойкость защиты к элементарному копированию, когда пользователю достаточно запустить CloneCD, и не о чем больше не думать.
Следует отметить, что многие системы защиты используют различные физические метки, по которым программа сможет идентифицировать валидность носителя. Как правило, физически установленные метки плохо копируются, но неплохо эмулируются специальными драйверами, что делает защиту, основанную только на физических метках, очень уязвимой.
Еще, как правило, все системы защиты представляют собой "вставную челюсть". То есть модуль, который отвечает за идентификацию диска, в большинстве случаев не может противостоять хакерской атаке, в то время как менее важные участки кода оказываются хорошо защищенными.
Наиболее эффективным можно считать способ, при котором на диск не наносятся специальные метки, то есть, когда диск спокойно можно копировать, и распространять его содержимое, но старт будет производиться только при наличии оригинального диска.
Подобные защиты основываются на том факте, что любой диск (СD/DVD/R/RW) имеет ряд уникальных характеристик, присущих только одному диску, и эти характеристики теряются при копировании на другой диск. Их реализация в конкретных системах (Star-Force, Tages) остается тайной за семью печатями.
Устойчивость к взлому
Второй по счету, но не по важности компонент защиты - это устойчивость к взлому. Если защиту не удается обойти копированием и эмулированием, хакеру необходимо при помощи механизмов дизассемблирования и пошаговой отладки просканировать приложение, выделить логику защиты и нейтрализовать ее. Соответственно, если у защиты имеется надежный способ работы с метками (или с характеристиками носителя), то есть когда есть возможность однозначно идентифицировать валидность представленного носителя, но модуль идентификации не защищен должным образом, то подобную систему нет смысла использовать, так как она не выдержит даже минимальной хакерской атаки (любительской атаки, которая проводится из интереса). Про специально направленную на взлом данного приложения атаку и говорить не приходится.
В следующем разделе описаны основные методы взлома и противодействия, а пока рассмотрим ещё несколько аспектов, относящихся к средствам защиты.
Аппаратные ключи
Часто для реализации нераспространения продукта при его эксплуатации используются в электронные ключи (HASP) или Sentinel.
HASP представляет собой программно-аппартный комплекссодержащий код, процедуры или любые другие уникальные данные, по которым защита может идентифицировать легальность запуска.
Современные электронные ключи подключаются практически ко всем портам компьютера: от LPT до USB, а также слотам ISA и PCI, при возникновении такой необходимости.
Основой ключей HASP является специализированная заказная микросхема (микроконтроллер) - ASIC (Application Specific Integrated Circuit), имеющая уникальный для каждого ключа алгоритм работы.
Принцип защиты состоит в том, что в процессе выполнения защищённая программа опрашивает подключённый к компьютеру ключ HASP. Если HASP возвращает правильный ответ и работает по требуемому алгоритму, программа выполняется нормально. В противном случае (по усмотрению), она может завершаться, переключаться в демонстрационный режим или блокировать доступ к каким-либо функциям программы.
Большинство моделей ключей HASP имеют энергонезависимую программно-перезаписываемую память (так называемую EEPROM). В зависимости от реализации HASP память может быть от одного до четырех килобитов).
Наличие энергонезависимой памяти дает возможность программировать HASP, размещая внутри модуля различные процедуры, либо хранить дополнительные ключи, а также:
-
управлять доступом к различным программным модулям и пакетам программ;
-
назначать каждому пользователю защищенных программ уникальный номер;
-
сдавать программы в аренду и распространять их демо-версии с ограничением количества запусков;
-
хранить в ключе пароли, фрагменты кода программы, значения переменных и другую важную информацию.
У каждого ключа HASP с памятью имеется уникальный опознавательный номер, или идентификатор (ID-number), доступный для считывания защищёнными программами. Идентификаторы позволяют различать пользователей программы. Проверяя в программе идентификатор HASP, пользователь имеет возможность предпринимать те или иные действия в зависимости от наличия конкретного ключа. Идентификатор присваивается электронному ключу в процессе изготовления, что делает невозможным его замену, но гарантирует надежную защиту от повтора. С использованием идентификатора можно шифровать содержимое памяти и использовать возможность ее дистанционного перепрограммирования.
Система HASP позволяет защищать программное обеспечение двумя различными способами: автоматически (стандартно) и вручную (через специальный API).
Предоставление SDK со стороны разработчиков защиты
SDK (Software Developer Kit, комплект разработчика ПО) позволяет детально ознакомиться с продуктом. Для этого в состав SDK включены полная техническая документация, описание утилит и средств разработки.
В комплект разработчика входит все необходимое для начала использования представляемой технологии в собственных программных продуктах - детальные примеры, фрагменты кода, поддержка различных ОС, средств разработки.
Также SDK включает в себя оборудование (hardware) для построения тестовых проектов (например, SDK HASP, который содержит демонстрационные ключи HASP).
Достаточно часто встречающееся приложение к системам защиты. SDK позволит на самых ранних этапах разработки приложения внедрить защиту в приложение. Как известно, защита, которая встраивается в приложение на последнем этапе, достаточно легко нейтрализуется. Нейтрализовать же защиту, встроенную в само приложение достаточно трудно. Примером подобной защиты может служить IBM Rational ClearCase, защита которого настолько "размазана" по продукту, что пирату просто не реально за сколько-нибудь приемлемый промежуток времени провести его анализ и нейтрализовать саму защиту.
Что же происходит при использовании SDK? Как правило, SDK определяет защищенность отдельных областей кода или данных приложения, а также места проверки легальности запуска (например, обращение к ключу/диску). Ниже рассказывается про атаку методом дампинга, противодействовать которому можно только когда приложение НИКОГДА не остается в памяти компьютера в полностью развернутом виде.
SDK позволит разработчикам программного продукта определить какие части приложения будут видны всегда (например, участки кода, направленные на максимальную производительность), а какие необходимо прятать.
Тем не менее, SDK тоже бывают разные. Следует оценивать стоимость комплекта, наличие поддержки, и, самое главное, - простоту изучения. Последний критерий достаточно спорный, так как эффективность SDK может быть напрямую связана со сложностью изучения.
Лицензирование
Суть любой из систем лицензирования заключается в том, что после установки программного обеспечения на локальный компьютер пользователю необходимо получить от производителя ключ, который был бы тем или иным образом привязан к компьютеру (в основном), хотя это может быть и банальный пароль, и вовсе необязательно этот ключ привязан к компьютеру. Системы лицензирования бывают как "одна лицензия - один компьютер" так и "одна лицензия - один пользователь". Как правило, для этих целей используют механизм заполнения анкеты на сайте производителя (для идентификации пользователей) + пересылку (на тот же сайт) специального идентификатора компьютера, на основе которого и выполняется генерация ключа. Как правило, в ключе, в зашифрованном виде, содержится информация о пользователе, продукте, числе лицензий и другой информации.
Ярким представителем системы лицензирования является Globertrotter FlexLM. Система лицензирования, которую используют многие компании, работающие на корпоративном рынке. Данной системой пользуются такие крупные компании как Rational, AliasWavefront и многие другие.
FlexLM (и ряд других компаний) предлагает два типа лицензий: Floating и NodeLocked.
Floating - плавающий тип лицензий. Данный вид лицензий устанавливается на сервер и оговаривает число одновременно работающих машин в сети. То есть, имея 10 лицензий, с продуктом могут только 10 машин одновременно, но продукт можно инсталлировать на сколь угодно рабочих мест. Данный тип защиты позволяет продукту распространяться, но запускать его одновременно можно только на ограниченном числе машин. Защита наиболее эффективна на корпоративном рынке, где работает много специалистов. Налицо экономическая выгода, основывающаяся на том, что не все пользователи одновременно работают с одними и теми же программами. В случае корпоративного применения возможна экономия от 80% до 50% от общего числа необходимых лицензий.
NodeLocked - фиксированный тип лицензий. Данный способ защиты позволяет работать только на одной машине. Способ хорошо подходит для индивидуальных пользователей, которым необходимо работать только с одной рабочей машины.
Как правило, стоимость Floating лицензии выше, чем NodeLocked в силу вышеуказанных причин.
Также лицензии делятся на две категории: постоянные и временные.
Временные - не привязываются к рабочей машине, не ограничивают в функциональности, но ограничивают срок пробной эксплуатации.
Постоянные - снимают все ограничения по срокам, но привязываются к конкретной машине.
Модули лицензирования типа FlexLM являются встроенными системами, то есть они встраиваются в программный продукт уже после его окончательной разработки. Лицензия FlexLM запрашивается либо в момент старта продукта, либо при выполнении определенных операций. В момент запуска проверяется валидность ключа и характеристики компьютера, если он привязан к таковым.
Для идентификации машины используется множество способов. Вот основные способы привязок:
-
к серийному номеру жесткого диска;
-
к MAC-адресу сетевой катрты;
-
к контрольной сумме BIOS;
-
к различным характеристикам системы.
Метод авторизации через Интернет
В силу того, что ИТ отрасль переходит от платных к продуктов к продуктам Shareware, интересным представляется метод получения ключей через Интернет.
Многие компании - как средние, так и крупные - позволяют пользователям работать со своими продуктами некоторое время бесплатно. Это обоснованное решение, поскольку стоимость лицензий может быть достаточно высокой, а пользователь, зачастую не знает, нужен ему продукт или нет.
FlexLM имеет в своем арсенале временные ключи, не ограничивающие функциональные возможности продукта, но имеющие существенный недостаток. FlexLM рассчитан на сверхчестных пользователей, которые не подкручивают системное время назад, с целью продления срока эксплуатация. Соответственно, в чистом виде подобная защита не подходит большинству компаний-разработчиков ПО.
В отличие от классического временного ключа, активация имеет ряд неоспоримых преимуществ. Схема работы продукта выглядит следующим образом:
При первоначальном запуске, пользователя просят зарегистрироваться, заполнив анкету. После заполнения через Интернет происходит активация продукта для данной машины. Далее сервер начинает отслеживать либо число запусков продукта, либо ведет обратный отсчет времени эксплуатации. Учитывается, что при каждом запуске пользовательский компьютер автоматически через Интернет посылает запрос на сервер регистрации о возможности запуска. Если ключи еще валидны, сервер дает "добро" на запуск приложения.
Данный способ позволяет получить список пользователей, работающих с временными версиями, ограничить сроки эксплуатации и подвинуть людей к официальному приобретению продукта.
К техническим достоинствам можно отнести то, что ни переустановка продукта, ни чистка реестра не позволяют повторно использовать пробный период для одной и той же машины. К недостаткам защиты можно отнести требование выхода в Интернет на момент запуска защищенного продукта. В случае отсутствия соединения продукт не запускается.
Способы взлома и противодействия
Побитовое копирование CD
Данный способ даже вряд ли можно назвать взломом. Пользователь (не всегда злоумышленник) пытается скопировать имеющийся у него носитель (компакт-диск) с целью создания копии для личного использования или для тиража.
Для осуществления этого могут использоваться различные программы, зачастую входящие в поставку устройств CD-R/RW. Это и официальные Easy CD Creator и Nero, и полуофициальные (полухакерские) CloneCD и BlindRead.
Защита должна уметь противодействовать данному способу, так как с него обычно и начинается взлом, поскольку программ-копировщиков, способных скопировать диски с примитивной защитой, великое множество.
Существуют два способа противодействия копированию. Первый заключается в том, что на диск записывается определенная метка, которая не копируется обычными средствами (например, создается нестабильный сегмент, который не читается носителем, а раз не читается, то и скопированным быть также не может). К сожалению, данный способ не всегда надёжен, поскольку уже существуют программы "продвинутого" копирования (те же CloneCD и BlindRead), которые способны пропускать подобные места (замещать нестабильные области произвольными данными) и проводить копирование до конца.
Второй способ основывается на том, что ничего никуда записывать не надо, а надо лишь определенным образом запоминать физические характеристики диска, которые просто невозможно воспроизвести любым копированием, точнее диск сам по себе копируется, но уже с другой физической структурой. Соответственно, пользователь может спокойно клонировать диски, но ключевым будет тот, который был официально куплен. То есть, в данном случае, диск будет использоваться как ключ доступа к информации. Для примера реализации данного метода можно упомянуть продукт "Большая Советская Энциклопедия", состоящий из 3 дисков, информация с которых свободно копируется, но работа с энциклопедией возможна только при наличии первого диска.
Эмулирование CD
Данный подход заключается в формировании виртуальных драйверов устройств и имитации обращения к диску. Это уже чистой воды взлом, поскольку для нормальной работы вскрытого приложения в систему инсталлируется специальный драйвер, который имитирует обращение к нестабильной метке на диске и возвращает вскрытой программе именно те данные, которые она ожидает "увидеть". Подобный способ довольно часто применяется на первых порах, когда хакеру известен способ получения метки на диске, но ему не очень хочется разбираться с программой методом дизассемблирования.
Противодействием может служить работа с устройствами чтения/записи на низком уровне, когда невозможно перехватить вызовы к оборудованию. Здесь нужно еще внести одно пояснение: для того, чтобы защищенному приложению обратиться к CD, и проверить его на наличие специальной метки, необходимо воспользоваться одной из функций чтения/записи, которые предоставляет Windows. Хакерами уже наработан ряд механизмов, позволяющих перехватывать стандартные обращения к функциям Windows, а раз можно перехватить обращение, значит можно имитировать чтение, целиком заменяя стандартные вызовы на собственные. Как говорилось выше, противодействием данному способу взлома может быть только обращение к накопителю не через стандартные вызовы.
Эмулирование электронных ключей (HASP)
Эмулирование устройств данного типа осуществляется так же, как и для CD, однако основную сложность представляет собой эмулирование обмена ключ - драйвер - ключ. Одна из основных возможностей электронных ключей защиты заключается в кодировании с помощью ключа данных, используемых защищенным приложением.
Противодействием эмуляции является частое использование функций кодирования данных, применение декодированных данных непосредственно в работе защищенного приложения (без предварительного сравнения).
В случае аппаратной реализации алгоритмов кодирования полная эмуляция ключей защиты становится практически невозможна, злоумышленники стараются снять защиту путем взлома программного модуля.
Эмулирование данного типа устройств осуществляется так же, как и для CD, если не проще. Вызовы к электронному ключу проще (относительно) перехватить и построить эмулятор.
Противодействием является программирование доступа к ключу на низком уровне, без использования стандартных механизмов, но и тут необходимо быть осторожными.
Взлом программного модуля
Это следующий уровень взлома. В том случае если не удалось скопировать приложение (также не удалось пропустить диск/HASP через эмулятор), а способ его защиты также неизвестен, то хакер переходит на следующий уровень взлома - на исследование логики самой программы, с той целью, чтобы, проанализировав весь код приложения, выделить блок защиты и деактивировать его.
Взлом программ осуществляется двумя основными способами. Это отладка (или пошаговое исполнение) и дизассемблирование.
Отладка - это специальный режим, создаваемый специальным ПО - отладчиком, который позволяет по шагам исполнять любое приложение, передавая ему всю среду и делая все так, как будто приложение работает только с системой, а сам отладчик невидим. Механизмами отладки пользуются все, а не только хакеры, поскольку это единственный способ для разработчика узнать, почему его детище работает неправильно. Естественно, что любую благую идею можно использовать и во зло. Чем и пользуются хакеры, анализируя код приложения в поиске модуля защиты.
Это так называемый, пошаговый режим исполнения, или, иными словами интерактивный. А есть еще и второй - дизассемблирование - это способ преобразования исполняемых модулей в язык программирования, понятный человеку - Ассемблер. В этом случае хакер получает распечатку того, что делает приложение. Правда распечатка может быть очень и очень длинной, но никто и не говорил, что защиты снимать легко.
Хакеры активно пользуются обоими механизмами взлома, поскольку иногда приложение проще пройти по шагам, а иногда проще получить листинг и проанализировать его.
Теперь рассмотрим основные методы взлома и противодействия ему.
Отладка
Отладчиков существует великое множество: от отладчиков, являющихся частью среды разработки, до сторонних эмулирующих отладчиков, которые полностью "погружают" отлаживаемое приложение в аналитическую среду, давая разработчику (или хакеру) полную статистику о том, что и как делает приложение. С другой же стороны, подобный отладчик настолько четко имитирует среду, что приложение, исполняясь под ним, считает, что работает с системой напрямую (типичный пример подобного отладчика - NuMega SoftIce).
Способов противодействия отладке существует не меньше чем отладчиков. Это именно способы противодействия, поскольку основная их задача сделать работу отладчика либо совсем невозможной, либо максимально трудоемкой. Опишем основные способы противодействия:
Замусоривание кода программы. Способ, при котором в программу вносятся специальные функции и вызовы, которые выполняют сложные действия, обращаются к накопителям, но по факту ничего не делают. Типичный способ обмана. Хакера нужно отвлечь, создав ответвление, которое и будет привлекать внимание сложными вызовами, и содержать в себе сложные и большие вычисления. Хакер рано или поздно поймет, что его обманывают, но время будет потеряно.
Использование многопоточности. Тоже эффективный способ защиты, использующий возможности Windows по параллельному исполнению функций. Любое приложение может идти как линейно, то есть инструкция за инструкцией, и легко читаться отладчиком, а может разбиваться на несколько потоков, исполняемых одновременно, естественно, в этом случае, нет никакого разговора о линейности кода, а раз нет линейности, то анализ здесь трудноосуществим. Как правило, создание 5-6 и более потоков существенно усложняет жизнь хакеру. А если потоки еще и шифруются, то хакер надолго завязнет, пытаясь вскрыть приложение.
Подавление изменения операционной среды. Программа сама несколько раз перенастраивает среду окружения, либо вообще отказывается работать в измененной среде. Не все отладчики способны на 100% имитировать среду системы, и если "подопытное" приложение будет менять настройки среды, то рано или поздно "неправильный" отладчик может дать сбой.
Противодействие постановке контрольных точек. Специальный механизм, поддерживаемы микропроцессором, при помощи которого можно исследовать не всю программу сначала, а, например, только начиная с середины. Для этого в середине программы ставят специальный вызов (контрольную точку - Breakpoint), который передает управление отладчику. Недостаток способа кроется в том, что для осуществления прерывания в код исследуемого приложения надо внести изменение. А если приложение время от времени проверяет себя на наличие контрольных точек, то сделать подобное будет весьма и весьма непросто.
Изменение определенных регистров процессора, на которые отладчики неадекватно реагируют. Также как и со средой. Отладчик тоже программа и тоже пользуется и операционной системой и процессором, который один на всех. Так, если менять определенные регистры микропроцессора, которые отладчик не может эмулировать, то можно существенно "подорвать" его здоровье.
Дизассемблеры и дамперы
Про дизассемблер было сказано выше, а вот про дампер можно добавить то, что это практически тот же дизассемблер, только транслирует он не файл, находящийся на диске в Ассемблерный код, а содержимое оперативной памяти на тот момент, когда приложение начало нормально исполняться (то есть, пройдены все защиты). Это один из коварных средств взлома, при котором хакеру не надо бороться с механизмами, противодействующими отладке, он лишь ждет, когда приложение закончит все проверки на легальность запуска, проверяя метки на диске, и начинает нормальную работу. В этот момент дампер и снимает "чистенький" код без примесей. К всеобщей радости не все защиты могут просто так себя раскрыть! Об этом поподробнее:
Шифрование. Самый простой и эффективный способ противодействия. Подразумевает, что определенная часть кода никогда не появляется в свободном виде. Код дешифруется только перед передачей ему управления. То есть вся программа или ее часть находится в зашифрованном виде, а расшифровывается только перед тем как исполниться. Соответственно, чтобы проанализировать ее код надо воспользоваться отладчиком, а его работу можно очень и очень осложнить (см. выше)!
Шифрование и дешифрование (динамическое изменение кода). Более продвинутый способ шифрования, который не просто дешифрует часть кода при исполнении, но и шифрует его обратно, как только он был исполнен. При такой защите хакеру придется проводить все время с отладчиком, и взлом защиты затянется на очень и очень долгое время.
Использование виртуальных машин. Еще одна модернизация шифрования. Способ заключается в том, чтобы не просто шифровать и дешифровать целые фрагменты кода целиком, а делать это покомандно, подобно тому, как действует отладчик или виртуальная машина: взять код, преобразовать в машинный и передать на исполнение, и так пока весь модуль не будет исполнен. Этот способ гораздо эффективнее предыдущих, так как функции приложения вообще никогда не бывают открытыми для хакера. Естественно, что его трудно реализовать, но реализовав, можно оградить себя от посягательств любых хакеров. В этом способе кроется также и недостаток - снижение производительности, ведь на подобное транслирование требуется много времени, и, соответственно, способ хорош для защиты только критических участков кода.
Дополнительные способы противодействия
Здесь уже даются общие вводные, ведь защита может быть эффективной только тогда, когда каждый ее модуль написан на совесть с использованием различных ухищрений. То есть все рецепты, о которых говорилось выше, должны в той или иной форме присутствовать в любой системе.
Использовать для хранения данных защиты системные ресурсы Windows: дополнительную память, выделяемую для параметров окон и локальные хранилища потоков. Суть способа состоит в нестандартном использовании стандартных областей, скажем, хранить ключи, пароли… и т.п., совсем не там, где их будут искать при взломе в первую очередь.
Использовать операции сравнения нестандартными способами, во избежание их явного присутствия. Для сравнения есть определенные инструкции микропроцессора, о которых знают и разработчики и хакеры. А если попытаться использовать нестандартные виды сравнения, то можно слегка запутать хакера, ожидающего стандартного ответа.
Избегать обращений к переменным, относящимся к защите напрямую. То есть использовать любые косвенные способы доступа к специальным областям.
Использовать метод "зеркалирования" событий, то есть применять нестандартные действия на стандартные вызовы. Об этом говорилось выше.
Использовать для шифрования надежные, проверенные временем алгоритмы.
Выше перечислены даже не основные, а общеизвестные подходы. Об оригинальных разработках мы узнаем позже, как только хакеры смогут взломать очередную уникальную защиту.
Обзор современных средств защиты
В этом разделе приводятся сравнительные характеристики основных игроков на рынке защит. Большинство из них работают в сфере защиты компакт-дисков, однако есть и "защитники" shareware программ (защита от взлома в чистом виде), и компании, организующие аппаратную защиту.
Вы сами можете сравнить различные продукты, пользуясь сведениями, приведёнными ниже, или раскопав больше информации на сайтах производителей или на http://www.cdmediaworld.com/.
Забегая вперёд, подведу итог исследованиям: на сегодняшний день лидерами в области защиты от копирования являются Star Force и Aladdin. Однако их рынки едва ли пересекаются. Star Force больше рассчитан на защиту мелких и средних продуктов, таких как игры, shareware-программы, и т.п., к тому же эта защита стоит относительно дешево. Защита Aladdin обходится дороже и рассчитана на рынок серьёзных и дорогих систем.
Могу вам только пожелать успешно защищать свою продукцию и сполна получать добываемую суровым программерским трудом прибыль. Удачи!
CD-COPS
Тип защиты: |
Измерение физических характеристик без нанесения особых меток на носитель |
Способ преодоления защиты: |
"Кряк" |
Аппаратная совместимость (cd/dvd-приводы разных производителей): |
Средняя (совместима только с популярными приводами) |
Наличие особой аппаратуры для защиты серии: |
НЕ требуется |
Предоставление SDK для производителей: |
ДА |
Защита мелких партий (CD/R/RW): |
НЕТ |
Фирма - производитель: |
Link Data Security (http://www.linkdata.com/) |
Коммерческие продукты, использующие данный вид защиты: |
Interactive English / De Agostini
National encyklopediа
Agostini Atlas 99
Agostini Basetera
BMM
DK Kort
Lademanns'99
|
Особенности защиты: |
Данная программа пользуется самой эффективной системой защитой от копирования, основанной не на нанесении физических меток, а на способе измерения специфических характеристик CD\DVD-ROM. По словам производителя, система анализирует физический угол между прошлым и текущими логическими блоками на компакт-диске.
Слабое место защиты - это сам код, анализирующий углы. Фирме пока не удалось найти эффективного способа противодействия дизассемблерам и отладчикам.
|
Star Force
Тип защиты: |
Измерение физических характеристик без нанесения особых меток на носитель |
Способ преодоления защиты: |
Способ не найден (теоретически взлом возможен путем пошаговой отладки нестандартным отладчиком в среде эмуляции операционной системы) |
Аппаратная совместимость (cd/dvd-приводы разных производителей): |
100% (за счет возможности ввода специального ключа) |
Наличие особой аппаратуры для защиты серии: |
НЕ требуется |
Предоставление SDK для производителей: |
ДА |
Защита мелких партий (CD/R/RW): |
ДА |
Фирма - производитель: |
Protection Technology (http://www.star-force.com/) |
Коммерческие продукты, использующие данный вид защиты: |
1С (игры), Нивал, Softmax Co, Q-puncture Inc, Scholastic, Hypnosys World, руссобит-м (игры)
Российские клиенты компании:
1С, Диасофт, Руссобит, Лукойл, Бука, Акела
|
Особенности защиты: |
Данная программа так же, как CD-COPS и TAGES, пользуется самой эффективной системой защитой от копирования, основанной на способе измерения специфических характеристик CD\DVD-ROM. Поскольку защита не вскрыта, то не известен и способ, которым производителям удается идентифицировать различные диски. Заявленная 100% совместимость с любой аппаратурой и 100% идентификация дисков подтверждается независимыми сайтами.
Защита эффективно противодействует отладчикам и дизассемблерам. Эффективность защиты подтверждает тот факт, что за год существования не нашелся способ ее нейтрализации. Дополнительный лоск защите придает возможность защиты мелких партий дисков (CD-R\RW) и наличие SDK, при помощи которого разработчики игр могут шифровать отдельные фрагменты кода и данных. Отдельно можно воспользоваться функцией шифрования игровых данных от несанкционированного "перевода" или "адаптации".
|
LaserLock
Тип защиты: |
Физическое нанесение метки на носитель |
Способ преодоления защиты: |
Копирование (BlindRead), "кряк", эмуляция (D-Tools) |
Аппаратная совместимость (cd/dvd-приводы разных производителей): |
Низкая |
Наличие особой аппаратуры для защиты серии: |
ДА, требуется |
Предоставление SDK для производителей: |
ДА |
Защита мелких партий (CD/R/RW): |
НЕТ |
Фирма - производитель: |
MLS LaserLock International (http://www.laserlock.com/) |
Коммерческие продукты, использующие данный вид защиты:
|
Asghard, Fallout 2, Icewind Dale, Jagged Alliance 2, Messiah, Metro Police, Outcast, Shogo, SpecOps |
Особенности защиты: |
Использует уникальную маркировку. Каждое приложение на CD имеет уникальную блокировку параметра, который отвечает конечную защиту от копирования.
Много слов, а мало дела. Продукт уже вскрыт всеми возможными методами. Разработчики системы явно не успевают вносить изменения в код защиты для противодействия уловкам пиратов.
|
SafeDisk
Тип защиты: |
Физическое нанесение метки на носитель |
Способ преодоления защиты: |
Копирование (CloneCD), "кряк", эмуляция (D-Tools) |
Аппаратная совместимость (cd/dvd-приводы разных производителей): |
Хорошая |
Наличие особой аппаратуры для защиты серии: |
ДА, требуется |
Предоставление SDK для производителей: |
ДА |
Защита мелких партий (CD/R/RW): |
НЕТ |
Фирма - производитель: |
Macrovision Corporation (http://www.macrovision.com/) |
Коммерческие продукты, использующие данный вид защиты: |
Практически все игры после 01-01-2001 |
Особенности защиты: |
Здесь также применяется метод нанесения физических меток, для чего требуется дополнительное оборудование. Производитель утверждает о большой эффективности системы, не раскрывая методов, которые применяются в защите. Только пиравтов это не остановило. Все программы, защищенные данной системой уже вскрыты. Способов противодействия защите также найдено несколько. Невзирая на предоставление SDK компаниям-производителям игр не удалось обеспечить надежного противодействия |
SecuRom
Тип защиты: |
Физическое нанесение метки на носитель |
Способ преодоления защиты: |
"Кряк", эмуляция (D-Tools) |
Аппаратная совместимость (cd/dvd-приводы разных производителей): |
Низкая |
Наличие особой аппаратуры для защиты серии: |
ДА, требуется |
Предоставление SDK для производителей: |
НЕТ |
Защита мелких партий (CD/R/RW): |
НЕТ |
Фирма - производитель: |
Sony (http://www.securom.com/) |
Коммерческие продукты, использующие данный вид защиты: |
Diablo 2, SimCity 3000, Decent FreeSpace, FIFA 99, Panzer Commander, S.A.G.A: Rage of the Vikings |
Особенности защиты: |
Используются все те же метки. Достаточно интересным отличием данной защиты является то, что они действительно некопируемые. По крайней мере до сих пор не найдено программ, способных побитово копировать защищенные диски. В остальном же так же как и со многими системами - есть методы обхода защиты, и это невзирая на громкое имя корпорации, производящей защиту. Справедливости ради стоит отметить, что над совершенствованием защиты ведутся постоянные работы. Кто знает, может им и удастся стать абсолютно непроницаемыми. Некопируемая метка уже есть. |
TAGES
Тип защиты: |
Измерение физических характеристик без нанесения особых меток на носитель |
Способ преодоления защиты: |
Эмуляция, "Кряк" |
Аппаратная совместимость (cd/dvd-приводы разных производителей): |
Высокая |
Наличие особой аппаратуры для защиты серии: |
НЕ требуется |
Предоставление SDK для производителей: |
НЕТ |
Защита мелких партий (CD/R/RW): |
НЕТ |
Фирма - производитель: |
Thomson & MPO
(http://www.licensing.thomson-csf.com/buy/cdcopy.html)
|
Коммерческие продукты, использующие данный вид защиты: |
Moto Racer 3 |
Особенности защиты: |
Защита основана на достаточно оригинальном методе многократного чтения одного и того же сектора с последующим сравнением результатов. Вполне возможно, что здесь происходит анализ физических характеристик носителя. Слабое место защиты ее программный модуль, который уже вскрыт |
Aladdin
Тип защиты: |
Защита от несанкционированного использования. Метод реализации - электронный ключ |
Способ преодоления защиты: |
Новая версия еще не вскрыта (теоретический способ взлома - эмуляция HASP и анализ исполняемого кода) |
Аппаратная совместимость (cd/dvd-приводы разных производителей): |
- |
Наличие особой аппаратуры для защиты серии: |
Требуется электронный ключ |
Предоставление SDK для производителей: |
ДА |
Защита мелких партий (CD/R/RW): |
ДА |
Фирма - производитель: |
"Аладдин" (http://www.aladdin.ru)
|
Коммерческие продукты, использующие данный вид защиты: |
1С, АСКОН |
Особенности защиты: |
Защита базируется на использовании внешних электронных ключей, подключаемых к портам компьютеров. Заявлены разные модели HASP для портов USB, , COM. Платы ISA, PCI. Используются мощные уникальные ключи. Защита снабжается SDK. Слабое место защиты - обращение к портам, которые можно эмулировать. Из особенностей SDK можно отметить легкость освоения. При использовании возможностей HASP4 возможно создать защиту высокого уровня.
ЕДИНСТВЕННАЯ ИЗ ПРЕДСТАВЛЕННЫХ ЗАЩИТ ИМЕЕТ В НАЛИЧИИ СЕТЕВЫЕ ЛИЦЕНЗИИ
|
Подведение итогов
Выбор защиты
В приложении 2 приведены характеристики защит. Здесь нет необходимости описывать какая защита лучше, а какая хуже. Из сравнительной таблицы и так видно кто есть кто.
Из имеющихся на данное время систем защит мы имеем две системы:
Защиту от копирования и взлома - StarForce;
Защиту от копирования и взлома - "Аладдин".
Обе системы предлагают защиту, но она (защита) основана на разных принципах: в случае StarForce предполагается использовать привязки защищаемой программы к компакт-диску, в случае компании "Аладдин", предполагается использовать электронный ключ, подключаемый к порту компьютера. Писать какой способ лучше, а какой хуже, наверное, можно, но полемика здесь сравнима с полемикой, о том, какой язык программирования луче - и в чистом виде ни к чему не ведет. Отмечу, что у каждой системы свои достоинства и недостатки (о которых будет рассказано ниже), но главное в том, что каждая из систем направлена строго на определенный сегмент рынка: StarForce ориентирован, в первую очередь, на рынок игровых программ, или, иными словами, на рынок индивидуальных пользователей, в то время как HASP больше направлен на рынок корпоративных пользователей.
Коммерческий аспект
Давайте ответим на простой вопрос: а зачем нужна защита для создаваемого ПО, если она в итоге ломается?
Ответ очень прост. При выпуске программного продукта (игрового или корпоративного) может случиться так, что кряк ил сломанная версия появятся на рынке даже раньше полноценного релиза (что зачастую и происходит). Эта судьба касается практически всех программных продуктов, независимо от того защищены они специальным образом или нет.
Что же получается? Компания производитель лишается своей прибыли. Если говорить о западных компаниях, то они все равно получают свою прибыль от легального сектора экономики, и пиратство для них, конечно же ощутимо, но не смертельно. Если мы возьмем нашу компанию, то получим полное банкротство, так как никто не будет покупать легальное ПО, когда рядом лежит тоже самое по цене несоизмеримо меньше.
Что же позволит сделать эффективная защита для выпускаемого ПО?
Во-первых, устойчивая к взлому защита позволит существенно снизить цены на собственную продукцию со стороны производителей ПО, то есть сделать так, чтобы было бы не выгодно вкладывать деньги во взлом ПО со стороны пиратов. А для пользователей не имело бы смысла искать сломанную копию программного обеспечения.
Во-вторых, устойчивая защита позволяет производителю программного обеспечения гарантировать возврат инвестиций. Говоря простым языком, если защита вскрывается за 4-5 месяцев, то компания-производитель может продать достаточное количество копий своего продукта, чтобы покрыть все расходы на разработку и производство и получить прибыль. А если новая версия продукта выходит через 7-8 месяцев, то коммерческий успех можно повторять до бесконечности.
Иными словами недорогая и эффективная защита поможет компаниям-разработчикам в возврате вложенных средств.
Также интересен такой аспект как управление продажами, при котором возможен индивидуальный подход к каждому клиенту.
Об эффективности защиты
Оба варианта защит предусматривают два способа внедрения в тело программного обеспечения:
Вариант использования готовой защиты;
Использование SDK.
Использование готовой защиты позволит наиболее быстро установить (внедрить) защиту в свой программных продукт, но здесь есть одно "но". Встроенная защита, обычно, очень легко ломается. К сожалению, многие компании идут как раз по пути наименьшего сопротивления, то есть по пути стандартной защиты, получая, в итоге, сломанный пиратами свой программный продукт. Причем, сломанный в кратчайшие сроки. В итоге ломается не только продукт, но и дискредитируется компания, которая производит данную защиту. Хотя компания ни в чем и не виновата.
Использование SDK позволит встроить защиту в разрабатываемое ПО наиболее эффективным образом (так называемый способ размазанной защиты). Этот способ требует некоторых дополнительных издержек на обучение специалистов и написание дополнительного кода в тело имеющегося ПО. Но игра стоит свеч.
Цена вопроса
Давайте рассмотрим во что обойдется внедрение защиты.
Star-Force
В таблице Таблица 3 продемонстрированы цены и объект защиты.
Таблица 3. Стоимость услуг SF
Тираж программного продукта, компакт-дисков |
Выплата с диска, USD
(по накопительному принципу)
|
Шифрование выполняемых файлов (EXE, DLL), USD |
До 1 000 |
0.2 |
300 |
1 000 … 3 000 |
0.15 |
3 000 …10 000 |
0.1 |
Свыше 10 000 |
0.05 |
Сравнение с конкурентами
Если обратиться к ценам (зарубежных) конкурентов, то можно получить следующую картину относительно объема партии 5000 CD и с учетом того, что данными системами можно защищать только печатные диски, а не CD\r\rw:
SecuROM: криптовка $500 + плата за каждый диск (роялти) $0.13
SafeDisc: криптовка $500 + плата за каждый диск (роялти) $0.14
Получается, что использование отечественной защиты, естественно, удорожает стоимость конечного продукта, но не на много.
Считаем, что цена SF является приемлемой и даже низкой.
Цена защиты делает ее наиболее эффективной для рынка индивидуальных пользователей.
"Аладдин"
При выпуске мелких партий продуктов возможно использование защиты с использованием электронных ключей. Недостаток данного метода заключается в стоимости ключа. Самый надежный ключ - является самым дорогим и навороченным.
Разброс цен следующий: от 13,5 у.е. (самый дешевый ключ+большой объем поставки) до 270 у.е. (самый дорогой в кол-ве 1 штуки). Все зависит от модели ключа; сетевой он / не сетевой; размера поставки). В отличии от SF, у "Алладина" имеются сетевые ключи, что позволяет организовать доступ по принципу клиент-сервер.
Стоимость SDK варьируется 25 до 45 у.е., в зависимости от модели ключа - для ключей HASP; для Hardlock - DK - от 30 до 34 у.е., мастер-комплекты (отличаются от DK наличием криптоплаты) - до 104 у.е.
Устанавливать дешевый ключ не выгодно, так как независимо от устойчивости к взлому приложения, ключ очень уязвим. Для программного продукта необходимо выбирать ключ средней и высокой категории, используя все его возможности по максимуму.
В итоге получается, что ключом можно защитить программное обеспечение стоимостью выше 200-400 долларов. Стоимость достаточна высока, поэтому данный тип защиты более ориентирован на корпоративный рынок дорогих программных систем.
Схема внедрения защиты
Внедрение любой стороннего инструментария, в том числе и защиты, сопровождается сложностями. Сложности внедрения защиты связано с тем, что помимо изучения вопроса безопасности необходимо расширить круг обязанностей разработчиков и службы технической поддержки.
Разработчики должны изучить функции SDK, представляемого SF и Аладдин, на уровне достаточном для реализации функций и задач интеграции защиты в новой или разрабатываемое ПО.
Особенно сложности будут при реализации защиты для существующих программных продуктов, так как придется встраивать защиту в исходные тексты, что повлечет за собой затраты на дополнительное тестирование и появление новой версии продукта.
По независимой оценки, специалистов использовавших SDK от SF следует отметить, что сам SDK можно отнести к среднему уровню сложности для понимания разработчиками (к примеру, SDK Алладина на порядок проще), но она укладывается в разумные рамки по времени, необходимому на изучение (порядка 1 человек осваивает систему за 3-4 дня).
В целях удешевления общей стоимости внедрения рекомендуется провести пробное обучение специалистов Заказчика и выполнить пилотный проект, после чего принять решение о дальнейшем развитии системы защиты на базе Заказчика. Общую поэтапную схему можно увидеть на рисунке (Рисунок 1)
Дополнительно трудности возникают в осуществлении службой технической поддержки несвойственных ранее функций:
Обращения пользователей по поводу неработающих CD (если защита не срабатывает на редком приводе) и отказов электронных ключей.
Расход на расширение службы технической поддержки также необходимо учитывать при оценке общей стоимости защиты.
![](2.gif)
Рисунок 1. Схема внедрения защит Star-Force или "Аладдин"
Рекомендации по выбору защиты
Определившись с финалистами, давайте вспомним, что же нам необходимо защищать и подберем защиту для конкретного продукта, имеющегося у Заказчика (Таблица 4).
Таблица 4 - Объект защиты и тип лицензии защищаемого продукта
Программа для ЭВМ |
Тип лицензии |
Объект защиты |
LSHead |
Рабочее место |
EXE, DLL plug-in к 3D-MAX и Maya |
LSHead Pro |
Рабочее место. Критично по времени исполнения |
EXE, DLL plug-in к 3D-MAX и Maya |
LSHead SDK |
% с тиража, время |
LIB |
LSHead WWW |
Сайт, время |
ActiveX |
PsyTest |
Индивидуальное использование |
EXE |
Game |
Индивидуальное использование |
EXE |
Учитывая специфику каждого программного продукта, попробуем дать общие рекомендации для организации эффективной защиты без привязки к конкретному производителю.
LSHead SDK
Самый сложный, с точки зрения защиты программный продукт, так как представляет собой не отдельный исполняемый модуль, а отдельную библиотеку. Защитить полностью без потерь в производительности не представляется возможным. Если заказчик будет поставлять SDK в открытом, виде, то защитить его невозможно совсем. В этом случае можно эффективно организовать защиту рекомендуя компании-производителю программы (использующей данный SDK) пользоваться максимально эффективным способом защиты от взлома и копирования.
LSHead и LSHead Pro
Поскольку ноу-хау заказчика составляет оригинальность модуля расчета мимики персонажа в реальном времени, то защитить сразу весь продукт невозможно. Здесь основную роль играет фактор времени… Любая эффективная защита вынуждена определенным образом шифровать области исполняемого модуля, а это дополнительные издержки в производительности. Соответственно, защитив продукт "в лоб" теряется скорость работы. И здесь на помощь приходит SDK. Разработчики заказчика должны сами определить модули, которые необходимо защитить.
LSHead WWW
На данный момент не представляется возможным защитить существующими продуктами.
PsyTest
Рекомендации, такие же, как и выше. Необходимо использовать SDK защиты. Здесь еще нужно учитывать также не только защиту кода от взлома, но и защиту данных от нелегальных "дополнений" и изменений.
Game
Рекомендации, такие же, как и выше. Необходимо использовать SDK защиты. Особенно, в игровой программе необходимо защищать ресурсы от несанкционированных действий, таких как изменений ресурсов (нелегальный перевод картинок и звуков), вывод ресурсов из состава игры.
Приведенные выше рекомендации были общими, без привязки к конкретной реализации защиты. Напомню, что мы выбираем из двух защит, принципиально отличающихся по цене и типу привязки. Это Star-force (привязка к компакт диску и характеристикам компьютера, отсутствие сетевых лицензий) и "Аладдин" (привязка к электронным ключам, наличие сетевых лицензий).
Рекомендации также учитывали такой немаловажный критерий как традиционность защиты для данного сегмента рынка. Данный критерий, даже, некоторым образом отодвинул на второй план такой главенствующий фактор, как эффективность защиты. Также во внимание принимался такой фактор, как планируемый тираж программного продукта и его ориентация (не только по шкале корпоративный-частный, но и по шкале отечественный-зарубежный).
Давайте, посмотрим на таблицу Таблица 5.
Таблица 5. Рекомендации по выбору защиты
Программа для ЭВМ |
Объект защиты |
Рекомендуемая защита |
Причины |
LSHead |
EXE, DLL plug-in к 3D-MAX и Maya |
"Аладдин" |
Традиционный выбор для данного сектора рынка;
Стоимость продукта значительно превышает стоимость электронного ключа нового поколения - HASP4;
Наличие сетевых лицензий;
|
LSHead Pro |
EXE, DLL plug-in к 3D-MAX и Maya |
"Аладдин" |
Традиционный выбор для данного сектора рынка;
Стоимость продукта значительно превышает стоимость электронного ключа нового поколения - HASP4;
Наличие сетевых лицензий;
|
LSHead SDK |
LIB |
Star-Force |
Абсолютно эффективная защита;
Защита с привязкой к диску традиционно применяется в игровом секторе;
Эффективно действует в том случае, если производитель игры также пользуется данной защитой. В противном случае необходимо пользоваться HASP
|
LSHead WWW |
ActiveX |
N\A |
На данный момент нет эффективной реализации защиты для данного сегмента. |
PsyTest |
EXE |
Star-Force |
Направленность данного продукта на российский рынок корпоративных и частных пользователей обуславливает выбор эффективной защиты;
Имеется опыт применения подобной защиты в неигровых программах
(Большая Советская Энциклопедия).
|
Game |
EXE |
Star-Force |
Самый эффективный и не дорогой способ защиты игровых программ (можно, конечно, воспользоваться и HASP, но, думаю, что игроманы этого не поймут). |
Подведем некоторый итог для каждой компании, так как явного победителя нам выбрать не удалось. Каждая из защит эффективна только для своего сегмента рынка.
Star-Force это:
-
Надежная защита;
-
Защита не только кода, но и данных;
-
Привязка к компакт-диску и характеристикам компьютера;
-
Не слишком большое удорожание стоимости продукта;
-
Недорогая защита мелких партий (на cd-r\rw);
-
Эффективное SDK.
"Аладдин" - это:
-
Сетевые лицензии;
-
Надежные электронные ключи;
-
Быстрое в изучении SDK;
- Защита не только кода но и данных;
-
Возможности реализации различных маркетинговых схем.
Сложность тех. Поддержки защищенных продуктов
Ранее основной проблемой всех систем, включая SF, была несовместимость защиты с некоторыми видами приводов CD\DVD (продукцией No-name, и рядом устройств для ноутбуков). SF успешно решила данную проблему двумя способами. Во-первых, список совместимость с приводами постоянно растет. Во-вторых, в системе имеется возможность введения универсального кода, который позволит запустить приложение, если диск не аутентифицируется.
Последняя функция, безусловно, является дырой в защите. Но ее наличие или отсутствие определяет копания, выпускающая программное обеспечение (паблишер).
В случае использования данной функции необходимо организовать службу поддержки, регистрирующей запросы от пользователей и создающей Rescue ключи (служба получает запросы от пользователей и генерирует ключи через сервер SF).
В случае выбора защиты "Алладин" технической поддержке придется отвечать на вопросы об установке драйверов и о работе с портами.
Послесловие
В завершении статьи хотелось бы поблагодарить всех, кто помогал в работе над статьей. Хотелось бы отдельно поблагодарить компанию Lifemi (www.lifemi.ru), для которой, собственно, и проводилась исследовательская работа по выпору защиты для коммерческих продуктов, что и явилось поводом для написания данной статьи. Хочется надеяться, что материал, приведенный в данной статье поможет и другим компаниям-разработчикам сделать правильный выбор.