Software-Obfuscation

巴拉克等人。證明黑盒混淆是不可能的

  • March 20, 2022

我一直在嘗試分析Barak 等人提出的經典證明。聲稱對於大多數類別的程序(似乎是)不可能進行黑盒混淆。

證明以這樣一種方式呈現,即如果存在一個加密程序C'(a, b, x),它返回b當且僅當a = x,另一個加密程序D'(a, b, f)返回1,如果僅當f(a, b, x) = b,那麼D'(a, b, C(a, b, x)) = 1機率為1。這也意味著攻擊者將能夠區分在所有點都返回的C'(a, b, x)另一個函式,因為機率小於.Z()``0``D'(a, b, Z()) = 1``1

不過,這個證明對我來說並沒有什麼意義,因為假設攻擊者無法測試 的每一個值,a並且b似乎無法得出結論C'(a, b, x)和之間有任何區別Z()。但是,如果區分兩個程序的唯一方法是測試每個輸入並檢查輸出,那麼黑盒混淆將是正確的。

有沒有人可以幫助向我解釋這個證明是如何真正確鑿地說黑盒混淆(在大多數情況下)是不可能的?

論文定義了兩個函式類:

$$ \begin{align*} C_{\alpha,\beta}(x) &= \begin{cases} \beta & \mbox{ if } x=\alpha \ 0^k & \mbox{ otherwise} \end{cases} \ D_{\alpha,\beta}(F) &= \begin{cases} 1 & \mbox{ if } F(\alpha)=\beta \ 0 & \mbox{ otherwsie} \end{cases} \end{align*} $$

關鍵是,如果給你任何電路 $ C^* $ (即使是混淆的)計算相同的功能 $ C_{\alpha,\beta} $ 然後 $ D_{\alpha,\beta}(C^*)=1 $ .

另一方面,如果您只有黑盒訪問權限 $ C_{\alpha,\beta} $ , 和 $ \alpha,\beta $ 被統一選擇,那麼很難想出一個導致 $ D_{\alpha,\beta} $ 輸出 1。

直覺地說,可以訪問混淆 $ C_{a,b} $ 比擁有黑盒訪問權限更嚴格 $ C_{a,b} $ .

不過,這個證明對我來說並沒有什麼意義,因為假設攻擊者無法測試 $ \alpha $ 和 $ \beta $ 似乎沒有辦法斷定兩者之間有任何區別 $ C_{\alpha,\beta} $ 和 $ Z $ (在所有輸入上輸出零的函式)。

攻擊者不區分混淆 $ C_{\alpha,\beta} $ 從混淆 $ Z $ 通過嘗試每個輸入。攻擊者通過將混淆作為輸入來區分 $ D_{\alpha,\beta} $ . $ D_{\alpha,\beta} $ 有“正確” $ \alpha,\beta $ 融入其中——它知道在哪裡看,因此很容易區分 $ C_{\alpha,\beta} $ 從 $ Z $ .

引用自:https://crypto.stackexchange.com/questions/99192