PCS(Polynomial Commitment Scheme)
中文:多项式承诺方案
PCS 是密码学底层原语,是把理想的 PIOP(多项式交互预言证明)从纸上数学协议,落地成现实密码学协议的关键组件。
- PIOP:是信息论层面的抽象游戏,里面有一个理想化"预言机oracle",可以回答多项式任意点查询;现实世界不存在这个黑盒子。
- PCS = 把这个理想预言机,用椭圆曲线密码真正实现出来。
通俗比喻
想象:
- PIOP说:"我有一个秘密大多项式,给你一个黑盒子,你随便报坐标,盒子返回多项式在该点的取值,不用把完整大多项式发给你。"
- 但是现实没有魔法黑盒子。PCS就制造这个"密码学黑盒子" :
- Commit(承诺) :证明者把完整秘密多项式锁进盒子,对外只输出一段很短的指纹
com(承诺),不泄露多项式任何内容,并且一旦提交指纹,多项式内容就被"锁死",不能偷偷篡改。 - Open(求值打开):当验证者指定一个查询点 (z),证明者输出:该点的取值 (v) + 简短证明 (\pi)。
- VerifyEval(验证求值) :验证者拿着指纹
com、点(z)、值(v)和证明(\pi),校验:"这个v,确实就是当初承诺的多项式在z点上的取值"。
- Commit(承诺) :证明者把完整秘密多项式锁进盒子,对外只输出一段很短的指纹
类比密封信封:把秘密写进信封,封口盖章(Commit得到承诺);不需要把整张信纸给别人;别人想知道某一处的值,你只证明该位置的值正确,不暴露整张信纸内容。
PCS四个标准算法接口
Setup(1^λ, d) → pp:初始化,输入安全参数、多项式最大次数,输出公开参数pp(部分PCS需要可信设置)。Commit(pp, f) → (com, aux):对多项式 (f) 生成简短承诺com;aux是证明者本地保留的辅助数据,不对外发布。Open(pp, com, z, v, aux) → π:证明"承诺的多项式满足 (f(z)=v)",输出简短求值证明 (\pi)。VerifyEval(pp, com, z, v, π) → {0,1}:验证求值证明,输出接受/拒绝。
PCS三大安全性质
- 完备性 Completeness:多项式确实满足 (f(z)=v),诚实证明者生成的证明一定会被接受。
- 绑定性 Binding(知识可靠性) :证明者不能对同一个承诺,在同一个查询点,给出两个不一样的合法取值;一旦承诺,多项式就被锁定,无法事后篡改。
- 隐藏性 Hiding :承诺
com本身不会泄露多项式(f)的任何系数信息。
区分易混概念
| 名词 | 定位 |
|---|---|
| PIOP | 信息论层面的交互证明框架,定义多项式问答逻辑,没有密码学;相当于程序算法伪代码 |
| PCS | 密码学底层原语,实现PIOP需要的预言机查询;相当于把伪代码编译成可执行二进制 |
| Sumcheck/Zerocheck | PIOP内部的子组件(Gadget小工具) |
| zk‑SNARK | 最终对外可用非交互式证明系统,PIOP+PCS+FS组合产物 |