Skip to content

Fiat–Shamir 变换

Fiat–Shamir transform · Fiat–Shamir heuristic

用哈希输入与承诺生成挑战,把公开币交互证明转化为非交互证明或签名。

形式陈述

对三步公开币协议,把验证者随机挑战替换为

e=H(statement,a,context),

证明者输出 (a,z),验证者重算 e 并检查原协议验证式。 安全证明通常在随机预言机模型中通过编程哈希与 forking 型论证完成;域分离、上下文绑定和挑战长度属于协议定义的一部分。

直觉

哈希值被当作不可由证明者预先控制的公共随机挑战,从而省去在线验证者。

例子与边界

直接把挑战写成 H(a) 可能产生跨协议、跨语句重放或可塑性问题。标准模型中并非所有 Sigma 协议的 Fiat–Shamir 变换都安全,量子随机预言机还需不同证明技术。

推论与应用

它支撑 Schnorr 类签名、非交互知识证明和大量区块链证明系统中的 transcript 压缩。

参考资料