本文介绍了不可区分混淆(iO)的概念、原理以及它在密码学中的潜在应用。iO 能够对程序进行混淆,使得即使程序的内部逻辑不同,也无法区分混淆后的程序。此外,iO还可以用于替代零知识证明(ZK)和全同态加密(FHE)等技术,尽管目前 iO 的实际应用还面临挑战。
我已经写了关于零知识技术及其用途的文章很长时间了。这是一项超级有趣的技术,但现在出现了一个新的、更大胆的技术:不可区分性混淆 (iO)。
让我简要介绍一下它是什么以及如何使用它——而不深入研究其背后的繁重研究。
想象一下你有一个程序。出于隐私原因,你不希望任何人能够读取或分析程序的逻辑,但他们仍然应该能够使用它。该程序对于其用户来说应该真正保持为一个黑盒子。
一种使分析更困难的方法是混淆程序代码。混淆保持功能不变,但使代码更难为人类理解。
存在各种(幼稚的)混淆程序代码的方法。
对于未编译的语言(如 JavaScript),可以混淆代码使其看起来像垃圾。它看起来像垃圾,但功能与之前相同。
混淆 JavaScript
对于在执行之前编译为另一种格式(通常是二进制格式)的语言,混淆会相当自动地发生:分析编译后的版本比其源代码要困难得多。但这仅仅是一种副产品,而不是出于隐私原因而进行的。
但是,可以为编译后的语言添加另一层显式混淆。可以在编译之前或之后添加混淆。甚至可以两者都进行。
混淆有助于保护你的业务逻辑的私密性。当逻辑是维持你公司生存的东西时,这才有意义,但通常不值得。
任何有意义的代码混淆都会影响性能:每增加一层额外的扰乱都会使代码运行速度变慢。此外,它使程序变得更大且更难分发。
除非你对保密有真正的业务需求,否则通常最好保持代码原样。
因此,你的代码中包含重要的业务逻辑,并决定对其进行混淆。现在安全了吗?
不。
你可以通过许多不同的方式进行混淆,但最终这只是混淆——它不是密码学安全的。如果有一个拥有足够时间和资源的对手,他们可以挖掘出你超级秘密的逻辑。
但是我们能使它安全吗?
假设你有两个程序 A
和 B
,它们对于相同的输入始终给出相同的输出。它们的内部逻辑可能不同。一个例子可能是对元素数组进行排序:有许多方法可以执行此操作。
如果我们对两者都应用混淆逻辑 O
,它们将变为 O(A)
和 O(B)
。如果无法分辨哪个是哪个:O(A)
利用逻辑 A
还是 B
,则称混淆是不可区分的。
此属性还意味着无法撤消混淆:所有秘密都将保持秘密。
但是,有一个小的故障:这种混淆是不可能的。理论上可以做到,但实际上更棘手。
因此,当前的学术挑战是找出不可区分性混淆 (iO) 的实际实现。在这方面,工作正在进行中。
即使 iO 成为现实,听起来也很无聊。有人可以隐藏他们的业务逻辑,仅此而已,对吧?
如果我告诉你 iO 可以用于许多现代密码学呢?它甚至可以用来替代许多现有的协议?
零知识技术 (ZK) 允许人们证明某些数据的存在,而无需泄露数据本身。会为数据生成一个证明,并且任何拥有特殊验证器程序的人都可以验证此证明。
使用 iO 可以获得类似的结果:要证明的数据(例如,密码)可以放置在程序内部。验证器输入相同的数据,并且程序输出 true 或 false,具体取决于输入是否与存储的数据匹配。但是硬编码的数据在程序内部保持混淆状态。
如果你想在不知道实际数据的情况下验证某些内容(例如,大整数的分解),则 iO 程序可以提供对数据的承诺和对质询的响应——就像交互式协议中的 ZK 证明者一样。
全同态加密 (FHE) 允许对加密数据执行计算。
使用 FHE,拥有私有数据的人可以对其进行加密,将加密版本发送给其他人进行计算并返回新的(仍然加密的)值。然后,原始方可以解密接收到的数据并查看计算结果。
正如预期的那样,这可以通过 iO 来完成。该程序应包括加密密钥和解密密钥。该程序执行以下操作:
由于无法撤消混淆,因此密钥在程序内部保持私密,并且程序可以执行与 FHE 类似的操作。
但是,真正的 FHE 更加通用:它不需要针对每种不同的计算使用特殊的程序。使用起来容易得多。
毫不奇怪,iO 并不是万能的。
使用 iO 执行的许多操作都非常低效且笨拙。通常需要针对每个用例使用特殊的程序,并且通用性很低。
但主要的一点是,iO 可以用来代替许多其他的密码学手段。一旦实际的 iO 成为现实,使用 iO 复制一些现有的密码学技术可能是有意义的——仅仅因为它非常通用。
使用 iO 就像使用瑞士军刀满足你的所有厨房需求一样。即使它实际上对任何这些需求都不高效,也可以使用它。但在获得更有效的工具之前,这可能仍然是有意义的。
正如已经提到的,没有实际的 iO。然而。
这可能只是时间问题。第一个实现将非常低效。它们会变得更好。
这又是一个你可以迷失其中的兔子洞。如果你有兴趣,我们创建了一个 Telegram 群组,供对 iO 感兴趣的人们加入。它的不那么 iO 的混淆链接是 0ADMzMk1lkmZMIyY+/em.t//:sptth.
0ADMzMk1lkmZMIyY+/em.t//:sptth is https://t.me/+Yy2IMZklMzA0DMzA
感谢 Killari 和 Filip Laurentiu 审阅本文并讨论 iO 的可能性。
我是一名 ZK 和 EVM 自由职业者。我主要从事开发和写关于 零知识主题和生态系统 的文章。想聊聊吗?联系我!
- 原文链接: medium.com/@laurippelton...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!