ОБЗОРЫ
Александр Новичков, Рубен Сардарян
Несмотря на усилия самых разных организаций, компьютерное пиратство продолжается. В среднем доля пиратского ПО в мире составляет 40%, то есть из каждых десяти копий программы четыре, попросту говоря, украдены у производителя.
Россия находится на пятом месте в списке тех стран, где пираты более всего лютуют. И если для западных компаний пиратство - зло ощутимое, но не критичное для бизнеса, то для многих отечественных фирм оно может оказаться подводной скалой, о которую разобьются все инвестиционные планы.
Бороться с пиратством можно различными способами. Основным, полагаем, должен быть легитимный. То есть нужны грамотные законы, позволяющие преследовать пиратов и привлекать их к административной или уголовной ответственности. К сожалению, пока таких законов нет.
Рис. 1. Динамическая зависимость прибыли от степени защищенности продукта
Другой эффективный метод борьбы с пиратством - экономический. Если рыночная цена продукта может сравниться с ценой продукта взломанного, то практически наверняка покупатель предпочтет лицензионный продукт пиратскому. Однако подобный способ борьбы с пиратством подходит далеко не всем производителям программного обеспечения.
Остается третий метод - защита программного обеспечения от взлома и нелегального копирования. Хорошая защита доставляет немало хлопот пиратам и в конечном счете позволяет софтверным предприятиям получить свою долю прибыли. (На рис. 1 отражена зависимость получения прибыли от продаж незащищенного и защищенного продуктов).
Требования к защите
Основные требования, предъявляемые к современной системе защиты, сводятся к следующему.
· Защита должна иметь большой запас прочности, то есть учитывать высокую квалификацию пиратов вообще и российских в частности, и быть способной противостоять их натиску в течение долгого времени.
Известно, что абсолютно надежной защиты не бывает, но выбранная система должна обеспечить компании-разработчику достаточную временную фору, пока пираты не научатся вскрывать данный продукт.
· По возможности не следует привязываться к аппаратной конфигурации компьютера, поскольку ПК не есть вещь в себе и его отдельные компоненты могут и должны быть заменяемыми по мере старения.
Таблица 1. Характеристика защищаемых программ
Таблица 2. Сравнительный обзор систем защиты
Хотя компании, разрабатывающие защиту, смогли сделать так, что привязка к оборудованию не вызывает особых проблем при работе, желательна независимость защиты от аппаратной конфигурации компьютера; логичнее привязывать ее к аппаратному ключу или компакт-диску. С помощью ключей можно реализовывать также различные схемы продаж лицензий. Но ключами имеет смысл защищать дорогой софт, а для дисков подходят и недорогие программные продукты.
· По возможности не нужно использовать для защиты дорогие дополнительные аппаратные приспособления, которые резко повышают стоимость защиты, а стало быть, и конечного продукта.
Таблица 3. Объект защиты и тип лицензии защищаемого продукта
Для недорогой программы нет резона использовать дорогую защиту. При расчете ее стоимости необходимо учитывать стоимость защищаемого программного продукта.
· Защита от взлома должна быть основана на оригинальных принципах. Критерием может служить тот факт, что защита еще никем не взломана либо взломана, но с привлечением всех возможных способов.
Защита может быть эффективной, если она находится в состоянии постоянного развития. Это значит, что разработчики защиты отслеживают хакерские форумы и своевременно латают дыры в собственных системах.
· Нельзя препятствовать свободному копированию защищенных данных (запрещается только несанкционированный запуск, то есть приложение копируется, но не исполняется).
В принципе можно по отдельности рассматривать защиту от копирования и от распространения (или нераспространения). Данный критерий предполагает свободное копирование, но авторизованный запуск.
· Защита должна быть подобрана с учетом традиций данного сегмента рынка ПО.
Если производитель хочет выйти на мировой рынок, то ему нужна защита, типичная для того сегмента, для которого предназначена программа. Так, например, мало кто решится ставить защиту, основанную на электронных ключах, на игровую программу, поскольку никто из производителей в данном сегменте такой защитой не пользуется. Соответственно, защита не должна вызывать отторжения у конечного пользователя своей экстравагантностью.
· Стоимость защиты для разработчика и покупателя должна соотноситься со стоимостью программы.
Современные средства защиты
Известно, что систем защит существует множество, но не все из них могут удовлетворять конечного потребителя по соотношению цена/качество.
В табл. 1 приведены исходные данные по "типовым" программным продуктам, которые необходимо защитить. Особое внимание следует обратить на ценовые категории и сегмент рынка, хотя каждая позиция может считаться ключевой. Так как любая система защиты делает продукт дороже, выбирать следует такую, которая минимально повышает стоимость ПО для каждой отдельной категории.
Большинство основных игроков работает в сфере защиты компакт-дисков, однако есть и "защитники" shareware-программ (защита от взлома в чистом виде), и компании, организующие аппаратную защиту.
Читатель может сам сравнить различные продукты, пользуясь сведениями, приведенными в табл. 2, а также информацией, представленной на сайтах производителей либо на www.cdmediaworld.com.
По результатам нашего исследования, в области защиты от копирования сегодня лидируют StarForce и "Аладдин". Однако их рынки едва ли пересекаются. Система StarForce больше рассчитана на защиту мелких и средних продуктов, таких, как игры, shareware-программы и т. п., к тому же она стоит относительно дешево. "Аладдин" обходится дороже и рассчитан на рынок дорогих систем.
Выбор защиты. Мы приведем алгоритм выбора защиты, для простоты используя лишь два варианта - StarForce и "Аладдин". Обе системы обеспечивают защиту, но основанную на разных принципах: в случае StarForce предусматривается привязка защищаемой программы к компакт-диску, компания "Аладдин" предлагает использовать электронный ключ, подключаемый к порту компьютера. Отметим, что у каждой системы есть свои достоинства и недостатки (о которых будет рассказано ниже), но главное в том, что они направлены строго на определенные сегменты рынка: StarForce ориентирована в первую очередь на рынок игровых программ, или, иными словами, на рынок индивидуальных пользователей, в то время как электронные ключи "Аладдина" больше направлены на рынок корпоративных пользователей.
Оба варианта защиты предусматривают два способа внедрения в тело программного обеспечения: использование готовой системы и пакета разработчика Software Development Kit (SDK).
Те, кто прибегает к готовой системе, смогут быстро внедрить защиту в свой программный продукт, однако здесь есть одно "но". Встроенная таким образом защита обычно очень легко ломается. К сожалению, многие компании идут как раз по пути наименьшего сопротивления, то есть по пути стандартной защиты, позволяя пиратам в кратчайшие сроки взломать свой программный продукт. А в результате не только ломается продукт, но дискредитируется компания, которая производит данную защиту. Хотя она ни в чем и не виновата.
Использование SDK позволит встроить защиту в разрабатываемое ПО наиболее эффективным образом (так называемая "размазанная" защита). Этот способ требует некоторых дополнительных издержек на обучение специалистов и написания дополнительного кода для создаваемого ПО. Но игра стоит свеч.
Схема внедрения защиты. Внедрение любого стороннего инструментария, в том числе и защиты, имеет свои сложности. Помимо изучения вопроса безопасности необходимо расширить круг обязанностей разработчиков и службы технической поддержки. Разработчики должны изучить функции SDK, предлагаемого компаниями Protection Technology (StarForce) и "Аладдин", на уровне, достаточном для реализации функций и задач интеграции защиты в новое или разрабатываемое ПО.
Особенно сложно будет защитить уже существующие программные продукты, так как систему придется встраивать в исходные тексты, что повлечет за собой затраты на дополнительное тестирование и появление новой версии продукта.
По оценке специалистов, использовавших SDK StarForce, его можно отнести к среднему уровню сложности для разработчиков, так как изучение пакета укладывается в разумные временные рамки: один человек осваивает систему за три-четыре дня.
Чтобы снизить общую стоимость внедрения, рекомендуется обучить специалистов и выполнить пилотный проект, после чего принять решение о дальнейшем развитии системы защиты. Общая поэтапная схема представлена на рис. 2.
Дополнительные трудности возникают, когда службе технической поддержки приходится выполнять несвойственные ей ранее функции - отвечать на обращения пользователей по поводу неработающих дисков (если защита не срабатывает на мало распространенном приводе CD/DVD-ROM) и отказов электронных ключей.
При оценке общей стоимости защиты необходимо учитывать и расходы на расширение службы технической поддержки.
Ну а теперь подберем систему защиты для конкретного продукта (табл. 3).
Учитывая специфику каждой программы, попробуем дать общие рекомендации по организации их эффективной защиты.
LSHead SDK (фирма LifeMode Interactive)
Это самый сложный с точки зрения защиты программный продукт, так как представляет собой не отдельный исполняемый модуль, а целую библиотеку. Защитить его полностью без потерь в производительности пока не представляется осуществимым. Если SDK будет поставляться в открытом виде, то защита вообще невозможна. В этом случае целесообразно порекомендовать производителю программы (использующей данный SDK) пользоваться максимально эффективным способом защиты от взлома и копирования.
LSHead и LSHead Pro (фирма LifeMode Interactive)
Поскольку данные модули являются оригинальными разработками для расчета мимики персонажа в реальном времени, то защитить сразу весь продукт практически невозможно. Здесь основную роль играет фактор времени. Любая эффективная защита вынуждена определенным образом шифровать код, а это дополнительные издержки в производительности. Соответственно, если продукт защитить "в лоб", будет потеряна скорость работы. И здесь на помощь приходит SDK. Разработчики ПО должны сами определить тот код (функции, классы), который необходимо защищать.
LSHead WWW (фирма LifeMode Interactive)
На данный момент не представляется возможным защитить существующими продуктами.
PsyTest (авторский продукт Алексея Красовского)
Рекомендации те же, что и выше. Необходимо использовать SDK защиты. Но в этом случае нужно учитывать не только защиту кода от взлома, но и защиту данных от нелегальных "дополнений" и изменений.
Игровая программа
Здесь также не обойтись без применения SDK защиты. Особенно следует защищать ресурсы от несанкционированных действий, таких, как изменения (нелегальный перевод картинок и звуков) и вывод из состава игры.
Приведенные выше рекомендации являются общими и не привязаны к конкретной реализации защиты. Напомню, что мы выбираем из двух способов защиты, принципиально различающихся по цене и типу привязки. Это StarForce (привязка к компакт-диску и характеристикам компьютера, отсутствие сетевых лицензий) и "Аладдин" (привязка к электронным ключам, наличие сетевых лицензий).
Рис. 2. Общая схема внедрения защиты
Рекомендации учитывали и такой немаловажный критерий, как традиционность защиты для данного сегмента рынка. Этот критерий некоторым образом отодвинул на второй план даже фактор эффективности. Кроме того, во внимание принимался планируемый тираж программного продукта и его ориентация (не только по шкале корпоративный - частный, но и по шкале отечественный - зарубежный).
Сложность технической поддержки защищенных продуктов. Ранее основной проблемой всех систем, включая StarForce, была несовместимость защиты с некоторыми видами приводов CD/DVD (продукцией no-name и рядом устройств для ноутбуков). Компания StarForce успешно решила данную проблему двумя способами. Во-первых, список совместимости с приводами постоянно растет. Во-вторых, в системе имеется возможность введения универсального кода, который позволит запустить приложение, если диск не аутентифицируется.
Последняя функция, безусловно, является дырой в защите. Но ее наличие или отсутствие определяет фирма, выпускающая ПО.
В случае применения данной функции необходимо организовать службу поддержки, регистрирующей запросы от пользователей и создающей Rescue-ключи*1 (служба получает запросы и генерирует ключи через сервер StarForce).
_____
*1 Ключ, высылаемый клиенту в случае, если привод CD/DVD-ROM не работает.
В случае выбора защиты компании "Аладдин" службе технической поддержки придется отвечать на вопросы об установке драйверов и о работе с портами.
Исследовательская работа по выбору защиты для коммерческих продуктов проводилась по заказу фирмы Lifemi (www.lifemi.ru).
С Александром Новичковым можно связаться по адресу: alex-golder@mtu.ru , с Рубеном Сардаряном - по адресу: rubs@online.ru.