ZK数学详解:同态

  • Cyfrin
  • 发布于 12小时前
  • 阅读 76

本文介绍了同态的概念,即在代数结构之间保持结构的映射,允许在转换后的数据上进行操作,同时维护与原始数据的关系。同态对于零知识证明至关重要,因为它允许在不泄露原始值的情况下对加密或承诺的数据执行计算。文章还提供了群同态和环同态的例子,并解释了同态在零知识证明中的应用,如PLONK中使用的同态承诺方案。

ZK 数学 101:同态

同态是代数结构之间保持结构的映射,它允许对数据进行操作,同时保持原始关系。

同态是两个代数结构之间保持结构的映射,它允许我们对转换后的数据执行操作,同时保持与原始数据的关系。

本文是我们理解零知识 (ZK) 证明的数学先决条件系列的第六篇。理解同态至关重要,因为它允许我们对加密或承诺的数据执行计算,而无需泄露原始值,从而使零知识证明成为可能。

本文将介绍什么是同态,为什么它们对于零知识证明是必要的,并通过一些示例。

同态两个代数结构之间的函数(如环或域),它保留了这些结构的操作。

将同态视为一个“翻译器”,它将元素从一个数学世界转换到另一个数学世界,同时保持所有关系不变。

更正式地说,设 (G,∘) 和 (H,⋆) 是两个群。(回想一下:这种表示法意味着我们定义了一个群,其集合分别为 G 和 H,二元运算符分别为 ∘ 和 ⋆。)一个函数 ϕ:G→H,它将元素从集合 G 映射到集合 H,如果对于所有元素 a,b∈G,则称为群同态

ϕ(a∘b)=ϕ(a)⋆ϕ(b)

这意味着,如果我们首先将群运算 ∘ 应用于 a 和 b,然后使用函数 ϕ 将其映射到集合 H,这等效于分别将 ϕ 应用于元素 a 和 b,然后使用 ⋆ 对结果进行运算。

同态 ϕ 保留了群运算。

为什么这很重要? 它允许我们对转换后的数据执行操作,同时保持来自原始数据的关系。这正是零知识证明所需要的!

同态的关键属性

当函数 ϕ:G→H 是群同态时,会自动得出几个重要的属性:

  1. 恒等式保留:ϕ(IG)=IH(恒等元素被保留)

  2. 逆元保留:ϕ(a−1)=[ϕ(a)]−1 对于所有 a∈G

  3. 幂保留:ϕ(an)=[ϕ(a)]n 对于所有 a∈G 和 n∈Z

注意:对于加法群,这变为 ϕ(na)=n[ϕ(a)]

这些属性的保留表明,代数结构本身在转换下得到了完全保留!

同态的例子

让我们看一些例子来说明不同类型的同态,并真正理解我们所说的“同态”是什么意思:

示例 1:群同态

让我们以指数函数 exp 为例。这个函数是从实数在加法下的集合 (R,+) 到正实数在乘法下的集合 (R+,⋅) 的同态。

或者用数学方式表示:

exp:(R,+)→(R+,⋅)

其中 \exp 定义为 \exp(x) = e^x,并且是一个群同态,因为对于所有 x, y \in \mathbb{R}:

exp⁡(x+y)=ex+y=ex⋅ey=exp⁡(x)⋅exp⁡(y)

这表明实数中的加法与正实数中的乘法完全对应。自己测试一下:取任意两个实数,将它们相加,然后取指数,结果将等于取指数然后将结果相乘。

exp⁡(−3+5)=e−3+5=e−3⋅e5=exp⁡(−3)⋅exp⁡(5)

示例 2:环同态

考虑函数 f:按 n 进行约简。它将元素从整数集合 Z 映射到整数模 n 的集合 Z/nZ,整数集合 Z 在加法和乘法下形成一个环。

在数学上,我们说:

f:Z→Z/nZ

其中 f 定义为 f(a)=amodn

这是一个环同态,因为它保留了两种运算:

  • 加法:f(a+b)=(a+b)modn=[(amodn)+(bmodn)]modn=f(a)+f(b)
  • 乘法:f(a⋅b)=(a⋅b)modn=[(amodn)⋅(bmodn)]modn=f(a)⋅f(b)

这会将整数 a 和 b 映射到它们模 n 的等价类。

注意: 我们称它为环同态,因为 Z 是一个环(而不是一个域),因为大多数整数没有乘法逆元。

零知识证明中的同态

在零知识证明系统中,同态使你能够在不泄露秘密信息的情况下证明对秘密信息的了解

PLONK 使用同态承诺方案,其中:

  • 你可以使用承诺函数 C(x,r) “承诺”秘密值 x 和 r,其中此函数的输出被称为 x 和 r 的承诺。
  • 你可以对承诺执行操作:C(x1,r1)+C(x2,r2)=C(x1+x2,r1+r2)
  • 承诺隐藏了原始值,但保留了关系!
  • 我们将在以后的文章中介绍承诺以及它们的工作原理,但现在,你只需要知道它们是一种特殊类型的函数,并且它们具有:
    • “绑定”属性:一旦应用于输入,承诺就无法撤销以显示输入,并且你无法找到两个产生相同承诺的不同输入。
    • “隐藏”属性:输出也不会泄露有关输入的任何信息,也无法撤销以恢复它们。

同态结构是实现 ZK 证明的 “魔法” 的关键。

可以通过同态(即这些承诺函数)将 私有输入 转换为 公共“承诺”。然后,私有值之间的关系 变为 公共值之间的关系,这允许通过对这些公共值进行简单的代数检查来验证 复杂的计算

在 PLONK 中,我们不仅仅承诺单个数字,而是承诺 多项式。这些多项式编码了来自我们原始问题的复杂计算和约束,例如,我知道满足约束 2x+y=0 和 y>0 的输入 x 和 y。

并且多项式运算自然也是同态的

  • 多项式加法:(f+g)(x)=f(x)+g(x)
  • 标量乘法:(a⋅f)(x)=a⋅f(x)
  • 在点 x 处评估多项式:evalx(f+g)=evalx(f)+evalx(g)

这意味着当我们承诺多项式时,我们可以对承诺本身执行多项式算术,这直接对应于多项式编码的基础数据,从而实现复杂的证明系统,同时保持零知识。

多项式是我们将在以后的文章中重新讨论的主题,所以如果你感到困惑,请不要担心。这只是一个预告,说明一切将如何联系在一起。

总结

同态让你能够将问题从秘密世界 “转移” 到公共世界。它们通过在保持私有值秘密的同时保留需要证明的数学关系来实现这一点。

在我们的下一篇文章中,我们将探讨椭圆曲线:它们是什么以及使它们在密码学中非常有用的属性。有限域上椭圆曲线的同态属性(别担心,我们将在下一篇文章中解释这意味着什么)使它们在密码学签名和零知识证明中非常有用!

参考文献

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

0 条评论

请先 登录 后评论
Cyfrin
Cyfrin
Securing the blockchain and its users. Industry-leading smart contract audits, tools, and education.