Защита программ от исследования.Матвеева А.

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Государственное образовательное учреждение высшего
профессионального образования
МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ









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












Факультет: ОТФ–2
Группа: БИБ-1101



Выполнила: Матвеева А.И.










Москва 2013 г.

Защита программ от исследования.
Защита программного обеспечения комплекс мер, направленных на защиту [ Cкачайте файл, чтобы посмотреть ссылку ] от несанкционированного приобретения, использования, распространения, модифицирования, изучения и воссоздания аналогов.
Защита от несанкционированного использования программ система мер, направленных на противодействие нелегальному использованию [ Cкачайте файл, чтобы посмотреть ссылку ]. При защите могут применяться организационные, юридические, программные и программно-аппаратные средства.
Защита от копирования к программному обеспечению применяется редко, в связи с необходимостью его распространения и установки на компьютеры пользователей. Однако, от копирования может защищаться лицензия на приложение (при распространении на физическом носителе) или его отдельные алгоритмы.
В ОСНОВЕ каждого программного продукта лежит интеллектуальная собственность его разработчиков. Ведь на создание программы ушло много часов работы программистов, тестировщиков и службы маркетинга. Хочется, чтобы при коммерческом релизе уникальный продукт не был изучен, скопирован и модифицирован конкурентами, а для этого программы необходимо защищать от статического и динамического анализа. Под статическим анализом понимается исследование исполняемого кода приложения без запуска программы (дизассемблирова-ние). Под динамическим -изучение алгоритмов работы программы при запуске приложения (инструкции проходятся пошагово). Именно на предотвращение этих видов анализа и направлена защита программ от исследования.
Для того чтобы модернизировать исследуемую программу или сделать на основе программы конкурентов новый продукт, нужно досконально изучить исполняемый код приложения, то есть провести реверс-инжиниринг. Чаще всего для этого используются специальные инструменты, позволяющие разобрать программу "до винтиков", - дизассемблеры и отладчики. Первые используются для того, чтобы преобразовать исходный машинный код программы в удобочитаемый код на низком языке программирования - ассемблере. Отладчики же информируют о каждом действии в недрах компьютера и позволяют отследить каждый шаг программы таким образом, чтобы можно было понять суть всех операций. В основе реверс-инжиниринга лежит принцип "Лучше там, где нас нет". На практике этот принцип представляет собой самый интересный тип программного обеспечения, так как исходный код программы неизвестен. Причин для исследования чужой программы может быть много. Другое дело, что иногда требуется защитить собственную программу от исследования, чтобы никто не смог ее повторить, изменить или дополнить в кратчайшие сроки.
Запутывание кода
Наиболее часто встречающийся метод защиты ПО от исследования - обфускация, или запутывание кода. Под этим термином подразумевается приведение исполняемого кода к виду, сохраняющему функциональность программы, но затрудняющему анализ и понимание алгоритмов работы. Другими словами, запутывание так изменяет программу, что ее обратное преобразование будет экономически невыгодным (а физически очень трудновыполнимым). В основном этот способ защиты приложения используется для защиты программ от воссоздания исходного кода (декомпиляции) и незаконного использования, нарушения авторских прав программистов. Основная функция защиты программного обеспечения заключается не только в том, чтобы приложение нельзя было незаконно использовать, копировать или модифицировать, но и в том, чтобы не дать хакеру возможности изучить эту программу, применив излюбленный метод - пошаговый режим отладки. Тут уже может помочь нетипичное расположение стека (область памяти, где хранятся данные программы), его размер или варианты применения. Ведь при анализе с помощью специальных программ хакер может отбросить ненужный кусок кода или данных, в результате функционирование программы может оказаться невозможным или неправильным.
С помощью запутывания можно перемешать в программе куски кода или действия так, что логика работы становится совершенно непонятной. Кроме того, при запутывании могут вставляться новые куски неисполняемого (неиспользуемого) кода, а существующие блоки кода могут быть модифицированы таким образом, чтобы они использовались в нескольких частях программы одновременно.
Методы защиты от исследования
Иногда при защите программного продукта используется архивация данных программы, которые находятся в стеке. Для усложнения работы взломщиков в исполняемый код встраиваются "пустышки", которые выполняют некоторую сложную и на первый взгляд важную работу, но на самом деле не имеют никакого отношения к логике работы. Иногда используется такой метод, как "общая переменная", когда одна и та же переменная в разных частях алгоритма может употребляться для разных нужд (в разных функциях). Другой похожий метод - "разделяемая переменная" (для усложнения исследования программы одну переменную заменяют функцией от набора других переменных). В последнем случае при изменении одной из переменных, входящих в набор, меняется значение функции, а следовательно, и искомой переменной. Обычно в набор включают константы, другие переменные, адреса памяти, а также контрольные суммы отдельных блоков кода. Таким образом, меняя одну произвольную инструкцию в одном из блоков кода, можно повлиять на функциональность совершенно других частей программы. Также используется шифрование содержимого файлов данных, при котором защищенные файлы переносятся в защищенный контейнер. Особенностью защищенного контейнера является то, что к нему можно обращаться только из защищенного приложения.
В некоторых случаях применяется метод самогенерируемого кода, когда массив данных может быть сам по себе исполняемым кодом или смысловым текстом, но после некоторых операций он становится участком программы, выполняющим важные функции. Также используется полиморфный код, который при исполнении может изменять сам себя. Шифрование же позволяет изменить исполняемый код до полной неузнаваемости.
Используя защиту программного обеспечения от исследований, нужно иметь в виду, что лучше не только запутывать отдельные части кода, но и защищать всю программу целиком. Ведь защиту исполняемого кода можно дополнять другими видами защиты, например, при распространении приложения на дисках или через Интернет и т.п. Кроме того, защита кода должна быть максимально незаметной, замаскированной, запутывание не должно иметь регулярную структуру (иначе можно будет изучить алгоритм запутывания и разработать программу, выполняющую обратные преобразования).
Сетевая программная защита
локальная
Сканирование [ Cкачайте файл, чтобы посмотреть ссылку ] исключает одновременный запуск двух программ с одним регистрационным ключом на двух компьютерах в пределах одной локальной сети.
Недостаток в том, что [ Cкачайте файл, чтобы посмотреть ссылку ] можно настроить так, чтобы он не пропускал пакеты, принадлежащие защищённой программе. Правда, настройка брандмауэра требует некоторых пользовательских навыков. Кроме того, приложения могут взаимодействовать по сети (к примеру, при организации [ Cкачайте файл, чтобы посмотреть ссылку ]). В этом случае брандмауэр должен пропускать такой [ Cкачайте файл, чтобы посмотреть ссылку ].
глобальная
Если программа работает с каким-то централизованным [ Cкачайте файл, чтобы посмотреть ссылку ] и без него бесполезна (например, сервера [ Cкачайте файл, чтобы посмотреть ссылку ], серверы обновлений [ Cкачайте файл, чтобы посмотреть ссылку ]). Она может передавать серверу свой серийный номер; если номер неправильный, сервер отказывает в услуге. Недостаток в том, что, существует возможность создать сервер, который не делает такой проверки. Например, существовал сервер battle.da, который по функциям был аналогичен [ Cкачайте файл, чтобы посмотреть ссылку ], но пускал пользователей неавторизованных копий игр. Сейчас этот сервер закрыт, но существует немалое количество [ Cкачайте файл, чтобы посмотреть ссылку ]-серверов, которые также не проверяют регистрационные номера.
Защита при помощи компакт-дисков
Программа может требовать оригинальный компакт-диск. В частности, такой способ применяется в [ Cкачайте файл, чтобы посмотреть ссылку ]. Стойкость таких защит невелика, ввиду широкого набора инструментов снятия образов компакт-дисков.[ Cкачайте файл, чтобы посмотреть ссылку ]
Как правило, этот способ защиты применяется для защиты программ, записанных на этом же компакт-диске, являющимся одновременно ключевым.
Для защиты от копирования используется:
запись информации в неиспользуемых секторах;
проверка расположения и содержимого «сбойных» секторов;
проверка скорости чтения отдельных секторов.
Первые два метода практически бесполезны из-за возможности снятия полного образа с диска с использованием соответствующего [ Cкачайте файл, чтобы посмотреть ссылку ]. Третий метод считается более надежным (используется, в частности, в защите [ Cкачайте файл, чтобы посмотреть ссылку ]). Но существуют программы, которые могут эмулировать диски с учётом геометрии расположения данных, тем самым обходя и эту защиту. В StarForce, в числе прочих проверок, также выполняется проверка возможности записи на вставленный диск. Если она возможна, то диск считается не лицензионным. Однако, если образ будет записан на диск [ Cкачайте файл, чтобы посмотреть ссылку ], то указанная проверка пройдет. Возможно также скрыть тип диска, чтобы [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ] был виден как обычный [ Cкачайте файл, чтобы посмотреть ссылку ]. Однако, в драйвер защиты может быть встроена проверка на наличие эмуляции.
В настоящее время наибольшую известность в мире имеют системы защиты от копирования [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ].
Для многих программ указанный метод защиты недоступен ввиду отличного способа распространения (например, [ Cкачайте файл, чтобы посмотреть ссылку ]-программы).
Защита при помощи электронных ключей
[ Cкачайте файл, чтобы посмотреть ссылку ] ([ Cкачайте файл, чтобы посмотреть ссылку ]), вставленный в один из [ Cкачайте файл, чтобы посмотреть ссылку ] компьютера (с интерфейсом USB, LPT или COM) содержит ключевые данные, называемые также [ Cкачайте файл, чтобы посмотреть ссылку ], записанные в него разработчиком защищенной программы. Защита программы основывается на том, что только ему (разработчику) известен полный алгоритм работы ключа. Типы ключевых данных:
информация для чтения/записи (в настоящий момент практически не применяется, так как после считывания ключ может быть сэмулирован)
ключи аппаратных криптографических алгоритмов (используется наиболее часто)
алгоритмы, созданные разработчиком программы (ставший доступным сравнительно недавно метод, в связи с появлением электронных ключей с микропроцессором, способным исполнять произвольный код; в настоящее время используется все чаще)
Достоинства защиты с использованием электронных ключей:
Ключ можно вставлять в любой компьютер, на котором необходимо запустить программу
Ключ не занимает/не требует наличия дисковода
Электронный ключ умеет выполнять криптографические преобразования
Современные ключи могут исполнять произвольный код, помещаемый в них разработчиком защиты (пример [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ])
Стойкость защиты основывается на том, что ключевая информация защиты (криптографические ключи, загружаемый код) не покидает ключа в процессе работы с ним.
Основные недостатки:
Цена (1530 долларов за штуку)
Необходимость доставки ключа конечному пользователю
Ранее к недостаткам можно было также отнести невысокое быстродействие ключа (в сравнении с CPU компьютера). Однако современные ключи достигают производительности в 1.25 DMIPS (пример [ Cкачайте файл, чтобы посмотреть ссылку ],[ Cкачайте файл, чтобы посмотреть ссылку ]), а техника защиты с их помощью не предполагает постоянного обмена с ключом.
Существовавшие также ранее проблемы с установкой ключа на определенные аппаратные платформы в настоящий момент решена при помощи сетевых ключей (которые способны работать с одной или более копиями защищенного приложения, просто находясь с ним в одной локальной сети) и с помощью программных или аппаратных средств «проброса» USB-устройств по сети.
Привязка к параметрам компьютера и активация
Привязка к информации о пользователе / серийным номерам компонентов его компьютера и последующая активация программного обеспечения в настоящий момент используется достаточно широко (пример: ОС Windows).
В процессе установки программа подсчитывает [ Cкачайте файл, чтобы посмотреть ссылку ] контрольное значение, однозначно соответствующее установленным [ Cкачайте файл, чтобы посмотреть ссылку ] компьютера и параметрам установленной ОС. Это значение передается разработчику программы. На его основе разработчик генерирует ключ активации, подходящий для активации приложения только на указанной машине (копирование установленных исполняемых файлов на другой компьютер приведет к неработоспособности программы).
Достоинство в том, что не требуется никакого специфического [ Cкачайте файл, чтобы посмотреть ссылку ], и программу можно распространять посредством [ Cкачайте файл, чтобы посмотреть ссылку ] (по Интернет).
Основной недостаток: если пользователь производит модернизацию компьютера (в случае привязки к [ Cкачайте файл, чтобы посмотреть ссылку ]), защита отказывает. Авторы многих программ в подобных случаях готовы дать новый регистрационный код. Например, [ Cкачайте файл, чтобы посмотреть ссылку ] в [ Cкачайте файл, чтобы посмотреть ссылку ] разрешает раз в 120 дней генерировать новый регистрационный код (но в исключительных случаях, позвонив в службу активации, можно получить новый код и после окончания этого срока).
В качестве привязки используются, в основном, серийный номер [ Cкачайте файл, чтобы посмотреть ссылку ] материнской платы, серийный номер винчестера. В целях сокрытия от пользователя данные о защите могут располагаться в неразмеченной области жесткого диска.
До недавнего времени такие защиты разрабатывались и внедрялись разработчиками самого программного продукта. Однако сейчас существуют SDK для работы с программными ключами, например [ Cкачайте файл, чтобы посмотреть ссылку ] SL от компании Aладдин Р. Д. Также все большее распространение получают сервисы, предлагающие одновременно функционал «навесной» защиты и сервера активации/лицензирования (пример [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ]).
Защита программ от копирования путём переноса их в [ Cкачайте файл, чтобы посмотреть ссылку ]
Другим направлением защиты программ является использование подхода [ Cкачайте файл, чтобы посмотреть ссылку ], то есть предоставление функционала этих программ (всего или части), как сервиса. При этом код программы расположен и исполняется на сервере, доступном в глобальной сети. Доступ к нему осуществляется по принципу [ Cкачайте файл, чтобы посмотреть ссылку ]. Это один из немногих случаев, когда реализуется защита от копирования.
Код исполняется на «доверенной» стороне, откуда не может быть скопирован.
Однако, и здесь возникает ряд проблем, связанных с безопасностью:
стойкость такой защиты зависит, прежде всего, от защищенности серверов, на которых он исполняется (речь идет о Интернет-безопасности)
важно обеспечение конфиденциальности запросов, аутентификации пользователей, целостности ресурса (возможности «горячего» резервирования), и доступности решения в целом
Возникают также вопросы доверия сервису (в том числе правовые), так как ему фактически «в открытом виде» передаются как само ПО, так и данные, которые оно обрабатывает (к примеру, [ Cкачайте файл, чтобы посмотреть ссылку ] пользователей).
Юридические средства защиты
Согласно законодательству, программный код приравнивается к литературным произведениям, и к нему применяются все соответствующие нормативные акты. В контексте защиты ПО используется следующая терминология:
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
Предусмотрена ответственность, в соответствии с действующим законодательством, как за использование [ Cкачайте файл, чтобы посмотреть ссылку ] экземпляров программ для ЭВМ и баз данных, так и за преодоление применяемых [ Cкачайте файл, чтобы посмотреть ссылку ].



Приложенные файлы

  • doc 14838170
    Размер файла: 94 kB Загрузок: 0

Добавить комментарий