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

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

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

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

Станкевичус Алексей Алексеевич

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

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

информационная безопасность

АВТОРЕФЕРАТ

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

л - 1 ОНТ 2009

¿2.

Автор:_(_

Москва-2009

003478780

Работа выполнена в Национальном исследовательском ядерном университете

«МИФИ» (НИЯУ МИФИ)

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

кандидат технических наук, доцент Петрова Тамара Васильевна

Официальные оппоненты:

доктор технических наук, профессор Оныкий Борис Николаевич

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

Ведущая организация:

Институт проблем информатики Российской академии наук (ИЛИ РАН)

Защита состоится «28» октября 2009 г. в 15 часов 00 минут на заседании диссертационного совета ДМ 212.130.08 в Центре информационных технологий и систем органов исполнительной власти по адресу: 123557, г. Москва, Пресненский Вал, д. 19. Тел. для справок: +7 (495) 323-95-26, 324-84-98.

С диссертацией можно ознакомиться в библиотеке Московского инженерно-физического института (государственного университета).

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

Автореферат разослан « ч.5"» сентября 2009 г.

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

диссертационного совета

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

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

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

Европейский Центр Ядерных Исследований (ЦЕРН) одним из первых начал использовать технологию Грид. Грид был необходим для обработки данных, поступающих от крупнейшего в мире ускорителя заряженных частиц - Большого Адронного Коллайдера (Large Hardon Collider, LHC). В настоящее время СРВ используются для решения множества задач по самым разным фундаментальным и прикладным направлениям - в физике высоких энергий и космофизике, микробиологии и медицине, метеорологии, самолетостроении и целом ряде других областей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

кода выполняемого задания;

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

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

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

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

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

- на Всероссийской конференции студентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования» в 2005 г,

- на XII Всероссийской научной конференции «Проблемы информационной безопасности в системе высшей школы» в 2006 г;

- на XIV Всероссийской научной конференции «Проблемы информационной безопасности в системе высшей школы» в 2007 г;

- на IV Всероссийской конференции студентов, аспирантов и молодых учёных «Технологии Microsoft в теории и практике программирования» в 2007 г;

- на V Всероссийской конференции студентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования» в 2008 г;

- на XVII Международном научно-техническом семинаре «Современные технологии в задачах управления, автоматики и обработки информации» в 2008 г;

- на XVI Всероссийской конференции «Проблемы информационной безопасности в системе высшей школы» в 2009 г.

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

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

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

- алгоритм проверки безопасности исходного кода программ;

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

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

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

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

изложен на 140 страницах, включая 35 рисунков и 10 таблиц.

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

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

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

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

- в вычислениях участвует большое количество вычислительных узлов;

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

СРВ;

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

- СРВ предназначена для достижения как можно большей производительности вычислений;

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

- среда исполнения вычислительных заданий гетерогенна аппаратно;

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

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

Предназначенное для выполнения в СРВ вычислительное задание не должно

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

Рассматриваются различные способы защиты СРВ от вредоносного кода вычислительного задания:

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

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

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

- подпись ПО, при которой автор ПО подписывает его своей ЭЦП, после чего ] случае выявления вредоносного характера ПО, к автору применяются нормативно

правовые санкции;

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

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

- падение производительности (полная эмуляция, системы безопасного программирования, трансляция в безопасное ПО, использование трассирующих мониторов);

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

- повышение требований к аппаратному обеспечению и операционной системе (далее ОС) и, как следствие, сложность применения в гетерогенной среде (виртуализация уровня приложений, виртуализация уровня ОС, паравиртуализация, частичная виртуализация, частичная эмуляция);

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

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

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

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

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

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

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

В таблице 1 приведено описание возможностей рассматриваемых в данной рабо-

те нарушителей безопасности СРВ.

Таблица 1 - Описание возможностей нарушителей

Идентификатор нарушителя Наименование Нарушителя Описание возможностей нарушителя

А Злонамеренный пользователь вычислительного задания Может предоставлять данные для обработки в СРВ при помощи существующего вычислительного задания

Б Злонамеренный разработчик вычислительного задания Может разрабатывать вычислительные задания, используемые другими участниками СРВ

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

В таблице 2 приведены угрозы, исходящие от нарушителей. Таблица 2 - Угрозы, исходящие от нарушителей_

Наименование угрозы Описание угрозы Идентификатор нарушителя

1 2 3

Угроза целостности узла СРВ Осуществление программного воздействия, влекущего выход компонентов ЭВМ из строя. А, Б, В

Угроза целостности обрабатываемой на узле СРВ информации Модификация или удаление информации в ОЗУ ЭВМ, на жестком диске или на ином носителе А, Б, В

Угроза целостности вычислительного задания Нарушение целостности вычислительного задания в ОЗУ ЭВМ путем предоставления реализующих эксплуатацию уязвимости данных для обработки А, В

Угроза доступности диспетчера СРВ Реализация атаки «отказ в обслуживании» или «распределенный отказ в обслуживании» на диспетчер СРВ А, Б, В

Угроза доступности узла СРВ Реализация атаки «отказ в обслуживании» на узел СРВ или перевод узла СРВ в нештатное состояние А, Б, В

Угроза доступности обрабатываемой на узле СРВ информации Программное воздействие, влекущее зашифрование или сокрытие информации, обрабатываемой на ЭВМ А, Б, В

1 2 3

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

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

В работе предлагается набор мер по предотвращению выявленных угроз. Меры по предотвращению угроз приведены в таблице 3. Таблица 3 - Меры по предотвращению угроз

Наименование угрозы Меры по предотвращению

1 2

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

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

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

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

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

1 2

Угроза доступности обрабатываемой на узле СРВ информации Запрет на доступ к обрабатываемой на ЭВМ информации. Верификация ПО на отсутствие уязвимостей, способных привести к выполнению произвольного кода.

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

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

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

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

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

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

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

10

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

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

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

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

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

ных доменов двоичных переменных, он обозначается ХАп и имеет следующий вид:

ХАп = {х\х = (хх> х2,..., хп), где х{ 6 {1,0,1, Т}, I = 1,2,..., п}. (1)

Под 1иТ понимаются «дно» и «вершина» абстрактного домена двоичных переменных, то есть его наименьший и наибольший элементы, соответственно. Отношение порядка в ХАп обозначим как £ и зададим следующим образом:

У А G Хлп, У В G ХЛп,А = <а1(а2.....an>,B = <blfb2.....bn>

А < В <=> а,- < bi Vi € {1,2,..., n}, где а£ < bi задается как ±< 0<T,±<l<T,VnG{±,0,l,T}n<n.

Операция абстракции fa\ 2Vn -* ХАп задается следующим образом:

VC G 2ЧЛ =/а(С) « А = (ava2,...,an)M G {1,2, ...,п},

0, если Vc G С, с = (сг, с2,..., cn) q = 0,

1, если Vc еС, с = <с1( с2(..., cn) с£ = 1, Т, если 3Ь,с £ С, b = {bv b2,..., bn), с = (cv с2,..., сп)\bt Ф сь

±, если С = 0.

Операция конкретизации fc:XAn 2Vn задается следующим образом:

У/А ЕХАп,А = (ava2, ...,an),Vc G Vn,c = (cltc2,...,cn),

{0}, если at = 0, {1}, если a£ = 1, ЦОД}, если ctj G {1, T}.

(2)

(3)

(4)

(Li =

(5)

(6)

ce/c(i4)«Vi€{0,l/...,n} C,G-

(7)

(8)

Заметим, что С £ /с(/а(С)) для любого С € г1'« , то есть при использовании абстракции не происходит потери конкретных значений.

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

Рисунок 1 - Модель ячейки памяти, не требующей инициализации

Ячейка может находиться в одном из трех состояний: ясв - ячейка свободна, qвьщ - ячейка выделена, дош - ошибка. Начальным состоянием является яс„. При переходе в состояние qoш происходит остановка работы модели. Переходы в модели помечены как а - выделение, / - освобождение, с - обращение к данным в ячейке. В зависимости от того, требуется ли обеспечить защиту произвольных областей памяти от чтения, в данной модели под обращением понимается только запись или любой вид обращения (чтение или запись) соответственно для случаев, когда защита не требуется и требуется.

На рисунке 2 приведена построенная автором данной работы модель ячейки памяти, требующей инициализации. Ячейка может находиться в одном из четырех состояний: qcв - ячейка свободна, явыд - ячейка выделена, но не инициализирована, qин -ячейка выделена и инициализирована, qoш - ошибка. Начальным состоянием является Чсв. При переходе в состояние q()Ш происходит остановка работы модели. Переходы в модели помечены как а - выделение,/ - освобождение, г - чтение данных из ячейки, и и» - запись данных в ячейку.

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

i

Рисунок 2 - Модель ячейки памяти, требующей инициализации

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

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

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

Атаку «отказ в обслуживании» следует считать успешно реализованной, когда тчительно превышает V. Атака «отказ в обслуживании» не может быть реализована,

если для каждого вычислительного узла и<У/И, так как при этом \У < V.

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

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

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

- выявлять вредоносный код и не допускать его исполнение;

- выявлять попытки реализации атак типа «отказ в обслуживании» на диспетчер СРВ и предотвращать их;

- функционировать в гетерогенной аппаратной и программной среде;

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

- функционировать в автоматическом режиме.

Система защиты СРВ от вредоносного ПО состоит из безопасной библиотеки, модуля внедрения динамической верификации и верификатора исходного кода, кроме того, предусмотрен интерфейс разработчика программного обеспечения. На вход сис темы поступает исходный код вычислительного задания на языке Си. В автоматичв' ском режиме производится проверка безопасности вычислительного задания включающая при необходимости преобразование потенциально опасных участков ко да в код, использующий безопасную библиотеку. Алгоритм проверки безопасное^ кода программ приведен на рисунке 3. Алгоритм подразумевает проведение абстракт ной интерпретации описанным во второй главе способом.

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

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

взаимодействие, безопасность которого обеспечивается монитором обращений

Вычислительное задание , \ Общий пул памяти

Безопасный пул_к памяти ^

обращений

13Е1

Службы Грид

Службы ОС

Рисунок 4 - Общая схема взаимодействия с безопасной библиотекой

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

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

- необходимость обнуления выделяемой памяти,

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

- необходимость защиты от вызова произвольных функций ОС,

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

- разрешенные имена и режим доступа к файлам ОС,

- необходимость ведения аудита действий ПО,

- необходимость защиты от атак «отказ в обслуживании» на диспетчер СРВ.

Действующая политика безопасности определяется на основе политик безопас-

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

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

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

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

Для реализации системы защиты СРВ от вредоносного кода выполняемого задания был выбран язык программирования Си. При реализации верификатора использовался генератор лексических анализаторов Flex и генератор синтаксических анализаторов Bison. В качестве препроцессора языка Си принято решение использовать переносимый препроцессор МСРР (также написанный на языке Си и распространяемый в виде исходных кодов). Кроме того, использовался язык С#, на котором производилась реализация интерфейса разработчика вычислительного задания.

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

Было проведено две фазы тестирования: модульное тестирование и системное тестирование. Тестирование позволило контролировать полноту функциональности системы, отсутствие дефектов.

Произведена оценка производительности безопасного кода, полученного после обработки потенциально вредоносного исходного кода разработанной системой защиты. Для оценки производительности использовались как специально разработанные автором тесты, так и существующие свободно распространяемые программы, которые могут быть условно разделены на 3 типа: тип А - интенсивно работающие с указателями, тип Б - интенсивно выделяющие и освобождающие оперативную память, тип В - производящие интенсивные математические вычисления. Производилось измерение производительности безопасных программ, безопасность которых обеспечена разрабо танным средством при использовании различных политик безопасности, а также про грамм, обработанных при помощи специального программного средства CCured которое позволяет повысить уровень безопасности программ. Оценка производитель ности производилась на ЭВМ с процессором Intel Core 2 Duo с тактовой частотой J ГГц, снабженной 2 ГБ ОЗУ. Результаты оценки производительности приведены j таблице 4.

Таблица 4 - Результаты оценки производительности безопасного кода

Наименование измеряемой характеристики Тип программ

А Б В

Падение производительности небезопасной версии (раз) 1.00 1.00 1.00

Падение производительности при выделении памяти в безопасном пуле без дополнительных проверок (раз) 1.07 0.97 1.03

Падение производительности при проверке записи (раз) 1.61 1.57 1.02

Падение производительности при проверке чтения и записи (раз) 2.36 1.72 1.03

Падение производительности при проверке чтения, записи и обнулении памяти (раз) 3.18 1.93 1.05

Падение производительности при защите с использованием только ССигес! (раз) 2.04 1.83 1.21

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

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

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

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

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

В результате применения для расчетов семи дополнительных ЭВМ, средняя за геделю производительность вычислений составила приблизительно 410% от произво-щтельности одной выделенной ЭВМ до развертывания СРВ. Теоретически, подобный юст производительности вычислений мог бы быть достигнут при закупке и введении I эксплуатацию в качестве выделенных ЭВМ как минимум 3 дополнительных ЭВМ, ю параметрам аналогичных используемой на данный момент, кроме того, возникли !ы дополнительные расходы, связанные с обслуживанием и амортизацией нового обо->удования.

В задачу второго проекта входила разработка подсистемы защиты от вредонос-юго кода СРВ, объединяющей ЭВМ кафедры «Криптология и дискретная математи-са» НИЯУ МИФИ. В ходе выполнения курсовых, учебно-исследовательских, дапломных и прочих научных и практических работ на кафедре «Криптологии и дис-сретной математики» НИЯУ МИФИ (далее - Кафедра) часто возникает потребность в фименении высокопроизводительных вычислительных систем, при этом Кафедра

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

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

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

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

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

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

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

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

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

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

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

лений.

7. Разработанное программное обеспечение применено для защиты данных, составляющих коммерческую тайну в АОЗТ «Виланд» и для защиты гетерогенной среды распределенных вычислений, объединяющей ЭВМ кафедры «Криптология и дискретная математика» НИЯУ МИФИ от вредоносного кода вычислительных заданий.

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

Основные положения диссертационной работы опубликованы в 8 печатных трудах, в том числе 2 статьях в журналах, включенных ВАК РФ в перечень ведущих рецензируемых научных журналов и изданий:

1. Станкевичус A.A. Методика защиты клиентского программного обеспечения eer-to-peer сети от модификации и анализа / A.A. Станкевичус // Технологии Microsoft

■ теории и практике программирования: Труды Всероссийской конференции студен-ов, аспирантов и молодых ученых. Центральный регион. Москва, 17-18 февраля 005 г. - М.: МГТУ им. Н.Э.Баумана, 2005. - С. 85.

2. Станкевичус A.A. Разработка комплексного подхода к инженерному анализу сполнимого кода / A.A. Станкевичус // Научная сессия МИФИ-2007. XIV Всероссий-кая научная конференция «Проблемы информационной безопасности в системе выс-1ей школы». Сборник научных трудов. М.: МИФИ, 2007. - С. 129.

3. Павлова Е.А., Станкевичус A.A. Оптимизация процессов анализа исполнимого ода / Е.А. Павлова, A.A. Станкевичус // Технологии Microsoft в теории и практике рограммирования: Труды IV Всероссийской конференции студентов, аспирантов и :олодых учёных. Центральный регион. Москва, 2-3 апреля 2007 г. - М.: Вузовская нига, 2007. - С. 188.

4. Станкевичус A.A. Архитектура системы защиты вычислительного узла Грид т вредоносного кода / A.A. Станкевичус // Технологии Microsoft в теории и практике рограммирования: Труды V Всероссийской конференции студентов, аспирантов и ¡олодых ученых. Центральный регион. Москва, 1-2 апреля 2008 г. - М.: Вузовская нига, 2008. - С. 156-157.

5. Ежов Д.А., Станкевичус A.A. Концептуальная модель системы комплексной ащиты Грид-сети / Д.А. Ежов, A.A. Станкевичус // Современные технологии в задачах правления, автоматики и обработки информации: Труды XVII Международного на-чно-технического семинара. Алушта, сентябрь 2008 г. - СПб.: ГУАП, 2008. - С. 229.

6. Мальчуков A.B., Станкевичус A.A. Анализ методов защиты Грид от вредо-осного кода / A.B. Мальчуков, A.A. Станкевичус И Современные технологии в зада-ах управления, автоматики и обработки информации: Труды XVII Международного аучно-технического семинара. Алушта, сентябрь 2008 г. - СПб.: ГУАП, 2008. С. 233.

7. Станкевичус A.A. О некоторых методах защиты Грид от вредоносного ода / A.A. Станкевичус // Безопасность информационных технологий, №3, 2008. С. 45-48. (Перечень ВАК)

8. Станкевичус A.A. Инструментальное средство проверки безопасности ко-а, предназначенного для исполнения в Грид-сетях / A.A. Станкевичус // Безопас-ость информационных технологий, №1,2009. - С. 58-61. (Перечень ВАК)

Подписано в печать 21 сентября 2009 г. Формат 60x90 V16- Объем 1 печ. л. Тираж 100 экз.

Отпечатано в ООО «Компания Спутник+» 109428, Москва, Рязанский пр-т, д. 8а (495)730-47-74,778-45-60 ПД № 1-00007 от 25.09.2000 г.(ИНН 7726248251)

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

Введение.

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

1.1 Анализ особенностей СРВ с точки зрения защиты от вредоносного кода выполняемого задания.

1.1.1 Виды СРВ.

1.1.2 Особенности вычислительных заданий вычислительных СРВ

1.1.3 Современные средства организации вычислений в СРВ.

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

1.2.1 Виртуализация.

1.2.2 Безопасные языки.

1.2.3 Формальная верификация.

1.2.4 Другие частные случаи.

1.3 Выводы.

2 Построение методики защиты гетерогенной среды распределенных вычислений от вредоносного кода выполняемого задания.

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

2.2 Методика защиты гетерогенной среды распределенных вычислений от вредоносного кода выполняемого задания.

2.3 Модель безопасной ячейки памяти.

2.4 Построение алгоритма выявления потенциально вредоносного программного обеспечения.

2.5 Алгоритмы системы мониторинга.

2.6 Преобразование ПО в форму, для которой возможно доказательство безопасности.

2.7 Выбор абстракций данных.

2.8 Построение защиты диспетчера СРВ от атак типа, «отказ в обслуживании».

2.9 Выводы.

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

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

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

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

3.4 Безопасная библиотека.

3.4.1 Общая архитектура безопасной библиотеки.

3.4.2 Монитор обращений.

3.5 Модуль преобразования исходного кода.

3.6 Верификатор вызовов.

3.7 Верификатор обращений к памяти.

3.8 Политика безопасности.

3.9 Настройки системы.

3.10 Интерфейс разработчика программного обеспечения.

3.11 Выводы.

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

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

4.1.1 Язык реализации верификатора.

4.1.2 Язык реализации пользовательского интерфейса.

4.1.3 Выбор препроцессора Си.

4.1.4 Реализация лексического анализатора.

4.1.5 Реализация синтаксического анализатора.

4.2 Структуры данных.

4.3 Тестирование системы защиты гетерогенной среды распределенных вычислений от вредоносного кода выполняемого задания.

4.3.1 Модульное тестирование.

4.3.2 Системное тестирование.

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

4.4.1 Оценка производительности статического верификатора.

4.4.2 Оценка производительности защищенного кода.

4.5 Выводы.

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

5.1 Использование предложенной системы защиты гетерогенной среды распределенных вычислений от вредоносного кода выполняемого задания для обеспечения безопасности данных, составляющих коммерческую тайну в АОЗТ «Виланд».

5.2 Применение предложенной системы защиты гетерогенной среды распределенных вычислений от вредоносного кода выполняемого задания для обеспечения безопасности СРВ кафедры «Криптология и дискретная математика» МИФИ.

5.3 Выводы.

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

В настоящее время существует множество задач, для решения которых необходимы вычислительные мощности, недоступные в рамках отдельных компьютерных центров. Для решения таких задач были разработаны гетерогенные среды распределенных вычислений. Гетерогенная среда распределенных вычислений (далее СРВ) представляет собой географически распределенную инфраструктуру, в состав которой входит множество разнотипных ресурсов (таких как запоминающие устройства и процессоры, базы данных и сети) доступ к которым обеспечивается пользователю независимо от месторасположения пользователя и этих ресурсов. Для обозначения гетерогенной среды распределенных вычислений часто используется термин «Грид», образованный от английского Grid (решетка, сетка), при этом подчеркивается аналогия с сетью электропитания -подразумевается, что получать доступ к ресурсам гетерогенной среды распределенных вычислений почти так же легко и удобно, необходимо только «вставить штепсель в розетку». Одно из определений термина Грид [1-3] дано Я. Фостером и К. Кессельманом: "Грид - согласованная, открытая и стандартизованная среда, которая обеспечивает гибкое, безопасное, скоординированное разделение ресурсов в рамках виртуальной организации" [1]. "Грид предполагает коллективный разделяемый режим доступа к ресурсам и к связанным с ними услугам в рамках глобально распределенных виртуальных организаций, состоящих из предприятий и отдельных специалистов, совместно использующих общие ресурсы. В каждой виртуальной организации имеется своя собственная политика поведения ее участников, которые должны соблюдать установленные правила. Виртуальная организация может образовываться динамически и иметь ограниченное время существования." [4]

Европейский Центр Ядерных Исследований (ЦЕРН) [5]. одним из первых начал использовать технологию Грид. Грид был необходим для обработки данных, поступающих от крупнейшего в мире ускорителя заряженных частиц — Большого

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

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

В СРВ можно выделить следующие действующие лица:

- пользователь вычислительного задания;

- производитель вычислительного задания;

- владелец ресурса СРВ;

- владелец диспетчера СРВ;

- производитель промежуточного ПО СРВ.

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

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

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

- технологий виртуализации;

- безопасных языков программирования;

- верификации исполнимого кода;

- верификации исходного кода.

Во многих используемых системах применяются именно технологии виртуализации. К сожалению, это, как правило, ведет к существенному падению производительности [7] вычислительных ресурсов СРВ, либо налагает дополнительные требования на среду выполнения и аппаратное обеспечение этих ресурсов. Кроме того, безопасность многих виртуальных машин не имеет строгого доказательства, и в различных виртуальных машинах периодически выявляются уязвимости, способные повлечь исполнение произвольного кода на реальной машине [8; 9].

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

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

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

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

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

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

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

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

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

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

Направления исследований:

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

2. Систематизация способов защиты от вредоносного кода, оценка их эффективности.

3. Развитие теоретических положений по защите СРВ от вредоносного программного обеспечения.

4. Поиск и разработка новых решений в области защиты СРВ от вредоносного кода на основе известных теоретических положений и новых методов защиты.

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

Для достижения поставленной цели в данной работе решаются следующие задачи:

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

11

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

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

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

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

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

На защиту выносятся:

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

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

- алгоритм проверки безопасности исходного кода программ;

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

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

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

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

5.3 Выводы

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

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

Заключение

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

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

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

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

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

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

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

7. Разработанное программное обеспечение применено для защиты данных, составляющих коммерческую тайну в АОЗТ «Виланд» и для защиты гетерогенной среды распределенных вычислений, объединяющей ЭВМ кафедры «Криптология и дискретная математика» НИЯУ МИФИ от вредоносного кода вычислительных заданий.

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

1. Foster I., Kesselman С. The Grid. Blueprint for a new computing infrastructure. -Morgan Kaufman, 1998.

2. Foster I. What is the Grid? A Three Point Checklist Электронный ресурс. -2002. http://www-ip.mcs.anl.gov/~foster/Articles/WhatIsTheGrid.pdf.

3. Foster I., Kesselman C., Tuecke St. The Anatomy of the Grid: Enabling Scalable Virtual Organizations Электронный ресурс. — http://www.globus.org/alliance/ publications/papers/anatomy .pdf.

4. GridClub Электронный ресурс. http://www.gridclub.ru.

5. CERN. Электронный ресурс. http://www.cern.ch.

6. LHC Электронный ресурс. http://lhc.web.cern.ch.

7. MacKinnon Ch. A. Server Virtualization Performance. Love The Benefits, But Beware The Pitfalls Электронный ресурс. // Processor. 2007. - Vol.29, Issue 31.-http://www.processor.com/editorial/article.asp?article=articles/P2931/3 lp31/31рЗ 1 .asp.

8. VMware Fusion 2 Release Notes Электронный ресурс. -http://www.vmware.com/support/fusion2/doc/releasenotesfusion204.html/.

9. Microsoft Security Bulletin MS02-052. Flaw in Microsoft VM JDBC Classes Could Allow Code Execution (Q329077) Электронный ресурс. -http://www.microsoft.com/technet/security/bulletin/MS02-052.mspx.

10. Distributed European Infrastructure for Supercomputing Applications. Электронный ресурс. http://www.deisa.eu/

11. Chien A., Calder В., Elbert S., Bhatia K. Entropia: Architecture and Performance of an Enterprise Desktop Grid System // Journal of Parallel Distributed Computing. -2003.-pp. 597-610.

12. Calder В., Chien A., Wang J., Yang D. The Entropia Virtual Machine for Desktop Grids . Электронный ресурс. http://www-cse.ucsd.edu/ Dienst/ UI/ 2.0/ Print/ ncstrl.ucsdcse/ CS2003-0773, 2003.

13. Entropia PC Grid Computing Электронный ресурс. -http://www.entropia.com/.

14. Parabon's Frontier Grid Platform Электронный ресурс. -http://www.parabon.com/.

15. Голуб В.А., Овчинникова М.В. Проблема корректного определения термина «вредоносная программа» // Вестник Воронежского государственного университета. 2008. - №1. - С. 138-141.

16. Разумов С.А. и др. Комментарий к УК РФ / отв. ред. Лебедев В. М. 3-е изд., доп. и испр.— М.: Юрайт-Издат, 2004. — 223 с.

17. Касперский Е.В. Компьютерные вирусы: что это такое и как с ними бороться. М.: СК Пресс, 1998. - 288 с.

18. Крылов В.В. Информационные компьютерные преступления. М.: Издательская группа ИНФРА.М-НОРМА, 1997. - 285 с.

19. Chakrabarti A. Grid Computing Security. Springer, 2007. - 332 p.

20. Virtual Machine Technology Overview Электронный ресурс. -http://support.citrix.com/article/ CTX107587.

21. Самойленко А. Виртуализация для бизнеса Электронный ресурс. -http://www.vmworld.ru/.

22. Thinstall, Application Virtualization: A Technical Overview of the Thinstall Application Virtualization Solution Электронный ресурс. www.creekpointe.com/ helpdesk/pdf7Tb installApplicVirtualization.pdf.130

23. Altiris. Электронный ресурс. http://www.altiris.com/Support/ Documentation.aspx.

24. AppZero. Электронный ресурс. http://www.appzero.com/content/what-appzero.

25. App-V. Электронный ресурс. http://www.microsoft.com/systemcenter/ appv/default.mspx.

26. Potzl H. Linux-VServer technology Электронный ресурс. 2004. -http://linux-vserver.org/Linux-VServer-Paper.

27. SWsoft. Virtuozzo for windows & Linux server virtualization Электронный ресурс. http://www.virtuozzo.com/en/products/virtuozzo/.

28. OpenVZ Электронный ресурс. http://wiki.openvz.org/.

29. Sun Microsystems. Sun Blueprint: Solaris Containers Technology Architecture Guide Электронный ресурс. 2006. - http://www.sun.eom/blueprints/0506/819-6186.pdf.

30. Jails: Confining the omnipotent root Электронный ресурс. -http://phk.freebsd.dk/pubs/sane2000-jail.pdf.

31. Ермаков A.B., Никитин К.Е. Использование паравиртуального монитора XEN в Грид-сайте ИПМ : препринт ИПМ им. М.В.Келдыша РАН. М., 2008:

32. Stockinger Н. Defining the Grid: A Snapshot on the Current View // The Journal of Supercomputing. Springer, 2006. - V. 42, N. 1. - pp. 3-17.

33. Foster I., Tuecke St. Enterprise Distributed Computing // ACM Queue. ACM, 2005. - Vol.3, No. 6. - pp. 26-29.

34. VMware Products Электронный ресурс. http://www.vmware.com/ products/.

35. Virtualiron Электронный ресурс. http://www.virtualiron.com/.

36. Microsoft Virtual PC Электронный ресурс. http://www.microsoft.com/ windows/products/winfamily/ virtualpc/defaultmspx.

37. VirtualBox Электронный ресурс., -http://www.virtualbox.org/.

38. Bochs. Электронный ресурс. — http://bochs.sourceforge.net/.

39. PearPC Электронный ресурс.-http://pearpc.sourceforge.net/.

40. QEMU Электронный ресурс., -http://www.nongnu.org/qemu/qemu-doc.html.

41. HerculesEmulator Электронный ресурс. http://www.hercules-390.org/.

42. Фергюсон Н., Шнайер Б. Практическая криптография. — М.: Издательский дом Вильяме, 2005. 424с.

43. Bruce К. В. Foundations of Object-Oriented Languages: Types and Semantics. -The MIT Press, 2002. 404 p.

44. Liberty J. Visual C# 2005: A Developer's Notebook. O'Reilly Media, Inc., 2005.-239p.

45. Saraswat V. Java is not type-safe Электронный ресурс. -http://www.cis.upenn.edu/~bcpierce/ courses/629/papers/Saraswat-javabug.html.

46. Necula G. C., McPeak S., Weimer W. CCured: type-safe retrofitting of legacy code // Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages. New York, NY, USA: ACM, 2002. - pp. 128-139.

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

48. Barnes J., High Integrity Software: The SPARK Approach to Safety and Security. Boston, MA: Addison-Wesley Longman Publishing Co., Inc, 2003. - 448 p.

49. Кларк Э.М., Грамберг О., Пелед Д. Верификация моделей программ: Model Checking. / пер. с англ. ; под ред. Р. Смелянского. М.: МЦНМО, 2002. - 416 е.: ил.

50. Cousot P. Abstract interpretation based formal methods and future challenges. Informatics, 10 Years Back 10 Years Ahead // Lecture Notes in Computer Science 2000. - Springer, 2001. - pp. 138-156.

51. Necula G. Proof carrying code // Principles of Programming Languages. ACM, 1997.-pp. 106-119.

52. Necula G., Lee P. The design and implementation of a certifying compiler // Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation. New York: ACM, 1998. - pp. 333 - 344.

53. Клименко B.B. Мобильный код: классификация, технологии, архитектуры и области применения // Информационное противодействие угрозам терроризма— 2005.-№3.-С. 109-111.

54. Sekar R., Ramakrishnan C.R., Ramakrishnan I.V., Smolka S.A. Model-Carrying Code (MCC): A New Paradigm for Mobile-Code Security // Proceedings of the 2001 workshop on New security paradigms. New York: ACM, 2001. - pp. 23-30.

55. Robinson A., Voronkov A. Handbook of Automated Reasoning. The MIT Press, 2001.-996 p.

56. Hamlen K. Security policy enforcement by automated program-rewriting. Doctor of Philosophy. Ithaca, NY, USA: Cornell University, 2006. - 201 p.

57. Hamlen K. W., de Oliveira A. S. Rewriting-Based Access Control Policies // Electronic Notes in Theoretical Computer Science (ENTCS). Amsterdam, The Netherlands: Elsevier Science Publishers В. V., 2007. - V. 171 , I. 4. - pp. 59-72.

58. ГОСТ 19781-83. Вычислительная техника. Терминология: Справочное пособие. / рецензент канд. техн. наук Ю. П. Селиванов. — М.: Издательство стандартов, Выпуск 1. 1989. - 168 с.

59. Dahn Ch., Mancoridis Sp. Using Program Transformation to Secure С Programs Against Buffer Overflows // Proceedings of the 10th Working Conference on Reverse Engineering. Washington, DC, USA: IEEE Computer Society, 2003. - p. 323.

60. Prasad M., Chiueh Т. A Binary Rewriting Defense against Stack based Buffer Overflow Attacks // Usenix Annual Technical Conference, General Track. June 2003.

61. Corbett J. C., Dwyer M. В., Hatcliff J., Laubach S., Pasareanu C. S., Robby, Zheng H. Bandera: Extracting finite-state models from Java source code // Proc. of the 22nd Int. Conf. on Software Eng., June 2000. Programs. John Wiley & Sons, 1999.

62. Naumovich G., Avrunin G.S., Clarke L.A. Data flow analysis for checking properties of concurrent java programs // Proceedings of the 21st international conference on Software engineering. New York, NY, USA: ACM, 1999. - pp. 399 - 410.

63. Bull J. M., Smith L. A., Pottage L., Freeman R. Benchmarking Java against С and Fortran for Scientific Applications // Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande. New York, NY, USA: ACM, 2001. - pp. 97 - 105.

64. Chaki S., Clarke E., Grace A. Modular Verification of Software Components in С // IEEE Transactions on Software Engineering. Piscataway, NJ, USA: IEEE Press, 2004. - V. 30 , I. 6. - pp. 388 - 402.

65. Valgrind Электронный ресурс. http://valgrind.org/.

66. Poly Space Embedded Software Verification Электронный ресурс. -http://www.mathworks.com/ products/polyspace/index.html.

67. Safer C: The toolset Электронный ресурс. http://www.oakcomp.co.uk/ SCT.html.

68. The ASTREE Static Analyzer Электронный ресурс. -http://www.astree.ens.fr/.

69. Litzkow M.J., Livny M., Mutka M.W. Condor A hunter of idle workstations // Proceedings of the Eighth International Conference on Distributed Computing Systems (ICDCS). - Washington, DC: IEEE Computer Society, 1988. - pp. 104-111.

70. Miller B.P., Christodorescu M., Iverson R., Kosar Т., Mirgorodskii A., Popovici F. Playing inside the black box: using dynamic instrumentation to create security holes // Parallel Process. Lett. 11 (2,3). 2001. - pp. 267-280.

71. Bharadwaj R. SOL: A verifiable synchronous language for reactive systems // Electronic Notes in Theoretical Computer Science. 2002. - V. 65,1. 5. - pp. 140-154.

72. Непомнящий В. А. и др. На пути к верификации С-программ. Часть 1. Язык C-Light: препр. РАН. Сиб. Отд-ние. ИСИ; N 87. Новосибирск, 2001.

73. Непомнящий В. А. и др. На пути к верификации С-программ. Часть 2. Язык C-Light-Kernel и его аксиоматическая семантика : препр. РАН. Сиб. Отд-ние. ИСИ; N 87. Новосибирск, 2001.

74. Cowan С., Wagle P., Ри С., Beattie S., Walpole J. Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade // DARPA Information Survivability Conference and Exposition. January 2000. - pp. 119-129.

75. Xu J., Kalbarczyk Zb., Patel S., Iyer R. K. Architecture Support for Defending Against Buffer Overflow Attacks // Proc. 2nd Workshop Evaluating and Architecting System Dependability (EASY 02). 2002.

76. Vendicator. Stack Shield technical info file v0.7. Электронный ресурс. -2001. -http://www.angelfire.com/ sk/stackshield/.

77. Piromsopa Kr., Enbody R. J. Secure Bit21: Transparent, Hardware Buffer-Overflow Protection // IEEE Transactions on Dependable and Secure Computing. Los Alamitos, CA, USA: IEEE Computer Society Press, 2006. - V. 3 , I. 4. - pp. 365-376.

78. Grevstad E. CPU-Based Security: The NX Bit Электронный ресурс. 2004. - http://hardware.earthweb.com/ chips/article.php/3358421.

79. Berger E. D., Zorn B. G. DieHard: Probabilistic Memory Safety for Unsafe Languages // ACM SIGPLAN Notices. New York, NY, USA: ACM, 2006. - V. 41 , 1.6.-pp. 158-168.

80. Mirkovic J., Reiher P., A taxonomy of DDoS attack and DDoS defense mechanisms // ACM SIGCOMM Computer Communication Review. ACM, 2004. -V.34 N.2. — pp. 39-53.

81. Song Sh., Chen M. C. Y.,, Zhou R., Lou X. GridSec: Trusted Grid Computing with Security Binding and Self-defense Against Network Worms and DDoS Attacks // Computational Science ICCS 2005.-Springer Berlin/Heidelberg, 2005. -pp. 187-195.

82. Mirkovic J., Reiher P. D-WARD: A Source-End Defense Against Flooding Denial-of-Service Attacks // IEEE Transactions on Dependable and Secure Computing. Los Alamitos, CA, USA: IEEE Computer Society Press, 2005. - V. 2 , I. 3. - pp. 216 - 232.

83. Mirkovic J., Prier Gr., Reiher P. Attacking DDoS at the Source // Proceedings of the 10th IEEE International Conference on Network Protocols. Washington, DC, USA: IEEE Computer Society, 2002. - pp. 312 - 321.

84. Wu J., Cheng D., Zhao W. Detecting Grid-Abuse Attacks by Source-based Monitoring // Proceedings of the ISCA 17th International Conference on Parallel and Distributed Computing Systems. 2004. - pp. 565-571.

85. Mirkovic J., Prier Gr., Reiher P. Source-End DDoS Defense // Proceedings of the Second IEEE International Symposium on Network Computing and Applications. -Washington, DC, USA: IEEE Computer Society, 2003. p. 171.

86. Chen Y., Hwang K., Kwok Y.-K. Collaborative Defense against Periodic Shrew DDoS Attacks in Frequency Domain // ACM Transactions on Information and SystemSecurity (TISSEC). ACM, 2005.

87. Chen Y., Hwang K. Collaborative Change Detection of DDoS Attacks on Community and ISP Networks // Proceedings of the International Symposium on Collaborative Technologies and Systems. Washington, DC, USA: IEEE Computer Society, 2006. - pp. 401 - 410.

88. Федеральный закон Российской Федерации от 10 января 2002 г. N 1-ФЗ ОБ ЭЛЕКТРОННОЙ ЦИФРОВОЙ ПОДПИСИ.

89. National Research Council. Realizing the Information Future: The Internet and Beyond. National Academy Press Электронный ресурс. 1994. - http://www.nap.edu/ readingroom/books/rtif/.

90. Руководящий документ. КОНЦЕПЦИЯ ЗАЩИТЫ СРЕДСТВ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И АВТОМАТИЗИРОВАННЫХ СИСТЕМ ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА К ИНФОРМАЦИИ

91. Jones N.D. Abstract Interpretation: a- Semantics-Based Tool for Program Analysis // Handbook of logic in computer science. Oxford, UK: Oxford University Press, 1995. - vol. 4 : semantic modeling. — pp. 527 - 636.

92. Naur P. Checking of Operand Types in ALGOL Compilers // BIT Numerical Mathematics. Springer Netherlands, 1965. - V. 5, N. 3. - pp. 151-163.

93. Reynolds J. Automatic Computation of Data Set Definitions // Information Processing 68. North-Holland: Elsevier Science Publisher, 1969. - pp. 456-461.

94. Sintzoff M. Calculating Properties of Programs by Valuations t on Specific Models // Proceedings ACM Conference on Proving Assertions about Programs. ACM, 1972.-pp. 203-207.

95. Hecht M. S. Flow Analysis of Computer Programs. Elsevier Science Ltd,1977.

96. Aho A. V., Sethi R., Ullman J.D. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986. - 1009 p.

97. Kam J.B., Ullman J.D. Monotone Data Flow Analysis Frameworks // Acta informatica. Springer Berlin / Heidelberg, 1977. - V. 7, N. 3. - pp. 305-317.

98. Cousot P., Cousot R. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints // Conf. Ree. 4th ACM Symp. on Principles of Prog. Lang., POPL '77. ACM, 1977. - pp. 238-252.

99. Нариньяни A.C. Недоопределенность в- системах представления и обработки знаний // Изв. АН СССР. Техн. кибернетика. 1986. - №5. - С. 3-28.

100. Нариньяни A.C. и др. Программирование в ограничениях и недоопределенные модели // Информационные технологии. 1998. - № 7. - С. 13— 22.

101. Корнеенко В.П. Методы оптимизации : учебник. М.: Высш. шк., 2007. — 664 е.: ил.

102. Marriott К., Stuckey P. J. Programming with constraints: an introduction. -Cambridge, Massachussets: The MIT Press, 1998. 483 p.

103. Cousot P., Cousot R. On Abstraction in Software Verification // Computer Aided Verification. Springer Berlin / Heidelberg, 2002. - pp. 1-21.

104. Miné A. Weakly Relational Numerical Abstract Domains. PhD thesis, École Polytechnique, Palaiseau, France (2004) Электронный ресурс. 2004. -http://www.di.ens.fr/mine/these/.

105. Cousot P., Cousot R Static determination of dynamic properties of Programs // ISOP'76. Dunod, Paris, France. Электронный ресурс. http://www.di.ens.fr/~cousot/ COUSOTpapers/ISOP76.shtml, 1976.-pp. 106-130.

106. Левин В. И. Интервальная математика и изучение неопределенных систем // Интеллектуальные системы. 2005. - №5.

107. Mine A. Symbolic Methods to Enhance the Precision of Numerical Abstract Domains // 7th Int. Conf. on Verification, Model Checking and Abstract Interpretation VMCAI '06, LNCS 3855. Springer, 2006. - pp. 348-363.

108. Cousot P., Halbwachs N. Automatic discovery of linear restraints among variables of a program // ACM POPL'78. New York, USA: ACM, 1978. - pp. 84-96.

109. Chen L., Mine A., Cousot P. A Sound Floating-Point Polyhedra Abstract Domain // Programming Languages and Systems. Springer Berlin / Heidelberg, 2008. -pp. 3-18.

110. Claris'o R., Cortadella J. The Octahedron Abstract Domain // SAS'04. -Springer, 2004. Vol. 3148 of LNCS. - pp. 312-327.

111. Mine A. The Octagon Abstract Domain // Higher-Order and Symbolic Computation. Hingham, MA, USA: Kluwer Academic Publishers, 2006. - V. 19,1. 1. -pp. 31-100.

112. Feret J. The Arithmetic-Geometric Progression Abstract Domain // Proceedings of VMCAI'05. Springer, 2005. - Vol. 3385 of LNCS. - pp. 2-18.

113. IDEF0 Overview Электронный ресурс. -http://www.idef.com/IDEF0.html.

114. INTERNATIONAL STANDARD ISO/IEC 9899:1999 TECHNICAL CORRIGENDUM 3 Электронный ресурс. Published 2007-11-15. -http://www.iso.org/iso/isocatalogue/cataloguetc/cataloguedetail.htm?csnumber=50510.

115. Rationale for International Standard Programming Languages— С Revision 5.10. Электронный ресурс. - 2003. - http://www.open-std.org/JTCl/ SC22/WG14/ www/docs/ C99RationaleV5.10.pdf.

116. Standard ECMA-334 C# Language Specification 4th edition (June 2006) Электронный ресурс. 2006. - http://www.ecma-international.org/publications/ standards/Ecma-334.htm.

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

118. Мсрр a portable С preprocessor with Validation Suite Электронный ресурс. - http://mcpp.sourceforge.net/.

119. Flex: The Fast Lexical Analyzer Электронный ресурс. -http://flex.sourceforge.net/.

120. Bison GNU parser generator. Электронный ресурс. -http://www.gnu.org/software/bison/.

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

122. MSDN: Windows.Forms reference documentation Электронный ресурс. -http://msdn.microsoft.com/ en-us/library/dd30h2yb.aspx.

123. Mono project Электронный ресурс. http://www.mono-project.com/.

124. Gosling J., Joy В., Guy S., Bracha G. The Java Language Specification. Second Edition Электронный ресурс. 2000. - http://java.sun.com/docs/books/jls/ secondedition/html/j.title.doc.html.

125. Котляров В.П. Основы тестирования программного обеспечения. М.: Интернет-университет информационных технологий. — ИНТУИТ.ру, 2006. - 288 с.