Рейтинг:2

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

флаг br

Я пытался проанализировать классическое доказательство, представленное Барак и др. в котором утверждается, что обфускация черного ящика невозможна (что кажется) для большинства классов программ.

Доказательство представлено таким образом, что говорится, что если существует зашифрованная программа С'(а, б, х) который возвращает б если и только если а = х, и еще одна зашифрованная программа Д'(а, б, е) который возвращает 1 если только если f (а, б, х) = б, тогда D'(а, Ь, С(а, Ь, х)) = 1 с вероятностью 1. Это также будет означать, что злоумышленник сможет отличить С'(а, б, х) из другой функции Z() который возвращает 0 во всех точках, как D'(а, б, Z()) = 1 с вероятностью меньше 1.

Доказательство на самом деле не имеет для меня смысла, поскольку предполагается, что злоумышленник не может проверить каждое значение а и б казалось бы, нет никакого способа заключить, что есть какая-либо разница между С'(а, б, х) и Z(). Однако запутывание черного ящика было бы верным, если бы единственным способом различить две программы было тестирование каждого отдельного ввода и проверка вывода.

Есть ли кто-нибудь, кто мог бы помочь мне объяснить, почему это доказательство действительно убедительно, чтобы сказать, что Обфускация черного ящика (по большей части) невозможна?

kodlu avatar
флаг sa
пожалуйста, дайте ссылку на документ, если он доступен в Интернете
James avatar
флаг br
@kodlu Теперь я включил ссылку на упомянутое доказательство (документ описывает его гораздо более математически, чем я, но, поскольку это довольно известное доказательство, я приобрел упрощенную форму, чтобы представить ее здесь).
Рейтинг:3
флаг us

В документе определены два класса функций:

\начать{выравнивать*} C_{\alpha,\beta}(x) &= \begin{cases} \beta & \mbox{ if } x=\alpha \ 0^k & \mbox{иначе} \end{cases} \ D_{\alpha,\beta}(F) &= \begin{case} 1 & \mbox{if } F(\alpha)=\beta \ 0 & \mbox{otherwsie} \end{case} \конец{выравнивание*}

Дело в том, что если вам дан любой контур $С^*$ (даже запутанный), вычисляющий ту же функцию, что и $ C _ {\ альфа, \ бета} $ тогда $ D _ {\ альфа, \ бета} (С ^ *) = 1 $.

С другой стороны, если у вас есть доступ только к черному ящику $ C _ {\ альфа, \ бета} $, и $\альфа,\бета$ выбираются единообразно, то будет трудно придумать ввод, который вызовет $ D _ {\ альфа, \ бета} $ вывести 1.

Интуитивно, имея доступ к обфускации $C_{а,б}$ дает вам строго больше возможностей, чем доступ к черному ящику $C_{а,б}$.

Доказательство на самом деле не имеет для меня смысла, поскольку предполагается, что злоумышленник не может проверить каждое значение $\альфа$ и $\бета$ казалось бы, нет никакого способа заключить, что есть какая-либо разница между $ C _ {\ альфа, \ бета} $ и $Z$ (функция, которая выводит ноль на всех входах).

Злоумышленник не различает обфускации $ C _ {\ альфа, \ бета} $ от запутывания $Z$ пробуя каждый ввод. Злоумышленник различает, передавая обфускацию в качестве входных данных $ D _ {\ альфа, \ бета} $. $ D _ {\ альфа, \ бета} $ имеет «правильный» $\альфа,\бета$ встроенный в него -- он знает, где искать, поэтому может легко отличить $ C _ {\ альфа, \ бета} $ от $Z$.

James avatar
флаг br
Но откуда хакеру знать, что `a` и `b` запечены в обеих запутанных функциях (и, следовательно, `D'(C')` всегда будет возвращать `1`), если только это не окажется `a` был запечен, чтобы быть равным `x`? За исключением этого случая, `C', похоже, по-прежнему будет выглядеть так же, как `Z`? Также не будет ли это доказательство просто предполагать, что Обфускация черного ящика невозможна в очень конкретном сценарии, когда хакер находит, например, две функции, которые имеют точные запеченные переменные?
флаг us
Когда мы определяем безопасность для шифрования, мы говорим (например), что зашифрованные тексты выглядят неотличимыми от случайных, даже если противник выбирает открытый текст. Когда мы определяем безопасность VBB для запутывания, мы говорим, что запутанная программа пропускает не больше, чем черный ящик доступа к функции, даже если противник получил возможность выбрать функцию. Кроме того, позже в работе Barak et al. доказательство того, что они объединяют C и D в одну программу, что гарантирует, что C и D оба имеют в виду одни и те же $\alpha$ и $\beta$.
James avatar
флаг br
Даже если противник выбрал «a» и «b» как для «C», так и для «D», если мы вернём их как «Z», так и «C» позже, они не смогут подскажите какой какой? Это если они еще и не запекли `x`. Однако если они запекли каждую переменную, то доказательство кажется немного избыточным, поскольку тогда они просто преднамеренно создают функцию `C`, которая всегда возвращает `1`, и функцию `Z`, которая всегда возвращает `0`. Если `x` не запечен, тогда злоумышленник должен проверить каждый `x` на обоих `C'` и `Z'`, пока они не дадут разные результаты?
Manish Adhikari avatar
флаг us
Если вам нужен более интуитивный ответ, предполагающий очевидную утечку информации, обратите внимание на то, что программа $C^*_{\alpha,\beta} (.)$ вычисляет ту же функцию, что и $C_{\alpha,\beta} ( .)$ с $\alpha$ и $\beta$, выбранными случайным образом из большого пространства. Теперь немного измените $D_{\alpha,\beta} (F)$ так, чтобы он возвращал $\beta$, если $F(\alpha)=\beta$, и $0^k$ в противном случае. Получив доступ к $D$, сможете ли вы извлечь $\beta$ из черного ящика с $C$. А как насчет $C^*$?
James avatar
флаг br
Вероятно, мне придется извиниться, поскольку я все еще мог что-то упустить. Я бы сказал, хотя @ManishAdhikari, что я полагаю, что вы извлечете столько же информации о $\beta$ из черного ящика, работающего с $C$, сколько из $C*$, если только вы уже не знали, в чем запекается $\alpha$ , или вы можете запекать в $\alpha$, $\beta$ и $x$ так, что $C_{\alpha,\beta}(x)$ всегда будет возвращать $\beta$ и никогда не будет возвращать $0^k$ . Во всех остальных случаях вам придется проверять каждый $x$, пока вы не найдете значение, возвращаемое функцией $\beta$?
Manish Adhikari avatar
флаг us
Да, кажется, вы все еще упускаете суть. Я сказал, что $D$ доступен для вас. С помощью $C^*$, независимо от того, насколько обфусцированы $\alpha$ и $\beta$ в программе, вы можете извлечь $\beta$, просто передав их $D$. Но черный ящик, работающий под управлением $C$, нельзя ничему передать, и вы вынуждены только вводить в него данные и видеть результат. Извлечение $\beta$ в этом случае потребует перебора $x$, как вы правильно сказали.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.