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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

233

О. В. Казарин

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

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

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

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

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

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

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

234

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

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

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

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

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

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

235

О. В. Казарин

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

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

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

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

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

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

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

236

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

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

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

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

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

Заключение

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

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

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

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

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

237

О. В. Казарин

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

Материал взят из: Научный журнал Серия «Информатика. Защита информации. Математика» № 14 (94)