Pull to refresh
27
0
Send message
Как я уже писал ниже из существования универсальной математической обфускации следовало бы существование систем WhiteBox криптографии, возможно было бы построить ассиметричные схемы шифрования на основе симметричных, возможно было бы построить системы полного гомоморфного шифрования и многое другое.

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

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

Далее возникает вопрос о том, чего мы хотим от обфускации в смысле защиты ПО. Пусть есть функция f(x)=x+с_1. Ясно, что как бы мы не обфусцировали её то по любому представлению функции элементарно можно определить с_1.

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

Суть понятия обфускации можно понять в следующем примере. Пусть у нас есть произвольная функция f(x).
Пусть x и значение функции имеют размер в 16 бит. Идеальная обфускация функции — это просто таблица значений f(x) от x. Очевидно, что это не эффективная обфускация, но зато она удовлетворяет определению в терминах черного ящика. Мы не получим из кода обфусцированной функции больше информации чем от доступа к оракулу f(x). Т.е. процесс запуска функции на различных входах и таблица значений дают нам одинаковую информацию с одинаковой асимптотикой. При этом если вид f(x) невозможно эффективно восстановить по парам вход выход, то ничего нельзя будет у знать о f(x) по её коду. Чтобы прочувствовать это
возьмите какую-нибудь нетривиальную функцию типа f(x) = sin(x/100)+x^x+x!, запишите её в виде таблицы значений и попробуйте её восстановить. В этом заключается суть понятия обфускации в терминах определения черного ящика.

Вычислительно неразличимая обфускация это нечто другое. Вот пример из жизни, где она может пригодиться. Пусть мы разрабатываем ПО и хотим сделать демо версию. Можно просто ограничить функциональность на ровне интерфейса — это быстро, но небезопасно. Можно долго выпиливать код из исходноков, это надежно, но долго. А можно применить iO. Возьмем ПО, ограниченое на уровне интерфейса. Тогда iO от такого ПО будет вычислительно неотличимо от реальной демо версии ПО. Следовательно, мы легко и быстро сделали надежную демо версию ПО.
>Обфускация программ — это прорывная
> Нет. Что-то я не вижу статей о супер-обфускаторах, которые никто не может обратить.
> самая горячая сегодня
> Нет. Наверное, это первая статья об обфускацию на хабре за 2015 год.

< Читать надо статьи на английском и не на хабре

> область криптографии
> Нет. В криптрографии не занимаются security through obscurity.

< obscurity это не математическая обфускация.

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

< i+=2 vs i++; i++;

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

Ужаснейший перевод: от слов «криптографию публичного ключа», «обфускация неразличимости» выворачивает наизнанку.

Отсутствует понимание сути как у комментирующих, так и, возможно, у автора.

Начну с того, что Indistinguishability Obfuscation корректнее переводить как вычислительно неразличимая обфускация,
согласно, например, этому определению en.wikipedia.org/wiki/Computational_indistinguishability.

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

В статье [1] доказывается невозможность построения системы универсальной обфускации и вводится более слабое определение вычислительно неразличимой обфускации + доказывается её существование. Поэтому работа [2] есть просто конкретная реализация iO.

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

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

Уточка не отвечает мне на запрос «У меня не получается очистить мандарин», что делать, куда сообщить о баге?

Information

Rating
Does not participate
Registered
Activity