Н.П. Варновский*, В.А. Захаров*, Р.И. Подловченко*, В.С. Щербина*,
Н.Н. Кузюрин**, А.В. Шокуров**
Россия, г. Москва, МГУ им. М.В. Ломоносова*, ИСП РАН**
О ПРИМЕНЕНИИ МЕТОДОВ ДЕОБФУСКАЦИИ ПРОГРАММ ДЛЯ ОБНАРУЖЕНИЯ СЛОЖНЫХ КОМПЬЮТЕРНЫХ ВИРУСОВ
В статье представлено описание одного подхода к разработке алгоритмов обнаружения сложных (полиморфных и метаморфных) вирусов, использующих об-фускирующие преобразования для противодействия антивирусным программам. Для обнаружения таких вирусов предлагается использовать алгоритмы проверки эквивалентности программ. В статье приводится обзор наиболее значимых результатов, полученных при исследовании проблемы эквивалентности программ на основе теории алгебраических моделей программ. Полученные оценки сложности алгоритмов проверки эквивалентности программ позволяют провести качественный анализ устойчивости (resilience) тех или иных обфускирующих преобразований. На основании этого анализа можно судить о том, насколько трудоемкой является задача обнаружения вирусов, использующих для маскировки эти преобразования.
Одним из важных направлений деятельности в области обеспечения информационной безопасности является разработка антивирусных программ. Согласно сложившемуся определению, компьютерным вирусом называется разновидность программ, способных воспроизводить (реплицировать) и распространять свои собственные копии. Обычно термином «компьютерный вирус» обозначают все вредоносные программы, которые в зависимости от способов распространения и предназначения подразделяются на собственно вирусы, файловых и сетевых «червей», «троянских коней», «шпионов» и др. Первые антивирусные программы появились почти сразу после появления вирусов в 1982 г. [1]. Как и у создателей вирусов, в этой сфере также сформировались оригинальные приёмы для поиска и борьбы с вирусами, позволяющие обнаруживать десятки тысяч вирусов. К числу наиболее распространенных приемов обнаружения вирусов относятся распознавание вирусов по сигнатуре (подписи), обнаружение аномалий в поведении программ, обнаружение на основе эмуляции кода и др.
К сожалению, конкуренция между антивирусными компаниями привела к тому, что развитие антивирусного программирования идёт в сторону увеличения количества обнаруживаемых вирусов, а не в сторону улучшения их детектирования. В частности, все перечисленные выше методы обнаружения вирусов обладают существенными недостатками. Например, метод обнаружения вирусов по подписи может быть эффективен лишь в том случае, когда каждый очередной потомок почти не отличается от исходной программы-вируса. Поэтому для обнаружения таких вирусов достаточно получить копию хотя бы одной его модификации, выделить характерный фрагмент кода, который может служить признаком (подписью) вируса, и затем проводить поиск подписи вируса, используя быстрые алгоритмы поиска по образцу в тексте (pattern matching). Однако более «совершенные» полиморфные и метаморфные вирусы наделены определенной способностью к маскировке. Полиморфизм заключается в формировании кода вируса «на лету» — уже во время его исполнения; при этом сама процедура, формирующая код также не является постоянной и видоизменяется при каждом новом заражении. Первые полиморфные вирусы появились в 1990 г. [1]. Такие вирусы при репликации применяют обфускирующие преобразования [2], благодаря которым каждый вновь образовавшийся потомок вируса может существенно отличаться по своей структу-
ре от родительской программы. Так, например, полиморфные вирусы zombie-6.b, f0sf0r0, Hare применяют простейшие криптографические алгоритмы для того, чтобы скрыть от обнаружения большую часть своего кода. Открытой остается только подпись вируса - небольшой фрагмент кода, реализующий алгоритм дешифрования. При репликации вируса его подпись подвергается простейшим обфускирую-щим преобразованиям (изменение адресов, перестановка команд, вставка бесполезных команд). Метаморфные вирусы Sobig, Beagle пытаются избежать обнаружения за счет применения в процессе репликации более изощренных обфуски-рующих преобразований, включая изменение графа потока управления, эквивалентные замены команд, перестановки команд, изменение назначения адресов и др. [3]. Эксперименты показывают [4,5], что даже в тех случаях, когда традиционные средства обнаружения вирусов снабжаются специальными эвристиками, они оказываются бессильными против изощренных метаморфных вирусов. Таким образом, создание эффективных средств обнаружения сложных вирусов неизбежно требует изучения методов обфускации программ и разработки специальных деоб-фускирующих алгоритмов.
При разработке перспективных методов обнаружения полиморфных и мета-морфных вирусов целесообразно воспользоваться следующим фактом: как бы ни изменялась структура программы-вируса в результате обфускации, ее функциональность остается неизменной. Именно функциональные характеристики вируса являются его подлинной «подписью», неизменно сохраняющейся при репликации. Таким образом, задача обнаружения вируса может быть представлена как задача поиска фрагмента кода P', функционально эквивалентного заданному (эталонному) фрагменту P. Этот подход к разработке антивирусных программ был впервые осуществлен в работе [6]. Было показано, что существуют быстрые алгоритмы поиска функционально - эквивалентных фрагментов кода, способные противостоять некоторым обфускирующим преобразованиям (изменение адресов, вставка несущественных команд, изменение графа потока управления). В то же время было отмечено, что для противодействия более сложной обфускации требуется разработка эффективных алгоритмов проверки эквивалентности программ.
Как известно, задача проверки эквивалентности программ в общем случае является алгоритмически неразрешимой. Однако, если принять во внимание некоторые характерные особенности обфускации вирусов, то эту задачу можно переформулировать в такой постановке, которая допускает возможность построения алгоритмов проверки эквивалентности программ. Прежде всего, необходимо иметь в виду, что компьютерный вирус должен иметь весьма компактный программный код. Именно из-за ограниченности размера кода вирус в процессе репликации не может применять сложные алгоритмы обфускации, предполагающие использование разнообразных алгебраических тождеств [7], а также специальных комбинаторных [8] или криптографических [9,10] методов. Более простые приемы обфус-кации программ используют лишь узкий класс алгебраических свойств операционной семантики программ. Эти свойства можно моделировать в рамках теории алгебраических моделей программ, развитой в работах [11,12]. В таком случае в зависимости от используемых алгебраических свойств семантики программ можно выбрать подходящую алгебраическую модель программ, полностью описывающую эти свойства, и рассматривать проблему эквивалентности программ в такой модели. Проведенные математические исследования [13-16] свидетельствуют о том, что во многих алгебраических моделях программ проблема эквивалентности разрешима и разрешающие алгоритмы при этом оказываются весьма эффективными. Аналогичный подход применялся в работах [17,18], в которых для обфускации и деобфускации программ используется аппарат абстрактных интерпретаций.
В настоящей заметке описаны основные принципы устройства алгебраических моделей программ, выделены те классы моделей, которые могут быть связаны с простейшими обфускирующими преобразованиями, применяемыми при репликации полиморфных и метаморфных вирусов, и представлены оценки сложности распознавания эквивалентности программ в таких моделях. На основании проведенного анализа проведена классификация простейших обфускирующих преобразований в зависимости от их устойчивости по отношению к таким алгоритмам деобфускации, которые основываются на проверке эквивалентности программ.
Алгебраические модели программ
Поскольку задача проверки функциональной эквивалентности программ относится к числу алгоритмически неразрешимых проблем, для получения эффективно проверяемых достаточных условий функциональной эквивалентности программ обычно применяют следующий подход, подробно разработанный в работах [11,12]. Для заданного множества программ П, наделенных операционной семантикой ст, определяется абстрактная семантика ст'; множество программ П с введенной абстрактной семантикой ст' называется моделью программ. Если для любой пары программ л1 и л2 из множества П выполняется соотношение л1 ~ст 'Л2 ^ л1 ~ст л2, то говорят, что модель программ (П,ст') является аппроксимацией исходного множества программ (П,ст). Выбор подходящей аппроксимации определяется двумя факторами: с одной стороны, аппроксимация (П,ст') должна как можно более точно отражать особенности исходной семантики ст, а с другой стороны, проверка эквивалентности л1~стл2 должна осуществляться эффективно. В [12] был предложен класс алгебраических моделей программ, которые можно использовать в качестве подходящих аппроксимаций для проверки функциональной эквивалентности программ. Опишем коротко устройство этих моделей.
Вводятся два алфавита А={аь...,аг}, Р={рь..., рк}; элементы алфавита А называются операторами, а элементы алфавита Р - предикатами. Схемой программы называется конечная помеченная система переходов л = ( Уп, Ур, вход, выход, В, Т), в которой имеется множество преобразователей Уп, множество распознавателей Ур, две выделенные вершины вход и выход, а также функции привязки В и переходов Т. Функция привязки В ассоциирует с каждым преобразователем оператор из А, а с каждым распознавателем - предикат из Р. Функция переходов Т: {вход}иУп и (Урх{0,1})^Уп и Ур и {выход} для входа схемы и каждого преобразователя у определяет единственного последователя Т(у), а для каждого распознавателя и - одного из двух последователей Т(и,5) в зависимости от значения 5 предиката В(и), приписанного распознавателю.
Семантика алгебраической модели программ определяется полугруппой 8 с множеством образующих А, а также множеством функций разметки Ь={ ц | ц : Р х 8 ^ {0,1}}. Полугруппа 8 играет роль множества состояний данных, а также задает интерпретацию операторов из А. Функции разметки ц задают интерпретацию предикатов - значение истинности на каждом состоянии данных. Множество всех функций разметки на полугруппе 8 будем обозначать Ь8.
Вычислением л(ц) схемы л на функции разметки ц называется последовательность пар (у^оЦу^О,..., (у1,81),(у1+1,81+1),., в которой у0=вход, Б0=е - нулевой элемент полугруппы, и для каждого 1 > 1 выполняется одно из двух условий:
- если у1 е Уп , то у1+1 = Т(у1), 81+1= б1 В(у1);
- если у е Ур , то У1+1 = Т(У1, ц(^)), 81+1= ^ .
Если уп=выход для некоторого п>1, то вычисление л(ц) считается успешно завершенным, а элемент ^ полугруппы 8 объявляется его результатом и обозначается [л(ц)]. В противном случае результат вычисления считается неопределенным. Две
схемы л1 и л2 называются эквивалентными в модели (S,L) (обозначается л1 ~(S,L) л2), если для любой функции разметки |aeL выполняется [л1 (ц)]=[л2(ц)]. В том случае, когда в качестве параметра L выбирается множество всех возможных функций разметки, определенных на полугруппе S, будет использоваться обозначение л1 ~S я2. Проблема эквивалентности «л1 ~(SL) л2?» в алгебраической модели программ (S,L) состоит в том, чтобы для произвольной пары схем программ л1 и л2 проверить выполнимость отношения л1 ~(SL) л2. Параметры S и L алгебраической модели задаются конструктивно. Полугруппа S описывается конечной системой определяющих соотношений. Для спецификации функций разметки можно использовать, например, формулы пропозициональной динамической логики PDL: формула ф определяет множество функций разметки L^)={|a | ф выполнима на динамической структуре (S,|a)}.
Таким образом, если в процессе репликации полиморфный вирус применяет обфускирующие преобразования, в которых учитываются только некоторые алгебраические особенности семантики ст, то для обнаружения такого вируса по его обфускированной подписи достаточно:
1. Выбрать полугруппу S операторов, в которой выполняются алгебраические соотношения (тождества), используемые при обфускации вируса.
2. Разработать алгоритм проверки эквивалентности программ «л1 ~(SL) я2?» в полугрупповой модели (S,L).
3. Располагая хотя бы одним примером подписи вируса яь проводить при помощи построенного алгоритма поиск программ, содержащих фрагменты я2, эквивалентные подписи вируса.
В том случае, если алгоритм проверки эквивалентности программ в выбранной модели (S,L) является эффективным, то такой подход позволяет проводить обнаружение полиморфных вирусов за приемлемое время.
Проблема эквивалентности в простых алгебраических моделях программ
Далее мы рассмотрим ряд алгебраических моделей, которые могут быть использованы для предложенного метода обнаружения вирусов. В каждой из этих моделей отражено некоторое простое алгебраическое свойство операционной семантики программ. Мы также оценим сложность решения проблемы эквивалентности программ в этих моделях. Полученные оценки сложности можно рассматривать как некоторую качественную характеристику пределов устойчивости некоторых типов обфускирующих преобразований.
1. Свободная (максимальная) модель M0=(S0,LS0). В этой абстрактной модели программ S0 - свободная полугруппа. Эквивалентные преобразования программ в рамках свободной модели способны изменять структуру потока управления программы, но обязательно сохраняют относительный порядок выполнения операторов. Впервые свободная модель программ была введена в работе [19]; в этой работе была установлена разрешимость проблемы эквивалентности программ в модели M0. В работе [20] было установлено, что проблема эквивалентности в модели M0 сводится к проблеме эквивалентности конечных автоматов; наиболее эффективный алгоритм для решения этой проблемы был предложен в работе [21].
Теорема 1. Проблема эквивалентности «л1 ~S я2?» в свободной модели М0 разрешима за время O(n log n), где n - суммарный размер схем программ л1 и я2. Сложность проверки эквивалентности программ не изменяется и в том случае, если в свободной полугруппе S0 может использоваться несколько единичных элементов, соответствующих несущественным операторам (наподобие команды nop (no_operation), используемой в системе машинных команд процессора Intel x86). С нашей точки зрения, успешное применение нового метода обнаружения поли-
морфных вирусов, предложенного в работах [5,6], объясняется именно высокой эффективностью алгоритмов проверки эквивалентности в свободной модели M0.
Интерес представляют также модели программ, в которых множество функций разметки L отражает особенности влияния операторов программы на логические условия (предикаты). Так, значения некоторых предикатов могут оставаться неизменными после выполнения отдельных операторов (например, оператор x++ не способен непосредственно повлиять на логическое условие y<0). Чтобы убедиться, что оператор а не влияет на предикат р, достаточно проверить, что множества переменных output(a) и input(p) не пересекаются; такая проверка требует лишь проведения простого синтаксического анализа. Степень влияния каждого оператора а из множества A можно определить списком Z(a) тех предикатов, значения которых не изменяются при выполнении а, и множество функций разметки LZ ограничивается только такими функциями разметки ц, для которых выполняется соотношение |a(p,s)=|a (p,sa) для каждого оператора а и предиката р из списка Z(a). Теорема 1 сохраняет справедливость и для модели MZ=(S0,LZ) (см. [19]). Алгебраические модели позволяют также учитывать эффект монотонности логических условий относительно операторов. Так, например, если логическое условие x>0 имеет значение true, то это значение остается неизменным после выполнения оператора x++ . В алгебраических моделях этот эффект может быть учтен, если ограничиться рассмотрением монотонных функций разметки. Проблема эквивалентности программ в модели Mm=(S0,Lm) со свободной полугруппой операторов S0 и монотонными функциями разметки Lm была исследована в работе [22], в которой была установлена такая же оценка сложности, как и в теореме 1.
Эффекты влияния операторов на предикаты, а также монотонности предикатов можно эффективно применять для создания т.н. «непроницаемых» предикатов [2]. При помощи таких предикатов в код вируса можно легко встраивать неисполняемые фрагменты, которые позволяют более тесно переплетать код вируса с кодом программы, переносящей вирус, или имитировать выполнение вирусом служебных функций, присущих этой программе. Эти возможности, усиливающие скрытность и устойчивость вирусов, должны учитываться при разработке антивирусных программ.
2. Модель M1=(S1,L) с коммутативными операторами. В этой модели S1 - свободная частично коммутативная модель, в которой для некоторых пар операторов выполняется закон коммутативности ab=ba. Примером коммутативных операторов могут служить операторы x++ и z++=&y : очевидно, результат вычисления программы не зависит от относительного порядка выполнения этих операторов. Для проверки коммутативности операторов ai и a2 достаточно убедиться в том, что множество входных переменных input(aO каждого из операторов aj , где i=1,2, не пересекается с множеством выходных output(a3_j) переменных другого оператора a3_j. Эту проверку можно легко осуществить «на лету» по ходу проведения обфускирующих преобразований. Перестановки операторов способны значительно изменить внешний облик программы, и поэтому их можно применять для обфускации вирусов. Как было отмечено в [6], современные антивирусные программы не способны надежно обнаруживать полиморфные вирусы, осуществляющие перестановку операторов сигнатуры в процессе репликации. Вместе с тем, в работах [13,14] был установлен следующий результат:
Теорема 2. Проблема эквивалентности «TCj ~s я2?» в модели Mj с коммутативными (частично коммутативными) операторами разрешима за время O(n2log n) (соответственно, за время O(n3log n)), где n - суммарный размер схем программ и я2.
Если, однако, учитывать эффект монотонности некоторых логических условий, то сложность проблемы эквивалентности программ с перестановочными операторами может существенно возрасти.
Теорема 3 [23,24]. Проблема эквивалентности «я ~8 я2?» в комбинированной модели Мі+ Мт=(8ьЬ81т) с частично коммутативными операторами и монотонными функциями разметки разрешима за время п0(кг) , где к - число операторов в множестве А, и г - число предикатов в множестве Р.
Проблема эквивалентности программ с коммутативными операторами еще более усложняется, если принимать во внимание независимость некоторых логических условий от отдельных операторов. Тогда проблема эквивалентности программ сводится к проблеме эквивалентности многоленточных автоматов. В течение более 30 лет эта проблема оставалась открытой, пока в 1991 г. в работе [25] не был предложен алгоритм ее решения, имеющий экспоненциальную сложность по времени.
Теорема 4. Проблема эквивалентности «я1 ~8 я2?» в комбинированной модели М1+М2=(Б1,Ьз12) с коммутативными операторами и функциями разметки, подчиненными распределению зависимости Ъ предикатов от операторов, разрешима за время 20(п) , где п - суммарный размер схем программ я1 и я2.
3. Модель М2=(82, Ь82) с подавляемыми операторами. Считается, что оператор а подавляет оператор Ь, если результат выполнения оператора Ь утрачивается в том случае, когда вслед за ним выполняется оператор а. Примером могут служить операторы а: у++=(х=0) и Ь: х++. Для того, чтобы убедиться, что оператор а подавляет оператор Ь, достаточно проверить, что множество переменных ои1рШ:(Ь) включается в множество ои1рШ:(а) и не пересекаются с множеством переменных іприі(а). Встраивая подавляемые операторы в код программы, можно существенным образом изменять последовательность вычислительных действий, сохраняя при этом неизменным окончательный результат вычисления. Благодаря этому, эффективность антивирусных программ, распознающих вирусы путем эмуляции их действий, значительно снижается. Эффект подавления одних операторов другими может быть отражен в алгебраической модели М2=(82,Ь82), в которой полугруппа операторов 82 определяется тождествами вида Ьа=а. Проблема эквивалентности программ в модели М2 рассматривалась в работе [26], на основе которой нами была доказана
Теорема 5. Проблема эквивалентности «я1 ~8 я2?» в модели М2 с подавляемыми операторами разрешима за время 0(п2^ п), где п - суммарный размер схем программ я1 и я2.
4. Модель М3=(83,Ь83) с операторами засылки констант. Под оператором засылки констант понимается всякий оператор, приводящий данные вычисления в некоторое фиксированное состояние. Примером оператора такого рода может служить х=(у=0)+^=1). Характерное свойство оператора засылки констант а состоит в том, что іприі(а) - пустое множество, а оиіриі(а) состоит из всех переменных программы. За счет того, что результат выполнения оператора засылки констант заранее предсказуем, последующее поведение программы, содержащей такой оператор, также предсказуемо. Поэтому операторы засылки констант можно с успехом использовать для порождения «непроницаемых» предикатов, которые являются очень сильным средством обфускации программ. Семантические особенности операторов засылки констант могут быть полностью охарактеризованы в алгебраической модели М3=(83,Ь83), в которой 83 - свободная полугруппа операторов с (возможно несколькими) правыми нулями, т.е. элементами е, удовлетворяющие равенству Ье=е для любого оператора Ь. Проблема эквивалентности программ в модели М3 впервые была исследована в работе [27]; в этой работе была доказана разрешимость проблемы эквивалентности. Впоследствии в работе [28]
был предложен более простой алгоритм проверки эквивалентности программ с операторами засылки констант и установлена сложность этой задачи.
Теорема 6. Проблема эквивалентности «я1 ~8 я2?» в модели М3 с операторами засылки констант является Р8РЛСБ-полной задачей.
5. Модель М4=(84,Ь84) с обратимыми операторами. Взаимно обратимыми называются два оператора, последовательное выполнение которых оставляет данные в неизменном состоянии. Свойством взаимной обратимости обладают, например, операторы х++ и х-- . Так же как и операторы засылки констант, взаимнообратимые операторы позволяют переводить данные в заранее известное состояние, однако, это состояние не является фиксированным, а зависит от вычисления программы. В процессе обфускации взаимнообратимые операторы можно использовать как для порождения «непроницаемых» предикатов, так и для изменения последовательности вычислительных действий. Однако, в отличие от предыдущих свойств, для проверки свойства взаимной обратимости операторов уже недостаточно проведения их простого синтаксического анализа; здесь требуется учитывать более глубокие особенности операционной семантики программ. Для анализа поведения программ с взаимнообратимыми операторами используется алгебраическая модель М4=(84,Ь84), в которой 84 - свободная группа операторов. Разрешимость проблемы эквивалентности программ в модели М4 была установлена в работе [29]. Нам удалось оценить сложность проверки эквивалентности программ в этой модели.
Теорема 7. Проблема эквивалентности «я1 ~8 я2?» в модели М4 с взаимнообратимыми операторами является Р8РЛСБ-полной задачей.
Проблема эквивалентности в комбинированных моделях программ
Во многих случаях, для разработки эквивалентных преобразований или для проведения анализа программ приходится одновременно учитывать несколько различных семантических свойств операторов и предикатов. Это приводит к необходимости рассматривать комбинированные алгебраические модели программ. Как показывают исследования, сложность проблемы эквивалентности в комбинированной модели М может значительно возрасти по сравнению со сложностью проблемы эквивалентности в тех простых моделях, из которых составлена М. Мы рассмотрим несколько примеров, подтверждающих это наблюдение.
5. Модель М1+ М3=М5=(85,Ь85) с коммутативными операторами и операторами засылки констант. В основу алгебраической модели М5=(85,Ь85) положена свободная коммутативная полугруппа, дополненная правыми нулями. Эта модель образована комбинацией моделей М1 и М3. Проблема эквивалентности программ в модели М5 была исследована в работе [30]; как оказалось ее сложность превосходит сложность проблемы эквивалентности в моделях М1 и М3.
Теорема 8. Проблема эквивалентности «я1 ~8 я2?» в модели М5 разрешима алгоритмом сверхэкспоненциальной сложности. Задача установления более точной оценки сложности проверки эквивалентности программ в модели остается открытой М5 и требует проведения дальнейших исследований. Можно рассматривать также и другую разновидность комбинированной модели с перестановочными операторами и операторами засылки констант М6=(86,Ь86), в которой полугруппа представляет собой прямое произведение свободных полугрупп с единственным правым нулем в каждой полугруппе. Это соответствует случаю, когда в программе используются операторы х++, у++, х=0, у=0. Как было показано в работах [31,32], справедлива
Теорема 9. Проблема эквивалентности «я1 ~8 я2?» в модели М6 алгоритмически неразрешима.
6. Модель М1+ М5=М7=(87,Ь87) с коммутативными взаимнообратимыми
операторами. Эта модель соответствует случаю, когда в программе используется несколько взаимнообратимых операторов, каждый из которых использует свое
отдельное множество переменных. Примером могут служить программы, в которых содержатся операторы х++, х--, у++, у--. Для анализа таких программ можно использовать модель М7=(87,Ь87), в которой 87 - абелева группа. В работе [29] была доказана справедливость следующей теоремы.
Теорема 10. Проблема эквивалентности «л1 ~8 л2?» в модели М7 алгоритмически неразрешима. Однако в отдельных случаях комбинация простых моделей не влечет за собой существенного возрастания сложности проверки эквивалентности программ.
7. Модель М1+ М4=М8=(88,Ь88) с коммутативными подавляемыми операторами. В этой модели действуют законы частичной перестановочности операторов, и при этом одни операторы могут подавлять действия других. Нами была доказана следующая теорема.
Теорема 11. Проблема эквивалентности «л1 ~8 л2?» в модели М8=(88,Ь88) с коммутативными подавляемыми операторами разрешима за время O(n4log п), где п
- суммарный размер схем программ л1 и л2.
Заключение
Как видно из представленных результатов, в отдельных случаях (теоремы 1-3, 5) проверку эквивалентности программ можно проводить сравнительно быстро (за время, ограниченное полиномом невысокой степени). Это означает, что обфуски-рующие преобразования, использующие только семантические свойства программ, выразимые в указанных алгебраических моделях, не обладают достаточной устойчивостью. Поэтому для проведения деобфускации и распознавания полиморфных вирусов, использующих эти преобразования, можно применять универсальные алгоритмы проверки эквивалентности программ. Тем не менее, главным достоинством эквивалентных преобразований программ в моделях Мо, М1, М2 является простота их применения. Благодаря этому, обфускирующая процедура, использующая эти преобразования может иметь простой и компактный код. В то же время имеются модели, в которых сложность проверки эквивалентности программ оказывается значительной (Теоремы 4, 6-10). Это является признаком того, что обфускирующие преобразования, использующие семантические свойства, представимые в этих моделях, являются весьма устойчивыми. В таких случаях универсальные алгоритмы деобфускации, не учитывающие стратегию применения этих преобразований, могут оказаться неэффективными. Как видно из приведенных результатов, это относится, прежде всего, к комбинированным моделям, которые охватывают несколько различных семантических свойств (например, коммутативность операторов при наличии операторов присваивания констант и монотонных предикатов). Однако здесь необходимо учитывать и то обстоятельство, что проведение эквивалентных преобразований в комбинированных моделях также является сложной задачей.
Поэтому целесообразным представляется применение следующей стратегии обфускации. Выбирается некоторая комбинированная алгебраическая модель программ М=М11 +М12+.+М1к. Для обфускации заданной программы к ней поочередно в некотором случайном порядке применяются простые обфускирующие преобразования, допустимые в каждой отдельной модели М11, М12,...М1к. Если указанные модели имеют простое устройство, то для применения отдельных преобразований можно использовать сравнительно простые процедуры. Порядок применения этих преобразований играет роль секретного ключа. В таком случае для деобфускации программы необходимо либо применить общий метод проверки эквивалентности программ в модели М (а это, как свидетельствуют теоремы 6-10, может оказаться вычислительно трудной или неразрешимой проблемой), либо, учитывая характер обфускации, использовать алгоритмы проверки эквивалентности в тех простых моделях, из которых составлена модель М. Однако последовательность применения этих алгоритмов может зависеть от того порядка, в котором применялись об-
фускирующие преобразования, т.е. от «секретного ключа». Тогда сложность деоб-фускация будет обусловлена необходимостью перебора большого множества «секретных ключей». Предложенный здесь подход к задаче обфускации программ представляется нам перспективным и заслуживающим дальнейшего более подробного исследования как с позиции обеспечения информационной безопасности программ, так и в связи с разработкой новых систем обнаружения вирусов.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Sampson T. A virus ininfo-spaoe: the opennetwoik and its enemies//A Journal ofMeda and Culture;2004, v. 7,N 3.
2. Collberg C., Thomborson C., Low D. A taxonomy of obfuscating transformations // Tech. Report, N 148, Univ. of Auckland, 1997.
3. Szor P., Feme P. Hunting for metamorphic. // In Proceedings of the 2001 Virus Bulletin Conference, 2001, p. 123-144.
4. Chess D., White S. An undetectable computer virus // In Proceedings of the 2000 Virus Bulletin Conference, 2000.
5. Christodorescu M., Jha S. Testing malware detectors // In Proceedings of the International Symposium on Software testing and Analysis (ISSTA 2004).
6. Christodorescu M., Jha S., Seshia SA, Song D, Bryant RE. Semantic-aware malware detection // In Proceedings ofthe2005 IKKK Symposium on Security and Privacy (Oakland2005),2005.
7. Shokurov AV. An approach to quantitative analysis of resistance of equivalent transformations of algebraic schemes // Труды Института системного программирования, 2004, т. 6, с.157-179.
8. Chow S., Gu Y., Johnson H, Zakharov VA An approach to the obfuscation of control-flow of sequential computer programs // Lecture Notes in Computer Science, V. 2200, 2001, p. 144-155.
9. Varnovsky N.P., Zakharov V.A. On the possibility of provably secure obfuscating programs // Lecture Notes in Computer Science, v. 2890, 2004, p. 91-102.
10. Иванников В.П., Варновский Н.П., Захаров В.А., Кузюрин Н.Н., Шокуров А.В., Кононов А.Н., Калинин А.В. Методы информационной защиты проектных решений при изготовлении микроэлектронных схем // Известия ТРТУ, 2005, N 4, С. 112-119.
11. Подловченко Р.И. Иерархия моделей программ // Программирование, 1981, N 2, С.3-14.
12. Подловченко Р.И. Полугрупповые модели программ // Программирование, 1981, N 4, С.3-13.
13. Подловченко Р.И., Захаров В.А. Полиномиальный по сложности алгоритм, распознающий коммутативную эквивалентность схем программ // Доклады РАН, 1998.Т.362, N 6.
14. Захаров В.А. Быстрые алгоритмы разрешения эквивалентности операторных программ на упорядоченных шкалах // Математические вопросы кибернетики, 1998. Вып. 7, С.303-324.
15. Подловченко Р.И. Об одном массовом решении проблемы эквивалентных преобразований схем программ // Программирование. 2000. N1. С.66-77; 2000. N 2, С. 3-11.
16. Подловченко Р.И., Захаров В.А., Захарьящев И.М., Русаков Д.М., Щербина В.С. О возможности применения быстрых алгоритмов проверки эквивалентности программ для обнаружения вирусов // Труды Второй Всероссийской научной конференции «Методы и средства обработки информации». 2005. С.414-421.
17. Della Preda M., Giacobazzi R.Semantic-based code obfuscation by abstract interpretation. In Proc. 32ndICALP, LNCS 3580, pp. 1325-1336, 2005.
18. Della Preda M., Giacobazzi R., Madou M., de Bosschere B. Opaque predicate detection by means of abstract interpretations //
19.ЯновЮИ. Олсгичэскихсжмахалгоритмов //ПробжмшйэерЕнжи -МФизматлит. Вып. 1. 1958. С75-121.
20. Rutledge J.D. On Ianov's program schemata // The Journal of the. ACM, v. 11,1964, p.1-9.
21. Hopcroft J.E., Karp R.M. A linear algorithm for testing equivalence of finite automata // Cornell Univ., Computer Sci. Dep., Technical Report TR 71-114, 1971.
22. Подловченко Р.И., АланакянНА Регулярные модели программ// Программирование. 1993. N4. С.3-11.
23. Подловченко Р.И. Об одном массовом решении проблемы эквивалентных преобразований схем программ // Программирование. 2000. N 1. С.66-77; 2000,. N 2. С 3-11.
24. Zakharov V., Zakharyaschev I. On the equivalence-checking problem for a model of programs related with multi-tape automata // Lecture Notes in Computer Science, v. 3317, 2005, p. 293-304.
25. Harju T., Karhumaki J. The equivalence of multi-tape finite automata // Theoretical Computer Science, v. 78, 1991, p.347-355.
26. Захаров В.А. Об одной алгебраической модели программ, связанной с обработкой прерываний // В сборнике «Материалы VIII Международного семинара «Дискретная математика и ее приложения». Москва, 2-6 февраля 2004 года». 2004. С. 129-131.
27. Летичевский А.А. Эквивалентность автоматов относительно свободной полугруппы с правым нулем // Докл. АН УССР. 1968. Т. 182. N 5. С.248-252.
28. Podlovchenko R., Rusakov D., Zakharov V. On the equivalence problem for programs with mode switching // Pre-Proceedings of CIAA-2005 "The 10-th International Conference on Implementation and Application ofAutomata" (June 27-29, 2005), Sophia Antipolis, France, 2005. p. 285-287.
29. Летичевский А.А. Эквивалентность автоматов относительно полугрупп // Теоретическая кибернетика. Вып. 6. Киев, 1970 С.3-71.
30. Годлевский А.Б. Некоторые специальные случаи проблемы остановки и функциональной эквивалентности автоматов // Кибернетика. 1973. N 4. С.90-97.
31. Годлевский А.Б. Об одном разрешимом случае специальной проблемы функциональной эквивалентности дискретных преобразователей // Кибернетика. 1974. N 4. С.32-36.
32. Петросян Г.Н. Об одном базисе операторов и предикатов с неразрешимой проблемой пустоты // Кибернетика. 1974. N 5. С.23-28.
А.П. Росенко
Россия, г. Ставрополь, СГУ
МЕТОДОЛОГИЧЕСКИЕ ОСНОВЫ ПРОБЛЕМЫ БЕЗОПАСНОСТИ КОНФИДЕНЦИАЛЬНОЙ ИНФОРМАЦИИ
1. Состояние проблемы безопасности конфиденциальной информации
Необходимость защиты информации (ЗИ) возникла вместе с появлением человека. Однако в теоретическом аспекте ее целенаправленное осмысление началось существенно позже.
Методологические проблемы ЗИ наиболее активно начались формироваться как у нас в стране, так и за рубежом немногим более 30 лет назад. За указанный период коренным образом изменилось представление о сущности и методологических подходах к решению указанной проблемы. По мнению ведущих специалистов в области информационной безопасности современный период ЗИ может быть представлен тремя этапами: начальный; развитый; комплексный [1].
Первые два этапа характеризуются экстенсивными подходами к решению проблемы ЗИ, основное содержание которых связано с осмыслением важности и необходимости проблемы, накоплением и анализом статистической информации о частоте воздействия на автоматизированную информационную систему (АИС) различных угроз и внедрением в практику новых, более эффективных средств и методов ЗИ. Познавая проблемы, возникающие в процессе становления и развития теории ЗИ, исследователи искали ответы на вопросы о первопричинах процессов и явлений, способствующих утечке конфиденциальной информации.
В рамках реализации первых двух этапов эти вопросы решались часто интуитивно, без достаточной научной проработки. В то же время конкретные знания специалистов по ЗИ, научных сотрудников, занимающихся проблемами внедрения в практику ЗИ научно обоснованных подходов, накапливались из года в год. Разрабатывались новые теории, способствовавшие раскрытию сущности происходящих в процессе функционирования АИС явлений при воздействии на нее различных угроз, совершенствовались подходы, применяемые для ЗИ.
В настоящее время реализуется третий этап, который характеризуется разработкой и внедрением в практику ЗИ принципиально новых научных подходов реализующих системные принципы и перевод проблемы ЗИ на интенсивные пути.
В рамках третьего этапа осуществляется процесс накопления и обобщения результатов теоретических исследований, разработкой практических решений