Sumcheck
整个领域正在转向更多地依赖于 Sumcheck Protocol
Sumcheck是用于验证多项式承诺的协议,常用于零知识证明(ZKP)中,尤其是在可验证计算和扩展性上。它的主要目的是通过对多项式进行分段检查,从而保证某个多项式在给定输入上的正确性,而不需要直接计算出整个多项式的值。通过这种方式,可以在不透露具体计算过程的情况下,验证计算结果是否正确。
-
多项式分解:通过将多项式分解为多个部分,使得每次验证的复杂度都很低。
-
为了说明,假设多项式 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
-
多项式 P ( x 1 , x 2 ) P(x_1, x_2) P(x1,x2) 可以分解为两个层次的多项式,首先针对 x 1 x_1 x1 进行求和,然后是 x 2 x_2 x2。Sumcheck协议逐步检查每一层。
-
第一层: 我们考虑多项式的部分与 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)
然后我们会验证计算的总和是否正确。
-
第二层: 接下来,验证如何将这一结果与 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系列