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

кандидата технических наук
Краснопевцев, Антон Андреевич
город
Москва
год
2011
специальность ВАК РФ
05.13.19
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Защита от несанкционированного копирования приложений, компилируемых в промежуточное представление»

Автореферат диссертации по теме "Защита от несанкционированного копирования приложений, компилируемых в промежуточное представление"

На правах рукописи

Краснопевцев Антон Андреевич

ЗАЩИТА ОТ НЕСАНКЦИОНИРОВАННОГО КОПИРОВАНИЯ ПРИЛОЖЕНИЙ, КОМПИЛИРУЕМЫХ В ПРОМЕЖУТОЧНОЕ ПРЕДСТАВЛЕНИЕ

Специальность: 05.13.19 - методы и системы защиты информации, информационная безопасность

АВТОРЕФЕРАТ

диссертации на соискание ученой степени кандидата технических наук

2 июн 2011

Москва-2011

4848666

Работа выполнена в Национальном исследовательском ядерном университете «МИФИ» (НИЯУ МИФИ)

Научный руководитель: Кандидат технических наук, доцент

Петрова Тамара Васильевна

Официальные оппоненты: Доктор технических наук

Тарасов Александр Алексеевич

Кандидат технических наук Смирнов Павел Владимирович

Ведущая организация: Московский Государственный Техниче-

ский Университет имени Н.Э. Баумана

Защита состоится «24» июня 2011 г. в 14 часов 30 минут на заседании диссертационного совета ДМ 212.130.08 при Национальном исследовательском ядерном университете «МИФИ»: 115409, г. Москва, Каширское ш., д.31. Тел. для справок: +7 (495) 32395-26, 324-73-34.

С диссертацией можно ознакомиться в библиотеке Национального исследовательского ядерного университета «МИФИ».

Отзывы в двух экземплярах, заверенные печатью, просьба направлять по адресу: 115409, г. Москва, Каширское ш., д.31, диссертационные советы НИЯУ МИФИ, тел.: +7 (495) 323-95-26.

Автореферат разослан «24» мая 2011 г.

Ученый секретарь диссертационного совета

Горбатов В.С.

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

Проблема несанкционированного копирования приложений и нарушения авторского права приобретает все большую актуальность в связи с ростом популярности приложений, компилируемых в промежуточное представление. Под приложениями, компилируемыми в промежуточное представление, в работе понимается вид про-раммного обеспечения, которое компилируется не в машинный код, а в набор команд иртуальной машины (промежуточное представление). Примерами систем, с помощью оторых создаются такие приложения, являются .NET, Java и др. Основной отличительной особенностью приложений, созданных с использованием приведенных редств разработки, является то, что полученные приложения скомпилированы не в машинный код, а в промежуточное представление. По данным аналитической компании «ТЮВЕ» более 40% разрабатываемого программного обеспечения создается с ис-'ользованием именно таких средств разработки приложений. Статистика спользования различных языков программирования приведена на рис. 1.

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

Рост популярности средств разработки приложений, компилируемых в промежу-' 3

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

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

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

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

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

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

- Алексей Солодовников, который является автором и разработчиком программной системы защиты приложений от несанкционированного копирования ASPack.

Разработкой средств защиты от несанкционированного копирования занимались такие фирмы, как:

- компания «Актив», которая с 1994 года является лидером российского рынка защиты программного обеспечения (продукты Guardant Code, Time, Sign и пр.);

- компания « Aladdin», основанная в 1993 году, в сферу деятельности которой кроме создания систем защиты приложений входит разработка аппаратной составляющей для систем PKI (HASP);

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

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

Анализ продуктов, представленных компаниями, выявил наличие у них суще-

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

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

Объект исследования. Приложения, компилируемые в промежуточное пред-тавление.

Предмет исследования. Уязвимости приложений, компилируемых в промежу-очное представление, и методы защиты.

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

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

В рамках решения научной задачи необходимо:

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

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

- разработать методику защиты приложений от несанкционированного копи-ования;

- оценить сложность компрометации предложенной системы защиты;

- разработать архитектуру систем защиты приложений с использованием редложенной в работе методики;

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

Методы исследований. Теория автоматов, методы оценки сложности вычисле-ий, теория графов.

Научная новизна работы состоит в следующем:

- предложена и исследована математическая модель процесса защиты прило-ения от несанкционированного копирования, использующая разделение графа по-iKa управления приложения. Построенная модель позволяет проводить оценку слож-ости компрометации различных систем защиты приложений от несанкционированно-| копирования;

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

- предложена методика защиты приложений от несанкционированного копи->вания с заданным уровнем сложности компрометации, позволяющая соотносить :орость выполнения защищенного приложения и уровень сложности его компроме-ции.

Практическая значимость результатов заключается в следующем:

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

- предложен метод оценки сложности компрометации систем защиты приложений, использующих внешний аппаратный модуль;

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

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

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

Разработанная методика защиты была использована для построения системы защиты Flash-приложений от несанкционированного копирования. Разработанная система защиты применяется для противодействия несанкционированному копированию учебных курсов, выпускаемых компанией «Интерактивное Детство».

Теоретические и прикладные результаты, полученные в ходе выполнения диссертационной работы, использованы в учебном курсе «Языки программирования» кафедры «Криптология и дискретная математика» НИЯУ МИФИ для создания лабораторной работы.

Предложенная методика защиты приложений от несанкционированного копирования была реализована для защиты .NET приложения, используемого в Центре вирусных исследований и аналитики «Eset», для исследования графа потока управления вредоносного программного обеспечения.

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

Публикации и апробация работы. Результаты диссертации изложены в 8 публикациях, 4 из которых опубликованы в рецензируемых журналах ВАК РФ. Результаты работы докладывались на конференциях и семинарах различного уровня:

- Инфофорум-2009 - 29-30.01,2009г, г. Москва, получены диплом и медаль в номинации «Лучшая научная работа года»;

- 2-я Международная телекоммуникационная конференция студентов и молодых ученых «Молодежь и наука», 12.10. 2009, НИЯУ МИФИ, представленная на конференции работа получила грант по программе У.М.НЛ.К.;

- НТТМ-2009, 24-27.06.2009, Москва, ВВЦ, получена медаль за «Успехи в научно-техническом творчестве»;

- Научная сессия МИФИ 2011,01-05.02.2011, НИЯУ МИФИ.

Основные положения, выносимые на защиту:

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

- математическая модель функционирования внешнего аппаратного модуля системы защиты от несанкционированного копирования;

- методика защиты приложений от несанкционированного копирования;

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

Структура работы. Работа состоит из введения, четырех глав, заключения, списка литературы, включающего 105 наименований, и одного приложения. Текст диссертации изложен на 150 страницах, включая 15 рисунков и 2 таблицы.

СОДЕРЖАНИЕ РАБОТЫ

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

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

Способы защиты приложений от несанкционированного копирования делятся на ва основных класса:

- программные способы защиты приложений;

- программно-аппаратные способы защиты приложений.

Примерами программных способов защиты приложений являются следующие:

- осуществляющие запутывающие преобразования графа потока управления ащищаемого приложения (Dotfuscator);

- осуществляющие выгрузку элементов приложения в библиотеки, скомпили-ованные в машинный код (.NET Reactor);

- реализующие шифрование кода приложения (Code Veil).

Основным недостатком программных способов защиты приложений является изкая сложность их компрометации. Более того, для большого количества программ-ых методов защиты существуют решения, осуществляющие несанкционированное опирование защищенного приложения в автоматическом режиме. Менее существен-ым недостатком является сильное увеличение объема исполняемого файла после за-|иты, а также незначительное снижение скорости выполнения защищенного риложения.

Примерами программно-аппаратных способов защиты приложений от несанкци-нированного копирования являются следующие:

- программно-аппаратные комплексы, основанные на идентификации внешне) аппаратного модуля (старые версии Sentinel, Guardant, Aladdin);

- программно-аппаратные комплексы, осуществляющие шифрование кода за-ищаемого приложения (Aladdin, Guardant);

- программно-аппаратные комплексы, осуществляющие выгрузку кода прило-ения во внешний аппаратный модуль (RocKey 7 .NET, Java Card).

Программно-аппаратные способы защиты приложений обладают более высокой южностъю компрометации относительно программных методов защиты приложе-

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

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

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

Таблица 1 - Сравнительная характеристика методов защиты приложений

Методы защиты приложений \Характеристи-ка Хспособа Способ защиты \ Оценочная степень замедления приложения (разы) Возможность автоматической компрометации Возможность автоматической защиты Задание уровня сложности компрометации

Программные методы Запутывание кода приложений 1,2-5 + + -

Выгрузка кода в «неуправляемые» библиотеки 4-6 + + -

Шифрование кода приложения 4-6 + + +

Программно- аппаратные методы Идентификация внешнего аппаратного модуля 1,2 + + -

Шифрование кода приложения 6-10 + + +

Выгрузка кода приложения во внешний аппаратный модуль 10-15 - - -

Авторский метод 0,5-3 - + +

В табл. 1 знак «+» или «-» показывает наличие или отсутствие указанной характеристики. Под оценочной степенью замедления приложения понимается соотношение

скорости выполнения приложения до и после его защиты.

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

8

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

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

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

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

- дизассемблер промежуточного кода;

- декомпилятор;

- оптимизатор кода приложения;

- отладчик уровня пользователя;

- отладчик уровня ядра операционной системы;

- приложение для получения трассы приложения;

- аппаратный отладчик.

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

- анализ приложения без внешнего аппаратного модуля должен являться вы-[ислительно сложной задачей;

- разработанный метод должен позволять реализацию системы на ключах быть юализуемым на практике;

- возможность задания необходимого уровня защищенности приложения.

В работе в виде модели, интерпретирующей приложение, предлагается исполь-овать специфичный конечный автомат Мура, который представлен в виде семи объ-ктов:

А = {Х,У,5А,5„А,/}, где Х- входной алфавит автомата А, У- выходной алфавит втомата, £ - множество состояний автомата, с 5 - множество начальных состояли автомата, с 5 - множество конечных или выходных состояний автомата, А -тображение А: ДхХ-^Я или функция переходов,/- отображение/: Я—* У или функция ыходов. Особенность предлагаемой модели заключается в том, что работа приложе-[ия обязательно должна начинаться с некоторого состояния у0 е 5», а заканчиваться

состоянием 5,6

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

Граф потока управления С={и,У} приложения задается набором множеств: II-множество вершин рассматриваемого графа, V - множество дуг рассматриваемого графа. Для графа потока управления множество £/ состоит из линейных блоков приложения. Под линейными блоками приложения (в дальнейшем базовыми блоками приложения) понимаются участки программного кода приложения, не содержащие ветвлений, переходов и инструкций передачи управления. Множество дуг V включает в себя пары элементов из множества II, то есть У(2 {17x11], таким образом, что дуга между двумя вершинами существует тогда и только тогда, если переход из одной вершины осуществим в другую. Другими словами, если инструкция (или набор инструкций) приложения, представленная на графе вершиной ик будет вызвана сразу после обращения к инструкции, представленной вершиной и,-, то вершины и* и щ будут связаны между собой дугой {и*,и<}. Важно отметить, что рассматриваемый граф потока управления приложения является ориентированным, в связи с тем, что при исполнении кода приложения важен порядок вызова инструкций (базовых блоков).

Конечный автомат Л, описывающий приложение, строится в соответствии с графом потока управления приложения следующим образом:

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

- множество входов составляют переменные, в соответствии со значениями которых осуществляется передача управления в приложении;

- множество выходов составляют базовые блоки приложения;

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

- конечными состояниями автомата помечаются состояния, которые на графе потока управления приложения представлены висячими вершинами;

- функции переходов и выходов конечного автомата представляют собой таблицу переходов в соответствии с графом потока управления.

Множество состояний 5 - множество виртуальных меток в приложении. Каждая виртуальная метка соответствует началу базового блока приложения. Таким образом, множество состояний будет строиться в соответствии с ветвлениями графа потока управления приложения Р.

Множество входов Х- набор переменных приложения Р, в соответствии со значениями которых, происходит тот или иной переход в графе потока управления защищаемого приложения. Иными словами, если в зависимости от значения некоторой переменной в теле программы происходит переход от одной вершины графа потока управления к другой, то данная переменная является элементом множества X.

Множество выходов У - набор инструкций, которые приложение будет выполнять при переходе из одного состояния в другое.

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

Постановка задачи. Пусть защищаемое приложение представлено в виде ко-

немного автомата А.

Необходимо, используя алгебру построить набор преобразований

А' = {X', Г\ Бе', А\Р} таким образом, чтобы процесс восстановления автомата Л, по известному набору множеств 5', Р}, зависел от длины ключами являлся вычислительно сложной задачей.

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

Для достижения поставленной задачи необходимо использовать следующий набор преобразований, принадлежащих множеству Л. Зададим алгебру 2(Л„Л), где А, - множество конечных автоматов Мура, интерпретирующих приложения, Я - набор преобразований. Множество преобразований, входящих в алгебру Б, осуществляемых над конечным автоматом А, состоит из следующих преобразований:

- г„: (А,к)-ЪА\ А'= г„ У, 5,',/, А'}- преобразование, аргумен-ами которого являются автомат А, интерпретирующий защищаемое приложение Р, и лемент ключа ке К. В зависимости от элемента ключа, преобразование осуществляет обавление вершины к графу потока управления приложения, или, с точки зрения коечного автомата, осуществляется добавление элемента к множеству выходов К, мно-;еству входов X и множеству состояний Я. Множества начальных и конечных остояний {^Л} автомата А остаются неизменными, чтобы не нарушить логику рабо-ы приложения Р.

- г4\(А,к)-ЪА\ А'= л, (А4с)={Л', Г, 5', 5,', 5,',/, А'} - добавление «мертвого» ода к графу потока управления приложения. Рассматриваемое преобразование осу-[ествляет добавление вершины к оригинальному графу потока управления приложе-ия. В результате, код, который был добавлен, не несет никакой функциональной агрузки. Выполнение внедренного кода не несет никакой модификации переменных, •днако, в связи с тем, что сложность восстановления оригинального графа потока правления, и, как следствие оригинального автомата А, основывается на количестве азовых блоков приложения, применение описываемой операции позволит увеличить ложность анализа защищенного приложения.

- гс:(А,к)->А\ А'= гс (А,к)={Х*, 5,',/, А'} - усложнение пути в графе отока управления защищаемого приложения. Суть преобразования заключается в ом, что существующий элемент множества выходов уе У конечного автомата А при-ожения Р отображается в несколько элементов. В результате применения данного реобразования к графу потока управления защищаемого приложения происходит за-ена одной вершины графа на несколько. Причем логика работы защищенного при-ожения не изменяется. Добавленные вершины, в совокупности, интерпретируют тот :е участок кода приложения, что и оригинальная вершина.

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

Процесс защиты приложения реализуется за счет разделения конечного автомата , интерпретирующего защищаемое приложение, на две группы объектов:

- множества X, 5, У;

- множества £4, $„ а также отображения/, А.

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

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

Как показано в работе, при реализации атаки методом полного перебора для восстановления оригинального графа потока управления, сложность процесса восстанов-2

ления составит 0(2" ), оценка нижней границы сложности компрометации системы защиты производится по теореме Кэли для деревьев и составляет П(пп_1), где л число базовых блоков приложения или число состояний автомата А, описывающего защищенное приложение.

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

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

В рамках данной работы используется следующая интерпретация задачи «Псевдонимов»:

Пусть имеется программа Р, в которой используется некоторое конечное множество переменных V. Обращения на чтение либо запись к переменной V/ образуют собой некоторое конечное множество УУ^ В результате, в коде приложения вместо отдельного обращения к переменной на чтение либо запись поставим некоторое число, которое единственным образом идентифицирует обращение к переменной. Например, при нахождении обращения к элементу множества % данное обращение будет заменяться индексом; в результате, некоторый индекс / соответствует процессу записи (либо чтения) щ переменной V*. Таким образом, при попытке восстановления оригинальных обращений к переменным возникает задача, аналогичная рассмотренной выше задаче «Псевдонимов».

В результате применения такого подхода для защиты переменных становится вычислительно сложно осуществить атаки частичного восстановления графа потока управления защищенного приложения с использованием переменных. Задача восстановления оригинальных обращений к переменным соответствует сложности решения задачи «Псевдонимов». Таким образом, реализация атак, основанных на установлении взаимосвязей между базовыми блоками за счет отслеживания работы с переменными приложения, является ЫР-трудной.

Для предотвращения реализации различных атак на внешний аппаратный модуль в работе предложена следующая модель его работы. Функционирование внешнего аппаратного модуля описывается при помощи конечного автомата в котором множество X - входной алфавит конечного автомата В. Множество У - все выходные слова автомата, то есть все возможные выходы аппаратного модуля. 5 -множество состояний автомата. При описании работы внешнего аппаратного модуля множество 5 содержит четыре элемента, то есть, рассматриваемый конечный автомат может находиться в четырех состояниях, а именно:

- штатное состояние;

- состояние «Тревога»;

- состояние «Ошибка»;

- состояние «Отказ».

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

Автоматный граф, интерпретирующий поведение аппаратного модуля в соответствии с автоматом В, представлен на рис. 2. __

\

Штатное состояние

Сброс

\

Ошибка

Нормальные данные

Подозрительные данные

Тревога

Политика не нарушена

Отказ

Рисунок 2 - Автоматный граф работы внешнего аппаратного модуля

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

Методика защиты приложений, предложенная в работе, реализуется за счет следующей последовательности шагов:

- построение графа потока управления защищаемого приложения;

- построение конечного автомата защищаемого приложения по полученному графу потока управления;

- применение запутывающих преобразований к полученному конечному авто-

мату, интерпретирующему защищаемое приложение;

- «разделение» конечного автомата на две группы объектов;

- подготовка низкоуровневого программного обеспечения для внешнего аппаратного модуля;

- выгрузка функции переходов и функции выходов, а также графа потока управления защищаемого приложения во внешний аппаратный модуль;

- защита переменных приложения посредством предложенного в работе способа защиты;

- выгрузка списка обращений к переменным во внешний аппаратный модуль.

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

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

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

- модуль дизассемблирования приложения;

- модуль генерации графа потока управления приложения;

- модуль создания и работы с внутренним представлением приложения;

- модуль запутывания кода приложения;

- модуль защиты переменных приложения;

- модуль генерации файлов для аппаратной составляющей системы защиты;

- модуль работы с аппаратной составляющей системы защиты.

Модуль дизассемблирования приложения. Отвечает за получение из незащищенного приложения кода этого приложения на языке ассемблера соответствующей виртуальной машины (в случае защиты .NET приложений - MSIL). Результат работы модуля используется для построения графа потока управления приложения, а также при построении конечного автомата, интерпретирующего приложение.

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

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

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

Модуль защиты переменных приложения. Отвечает за защиту переменных

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

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

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

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

Общая архитектура программно-аппаратного комплекса представлена на рис 3.

Защищаемое приложение

Дизассемблер

Генератор графа потока управления

Файлы аппаратного модуля

/ Внутреннее представление приложения

t_

Генератор файлов для аппаратного модуля

J Защищенное ^ приложение

Модуль запутывания кода

Модуль защиты переменных

Рисунок 3 - Архитектура комплекса защиты приложений от копирования

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

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

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

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

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

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

- приложения, состоящее из набора коротких циклов;

- приложения с большим количеством переходов.

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

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

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

Разработанный в ходе создания методики защиты приложений способ защиты переменных приложения использован при разработке программно-аппаратного комплекса, выпускаемого компанией «Актив», для противодействия несанкционированному копированию программного обеспечения, что позволило привести сложность компрометации разработанной системы защиты к классу NP полных задач.

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

Результаты диссертационной работы использованы на кафедре «Криптология и дискретная математика» НИЯУ МИФИ для углубления учебного курса «Языки про-

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

Элементы предложенной методики защиты приложений от несанкционированного копирования, а именно:

- способ защиты приложения посредством разделения конечного автомата;

- принцип работы внешнего аппаратного модуля

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

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

ОСНОВНЫЕ ВЫВОДЫ И РЕЗУЛЬТАТЫ РАБОТЫ

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

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

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

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

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

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

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

7. Предложенный в рамках методики метод защиты переменных был использован при построении системы защиты приложений компании «Актив», что привело к увеличению сложности компрометации предлагаемой компанией системы защиты приложений. Методика защиты была использована и реализована для защиты Flash-приложений от несанкционированного копирования для компании «Интерактивное Детство»;

8. Проведенный анализ методов защиты приложений от копирования был использован при создании лабораторной работы для курса «Языки программирования» кафедры «Криптология и дискретная математика» НИЯУ МИФИ. Слушатели курса могут ознакомиться со способами анализа .NET приложений, а также со способами построения различных систем защиты приложений от несанкционированного копирования для данного класса приложений;

9. Разработана система защиты для противодействия несанкционированному копированию приложения, используемого для анализа графа потока управления вредоносного программного обеспечения в Центре вирусных исследований и аналитики «Eset». Предложенная система защиты позволила привести сложность анализа приложения к классу задач EXPTIME;

10. Разработанная система защиты приложений применяется для обеспечения безопасности приложения, используемого для составления смет, в компании ООО «Связьмонтажкомплектация». В результате реализации системы защиты приложений от несанкционированного копирования, с использованием предложенной в работе методики, копирование защищенных приложений является вычислительно трудной задачей;

Основные публикации по теме диссертации:

1. Краснопевцев A.A., Букасов В.А. Разработка средств автоматической защиты приложений, содержащих байт-код. - Материалы 10-й международной научно-практической конференции, Таганрог, 24-27 июня 2008. - с. 15-16

2. Букасов В.А, Краснопевцев A.A. Автоматизация динамической распаковки программ. - Материалы 10-й международной научно-практической конференции, Таганрог, 24-27 июня 2008 - с. 13-14

3. Краснопевцев A.A. Разработка средств автоматизации для переноса байт-кода во внешний аппаратный модуль. - Технологии Microsoft в теории и практике - М.:Вузовская книга, 2008. - с. 139-141

4. Краснопевцев A.A. Разработка автоматической защиты от несанкционированного копирования .NET приложений. - Научная сессия МИФИ-2009. XII Московская международная телекоммуникационная конференция студентов и молодых ученых «Молодежь и Наука». Тезисы докладов в 2-х частях. Ч. 2. М.:МИФИ, 2009. - с. 271-272.

5. Краснопевцев A.A. Разработка автоматической зашиты от несанкционированного копирования .NET приложений с использованием внешнего аппаратного модуля. //Безопасность информационных технологий 2009. №1. С.54-58

6. Краснопевцев A.A. Разработка автоматической защиты приложений и передаваемых, обрабатываемых и хранимых ими данных. //Безопасность информационных технологий 2010. № 3. С.82-85.

7. Краснопевцев A.A. О защите приложений с использованием внешнего аппаратного модуля //Безопасность информационных технологий 2011. № 1. С.]02-104.

8. Фомичев В.М., Варфоломеев A.A., Туманов Ю.М., Коренева A.M., Краснопевцев A.A. О реализации метода полного опробования ключей криптосистем в условиях различных математических моделей распределенных вычислений. //Безопасность информационных технологий 2011. № 1.С. 80-82.

Подписано в печать 17 мая 2011 г. Формат 60x90 1/16. Объем 1,1 печ. л. Тираж 100 экз.

Отпечатано в ООО "Компания Спутник+" 109428, Москва, Рязанский пр-т, д.Ва (495)730-47-74, 778-45-60

Оглавление автор диссертации — кандидата технических наук Краснопевцев, Антон Андреевич

ВВЕДЕНИЕ.

1 АНАЛИЗ СПОСОБОВ ЗАЩИТЫ ПРИЛОЖЕНИЙ, КОМПИЛИРУЕМЫХ В БАЙТ-КОД.

1.1 Программные способы защиты приложений.

1.1.1 Способы, реализующие шифрование кода защищаемого приложения.

1.1.2 Защита приложений с использованием неуправляемого кода.

1.1.3 Способы, реализующие защиту приложений с использованием запутывающих преобразований.

1.2 Программно-аппаратные способы защиты программного обеспечения.

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

1.2.2 Защита приложений от несанкционированного копирования с использованием удаленного сервера.

1.2.3 Системы защиты приложений от копирования с использованием электронных ключей.

1.3 Выводы.

2 МАТЕМАТИЧЕСКАЯ МОДЕЛЬ СИСТЕМЫ ЗАЩИТЫ ПРИЛОЖЕНИЙ, КОМПИЛИРУЕМЫХ В ПРОМЕЖУТОЧНОЕ ПРЕДСТАВЛЕНИЕ.

2.1 Модель нарушителя.

2.2 Математическая модель процесса защиты.

2.3 Постановка задачи.

2.4 Использование запутывающих преобразований.

2.5 Этап защиты приложения от копирования.

2.6 Предотвращение реализации атак, направленных на снижение сложности компрометации системы защиты.

2.7 Методика защиты приложений.

2.8 Анализ возможности реализации атак на систему защиты приложений.

2.9 Патентный поиск по проблеме защиты .NET приложений.

2.10 Выводы.

3 АРХИТЕКТУРА СИСТЕМЫ ЗАЩИТЫ ПРИЛОЖЕНИЙ ОТ НЕСАНКЦИОНИРОВАННОГО КОПИРОВАНИЯ.

3.1 Архитектура программно-аппаратного комплекса.

3.2 Функциональное описание основных модулей программно-аппаратного комплекса

3.3 Выводы.

4 РЕАЛИЗАЦИЯ СИСТЕМЫ ЗАЩИТЫ ПРИЛОЖЕНИИ ОТ НЕСАНКЦИОНИРОВАННОГО КОПИРОВАНИЯ.

4.1 Преимущества предложенного решения относительно других способов защиты .NET приложений.

4.2 ОСНОВНЫЕ ХАРАКТЕРИСТИКИ РАЗРАБОТАННОГО КОМПЛЕКСА.

4.3 РЕАЛИЗАЦИЯ РЕЗУЛЬТАТОВ РАБОТЫ.

4.3.1 Реализация системы защиты .NET приложений от несанкционированного копирования в компании ЗАО «Фирма Актив».

4.3.2 Построение системы защиты от копирования FLASH приложений компании «Интерактивное Детство».

4.3.3 Разработка лабораторной работы «Защита .NET приложений» для курса «Языки программирования» кафедры «Криптология и дискретная математика» НИЯУ МИФИ.

4.3.4 Реализация системы защиты приложения, осуществляющего генерацию смет ООО «Связьмонтажкомплектация».

4.3.5 Реализация системы защиты приложения для Центра исследований и аналитики компании «Eset».

4.4 ВЫВОДЫ.

Введение 2011 год, диссертация по информатике, вычислительной технике и управлению, Краснопевцев, Антон Андреевич

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

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

Под приложениями, компилируемыми в промежуточное представление, в работе понимается вид программного обеспечения, которое компилируется не в машинный код, а в набор команд виртуальной машины (промежуточное представление). Примерами систем, с помощью которых создаются такие приложения, являются ЛЧЕТ[1], Лауа[2] и др[3-5]. Основной отличительной особенностью приложений, созданных с использованием приведенных средств разработки, является то, что полученные приложения скомпилированы не в машинный код, а в промежуточное представление^, 7]. В результате процесс выполнения такого приложения осуществляется не на реальном процессоре

ПЭВМ пользователя, а на виртуальной машине, что в свою очередь, имеет достаточно много положительных сторон, таких, например, как контроль обращений к памяти выполняемого приложения. Таким образом, при разработке приложений, компилируемых в промежуточное представление, предотвращена возможность появления ошибок типа «переполнение буфера»[8] и прочих проблем при работе с памятью. Более того, среда разработки приложений Microsoft Framework [9] и ее аналог (с открытым исходным кодом) Мопо[10] позволяют создавать приложения, написанные на различных языках программирования, что в свою очередь увеличивает простоту интеграции различных программных модулей приложения. Среди языков программирования, которые могут быть скомпилированы в промежуточное представление, присутствуют такие языки как C#[ll], Visual Basic .NET[12], Managed С++[13].

По данным аналитической компании «ТЮВЕ»[14] более 40% разрабатываемого программного обеспечения создается с использованием именно таких средств разработки приложений. Статистика использования различных языков программирования приведена на рисунке 1.

Рисунок 1 - Статистика использования языков программирования

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

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

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

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

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

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

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

• Алексей Солодовников, который является автором и разработчиком программной системы защиты приложений от несанкционированного копирования ASPack.

Разработкой средств защиты от несанкционированного копирования занимались такие фирмы, как:

• компания «Актив», которая с 1994 года является лидером российского рынка защиты программного обеспечения (продукты Guardant Code, Time, Sign и пр.);

• компания «Aladdin», основанная в 1993 году, в сферу деятельности которой кроме создания систем защиты приложений входит разработка аппаратной составляющей для систем PKI (HASP);

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

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

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

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

Объект исследования. Приложения, компилируемые в промежуточное представление.

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

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

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

В рамках решения научной задачи необходимо:

• провести анализ существующих подходов и методов защиты от несанкционированного копирования > приложений, компилируемых в промежуточное представление;

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

• разработать методику защиты приложений от несанкционированного копирования;

• оценить сложность компрометации предложенной системы защиты;

• разработать архитектуру систем защиты приложений с использованием предложенной в работе методики;

• разработать программно-аппаратный комплекс, реализующий систему защиты .NET приложений от копирования.

Методы исследований. Теория автоматов, методы оценки сложности вычислений, теория графов.

Научная новизна работы состоит в следующем:

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

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

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

Практическая значимость результатов заключается в следующем:

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

• предложен метод оценки сложности компрометации систем защиты приложений, использующих внешний аппаратный модуль;

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

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

Внедрение результатов исследований. Метод защиты переменных J приложения был использован при разработке системы защиты приложений от ' несанкционированного копирования, предлагаемой компанией ЗАО «Фирма

Актив».

Разработанная методика защиты была использована для построения системы защиты Flash-приложений от несанкционированного копирования. Разработанная система защиты применяется для противодействия несанкционированному копированию учебных курсов, выпускаемых ' компанией «Интерактивное Детство».

Теоретические и прикладные результаты, полученные в ходе выполнения диссертационной работы, использованы в учебном курсе «Языки программирования-2» кафедры «Криптология и дискретная математика» НИЯУ МИФИ для создания лабораторной работы.

Предложенная методика защиты приложений от несанкционированного копирования была реализована для защиты .NET приложения, используемого в Центре вирусных исследований и аналитики «Eset», для исследования графа потока управления вредоносного программного обеспечения.

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

Публикации и апробация работы. Результаты диссертации изложены в 8 публикациях, 4 из которых опубликованы в рецензируемых журналах ВАК РФ. Результаты работы докладывались на конференциях и семинарах различного уровня:

• Инфофорум-2009 - 29-30.01.2009г, г. Москва, получены диплом и медаль в номинации «Лучшая научная работа года»;

• 2-я Международная телекоммуникационная конференция студентов и молодых ученых «Молодежь и наука», 12.10. 2009, НИЯУ МИФИ, представленная на конференции работа получила грант по программе

У.М.Н.И.К.;

• НТТМ-2009, 24-27.06.2009, Москва, ВВЦ, получена медаль за «Успехи в научно-техническом творчестве»; •

• Научная сессия МИФИ 2011, 01 -05.02.2011, НИЯУ МИФИ: Основные положения, выносимые на защиту: математическая модель процесса защиты от несанкционированного копирования приложений, компилируемых в промежуточное представление; математическая модель функционирования внешнего аппаратного модуля системы защиты от несанкционированного копирования; методика защиты приложений от несанкционированного копирования; архитектура и программно-аппаратный комплекс, реализующий защиту приложений, с использованием предложенной в работе методики.

Структура работы. Работа состоит из введения, четырех глав, заключения, списка литературы, включающего 105 наименований, и одного приложения. Текст диссертации изложен на 150 страницах, включая 15 рисунков и 2 таблицы.

Заключение диссертация на тему "Защита от несанкционированного копирования приложений, компилируемых в промежуточное представление"

4.4 Выводы

Получена реализация системы защиты для .NET приложений, используемая в компании ЗАО «Фирма Актив». В результате применения предложенной методики защиты приложений от копирования сложность компрометации системы защиты .NET приложений, предлагаемых компанией ЗАО «Фирма Актив » возросла.

Получена реализация системы защиты для предотвращения несанкционированного копирования Flash приложений для компании «Интерактивное Детство».

Созданы дополнительные лабораторные работы для курса «Языки программирования-2» кафедры «Криптология и Дискретная математика» НИЯУ МИФИ. В результате создания дополнительных лабораторных занятий слушатели курса имеют возможность на прикладном уровне ознакомиться со средствами защиты приложений от несанкционированного копирования и распространений .NET приложений, а также со внутренним представлением и архитектурой .NET приложения и .NET Framework'а.

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

-136

Построена система защиты приложения, используемого для анализа графа потока управления вредоносного программного обеспечения, используемого в Центре исследований и аналитики компании «Eset». В результате построения данной системы защиты, сложность анализа кода приложения стала относиться к классу сложности EXPTIME, а сложность анализа данных приложения стала относиться к NP-полным задачам.

Заключение

В ходе выполнения диссертационной работы были получены следующие научные и практические результаты:

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

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

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

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

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

Задача несанкционированного копирования приложения относится к классу

-138задач EXPTIME;

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

7. Предложенный в рамках методики метод защиты переменных был использован при построении системы защиты приложений компании «Актив», что привело к увеличению сложности компрометации предлагаемой компанией системы защиты приложений. Методика защиты была использована и реализована для защиты Flash-приложений от несанкционированного копирования для компании «Интерактивное Детство»;

8. Проведенный анализ методов защиты приложений от копирования был использован при создании лабораторной работы для курса «Языки программирования» кафедры «Криптология и дискретная математика» НИЯУ МИФИ. Слушатели курса могут ознакомиться со способами анализа .NET приложений, а также со способами построения различных систем защиты приложений от несанкционированного копирования для данного класса приложений;

9. Разработана система защиты для противодействия несанкционированному копированию приложения, используемого для анализа графа потока управления вредоносного программного обеспечения в Центре вирусных исследований и аналитики «Eset». Предложенная система защиты позволила привести сложность анализа приложения к классу задач EXPTIME;

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

Библиография Краснопевцев, Антон Андреевич, диссертация по теме Методы и системы защиты информации, информационная безопасность

1. Microsoft .NET framework. www.microsoft.com/net/

2. Технологии Java.- http://www.sun.com/software/index.jsp7caWava%20

3. Описание языка программировани PHP http://www.php.net

4. Описание языка программирования Python. http://python.org.

5. Gosling J., Joy В., Guy S., Bracha G. The Java Language Specification. Second Edition . 2000. - http://java.sun.com/docs/books/jls/ secondedition/html/j.title.doc.html.t

6. Описание стандартных классов IL.-http://www.cybercom.net/~kimbly/jatha/doc/macros/CTOR.html

7. Описание языка MSIL. www.codeproject.com/KB/msil/

8. Переполнение буфера. http://www.codenet.ru/progr/asm/overflow.php

9. Microsoft Framework http://www.intuit.ru/department/se/msfdev/

10. Mono Project. www.mono-project.com/

11. Арчер Т. Основы С#: Новейшие технологии / пер. с англ. и под ред. В.Г. Вшивцева; гл. ред. А.И. Козлов. -М.: Издательско-торговый дом "Русская Редакция", 2001. 421 е.: ил.

12. Visual Basic .NET. http://msdn.microsoft.com/ru-ru/vbasic/ms789132

13. Введение в Managed С++. -www.spbalt.net/Content/AntonOnikiychukManagedCpp.pdf

14. Консалтинговая компания ТЮВЕ. — http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

15. Описание VMProtect.-http://www.vmprotect.ru/-141

16. Описание ASProtect.- http://www.aspack.com/asprotect.aspx

17. C. Wang. A Security Architecture for Survivability Mechanisms. PhD Thesis. Department of Computer Science, University of Virginia, 2000.http://www.cs.virginia.edu/~survive/pub/wangthesis.pdf

18. C. Wang, J. Davidson, J. Hill, J. Knight. Protection of Software-based Survivability Mechanisms. Department of Computer Science, University of Virginia, 2001 .http://www.cs.virginia.edu/~jck/publications/dsndistribute.pdf

19. Dotfuscator. http://www.preemptive.com/products/dotfuscator/overview

20. P Sojan Lai. Array based java source code obfuscation using classes with restricted arrays. http://arxiv.org/pdf0807.4309

21. H. Lai. A comparative survey of Java obfuscators available on the1.ternet.http://www.cs.auckland.ac.nz/~cthombor/Students/hlai

22. D. Low. Java Control Flow Obfuscation. MSc Thesis. University of Auckland,1998.http://www.cs.arizona.edu/'-collberg/Research/Students/DouglasLow/thesis.ps

23. J. MacDonald. On Program Security and Obfuscation. 1998.http://www.xcf.berkeley.edu/~jmacd/cs261 .pdf

24. M. Mambo, Т. Murayama, Е. Okamoto. A Tentative Approach to Constructing Tamper-Resistant Software. In ACM New Security Paradigms Workshop, Langdale, Cumbria UK, 1998.

25. F. Tip. A survey of program slicing techniques. Journal of Programming Languages, 3(3): 121-189, September 1995.

26. E. Walle. Methodology and Applications of Program Code Obfuscation. Faculty of Computer and Electrical Engineering, University of Waterloo, 2001. http://walle.dyndns.org/morass/misc/wtr3b.doc

27. Zelix KlassMaster Java Code Obfuscator and Obfuscation. http://www.zelix.com

28. Фомичев B.M. Дискретная математика и криптология. Курс лекций — М.: ДИАЛОГ-МИФИ, 2003 400 с.

29. Брюс Шнайер Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си М.: Издательство ТРИУМФ, 2003— 816 с.

30. Венбо Мао Современная криптография: теория и практика.- М.: Издательский дом «Вильяме», 2005. 768с.

31. Чеповский A.M. Common Intermediate Language и системное программирование в Microsoft .NET — http://www.intuit.rU/department/pl/cil/4/2.html

32. Guardant автозащита для .NET. http://www.guardant.ru/software-protection/automatic-protection/

33. Архитектура Фон-Нейманна-comp.ilc.edu.ru/assets/files/lection6/6.1fonneiman.pdf

34. Архитектура Фон-Неймана http://prog-begin.net.ru/modules.php?name=News&file=article&sid=62

35. Дубцов A.B. Microsoft .NET СПб.: БХВ-Петербург, 2004.-704 е.: ил.

36. Ахо А. Ульман Дж. Компиляторы: принципы, технологии и инструменты.-М.:Издательский дом «Вильяме», 2003.-768с.

37. Ахо А., Ульман Д. Теория синтаксического анализа, перевода и компиляции. — М.:Мир, 1978.Aladdin Автозащита для .NET .-http://www.aladdin.ru/catalog/hasp/hasphl.php

38. S. Muchnick. Advanced Compiler Design and ¡Implementation. Morgan Kaufmann Publishers, 1997.

39. S. Chow, Y. Gu, H. Johnson, V. Zakharov. An approach to the obfuscation of control-flow of sequential computer programs. LNCS, 2001, 2200, pp. 144-155.

40. C. Cifuentes, K. J. Gough; Decompilation of Binary, Programs. Technical report FIT-TR-1994-03 . Queensland University of Technology,1994.http://www.fit.qut:edu.au/TR/techreports/FIT-TR-94-03.ps

41. C. Collberg, C. Thomborson, D. Low. A Taxonomy of Obfuscating Transformations. Department of Computer Science, The University of Auckland, 1997.http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThombors onLow97a

42. C. Collberg, C. Thomborson, D. Low. Breaking Abstractions and Unstructuring Data Structures. In IEEE International Conference on Computer Languages, ICCL'98, Chicago, IL, May 1998.

43. С. Collberg, С. Thomborson, D. Low. Manufacturing Cheap, Resilient, and Stealthy Opaque Constructs. In Principles of Programming Languages 1998, POPL'98, San Diego, CA, January 1998.

44. C. Collberg, C. Thomborson. On the Limits of Software Watermarking. Technical Report #164. Department of Computer Science, The University of Auckland,1998.http ://www. cs. arizona. edu/~collberg/Research/Publications/CollbergThombors on98e

45. G. Hachez, C. Vasserot. State of the Art in Software Protection. Project FILIGRANE (Flexible IPR for Software Agent Reliance) deliverable/V2.http://www.dice.ucl. ac.be/crypto/filigrane/External/d21. pdf

46. Анализ запутывающих преобразований программ,-http://www.citforum.ru/security/articles/analysis/

47. Краснопевцев A.A. Разработка средств автоматизации для переноса байт-кода во внешний аппаратный модуль.-Технологии Microsoft в теории и практике М.:Вузовская книга, 2008. - с. 139-141

48. Матросов А.А Курс лекций защита программного обеспечения-http://aktivco.ru/course/lecture/

49. А. В. Чернов. Интегрированная среда для исследования "обфускации" программ. Доклад на конференции, посвящённой 90-летию со дня рождения

50. А.А.Ляпунова. Россия, Новосибирск, 8-11 октября 2001 гoдa.http://www.ict.nsc.ru/ws/Lyap2001/2350/

51. В. Barak, О. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. Vadhan, K. Yang. On the (Im)possibility of Obfuscating Programs. LNCS, 2001, 2139, pp. 118.

52. B. Barak. How to go beyond the black-box simulation barrier http://www .cs .princeton .edu/~boaz/Papers/nonbb .ps

53. Грег Холанд, Гарри Мак-Гроу. Взлом программного обеспечения анализ и использование кода М.: Издательский дом «Вильяме», 2005—400 е.: ил.

54. Щеглов К.Е. Обзор алгоритмов декомпиляции — http://zhurnal. 1143ape.relarn.ru/articles/2001/116.pdf

55. Описание ключа Guardant Code.-http://www.guardant.ru/products/guardant-code/

56. SenseLock изнутри — http://senselock.ru/senselockinside.html

57. Rockey 7 .NET http://www.rockey.com.my/prod-dongle-rockey7.php

58. Электронные ключи Aladdin. http://www.aladdin-rd.ru/catalog/hasp/haspsnn/

59. Электронные ключи Rockey. http://www.rockey.com.my/procl-dongle.php66 руководство разработчика для Senselock-senselock.ru/doc/SenseLockDevGuideRus.pdf

60. Процессоры ARM.- http://www.arm.com/products/CPUs/index.btml

61. Архитектура ARM процессора.- http://www.terralab.ru/systera/235565/

62. Методические рекомендации по обеспечению с помощью криптосредств безопасности персональных данных при их обработке в информационных системах персональных данных с использованием средств автоматизации. www.rsoc.ni/docs/20081218101410ol.doc

63. The International Obfuscated С Code Contest, http://www.ioccc.org

64. M. Jalali, G. Hachez, C. Vasserot. FILIGRANE (Flexible IPR for Software Agent Reliance). A security framework for trading of mobile code in Internet. In Autonomous Agent 2000 Workshop: Agents in Industry, 2000.

65. A. von Mayrhauser, A. M. Vans. Program Understanding: Models and Experiments. In M. Yovits, M. Zelkowitz (eds.), Advances in Computers, Vol. 40, 1995. San Diego: Academic Press, pp. 1-38.

66. Краснопевцев A.A., Букасов B.A. Разработка средств автоматической защиты приложений, содержащих байт-код.- Материалы 10 международной научно-практической конференции, Таганрог, 24-27 июня 2008. с. 15-16

67. D. Dyer. "Java Decompilers Compared". http://www.javaworld.com/javaworld/jw-07-1997/jw- 07-decompilers.html, June 1997

68. SourceAgain Java decompiler — http://www.ahpah.com

69. Харари Фрэнк Теория графов / Пер.с англ. и предисл. В. П. Козырева. Под ред. Г. П. Гаврилова. Изд. 2-е. М.: Едиториал УРСС, 2003. - 296 с.

70. Харари Ф., Палмер Э. Перечисление графов. Пер. с англ. M.: Мир, 1977г. 326 с

71. Ope О. Теория графов. — 2-е изд. — М.: Наука, 1980. — 336 с.

72. Алексеев В.Е., Таланов В.А. Графы и алгоритмы. Структуры данных. Модели вычислений БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий ИНТУИТ.ру, 2006

73. Костюкова Н.И. Графы и их применение. Комбинаторные алгоритмы для программистов БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий ИНТУИТ.ру, 2007

74. Карпов Ю.Г. Теория автоматов. Питер. 2002, С.224

75. Лупал A.M. Математические алгоритмы и основы программирования. -http://window.edu.ru/window/catalog?prid=44618

76. B.C. Князьков, Т.В. Волченская Введение в теорию автоматов. — http://www.intuit.ru/department/algorithms/intavth/

77. Краснопевцев A.A. Разработка автоматической защиты приложений и передаваемых, обрабатываемых и хранимых ими данных //Безопасность информационных технологий 2010. № 3. С.82-85.

78. Краснопевцев A.A. О защите приложений с использованием внешнего аппаратного модуля //Безопасность информационных технологий 2011. № 1. С. 102-104.

79. Chenxi Wang A Security Architecture for Survivability Mechanisms http://citeseerx.ist.psu.edu/viewdoc/summary?doi=l 0.1.1.18.5833

80. Дональд Кнут. Искусство программирования, том 1 — 3-е изд. — М.: Вильяме, 2006. —720 с

81. Дональд Кнут. Искусство программирования, том 2 — 3-е изд. — М.: Вильяме, 2006. —720 с

82. Дональд Кнут. Искусство программирования, том 3 — 3-е изд. — М.: Вильяме, 2006. —720 с

83. М. Hind, A. Pioli. Which pointer analysis should I use? In ACM SIGSOFT International Symposium on Software Testing and Analysis, pp. 113-123, August 2000.

84. Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 1. Введение и общая модель. — http://protect.gost.ru/document.aspx?control=7&id=174294

85. Федеральная служба по интеллектуальной собственности. — www.fips.ru/94 .NET Reflector. http://www.red-gate.com/products/dotnet-development/reflector/

86. Merrill Br., Drayton P., Albahari B. C# Essentials, 2nd Edition. O'Relly, 2002.-216 p.

87. Просиз Дж. Программирование для Microsoft .NET / пер. с англ. М.: Издательско-торговый дом "Русская редакция", 2003. - 704 е.: ил.

88. MSDN: Windows.Forms reference documentation. -http://msdn.microsoft.com/ en-us/library/dd30h2yb.aspx.

89. Описание пространства имен System.Reflection-http://msdn.microsoft.com/en-us/library/system.reflection.aspx

90. Документация проекта «Mono.Cecil».— http://www.mono-project.com/Cecil

91. Букасов В.А. Анализ средств защиты приложений от несакционированного копирования. library.mephi.ru/data/scientific-sessions/2009/t5/6-2-1 .doc

92. Краснопевцев A.A. Разработка автоматической защиты от несанкционированного копирования .NET приложений с использованием внешнего аппаратного модуля//Безопасность информационных технологий 2009. №1. С.54-58

93. Букасов В.А, Краснопевцев A.A. Автоматизация динамической распаковки программ.- Материалы 10 международной научно-практической конференции, Таганрог, 24-27 июня 2008.- с. 13-14

94. Компания «Активж-www.guardant.ru

95. Компания «Интерактивное Детство».- www.interdetstvo.ru

96. Сайт кафедры «Криптология и Дискретная математика». -www.kaf42.ru