Защита программного обеспечения доклад

Обновлено: 02.07.2024

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

Защита от несанкционированного использования программ — система мер, направленных на противодействие нелегальному использованию программного обеспечения. При защите могут применяться организационные, юридические, программные и программно-аппаратные средства.

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

Содержание

Технические средства защиты

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

Локальная программная защита

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

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

Сетевая программная защита

Сканирование сети исключает одновременный запуск двух программ с одним регистрационным ключом на двух компьютерах в пределах одной локальной сети.

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

Защита при помощи компакт-дисков

Программа может требовать оригинальный компакт-диск. В частности, такой способ применяется в играх. Стойкость таких защит невелика, ввиду широкого набора инструментов снятия образов компакт-дисков. [1]

Как правило, этот способ защиты применяется для защиты программ, записанных на этом же компакт-диске, являющимся одновременно ключевым.

Для защиты от копирования используется:

Первые два метода практически бесполезны из-за возможности снятия полного образа с диска с использованием соответствующего прикладного ПО. Третий метод считается более надежным (используется, в частности, в защите StarForce). Но существуют программы, которые могут эмулировать диски с учётом геометрии расположения данных, тем самым обходя и эту защиту. В StarForce, в числе прочих проверок, также выполняется проверка возможности записи на вставленный диск. Если она возможна, то диск считается не лицензионным. Однако, если образ будет записан на диск CD-R, то указанная проверка пройдет. Возможно также скрыть тип диска, чтобы CD-R или CD-RW был виден как обычный CD-ROM. Однако, в драйвер защиты может быть встроена проверка на наличие эмуляции.

В настоящее время наибольшую известность в мире имеют системы защиты от копирования SecuROM, StarForce, SafeDisc, CD-RX и Tages. [2]

Для многих программ указанный метод защиты недоступен ввиду отличного способа распространения (например, shareware-программы).

Защита при помощи электронных ключей



Электронный ключ (донгл), вставленный в один из портов компьютера (с интерфейсом USB, LPT или COM) содержит ключевые данные, называемые также лицензией, записанные в него разработчиком защищенной программы. Защита программы основывается на том, что только ему (разработчику) известен полный алгоритм работы ключа. Типы ключевых данных:

  • информация для чтения/записи (в настоящий момент практически не применяется, так как после считывания ключ может быть сэмулирован)
  • ключи аппаратных криптографических алгоритмов (используется наиболее часто)
  • алгоритмы, созданные разработчиком программы (ставший доступным сравнительно недавно метод, в связи с появлением электронных ключей с микропроцессором, способным исполнять произвольный код; в настоящее время используется все чаще)

Достоинства защиты с использованием электронных ключей:

  • Ключ можно вставлять в любой компьютер, на котором необходимо запустить программу
  • Ключ не занимает/не требует наличия дисковода
  • Электронный ключ умеет выполнять криптографические преобразования
  • Современные ключи могут исполнять произвольный код, помещаемый в них разработчиком защиты (пример — Guardant Code, Senselock)

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

  • Цена (15—30 долларов за штуку)
  • Необходимость доставки ключа конечному пользователю

Ранее к недостаткам можно было также отнести невысокое быстродействие ключа (в сравнении с CPU компьютера). Однако современные ключи достигают производительности в 1.25 DMIPS (пример — HASP,Guardant), а техника защиты с их помощью не предполагает постоянного обмена с ключом.

Привязка к параметрам компьютера и активация

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

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

Достоинство в том, что не требуется никакого специфического аппаратного обеспечения, и программу можно распространять посредством цифровой дистрибуции (по Интернет).

Основной недостаток: если пользователь производит модернизацию компьютера (в случае привязки к железу), защита отказывает. Авторы многих программ в подобных случаях готовы дать новый регистрационный код. Например, Microsoft в Windows XP разрешает раз в 120 дней генерировать новый регистрационный код (но в исключительных случаях, позвонив в службу активации, можно получить новый код и после окончания этого срока).

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

Защита программ от копирования путём переноса их в онлайн

Другим направлением защиты программ является использование подхода SaaS, то есть предоставление функционала этих программ (всего или части), как сервиса. При этом код программы расположен и исполняется на сервере, доступном в глобальной сети. Доступ к нему осуществляется по принципу тонкого клиента. Это один из немногих случаев, когда реализуется защита от копирования.

Однако, и здесь возникает ряд проблем, связанных с безопасностью:

Защита кода от анализа

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

Защита программного обеспечения на мобильных платформах

Способы защиты программного обеспечения для мобильных платформ от копирования обычно основываются на невозможности рядового пользователя считывать/изменять хранящиеся в ППЗУ аппарата данные. Может также использоваться активация программного обеспечения.

Устаревшие технические средства защиты

В прошлом применялись и другие методы защиты ПО от нелегального использования.

Ключевая дискета

Метод был распространен во времена MS-DOS, сейчас, в силу устаревания технологии FDD, практически не применяется. Есть четыре основных способа создания некопируемых меток на дискетах:

Запись некопируемых меток на жесткий диск

Некоторые старые программы для DOS создавали некопируемые метки на жёстком диске. Например, файл длиной 1 байт занимает на диске один кластер (не менее 512 байт), и в оставшиеся 511 байт можно записать некоторую информацию. Эта практика практически не используется, так как велик риск потери данных.

Привязка к некоторому физическому объекту

Лицензия программы может привязываться к некоторому физическому объекту, к примеру

Юридические средства защиты

Согласно законодательству, программный код приравнивается к литературным произведениям, и к нему применяются все соответствующие нормативные акты. В контексте защиты ПО используется следующая терминология:

Предусмотрена ответственность, в соответствии с действующим законодательством, как за использование контрафактных экземпляров программ для ЭВМ и баз данных, так и за преодоление применяемых технических средств защиты.

Организационные средства защиты

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

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

Уязвимости современных методов защиты ПО

Уязвимости современных методов защиты можно достаточно строго классифицировать в зависимости от использованного метода защиты.

Использование автоматических средств защиты

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

Это одна из фундаментальных проблем технических средств защиты. Заключается она в том, что система защиты неизбежно создаёт пользователю неудобства, и потому, с точки зрения пользователя, взломанная программа в каком-то смысле лучше, чем оригинальная. Например:

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


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

Защита от несанкционированного использования программ — система мер, направленных на противодействие нелегальному использованию программного обеспечения. При защите могут применяться организационные, юридические, программные и программно-аппаратные средства.

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

Технические средства защиты

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

Локальная программная защита

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

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

Сетевая программная защита

Сканирование сети исключает одновременный запуск двух программ с одним регистрационным ключом на двух компьютерах в пределах одной локальной сети.

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

Защита при помощи компакт-дисков

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

Как правило, этот способ защиты применяется для защиты программ, записанных на этом же компакт-диске, являющимся одновременно ключевым.

Для защиты от копирования используется:

Первые два метода практически бесполезны из-за возможности снятия полного образа с диска с использованием соответствующего прикладного ПО. Третий метод считается более надёжным (используется, в частности, в защите StarForce). Но существуют программы, которые могут эмулировать диски с учётом геометрии расположения данных, тем самым обходя и эту защиту. В StarForce, в числе прочих проверок, также выполняется проверка возможности записи на вставленный диск. Если она возможна, то диск считается не лицензионным. Однако, если образ будет записан на диск CD-R, то указанная проверка пройдет. Существует возможность скрыть тип диска, чтобы CD-R или CD-RW был виден как обычный CD-ROM. Однако, в драйвер защиты может быть встроена проверка на наличие эмуляции.

В настоящее время наибольшую известность в мире имеют системы защиты от копирования SecuROM, StarForce, SafeDisc, CD-RX и Tages.

Для многих программ указанный метод защиты недоступен ввиду отличного способа распространения (например, shareware-программы).

Защита при помощи электронных ключей

Электронный ключ (донгл), вставленный в один из портов компьютера (с интерфейсом USB, LPT или COM) содержит ключевые данные, называемые также лицензией, записанные в него разработчиком

  • информация для чтения/записи (в настоящий момент практически не применяется, так как после считывания ключ может быть сэмулирован)
  • ключи аппаратных криптографических алгоритмов (используется наиболее часто)
  • алгоритмы, созданные разработчиком программы (ставший доступным сравнительно недавно метод, в связи с появлением электронных ключей с микропроцессором, способным исполнять произвольный код; в настоящее время используется все чаще)

Достоинства защиты с использованием электронных ключей:

  • Ключ можно вставлять в любой компьютер, на котором необходимо запустить программу
  • Ключ не занимает/не требует наличия дисковода
  • Электронный ключ умеет выполнять криптографические преобразования
  • Современные ключи могут исполнять произвольный код, помещаемый в них разработчиком защиты (пример — Guardant Code, Senselock)

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

  • Цена (15—30 долларов за штуку)
  • Необходимость доставки ключа конечному пользователю

Ранее к недостаткам можно было также отнести невысокое быстродействие ключа (в сравнении с CPU компьютера). Однако современные ключи достигают производительности в 1.25 DMIPS (пример — HASP, Guardant), а техника защиты с их помощью не предполагает постоянного обмена с ключом.

Привязка к параметрам компьютера и активация

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

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

Достоинство в том, что не требуется никакого специфического аппаратного обеспечения, и программу можно распространять посредством цифровой дистрибуции (по Интернет).

Основной недостаток: если пользователь производит модернизацию компьютера (в случае привязки к железу), защита отказывает. Авторы многих программ в подобных случаях готовы дать новый регистрационный код. Например, Microsoft в Windows XP разрешает раз в 120 дней генерировать новый регистрационный код (но в исключительных случаях, позвонив в службу активации, можно получить новый код и после окончания этого срока).

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

Защита программ от копирования путём переноса их в онлайн

Другим направлением защиты программ является использование подхода SaaS, то есть предоставление функций этих программ (всех или части), как сервиса. При этом код программы расположен и исполняется на сервере, доступном в глобальной сети. Доступ к нему осуществляется по принципу тонкого клиента. Это один из немногих случаев, когда реализуется защита от копирования.

Однако, и здесь возникает ряд проблем, связанных с безопасностью:

Защита кода от анализа

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

Защита программного обеспечения на мобильных платформах

Способы защиты программного обеспечения для мобильных платформ от копирования обычно основываются на невозможности рядового пользователя считывать/изменять хранящиеся в ППЗУ аппарата данные. Может также использоваться активация программного обеспечения.

Устаревшие технические средства защиты

В прошлом применялись и другие методы защиты ПО от нелегального использования.

Ключевая дискета

Метод был распространён во времена MS-DOS, сейчас, в силу устаревания технологии FDD, практически не применяется. Есть четыре основных способа создания некопируемых меток на дискетах:

Запись некопируемых меток на жёсткий диск

Некоторые старые программы для DOS создавали некопируемые метки на жёстком диске. Например, файл длиной 1 байт занимает на диске один кластер (не менее 512 байт), и в оставшиеся 511 байт можно записать некоторую информацию. Эта практика практически не используется, так как велик риск потери данных.

Привязка к некоторому физическому объекту

Лицензия программы может привязываться к некоторому физическому объекту, к примеру:

Юридические средства защиты

Согласно законодательству, программный код приравнивается к литературным произведениям, и к нему применяются все соответствующие нормативные акты. В контексте защиты ПО используется следующая терминология:

Предусмотрена ответственность, в соответствии с действующим законодательством, как за использование контрафактных экземпляров программ для ЭВМ и баз данных, так и за преодоление применяемых технических средств защиты.

Организационные средства защиты

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

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

Недостатки технических методов защиты ПО

Уязвимости современных методов защиты ПО

Уязвимости современных методов защиты можно достаточно строго классифицировать в зависимости от использованного метода защиты.

Использование автоматических средств защиты

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

Это одна из фундаментальных проблем технических средств защиты. Заключается она в том, что система защиты неизбежно создаёт пользователю неудобства, и потому, с точки зрения пользователя, взломанная программа в каком-то смысле лучше, чем оригинальная. Например:

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


По статистике, приведенной в исследовании 2018 BSA Global Software Survey:

  • Нелицензированное (пиратское) ПО составляет 37% от всего объема программного обеспечения, установленного на персональных ПК по всему миру.
  • Стоимость контрафактного ПО оценивается в $46 млрд.
  • Malware, которыми заражены многие пиратские программы, загружаемые из сторонних источников, обходятся бизнесу в $359 млрд в год.
  • Потери от взлома лицензионного ПО составляют порядка $600 млрд ежегодно.

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

Что касается доходов, то по данным BSA бизнес, который решит серьезно отнестись к защите своих программных продуктов, может рассчитывать на повышение прибыли примерно на 11% (впрочем, важно понимать, что это среднее значение).

Но что можно сделать для защиты своего ПО?

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

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

Во-вторых, нужно спросить себя, сколько вы готовы потратить на защиту. Ответ может быть сложным, поэтому, чтобы сделать правильный выбор, стоит проанализировать то, что может понадобиться именно вам.

Затем, когда вы со всем определитесь, можно начинать выбирать защиту, исходя из стратегии использования программного продукта.

Ключевые элементы защиты

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

Еще раз подчеркнем важность выбора адекватной защиты. Если вы собираетесь защитить свой велосипед методом, который применяется в Форт-Ноксе, это вряд ли можно назвать разумным. Есть и обратная зависимость: если хотите защитить Форт-Нокс, не используйте для этого велосипедный замок, это бесполезно, взлом гарантирован. В целом, стратегия лицензирования должна соответствовать цене самого продукта.

Виды защит

Как и говорилось выше, есть различные опции для защиты ПО от взлома и копирования. Эти опции могут отличаться по стоимости, уровню защиты и специализации.

Офлайн-программная защита

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

Онлайн-программная защита

Здесь уже речь идет о более серьезном методе — проверке лицензии при помощи сервера лицензирования. В этом случае требуются относительно высокие затраты в начале и периодические расходы позже. Как и в предыдущем варианте, используется программная оболочка, но параметры лицензирования чекаются и настраиваются в онлайне.

При желании можно добавить опции проверки ПО: как используется, есть лицензия или нет. Если требуется постоянное подключение к сети, то продукт, скорее всего, будет работать не всегда и не везде.

Степень серьезности такой защиты — между средним и высоким уровнем.

Аппаратная защита

Один из наиболее надежных методов, который сочетает в себе преимущества всех прочих стратегий. За лицензирование отвечает электронный USB-ключ, которому не требуется подключение к сети. Цена каждого ключа для разработчика низкая, нет периодических дополнительных трат. Реализовать можно как при помощи API, так и посредством программной оболочки.

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

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

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

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

На фоне этого может показаться, что защищать программное обеспечение не имеет смысла — все равно сломают, однако это далеко не так.

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

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

Так что же и от кого следует защищать?

В общих чертах ответ на этот вопрос выглядит следующим образом:

  1. Выполняемые модули программы — от работы в несанкционированных условиях;
  2. Данные — от их использования независимо от выполняемых модулей;
  3. Программу — от ее несанкционированного копирования и/или применения;

Разумеется, в зависимости от характера защищаемого программного обеспечения этот список может меняться.

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

Теперь давайте последовательно рассмотрим механизмы, применяемые с целью защиты.

Простая проверка поврежденного носителя

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

Достоинства: простота и быстрота реализации.

Недостатки: требуется аппаратное участие со стороны завода-производителя, достаточно зыбка и в принципе легко взламываема.

Ограничение числа установок программы

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

Недостатки: требуется аппаратное участие со стороны завода-производителя; защита не может быть применена самостоятельно (без проверки носителя на предмет наличия дефекта поверхности).

Ограничение числа запусков программы (limited use copy)

Достоинства: обладает хорошим рекламным свойством.

Недостатки: для взлома достаточно определить место в системе (файл или системный реестр), куда заносится информация о количестве оставшихся запусков.

Контрольные вопросы

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

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

Недостатки: механизм не может применяться как основное средство защиты программы или обучающего курса.

Временные (умирающие) версии

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

Недостатки: первый вариант попросту можно обойти, изменив системную дату, хотя это и несколько неудобно для пользователя.

Версии, работающие с ограничениями

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

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

Анализ поверхности поврежденного носителя

Достоинства: защита достаточно надежна и обладает наименьшей степенью взламываемости.

Аппаратные ключи (dongles)

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

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

Недостатки:сложность и дороговизна реализации. Дискомфорт при работе (возможны проблемы с портом и принтером). Механизм непригоден для продаж или распространения программного обеспечения средствами Internet.

Сетевая защита

Достоинства: защита полезна при разработке корпоративного продукта.

Недостатки:сложность реализации (необходимость поддержки различных протоколов локальных сетей).

Немного о принятии решения

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

Не следует также называть проверяемый на дефект поверхности файл соответствующим наводящим именем и размещать его в одноименном каталоге.

Рекомендуется заполнить файл в соответствии с его именем (например, придать ему заголовок динамической библиотеки DLL или файла справки HLP и соответствующее имя), таким образом, чтобы у предполагаемого взломщика не возникало сомнений относительно его предназначения как библиотеки, файла справки и т.п.

А как же быть с данными?

Представьте себе такую картину: вы разрабатываете программный продукт, например мультимедийный CD-ROM, который помимо написанной талантливыми программистами программы, содержит массу качественного и актуального материала, например видеороликов или звуков, которые в доступной форме лежат на нем. Не правда ли обидно, ведь пользователь такого диска может использовать все его данные без искуснейшим образом защищенной программы. А если это база данных в стандартном формате (например, dbf), то тут и говорить не о чем, никому тут программа нужна не будет, ведь основная ценность такого пакета в первую очередь в данных. Ясно одно, если тот или иной программный пакет представляет собой не просто какое-то решение или прикладной инструмент, а содержит еще и актуальные данные, то встает вопрос о защите этих данных от использования независимо от программы их представления. Разумеется, речь идет лишь о стандартных форматах данных.

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

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

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

Crypto ++ SDK 3.0

Инструментальный пакет Crypto++ SDK состоит из динамических библиотек OCX, DLL, контролирующих весь процесс защиты, а также вспомогательного средства Key Calculator Wizard, позволяющего генерировать знаковые последовательности для защиты приложений.

Crypto++ SDK применяется для защиты программных продуктов методом “умирающих” версий и предназначен для их распространения с помощью Internet. При этом используются механизмы ограничений количества запусков, инсталляций и ограничения по дате работы программы. Помимо этого в арсенале Crypto++ имеются также средства по поддержке механизма привязки программного продукта к конкретному компьютеру аппаратно. Пакет содержит динамически подключаемые библиотеки, поддерживающие многие распространенные языки программирования, такие как: Visual Basic, Visual C++, Delphi, C++ Builder и Borland C++ . Поддерживается как Win32 так и Win16.

Кроме того, в Crypto ++ встроена поддержка ActiveX и Director Xtras, последняя позволяет защищать приложения, созданные с помощью Macromedia Director так называемые прожекторы (projectors).

Временные (1 год) версии средств разработки механизмов защиты программных продуктов с помощью Crypto++ SDK 3.0 можно скачать с сайта компании Sampson Multimedia. При этом Вам по почте пришлют список паролей для распаковки скаченных Вами модулей (при условии, что Вы указали свой электронный адрес во время регистрации).

Системные требования: Windows 95/98 или Windows NT; Любой OCX (ActiveX) совместимый язык программирования (Delphi, Visual Basic, Microsoft Visual C++ и т.д.).

CripKey

Разработчики предлагают использовать два способа защиты приложений – с помощью CripKey Software Developer Kit или программной реализации тех же функций CrypKey Instant. Программа автоматически устанавливает CrypKey в готовый EXE (как Win 16 так и Win32). Далее заботливый мастер проводит Вас, последовательно помогая выбрать необходимые опции защиты (в основном это опции ограниченной версии).

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

Помимо этого, CrypKey может контролировать использование программного продукта в локальной вычислительной сети. Это означает, что если пользователь заплатил за 5 копий программного продукта, то 6-я копия с сервера приложений в локальной сети не запуститься. Реализованная система не зависит от используемого протокола (IPX, NetBios или WinSockets). Примечательно еще то, что при защите программного продукта средствами CriptKey нет необходимости в разработке множества выполняемых модулей для поддержки различных платформ и сетевых протоколов. Система снабжена автоматическим менеджером очереди приложений, который уведомляет пользователей очереди об освободившейся копии.

Microcosm Copy Protection

Из всего спектра программных решений по защите, разрабатываемых компанией, рассмотрим два следующих:

Dinkey Dongles

Реализует механизм аппаратного ключа, используя для этого порт принтера.

Поддерживает четыре режима Dinkey Dongle: Dinkey 1, Dinkey 1S, Dinkey 2 и Dinkey Net.

Dinkey 1: уникальный серийный номер, присвоенный аппаратному ключу, позволяет защитить лишь одно приложение;

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

Dinkey 2: позволяет реализовать временные или ограниченные версии на базе аппаратного ключа, а также одновременную защиту до 17 приложений. Имеет возможность дистанционно изменять параметры защиты.

Dinkey Net: представляет собой сетевую версию аппаратного ключа Dinkey 2. При установке в локальной вычислительной сети реализует механизм сетевой защиты. Имеет возможность дистанционно изменять параметры защиты.

PC Guard

Инструментальный пакет PC Guard представляет собой систему защиты программных продуктов, позволяющую полностью автоматизировать этот процесс. PC Guard достаточно прост в обращении. Принцип его работы заключается в том, что вокруг защищаемой программы создается этакий конверт, защищающий ее от анализа потенциальным взломщиком или копирования с одного компьютера на другие. Замечательно то, что PC Guard легко комбинируется с любым другим механизмом защиты. Кроме того, в PC Guard для Win32 встроена функция защиты приложения паролем. Защитить можно непосредственно модули EXE или DLL. Этот механизм не требует встраивания библиотек в код защищаемого программного продукта, обеспечивая, таким образом, поддержку практически любого языка программирования. Защитный конверт состоит из нескольких защитных слоев, каждый из которых реализует соответствующую задачу (защита от анализа выполняемых модулей, защита с использованием механизмов ограничений, защита паролем).

PC Guard позволяет обеспечить привязку защищаемого программного продукта к аппаратуре компьютера, а именно: к жесткому диску, к дате BIOS и к установленной операционной системе. PC Guard работает под управлением операционных систем DOS,Windows 3.x (Win16) и Windows 95/98/NT (Win32).

SafeSerial OCX для Windows 95, 98, NT, 2000

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

Библиотека поддерживает языки программирования Delphi (только Win32) , Visual Basic, C++ Builder и другие, поддерживающие механизм ActiveX. Для получения более детальных сведений о работе системы разработчики советуют прочитать руководство по использованию SafeSerial OCX.

Wibu — Key

Аппаратные ключи разрабатываются на базе чипов ASIC (Application Specific Integrated Circuit) и совместимы с персональными компьютерами как PC так и Macintosh.

Lock & Key

Lock & Key разработан для платформ Windows 3.x, 95/98, NT и полностью совместим с Delphi версий 1, 2, 3, 4. Представляет собой достаточно простую реализацию стандартных алгоритмов по созданию временных или ограниченных версий программных продуктов.

Windows Protection Tool-Kit™

Инструментальный пакет Windows Protection Tool-Kit™ работает под управлением Windows 3.x, 95/98, NT. Оснащен механизмом привязки к ключевой дискете, работающим, правда, только под управлением Windows NT. Может защищать программы для работы в локальных сетях на базе Windows NT, Lantastic или Novell. Защищаемые приложения могут привязываться к жесткому диску или к локальной сети. По желанию можно создавать версии с ограничением количества инсталляций, и даже умеющие возвращать количество инсталляций при деинсталляции защищенного программного продукта.

Однако система защищает программный продукт лишь на стадии его установки (setup).

Пакет Windows Protection Tool-Kit™ совместим с такими известными пакетами автоматизации создания инсталляций, как Install Shield и Visual Basic's Setup Wizard, а разрабатывался он для WISE Installation System.

Sheriff

Инструментальный комплекс Sheriff предлагает еще одно средство разработки механизма программной защиты приложений (временных и ограниченных версий) – Sheriff Software Development Kit (SDK) для Win32.

Sheriff представлен пользователю достаточно гибким набором библиотек: как стандартной Windows DLL, так и компонентом ActiveX (OCX control).

В отличие от решений, рассмотренных ранее, API системы Sheriff предлагает самостоятельно настроить все характеристики создаваемой версии программного продукта, а не заполнить поля в стандартном диалоговом окне. Предлагаемый SDK достаточно гибок и включает классы и демонстрационные примеры на различных языках с использованием разнообразных технологий: Visual C++, Visual Basic, Visual FoxPro и Delphi, а также ActiveX Сontrol.

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

Hardlock Bistro

Компания Aladdin разработала Hardlock Bistro – целую серию средств для защиты приложений. Aladdin предлагает наиболее полный набор средств автоматизации защиты приложений, входящих в состав Hardlock Bistro: Espresso Wizard, Espresso, Cappuccino и Lattecino, и девять различных аппаратных привязок для обеспечения функционирования разных механизмов аппаратных зависимостей.

Немного о специфике рынка

Рассмотрев различные средства автоматизации процесса защиты программных продуктов, мы видим, что все они в основном принадлежат к двум классам:

системы, предназначенные для создания временных или ограниченных копий;

системы с аппаратными ключами защиты;

Первые предназначены в основном для распространения программ через мировую компьютерную сеть Internet и давно уже получили широкое распространение во всем мире, вторые – для создания пусть дорогих, но весьма надежно защищенных программ. Следует отметить, что в последнем случае может оказаться, что стоимость аппаратного ключа окажется больше стоимости защищаемого программного продукта.

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

Альтернативой этим двум системам являются системы защиты с анализом поверхности поврежденного носителя. И хотя такие системы неприемлемы для распространения программы средствами Internet, но довольно-таки надежны.

Все рассмотренные системы различаются как по реализуемым механизмам защиты, так и по надежности. Весь вопрос в том, какую систему применять для защиты того или иного программного продукта. Здесь имеет место взаимосвязь игра-свечи как для потенциального взломщика, так и для потенциального покупателя.


Несмотря на наличие всего комплекса законодательных и правовых мер по защите авторских и смежных прав на интеллектуальную собственность, ситуация с пиратским рынком программного обеспечения (ПО) оставляет желать лучшего. Согласно исследованиям компании, IDC Inc., занимающейся изучением мирового рынка информационных технологий и телекоммуникаций, уровень пиратства в России в 2015 г. составил 62 % [1]. Несмотря на то, что эта цифра каждый год снижается, для производителей коммерческого ПО это означает огромную недополученную прибыль. Подобная проблема существует не только на отечественном рынке, но и во всем мире. Для ее устранения используются различные системы защиты программного обеспечения (СЗПО), которые получили широкое распространение и находятся в процессе постоянного развития, благодаря глубокой интеграции информационных технологий в общество. Необходимость использования СЗПО обусловлена рядом причин, среди которых может быть: заимствование кода программы, являющейся интеллектуальной собственностью автора, для написания аналогов продукта; несанкционированная модификация программы, с целью внедрения в ее код вредоносного ПО; незаконное копирование и распространение ПО и т. п.

Существующие СЗПО можно классифицировать по ряду признаков, среди которых можно выделить: метод установки, использование различных механизмов защиты и принцип функционирования (рис. 1).



Рис. 1. Классификация СЗПО

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

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

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

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

Самыми стойкими к атакам являются системы, включающие в себя основные защитные механизмы двух предыдущих типов систем.

К основным защитным механизмам, используемым комбинированными системами, относятся:

Основные термины (генерируются автоматически): система, API, IBM, IDC, исходный код, мера выполнения, программное обеспечение, система команд.

Читайте также: