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

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

Автореферат диссертации по теме "Разработка прекомпилируемой защиты программных систем с посткомпилируемой обработкой исполняемого кода на основе конечно-автоматных моделей"

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

ЗЫКОВ Виталий Валерьевич

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

Специальность 05.13.11- Математическое и программное обеспечение

вычислительных машин, комплексов и компьютерных сетей

АВТОРЕФЕРАТ

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

Воронеж-2004

Работа выполнена в Липецком государственном техническом университете

Научный руководитель: доктор физико-математических наук, профессор

Блюмин Семен Львович

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

Кудинов Юрий Иванович

кандидат технических наук, доцент Рог Александр Иванович

Ведущая организация - Воронежская государственная технологическая

академия

Защита диссертации состоится <^>> декабря 2004 г. в 1000 часов в конференц-зале на заседании диссертационного совета Д 212.037.01 при Воронежском государственном техническом университете по адресу: 394026, г. Воронеж, Московский проспект, 14.

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

Автореферат разослан

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

Питолин В. М.

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

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

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

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

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

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

Диссертационная работа соответствует научному направлению ЛГТУ «Разработка теории проектирования информационных систем»

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

Исходя из данной цели, определены следующие основные задачи:

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

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

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

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

- разработка модификации данной защиты для контроля легитимности программ, распространяемых по сети Internet.

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

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

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

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

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

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

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

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

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

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

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

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

Результаты диссертационной работы используются в учебном процессе ЛГТУ при изучении студентами специальности 230401 «Прикладная математика» дисциплин «Безопасность компьютерных систем» и «Системное и прикладное программное обеспечение».

Апробация работы. Теоретические и практические результаты, полученные в процессе исследования, обсуждались на межвузовской научно-технической конференции «Новые технологии в научных исследованиях, проектировании, управлении, производстве» (Воронеж, 2001), на VII международной открытой научной конференции «Современные проблемы информатизации в технике и технологиях» (Воронеж, 2002), на IX международной открытой научной конференции «Современные проблемы информатизации в системах моделирования, программирования и телекоммуникациях» (Воронеж, 2004), на научных семинарах кафедры прикладной математики ЛГТУ.

Публикации. По теме диссертации опубликовано 6 научных работ.

Структура и объём работы. Диссертация состоит из введения, четырёх глав и заключения, библиографического списка из 103 наименований. Основная часть работы изложена на 133 страницах машинописного текста, содержит 49 рисунков и 2 таблицы.

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

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

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

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

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

Рис. 1. Схема противодействия средств защиты и взлома программного

кода

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

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

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

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

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

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

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

Предлагаемая конечно-автоматная модель функционирования защиты, реализована с использованием технологии меток, где под меткой понимается фрагмент кода, неотличимый от исполняемых кодов программы, но ими не являющийся, и позволяющий однозначно выделять нуждающиеся в защите блоки. Модель задается конечным автоматом В = (Sb, Х&, Yg, Sob, &В> гДе 5в -конечное непустое множество состояний; - конечное непустое множество входных сигналов, которыми служат программные команды; - конечное непустое множество выходных сигналов, которыми служат действия над программным кодом; Sob^Sb - начальное состояние; Sb: Sbx Хв~* Sb функция переходов; Xb'SbxXb~*Yb - функция выходов. Граф конечного автомата представлен на рис. 3.

к IS

Принудительное сохранение открытого кода ПО Использование отладочных средств

Дизассемблирование Системный мониторинг

Распаковка или дешифрация Эмуляция аппаратного обеспечения

m^mmmm — mmmmmm^^Simm!mm^mimm~~mmmmm^w — шштшшштшт — тшш

j Противодействие-4------ ^Противодействие ^

/ ,!______ 4v

1 Шифрование

I

5

ii

6

2 Динамическое

'ч 3 Виртуальные

\

\

\ I / /

\

Взаимодействие \

Контроль целостности

1

шифрование (ус схема)

2 Система маскировки хода (nos схема)

3 Контроль целостности

(нов схема)

/ 1 Алгоритмы запутывали!

/ /

!

! I I

I *

\

\

■Г V

2 Алгоритмы мутации

3 Вычисление сложных

выражений 4 Нестандартная работа с аппаратным и программным

обеспечением 5 Схемы мультип »точности

УВзаимодействиеV

^ Противодействие]

Логический анализ и модификация

к

s

Рис. 2. Предлагаемая система противодействия взлому кода

Рис.3. Модель функционирования защиты с использованием меток: хш -программный код; х2в - метка; хзв - зашифрованный код; уш - выполнение кода; угв - переставить фокус на шифрованный фрагмент; узв - дешифровать код; у4В - переставить фокус на начало кода; у5В - зашифровать код

Конечный автомат В = (Sb, Хв, Ув, sob, 5b, ^в) обладает памятью на четыре состояния и описывает наиболее часто используемый вариант функционирования защиты кода. Рассмотрим для него описание одного прохода:

- Sob- Начальное состояние, в котором находится процесс, пока не найдена метка начала защищенного блока.

- Sib- Состояние дешифрации кода. В нём процесс находится до тех пор, пока не найден указатель на окончание защищенного блока.

«

^гв- Это состояние соответствует этапу исполнения дешифрованного кода. В нём осуществляется последовательное исполнение кодов, пока не будет найден конец защищенного блока.

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

При необходимости реализации вложенной защиты, когда защищаемый фрагмент также содержит в себе ряд фрагментов (возможно, с использованием иных алгоритмов шифрования), требуется построить конечный автомат С= (3'с, Ха Ус, Зое, граф которого представлен на рис.4.

Рис. 4. Двухуровневая модель функционирования защиты: х,с -программный код; х'2С, х"гс - метки; х1С - зашифрованный код; ую -выполнение кода; угс - переставить фокус на шифрованный фрагмент; у3с -дешифровать код; у4с - переставить фокус на начало кода; у5С - зашифровать код; у6С - дешифровать код (второй алгоритм); у7С - зашифровать код (второй алгоритм)

Представленная двухуровневая модель и схожие с ней по типу многоуровневые системы относятся к одной группе востребованных защит, ко второй же группе можно отнести двухфазные или многофазные системы. Под фазой понимается строго определённая система шифрования и дешифрования кода, используемая для защиты того или иного фрагмента и расположенная в пределах одного уровня. Соответственно, двухфазная система представлена реализацией двух различных схем шифрования и описывается конечным автоматом Б= (5а Ха, Зоо, ¿а Хв) с рис.5.

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

«Э^УбЭ «эг/узв

*1г/№ *иЛгя>

Рис. 5. Двухфазная модель функционирования защиты: хщ -программный код; х'2о> х"го - метки; х-,о - зашифрованный код; уш -выполнение кода; у20 - переставить фокус ка шифрованный фрагмент; узв -дешифровать код; - переставить фокус на начало кода; у<ц - зашифровать код; >'бо - дешифровать код (алгоритм второй фазы); у70 - зашифровать код (алгоритм второй фазы)

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

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

Операция добавления узла к графу О = (V, К) заключается в добавлении *

либо одного узла V , не оказывающего влияния на внутреннюю логику потокового графа

Арр1у(СУ) = 0* = тУ},{{уМ,{у'У}Л**У}}) (1)

либо множества из п узлов V ¡,..., V т} при условии, что суммарное действие этих узлов не оказывает никакого влияния на внутреннюю логику графа 0=(У, Я)

Арр№У*) = С* = ({М^*}}^М№У},{<У"т (2)

Операция разбиения цикла в графе С? = (V, Я), есть последовательное добавление региона

V'ъ у'з}, ■■■>{ V V/, V'„},{V'п, V)}}, предикатным узлом V* которого служит условие программного цикла

где м> = V „в программном смысле, причём данное преобразование верно при условии корректного разбиения циклового предиката.

Операция добавления дуги {у,у'} в потоковом графе в = (V, Я) порождает граф вида

ОАрр&ОМ)) = СММ,{{у;и}>У}}) (4) Операции добавления предикатного узла V* в потоковом графе в = (V, Я) к узлу у" порождает граф

с вырожденным регионом

Операция разбиения 01(0, у) предикатного узла V в потоковом графе О = (V, Я) с исходящими из него дугами {у, м>'} и {у, "} порождает пару (ити более) предикатных узлов (у, у ) с дугами {у, у }, {у , {у , м''} и {у , м>"'} за счет взаимно уничтожаемых бинарных логических операций (при«ем и»" - добавленный узел).

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

Применение некоторых операций к графу б = (V, Я) (см. рис. 6, Л) с цикломатической сложностью У1(в)=4 выглядит следующим образом:

- й =Арр1у(С,{1"},{ 2'}). К графу добавлены две вершины, но У1(й')=4;

- в"=РАрр1у(С', {1'}, {7'}), в ,=0арр1ау(0", {17), {71'}). К графу добавлены два предикатных узла. У1(С)=б;

- в"=01(в\{4}), Сх^Арр!у(С",{4"}), (?х=ВЛрр1у(Ох,{ 4, 4"},{4", 4'}. В графе С предикатный узел {4} разбит на два предикатных узла {4'} и {4*}, добавлен узел {4"} и две дуги (см. рис.

6, В), щсР)^.

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

В качестве третьего компонента комплексной защиты исполняемого кода предлагается новый способ построения системы контроля целостности (см. рис. 2).

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

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

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

1

А) В)

Рис. 6. Модифицированный с использованием специальных операций граф: А) исходный граф; В) модифицированный граф

Xll/y.L хи/уя.

Рис. 7. Граф расширенной модели функционирования защиты: хц, -программный код; X2L - метка; Xjr. - зашифрованный код; x4L - вызов функции контроля целостности; x5L - код функции; x^l - зашифрованный код; уц, -выполнение кода; y2L - переставь фокус на шифрованный фрагмент; уц -дешифровать код; y4L - переставить фокус на начало кода; y;L - зашифровать код; y6L - вызов функции; у^ - выполнить код функции; ygL - завершить работу функции; y'8L - завершить работу функции с обработкой результатов

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

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

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

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

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

Рис. 8. Принцип работы меток: А) состояние защищённого фрагмента на этапе проектирования защиты; В) состояние защищённого фрагмента после установки защиты

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

Исходный код программы

Исполняемый код программы

В)

А) В) С)

Рис. 9. Схемы размещения блоков защиты в массиве программного кода: последовательно; В - прямой переход; С - возвратный переход

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

А

17)

(8)

Вернуть переход Последующий код

г

Рис. 10. Алгоритм работы защиты фрагмента кода

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

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

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

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

4. Исполняемый код обрабатывается генератором на предмет шифрования необходимых фрагментов.

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

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

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

^ Генерация кода

Модуль модификации *

> Определение ^~типа операция

Рис. И. Граф состояний интерфейса программы маскировки

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

Рис. 12. Алгоритм вычисления псевдослучайной функции зависимости контрольных сумм

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

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

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

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

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

Рис. 14. Защита легитимного пути работы программы анализа газетных материалов от несанкционированного исполнения

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

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

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

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

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

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

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

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

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

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

1. Зыков В.В. Защита программ от нелицензионного копирования в среде Windows 95/98 // Наука и молодёжь на рубеже столетий: сб. трудов. -Липецк: ЛГТУ, 2000. с. 5-7.

2. Зыков В.В. Алгоритмы для вычисления чисел большого размера и информационные системы управления // Новые технологии в научных исследованиях, проектировании, управлении, производстве: сб. трудов. -Воронеж, ВГТУ, 2001. с. 52-53.

3. Зыков В.В. Методы защиты программ от копирования и перспективность их применения //Современные проблемы информатизации в технике и технологиях: сб. трудов. Вып. 7.-Воронеж: ЦЧКИ, 2003. с. 55-56.

4. Зыков В.В. Обзор программных защит и выделение слабых мест // Сб. научных трудов молодых учёных, посвященный 30-летию НИС ЛГТУ, Липецк, 2003. с. 20-22.

5. Зыков В.В. Критерии качества защиты программного обеспечения // Современные проблемы информатизации в системах моделирования, программирования и телекоммуникациях: Сб. трудов. Вып. 9. - Воронеж: Изд. «Научная книга», 2004. с. 356-357.

6. Зыков В.В. Прекомпилируемая модель защиты исполняемого кода с использованием меток // Информационные технологии моделирования и управления: Международный сборник научных трудов. Вып. 15. -Воронеж: Изд. «Научная книга», 2004. с. 49-55.

Ср'

/

17275

Подписано в печать 19.11.04г. Формат 60 х 84 1/16. Бумага офсетная. Ризография. Печ.л. 1,0 Тираж 100 экз. Заказ № 809. Типография ЛГТУ 398600 Липецк, ул. Московская, 30

Оглавление автор диссертации — кандидата технических наук Зыков, Виталий Валерьевич

Введение.

Глава 1. Анализ существующих систем защиты ПО.

1.1 Подходы к защите исполняемого кода.

1.1.1 Системы противодействия процедурам дизассемблирования и дампирования.

1.1.2 Системы затруднения отладки.

К 1.1.3 Системы контроля целостности.

1.2 Требования к современным программным защитам.

1.2.1 Показатели применимости.

1.2.2 Критерии оценки.

1.3 Особенности ПО, распространяемого через Internet.

Постановка задачи диссертационного исследования.

Глава 2. Разработка конечно-автоматной модели защиты, систем маскировки и контроля целостности.

2.1 Конечно-автоматная модель защиты.

2.1.1 Модель функционирования.

2.1.2 Двухуровневые и двухфазные модели.

2.1.3 Особенности применения моделей.

2.2 Маскировка фрагментов кода.

2.2.1 Потоковые графы.

2.2.2 Расширение операций над потоковыми графами.

2.2.3 Типичные примеры.

2.3 Контроль целостности кода.

2.3.1 Хэш-функции.

2.3.2 Модель контроля целостности кода.

2.3.3 Примеры расширений моделей защиты.

Выводы.

Глава 3. Алгоритмизация и реализация комплексной комбинированной системы защиты исполняемого кода.

3.1 Реализация модели функционирования защиты.

3.1.1 Особенности применения программных меток.

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

3.1.3 Реализация многофазных, многоуровневых и смешанных защит.

3.2 Реализация алгоритмов маскировки.

3.2.1 Подготовка блока кода к преобразованию алгоритмами маскировки.

3.2.2 Алгоритм построения потокового графа.

3.2.3 Реализация расширенных операций над потоковыми графами.

3.3 Реализация алгоритмов контроля целостности.

3.3.1 Представление расширения модели защиты.

3.3.2 Особенности реализации функций контроля целостности.

3.4 Оценка качества. Выводы.

Глава 4. Построение комбинированных защит сложной структуры.

4.1 Защиты сложной структуры.

4.1.1 Архитектура защищаемой программы.

4.1.2 Общие подходы к проектированию защит.

4.2 Проблемы ограничения программной функциональности.

4.3 Проектирование системы маскировки кода.

Выводы.

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

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

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

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

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

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

Диссертационная работа соответствует научному направлению ЛГТУ «Разработка теории проектирования информационных систем»

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

Исходя из данной цели, определены следующие основные задачи:

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

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

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

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

- разработка модификации данной защиты для контроля легитимности программ, распространяемых по сети Internet.

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

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

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

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

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

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

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

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

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

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

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

Результаты диссертационной работы используются в учебном процессе ЛГТУ при изучении студентами специальности 230401 «Прикладная математика» дисциплин «Безопасность компьютерных систем» и «Системное и прикладное программное обеспечение».

Апробация работы. Теоретические и практические результаты, полученные в процессе исследования, обсуждались на межвузовской научно-технической конференции «Новые технологии в научных исследованиях, проектировании, управлении, производстве» (Воронеж, 2001), на VII международной открытой научной конференции «Современные проблемы информатизации в технике и технологиях» (Воронеж, 2002), на IX международной открытой научной конференции «Современные проблемы информатизации в системах моделирования, программирования и телекоммуникациях» (Воронеж, 2004), на научных семинарах кафедры прикладной математики ЛГТУ.

Публикации. По теме диссертации опубликовано 6 научных работ.

Структура и объём работы. Диссертация состоит из введения, четырёх глав и заключения, библиографического списка из 103 наименований. Основная часть работы изложена на 133 страницах машинописного текста, содержит 49 рисунков и 2 таблицы.

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

Основные результаты работы следующие:

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

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

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

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

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

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

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

Заключение

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

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

Библиография Зыков, Виталий Валерьевич, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. «Анкад». http://www.microdin.ru/~ancad

2. Аграновский А.В., Хади Р.А. Практическая криптография. Аспекты защиты. М.: Изд. Питер, 2003. - 321с.

3. Алгоритмы, методы, исходники, 2000-2004. http://algolist.manual.ru.

4. Алексанкин Я.Я., Бржозовский А.Э., Жданов В.А. Автоматизированные системы управления / Под ред. Солодовникова В.В. М.: Машиностроение, 1990. - 332 с.

5. Андрианов В.В., Калинский В.Г., Сапегин JI.H. Защита авторства, безотказности и целостности электронных документов // Конфидент. 1997. -№ 1. с. 80-84.

6. Анин Б. О шифровании и дешифровании. // Конфидент. 1997. - с. 7179.

7. Баранов А.П. Теория и практика обеспечения информационной безопасности / Под редакцией Зегжды П.Д. М.: Издательство Агенства "Яхтсмен", 1996.-298 с.

8. Баранов А.П., Борисенко Н.П. Математические основы информационной безопасности. Орел: ВИПС, 1997. - 354 с.

9. Баричев С. Криптография без секретов. М.: Изд. Питер, 2000. - 372 с.

10. Ю.Беззубцев О., Ковалёв А. О лицензировании и сертификации в областизащиты информации. http://www.security.ru/normativ/bookl.html

11. Васильков А., Румянцев Ю. Криптография в LAN. // Компьютерра. -Май, 2002.-с. 34-35.

12. Вилльямс Р.Н. Элементарное руководство по CRC-алгоритмам обнаружения ошибок / Пер. с англ. Сергеев Р.В. Материалы сайта http://dore.on.ru.

13. Водолазский В. Коммерческие системы шифрования: основные алгоритмы и их реализация // Монитор. 1992. - № 6-7. - с. 14-19.

14. Н.Гайкович В. Компьютерная безопасность: заметки о текущем состоянии дел // Банковские технологии. 1997. Июнь. - с. 56-58.

15. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. -СПб.: Изд. Питер, 2001. 736 с.

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

17. Гульев И.А. Компьютерные вирусы, взгляд изнутри. М.: ДМК, 1998. -304 с.

18. Елисеев Е.М., Назаров А.Н. Проблемы безопасности программного обеспечения. СПб.: СПбГТУ, 1999. - 201 с.

19. Емельянов С.В., Вавилов А.А, Аврамчук Е.Ф. Технология системного моделирования. М.: Машиностроение; Берлин: Техник, 1988. - 520 с.

20. Жельников В.В. Криптография от папируса до компьютера. М.: ABF, 1997.-336 с.

21. Зыков В.В. Алгоритмы для вычисления чисел большого размера и информационные системы управления // Новые технологии в научных исследованиях, проектировании, управлении, производстве: сб. трудов. -Воронеж, ВГТУ, 2001. с. 52-53.

22. Зыков В.В. Защита программ от нелицензионного копирования в среде Windows 95/98 // Наука и молодёжь на рубеже столетий: сб. трудов. -Липецк: ЛГТУ, 2000. с. 5-7.

23. Зыков В.В. Критерии качества защиты программного обеспечения // Современные проблемы информатизации в системах моделирования, программирования и телекоммуникациях: Сб. трудов. Вып. 9. Воронеж: Изд. «Научная книга», 2004. - с. 356-357.

24. Зыков В.В. Методы защиты программ от копирования и перспективность их применения //Современные проблемы информатизации в технике и технологиях: сб. трудов. Вып. 7. Воронеж: ЦЧКИ, 2003. - с. 5556.

25. Зыков В.В. Обзор программных защит и выделение слабых мест // Сб. научных трудов молодых учёных, посвящённый 30-летию НИС ЛГТУ, Липецк, 2003. с. 20-22.

26. Институт криптографии связи и информатики (ИКСИ) -http://www.fssr.ru/icccs/icccs.html

27. Карпов Ю.Г. Теория автоматов. СПб.: Изд. Питер, 2002. - 224 с.

28. Касперский К. Тонкости дизассемблирования. Материалы сайта http://dore.on.ru.

29. Каталов В. Защита shareware-nporpaMM. // Компьютерра Онлайн. №240. -с. 15-17.

30. Кнут д. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы. М.: Изд. Мир, 1976. - 724 с.

31. Кудрявцев В.Б., Алешин С.В., Подколзин А.С. Введение в теорию автоматов. М.: Изд. Наука, 1986. - 379 с.

32. Кузьмич В.М. Возможности злоумышленников по «взлому» систем защиты на персональных компьютерах // Защита информации. 1995. -№3. - с. 27-39.

33. Лионг Ю. Максимальная безопасность в Linux. / Пер. с англ. Сергеев Р.- К.: Изд. «ДиаСофт», 2000. 451 с.

34. Липаев В.В. Отладка сложных программ: методы, средства, технология.- М.: Энергоатомиздаи, 1993. 384.

35. Логинов Д. Как написать программу, которую легче купить, чем сломать // Королевство Delphi. Декабрь, 1999.

36. Логинов Д. Шифрование кода // Королевство Delphi. Май, 2000.

37. Магауенов Р. Основные задачи и способы обеспечения безопасности автоматизированных систем обработки информации. М.: ИД Мир безопасности, 1997 г. - 112 с.

38. Мартынов В.А. Оценка эффективности систем защиты программного обеспечения

39. Матвеев В.А., Молотков С.В. Основы верификационного анализа безопасности исполняемого кода программ СПб.: Издание ГТУ, 1994. - 58 с.

40. Мельников В.В. Защита информации в компьютерных системах. — М.: Финансы и статистика; электроинформ, 1997. 367 с.

41. Минский М. Вычисления и автоматы. М.: изд. Мир, 1978. - 247 с.

42. Михайлов С.Ф., Петров В.А., Тимофеев Ю.А. Информационная безопасность. Защита информации в автоматизированных системах. Основные концепции. М.: МИФИ, 1995. - 112 с.

43. Мястковски С. Найти и обезвредить (антивирусные программы) // Мир ПК. 1997.-№4.-с. 37-41.

44. Назаров А.Н., Пашков Ю.Д., Семьянов П.В. Проблемы безопасности программного обеспечения СПб.: Издание ГТУ, 1995. - 201 с.

45. Новичков A. Don't worry, be copy // Компьютерра. Май, 2002. - с. 2933.

46. Орлов С.А. Технологии разработки программного обеспечения. Разработка сложных программных систем. СПб.: Изд. Питер, 2002. - 446 с.

47. Программная защита от копирования SafeDisk. — Материалы взяты с сайта http://www.macrovision.com компании Macrovision Corporation.

48. Пюкке С. Информационное общество и проблемы социального развития // Компьютерра. Октябрь, 2001. - с. 24-26.

49. Пюкке С. Информация без опасности. // Компьютерра. май, 2002. - с. 24-28.

50. Равин И. Технология шифрования исполняемого кода // Королевство Delhi. Апрель, 2003.

51. Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях / Под. Ред. Шаньгина В.Ф. М.: Радио и связь, 1999.-328 с.

52. Ростовцев А.Г. Защита информации в компьютерных системах. Элементы криптологии. СПб.: ГТУ, 1993. - 146 с.

53. Серебряков В.А., Галочкин М.П., Гончар Д.Р., Фуругян М.Г. Теория и реализация языков программирования. М.: МЗ-Пресс, 2003. - 345 с.

54. Системы защиты программного обеспечения от нелегального копирования. Star Force. Материалы сайта http://starforce.com компании Protection Technology.

55. Смит Г.С. Программы шифрования данных // Мир ПК. 1997. - №3 - с. 59-68.

56. Тексты нормативных документов в области защиты информации. — http ://www. security .ru/normativ/law.html

57. Тимофеев П.А. Принципы защиты информации в компьютерных системах // Конфидент. 1998. - №3 - с. 72-76.

58. Тодоров П. Контрольные суммы на страже целостности // Программист. Декабрь, 2003.

59. Харари Ф. Теория графов. М.: Изд. «Мир», 1998. - 382 с.бб.Чернышов В. Основные методы взлома программ. Апрель, 2002. — Материалы сайта http://pilorama.com.ru.

60. Яблонский С.В. Введение в дискретную математику: Учеб. пособие для вузов. / под. Ред. Садовничего В.А., 3-е изд. М.: Высш. шк., 2001. - 384 с.

61. Aho A., Sethi R., Ullman J. Compilers: principles, techniques and tools. -N.Y.: Addison-Wesley, 1986. 214 p.

62. Amos Fiat, Adi Shamir. How to prove yourself: Practical Solutions to

63. Anarch D. CRC and how to Reverse it. http://internode.net.au. 1999.

64. ASPack 2000. http://aspack.com

65. Beckett B. Introduction to Cryptology and PC Security, 1997. 356 p.

66. Blum M., Goldwasser S. An Efficient Probabilistic Public-Key Encryption Scheme which Hides All Partial Information, in Proceedings of CRYPTO'84, Springer-Verlag, 1985, pp. 289-299.

67. Brassar J. Cryptology // PCWorld. Март, 1997. -http://www.osp.ru/pcworld/1997/03/source/bassarl .html

68. Bruce Schneier Applied Cryptography: Protocols, Algorithms and Source Code in C. John Wiley & Sons, 1993. - 618 p.

69. Burt Kaliski, Matt Rodshaw. Message Authentication with MD5 // Cryp-toBytes. Spring 1995. - Vol. 1., No. 1. (The technical newsletter of RSA Laboratories, a division of RSA Data Security, Inc).

70. Carrol J., Long D. Theory of Finite Automata with Introduction to Formal-Languages // Prentice-Hall international, 1989. 438 p.

71. CD Media World Company, 1999-2003. http://cdmediaworld.com.

72. Cohen F. On the Implications of Computer Viruses and Methods of Defense // Computer and security. 1998. - Vol.7, №2. - p. 167-184. fr 82.Computing Security. - http://www.enter.net/~chronos/cryptolog.html

73. Desmedt Y. Unconditionally secure authentification schemes and practical and theoretical consequences // Advances in Cryptology CRYPTO'85. - Berlin ect.: Springer-Vergal, 1986. (Lecture Notes in Computer Science; 218). -P.42-55.

74. Diffie W., Hellman M.E. New directions in cryptography // IEEE Trans. On Information Theory. 1976. - vol. IT -22. - P. 644-654.

75. Erich Bach. Intractable Problems in Number Theory // Advances in Cryptology CRYPTO'88. - Berlin etc.: Springer-Vergal, 1989. (Lecture Notes in Computer Science; 403). - P. 77-93.

76. FIPS publication 46 Data Encryption Standard // Federal Information Processing Standards Publ. 1977.

77. Gilles Brassard. Modern Cryptology. Berlin etc.: Springer-Verlag, 1988.w1.cture Notes in Computer Science; 325).

78. Goldwasser S., Halevi S. Public-Key Cryptosystems from Lattice Reduction Problems. MIT, Laboratory for Computer Science. - 2000.

79. Hoffstein J., Pipher J., Silverman J.H. NTRU: A Ring-Based Public Key Cryptosystem. Brown university, 2000. - 22 p.

80. Identification and Signature Problems // Advances in Cryptology -CRYPTO'86. Berlin etc.: Springer-Verlag, 1987. (Lecture Notes in Computer Science; 263). - P. 186-194.

81. Kahn D. The Codebreakers. N.Y., ABF, 2003. - 517 p.

82. Menezes A., van Oorschot P., Vanstone P. Handbook of Applied Cryptography. CRC Press, 1996. - 571 p.

83. Merkle R.C., Hellman M.E. On the security of multiple encryption // Communications of the ACM. 1981. - Vol. 24. - P. 465-467.

84. Metzger P., Simpson W. IP Authentication using Keyed MD5. Network Working Group. - RFC 1828. - August 1995.

85. NIST FIPS PUB 180-1. Secure Hash Standard. National Institute of Standards and Technology, US Department of Commerce. - 17 Apr 1995.

86. Personal Rivest's Home Page. -http ://theory. lcs.mit.edu/~ri vest/homepage .html

87. R.L. Rivest, A. Shamir and L. Adleman. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. Communications of the ACM, 1998.

88. Robert R. Jueneman. A High Speed Manipulation Detection Code // Advances in Cryptology CRYPTO'86. - Berlin ect.: Springer-Vergal, 1987. (Lecture Notes in Computer Science; 263). - P. 327-346.

89. Schnaier B. Applied Cryptography. John Wiles & Sons, Inc., 1996. - 758 p.

90. Schnier B. One-Way Hash Functions // Dr. Dobbd's J. Sept. 1999. - p. 148-151.

91. System autentification. -http://msdn.microsoft.com/library/psdk/crypto/crvptovrvw 8395.htm

92. T. El-Gamal. APublicKey Cryptosystem and a Signature Scheme Based on Discrete Logarithms. http://www.security.ru

93. The LiDIA project software-package and user-manual. Available from http://www.informatik.th-darmstadt.de/TI/LiDIA/Щ1. УТВЕРЖДАЮ Ректорпецкого государственного гхнического университета,-щйдат технических наук, офессор Куприянов М.П./Л- 2004 г.

94. СПРАВКА об использовании в учебном процессе результатов кандидатской диссертации Зыкова Виталия Валерьевича

95. Декан факультета автоматизации и информатики Липецкого государственного технического университета, доктор технических наук, профессор1. Погодаев А.К.

96. Администрация города Липецка

97. МУНИЦИПАЛЬНОЕ УНИТАРНОЕ ПРЕДПРИЯТИЕ

98. В рамках отдела компьютерного обеспечения МУП «Регистрационно-вычислительного центра г.Липецка» Зыковым В.В. была выполнена работа по проектированию и построению защитной системы ограничения функциональности программного обеспечения.

99. В ходе работы были получены следующие результаты:

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

101. По заданию Отдела по борьбе с компьютерными преступлениями УВД Липецкой области Зыковым В.В. была выполнена работа по проектированию и построению защиты исполняемого кода программного обеспечения.

102. В ходе работы были получены следующие результаты:

103. Разработана и внедрена зашита сложной структуры, основанная на полученных принципах и алгоритмах» обеспечивающая противодействие всем основным угрозам безопасности.1. На№от/3 » мая 20041. Начальникг.