私有委托计算已至,且必有漏洞!- ZKSECURITY

本文介绍了零知识密码学这一新兴领域,阐述了其与可信计算和机密计算的关系,并探讨了零知识证明(ZKP)在私有委托计算中的应用,以及ZKP技术可能带来的安全挑战。最后,文章宣布成立专注于零知识证明技术的安全咨询公司zksecurity.xyz。

什么是这个被称为零知识密码学的新兴且令人兴奋的密码学领域?它与可信和机密计算有什么关系?为什么我们需要因此重新思考安全性? 这就是你将在本文中学到的内容。 但首先,我们是谁? 我们是三位联合创始人:David,前 Facebook Libra/Diem 安全主管,以及《Real-World Cryptography》一书的作者;Brandon,Mina blockchain 的创始工程师,前 Pinterest/Facebook 员工; 以及 Gregor,零知识框架 SnarkyJS 的技术负责人,同时也是大型 zk 竞赛 ZPrize 的获胜者之一。

一切的开始

让我们从一些不起眼的开始说起。 那时,人们主要想互相加密。 这是 Alice 加密给 Bob,然后 Bob 加密给 Alice。 事后看来,这非常简单。

事情发展Swift,我们最终遇到了 Alice 和 Bob 以前从未见过的新情况。 为了保持这种比喻,Alice 现在在监狱里,要么不能信任她的东西,要么需要外面的人的帮助。

为了理解这一点,我们可以看看近年来发明的众多设备和协议。 你可能听说过可信计算机密计算。 如果你听说过,那就忘记所有这些关键词吧,因为它们都是不必要的困惑。 如果你没有听说过,那么你很幸运,因为你将要学习一些很酷的术语。

私有计算

在技术的某个历史时刻,一些公司意识到他们不能信任普通人(比如 Alice)来保管他们的秘密。 他们会丢失信用卡,放错手机,或者更糟的是,他们会尝试入侵他们的电视盒来免费观看《老友记》。 必须采取措施来处理“不受信任”环境中的秘密。 两种密码学分支应运而生:硬件密码学和白盒密码学。

硬件密码学包括称为“安全元件”的小芯片。 它们看起来像(警告:不必要的流行语):

  • 你银行卡和 SIM 卡中的智能卡。
  • 我们现代笔记本电脑中的“可信平台模块”(TPM)和我们现代智能手机中的“安全飞地”。
  • 大公司和银行数据中心中的“硬件安全模块”(HSM),或企业服务器中的“可信执行环境”(TEE)。

这些硬件解决方案都有一个主要目标:防止具有物理访问权限的人观察他们控制的秘密。

另一方面,白盒密码学是一种纯粹的软件解决方案,但惨遭失败。 这个想法是将软件和密钥混合在一起,以至于没有人可以查看代码并提取秘密。 没有人能找到提供安全结构的方法,安全公司销售和购买的产品主要基于非密码学概念,如混淆和通过模糊性实现的安全性。

我称之为私有计算,但今天的人们喜欢称这种技术为“可信计算”或“机密计算”。 虽然这些都是废话,但重点是你不想让秘密泄露出去,并且你在你的设备受到攻击时添加了一个额外的安全层。

从纯粹的密码学角度来看,今天的私有计算大多是无聊的,因为大多数解决方案都涉及硬件,并以我们所说的“足够好”为目标。 在他们的说法中,他们会说“攻击者需要花费 X 数量的钱”,而不是我们过去在密码学中使用的“攻击需要花费数十亿年”。

委托计算

现在我们进入本文中我们感兴趣的领域。 委托计算是指 Alice 想要计算某些东西,但她没有资源这样做。 她需要请求其他人为她做这件事,她需要“外包”计算。

委托计算在密码学中也分为两个分支,一个提供硬件解决方案,另一个提供强大的密码学算法。

硬件解决方案仍然被称为“可信计算”或“机密计算”,因为在某个时刻,我们意识到我们可以重复使用为私有计算设计的硬件,以便也提供委托计算。

最著名的硬件解决方案是 Intel SGX,它在计算结果上提供“远程证明”。 基本上,是对在硬件上运行的软件散列、使用的输入和计算输出的签名的签名。 该签名是使用在制造过程中集成到芯片中的由英特尔认可的唯一密钥创建的。

另一方面,新兴的软件解决方案是通用零知识证明 (ZKP)。 虽然在这种情况下,我们不太关心“零知识”部分(稍后会介绍)。

通用 ZKP 是一种密码学原语,允许你创建程序执行的证明。 这些证明是可以共享的声明,类似于签名。 如果签名是“控制该公钥的人签署了此数据”的声明,那么 ZKP 则是“如果你使用这些输入运行此程序,你将获得这些输出”的声明。

人们早就知道你可以做到这一点,但直到最近几年,这些协议才变得实用。 如此实用,以至于整个加密货币(似乎是该技术的首批用户)都运行在这种东西上,设法依靠证明来避免所有用户重新计算状态转换的完整历史记录(通常是自创世以来发生的所有交易,或者自创世以来发生的所有“智能合约”执行)。

你可能听说过 ZcashMinaAleo 以及以太坊项目,如 PolygonStarkWareAztecMatterLabs。 这些都是使用 ZKP 作为其核心来创建程序执行证明的项目。

私有委托计算

最后,我们来到我想创造的最后一个术语,私有委托计算,即涉及秘密的委托计算。

在这种模型中,不仅有人可以生成证明,声称使用此类输入执行此类程序会给你此类输出,他们还可以“隐藏”一些输入。 在这种模型中,我们区分公共输入和私有输入,其中公共输入是声明的一部分,而私有输入不是。

一个经典的例子是,你可能想证明你知道数独网格的解决方案,而不透露解决方案。 因此,使用你最喜欢的私有委托计算解决方案,你可以创建一个证明或声明,证明你运行了一个已知的数独求解器,并且它返回了 true。 在这种情况下,数独网格是公共输入,而解决方案是私有输入。

零知识证明(这就是零知识部分变得重要的地方)为私有委托计算提供了强大的密码学解决方案。

像 SGX 和 HSM 这样的硬件解决方案也提供这些,但各有优缺点。 优点是密钥据称永远不会离开“飞地”,即使受到攻击者物理观察(有时甚至物理篡改)。 缺点是这些解决方案可能成本高昂、对用户不够友好,并且在实践中发现了许多攻击。

同样,这些解决方案通常被称为“可信计算”和“机密计算”(当它们至少涉及硬件时),这就是为什么我认为这些术语通常没有用处。

零知识密码学,总会有漏洞

我们已经确定,近年来,通用 ZKP 已经解锁了一种纯粹的密码学方法来实现“私有委托计算”。 我们应该注意到,目前可以通过 ZKP 证明的逻辑的复杂性在某种程度上受到限制。 这种限制对于区块链中的许多应用程序来说一直不是问题,但对于更复杂的区块链或非区块链应用程序来说可能是一个问题。 该领域目前正蓬勃发展,每年都有突破,这与不久前发生的 CPU 的兆赫/吉赫兹大战非常相似。

我们在用例方面几乎没有取得任何进展,这些用例在很大程度上仅限于加密货币。 非区块链参与者正在进入市场,其中微软已成为 ZKP 技术的领导者之一(Nova 及相关方案)。 我们可以预期,由于 DelendumRisc0 等项目旨在使 ZKP 更易于所有类型的开发人员访问(允许他们证明所有类型的程序,只要它们可以编译为 RISC-V 指令集),因此未来会有越来越多的非区块链用户。

为 ZKP 编程是一种新的范例,随之而来的是开发人员可以创建的新挑战和错误类型。 我们过去已经看到过这种情况,智能合约的出现,随后由于各种错误损失了数十亿美元。 5 年多前,我们参与发布了去中心化应用程序安全项目(或 DASP)前 10 名,证明了我们一直致力于这些新技术转变的安全性。

因此,今天,我们想宣布 zksecurity.xyz 的成立,这是第一家专注于零知识证明技术的安全咨询公司,也是我们追求跟上技术和漏洞发展方向的下一步。

如果你对 ZK 相关软件的审计感兴趣,请通过 hello@zksecurity.xyz 与我们联系,并在此博客上关注更多关于我们 ZK 安全之旅的故事。

  • 原文链接: blog.zksecurity.xyz/post...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
zksecurity
zksecurity
Security audits, development, and research for ZKP, FHE, and MPC applications, and more generally advanced cryptography.