可信设置的三种形态:每电路仪式、通用字符串与完全免设 图 1
可信设置的三种形态:每电路仪式、通用字符串与完全免设 · 图 1

一句话先说清

零知识证明系统生成证明前大多要先跑一个叫“设置”的程序:输入一串秘密随机数,输出公开的证明密钥和验证密钥。危险恰恰在这串随机数——生成完之后必须彻底销毁,任何私藏者都能凭空伪造“看起来完全合法”的证明,行业把这份没烧干净的秘密叫 toxic waste(有毒废料)。围绕“秘密必须被销毁到什么程度才安心”,业界走出三条路线:每套电路一次仪式、一次生成供所有电路复用的通用字符串、以及只用哈希函数承诺的完全免设。

可信设置的三种形态:每电路仪式、通用字符串与完全免设 图 2
可信设置的三种形态:每电路仪式、通用字符串与完全免设 · 图 2

路线一:每电路仪式(Groth16)

Groth16 是 2016 年 Groth 提出的配对基 SNARK,长期占据“链上验证最便宜”的宝座:证明只有三个群元素,约一百九十字节,验证只要几次配对运算,Zcash、Tornado Cash、Semaphore 等系统都建在它上面。代价是它的设置与具体电路一一对应:电路一改,之前的证明密钥作废,必须再办一次仪式。Zcash 2016 年那次著名的多方计算仪式(公证人排队签到、现场断电销毁内存、镜头直播)就是为了这个场景。风险画像很集中:任何一次参与方串通或密钥未销毁,就能伪造无限多的合法证明——而且这种伪造从密码学上无法追责。

路线二:通用参考字符串(PLONK 家族)

2019 年 Gabizon、Williamson、Ciobotaru 的 PLONK 论文把设置拆成两阶段:第一阶段生成“τ 的各次幂承诺”(Powers of Tau),一次办完,服务所有规模不超上限的电路;第二阶段针对具体电路的定制部分,可由公开可验证的方式补齐。结果是整个生态共用一份 SRS:一次仪式,无数项目复用,Powers of Tau 仪式吸收了超过八万名贡献者。信任假设从“每个项目的每场仪式都干净”弱化成“那一份大字符串至少生成过一次且至少一名参与者诚实销毁”。代价仍在:通用字符串有最大电路尺寸封顶,且底层依旧是配对假设,量子计算机是它的远期天敌。

路线三:完全免设(透明设置)

彻底不用秘密随机数的办法也存在。2019 年 Electric Coin Company 的 Halo 论文(Bowe、Grigg、Hopwood,ePrint 2019/1021)展示了不用可信设置也能做递归证明组合,其后续实现 Halo2 把这条路做成了 PLONK 风格的实用证明系统,承诺层用 IPA(内积论证),秘密随机数被替换成可验证的公开计算;STARK 家族则更彻底——承诺全靠哈希函数(FRI),公开可查、天然抗量子,代价是证明体积从几百字节涨到几十至几百千字节,验证也更贵。一句话取舍:免设消灭了有毒废料,换来更肥的证明与更高的验证账单。

一条直觉线

把设置想象成铸一把万能钥匙后当众砸碎模具:路线一是每把锁单独开一次铸造现场,砸不砸干净各自负责;路线二是全国合办一场超级铸造仪式,模具砸了就一劳永逸,但要全国人相信那一天的直播;路线三是不存在模具——钥匙每次现用现铸、当众熔掉,谁也没机会偷。

快速问答

问:怎么判断一次仪式“干净”?看不透明性证据链:参与人数、地理与组织分布、公开可验证的中间承诺(连续哈希链)是否存在,任何一票否决记录都会留下痕迹;但没有任何机制能证明仪式一定干净,这是信任假设而非可验证事实。 问:免设系统就绝对安全吗?免设只免除“秘密销毁”这一类风险,算法本身的新攻击面(如多项式承诺的代数缺陷)依旧存在。 问:项目方说“我们的证明系统无需可信设置”,该追问什么?追问承诺方案:哈希基(FRI/Merkle)与 IPA 属诚实声明,凡是需要“某人生成再销毁”的都算设;两者混用时要逐层核对。

常见误区

一是把“参与人数多”等同于“安全”:人数扩大攻击成本,不改变一人作恶即可全局伪造的结构。二是以为有毒废料只在 Zcash 那种大仪式里有:任何用配对承诺(KZG)的系统内部都藏着一个 τ,区别只在谁生成、如何验证。三是把通用 SRS 的“一次生成”理解成永不过期:曲线与哈希参数换代、尺寸上限不足时,旧字符串即退休。

风险提示:本文为密码学科普,不构成任何投资建议。