I ТЕОРЕТИЧЕСКОЕ ОБОСНОВАНИЕ СТОЙКОСТИ НЕРАЗЛИЧИМОЙ ОБФУСКАЦИИ
Козачок А.В.1, Бочков М.В.2, Лай М.Т.3
Целью проводимого исследования является построение комплекса моделей и алгоритмов процесса контролируемого разграничения доступа к файлам документальных форматов, позволяющего осуществить защиту от несанкционированного доступа к информации за счет применения неразличимой обфускации программного кода. Предлагается теоретическое обоснование стойкости аналитической модели защиты файлов документальных форматов от несанкционированного доступа.
В статье рассмотрены различные подходы к определению стойкости неразличимой обфускации, предложен алгоритм декомпозиции элементов и описан подход к моделированию неразличимого об-фускатора в виде модели со случайным оракулом. Одним из возможных вариантов доказательства стойкости криптографических преобразований является применение модели случайного оракула, под оракулом понимается вспомогательный алгоритм, который выполняется за один шаг работы основного алгоритма.
Совокупность сформулированных и доказанных утверждений позволила теоретически обосновать возможность построения обфускатора, стойкого в модели виртуального «черного ящика». Это означает, что не существует алгоритма распознавания обфускации более эффективного, чем обычное предположение, сделанное на основе анализа входов и выходов обфусцированной программы.
Ключевые слова: обфускация, случайный оракул, декомпозиция, стойкость, виртуальный черный ящик.
Введение
В последние годы при проведении научных исследований особое внимание уделяется вопросам обеспечения безопасности инфокоммуника-ционных систем. Главным образом, эти исследования касаются формальной верификации свойств безопасности. Основной целью при этом является разработка формальной математической модели свойств безопасности системы, а также верификация этой модели с помощью математических доказательств.
Целью проводимого исследования является построение комплекса моделей и алгоритмов процесса контролируемого разграничения доступа к файлам документальных форматов, позволяющего осуществить защиту от несанкционированного доступа к информации за счет применения неразличимой обфускации программного кода [1, 2].
Обфускацией программы называется всякое ее преобразование, которое сохраняет вычисляемую программой функцию (эквивалентное преобразование), но при этом придает программе такую форму, что извлечение из текста программы (программного кода) ключевой информации об алгоритмах и структурах данных, реализованных в этой программе, становится трудоемкой задачей [3].
Исходя из вышеизложенного, в статье предлагается теоретическое обоснование стойкости аналитической модели защиты файлов документальных форматов от несанкционированного доступа, отличающейся применением процедуры неразличимой обфускации программного кода [4].
1. Понятие стойкости неразличимой обфускации
В 2001 году впервые строгое математическое определение стойкости обфускации программного кода была предложено Бараком [5]: обфускация считается стойкой, если всякий противник может извлечь из текста обфусцированной программы за разумное (полиномиальное относительно размера входных данных) время не больше информации, чем можно было бы получить, проводя тестовые испытания этой программы как «черного ящика». Рассмотрим основные понятия стойкости обфускации [5] - стойкость на основе понятия неразличимости (Ю) и стойкость обфускации в модели виртуального «черного ящика» (УВВ).
Определение 1. (Обфускация в модели виртуального «черного ящика»). Пусть {Сц ^ -класс булевых схем, тогда обфускатором в модели виртуального «черного ящика» для класса схем {С^ называется такая (полиномиальная
1 Козачок Александр Васильевич, кандидат технических наук, Академия ФСО России, г. Орёл, [email protected]
2 Бочков Максим Вадимович, доктор технических наук, профессор, ЧОУ ДПО «ЦПР», г. Санкт-Петербург, [email protected]
3 Лай Минь Туан, Академия ФСО России, г. Орёл, [email protected]
вероятностная машина Тьюринга) PPT O, которая удовлетворяет следующим требованиям:
- функциональная эквивалентность. Для любой схемы C е {Cц JieN и любого входа x существует пренебрежимо малая функция /Л, такая что:
Рг[(0(С))(х)*ОД]<//(|С|);
- полиномиальные издержки. Существуют полином poly(•) такой, что для любой схемы
C е {Cl JleN :
\0(C)\<poly(\C\).
/
- свойство виртуального «черного ящика»: для любой PPT A (противника) существуют такая PPT Sim (симулятор) и пренебрежимо малая функция JLI такая, что для любой схемы C е {Cц JieN :
| Рг[А(0(С)) = 1 ]-Pr[Simc(№ ) = \]\<ц(\С\).
В работе Барака также было доказано утверждение о невозможности построения идеального обфускатора для всех классов булевых функций, но данное утверждение не исключает возможности построения обфускатора, стойкого в модели виртуального «черного ящика». В 2013 году была предложена новая конструкция [6], так называемая «обфускация неразличимости» (indistinguishable obfuscation-z'O).
Определение 2. Обфускатором неразличимости O называется однородная полиномиальная вероятностная машина Тьюринга для булевых схем класса {Cя }, где Я - параметр безопасности, если обеспечивается выполнение следующих требований [6]:
- функциональная эквивалентность. Существует пренебрежимо малая функция fl(Я) такая, что для всех Я е и всякой схемы С е С я :
Ух: Рг[гО(С(х)) = С(х)] > 1 - ц{Я);
- свойство виртуального «черного ящика» (стойкость). Для любой PPT Dist (распознавателя), существует пренебрежимо малая функция
такая, что для всех Яе и любой пары эквивалентных схем Q,Cj е Ся, имеющих одинаковый размер, распределения вероятностей случайных величин O(C\) и O(C2) вычислительно неразличимы, то есть выполняется соотношение:
Vx : \Рг[В(Ю(Я,С1(х))) = = \]-Pr[D(iO(Я,С2(х))) = \\< ju(Я).
Это означает, что не существует алгоритма распознавания обфускации более эффективного, чем обычное предположение, сделанное на основе анализа входов и выходов обфусцированной про-
граммы (функции или обфусцированного набора инструкций).
Неразличимость обфусцированных программ означает, что если две эквивалентные программы (одинакового размера) P1 , такие, что Vx :P\(x) = P2(x), а O - это обфускатор неразличимости, который принимает на вход программу P(x) и на выходе генерирует новую программу O(P(x) , то Ю(Рх(х)) и Ю(Р2(х)) будут вычислительно неразличимы:
ЗРх(х),Р2(х)Хх : Рх(х) = Р2(х) Ю(Р1(х)) » Ю(Р2(х).
На основе данной конструкции можно построить доказательство о том, что возможно построение неразличимого обфускатора для всех классов булевых функций, стойкого в модели виртуального «черного ящика». Рассмотрим основу построения обфускатора неразличимости [6, 7]. Обфу-скатор O принимает в качестве входных данных программу f, представленную в виде булевой функции, и на выходе генерирует обфусцирован-ную программу O( f). Формально, обфускатор неразличимости O можно считать компилятором, принимающим на вход булеву функцию f(x) и генерирующим на выходе обфусциро-ванную программу f'(x) = O(f(x) . При этом должно выполняться следующее условие: Vx : f'(x) = f(x) . Определение неразличимой обфускации предъявляет следующее требование по стойкости: для любой PPT (противника) существует вычислительно неограниченный симулятор Sim, такой, что для каждой схемы С, за полиномиальное время распознаватель Dist не может различить результат, вычисленный противником ( принимает обфусцированную программу O(С) в качестве входа), от результата, вычисленного симулятором Sim, имеющим лишь оракульный доступ к С, при этом Sim может сделать неограниченное количество запросов к С. Определение стойкости обфускации в модели виртуального «черного ящика» требует, чтобы для любой PPT А (противника) существовал полиномиальный симулятор Sim, такой, что для каждой схемы С, за полиномиальное время распознаватель Dist не может различить результат, вычисленный противником А (А принимает обфусцированную программу O(С) в качестве входа), от результата, вычисленного си-мулятором Sim, имеющим лишь оракульный доступ к С, при этом Sim может сделать полиномиальное количество запросов к С.
2. Доказательство стойкости неразличимой обфускации в модели виртуального «черного ящика»
Для описания доказательства стойкости разработанной модели относительно большого класса алгебраических атак в обобщенной модели полилинейного отображения необходимо ввести ряд обозначений:
U - множество универсума; S Q U - совокупность множеств индексов, являющихся подмножествами универсума U;
Zp - кольцо вычетов по модулю простого числа p ;
Л - параметр безопасности; p - открытые параметры; sk - секретные параметры; n - длина ветвящейся программы; inp(i) - функция выбора позиции матриц для текущего входного бита; l - длина входного вектора; w- ширина ветвящейся программы. Для любого элемента x е Zp обозначим [x]s как разрешенное кодирование x относительно множества S [4]. Система дифференциального кодирования, реализующая полилинейное отображение [8, 9] реализует следующие операции:
- генерация параметров:
MM.Setup(U,lÁ )->( pp,sk );
- кодирование:
MM .Encode(sp,x,S) —> [x]s;
- сложение:
MM .Add ([ x]s,[ y]s)^[x + y]s;
- умножение:
MM .Mult (I x]Si,[yJS2)
17"xyJSlUS2,если S1C\S2= 0,S1 U S2^U,
4 J-;
- проверка кодирования нуля:
MM .ZeroTest([ x]s)^> Í0,если S = U,x = 0 e Zp,
4 1-
Предположим, что противник имеет доступ к некоторому оракулу ^. Одним из возможных вариантов доказательства стойкости криптографических преобразований является применение
модели случайного оракула [10], под оракулом понимается вспомогательный алгоритм, который выполняется за один шаг работы основного алгоритма. Другими словами, при оценке трудоемкости атак противника время работы оракула не учитывается, учитывается только число обращений к нему. Входные данные, которые передаются оракулу, называются запросом, выходные — ответом. При каждом новом запросе значение функции на данном аргументе выбирается случайным образом. При этом оракул запоминает пару (аргумент, значение) и при повторном запросе для этого аргумента, независимо от того, кто из участников его выдал, будет возвращено все то же запомненное значение. Противник может задавать оракулу любые запросы, получать и анализировать ответы. В обобщенной модели полилинейных отображений противник может выполнять любые операции. При этом случайный оракул Ш возвращает так называемый обработчик И, который однозначно сопоставляется переданным параметрам операции. Оракул Ш запоминает входные данные, генерируемое значение и инициализирует внутреннюю таблицу Т (для хранения обработчиков И).
В идеализированной модели полилинейных отображений [11] под элементом е будем понимать пару (а, Б). При этом о(е) - значение элемента (ое Я), Б(е)- индекс элемента (Б С и). При выполнении операций о е {+,-,•} над элементами е1, е2, которые содержат формальные переменные, результат операции е1 о е2 представляет собой формальное арифметическое выражение о(е1) о о(е2) (при этом считаем, что индексы элементов удовлетворяют требованиям осуществления операции). Формальные выражения представляются в виде булевых схем, это позволяет гарантировать, что размер представления остается полиномиальным. Элемент е является базовым, если его значение является выражением, которое не содержит оператор (формальная переменная, которая не является вершиной графа). Элемент е' является подэлементом элемента е, если е может быть выведен из е' с помощью последовательности операций.
Оракул Ш отвечает при каждом запросе следующим образом:
- при запросе Encode(х,Б ) оракул Ш осуществляет поиск ячейки в таблице Т, соответствующей паре е = (х,Б) . Если такой ячейки в таблице нет, то оракул генерирует обработчик И и добавляет ячейку И ^ е в таблицу Т, и возвращает И .
- при запросе Add(hj h ), где hj ^ ej, ^2 ^ e2, Sj = S2 = S С U, оракул Ш осуществляет поиск ячейки в таблице T, соответствующей обработчикам hj,h2. Если такой ячейки в таблице нет, то оракул Ш генерирует обработчик h и добавляет ячейку h ^ (xj + x2,S) в таблицу T , и возвращает h .
- при запросе Mult(hj ,h2) где hj ^ ej, h2 ^ e2 ,Sj n S2 = 0, S U S2 С U, оракул Ш читает из памяти и находит ячейку в таблице T, соответствующую обработчикам h1,h2 . Если такой ячейки в таблице нет, то оракул ш генерирует обработчик h и добавляет ячейку h ^ (xjx2 ,Sj U S2 ) в таблицу T, и возвращает - при запросе ZeroTest(h), где h h-> (x,U). оракул Ш возвращает ноль, если x = 0(mod p) и единицу - в других случаях.
При этом будем считать, что противник или распознаватель Adv(A ) выполняет вероятностный алгоритм A, имеющий доступ к случайному оракулу ш . Работа алгоритма заканчивается формированием искомого запроса ZeroTest (h), такого что при обращении к оракулу ш с этим запросом он возвращает ноль. Пусть P[Adv(А)] - вероятность того, что будет получен ответ - ноль. При обосновании стойкости требуется доказать, что для любого противника Adv(A ) с полиномиальными ограничениями на его ресурсы, вероятность Р[Adv(А)] пренебрежимо мала.
Для доказательства стойкости обфускатора O в модели виртуального «черного ящика» необходимо построить вероятностный алгоритм B (будем обозначать его симулятором Sim ), которому на вход даются параметры булевой схемы !С', описание алгоритма работы противника A и ора-кульный доступ к схеме С. Симулятор Sim начинает работу с эмуляции алгоритма обфускации O. Следует отметить, что O преобразует схему С в ветвящуюся программу P . Однако, поскольку симулятор Sim , имеет лишь оракульный доступ к схеме С, он не может вычислить матрицы Bj b . Следовательно симулятор Sim не может моделировать список исходных элементов оракулу ш . Вместо этого симулятор Sim инициализирует Ш формальными переменными.
Для моделирования обфускации O симулятор Sim должен эмулировать оракул ш к которому обращается O . Симулятор Sim может эффективно эмулировать все операции оракула ш кроме проверки кодирования нуля. Проблема моделирования операции ZeroTest заключается в том,
что симулятор Sim не может проводить тестирование, если значение формального выражения равно 0. Однако важно отметить, что обфускатор O не осуществляет запросов к оракулу ш для
выполнения операции ZeroTest (данные запросы выполняются лишь на этапе вычисления обфусцированной функции).
Результатом работы симулятора Sim по моделированию O является обфусцированная схема O(С). Затем симулятор Sim переходит к моделированию действий противника Adv(A ) Когда Adv(A ) делает запрос к оракулу, который не является вызовом операции ZeroTest, симулятор Sim моделирует ответ оракула. Работа оракула ш с обфускатором и противником осуществляется на основе одних и тех же таблиц обработки.
Имея обработчик h некоторого элемента e, симулятор Sim проверяет, является ли значение элемента равным нулю по двум составляющим. В первой части симулятор Sim декомпозирует элемент в виде суммы полиномиального числа более простых элементов, которые будем называть одно-входными элементами. Каждый одновходный элемент имеет значение, которое зависит от подмножества формальных переменных, которые соответствуют конкретному входу ветвящейся программы. Основная сложность на первом этапе заключается в доказательстве, того что число одновходных элементов разложения является полиномиальным.
Во второй части, симулятор Sim моделирует значение каждого одновохдного элемента отдельно. Основная цель данного этапа заключается в том, чтобы показать, что значение одновохдного элемента для входа x может быть рассчитано только, когда задана схема С( x). Для этого будем использовать теорему Килиана для рандомизации матричных ветвящихся программ [12]. Оракульный доступ не предусматривает возможность проверки всех одновходных элементов одновременно. При этом корректным является расчет каждого одновходного элемента по отдельности. Поэтому будем считать, что значение элемента равно нулю в случае, если каждый одновходный элемент в разложении равен нулю.
2.1. Декомпозиция элементов на одновходные элементы
Итак, докажем, что каждый элемент e может быть разложен на полиномиальное число одновходных элементов. Для каждого элемента e зададим следующее описание prof (e) е {0,!,*} U {—} . Если представить
e как промежуточный элемент вычисления ветвящейся программы для некоторого входного X длиной l, то prof (e) представляет собой частичную информацию, которая может быть получена для X, основанная на формальных переменных, которые присутствуют в e. Формально, для каждого элемента e и каждого j е [£], имеем, что бит j описания e равен значению b е {0,1}, если e имеет базовый подэлемент e такой, что
S(e') = S(i,b) и j = inp(i).
Для VJ е [£] и b е {0,1}, считаем, что:
- prof (e)j = b;
- prof (e)j = *, если prof (e) j не равен 0 или 1;
- prof (e) =_L, если существует значение j e [i], такое что prof (e). может быть равен 0 и 1 одновременно. В этом случае e не является одновходным элементом и такое описание недопустимо. Следовательно e является одновходным элементом, если prof (е) .. Если существует prof (e) е {0,1}£ , то описание prof(e) является полным.
Далее опишем алгоритм D, используемый си-мулятором Sim для разложения элементов e на одновходные элементы S:
e = XsеD(e)S ,
где D( e )- совокупность одновходных элементов, s GD(e),S(s) = D(e).
Алгоритм разложения D определяется следующим образом:
- если элемент e является базовым, то выходом алгоритма D будет множество с единственным элементом {e}. Пусть
S(e) = S(i, b1, b2). Тогда prof(e)inp1 (i) = b1,
prof(e)inp 2 (i) = b2 и prof(e)j =* для
У/ e [I], j Ф inpx (i), j ф inp2 (i)
- если элемент e выполняет операцию сложения e1 + e2, то D вычисляется рекурсивно L1 = D(ex) L2 = D(e2 ) и выдает L = L1 U L2. Если существуют элементы Sj, S2 е L с одинаковым описанием, D заменяет два элемента одним элементом S = S1 + S2 и prof (s) = prof (s1). Этот процесс повторяется итеративно до тех пор, пока все описания в L не будут различными;
- если элемент e выполняет операцию умножения ex • e2, то D вычисляется рекурсивно L = D(e1) L2 = D(e2 ). Для каждого S1 е L1 и S2 е L2 D добавляет выражение
S = S1 • S2 к выходному множеству L и вычисляет prof (s) = prof (s1 ) • prof (s2 ). Затем D устраняет повторяющиеся описания из L, как было описано ранее.
На основе предложенного выше алгоритма произведем доказательство ряда утверждений.
Утверждение 1. Если prof (e)j = b, то су-
t J
ществует базовый подэлемент e элемента e, такой что S(e') П Uj = S- b для некоторого i е ind( j).
Доказательство утверждения 1. Если
prof (e)j = b, то (по определению) один из J ! базовых подэлементов e является элементом e
таким, что S(e') = S(i,b) и j = inp(i) . При
этом: S(e') = S(ib ,b2 ) = Sib1(l) U S\np(l).
Если j = inp1( i) и bj = b, то
S(e') П Uj = Si"p (i) = Sjb. Аналогичным
образом, если J = inpj(i) и b2 = b, тогда
S(e') П Uj = S^2 (i) = Sjb.
Утверждение 2. Если e является подэлемен-том e и C'q Sj является точным покрытием S(e') П U., то существует точное покрытие C Q. SJ S(e) П U. такое, что C 'с C
Доказательство утверждения 2. Докажем утверждение по методу индукции. Если e имеет вид
ex + e2 и C1 с SJ является точным покрытием S(e1) П Uj , то C также является точным покрытием S(e) П Uj поскольку S(e) = S(e1). Аналогичным образом, если e является элементом вида e| • e2 и C1, C2 С SJ являются точными покрытиями S(e1) П Uj и S(e2 ) П Uj , соответственно. Тогда поскольку S(e1) П S(e2 ) = 0 и S(e1) = S(e1) U S(e2 ), то C1 U C2 является точным покрытием S(e) П U..
Утверждение 3. Если U с S(e) менты в D(e) являются одновходными элементами. То есть для Vs е D(e) имеем prof (s) ФА.. Доказательство утверждения 3. Докажем
п bad
утверждение от противного. Пусть e - первый подэлемент e такой, что D(ebad) содержит элементы с некорректным описанием. То есть D( ebad ) содержит элемент с некорректным описанием, но разложение всех подэлементов ebad содержит только элементы с корректным описанием.
Следует отметить, что ebad не может быть базовым элементом, так как его описание является
7-, / bad 1
корректным, и D(e ) является множеством
f bad ) _ _bad
с одним элементом { e }. Также e не может иметь вид выражения ex + e2, так как в этом случае, описание любого элемента в D(ebad ) будет также в D(ej) или D(e2), что противоречит
bad ^ bad
предположению о e . Таким образом, e должен иметь вид ej • e2.Тогда по определению должны существовать si е D(ej) и s2 ED(e2), такие, что prof(s-[)^l. и prof (s2) Ф±, но prof(S\ • S2) =_L . Таким образом, существует j е [£] такой, что prof (s! )j = 0 и prof (s'2 )j = j . Из утверждений 1 и 2, следует что существует точное покрытие S(sj) П Uj , которое содержит множество Sij,0 для некоторого i е ind(J), и существует точное покрытие S(s2) П Uj , которое содержит множество Sj j для некоторого i' е ind( J). Так как S(sx ) = S(ej) , S(sx) = S(e2 ) и ebad имеет вид ej • e2, существует точное покрытие
S(e) П U j , которое содержит S^ и SJ j. По-
bad
скольку e является подэлементом e , то как следует из утверждения 2, существует точное покрытие S(e) П Uj , которое содержит как Sjo, так и Si, . Однако, поскольку U С U С S(e)
x
имеем, что S(e) П Uj = Uj . Это означает, что существует точное покрытие Uj , которое содержит как Sio, так и SJ j. Пришли к противоречию относительно определения системы разделенных
множеств
Si [4].
J
eo -
Утверждение 4. Алгоритм D работает за полиномиальное время, и количество элементов в разложении D(e ) также является полиномиальным.
Доказательство утверждения 4. Покажем, что время работы алгоритма D при разложении элемента e полиномиально зависит от мощности множества | D(e) \. | D(e) \ - полиномиально, относительно утверждения, что
t
ществует одновходный подэлемент e элемента e, такой что prof(s) = prof(e'). Поскольку описания в D(e ) являются различными, | D(e )| ограничено числом подэлементов элемента e и, следовательно, | D(e )| является полиномиальным.
Зафиксируем некоторое s е D(e). Пусть первый подэлемент элемента e такой, что D( e0 ) содержит элемент с описанием prof (s) . А именно, предположим, что D(eo ) содержит элемент с описанием prof (s), но разложение любого подэлемента eo не содержит элемент с описанием prof (s) .
Если eo является базовым, то eo также является одновходным элементом, так как prof (eo) = prof (s) . Следует отметить, что eo не может иметь вид ej + e2, поскольку описание любого элемента D(eo ) появляется также в D(ej) или D(e2 ), что противоречит предположению о eo. Поэтому, предположим, что eo не является базовым, тогда он должен быть иметь вид ej • e2 . Из этого следует, что в этом случае eo является одновходным подэлементом элемента e (т.е., что | D(e) |= \) и prof (s) = prof (eo ).
Предположим от противного, что | D(e)\> j. По определению D, и предположению, что eo = ej .e2, \D(eY )\= \ или | D(e2 ) \= j . Пусть \D(ex )\> j и элемент so е D(eo ) такой, что prof (s) = prof (so), и пусть sx е D(ex) и s2 е D(e2 ) - элементы, такие, что so = sj • s2. Тогда из выражения \D(ex)\> \ следует, что существует sj е D(ex) такой, что sj Ф sj и S(sj) = S(sj) = S(ex). Так как все описания в D(e) различны, значит существует некоторый J е [£] такой, что prof(sx )j Ф prof (sj). Предположим, что prof (sx) j = j и prof(sj )j е {o,*}.
Если prof (sj)j = *, то для любого подэлемента e элемента sj имеем S(e') П Uj = 0, а следовательно, S(sj) П Uj =0 .С другой
стороны, так как prof(sx = j, то по утвержде-
t t нию 1 существует подэлемент e элемента sj такой, что S(e') П UJ =0 и S(sx) П UJ =0, что противоречит факту S(sj) = S(sj).
Если prof (sj )j = o и prof (sj )j = j, то из утверждений 1 и 2, следует, что существует точное покрытие S(sj) П Uj , которое содержит множество S- j для некоторого i е ind(J), и существует точное покрытие S(sj) П Uj , которое содержит множество SJ j для некоторого
i' e ind( j). Из S(s[ ) = S(s1 ) следует, что S(s1 ) П U j = S( sx ) n U j, которое относительно определения системы разделенных множеств [2] означает, что S( s^ ) П U j = U j.
Исходя из вышесказанного следует, что если Uj ç S(s1) то описание prof(Si) является полным. Если prof(s1 ) является полным, то умножение его с другим элементом не может изменить его описание (не нарушив его корректность) и, следовательно,
Prof(s0 ) = Prof(s1 • s2 ) = Prof(s\ ) что противоречит нашему предположению о .
Утверждение 5. Пусть s - одновходный элемент. Если U j ç S( s ), то:
- описание prof (s) является полным;
- Vi e ind( j ) существует базовый подэлемент e элемента s такой, что S(ei) = S(i, b{, Ъ12 ) для Ь\ = prof(s)inpi (i)
и b2 = prof(s)inp 2 (i) ;
- если e является базовым подэлемен-том элемента s и S(e) = S(i,bi,b2), то
Ъ ,b2 ) = (H,bl2).
Доказательство утверждения 5. Тот факт, что s - одновходный элемент, означает, то prof (s) i . Кроме того, prof (s). Ф *,
г J
любой подэлемент e элемента s удовлетворяет S( e ' ) П U j = 0, а следовательно, и S(s) П Uj =0, что противоречит предположению, что U j ç S( s ).
По определению prof (s), вместе с предположением о том, что prof (s) i , если
г
существует подэлемент e элемента s такой, что S( e ' ) П U j = Sj ъ для некоторого i' e ind( j), то b = prof (s)j . Таким образом, тот факт, что U j ç S( s ) означает, что Vi e ind( j) существует базовый подэлемент ei элемента s такой, что S( ei ) П U j = Sj ъ для b = prof (s)j . В частности, поскольку ei является базовым, он должен удовлетворять условию S(et ) = S(i,bi,Ъ2) для (bi ,b2 ) e {0,1} . Это означает, что
(bl ,b2 ) = ( prof( s)inp1 (i),prof( s)inp 2 (i)) . Это доказывает второе условие утверждения. Также из prof (s) Ф.L следует, что для любого базового подэлемента e эле-
мента s, если Sfe^J = S(i,bi ), то (bi, bJ = ( prof( s)mMi prof (s)mp2( i )), что доказывает третье условие утверждения.
Для доказательства первого условия следует зафиксировать значение j' e [I] . По предположению о структуре ветвящейся программы [4] существует значение i e [n] такое, что {inpl(i),inp2(i)} = { j,j'}. Предположим, что {inpi(i),inp2(0}-{j'j'}- При этом inpi(i) = j означает, что i e ind(j), и существует подэлемент ei элемента s такой, что S(ei) = S(i,b1,b2). Так как inp2(i) = j', prof (sФ*. Это верно для любого j' e [ l ], и, следовательно, описание prof (s)
является полным.
На основе совокупности доказанных утверждений и алгоритма декомпозиции D предлагается подход к моделированию запросов ZeroTest. Для этого воспользуемся методом моделирования Килиана для рандомизированной ветвящейся программы [12].
Теорема Килиана. Существует эффективный алгоритм моделирования Sßp , такой что Ух e {0,1} выполняется требование:
2.2. Моделирование процедуры проверки кодирования нуля
Пусть e - элемент, относительно которого будут осуществляться запросы ZeroTest, pe - полином, описывающий значение e как функцию от формальных переменных, вычисляемый по схеме a(e). Для запроса ZeroTest, содержащего элемент e и
S(e) = U и Us и U
t
Sim обрабатывает запрос следующим образом:
1. Симулятор Sim начинает работу с разложения элемента e на одновходные элемен-
ты s так, чтобы e = ^
seD(e)
s . Обозначим
D(e) = {S1,...,Sm } как совокупность одно-входных элементов. Симулятор Sim на выходе выдает значение 0, если e = 0, или 1 - в других случаях.
2. Для всех s е D(e) выполняются следующие этапы:
- симулятор Sim отправляет запросы оракулу C, моделирующему схему, выбирает x, соответствующий prof (s), для вычисления C(x);
- симулятор Sim запускает симулятор S#p, на вход которого подается C( x), и получает следующие значения:
R0,Rn,{B.b^:ie[n],b[ =
= xinp1 (i)' = xinp2 (i) } '
- симулятор Sim производит выборку равномерно распределенных случайных величин
vSim : Vs :
S't'{(Xi,tii,bi1 :ie[nJM =xinpl(i)>bl2 = Xinp2(i) }'
- симулятор Sim на выходе выдает значение 1, если ps(VSim) Ф 0, где ps - полином, вычисляемый по схеме о(s) по ySim .
3. Если для всех s Е D(e) выполняется равенство ps (Vfim ) = 0, то симулятор Sim на выходе выдает 0.
Идея моделирования заключается в том, что для каждого одновходного элемента моделируется процедура ZeroTest отдельно. Чтобы доказать адекватность предложенной модели, необходимо показать, что значение элемента становится равным нулю в результате взаимоисключения двух или более ненулевых одновходных элементов с пренебрежимо малой вероятностью. Поэтому значение элемента становится равным нулю с вероятностью близкой к единице в случае, если значения всех одновходных элементов в разложении равны нулю.
Докажем, что моделирование ZeroTest запросов является статистически близким к распределению в реальном обфускаторе. Формально, тг real
пусть VC - случайная величина, представляющая значения исходных элементов, которые обфу-скатор O(C) дает оракулу во время инициализации (считаем, что V(Ceal — значения переменных полинома pe). Требуется, чтобы для любого элемента e , такого что
S(e) = U U Bs U Bt , вероятность того, что Sim выдает значение элемента равным нулю прен real жимо близка к вероятности того, что pe
. Из этого, в свою очередь, будет следовать адекватность моделирования в целом, так как противник может осуществить полиномиалное число запросов процедуры ZeroTest.
Утверждение 6. Для любого элемента e, такого что U с S(e), полином pe, вычисляемый по схеме о(e), можно представить в виде:
pe = X ps = X q prof( s) 'О prof (s) ■ seD(e) seD(e)
При этом для любого одновходного элемента s Е D(e) выполняются следующие условия:
- О
= По.
i = 1 l'"l'"2
pmf(s) ii^j и' b
где (К, bl2) = (prof(s)i„pi 0), prof(s)i„p2 0) );
- qprof(s) является полиномом от переменных t и элементов матриц B. t j , где сте-
i, b[, bj
пень каждой переменной равна единице.
Доказательство утверждения 6. По свойству декомпозиционного алгоритма D имеем, что pe = X ps . Пусть ps - полином, вычисляе-
seD(e)
мый по арифметической схеме о(s), где элемент s Е D(e) . Предположим, что одновходный элемент s можно представить в виде суммы одночленов (возможно экспоненциальной), а именно s = Xsk . При этом, sk удовлетворяет следу-k
ющим свойствам:
- Vsk : S(sk) = S(s) и, следовательно, Uj с S(sk) Vj Е [l] ;
- o(s) содержит только операции умножения;
- базовые подэлементы каждого sk являются подмножеством базовых подэлементов s .
По утверждению 5, описание prof (sk ) является полным, и, поскольку любой базовой под-элемент sk также является базовым подэлемен-
том s, то prof (sk) = prof (s). Кроме того, для
Vi Е [l], существует базовый подэлемент e'
элемента sk такой, что S(e') = S(i,b[,b2) для
К = prof(sk )inpl (i), b2 = prof(sk )inp2 (i) . Второе свойство sk означает, что sk имеет только один базовый подэлемент с множеством индексов S(i, b[ , b'2 ) для Vi Е [l] зовые элементы, известные противнику как часть обфускации с множеством индосов S (i, b\, bj) являются О , i ^ и О. • B, , i , i . Из выше
сказанного справедливо, что для любого sk полином ps может представить в виде выражения
qprof (s) ' Оprof (s) .
Утверждение 7. Для любого одновходного элемента S такого, что U с S(s) значения пере-
тт-Sim
менных Vs , сгенерированные симулятором
Sim , и значения, присвоенные VC , имеют одинаковые распределения.
Доказательство утверждения 7. По теореме Килиана, распределения следующих величин, генерируемых симулятором Sim и O, равны:
Ro>Rn>{Bibibi :iz[n],b{ =
i,и^ 2
= prof (s)inpi (i),bl2 = prof (s)inpi (i)}.
Кроме того, следующие величины генерируются случайным образом симулятором Sim и обфу-скатором O :
s,t,{ a. t i [ п],Ъ\ =
РгГре(Г™1) = 0] = М(п),
j г Re at УС
где JLl(n) - пренебрежимо малая функция. Доказательство утверждения 8. Данное утверждение следует напрямую из леммы Шварца-
Зиппеля, если распределение случайных пере-
ТЛ real п
менных Vс является равномерным. Для доказательства необходимо преобразовать полином
л jrreal ~real
pe в pe, распределение Vç в Vç так,
-real
e " re чтобы:
PriPe(Vrl ) = 0J= Prjp'jvr1 ) = 0
t/real jrreal
VC VC
P'e ■
real
- степень полинома Р'е) = Ро1у(п);
- распределение, соответствующее Ус мо жет быть рассчитано полиномиально по значениям, распределенным равномерно над кольцом 7
^ Р •
prof(s)im(i),b2 prof(s)inp2(i)}. Для преобразования полинома p
Л г>-1 ^
в
Данное утверждение следует из того, что значения ySim генерируются симулятором Sim, а
т г real , .
значения Vç - обфускатором, на основе указанных выше исходных данных по одному и тому же алгоритму.
Перейдем к доказательству адекватности моделирования процедуры ZeroTest. Пусть на вход ZeroTest подается элемент e такой, что S(e) = U U Bs U B t pe(VCeal) = 0, если значения всех одновход-ных элементов разложения равны нулю.
Для случая, когда pe(V£eal ) = 0 и, поскольку предельное распределение значений О. i t
T7-real 1'Ь1 2
в Vc является равномерным, из структуры pe (по утверждению 6) и на основании леммы Шварца-Зиппеля [13], для каждого s e D(e)
имеем, что qprof(s) и, следова-
^ /т/-real \ л п -7
тельно, ps( Vç ) = 0 . По утверждению 7, так
как ps (VSim) = 0 для всех s e D(e) , следовательно, Sim ответит, что e равно нулю с вероятностью единица. Для случая, когда pe будем использовать следующее утверждение.
Утверждение 8. Для любого элемента e такого, что pe является полиномом степени poly(n), если pe(VÇeal) Ф 0, то:
p'e, матрицы Ri в pe заменяются союзными матрицами adj(Ri) П det(Rj), где
adj(Ri) = R_l det(Ri). Аналогично, для
- т г real ~real
преобразования распределения VC в VC - распределение значений R_ 1 заменяется распределением значений adj( Ri) П det( R. ).
_1 i * J
Поскольку матрица Ri является невырожденной и по утверждению 6 степень элементов полинома pe в Ri равна единице, то имеем:
Pr,[pe(V[eal ) = 0J= Pr[Pe(V™1) ■
jrreal VC
F-real С
■ П det(Ri) = 07 = PrJP'e(Vrl) = 07 •
isfn ]
jrreal VC
Данное выражение доказывает, что первое свойство утверждения удовлетворяется. Поскольку степень deg( П det(Ri)) < n • w и,
iе[ n ]
следовательно, deg(p'e ) < n • w • deg(pe ) .
Из этого следует, что deg(p'e ) = poly(n)
(второе свойство утверждения). Так как элементы
adj(Ri) могут быть представлены в виде полиномов степени w и значений Ri, имеем, что все
т т real
значения Vc распределены равномерно над кольцом Zили могут быть представлены в виде полиномов степени не более w по значениям,
e
которые равномерно распределены над кольцом Zp. Поскольку deg(p'e ) = poly(n), по лемме Шварца-Зиппеля:
РгГРе(УГСеа1) = 0] =
тг real VC
= Рг[р<е(Угсеа1) = Ъ] = ц(п).
j* real
VC
Возвращаясь к случаю, когда ре (V£еа1) Ф 0, что следует из структуры ре, заданной утверждением 6, существует £ Е 0(е), такой
что ps (Vrceal) ф о. В силу утверждения 8,
Pr[ps(VCeal) ф о] = 1 — M(n) . По ут-
верждению 7, рз с вероятностью
Рг[р^Г) Ф 0] = 1 -ц(п).
Заключение
Таким образом, совокупность доказанных утверждений, позволяет сделать вывод о том, что предложенная аналитическая мо-
дель защиты файлов документальных форматов от несанкционированного доступа, отличающаяся применением процедуры неразличимой обфускации программного кода, является стойкой в модели виртуального «черного ящика». Данный факт, в свою очередь, позволяет утверждать, что не существует алгоритма распознавания обфускации более эффективного, чем обычное предположение, сделанное на основе анализа входов и выходов обфусцированной программы. То есть задача пропозициональной выполнимости обфусцированной функции, которую решает противник, сводится к задаче тотального перебора 2 вариантов входных данных.
Обоснованность и достоверность полученных результатов подтверждается аналитически, применением апробированного математического аппарата. Направлением дальнейших исследований является практическая реализация и экспериментальная проверка качества разработанных моделей.
Литература:
1. Козачок А. В., Туан Л. М. Обоснование возможности применения неразличимой обфускации для защиты исполняемых файлов. В сборнике: Перспективные информационные технологии (ПИТ 2015) труды Международной научно-технической конференции. СГАУ. Самара, 2015. С. 269-272.
2. Козачок А. В., Туан Л. М. Комплекс алгоритмов контролируемого разграничения доступа к данным, обеспечивающий защиту от несанкционированного доступа // Системы управления и информационные технологии. 2015. Т. 61. № 3. С. 58-61.
3. Варновский Н. П., Захаров В. А., Кузюрин Н. Н. Математические проблемы обфускации. Математика и безопасность информационных технологий. Материалы конференции в МГУ 28-29 октября 2004 г., 2005, С. 65-91.
4. Козачок, А. В., Аналитическая модель защиты файлов документальных форматов от несанкционированного доступа / А. В. Козачок, М. В. Бочков, Р. Р. Фаткиева, Л. М. Туан. // Труды СПИИРАН. 2015. № 6. С. 228-252.
5. B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. P. Vadhan, K. Yang. On the (im)possible obfuscating programs. In Advances in Cryptology - CRYPTO, 2001, pp. 1-18.
6. S. Garg, C. Gentry, S. Halevi, M. Raykova, A. Sahai, B. Waters. Candidate indistinguishability obfuscation and functional encryption for all circuits». In FOCS, 2013, pp. 40-49.
7. P. Ananth, D. Gupta, Y. Ishai, A. Sahai. Optimizing obfuscation: Avoiding barrington's theorem. In Proceeding of the 2014 ACM SIGSAC, 2014, pp. 646-658.
8. S. Garg, C. Gentry, S. Halevi. Candidate multilinear maps from ideal lattices. In Advances in Cryptology - EUROCRYPT, 2013, pp. 1-17.
9. J. S. Coron, T. Lepoint, M. Tibouchi. Practical multilinear maps over the integers. In Advances in Cryptology - CRYPTO, 2013, pp. 476-493.
10. B. Lynn, M. Prabhakaran, A. Sahai. Positive results and techniques for obfuscation // Lecture Notes in Computer Science, v. 3027, 2004, pp. 20-39.
11. B. Barak, S. Garg, Y. T. Kalai, O. Paneth, A. Sahai. Protecting obfuscation against algebraic attacks. In Advances in Cryptology -EUROCRYPT, 2014, pp. 221-238.
12. J. Kilian. Founding cryptography on oblivious transfer. In 20th Annual ACM Symposium on Theory of Computing. 1988, pp. 20-31.
13. J. T. Schwartz. Fast probabilistic algorithms for verification of polynomial identities. Journal of the ACM, 1980, vol. 27, pp. 701-717.
Рецензент: Марков Алексей Сергеевич, доктор технических наук, профессор МГТУ им.Н.Э.Баумана, [email protected]
INDISTINGUISHABLE OBFUSCATION SECURITY THEORETICAL PROOF
Kozachok A.V.4, Bochkov M.V.5, Lai M.T.6
The purpose of the research is to construct complex of models and algorithms to control data access restriction to the documentary file formats based on indistinguishable program code obfuscation. The theoretical security proof of analytical model for protecting documentary file formats from unauthorized access is proposed.
Different approaches to the indistinguishable obfuscation security definition, decomposition algorithm and the approach to modeling indistinguishable obfuscator under the random oracle model are represented. Using random oracle model is one of the main directions to prove cryptographic protocol security. Oracle is auxiliary algorithm that performs in a single step of main algorithm.
The set of proposed and proved statements allowed constructing secure obfuscator satisfying virtual black box property. This fact means that no algorithm can distinguish obfuscated program more efficiently then hypothesis made by viewing inputs and outputs of obfuscated program.
Keywords: obfuscation, random oracle, decomposition, security, virtual black box
References:
1. Kozachok A. V., Tuan L. M. Obosnovanie vozmozhnosti primeneniya nerazlichimoy obfuskatsii dlya zashchity ispolnyaemykh faylov, V sbornike: Perspektivnye informatsionnye tekhnologii (PIT 2015) trudy Mezhdunarodnoy nauchno-tekhnicheskoy konferentsii. SGAU. Samara, 2015, pp. 269-272.
2. Kozachok A. V., Tuan L. M. Kompleks algoritmov kontroliruemogo razgranicheniya dostupa k dannym, obespechivayushchiy zashchitu ot nesanktsionirovannogo dostupa, Sistemy upravleniya i informatsionnye tekhnologii. 2015. T. 61. No 3, pp. 58-61.
3. Varnovskiy N. P., ZakharovV. A., Kuzyurin N. N. Matematicheskie problemy obfuskatsii, Matematika i bezopasnost'informatsionnykh tekhnologiy. Materialy konferentsii v MGU 28-29 oktyabrya 2004 g., 2005, pp. 65-91.
4. Kozachok, A. V., Analiticheskaya model' zashchity faylov dokumental'nykh formatov ot nesanktsionirovannogo dostupa / A. V. Kozachok, M. V. Bochkov, R. R. Fatkieva, L. M. Tuan., Trudy SPIIRAN. 2015. No 6, pp. 228-252.
5. B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. P. Vadhan, K. Yang. On the (im)possible obfuscating programs. In Advances in Cryptology - CRYPTO, 2001, pp. 1-18.
6. S. Garg, C. Gentry, S. Halevi, M. Raykova, A. Sahai, B. Waters. Candidate indistinguishability obfuscation and functional encryption for all circuits». In FOCS, 2013, pp. 40-49.
7. P. Ananth, D. Gupta, Y. Ishai, A. Sahai. Optimizing obfuscation: Avoiding barrington's theorem. In Proceeding of the 2014 ACM SIGSAC, 2014, pp. 646-658.
8. S. Garg, C. Gentry, S. Halevi. Candidate multilinear maps from ideal lattices. In Advances in Cryptology - EUROCRYPT, 2013, pp. 1-17.
9. J. S. Coron, T. Lepoint, M. Tibouchi. Practical multilinear maps over the integers. In Advances in Cryptology - CRYPTO, 2013, pp. 476-493.
10. B. Lynn, M. Prabhakaran, A. Sahai. Positive results and techniques for obfuscation // Lecture Notes in Computer Science, v. 3027, 2004, pp. 20-39.
11. B. Barak, S. Garg, Y. T. Kalai, O. Paneth, A. Sahai. Protecting obfuscation against algebraic attacks. In Advances in Cryptology -EUROCRYPT, 2014, pp. 221-238.
12. J. Kilian. Founding cryptography on oblivious transfer. In 20th Annual ACM Symposium on Theory of Computing. 1988, pp. 20-31.
13. J. T. Schwartz. Fast probabilistic algorithms for verification of polynomial identities. Journal of the ACM, 1980, vol. 27, pp. 701-717.
4 Aleksandr Kozachok, Ph.D., The Academy of the Federal Guard Service, Orel, [email protected]
5 Maxim Bochkov, Dr.Sc., Professor, Business Risk Educational Center, Saint-Petersburg, [email protected]
6 Minh Lai, The Academy of the Federal Guard Service, Orel, [email protected]