Реферат: Система защиты от несанкционированного копирования
В настоящее время в связи со сложным характером взаимоотношений на рынке программных продуктов проблема защиты от несанкционированного копирования является одной из наиболее острых в области разработки программных средств. Она обусловлена «самой сутью человеческой психологии и будет существовать до тех пор, пока программный продукт является товаром». Данное утверждение подчёркивает экономический базис рассматриваемой проблемы – несанкционированное копирование осуществляется тогда, когда у пользователя существует потребность в эксплуатации какого-то программного продукта, а затраты на копирование существенно меньше затрат на приобретение легальной копии.
Высокий уровень нелегального копирования (по данным международной организации Business Software Alliance в России нелегально используется до 98% программных продуктов) обусловлен в первую очередь соотношением средней оплаты труда и цены набора программного обеспечения, которая колеблется от 200$ для компьютеров домашнего использования до нескольких тысяч долларов для профессиональных систем. Если говорить более строго, то помимо экономических существуют и другие причины для несанкционированного копирования, в частности ознакомительные и психологические, но превалирует всё-таки экономический мотив.
Для разработчика программного обеспечения, как и для любого другого производителя основная задача состоит в том, чтобы окупить затраты на производство и получить прибыль. При этом возможны два крайних варианта: либо производитель находит заказчика, который оплачивает разработку, либо все затраты покрываются за счёт продаж. Для разработчиков предпочтителен первый вариант, так как в нём риск сводится к минимуму, но он возможен только при отсутствии на рынке аналогов программного продукта. Требования к программе должны быть настолько специфичны, а потребность в продукте настолько велика, что заказчику не оставалось бы ничего другого, кроме как оплатить разработку. Учитывая сегодняшнюю ситуацию в области разработки программ, этот случай можно рассматривать как вырожденный. Типичной является ситуация, когда производитель разрабатывает продукт за счёт собственных средств с целью продать определённое число копий и не заинтересован в бесплатном тиражировании.
Для противодействия попыткам несанкционированного копирования используются различные методы защиты программного обеспечения: организационные, юридические, программные и программно-аппаратные. Наиболее популярными (по крайней мере в нашей стране являются технические, т.е. программные и программно-аппаратные методы, так как только они обеспечивают противодействие в момент несанкционированного копирования программного продукта, в отличие от остальных, где санкции за нелегальное использование либо отсутствуют, либо разнесены во времени с моментом эксплуатации нелегальной копии.
К настоящему времени разработаны достаточно эффективные методы противодействия несанкционированному копированию, однако стоит подчеркнуть, что не существует такой защиты, которую было бы невозможно (помимо воли автора) снять. Не должно вызывать сомнений то, что опытный программист, обладающий соответствующими навыками, всегда сможет найти то место (те места) в защищённой программе, где принимается решение о легальности копии, и, изменив несколько байт (или даже один единственный байт) в коде программы, лишить её возможности к самозащите. Именно по этой причине ведущие фирмы-производители массового программного обеспечения практически никогда не ставят защиту на свои программы, справедливо полагая, что не стоит тратить силы и средства на создание системы защиты (тем более, что эти системы, как правило, причиняют пользователю определённые неудобства), если всё равно программа будет вскрыта. Эти фирмы получают свои «дивиденды» за счёт массовости объёма продаж при сравнительно низкой цене за каждую копию. Они делают ставку на «цивилизованных» покупателей и, что примечательно, таким способом воспитывают их! Более того, в последнее время получили распространение программы, которые как раз рассчитаны на механизм «пиратского» копирования и распространяются преимущественно именно таким способом: обычно эти программы сопровождаются «электронным письмом» (файлом с текстом), в котором содержится краткая инструкция по работе с программой и указываются необходимые координаты автора с просьбой выслать небольшую сумму в случае, если пользователь считает, что достоинства программы заслуживают этого.
Несколько иначе обстоит дело с программами, которые не рассчитаны на массового пользователя. К таким относятся различного рода системы автоматизированного проектирования, предыздательские системы, специализированные базы данных и т.п. Как правило, это весьма наукоёмкие товары, т.е. в них особенно велик вклад высококлассных специалистов в конкретных прикладных областях. Труд таких специалистов обычно высоко ценится, поэтому общие затраты на создание подобного рода программ могут быть весьма и весьма велики, что в сочетании со сравнительно небольшим кругом потенциальных пользователей делает цену каждой копии очень большой. Такие программы обычно снабжаются защитой, так как ограниченный спрос на них формирует весьма специфичный (и чаще всего «цивилизованный») рынок: покупателями этих программ являются специалисты в конкретной прикладной области, которые не имеют нужных навыков и, главное, желания заниматься вскрытием программ.
????????????????? ??????????????? ??????? ?????? ?? ???????????????????? ???????????.
В общем случае система защиты от несанкционированного копирования представляет собой комплекс средств, предназначенный для затруднения (в идеале – предотвращения) нелегального копирования (исполнения) защищаемого программного модуля, с которым она ассоциирована.
Обобщив сведения из различных источников можно предложить следующую структуру системы защиты от несанкционированного копирования (Рис. 2 .1). [7]
Рис. 2 .1. Структура системы защиты от несанкционированного копирования
Подсистема внедрения управляющих механизмов представляет собой комплекс программных средств, предназначенный для подключения внедряемого защитного кода к защищаемому программному модулю. Внедряемый защитный код – это программный модуль, задача которого состоит в противодействии попыткам запуска (исполнения) нелегальной копии защищаемой программы.
Подсистема реализации защитных функций представляет собой программную секцию, решающую задачу распознавания легальности запуска защищаемой программы.
Подсистема противодействия нейтрализации защитных механизмов предназначена для борьбы с возможными попытками нейтрализации системы защиты от несанкционированного копирования и/или её дискредитации.
Блок установки характеристик среды отвечает за получение характеристик, идентифицирующих вычислительную среду.
Блок сравнения характеристик среды устанавливает факт легальности запуска защищаемой программы.
Блок ответной реакции реализует ответные действия системы защиты на попытки несанкционированного исполнения защищаемой программы.
Наличие системы защиты подразумевает наличие злоумышленника, который будет пытаться каким-то образом нейтрализовать защиту для решения задачи несанкционированного копирования. При этом необходимо отчётливо понимать, что не существует абсолютно стойкой защиты, а существуют защиты, время преодоления которых по затратам труда и машинного времени сравнимы с разработкой системы, аналогичной защищённой. Данное положение приводит к парадоксальному на первый взгляд результату – вероятность нейтрализации защиты у элементарных программных продуктов со средним уровнем защищённости гораздо ниже, чем у сложных программ с высоким уровнем защиты.
В отдельных случаях, при относительно невысокой цене одной копии, конечному пользователю бывает выгоднее купить необходимое число инсталляций, чем оплачивать квалифицированный труд хакера.
Поскольку стойкость системы защиты определяется стойкостью каждого её элемента, то в качестве объекта атаки может использоваться любая из описанных подсистем. Здесь необходимо отметить неоднородный уровень как самих идей, лежащих в основе той или иной подсистемы, так и их реализаций, что, в первую очередь связано с развитием приёмов, методов и средств для нейтрализации систем защиты. Учитывая современное состояние вопроса, наиболее актуальной задачей, с точки зрения автора, является разработка подсистемы внедрения управляющих механизмов системы защиты и подсистемы установки характеристик среды, хотя остальные подсистемы должны быть разработаны не менее тщательно. Показательным примером является блок ответной реакции, который может как просто выводить сообщение о незаконности копии (что моментально выдаёт присутствие системы защиты), так и предпринимать более сложные действия, позволяющие на определённое время замаскировать наличие защиты, увеличивая тем самым время атаки.
Но если функционирование блока ответной реакции может влиять на надёжность системы лишь косвенным образом, то зачастую самым слабым местом всей системы является блок сравнения характеристик среды и именно против него в первую очередь направлены атаки злоумышленников.
?????????? ????????? ??????????? ??????????.
Системы защиты от несанкционированного копирования можно классифицировать по способу внедрения защитного механизма:
встроенная (внедряется при создании программного продукта);
пристыковочная (подключается к уже готовому программному продукту).
Наибольшую популярность в последнее время приобрели системы второго типа. Это обусловлено рядом преимуществ, которые даёт их использование:
простота тиражирования программных систем защиты на объекты заказчика и разработчика;
простота технологии применения;
обеспечение достаточного уровня защищённости данных в силу специализации разработчиков;
более оптимальное соотношение «надёжность функционирования/затраты на разработку» по сравнению со встроенными системами, подготовленными непрофессионалами.
Рассмотрим способы установки защитных механизмов в защищаемые программные модули.