密码学系列 - 零知识证明(ZKP) - NTT与MSM的总结
区别
| 特性 | 多项式乘法 (NTT) | 椭圆曲线点乘 (MSM) |
|---|---|---|
| 定义 | 两个多项式的系数逐项乘积并合并结果。 | 标量和椭圆曲线点的点乘。 |
| 数学背景 | 代数运算(有限域/环上的多项式)。 | 椭圆曲线上的群运算。 |
| 操作对象 | 多项式的系数。 | 椭圆曲线上的点和整数标量。 |
| 结果类型 | 多项式(一个更高次的多项式)。 | 椭圆曲线上的点。 |
| 复杂度 | 使用 NTT 优化到 O(nlogn)O(n \log n)O(nlogn)。 | 使用双倍和加法优化到 O(logk)O(\log k)O(logk)。 |
| 主要用途 | 多项式承诺、FFT 运算、约束检查等。 | 密钥生成、签名、验证、证明生成。 |
| 加速方法 | NTT、FFT、并行化等。 | Pippenger 算法、分块优化等。 |
联系
尽管它们在数学定义上不同,但在许多密码学和零知识证明系统中,它们常常相辅相成:
- 多项式承诺和 KZG(Kate-Zaverucha-Goldberg)方案:
- 多项式承诺用于证明一个多项式在某一点的值是正确的。
- KZG 承诺需要将多项式的系数映射到椭圆曲线上的点,这种映射本质上是 MSM(多标量乘法)的应用。
- 生成证明:
- 零知识证明需要将电路表达为一个多项式约束系统。
- 约束系统中的多项式运算需要通过多项式乘法(优化为 NTT)来处理,而验证者需要依赖 MSM 来验证多项式承诺和点对验证。
- 两者协同加速:
- 电路约束阶段
- 多项式运算的优化(例如 NTT 加速)可以减少整个电路的中间步骤。
- 证明生成与验证阶段
- 椭圆曲线点乘(MSM)的优化(如 Pippenger 算法)可以加速证明的最终生成和验证。
- 电路约束阶段
- 往期精彩回顾:
- 区块链知识系列
- 密码学系列
- 零知识证明系列
- 共识系列
- 公链调研系列
- BTC系列
- 以太坊系列
- EOS系列
- Filecoin系列
- 联盟链系列
- Fabric系列
- 智能合约系列
- Token系列
