- Zero Knowledge: 即0知识,不暴漏要证明的原始信息
- Succinct:证据信息比较短,方便验证
- Non-interactive:无交互的,prover只需要提供一个字符串即可。这点对于区块链应用非常重要,意味着可以把消息放在链上公开验证
- Arguments:证明过程的是计算完好的,即 prover 没发在合理的时间内伪造一个 proof 信息。跟计算完好对应的是理论完好,密码学上一般要求计算完好即可
- Of knowledge:保证证明者在不知晓密文的情况下构建出一个有效的零知识 proof 是不可能的
$P(x) = \sum_{i=0}^{d} a_i \cdot X^i$
同态加法
同态加法满足一下3个性质
- 对于大部分的 x,在给给定 E(x) 的情况下很难求解出 x
- 不同输入会得到不同的输出,if x ≠ y, then E(x) ≠ E(y)
- 如果某人知道 E(x) and E(y),则他可以计算出 E(x+y)
如果 A 有两个数字 x、y,他需要向 B 证明数字之和是 z,那么需要一下步骤:
- A 计算出 E(x), E(y) 并发送给 B
- B 通过A 发来的 E(x) E(y) 计算出 E(x+y)
- B 计算出 E(z) and assert E(z) == E(x+y)
椭圆曲线运算
基于椭圆曲线的算法 RSA、ECC 都支持同态加法运算,具体原理参考这个讲解:
https://www.bilibili.com/video/BV1BY411M74G
同态加法拓展到多项式