Кафедра Автоматизации Систем Вычислительных Комплексов диплом

Вид материалаДиплом

Содержание


Студент Алергант Дмитрий Маркович, 522 гр.Москва, 2008
Поэтому любые методы реализации принципиальной надёжной защиты так или иначе должны быть связаны с выходом за пределы незащищённ
Постановка проблемы
Сведения об аналогичных решениях
Предлагаемое решение.
Технические требования к реализации решения
Техническое описание решения
Работа заглушек
«new» [utf8]
«call» [utf8]
«ret» [utf8]
«exc» [utf8]
«free» [utf8]
«load» [utf8]
ПЕРЕДАЧА ЗНАЧЕНИЙ (общая часть)
Данная базовая функциональность поддерживается полностью корректно (за исключением случаев, указанных ниже).
Скриншот 1 - графический интерфейс утилиты Splitter в работе
Таблица 1: замеры производительности
Достигнутые результаты и выводы
Список литературы
...
Полное содержание
Подобный материал:
  1   2   3


Московский государственный университет имени Ломоносова

Факультет Вычислительной математики и кибернетики

Кафедра Автоматизации Систем Вычислительных Комплексов





Дипломная работа


«Защита программного обеспечения от несанкционированного использования методом автоматизированного симметричного разделения объектно-ориентированной программы»


Научный руководитель

Гуляев Анатолий Викторович

(к.ф.м.н, доцент)


^ Студент

Алергант Дмитрий Маркович, 522 гр.


Москва, 2008

Аннотация.



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

В настоящей работе автор утверждает, что для современных объектно-ориентированных платформ разработки приложений, таких как Java и .Net, возможна разработка решения, позволяющего из существующего работоспособного приложения выделить часть, которая может быть прозрачно для самого приложения вынесена для работы на удалённой ЭВМ. Проводится детальное рассмотрение данного вопроса на примере платформы Java (решение для .Net также возможно, но выходит за рамки данной работы), и приводится прототип такого решения, позволяющего «разделять» Java-приложения во многих (но не во всех) случаях, т.е. с рядом ограничений.

Работа рассматривает исключительно технические аспекты защиты программного обеспечения от несанкционированного использования. Автор исходит из предпосылки, что юридическая оценка компьютерному пиратству дана в действующем законодательстве (несанкционированное использование программного обеспечения запрещено и уголовно преследуемо), и не ставит своей целью рассмотрение этико-моральных аспектов данного вопроса. В данной работе также не планируется рассуждать о бесплатном свободном п/о (Open Source), для которого проблема защиты принципиально не встаёт, о его перспективах, преимуществах и недостатках в сравнении с проприетарным коммерческим.

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

Содержание


Аннотация. 2

Содержание 3

Введение 4

Постановка проблемы 7

Сведения об аналогичных решениях 8

Предлагаемое решение. 9

24

Достигнутые результаты и выводы 25

Список литературы 26



Введение



Как известно, в IT-индустрии остро стоит вопрос защиты интеллектуальной собственности (в частности, программного обеспечения) от несанкционированного использования. Ежегодный ущерб индустрии от пиратства составляет на 2007 год $47млрд [4]. Разработчики внедряют в свои продукты различные механизмы защиты – защита CD от копирования, проверка регистрационных ключей, онлайн-активация, в некоторых случаях даже аппаратные ключи. Существуют и специальные коммерческие продукты, предлагающие разработчикам модули и технологии для защиты их разработок от пиратского использования (StarForce, и т.п.). Однако, в силу принципиальной невозможности на существующих платформах защитить программный код от исследования и модификации (любые проверки целостности, препятствующие модификации, сами могут быть «вырезаны»), квалифицированные хакеры с большими или меньшими трудозатратами «взламывают» любую защиту, позволяя использовать нелицензионные инсталляции коммерческого п/о.

Таким образом, перед IT-индустрией остро стоит проблема создания принципиально новых механизмов защиты п/о. Существующая ситуация с невозможностью надёжной защиты является следствием принципиальной незащищённости платформы PC – возможности бесконтрольной модификации программного кода, возможность использования низкоуровневого отладчика, и т.п.


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


Такие пути можно грубо разделить на две категории.


Первая категория – движение в направлении полной смены платформы, перевод приложений и пользователей с незащищённой платформы (PC) на новую, чья архитектура изначально построена для возможности защиты п/о. Подобные инициативы носят собирательное наименование «Trusted Computing». Международные ассоциации, формируемые сотнями крупных компаний и корпораций, разрабатывают спецификации [5] компонент платформы нового поколения, которая, как ожидается, когда-нибудь вытеснит PC. Однако ясно, что на этом пути индустрию ожидает масса сложностей, и в любом случае процесс массового перехода на новую платформу будет постепенным и займёт много лет. Даже по самым оптимистичным прогнозам аналитиков, полномасштабное распространение TC произойдёт не ранее чем через 7-10 лет.

Следует отметить, что в некоторых других областях, таких как смартфоны и игровые приставки, защищённые и частично-защищённые платформы распространены уже сейчас (XBOX, Sony PlayStation). Соответственно, проблема защиты п/о на этих платформах выглядит решённой – запуск нелицензионных игр на них либо вообще невозможен, либо возможен только после аппаратной модификации устройства – процедуры, заведомо недоступной подавляющему большинству пользователей.

С другой стороны, следует отметить, например, программную платформу для современных смартфонов - Symbian 9. Появившись два года назад, она преподносилась как новая, полностью переработанная, и защищенная ОС для смартфонов. Ради защищённости была потеряна бинарная совместимость с предыдущими версиями ОС. Защищённость ОС основывается на криптографических механизмах. Устанавливаемое ПО, если оно использует более чем минимальный набор системного API, должно быть криптографически подписано центром тестирования Symbian, что препятствует модификации исполняемых файлов ПО. Соответственно, простейшая проверка серийного номера в привязке к IMEI гарантирует защиту от пиратского использования. В теории. В реалиях же были найдены лазейки. Пользователи, желающие пользоваться пиратским ПО, регистрировались на сайте Symbian как индивидуальные разработчики, и получали DevCert – сертификат, позволяющий подписывать любое (в т.ч. взломанное) ПО, но только для своего экземпляра смартфона. С течением времени число псевдо-разработчиков росло опережающими темпами, из-за чего в феврале 2008 года Symbian прекратил выдачу DevCert-сертификатов индивидуальным разработчикам (оставив только для компаний, заключивших с ними договор). Таким образом, «лазейка» оказалась прикрыта, и хакеры начали прикладывать больше усилий для попыток её взлома. В результате уже в конце марта система была взломана [6]. Эта история должна служить напоминанием для разработчиков. Не любая платформа, разработанная как защищенная (Trusted), навсегда ею останется.


Вообще говоря, к вышеупомянутой первой категории можно также отнести подход, при котором разрабатываемое приложение полностью функционирует на сервере разработчика, а пользователи обращаются к приложению через тонкий клиент (web-браузер). Такие web-приложения уже много лет весьма популярны и считаются перспективными, многие компании (например, Google) полностью концентрируются на разработке web-приложений [7]. Однако, в силу очевидных ограничений функциональности и производительности, ясно, что как минимум в ближайшие 7-10 лет Web-приложения не смогут полностью вытеснить традиционные приложения. Таким образом, проблема защиты п/о от несанкционированного использования ещё долго останется актуальной.


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

В настоящее время чаще всего такой подход используется при создании компьютерных игр. Пользователь покупает диск с игрой и уникальным номером-ключем. Когда пользователь хочет поиграть с другими людьми в многопользовательском режиме, игра соединяется с сервером, при этом сервер проверяет правильность и уникальность номера-ключа. Таким образом, только обладатели лицензионной копии игры могут получить удовольствие от игры в многопользовательском режиме (а для многих современных игр однопользовательского режима не существует в принципе). Поскольку у хакеров нет доступа к программным кодам сервера, воссоздание механизма генерации корректных ключей, как правило, невозможно. Теоретически возможно только полное воссоздание всей серверной функциональности, для установки «альтернативного» сервера, не проверяющего ключи, силами энтузиастов (с некоторыми играми так и происходило – например, с Diablo II [8]). Но для некоторых жанров игр серверная функциональность столь сложна, что делает подобное развитие событий невозможным, и проблема защиты п/о для этих продуктов выглядит решённой.

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


Итак, предлагаемое решение вопроса защиты п/о от несанкционированного использования – перенос части необходимого для работы программного кода приложения (не требовательного к производительности) для работы на защищённой платформе. Такой платформой может являться:

  • Обычный сервер в дата-центре разработчика.
  • Отдельный защищённый (работающий на новой защищённой платформе, опечатанный, и т.п.) мини-сервер, предоставляемый разработчиком для установки на территории предприятия – для корпоративного п/о.
  • Микро-сервер, работающий на новой защищённой платформе (возможно – с использованием технологии System-on-a-Chip), инсталлируемый в виде модуля (через общепринятый интерфейс, такой как USB или PCI-E) в пользовательский компьютер (естественно, это применимо только для достаточно дорогого п/о, чтобы выгода от эффективной защиты окупила стоимость и неудобство модулей)


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