Научная статья на тему 'О стойкой обфускации компьютерных программ'

О стойкой обфускации компьютерных программ Текст научной статьи по специальности «Математика»

CC BY
264
83
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
ИНТЕРПОЛЯЦИЯ / ОЦЕНКА ПРОИЗВОДНОЙ / ЧАСТОТНОЕ ПРЕДСТАВЛЕНИЕ / УСТОЙЧИВОСТЬ ВЫЧИСЛЕНИЙ

Аннотация научной статьи по математике, автор научной работы — Варновский Н. П., Захаров В. А., Кузюрин Н. Н., Шокуров А. В.

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

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

Похожие темы научных работ по математике , автор научной работы — Варновский Н. П., Захаров В. А., Кузюрин Н. Н., Шокуров А. В.

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

Текст научной работы на тему «О стойкой обфускации компьютерных программ»

УДК 519.11

О СТОЙКОЙ ОБФУСКАЦИИ КОМПЬЮТЕРНЫХ ПРОГРАММ

Н. П. ВАРНОВСКИЙ В. А. ЗАХАРОВ11 Н. Н. КУЗЮРИН 21 А. В. ШОКУРОВ 21

1> Московский государственный университет им. М.В. Ломоносова

e-mail: zakh@cs.msu.su

2) Институт системного программирования Российской академии наук

e-mail: nnkuz@ispras.ru

Введение

Обфускацией программ называется такое преобразованием программ, которое сохраняет все функциональные характеристики исходной программы, лишь незначительно ухудшает ее быстродействие, но при этом делает чрезвычайно трудоемким извлечение из открытого текста программы ключевой информации об устройстве содержащихся в ней алгоритмов и структур данных. Впервые концепция обфускации программ была предложена и подробно исследована в статье [1]. В этой и последующих работах обсуждалась возможность применения обфускации программ для защиты авторских прав на программное обеспечение [1], для предотвращения реинженерии программ [2], для создания и защиты «водяных знаков» [3], для информационной защиты мобильных агентов [4], для обеспечения приватности информационного поиска [5] и др. Обфускация программ также находит применение в криптографии; с ее помощью можно конструировать системы шифрования с открытым ключом [6-8], проводить вычисления над зашифрованными данными [6,9] и перешифрование сообщений [10], создавать верифицируемые системы тайного голосования [11] и др.

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

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

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

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

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

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

Стойкость обфускации программ

1. Модель «черного ящика». Впервые строгое математическое определение стойкости обфускации программ было предложено в работе [6]: обфускация считается стойкой, если всякий противник может извлечь из текста обфускированной программы за разумное (полиномиальное относительно размера входных данных) время не больше информации, чем можно было бы получить, проводя тестовые испытания этой программы как «черного ящика».

Определение 1. Вероятностный алгоритм О называется обфускатором программ, стойким в модели «черного ящика», если он удовлетворяет следующим трем требованиям:

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

2. Длина описания и время выполнения любой МТ О(М) не более чем полиномиальны от соответствующих параметров машины М (требование эффективности);

3. Для любой полиномиальной вероятностной МТ (РРТ) А (противник) существует РРТ £ (симулятор) и пренебрежимо малая функция V, удовлетворяющие для любой МТ М соотношению | Рг[А(О(М)) = 1] - Рг[£М (1|М|) = 1] |< v(| М |) (требование стойкости).

В статье [6] было установлено, что стойких обфускаторов программ в модели «черного ящика» не существует. Вместе с тем, в работах [8,9,10,13] было показано, что для отдельных классов функций (т.н. «точечных» функций) стойкая обфускация вычисляющих их программ возможна при тех или иных криптографических предположениях. Наиболее значительное продвижение было достигнуто в работе [10]; ее авторы доказали осуществимость стойкой обфускации программ перешифрования сообщений. В целом, однако, результаты исследований в этом направлении не дают больших оснований для оптимизма: до сих пор не удалось обнаружить достаточно сложной функции, программы вычисления которой допускают доказуемо стойкую обфускацию в модели «черного ящика».

2. Модель «серого ящика». В модели «черного ящика» противник стремится извлечь хотя бы какую-нибудь информацию об исходной программе. В модели «серого ящика» угроза противника ослаблена: предполагается, что трассы вычисления исходной программы не являются секретом для противника. Для формулировки требования стойкости обфускации в новой модели введем оракул Тг (М), представляющий собой математическую модель «серого ящика». На входе х оракул Тг (М) возвращает пару (у, 1тМ(х)), где у - результат работы машины М на входе х, а 1тМ(х) - трасса вычисления машины М на этом входе. Строка 1тМ(х) определяется как конкатенация всех инструкций машины М, последовательно выполняемых на входе х .

Определение 2. Вероятностный алгоритм О называется обфускатором программ, стойким в модели «серого ящика», если он удовлетворяет требованиям функциональности, эффективности, а также следующему требованию стойкости: для любой РРТ А существует РРТ £ и пренебрежимо малая функция V, удовлетворяющие для любой МТ М соотношению | Рг[А(О(М)) = 1] - Рг[£Тг(М) (1|М|) = 1] |< v(| М |) .

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

Теорема 1. Эффективные обфускаторы, стойкие в модели «серого ящика», не существуют.

Доказательство. Предположим, что существует эффективный алгоритм (PPT) O(М), удовлетворяющий требованиям определения 2. Для каждой тройки

а, Ре (0,1)” и b е {0,1} определим машину Тьюринга Саръ следующим образом.

Пусть x1,х2, ... - последовательность строк, подаваемых на вход машине Са ръ. Если

х1 = а , то машина выдает Р , в ответ на x1 = Р или х2 = Р она выдает b, а во всех остальных случаях она выдает в ответ число о.

Пусть г - случайная строка полиномиальной длины, используемая вероятностным алгоритмом O . Определим функцию f (а,Р,b,r) = O( Са pb r). Очевидно, что функция f эффективно вычислима. Поскольку значение функции f однозначно определяет функцию, вычисляемую машиной Са р ъ, значение бита b также определено однозначно.

Машина S, имеющая оракульный доступ к функции, вычисляемой машиной Са р ъ, может получить в качестве ответа от оракула ненулевое значение лишь с пренебрежимо малой вероятностью. Отсюда Рг{£С“,Р,ъ = b} < 1/2 + v(”) , где v - пренебрежимо малая функция. Следовательно, согласно определению 2, для любой полиномиальной вероятностной машины Тьюринга A

Pr{A(F(а, Р, b,r) = b} < 1/2 + v(”). Таким образом, b - трудный предикат функции f, и функция f односторонняя.

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

Основная идея дальнейшего доказательства достаточно проста. Барак и др. [6] построили такое бесконечное семейство машин Тьюринга, что некоторый предикат я(М), заданный на этом семействе, невыведываем при оракульном доступе к функции, вычисляемой машиной M, но может быть легко вычислен, если дан текст любой программы, эквивалентной M. Достаточно модифицировать эту конструкцию таким образом, чтобы следующие два требования выполнялись одновременно. Во-первых, выведываемость предиката я(М) при наличии текста любой программы, эквивалентной M, должна сохраняться. Во-вторых, трассы выполнения машины M не должны давать противнику никакой дополнительной полезной информации, по сравнению с парами (вход, выход), получаемыми от «черного ящика». Противник, имеющий доступ к трассам выполнения машины M, представляется более сильным, чем противник, который видит только пары вход--выход. Для защиты от столь сильного противника мы используем криптографические примитивы. А именно, вместо сравнения входа x с фиксированной строкой а, как в работе Барака и др. [6], сначала проверяем равенство f (х) = f (а), где f - односторонняя функция. Лишь в том случае, когда равенство выполняется, мы проверяем равенство х = а .

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

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

Далее переходим к формальному доказательству. Контрпример, построенный Бараком и др. [6] использует два семейства машин Тьюринга. Для произвольной пары строк а, Ре (0,1)” машина Тьюринга С'а р (х) выдает Р , если х = а , и выдает 0 ” в противном случае. Для тех же параметров а, Р машина Тьюринга D'a р (С) выдает 1, если С (а ) = Р , и выдает о в противном случае.

Пусть {f : (0,1)” ^ (0,1)”} - односторонняя функция. Наша конструкция зависит также от целочисленного параметра t > 2, который может быть константой или значением произвольного, но фиксированного полинома (от n).

Выбираем случайно и равновероятно 2t строк а1,..., аt, Р1,..., Pt е {0,1}”. Обозначим эту совокупность из 2t строк через y. Теперь определяем машину Тьюринга Су (х) следующим образом. На входе x эта машина вычисляет f(x) и сравнивает результат с заранее вычисленными значениями f (аt), i = 1,..., t. Если f (х) < f (аt) для всех i = 1,..., t, то Су выдает 0” и останавливается. В случае, если f (х) = f (аi) для некоторого i, Су проверяет равенство х = а, и, если оно выполняется, выдает Р,

иначе выдает 0”, и в обоих случаях останавливается.

Далее мы определяем машину Тьюринга Dy. Она хранит два массива строк

а1,...,аt и Pj,...,Pt. Пусть i - индекс для обоих этих массивов, который изначально принимается равным о. Получив на вход машину Тьюринга C, машина Dy действует

следующим образом.

1. Проверяет равенство i=t-1. Если оно выполняется, выдает о и останавливается.

2. Увеличивает индекс i=i+1 и затем вызывает машину C на входе аt.

3. Если С (а t) = Pt, то проверяет текущее значение индекса. Если i=t, выдает

1 и останавливается, иначе выполняется переход на шаг 2.

4. Если С (а t^ Pt, то выдает о и останавливается.

Заметим, что моделирующая машина, имеющая доступ к машинам Су и Dy как оракулам, может подать на вход машине Dy произвольную машину C и извлечь значение а из трассы, затем подать машине Су в качестве запроса строку а1 и получить Pj (даже в случае модифицированной машины Dy, скрывающей значения Pt) и т. д. По этой причине моделирующая машина может выдать лишь t-1 запросов машине Dy (на самом деле, дальнейшие запросы допускаются, но завершаются нулевыми ответами, а потому могут игнорироваться). Необфускируемое свойство состоит в существовании tразличных строк а1,...,аt е {0,1}” таких, что на каждой из них данная машина Тьюринга выдает ненулевой ответ.

Пара машин Тьюринга (Су ,Dy) заменяет машины (С'а р,D'a р), используемые

в доказательстве отрицательного результата в работе Барака и др. [6]. Анализ этого доказательства показывает, что оно переносится на рассматриваемый случай, если верно следующее утверждение.

Утверждение. Для любой полиномиальной вероятностной машины Тьюринга S выполняется равенство

| Рг{£Су ,Dy (1”) = 1} - Pr{SZy, Dy (1”) = 1} = v (”) ,

где 2у - машина, которая отличается от Су только тем, что на входе а{ выдает 0п, и вероятности определяются случайным равновероятным выбором строк а1,..., а{, /31,..., Д е {0,1}п и случайными величинами машины Б.

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

Для простоты изложения всюду далее предполагаем, что С=2. В этом случае

машина Б может выдать второму оракулу лишь один запрос. Пусть а1,..., е {0,1}п -

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

Пусть г ек {0,1}п и у=/&) --- входная строка машины Т. Машина Тподбрасывает монету и, на основе исхода этого эксперимента, решает, какое из значений, f (а1) или f (а 2) будет принято за у. Без ограничения общности, пусть это будет а1. Далее, Т выбирает случайные равновероятные строки а2, Д, Д е {0,1}п и вызывает Б как подпрограмму. Машина Т перехватывает все запросы к первому оракулу. Выполняя запрос х е {0,1}п , машина Твычисляет /(х) и проверяет равенства /(х)=у и f (х) = f (а2) . Если ни одно из них не выполняется, машина Т выдает 0 п . В случае /(х)=у машина Т выдает Д, а в случае f (х) = f (а2) она действует так же как машина Cу.

Очевидно, что вероятность получения ненулевого ответа от этого моделируемого оракула Т не меньше, чем в случае реального оракула.

Поэтому для некоторого ] е {1,..., ^} вероятность получить от машины Тненулевой ответ не является пренебрежимо малой. Для этого значенияj, а^ принадлежит

прообразу значения у с вероятностью 1/2. Таким образом, Тинвертирует функцию /с вероятностью, которая не является пренебрежимо малой, что противоречит тому, что функция / является односторонней.

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

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

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

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

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

Определение 3. Вероятностный алгоритм O называется обфускатором с дополнительным входом, если он удовлетворяет требованиям функциональности, эффективности, а также следующему требованию стойкости: для любой РРТ A существует такие РРТ £ и пренебрежимо малая функция V, что для любого полинома q(•) и битовой строки г , длина которой не превосходит q(| М |), выполняется соотношение | Рг[А(0(М), г) = 1] - Рг[ЯМ (1М|, г) = 1] |< v(| М |) .

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

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

Определение 4. Вероятностный алгоритм О называется обфускатором алгоритмов, если он удовлетворяет требованиям функциональности, эффективности, а также следующему требованию стойкости: для любой РРТ А существует РРТ £ и пренебрежимо малая функция V, для которых соотношение

| Рг[А(О(М),М0) = 1] - Рг[£М (1|М|,М0) = 1] |< v(| М |) выполняется для любой пары эквивалентных МТ М, М0.

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

Теорема 2. В модели со случайным оракулом обфускаторы алгоритмов не существуют.

Доказательство. Определим дельта-функцию 1а , а е {0,1}п, следующим образом: Iа (х) = 1, если х = а , и 1а (х) = 0 во всех остальных случаях. Пусть Я : {0,1}2п ^ {0,1}2п - функция, вычисляемая случайным оракулом.

Для всякой пары а, г е {0,1}п определим машину Тьюринга Маг следующим образом. Машина М а г хранит в своей памяти строки г и Д = Я (а , г). На входе х е {0 , 1}п машина Ма г обращается к случайному оракулу с запросом (х,г). Если Я(х, г) = Д, то машина Ма г выдает 1, во всех остальных случаях — о, и останавливается.

Рассматривается семейство машин Тьюринга {М а г} для всех а е {0,1}п и всех длин входа п.

Согласно определению обфускатор сохраняет функциональность машины Тьюринга, и поэтому любая машина 0 (Маг) вычисляет дельта-функцию Iа .

Рассмотрим следующего противника А. На входе (0 (М) , М) машина А находит п и далее вычисляет строку г0 = г0(п), г0 е {0 , 1}п. Здесь г0(-) - произвольная эффективно вычислимая функция, которая каждому натуральному числу п ставит в со-

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

Далее машина А выполняет машину 0 (М), подавая ей на вход случайную строку х еЯ {0,1}п. Если среди запросов машины 0(М) к оракулу встретится запрос (сх, г0), то машина А выдает 1, в противном случае - о.

Для дальнейшего зафиксируем какой-либо простой алгоритм вычисления дельта-функции Iа . Например, на входе х е {0,1}п проверяем равенство х = а , и если

оно выполняется, выдаем 1, иначе - о. Будем предполагать, что машина Ма реализует именно этот алгоритм.

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

Рг{А(0(М а ,), М а ) = 1} > 1 V) ,

где V - пренебрежимо малая функция. Во втором эксперименте машина А получает обфускацию машины Ма г для случайной строки г еЯ {0,1}п. В этом случае

Рг{ А(0 (М а г ), Ма ) = 1} < v(n) .

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

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

5. Защита параметров. Во многих криптографических приложениях обфус-кация применяется лишь для одной цели — скрыть содержащуюся в программе константу (ключ), выбранную случайным образом из некоторого конечного множества. При этом считается, что сам алгоритм, реализуемый программой, известен противнику. Для формализации задачи обфускации программ в такой постановке рассмотрим параметризованное множество МТ М = {М(с) : с е {0,1}п}, отличающихся друг от друга только константами с .

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

| Рг[А(О(М(с)),М(с0)) = 1] - Рг[£М(с) (1м(с)|,М(с0)) = 1] |< v(n) выполняется для любой

пары констант с, с0, равномерно случайно выбранных из множества {0,1}п.

Возможность построения стойких обфускаторов констант, зависит от параметризованного множества МТ М . Если М(с) — это универсальная машина Тьюринга, в которой константа с играет роль моделируемой программы, то задача обфускации константы равносильна задаче обфускации программ в модели «черного ящика» с дополнительным входом. В статье [7] показано, что универсального стойкого обфус-катора программ с дополнительным входом не существует. В то же время, алгоритм шифрования в криптосистеме с открытым ключом можно рассматривать как разно-

видность обфускации, скрывающей константу — секретный ключ. Обфускацию сингулярных функций, исследованную в работах [9, 12], также можно рассматривать как стойкую защиту констант.

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

Определение 6. Вероятностный алгоритм O называется обфускатором предиката п на множестве МТ М , если он удовлетворяет требованиям функциональности, эффективности, а также следующему требованию стойкости: для любой PPT A существует PPT S и пренебрежимо малая функция v, удовлетворяющие для любой МТ М из класса М соотношению | Pr[A(O(M)) = п(М)] - Pr[SM (1|M|) = п(М)] |< v(n) .

Как видно из приведенного определения, обфускацию в модели «черного ящика» можно рассматривать как сокрытие всех возможных предикатов. Невозможность построения обфускатора, стойкого в модели «черного ящика», установленная в статье [6], не отрицает существования стойких обфускаторов, скрывающих отдельные предикаты для некоторых классов программ. Так, например, в статье [12] показано, что для класса программ, вычисляющих константы и точечные функции существует стойкая обфускация следующего свойства: «функция, вычисляемая программой, является константой».

Работа выполнена при поддержке гранта РФФИ 09-01-00632.

Литература

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

1. Collberg C., Thomborson C., Low D. A taxonomy of obfuscating transformations // Tech. Report, N 148, Univ. of Auckland, 1997.

2. Collberg C., Thomborson C., Low D. C. Manufacturing cheap, resilient and stealthy opaque constructs // Symp. on Principles of Programming Languages, 1998, p. 184-196.

3. Collberg C, Thomborson C. Watermarking, tamper-proofing, and obfuscation - tools for software protection // IEEE Transactions on Software Engineering, v. 28, N 6, 2002.

4. D'Anna L., Matt B., Reisse A., Van Vleck T. , Schwab S., LeBlanc P. Self-protecting mobile agents obfuscation report // Report #03-015, Network Associates Laboratories, 2003.

5. Ostrovsky R., Skeith 111 W.E. Private searching on streaming data // Lecture Notes in Computer Science, v. 3621, 2005, p. 223-240.

6. Barak B., Goldreich O., Impagliazzo R., Rudich S., Sahai A., Vedhan S., Yang K. On the (Im)possibility of obfuscating programs // Lecture Notes in Computer Science, v. 2139, 2001, p. 1-18.

7. Goldwasser S., Kalai T.Y. On the impossibility of obfuscation with auxiliary input // Proc. of the 46 th IEEE Symp. on Foundations of Computer Science, 2005, 553-562.

8. Hofheinz D., Malone-Lee J., Stam M. Obfuscation for cryptographic purposes // Lecture Notes in Computer Science, v. 4392, 2007, p. 214-232.

9. Lynn B., Prabhakaran M., Sahai A. Positive results and techniques for obfuscation // Lecture Notes in Computer Science, v. 3027, 2004, p. 20-39.

10. Hohenberger S., Rothblum G. N., Shelat A., Vaikuntanathan V. Securely obfuscating reencryption // Lecture Notes in Computer Science, v. 4392, 2007, p. 233-252.

11. Adida B., Wikstrom D. Obfuscated ciphertext mixing // IACR. Eprint Archive, N 394, 2005.

12. Wee H., On obfuscating point functions // Proc. of 37th ACM Symp. on Theory of Computing, 2005, p. 523-532.

13. Varnovsky N.P., Zakharov V.A. On the possibility of provably secure obfuscating programs // Lecture Notes in Computer Science, v. 2890, 2003, p. 91-102.

14. Varnovsky N.P. A note on the concept of obfuscation // Труды Института системного программирования, т. 6, 2004.

15. Goldwasser, S., Rothblum G. On best-possible obfuscation // Lecture Notes in Computer Science, v. 4392, 2007, p. 253-272.

16. Kuzurin N.N., Shokurov A.V., Varnovsky N.P., Zakharov V.A. On the concept of software obfuscation in computer security // Lecture Notes in Computer Science, v. 4779, 2007, p. 281-298.

H.n. BapHOBCKMM u flp. O ctomkom o6$yc^MM ...

105

ON THE SECURE OBFUSCATION OF COMPUTER PROGRAMS

N. P. VARNOVSKY1 V. A. ZAKHAROV1 N. N. KUZURIN 2)

A. V. SHOKUROV 2)

1) Lomonosov Moscow State University

e-mail: zakh@ cs.msu.su

2) Institute for System Programming of Russian Academy of Science

The aim of program obfuscation is to bring a program into such a form, which impedes the understanding of its algorithm and data structures or prevents extracting of some valuable information from the text of a program. In this paper we address the issue of defining security of program obfuscation. We analyze several formal definitions of obfuscation security, consider positive and negative results on obfuscation security and the applications where these model may be valid.

Keywords: computer security, program obfuscation, security, Turing machine, cryptosystem.

e-mail: nnkuz@ ispras.ru

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