1. Теоретические аспекты проблемы обфускации
программ
Н.П. Варновский, В.А. Захаров, Н.Н. Кузюрин, А.В. Шокуров
Институт системного программирования РАН ,
ф-т ВМиК и ИПИБ МГУ им. М.В. Ломоносова
10 октября 2008 г.
1 / 22
2. ОБФУСКАЦИЯ ПРОГРАММ
Обфускация — эквивалентные преобразования программ для
затруднения:
понимания программ;
извлечения полезной информации содержащейся в программе:
алгоритмов;
структур данных;
секретных ключей;
...
2 / 22
3. История исследований
1976 Первое упоминание:
Diffie W., Hellman M.
New directions in cryptography“, 1976.
”
1997 Первая научная статья:
Collberg C., Thomborson C., Low D.
A taxonomy of obfuscating transformations“, 1997.
”
2001 Первая математическая постановка задачи:
Barak B., Goldreich O., Impagliazzo R., Rudich S., Sahai A.,
Vedhan S., Yang K.
On the (Im)possibility of obfuscating programs“, 2001.
”
3 / 22
4. Обфускация: модель «черного ящика»
Вероятностный алгоритм O называется обфускатором, стойким в
модели «черного ящика», если
1 (функциональность) π ≈ O(π) для любой программы π;
2 (полиномиальное замедление) существует полином p(·), такой что
∀π : |O(π)| ≤ p(|π|), time(O(π)) ≤ p(time(π));
3 (стойкость) Для любой PPT A (противника ) существует PPT S
(симулятор ) и пренебрежимо малая функция ν, такие что, для
любой машины Тьюринга π:
|Pr{A(O(π)) = 1} − Pr{Sπ (1|π| ) = 1}| ≤ ν(|π|)
Barak B., Goldreich O., Impagliazzo R., Rudich S., Sahai A., Vedhan S.,
Yang K. On the (Im)possibility of obfuscating programs“, 2001.
”
4 / 22
5. Обфускация: новые модели и определения
2003 обфускация предикатов:
Захаров В.А., Варновский Н.П.;
2004 обфускация в модели «серого ящика»:
Варновский Н.П.
2004 обфускация алгоритмов:
Варновский Н.П.
2004 защита констант (ключей):
Варновский Н.П.;
Hofheinz D., Malobe-Lee J., Stam M. 2007.
2005 обфускация с дополнительным входом:
Goldwasser S., Tauman Kalai Y.T.
2007 наилучшая возможная обфускация:
Goldwasser S., Rothblum G.N.
5 / 22
6. ОТРИЦАТЕЛЬНЫЕ РЕЗУЛЬТАТЫ
2001 Не существует обфускаторов, стойких в модели
«черного ящика».
Barak B., Goldreich O., Impagliazzo R., et al., 2001;
2004 Не существует обфускаторов, стойких в модели
«серого ящика», если существуют односторонние
функции.
Варновский Н.П., 2004;
2005 Не существует обфускаторов с дополнительным
входом.
Goldwasser S., Tauman Kalai Y.T., 2005;
2007 Не существует наилучшей возможной обфускации для
семейства 3-CNF формул, если полиномиальная иерархия
не вырождается на втором уровне (т. е. Σp = Σp ).
2 3
Goldwasser S., Rothblum G.N., 2007.
6 / 22
7. ПОЛОЖИТЕЛЬНЫЕ РЕЗУЛЬТАТЫ
«Обфускация точечных функций »
Canetti R. 1997; Захаров В.А., Варновский Н.П., 2003; Lynn B.,
Prabhakaran M., Sahai A. 2004, Wee H. 2005, Canetti R.,
Dakdouk R. 2008.
«Обфускация POBDD и конечных автоматов »
Кузюрин Н.П., Шокуров А.А. и др., 2007; Goldwasser, S.,
Rothblum G., 2007.
«Обфускация программ решифрования »
Hohenberger S., Rothblum G. N., Shelat A., Vaikuntanathan V., 2007.
«Обфускация программ перемешивания шифртекстов »
B. Adida, D. Wikstrom, 2005.
«Обфускация баз данных »
Narayanan A., Shmatikov V., 2005.
7 / 22
8. ПОЛОЖИТЕЛЬНЫЕ РЕЗУЛЬТАТЫ
Определение
Точечной называется функция fa,b : {0, 1}n → {0, 1}n , a, b ∈ {0, 1}n ,
удовлетворяющая условию
b, если x = a,
fa,b (x) =
0n , если x = a.
Рассмотрим семейство точечных функций Fn = {fu,v : u, v ∈ {0, 1}n } и
предикат πa,b (f ) = (f ≡ fa,b ).
Если существуют односторонние перестановки, то предикат πa,b ,
определенный на семействе программ, вычисляющих точечные
функции Fn , имеет стойкую обфускацию.
8 / 22
10. Наилучшая возможная обфускация
Вероятностный алгоритм O называется наилучшим возможным
обфускатором, если он удовлетворяет следующим требованиям:
1 (функциональность)
2 (полиномиальное замедление)
3 (стойкость) Для любой PPT A (противника) существует PPT S
(симулятор) такие что для любой пары эквивалентных булевых
схем (программ) M и M одинакового размера распределения
Pr {A[O(M)]} и Pr {S[M ]}
вычислительно неотличимы.
10 / 22
11. Модели обфускации: взаимосвязь
Защита алгоритмов
?
Серый ящик Best Possible
Черный ящик Неотличимость
. . . с дополнительным входом
11 / 22
12. Обфускация с разделением программы
ПРОГРАММА
-
Блок A Блок B
Блок А : вычисляется на защищенном устройстве небольшой
вычислительной мощности (смарт-карта, процессор с малым объемом
памяти и др.)
Блок B : вычисляется на открытом высокопроизводительном
вычислительном устройстве.
Goldreich O., 1985; Ostrovsky R., 2005; Anderson W.E., 2008.
12 / 22
13. ЭЛЕКТРОННАЯ СХЕМА (конечный автомат)
Секретная часть - Открытая часть
(Оракул R) (Программа O(M))
Обфускация с оракулом [Anderson W.E., 2008]
Вероятностный алгоритм O и оракул R образуют обфускатор
семейства программ F, если:
1 (функциональность) π ≈ OR (π) для любой π из F;
2 (полиномиальное замедление)
3 (стойкость) Для любой PPT A (противника) существует PPT S
(симулятор) и пренебрежимо малая функция ν, такие что
|Pr[AR (OR (π))] = 1} − Pr[Sπ (1n ) = 1]| ≤ ν(n)
для любой программы π размера n.
13 / 22
14. Обфускация с разделением программы
Вычисление над зашифрованными данными
Шифратор Ex - Схема вычисления O(π, x)
Дешифратор Dx над зашифрованными данными
Теорема. [Sander, Tchudin, 1998; Шокуров А.В., 2004. ]
Существует обфускатор O ациклических алгебраических программ, в
системы вычислений над зашифрованными данными со следующими
свойствами:
1 преобразование программы A в схему вычислений
(Ex ; O(A, x); Dx ) корректно и эффективно;
2 size(O(A, x)) = poly (size(A));
3 для любой схемы вычислений B с n входами существует не менее
2O(n) пар (A, x), удовлетворяющих условию B = O(A, x).
14 / 22
15. Новые приложения обфускации
Повторное шифрование
mK = E(m, K) - Re-encryption R - mK = E(m, K )
Программа повторного шифрования принимает на вход шифр mK
сообщения m, зашифрованного при помощи ключа K , и вычисляет
шифр mR того же сообщения m, зашифрованного при помощи другого
ключа R.
[Hohenberger S., Rothblum G. N., Shelat A., Vaikuntanathan V.,
2007]
Для некоторых криптосистем с открытым ключом существуют
программы повторного шифрования, для которых можно построить
обфускацию, стойкую в среднем в модели «черного ящика».
15 / 22
16. Новые приложения обфускации
Перемешивание шифртекстов
x1 - - c1 - - ci1 - - xi1
x2 - - c2 - - ci2 - - xi2
x3 - E - c3 - C = C ⊗ Mπ - ci3 - D - xi3
xn - - cn - - cin - - xin
Обфускация программы предусматривает использование
криптосистемы (K , G , E , D), гомоморфной относительно сложения и
однократного умножения, т. е.:
Ek (x1 , r1 ) ⊕ Ek (x2 , r2 ) = Ek (x1 + x2 , ϕ(r1 , r2 )),
Ek (x1 , r1 ) ⊗ Ek (x2 , r2 ) = Ek (x1 × x2 , ψ(r1 , r2 )).
16 / 22
17. Новые приложения обфускации
Перемешивание шифртекстов
x1 - - c1 - - ci1 - - xi1
x2 - - c2 - - ci2 - - xi2
x3 - E - c3 - C = C ⊗ Mπ - ci3 - D - xi3
xn - - cn - - cin - - xin
Теорема 1. [B. Adida, D. Wikstrom, 2005]
Если криптосистема (K , G , E , D) является семантически стойкой, то
обфускированная программа
C = C ⊗ Mπ
является стойкой относительно угрозы различения пары перестановки
π ,π .
17 / 22
18. Новые приложения обфускации
Перемешивание шифртекстов
x1 - - c1 - - ci1 - - xi1
x2 - - c2 - - ci2 - - xi2
x3 - E - c3 - C = C ⊗ Mπ - ci3 - D - xi3
xn - - cn - - cin - - xin
Теорема 2. [B. Adida, D. Wikstrom, 2005]
Существует протокол с нулевым разглашением для доказательства
корректности обфускированной программы перестановки шифртекстов
C = C ⊗ Mπ .
18 / 22
19. Новые приложения обфускации
Другие приложения
Ostrovsky R., Skeith W., 2005.
Применение обфускации с разделением программ для скрытного
эффективного выбора текстов из потока данных по заданному
набору ключевых слов. В основу обфускации положено
семантически стойкая гомоморфная криптосистема.
Narayanan A., Shmatikov V., 2005
Обфускация баз данных для ограничения доступа к атрибутам
данных. В основу обфускации положена стойкая в модели
случайного оракула обфускация точечных функций.
19 / 22
20. Новые приложения обфускации
Обфускация компьютерных вирусов
Использование алгебраических моделей программ для
классификации компьютерных вирусов
Н.П. Варновский, В.А. Захаров, Р.И. Подловченко, В.С. Щербина, Н.Н.
Кузюрин, А.В. Шокуров, О применении методов деобфускации
программ для обнаружения сложных компьютерных вирусов, Известия
ТРТУ, №7, 2006.
20 / 22
21. Враг не дремлет: методы обфускации полиморфных компьютерных
вирусов постоянно совершенствуются.
Trojan.Win32.Obfuscated.ev: use polymorphic tactics to self-mutate,
disable security software, modify system files, and install additional
malware. Last updated on Jun 24 2008 .
[www.viruslist.com]
21 / 22