Обфускации программ

Обфускации программ

429
ПОДЕЛИТЬСЯ

Наиболее того, оказывается, что обфускация-это основополагающие, образующие суть, которая генерирует практически все, что мы имеем в криптографии сейчас. Давайте разбираться совместно, что это такое. За крайние два года написано наиболее 70 статей на эту тему , она вызывает горячие дискуссии, делает истинные гонки меж исследовательскими группами, открывает почву для научных исследований. Обфускация программного обеспечения-это прорыв, это самые горячие сейчас, в области криптографии.
Давайте обратим внимание на иной пример, это принципиальные обновления (патчи), исправляющие ошибки в операционных системах. Предоставляя юзерам доступ к файлам установки программ, компаний безизбежно раскроет свои проф секреты и заслуги, и ничто не останавливает slabonervnyh соперников от бесстыжего копирования и воровства чужих алгоритмов. Практически одномоментно последующем обновлении анализируется хакеры, они выявляют трудности, которые избавляет это обновление, и нападать на несчастных, которые не успели обновить, юзеров.
Этот метод именуется «скрыть» либо «обфускации». Эти две ситуации связывает одна базовая неувязка, а конкретно: писал человек, программа может быть тем же самым человеком и осознавал, анализируется, разбирается. Что раз там будет метод, который может кардинально, необратимо изменяют программы при сохранении ее функциональности? Так, что программа будет совсем нереально осознать, но она будет работать не ужаснее оригинала?
Застройщики на данный момент, нет не плохих обфускаторов, и те обфускаторов, которые обширно употребляются сейчас, чрезвычайно примитивные — они могут переставить инструкциям, чтоб заменить имена переменных, вставить кусочек кода, который на самом деле не имеют никакого эффекта и делать похожие вещи, которые можно в общем охарактеризовать как «сохранность через неясность». Но такие обфускации с незначительно усердия просто deobfuscate, но ведь это не преграда для не плохих взломщиков.
Но что конкретно мы желаем от обфускации? «Неспособность осознать», что она издает звуки чрезвычайно расплывчато…

К огорчению, в той же статье было показано, что таковая обфускация нереально выстроить для всех программ. А конкретно, существует полностью определенный класс программ, который нельзя скрыть: это программа, которая на собственный свой вход возврат какой-то секрет[1], Аксиома 3.4. В 2001 году[1] году было в первый раз предложено формальное определение: итоговая программа, выданной обфускатор не должны отдать больше инфы, чем просто «темный ящик», который имитирует входное/выходное поведение начальной программы. С тех пор эта линия исследований утих, люди находятся в депрессии и обфускации программ для 12 лет числилось неосуществимым. То есть не обязано быть никакой различия меж обфускации программного кода и, к примеру, интернет-сервис, который просто возвращает итог програмке на вход. Этот метод именуется «Обфускация темного ящика» («темный ящик «Обфускации»).

На 1-ый взор, не понятно, как таковой неплохой обфускатор. (Обфускатор o является вероятностный метод). Этот новейший вид обфускации именуется «Неразличимость Обфускации» («Неразличимость Обфускации» — «ио»), формально: раз есть две различные программы, но с точно теми же функциями, запутывания этих 2-ух программ неотличимы друг от друга. В 2013[2] году в данной области был прорыв, теоретики были вытащены на свет другое определение текущей и предлагаемой конструкции для него. Так что Вы не можете огласить, что обфускация что уникальная программа относится, либо o(Р1) является обфускация Р1, Р2, ли это обфускация. То есть, раз у меня есть программы Р1, Р2, такие, что для хоть какого входного сигнала х, Р1(х) = Р2(х), и o-это неразличимость обфускатор, который воспринимает в качестве входных данных программы P и выдает новейшую програмку О(Р), его будет нереально отличить О'(Р1) и o(П2). Ответ на этот вопросец, который дискуссируется в последующих 2-ух пт, пожал общества криптографов.
В 2007 году[3] год была изучена в «наилучших» обфускатор. И скоро не нужно будет изощряться в запутанности инструкций и переименования переменных. Таковым образом дизайн-наилучший кандидат обфускатор в мире уже у нас в кармашке! И было подтверждено, что Неразличимость Обфускатора является «наилучшей» обфускатор. Было предложено позвонить обфускатор «наилучший», раз обфусцированный программа докладывает не больше инфы, чем любые остальные программы с той же функциональностью.
Но история на этом не заканчивается, к изумлению криптографов по всему миру, оказалось, что Неразличимость Обфускатор совместно с односторонней функции односторонней функции) совместно дают:

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

Естественно, требуется еще много работы, до этого чем обфускатор будет доступна для широкого использования, но базы уже сделаны. В самом деле, Неразличимость Обфускатора является примитивом, который образует практически весь криптографии, которые вы сможете применять, чтоб выстроить практически все, что мы имеем в криптографии сейчас.
«на наилучшее-может быть обфускации.» ТКЦ 2007. Гарг, С. Ссылки
[1] Б. Халеви, М. habrahabr.ru Янг, «на (им) возможность скрытия программы.» КРИПТО 2001. Рудич, А. Сахаи, С. Vadhan и К. водами «кандидат неразличимость обфускации и шифрования для всех многофункциональных цепей.» МУЛЬТИПЛЕКСОРОВ 2013. Сахаи, и Б. Барак, О. р. Goldreich, р. Гольдвассера и юноша Н. Панов, С. (Формат PDF)
[3] С. Impagliazzo, С. Райкова, А. [2] С.