可信初始化(Trusted Setup)是什么?为什么有些 ZK 系统需要它 图 1
可信初始化(Trusted Setup)是什么?为什么有些 ZK 系统需要它 · 图 1

结论先说

可信初始化(Trusted Setup)是部分零知识证明系统在部署前必须做的一次性”仪式”:按电路生成一组系统参数,之后所有证明和验证都基于这组参数。风险在于理论上存在”毒参数”——持有它的攻击者能伪造证明却不留痕迹。仪式设计的核心,就是让没有任何单一方有机会完整持有毒参数。理解它,才能看懂为什么 ZK 链上线前要搞公开仪式,以及为什么有些路线干脆选择不需要初始化。

为什么需要这组参数

以主流 SNARK 体系为例,验证者要能”以固定成本验证任意电路的合法执行”,就必须依赖一组和电路绑定的公共参数。这组参数在生成时会经过一个秘密随机量的计算,谁掌握了完整的秘密量,谁就拿到毒参数:可以针对任意输入伪造”合法”证明,而验证方在数学上无法区分真伪。这就是问题所在——参数是公开的,但生成它的秘密过程是脆弱的。

多方仪式如何分散风险

公开的初始化仪式通常这样组织:邀请若干独立参与方(个人、机构、甚至随机在线志愿者)依次传递一个”材料包”,每一方在自己环节加入自己的随机性并可以验证材料完整,但任何单一方都只能接触到完整材料的一个片段,看不到前面各方累积出的秘密全貌。仪式结束后,所有中间材料被丢弃或公开。安全性建立在”诚实多数”假设上:只要参与方中至少有一个诚实且随机性独立,毒参数就不可能被完整拼出。参与方越多、来源越分散、随机性越独立,这个假设就越可靠。

如果还是出事了怎么办

这是可信初始化最被诟病的地方:假设一旦被突破(例如某方被攻破并留存了秘密片段,或仪式实现有后门),伪造证明的能力是静默的——受害者可能长期不知道系统已被污染。缓解手段包括:仪式实现开源并接受审计、材料可公开复核、参与方匿名性与独立性设计、以及事后通过”电路升级 + 重新初始化”换掉受污染的参数。但”事后换参数”本身有成本:旧证明失效、需要迁移,这也是为什么有些应用宁愿接受 STARK 路线的更大证明,也不引入初始化。

无初始化的替代路线

STARK 类证明系统把验证所需的公共信息直接由公开算法生成,不存在秘密环节,因此没有毒参数问题——代价是证明体积和验证成本更高。此外还有一些新研究方向(基于哈希的承诺、后量子导向的构造)试图在保持小证明的同时去掉初始化,成熟度仍在演进。选择路线时,“是否需要初始化”往往和安全假设、证明成本一起被打包权衡。

核验清单

面对一条使用 SNARK 类系统的链,可以这样查:一,仪式是否公开进行、参与方数量和来源是否可追溯;二,仪式代码是否开源、是否经过审计;三,官方是否公开了材料复核方法;四,电路升级时初始化是否同步更新、更新记录是否可查;五,prover 和验证合约是否独立于仪式运营方。任何一项答不上来,都不等于系统不安全,而是提示你它的”诚实多数”假设由谁在承担。

风险提示

可信初始化不是漏洞,而是一个明确的信任假设:把”不能伪造证明”从密码难题转移到了”仪式参与方足够诚实且独立”上。这个假设在公开、多方、透明的仪式下通常被认为是强的,但它和椭圆曲线假设、电路审计一样,都是需要单独核实的环节。本文不评价任何具体链的仪式质量,具体以官方公开记录为准。

小结

一句话记忆:可信初始化用”多方分步 + 诚实多数”把毒参数风险摊薄到可接受水平,但不能归零;STARK 用”公开生成参数”直接绕开这个环节,代价是证明更大。看懂仪式的参与方结构,就看懂了这类系统信任假设的核心。