Научная статья на тему 'Содержание моделей и методов проактивной защиты программного обеспечения'

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

CC BY-NC-ND
262
59
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОАКТИВНАЯ ЗАЩИТА / PROACTIVE PROTECTION / ЗАЩИТА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ / SOFTWARE PROTECTION / ЖИЗНЕННЫЙ ЦИКЛ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ / SOFTWARE LIFE-CYCLE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Казарин Олег Викторович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Казарин Олег Викторович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Models and methods for proactive software protection

In this paper, we consider models and methods for proactive information system software defense, as the defense which is based on mechanisms taking into account its functional properties, architectural and technological features of the external system environment at all stages before program usage as intended. In particular, at the stage preceding the stages of program testing.

Текст научной работы на тему «Содержание моделей и методов проактивной защиты программного обеспечения»

О.В. Казарин

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

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

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

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

Здесь уместно процитировать слова Э.В. Дейкстра, одного из основоположников современной методологии программирования, сказанные им еще в 1972 г.1: «В настоящее время общепринятой техникой является составление программы, а затем ее тестирование. Однако тестирование программ может быть очень эффективным способом демонстрации наличия ошибок, но оно безнадежно неадекватно для доказательства их отсутствия... Не следует сначала

© Казарин О.В., 2012

О.В. Казарин

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

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

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

Известные методы (классы методов) проактивной защиты ПО с привязкой к его жизненному циклу приведены на рис. 1. К ним относятся классы:

I. методов и инструментальных методик диагностического контроля инструментальных средств разработки ПО (трансляторов, компиляторов, отладчиков, CASE-средств)2, 3, 4;

II. моделей и методов верификации программ, верификации моделей программ (см., например, сноску 5, 6);

III. методов контроля проактивной безопасности ПО на этапах его автономных испытаний, комплексных испытаний, рекламационных доработок 7, 8;

IV. средств проактивной защиты на этапе подготовки ПО к функционированию: средств обновления ОС, антивирусных баз данных, баз данных сигнатур атак IDS/IPS-систем, систем активного аудита и т. п.;

V. моделей и методов проактивной защиты посредством методов Data Mining (см., например, сноску 9) .

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

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

Рис. 1. Классы методов проактивной защиты ПО

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

О.В. Казарин

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

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

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

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

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

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

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

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

Можно представить следующий сценарий использования этой модели для разработки безопасного программного обеспечения. Имеется некоторый процесс, для управления которым необходимо реализовать функциональность f. При этом последствия неправильной реализации таковы, что представляется целесообразным пойти на дополнительные затраты, связанные с созданием сети из n процессоров и распределенного алгоритма для реализации f. В системе имеется еще один абсолютно надежный участник, который имеет доступ к секретному значению x и имеет возможность выделить каждому процессору свою «долю» x. Название «Протоколы конфиденциальных вычислений» отражает тот факт, что требование конфиденциальности является основным, т. е. значение x не должно попасть в руки злоумышленника.

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

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

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

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

О.В. Казарин

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

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

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

К числу методов проактивной защиты следует также отнести методы разработки алгоритмического обеспечения создаваемого ППО с использованием защищенных модулей16, 17, 18. Необходимость разработки безопасного ПО с использованием защищенных модулей (ЗМ) возникает тогда, когда требуется обеспечить аутентификацию и целостность сложных программных комплексов, создаваемых большим коллективом разработчиков, среди которых могут быть злоумышленники. Такой модуль представляет собой защищенное от противника устройство, в котором в случае несанкционированного доступа к нему осуществляется физическое разрушение основных компонентов модуля: регистров процессора и ячеек памяти.

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

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

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

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

- в процессе разработки и эксплуатации злоумышленник может вносить в программы ПССИВ;

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

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

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

Заключение

Разработка современных моделей и методов проактивной защиты ПО включает:

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

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

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

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

О.В. Казарин

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

Примечания

1 См.: Дейкстра Э.В. Смиренный программист // Лекции лауреатов премии Тью-

ринга за первые 20 лет. 1966-1985. М.: Мир, 1993.

2 См.: Ефимов А.И. Проблема технологической безопасности программного обес-

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

3 См.: Ефимов А.И., Пальчун Б.П., Ухлинов Л.М. Методика построения тестов про-

верки технологической безопасности инструментальных средств автоматизации программирования на основе их функциональных диаграмм // Вопросы защиты информации. 1995. № 3 (30). С. 52-54.

4 См.: Руководящий документ ФСТЭК России. Защита от несанкционирован-

ного доступа к информации. Ч. 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля недекларированных возможностей. [Электронный ресурс] URL: http://www.fstec.ru/_docs/ doc_3_3_010.htm (дата обращения: 06.02.2012).

5 См.: Пучков Ф.М, Шапченко К.А., Андреев О.О. К созданию автоматизирован-

ных средств верификации программного кода // Математика и безопасность информационных технологий. Материалы конференции в МГУ 28-29 окт. 2004 г. М.: МЦНМО, 2004. С. 347-359.

6 См.: Кларк Э.М., Грамберг О., Пелед Д. Верификация моделей программ: Model

Checking. М.: МЦНМО, 2002.

7 См.: Ефимов А.И. Указ. соч.

8 См.: Ефимов А.И., Ухлинов Л.М. Методика расчета вероятности наличия дефек-

тов диверсионного типа на этапе испытаний программного обеспечения вычислительных задач // Вопросы защиты информации. 1995. № 3 (30). С. 86-88.

9 См.: Комашинский Д.В., Котенко И.В. Исследование проактивных механиз-

мов обнаружения вредоносного программного обеспечения на базе методов Data Mining // Математика и безопасность информационных технологий. Материалы конференции в МГУ 30-31 окт. 2008 г. Т. 2. М.: МЦНМО, 2009. С. 226-231.

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

10 См.: Казарин О.В. Методология защиты программного обеспечения. М.:

МЦНМО, 2009. 464 с.

11 Там же.

12 См.: Казарин О.В., Скиба Л.М. Парадигма проактивной безопасности компью-

терных систем // Защита информации. INSIDE. 2009. № 5. С. 2-9; № 6. С. 2-7.

13 См.: Там же.

14 См.: Грушо А.А., Грушо Н.А., Тимонина Е.Е. Методы защиты информации от атак

с помощью скрытых каналов и враждебных программно-аппаратных агентов в распределенных системах // Вестник РГГУ. 2009. № 10/09. С. 33-45. Сер. «Информатика. Защита информации. Математика».

15 См.: Тарасов А.А. Функциональная отказоустойчивость систем обработки

информации. М.: МИНИТ ФСБ России, 2009. 184 с.

16 См.: Варновский Н.П. Стойкость электронной подписи в модели с защищенным

модулем // Дискретная математика. 2008. Т. 20. Выпуск 3. С. 147-159.

17 См.: Казарин О.В., Ухлинов Л.М. Интеллектуальные средства обеспечения

безопасности данных в информационно-вычислительных сетях // Вестник РОИВТ. 1994. № 3. С. 35-46.

18 См.: Varnovsky N. Provable security of digital signature in the tamper-proof model.

[Электронный ресурс] URL: http://www.eprint.iacr.org/ 2008/ (дата обращения: 06.02.2012).

i Надоели баннеры? Вы всегда можете отключить рекламу.