2024年零知识证明(ZK)研究进展

Sumcheck

整个领域正在转向更多地依赖于 Sumcheck Protocol

Sumcheck是用于验证多项式承诺的协议,常用于零知识证明(ZKP)中,尤其是在可验证计算和扩展性上。它的主要目的是通过对多项式进行分段检查,从而保证某个多项式在给定输入上的正确性,而不需要直接计算出整个多项式的值。通过这种方式,可以在不透露具体计算过程的情况下,验证计算结果是否正确。

  • 多项式分解:通过将多项式分解为多个部分,使得每次验证的复杂度都很低。

    1. 为了说明,假设多项式 P ( x 1 , x 2 ) P(x_1, x_2) P(x1,x2) 只涉及两个变量 x 1 x_1 x1 和 x 2 x_2 x2,例如:

      P ( x 1 , x 2 ) = 3 x 1 2 + 2 x 1 x 2 + x 2 2 P(x_1, x_2) = 3x_1^2 + 2x_1x_2 + x_2^2 P(x1,x2)=3x12+2x1x2+x22

    2. 多项式 P ( x 1 , x 2 ) P(x_1, x_2) P(x1,x2) 可以分解为两个层次的多项式,首先针对 x 1 x_1 x1 进行求和,然后是 x 2 x_2 x2。Sumcheck协议逐步检查每一层。

      1. 第一层: 我们考虑多项式的部分与 x 2 x_2 x2 相关的部分,并计算它们的和:

        P 1 ( x 1 ) = ∑ x 2 ( 3 x 1 2 + 2 x 1 x 2 + x 2 2 ) P_1(x_1) = \sum_{x_2} \left( 3x_1^2 + 2x_1x_2 + x_2^2 \right) P1(x1)=∑x2(3x12+2x1x2+x22)

        然后我们会验证计算的总和是否正确。

      2. 第二层: 接下来,验证如何将这一结果与 x_1 的值结合,确保整个多项式的总和是正确的。

  • 交互式验证:通过证明者和验证者之间的交互,逐步验证计算的每一部分。

  • 零知识:验证者可以确信结果正确,但无法得到多项式的完整信息。

Sumcheck协议的思路是通过递归地分解多项式来逐步验证每一部分的正确性。在这个过程中,最初的"求和"步骤是基于一个重要的结构:多项式的分层结构。++通过对多项式的每一层进行检查,Sumcheck协议能够将原本复杂的多项式求值问题转化为多个较简单的部分计算。这不仅能减少计算量,也能保证每一步的正确性。++


构造 SNARKs 的4种类型

有四种类型的假设被用来构造 SNARKs,或者更普遍地说,有四种类型的假设被用来构造初始化式承诺方案。

  • 基于配对的,有(多项式承诺)KZG及其变体。
  • 基于离散对数的,有Bulletproofs及其变体。
  • 基于哈希的方案,有FRI和许多其它的方案。使用Arc折叠
  • 基于格 (格哈希非常快,比普通哈希快)

承诺的同态性

可以对某个消息 M 进行承诺,可以对某个消息 M′ 进行承诺,然后可以将这些承诺相加,得到对 M+M′ 的承诺。这些被称为线性同态承诺

比如:

  • Pedersen 承诺, 基于多标量乘法(MSM)
  • Ajtai承诺方案, 基于格

FHE + SNARK

FHE的一个限制, 能提供机密性,但不能提供完整性. 我们如何知道服务器计算了我要求它在加密数据上计算的内容?

所以需要在FHE之上运行SNARK, 提供完整性

MPC + SNARK


折叠 / 递归证明

将一个非常大的证明分解成许多小证明,并同时处理所有这些部分


ZKML

知识和机器学习之间存在有趣的联系,基本上是证明模型被正确使用。

我有一些数据,而你有一个模型。我想把我的数据发送给你,希望你在我的数据上运行你的模型,然后把结果返回给我。但在 ZKML 中,你还需要向我提供一个证明,证明你正确地运行了模型,你没有走捷径之类的。所以 ZKML 的意义在于你有一个承诺后的模型,现在我可以保证你根据我发送给你的数据正确地运行了承诺后的模型。

图像溯源证明( C 2 P A C_2PA C2PA)

这是图像溯源。无论你将其追溯到真实的相机,还是生成式 AI 模型.

报纸编辑会删除图像上的签名,即 C2PA 签名,然后他们会模糊、裁剪、调整大小等等,然后附加一个零知识证明,证明编辑后的图像来自一个正确签名的 C2PA 图像,并且唯一的修改是这些允许的转换,如模糊和裁剪、调整大小等。

问题是,这些相机会对图像进行 SHA256 哈希。现在这些图像非常大。比如说,支持 C2PA 的徕卡相机,它是一个 6000 万像素的相机。所以在 SNARK 电路中对 6000 万像素的图像进行 SHA256 哈希,这是不现实的。这真的相当困难。

  • 如何让签名验证在 SNARK 电路中快速运行?论文 VeriTAS: 尝试改进哈希函数, 一个非常适合这个的哈希函数是基于格的哈希函数。
  • 生成式 AI 需要生成 C2PA 图像,可以对图像进行多项式承诺,然后对该承诺进行签名 (在 SNARK 中验证签名,需要对消息进行哈希, 将相当困难)

: 区块链知识系列
: 密码学系列
: 零知识证明系列
: 共识系列
: 公链调研系列
: BTC系列
: 以太坊系列
: EOS系列
: Filecoin系列
: 联盟链系列
: Fabric系列
: 智能合约系列
: Token系列

相关推荐
CryptoPP1 小时前
基于WebSocket的金融数据实时推送系统架构设计对接多国金融数据API
websocket·网络协议·金融·系统架构·区块链
浪子小院2 小时前
区块链技术之分布式数字身份:构建数字世界的信任基石
区块链
秋说5 小时前
【区块链安全 | 第十七篇】类型之引用类型(一)
安全·区块链
网络研究院6 小时前
身份验证:区块链如何让用户掌控一切
去中心化·区块链·身份·隐私·技术·验证·数字
尽-欢7 小时前
以太坊DApp开发脚手架:Scaffold-ETH 2 详细介绍与搭建教程
react.js·typescript·web3·区块链
区块链蓝海8 小时前
Cooker.club:AI虚拟偶像与Web3的奇妙碰撞
人工智能·区块链
YSGZJJ11 小时前
股指期货的行情在哪看?怎么看行情表?
区块链
gdjwr6546512 小时前
Macro 巨汇黄金外汇投资全解析:策略与操作步骤?
金融·区块链
倒霉男孩15 小时前
去中心化稳定币机制解析与产品策略建议
去中心化·区块链
秋说15 小时前
【区块链安全 | 第二十三篇】单位和全局可用变量(一)
安全·区块链