Научная статья на тему 'Способ построения неразличимого программного кода с использованием ключа'

Способ построения неразличимого программного кода с использованием ключа Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
402
37
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ / ТЕХНОЛОГИЯ ДВИЖУЩЕЙСЯ ЦЕЛИ / ОБФУСКАЦИЯ / НЕРАЗЛИЧИМОСТЬ / INFORMATION SECURITY / MOVING TARGET DEFENSE / OBFUSCATION / INDISTINGUISHABILITY

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Стюгин М.А., Овсянников А.А., Кушко Е.А.

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

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

THE METHOD OF CONSTRUCTING INDISTINGUISHABLE CODE BASED ON THE KEY

The present paper reviews an objective of obfuscation, when indistinguishability is considered relatively to programs of different functionality. In this case, an obfuscator is provided with a key at the input. This problem is relevant to space industry because it allows to run computational processes in an untrusted environment.

Текст научной работы на тему «Способ построения неразличимого программного кода с использованием ключа»

Методы и средства защиты информации

2. Drozhzhin A. The history and evolution of ransomware in facts and figures. Available at: https:// blog.kaspersky.ru/ransomware-blocker-to-cryptor/12301/ (accessed: 12.09.2016).

3. Molotov M. Virus-cryptor. The big article. Available at: https://habrahabr.ru/post/206830/ (accessed: 12.09.2016).

4. Titova V. Fantom: cryptor, pretending to be a Windows Update. Available at: https://blog.kaspersky.ru/ fantom-ransomware/12939/ (accessed 12.09.2016).

5. Shcheglov A. Yu. Anti-virus protection. Implementation on the basis of the dividing access to resources policies. Available at: http://bezopasnik.org/ article/book/8.pdf (accessed: 12.09.2016).

© Смирнов Д. В., Лубкин И. А., 2016

УДК 004.056

СПОСОБ ПОСТРОЕНИЯ НЕРАЗЛИЧИМОГО ПРОГРАММНОГО КОДА С ИСПОЛЬЗОВАНИЕМ КЛЮЧА1

М. А. Стюгин1,2, А. А. Овсянников2, Е. А. Кушко2

Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31

2Сибирский федеральный университет Российская Федерация, 660041, г. Красноярск, просп. Свободный, 79 E-mail styugin@gmail.com

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

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

THE METHOD OF CONSTRUCTING INDISTINGUISHABLE CODE BASED ON THE KEY

M. A. Styugin1,2, A. A. Ovsyannikov2, E. A. Kushko2

!Reshetnev Siberian State Aerospace University 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation

2Siberian Federal University 79, Svobodnyi Av., Krasnoyarsk, 660041, Russian Federation E-mail styugin@gmail.com

The present paper reviews an objective of obfuscation, when indistinguishability is considered relatively to programs of different functionality. In this case, an obfuscator is provided with a key at the input. This problem is relevant to space industry because it allows to run computational processes in an untrusted environment.

Keywords: information security, moving target defense, obfuscation, indistinguishability.

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

Формально обфускатор О представляет собой компилятор, основанный на эффективных (имеющих по-

1 Работа выполнена при поддержке гранта Президента Российской Федерации МК-5025.2016.9.

линомиальную сложность) алгоритмах, который получает на вход программу (circuit) P и продуцирует новую программу O(P), которая имеет функциональность, аналогичную P, но при этом является в некотором роде неразборчивой (unintelligible) [1]. С этой точки зрения полученный код O(P) представляет собой «черный ящик», для которого нельзя получить никакой иной информации, кроме той, что можно получить на основе итеративного взаимодействия (oracle access) с P. В работе [2] впервые появилось понятие неразличимого обфускатора.

Неразличимость (Indistinguishability). Для любого вероятностно-полиномиального алгоритма A сущест-

<Тешетневс^ие чтения. 2016

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

|Pr(A(O(Ci)) - Pr(A(O(C2}) < а(к) .

То есть ни один полиномиальный алгоритм не может различить, что было на входе у неразличимого обфускатора с точностью до пренебрежимо малой величины. Постановка такой задачи аналогична постановке задачи неразличимости шифров в классической криптографии [3]. В 2013 году в работе [4] впервые было представлено решение задачи построения неразличимого обфускатора для любых алгоритмов, имеющего полиномиальную сложность от времени выполнения программы. Данное решение было названо важнейшим открытием в области криптографии за последнее десятилетие. В частности, оно позволяло решать неразрешимую ранее проблему функциональной криптографии [5]. На сегодняшний день неразличимая обфускация кода до сих пор остается больше теоретической задачей, редко реализуемой на практике. Проблема актуальна для ракетно-космической отрасли, поскольку позволяет запускать вычислительные процессы в недоверенной среде.

Постановка задачи обфускации с использованием ключа. Результат, который мы планируем получить, не укладывается в формулировку задачи как классической [1], так и неразличимой обфускации [2]. Мы будем предполагать, что обфускатор ikO(P, к) получает на вход помимо программы P еще и некоторый ключ к. Далее мы будем называть его ключевой обфускатор. Ключ является обязательным параметром приложения на выходе. Если мы знаем ключ обфуска-тора, то задача сводится либо к обычному обфускато-ру O(P), либо к неразличимому обфускатору iO(P).

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

Возьмем два эффективно вычислимых алгоритма P0 и P1 и атакующий (алгоритм различения) A. Введем определение вероятностного эксперимента PrivAikO(«). Для любого случайно выбранного i е {0, 1} и случайного к побитовой длины n генерируем программу ikO(Pi, к). Программу iM(P^ к) подаем на вход A. Атакующий A является вероятностно-полиномиальным алгоритмом. На выходе он генерирует значение i' е {0, 1}. Если i = i', то эксперимент оценивается как удачный, Priv^^n) = 1, в противном случае PrivA^n) = 0.

Тогда условие неразличимости для ключевого об-фускатора можно сформулировать следующим образом.

Неразличимость (Indistinguishability). Для любых двух эффективных алгоритмов P0 и P1 равной длины, но различной функциональности, и любого вероятностно-полиномиального алгоритма A выполняется

Pr [Priv A,m (n)]< 2 + Ф),

где e(n) - пренебрежимо малая величина (negligible function).

Сделаем небольшие пояснения. Мы изменили постановку задачи таким образом, что после обфуска-ции остается неясным, какой алгоритм выполняет программа. Допустим до обфускации была некоторая программа P. После применения ключевого обфуска-тора мы получили программу P' ^ iM(P, к). При этом если исходная программа P имела множество входных параметров par, т. е. P(par), то программа на выходе P' будет иметь еще обязательным параметром ключ к, т. е. P'(^ par). При различных ключах к на входе мы будем получать различный алгоритм -P'^par). Обозначим как Pk множество всех алгоритмов P'^par) при всех возможных значениях ключа к. Если обфускатор эффективно использует ключ, то

|pk| |k|| = 2к»,

где двойная скобка обозначает побитовую длину.

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

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

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

References

1. Hada S. Zero-knowledge and code obfuscation. Advances in Cryptology. ASIACRYPT '2000. 2000, pp. 443-457.

2. Barak B., Goldreich O., Impagliazzo R. On the (Im)possibility of obfuscating programs. Lecture Notes in Computer Science, Vol. 2139 LNCS, 2001, рр. 1-18.

3. Jonathan K., Yehuda L. Introduction to Modern Cryptography. CRC PRESS, 2007, 512 p.

4. Garg S., Raykova M., Gentry C. Candidate indistinguishability obfuscation and functional encryption for all circuits. Annual IEEE Symposium on Foundations of Computer Science (FOCS 2013), pp. 13-34.

5. Alwen J., Barbosa M., Farshim P. On the Relationship between Functional Encryption, Obfuscation, and Fully Homomorphic Encryption. Cryptography and Coding. Vol. 8308 of the series Lecture Notes in Computer Science, pp. 65-84.

© Стюгин М. А., Овсянников А. А., Кушко Е. А., 2016

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