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

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

Автореферат диссертации по теме "Метод защиты программных средств на основе запутывающих преобразований"

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

Буинцев Дмитрий Николаевич

МЕТОД ЗАЩИТЫ ПРОГРАММНЫХ СРЕДСТВ НА ОСНОВЕ ЗАПУТЫВАЮЩИХ ПРЕОБРАЗОВАНИЙ

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

АВТОРЕФЕРАТ

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

I

Томск - 2006

л

Работа выполнена в Томском государственном университете систем управления и радиоэлектроники

НАУЧНЫЙ РУКОВОДИТЕЛЬ:

Доктор технических наук, профессор Шелупанов Александр Александрович

ОФИЦИАЛЬНЫЕ ОППОНЕНТЫ:

Доктор физико-математических наук, профессор Бондарчук Сергей Сергеевич Кандидат технических наук, доцент Сонькин Михаил Аркадьевич

ВЕДУЩАЯ ОРГАНИЗАЦИЯ:

Московский государственный инженерно-физический институт (технический

университет)

Защита состоится « ?» _2006г. в ч. на заседании

диссертационного совета Д 212.268.03 в Томском государственном университете систем управления и радиоэлектроники (ТУСУР) по адресу: 634034, г. Томск, пр. Ленина 40.

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

Автореферат разослан « февраля 2006г.

Ученый секретарь

диссертационного совета _ , . ^

к.т.н., доцент Р.В. Мещеряков

/М>6 Л

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

Актуальность проблемы.

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

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

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

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

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

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

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

Проблемы защиты ПС в том числе и вне доверенной вычислительной среды рассматриваются в работах ряда авторов: С.П. Расторгуева, A.B. Чернова, П.Д. Зегжды, A.A. Шелупанова, В.А. Захарова, Г.Н. Чижухина, A.A. Малюка и др., а так же зарубежных исследователей: В. Barak, С Collberg, С. Wang. В тоже время эта проблема далека от окончательного решенаç, методы

библиотека |

S?2SrBC\

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

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

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

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

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

2. Проведение оценки эффективности запутывающих преобразований.

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

4. Разработка метода защиты ПС на основе запутывающих преобразований

5. Проведение оценки величины требуемых ресурсов вычислительной системы для реализации метода.

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

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

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

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

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

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

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

Внедрение и реализация.

Результаты работы внедрены в защищенную телекоммуникационную систему, обслуживаемую научно-производственной фирмой «Информационные системы безопасности», ООО «Биоток», ООО «Научный центр «Полюс». Результаты диссертации по анализу запутывающих преобразований были использованы при выполнении Федеральных целевых программ (ФЦП) Минобрнауки РФ «Развитие единой образовательной информационной среды (2001-2005 годы)» по проектам: «Разработка концепции защиты сетевых образовательных ресурсов с учетом основных (типовых) уязвимостей и угроз», «Создание научно-методических материалов по обеспечению безопасности образовательных ресурсов», а также по ФЦП Минобрнауки РФ «Создание системы открытого образования» проект: «Библиотека свободно распространяемых программных средств организации и проведения лабораторных практикумов в режиме многопользовательского удаленного доступа по сети Интернет». Программная реализация и алгоритмы работы программ внедрены в учебный процесс ТУСУРа по курсу «Программно-аппаратные средства обеспечения информационной безопасности» при подготовке специалистов по защите информации по специальности 090105 -Комплексное обеспечение информационной безопасности автоматизированных систем.

Апробация работы.

Материалы работы обсуждались на научно-методических семинарах кафедры комплексной информационной безопасности электронно-вычислительных систем ТУСУР, Отдела проблем информатизации Томского научного центра СО РАН, Томской группы инженеров по электротехнике и радиоэлектроники (IEEE) и докладывались на научных конференциях различного уровня: V Всероссийская научно-практическая конференция «Недра Кузбасса. Инновации»; XI Международная научно-методическая конференция «Новые информационные технологии в университетском образовании» (Кемерово, 2006); XIV общероссийская научно-техническая конференция «Методы и технические средства обеспечения безопасности информации» (Санкт-Петербург, 2005); Всероссийская научно-техническая конференция «Научная сессия ТУСУР» (2004, 2005); Всероссийский конкурс студентов и аспирантов по информационной безопасности «SIBINFO-2004», Международная научно-практическая конференция «Электронные средства и системы управления» (Томск, 2004).

г

Публикации. Основные положения диссертации опубликованы в 12 печатных работах.

Структура работы. Диссертационная работа состоит из введения, четырех глав, списка используемых литературных источников из 105 наименований и 4 приложений. Она содержит 121 страницу машинного текста, 28 рисунков и 9 таблиц.

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

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

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

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

ОСНОВНОЕ СОДЕРЖАНИЕ РАБОТЫ Во введении обосновывается актуальность темы, определяется цель и решаемые задачи, излагаются научная новизна, практическая ценность.

В первой главе проведен анализ существующих методов защиты ПС с использованием аппаратных и программных средств. Рассмотрены свойства ПС как объекта защиты. На основе анализа свойств ПС сформулирована концепция построения методов защиты. Свойства ПС определяются их двойственной природой: программные средства обладают как свойствами алгоритмов (в процессе выполнения реализуют некоторую функцию), так и данных (хранятся в файле или занимают некоторую область оперативной памяти).

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

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

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

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

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

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

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

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

Пусть 7V будет трансформирующим процессом исходной программы Рг„ тогда при Ргх =>Тг=> Ргг. Программа Ргг будет представлять собой трансформированный код программы Рг,. Процесс трансформации 7> будет считаться процессом запутывания, если будут удовлетворены такие требования:

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

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

времени t, чем программы Рг,, т.е. tPr^ > tPr<;

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

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

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

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

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

преобразования, объединяющие скалярные переменные одного типа в массив.

- Преобразования потока управления программы, которые изменяют структуру её графа потока управления, такие как развёртка циклов, выделение фрагментов кода в процедуры, и другие.

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

В главе приведены методы анализа программ.

1. Синтаксические. К этой группе относятся методы, основанные только на результатах лексического, синтаксического и семантического анализа программы.

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

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

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

Сопоставлены методы запутывания и методы, которые могут применяться для их анализа (рис.1).

Рисунок 1. Методы запутывания программ и методы для их анализа

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

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

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

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

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

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

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

1. Построение графа потока управления и выделение базовых блоков программы. На этом этапе выполняется построение исходного графа с использованием теории графов и проводится оптимизационный анализ.

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

3. Введение массива для хранения существенных и несущественных переменных.

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

5. Введение «мертвого кода». Такое преобразование должно осуществляется таким образом, что бы в процессе работы программы к этому блоку были постоянные обращения. Данный блок может работать в качестве «маршрутизатора».

6. "Зацепление" мертвого кода и основного кода программы. Для этого используются трудноанализируемые свойства программ, например указатели меток.

Схема реализации приведенного метода представлена на рис.2.

Код исходной программы

1 _

Построение графа потока управления исходной программы

Разрушение структуры графа потока управления

Выделение базовых блоков

I

Введение массива переменных

Переприсваевание и перевычисление переменных

I

Изменение структуры циклов

Развертка циклов

Внесение новых дуг

Разложение циклов

Использование меток

Введение «мертвого» кода

I

Переименование и перемешивание меток

Зацепление основного и «мертвого» кода

X

Код запутанной программы

Рисунок 2. Схема реализации метода

В главе приведено теоретическое и практическое обоснование устойчивости метода. Проведены исследования метода на ряде примеров.

На рис. 3 приведен граф потока управления для исходного и запутанного текста программы на примере реализации сортировки методом «Шелла».

Рисунок 3. Вид графа потока управления для программы сортировки методом «Шелла»: вид графа потока управления исходного текста (а), вид графа потока управления запутанного текста (б)

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

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

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

где г((7) - вероятность наличия у пользователя средства на момент времени 1 из множества средств снятия защиты;

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

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

Для получения численной экспертной оценки надежности защитного механизма используется качественное понятие «Уровень Понимания Программного Продукта (УПП)» исследователем - и.

УППП отражает знание и понимание исследователем назначения команд и операндов программы. Единица измерения УППП - число машинных команд, операндов. Уровень понимания программного продукта конкретным исследователем равен Лг, если эксперт в состоянии «откомментировать» назначение каждой команды и каждого операнда применительно к функциям, которые решает данный программный продукт. В общем случае процесс исследования защитного механизма на предмет его преодоления носит вероятностный характер. Вероятность того, что за время / один эксперт не сможет разобраться с защитным механизмом будет определяться через отношение УППП к объему программы:

А< 0 = '-^.

где ¿2 - вероятность того, что пользователь опробует имеющиеся у него средства для исследования ПСЗИ (Программные Системы Защиты Информации) защищенной программы;

и(1) - УППП на момент времени /; ,

N - объем защищенной программы в машинных командах.

Понимание экспертом каждой анализируемой команды или операнда программного продукта во многом определяется тем, как он смог освоить уже исследованную часть модуля (если эксперт продолжает исследовать программу в течении времени Л, то его уровень понимания изменится на <Ш} т.е. можно представить в виде: и(1)Ж = Ы1/,

где к - коэффициент сложности анализа.

При этом и(1) имеет смысл только тогда, когда его значение меньше или равно N. т.е. 0йи^йЫ

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

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

Для вычисления цикломатического числа Маккейба применяется формула:

к = e~v + 1ц, где

е - число дуг ориентированного графа, v - число вершин,

ц - число компонент связанности графа.

Выражение для расчета вероятности того, что программа не будет «взломана» в заданный момент времени, имеет следующий вид:

т = дС.иОлС.«*) = (1 - г,(/)L,)""<"(! - LAxpC-J-))^'1

N к

Данный расчет вероятности для программы сортировки методом «Шелла» приведен на рис 4.

Объем в инструкциях для исходной программы сортировки методом «Шелла» - значения параметра /V =16000, коэффициент сложности анализа к=А. Для запутанной программы, значение N =20740, коэффициент сложности анализа ¿=13.

Р(0

Рисунок 4. Расчет вероятностей для программ сортировки методом «Шелла»: сплошная линия - для разработанного метода, пунктирная линия - для исходного текста программ.

Из приведенного графического отображения и сравнения количественных характеристик для исходной и запутанной программ видно, что на анализ исходного текста программы будет затрачено меньше времени, чем на анализ запутанного кода. Это следует из того, что для любого момента времени / величина p(t) для запутанной программы больше, чем исходного кода.

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

Для запутанной программы алгоритмом С. Wang's параметр N =40480, коэффициент А:=12.

Результаты проведенного анализа представлены на рис. 5.

P(t)

Рисунок 5. Расчет вероятностей для программ сортировки методом «Шелла»: сплошная линия - для разработанного метода, пунктирная линия - для исходного текста программ, большая пунктирная линия - для С. Wang's.

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

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

1-й уровень - задача выполнена, т.е. респондент справился с заданием;

2-й уровень - задача выполнена частично, т.е. респондент получил промежуточные результаты, но с заданием не справился;

3-й уровень - задача не выполнена, т.е. респондент не справился с заданием.

Результаты эксперимента представлены на рис.6.

1 2 3

Уровень выполнения задания

Рисунок 6. Гистограмма результатов выполнения задания.

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

Критериями при выполнении численных экспериментов для сравнения и анализа запутывающих преобразований были взяты: среднее время обработки и среднее количество операций, выполняемых в программе, количество элементов для сортировки менялось в интервале, массив элементов заполнялся случайными числами. Запутанные программы тестировались на ПК с характеристиками: процессор Intel Pentium М/ Celeron М 1,3 ГГц, ОЗУ 256 МБ.

Количество элементов для метода «Шелла» изменялось в интервале от 10 ООО - 120 000 значений. При этом время выполнения исходной программы - от 0,001 до 1,4 сек. Количество операций в зависимости от числа использованных элеме нтов лежит в интервале от 1,5 * 106 - 193 * 106.

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

- время выполнения изменялось в пределах 0,001 - 1,5 сек;

- количество операций изменялось в пределах 4,5 * 106 - 520* 106.

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

преобразованиями по этим критериям представлены на рис. 7 и таблице 1.

Таблица 1. Сравнительные данные для программы сортировки методом «Шелла».

Кол-во Время Nu число Время N2, число Отношение

элементов выполнения операции выполнения операции Ыг/М,

исходной исходной запутанной запутанной

программы, программы, программы, программы,

сек. ♦10е сек. 106

10000 0,001 1,5 0,05 4,5 3

20000 0,05 5,6 0,109 14 2,5

30000 0,1 14 0,2 38 2,714286

40000 0,16 22 0,38 58 2,636364

50000 0,21 34 0,65 91 2,676471

60000 0,34 50 0,9 140 2,8

70000 0,43 64 1,208 174 2,71875

80000 0,54 84 1,645 225 2,678571

90000 0,7 114 2,1 296 2,596491

100000 0,87 130 2,52 348 2,676923

110000 1,06 158 3,1 420 2,658228

120000 1,4 193 3,79 520 2,694301

Рисунок 7. Зависимость критериев анализа от количества элементов для сортировки методом «Шелла»

Отношение количества операций исходной и преобразованной программы

приведено на рис.8.

/

Количество элементов

Рисунок 8. Отношение количества операций для метода «Шелла»

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

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

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

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

4. С помощью модельных экспериментов проведен анализ разработанного метода защиты. Определена эффективность защиты.

ОСНОВНЫЕ ПОЛОЖЕНИЯ ДИССЕРТАЦИИ ОПУБЛИКОВАНЫ В СЛЕДУЮЩИХ РАБОТАХ

1. Буинцев Д.Н. Анализ применения запутывающих преобразований для программного обеспечения/ Шелупанов A.A., Шевцова О.О.// Вопросы защиты информации, №3 (70), 2005. - С. 38-44.

2. Буинцев Д.Н. Лабораторный практикум по программным средствам защиты информации на основе запутывающих преобразований./ О.О. Шевцова// Тезисы XI Международной научно-методической конференции (посвященной 15-летию образования системы Центров НИТ в России)

«Новые информационные технологии в университетском образовании». Кемерово: Изд-во ИНТ, 2006-С. 262-263.

3. Буинцев Д.Н Применение запутывающих преобразований кода программы для защиты программного продукта. // Интеллектуальные системы в управлении, проектировании и образовании. Вып. 5. - Томск: Изд-во Института оптики атмосферы СО РАН, 2006 - С. 158-161.

4. Буинцев Д.Н. Защищенное программное обеспечение при инновационной деятельности организаций.// Сб. Материалов V Всероссийской научно-практической конференции (посвященной 15-летию образования системы Центров НИТ в России) «Недра Кузбасса. Инновации». Кемерово: Изд-во ИНТ, 2006-С.53-54

5. Буинцев Д.Н. Метод маскировки программ путем преобразования графа потока управления// Интеллектуальные системы в управлении, проектировании и образовании. Вып. 4. - Томск: Изд-во Института оптики атмосферы СО РАН, 2005. - С.164-169.

6. Буинцев Д.Н. Теоретические исследования методов «обфускации» программных средств //Материалы Всерос. науч.- тех. Конф. «Научная сессия ТУ СУР - 2005». 26-28 апреля 2005г., Томск. В 4-х ч. - Томск: Изд-во Том. гос. ун-т систем управления и радиоэлектроники, 2005 -Ч.З. - С. 15-17.

7. Буинцев Д.Н. Защита информации в недоверенной вычислительной среде.// Сб.Материалов XIV общероссийской научно-технической конференции «Методы и технические средства обеспечения безопасности информации» Изд-во СПбГПУ, 2005 - С. 18.

8. Буинцев Д.Н. Защита программной средств вне доверенной вычислительной среде// Интеллектуальные системы в управлении, проектировании и образовании.- Вып. 4. - Томск: Изд-во Института оптики атмосферы СО РАН, 2005 -С.159-163.

9. Буинцев Д.Н. Анализ запутывающих преобразований и методы маскирования программ в защите конфиденциальной информации//Материапы междунар. науч.-практич. конф. «Электронные средства и системы управления». 6-8 октября 2004г, Томск. В 2-х ч. -Томск: Изд-во Института оптики атмосферы СО РАН, 2004 - 4.2. - C.20J,-210.

10.Буинцев Д.Н. Системы измерения биологических ритмов человека. / O.P. Абдразаков, C.B. Косточко // Тезисы докладов на региональной научно-технической конференции «Радиотехнические и информационные системы и устройства». 15-17 мая 2001г., Томск: Изд-во Том. гос. ун-т систем управления и радиоэлектроники, 2001 - С.24-26.

11 .Буинцев Д.Н. Исследование биологических ритмов человека. Материалы II школы семинара молодых ученых «Современные проблемы физики и технологии». 5-7 февраля 2001г. СФТИ, Томск: Изд-во Том. гос. ун-т 2001 -С.100-103.

12.Буинцев Д.Н. Метод исследования биологических ритмов человека. / Н.В. Лобанов // Тезисы докладов на региональной научно-технической конференции «Радиотехнические и информационные системы и устройства». 17 мая 2000г., Томск: Изд-во Том. гос. ун-т систем управления и радиоэлектроники, 2000 - С. 134.

*- 339>

Заказ 146. Тираж 100 Томский государственный университет систем управления и радиоэлектроники пр. Ленина, 40

Оглавление автор диссертации — кандидата технических наук Буинцев, Дмитрий Николаевич

Введение.

Глава 1. Анализ методов защиты программных средств.

1.1 Методы защиты информации с помощью аппаратных средств.

1.2 Программные средства защиты информации.

1.3 Анализ программных средств как объекта защиты.

1.4 Анализ структуры программных систем защиты информации.

1.5 Выводы.

Глава 2. Построение методов защиты программных средств с помощью запутывающих преобразований.

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

2.2 Классификация запутывающих преобразований.

2.2.1 Преобразования форматирования.

2.2.2 Преобразования структур данных.

2.2.3 Преобразования потока управления.

2.3 Классификация методов анализа программ.

2.3.1 Методы статического анализа.

2.3.2 Методы статистического и динамического анализа.

2.4 Классификация способов запутывания к применяемым методам анализа и распутывания программ.

2.5 Оценка эффективности применения запутывающих преобразований.

2.6 Выводы.

ГлаваЗ. Построение метода защиты программных средств с помощью запутывающих преобразований.¡.

3.1 Построение графа потока управления.

3.2 Преобразование графа потока управления.

3.5 Теоретическое обоснование устойчивости метода.

3.6 Практическое обоснование устойчивости метода.

3.7 Выводы.

Глава 4. Решение практических задач защиты программных средств.

4.1 Анализ характеристик методов защиты программных средств.

4.2 Выбор объектов тестирования.

4.3 Методика оценки эффективности защиты.

4.3.1 Оценка эффективности программных средств.

4.4 Оценка устойчивости метода к ручному анализу и дизассемблированию85 ^ 4.4.1 Подготовка эксперимента.

4.4.2 Описание результатов эксперимента.

4.4.3 Результаты дизассемблирования.

4.5 Определение размера требуемых ресурсов вычислительной системы.

4.6 Показатели применимости разработанного метода защиты программных средств.

4.7 Выводы.

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

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

Применяемые компьютерные информационные технологии решают огромный круг проблем в различных областях человеческой деятельности, от простого решения задач до управления сложными технологическими процессами. Чем сложнее задача автоматизации и чем ответственнее область, в которой используются компьютерные информационные технологии, тем все более критичными становятся такие свойства как надежность и безопасность информационных ресурсов [41, 59], задействованных в процессе сбора, накопления, обработки, передачи и хранения компьютерных данных. Вредоносные воздействия на информацию в процессе функционирования КС различного назначения осуществляются с целью нарушения ее конфиденциальности, целостности и доступности. Решение задач, связанных с предотвращением воздействия непосредственно на информацию, осуществляется в рамках комплексной проблемы обеспечения безопасности информации и имеет достаточно развитую научно-методическую базу. Следует отметить, что исследования по обеспечению информационной безопасности включены в перечень приоритетных направлений развития науки и техники и критических технологий РФ. При этом, рассматривая информацию как активный эксплуатируемый ресурс, можно говорить о том, что процесс обеспечения безопасности информации включает в себя и обеспечение безопасности программного обеспечения или программных средств (ПС) компьютерных систем. Данный аспект обеспечения безопасности информации и средств ее обработки именуется эксплуатационной безопасностью, так как соответствует этапу применения КС.

Очевидно, что функциональные и надежностные характеристики КС определяются качеством и надежностью программного обеспечения, входящего в их состав. Кроме проблем качества и надежности ПС при создании КС фундаментальная проблема обеспечения их безопасности приобретает все большую актуальность. При этом в рамках данной проблемы на первый план выдвигается безопасность технологий создания программного обеспечения [19, 24, 45, 46, 60, 62, 65]. Данный аспект проблемы безопасности программных комплексов является сравнительно новым и связан с возможностью внедрения в тело программных средств на этапе их разработки (или модификации в ходе авторского сопровождения) так называемых "программных закладок" [44] или преобразование кода программы таким образом, что он становится технически сложным для анализа и модификации и экономически нецелесообразным.

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

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

В настоящее время активно ведутся работы по разработке методов защиты ПС от несанкционированного доступа с целью сокрытия их логики и структуры [83, 86, 102, 103]. Большинство существующих методов защиты ПС решают проблему защиты в составе доверенной вычислительной среды, где доверенные аппаратные средства предоставляют общую защитную физическую оболочку для всех компонент информационной системы.

Доверенная вычислительная среда - это интегрированная среда с совокупностью защитных механизмов, использующих достаточные аппаратные и программные средства, чтобы обеспечить одновременную обработку информации разной степени секретности группой пользователей без нарушения прав доступа согласно политики безопасности [72, 73].

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

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

Проблемы защиты ПС в том числе и вне доверенной вычислительной среды рассматриваются в работах ряда авторов: С.П. Расторгуева, A.B. Чернова, П.Д. Зегжды, A.A. Шелупанова, В.А. Захарова, Г.Н. Чижу-хина, A.A. Малюка и др., а так же зарубежных исследователей: В. Barak, С. Collberg, С. Wang. В тоже время эта проблема далека от окончательного решения, т.к. предложенные методы защиты либо не достаточно универсальны и подразумевают использование вспомогательных аппаратных средств, либо не достаточно формализованы, и остается открытым вопрос определения эффективности защиты.

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

3].

Эти методы защиты ПС относятся к классу запутывающих преобразований (obfuscating transformations) (маскировки программ), т.е. в результате применения к исходной незапутанной программе таких преобразований получается запутанная программа (obfuscated), которая более трудна для анализа, понимания и модификации[70].

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

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

2. Проведение оценки эффективности запутывающих преобразований.

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

4. Разработка метода защиты ПС на основе запутывающих преобразований.

5. Проведение оценки величины требуемых ресурсов вычислительной системы для реализации метода.

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

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

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

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

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

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

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

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

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

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

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

Публикация и апробация работы. Основные научные результаты опубликованы в 12 работах.

Материалы работы обсуждались на научно-методических семинарах кафедры комплексной информационной безопасности электронно-вычислительных систем ТУСУР, Отдела проблем информатизации Томского научного центра СО РАН, Томской группы инженеров по электротехнике и радиоэлектроники (IEEE) и докладывались на научных конференциях:

1. XI Международная научно-методическая конференция (посвященная 15-летию образования системы Центров НИТ в России) «Новые информационные технологии в университетском образовании» (2006, Кемерово).

2. V Всероссийская научно-практическая конференция (посвященная 15-летию образования системы Центров НИТ в России) «Недра Кузбасса. Инновации» (2006, Кемерово).

3. XIV общероссийская научно-техническая конференция «Методы и технические средства обеспечения безопасности информации» (2005, Санкт-Петербург).

4. Всероссийская научно-техническая конференция «Научная сессия ТУ СУР» (2005, Томск).

5. Всероссийская научно-техническая конференция «Научная сессия ТУ СУР» (2004, Томск).

6. Всероссийский конкурс студентов и аспирантов по информационной безопасности «SIBINFO-2004».

7. Международная научно-практическая конференция «Электронные средства и системы управления» (2004, Томск).

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

Структура и объем работы. Диссертация состоит из введения, четырех глав, заключения, списка литературы из 105 наименований и 4 приложений. Общий объем работы составляет 121 страницу, в том числе 28 рисунков и 9 таблиц.

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

Заключение

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

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

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

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

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

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

- Метод увеличивает сложность графа потока управления после применения запутывающих преобразований. На примере применения метода для программы методом сортировки «Шелла» граф потока управления исходной программы имеет свойство конечного графа 13-го порядка размерностью 15, а граф запутанного кода программы имеет свойство конечного графа 32-го порядка размерностью 43.

- Предложенный метод увеличивает сложность графа зависимостей по данным за счёт внесения в тело программы мертвого кода. Основной код функций и введённый мертвый код зависят друг от друга по данным.

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

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

6. Выполнена оценка и сравнение разработанного метода с существующими методами запутывания. Для этого был проведен сравнительный расчет для алгоритма запутывания С.ХУап^Б. Выполненный расчет показал, что эффективность защиты ПС предложенным методом выше на 56.7%.

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

Результаты диссертации внедрены в ООО НПФ «Информационные системы безопасности», НПФ «Биоток», «Полюс», что подтверждено соответствующими актами о внедрении (Приложения).

Программная реализация и алгоритмы работы программ используются в учебном процессе ТУСУРа по курсу «Программно-аппаратные средства обеспечения информационной безопасности» при подготовке специалистов по защите информации по специальности 090105 - Комплексное обеспечение информационной безопасности автоматизированных систем [11].

Библиография Буинцев, Дмитрий Николаевич, диссертация по теме Методы и системы защиты информации, информационная безопасность

1. Автоматизированные системы. Защита от НСД к информации. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации: Руководящий Гостехкомиссии документ. М.: ГТК РФ, 1992. - 39 с.

2. Айерлэнд К., Роузен М. Классическое введение в современную теорию чисел. / Перевод с английского С. П. Демушкина под редакцией А. Н. Паршина. М: «Мир», 1987. - 416 с.

3. Анин Б.Ю. Защита компьютерной информации. СПб.: БХВ-Петербург, 2000. - 384 с.

4. Аппаратно-программные средства телекоммуникационных сетей фирмы OST.: Учебное пособие / Красовский В.И., Храмов A.B. М.: МИФИ, 1996.-68с.

5. Бабенко J1.K., Ищуков С.С., Макаревич О.Б. Защита информации с использованием смарт-карт и электронных брелков. М.: Гелиос, 2003. -352 с.

6. Безруков H.H. Компьютерная вирусология// Справ. К: Издательство УРЕ, 1991.-450 с.

7. Буинцев Д.Н. Анализ применения запутывающих преобразований для программного обеспечения/ Шелупанов A.A., Шевцова О.О.// Вопросы защиты информации, №3 (70), 2005. С. 38-44.

8. Ю.Буинцев Д.Н. Защита программной средств вне доверенной вычислительной среде// Интеллектуальные системы в управлении, проектировании и образовании,- Вып. 4. Томск: Изд-во Института оптики атмосферы СО РАН, 2005. - С.159 - 163.

9. Виноградов И.М. Основы теории чисел. СПб: Лань, 2004. — 174 с.

10. ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования.

11. ГОСТ Р 34.10-94. Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма.

12. ГОСТ Р 34.11-94. Информационная технология. Криптографическая защита информации. Функция хэширования.

13. ГОСТ Р 50922-96. Защита информации. Основные термины и определения.

14. ГОСТ Р ИСО/МЭК 15408-3-2002 Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий.

15. Гроувер Д., Сатер Р., Фипс Дж. и др. Защита программного обеспечения. / Пер. с англ./ Под редакцией Д. Гроувера. М.: Мир, 1992. - 280 с.

16. Дейкстра Э.В. Смиренный программист. / В кн. Лекции лауреатов премии Тьюринга за первые 20 лет 1966-1985. М.: Мир, 1993. - 560 с.

17. Дискретная математика. Часть 1: Учебное пособие / Сафьянова E.H. -Томск: Томский межвузовский центр дистанционного образования, 2000.- 106 с.

18. Дискретная математика. Часть 2: Учебное пособие / Сафьянова E.H. -Томск: Томский межвузовский центр дистанционного образования, 2000. 99 с.

19. Дымов В. Хитрости, трюки, секреты. Хакинг и фрикинг. М: Майор. Серия: Мой компьютер, 2002. - 176 с.

20. Ефимов А.И. Проблема технологической безопасности программного обеспечения систем вооружения // Безопасность информационных технологий. 1994. №3 - 4. с. 22 - 33.

21. Защита компьютерных ресурсов от несанкционированных действий пользователей: Учеб пособие / Зима В.М., Молдовян A.A., Молдовян H.A. СПб: ВИКА им. А.Ф. Можайского, 1997. - 189 с.

22. Казарин О.В. Безопасность программного обеспечения компьютерных систем. М: МГУЛ, 2003. - 212 с.

23. Касперски К. Образ мышления дизассемблер IDA. - М: «Солон»,2001.-478 с.

24. Коваль И. Как написать компьютерный вирус: практика программирования на ассемблере. СПб: Символ Плюс, 2000. - 189 с.

25. Концепция защиты средств вычислительной техники и автоматизированных систем от НСД к информации. // Руководящий документ Гостехкомиссии России. М.: ГТК РФ, 1992. - 12 с.

26. Круглински Д. Уингоу С., Шеферд Дж. Программирование на Microsoft Visual С++ 6.0 для профессионалов / Пер. с англ. СПб: Питер; М.: Из-дательско-торговый дом «Русская редакция», 2000. - 864 с.

27. Липаев В.В. Управление разработкой программных средств: методы, стандарты, технология. М.: ФиС, 1993. - 160с.

28. Липаев В.В. Системное проектирование сложных программных средств для информационных систем. / Издание второе, переработанное и дополненное. / Серия «Управление качеством» М.: СИНТЕГ,2002.-268 с.

29. Мазуров В.А. Компьютерные преступлении: классификация и способы противодействия. М: Логос, 2002. - 148 с.

30. Наумович Г., Мемон Н. Предотвращение пиратства, обратной инженерии и незаконного использования компьютеров. // Computer IEEE Computer Society, v. 36, no. 6, 7, June 2003. P. 64 - 71.

31. Новиков Д.А. Статистические методы в педагогических исследованиях (типовые случаи). М.: МЗ-Пресс, 2004. - 67 с.

32. Носова И.А., Козадеров Н.П. Программное обеспечение: правовые проблемы, пути их решения. М.: КомпьютерПресс, 1998. 7 с.

33. Пальчун Б.П. Проблема взаимосвязи надежности и безопасности информации. / В кн.: Тезисы докл. конференции "Методы и средства обеспечения безопасности информации"/ С.-Петербург. - 1996.-С.184-185.

34. Правиков Д.И. Ключевые дискеты. Разработка элементов защиты от несанкционированного копирования. М.: Радио и связь, 1995. - 128 с.

35. Правиков Д.И. Фролов К. Реализация пристыковочного модуля // Монитор. 1994. №5.

36. Правиков Д.И., Чибисов В.Н. Об одном подходе к поиску программных закладок // Безопасность информационных технологий. 1995. №1.-С.76-79.

37. Преступления в сфере компьютерной информации: квалификация и доказывание: Учебное пособие. / Под редакцией Ю.В.Гаврилина. Серия: Высшая школа. М: ЮИ МВД РФ, 2003. - 240 с.

38. Проблемы безопасности программного обеспечения. / Под ред. Зегжда П.Д. СПб.: СПбГТУ, 1995. - 192 с.

39. Пярин В.А. Кузьмин A.C., Смирнов С.Н. Безопасность электронного бизнеса. / Под. Ред. Действительного члена РАЕН д.т.н., проф. В.А. Минаева. М.: Гелиос АРВ, 2002. - 432 с.

40. Расторгуев С.П. Программные методы защиты информации в компьютерах и сетях. М.:«Яхтсмен», 1993. - 188 с.

41. Расторгуев С.П., Дмитриевский H.H. Искусство защиты и "раздевания" программ. М.: Совмаркет, 1991. - 94 с.

42. Румянцев А. Информационное право. Статьи и заметки. Закат Европы (1995-2000): http://aha.ru/~andrewr/index.htm.

43. Середа С. Анализ средств преодоления систем защиты программного обеспечения // "ИНФОРМОСТ" "Радиоэлектроника и Телекоммуникации" - 2002. №4(22) - С. 11-16.

44. Середа С. Программно-аппаратные системы защиты программного обеспечения. Материалы Международной конференции аспирантовпри Экономической Академии Республики Молдова: http://www.citforum.ru/security/software/sereda2/.

45. Симкин JI.C. Программы для ЭВМ: правовая охрана (правовые средства против компьютерного пиратства). М.: Городец, 1998. С. 62-63.

46. Соломон Д., Русинович М. Внутреннее устройство Microsoft Windows 2000. Мастер класс. / Пер. с англ. СПб: Питер; М.: Издательско-торговый дом «Русская редакция», 2001. - 752 с.

47. Спесивцев А.В. Вегнер В.А., Крутякова А.Ю. и др. Защита информации в персональных ЭВМ. М.: «Радио и связь», 1992.-190 с.

48. Средства вычислительной техники. Защита от несанкционированного доступа к информации. Показатели защищенности от НСД к информации. // Руководящий документ Гостехкомиссии России. М.ГТК РФ, 1992.-24 с.

49. Стенг Д., Мун С. Секреты безопасности сетей. К.: "Диалектика", 1996. - 543 с.

50. Сырков Б. Компьютерная преступность в России. Современное состояние// Системы безопасности связи и телекоммуникаций. 1998. №21. -С.70-72.

51. Тейер Т., Липов М., Нельсон Э. Надежность программного обеспечения. М.: Мир, 1981.-328 с.

52. Теоретические основы компьютерной безопасности: Учеб. пособие для вузов / Дерявин П.Н. и др. М.: Радио и связь, 2000. - 192 с.

53. Теория вероятностей: Учеб. для вузов. 6-е изд. стер. / Вентцель Е.С. -М.: Высш. Шк., 1999. - 576 с.

54. Теория и практика обеспечения информационной безопасности. / Под ред. Зегжда П.Д. М.: «Яхтсмен», 1996. 192 с.

55. Теория случайных процессов и ее инженерные приложения: Учеб. пособие для втузов. 2-е изд. стер. / Вентцель Е.С., Овчаров JI.A. - М.: Высш. Шк., 2000. - 383 с.

56. Тимофеенко JI.П. Охрана прав на интеллектуальную собственность. К.: «Заря», 1994. 106 с.

57. Томпсон К. Размышления о том, можно ли полагаться на доверие// В кн. Лекции лауреатов премии Тьюринга за первые 20 лет 1966-1985.-М.: Мир, 1993.-560 с.

58. Файтс Ф., Джонсон П., Кратц М. Компьютерный вирус: проблемы и прогноз. / Пер.сангл.В.Г.Шноля / Под ред.В.В.Мартынюка. М.: Мир, 1993.- 175 с.

59. Хоффман Л. Современные методы защиты информации./ Пер.с англ./ Под ред. В.А. Герасименко. М.: Сов. радио, 1980. - 264 с.

60. Цивин C.B. Защита программных средств путем преобразования их структуры // Защита информации в сетях и системах связи: Тезисы докладов науч.-техн. конф., Пенза, 25-28 октября 2000 г. Пенза: ПНИЭИ, 2000.-С. 5.

61. Цивин C.B. Противодействие изучению исполняемого кода путем маскирования // Безопасность и конфиденциальность информации в сетях и системах связи: Тезисы докладов науч.-техн. конф., Пенза, 6-9 октября 1998 г. Пенза: ПНИЭИ, 1998. - С. 60.

62. Чернов А. В. «Интегрированная среда для исследования "обфускации" программ»: http://www.ict.nsc.ru/ws/Lyap2001/2350.

63. Чернов А. В. Анализ запутывающих преобразований программ: http://mksoft.km.ru/iTiy/pda/channels/geturl.php?url=http://citforum.ru//secu ritv/arti cl es/anal vsi s/

64. Шелупанов A.A. Лось В.П., Мещеряков Р.В., Белов Е.Б. Основы информационной безопасности. М.: Горячая линия телеком, 2006. - 544 с.

65. Шелупанов A.A. Мещеряков Р.В. Специальные вопросы информационной безопасности: Монография. Томск: Изд-во Института оптики атмосферы СО РАН, 2003. - 244 с.

66. Щербаков А. Защита от копирования. М.: «Эдель», 1992. - 80 с.

67. Щербаков А. Разрушающие программные воздействия. М.: ЭДЕЛЬ, 1993.-64 с.

68. Элементы теории графов, схем и автоматов: Учебное пособие для студентов. / Алексеев В.Б., Ложкин С.А. М.: Издательский отдел ф-та ВМиК МГУ, 2000. - 58 с.

69. Barak В., О. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. Vadhan, K. Yang. On the (Im)possibility of Obfuscating Programs // LNCS 139. 2001. -P. 1-18.

70. Ben-Or M., Canetti R., Goldreich O. Asynchronous secure computation// Proc 25th ACM Symposium on Theory of Computing. 1993. - P. 52 - 61.

71. Blum M., Kannan S. Designing programs that check their work // Proc 21th ACM Symposium on Theory of Computing. 1989. - P. 86 - 97.

72. Blum M., Luby M., Rubinfeld R. Self-testing/ correcting with applications to numerical problems // Proc 22th ACM Symposium on Theory of Computing. 1990. - P. 73 -83.

73. Buell D.A., Ward R.L. A multiprecise arithmetic package // J.Supercomput. 1989. - V.3. №2. - P. 89- 107.

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

75. Cohen F., Fischer M.H. A Robust and Verifiable Cryptographically Secure Election Scheme.// Proceedings of the 26th Annual IEEE Symposium on the Foundations of Computer Science, 1985. P. 372-382.

76. Collberg C., 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/CollbergThomb orsonLow97a

77. Collberg C., C. Thomborson, D. Low. Manufacturing cheap, resilient and stealthy opaque constructs.// Symp. on Principles of Prog. Lang, 1998. P.184-196.

78. Compuware Nu Mega. Accelerating Device Driver Development. // Using SoftlCE. April 1999.: ftp://Nu:Mega@adamsoft.dynip.com

79. Hind M., A. Pioli. Which pointer analysis should I use? // In ACM SIGSOFT International Symposium on Software Testing and Analysis, August 2000.-P. 113-123.

80. Hunter D.G.N. RSA key calculations in ADA // The Comp.J. 1985. - V.28. №3. - P.343 - 348.

81. ISO/IEC 15408 Common Criteria for Information Technology Security Evaluation. Introduction and General Model: ISO/IEC 15408 May 1998.

82. Lynn B., M. Prabhakaran, A. Sahai. Positive results and techniques for ob-fuscation. // EUROCRYPT, 2004. P. 20-39.

83. Mambo M., T. Murayama, E. Okamoto. A Tentative Approach to Constructing Tamper-Resistant Software. // Workshop on New Security Paradigms, 1998. P.23 33.

84. Micali S., Rogaway Ph. Secure computation// Advances in Cryptology -CRYPTO'91, Proceedings, Springer-Verlag LNCS. 1992. V.576. P.392 -404.

85. Muchnick S. Advanced Compiler Design and Implementation. // Morgan Kaufmann Publishers, ISBN: 1-55860-320-4, 1997. P. 856.

86. Rivest R. L. The MD4 message digest algorithm// MIT Laboratory for Computer Science, 1990: http://www.faqs.org/rfcs/rfcl 186.html.

87. Rivest R. The MD5 message digest algorithm// MIT Laboratory for Computer Science and RSA Data Security, 1992: http://www.faqs.org/rfcs/rfc 1321 .html.

88. Rivest R.L., Shamir A., Adleman L. A method for obtaining digital signatures and public-key cryptosystems // Communication of the ACM.- 1978.-V.21.- №2.- P.120- 126.

89. Tip F. A survey of program slicing techniques. Journal of Programming Languages. September 1995 №3 (3). - P. 121 - 189.

90. Wang C., 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/~ick/publications/dsn distribute.pdf

91. Wang C., 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/~ick/publications/dsn distribute.pdf

92. Wang C. 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.

93. Zakharov V. A., Varnovsky N. P. On the possibility of provably secure obfuscating programs. // Proc. 5th Conf. Perspectives of System Informatics, 2003, P. 71-78

94. Yury Lifshits .Open Problems in Program Obfuscation: http://cs-seminar.spb.ru, http://logic.ras.ru/~vura/of/surveyl.pdf

95. Обфускация и защиты программных продуктов, 2005: http://www.citforum.rU/security/articles/obfus/#2#2

96. Томский государственный университет систем управления ирадиоэлектроники1. На правах рукописи

97. Буинцев Дмитрий Николаевич

98. Метод защиты программных средств на основе запутывающихпреобразований