“Sigma 协议构成身份认证、证明知识、AND/OR 组合以及 Fiat–Shamir 签名的模块化基础。零知识证明提供隐私目标,知识证明规定从成功 prover 提取见证的量词,交互式证明…”
形式陈述
Fiat–Shamir 是一种变换语法,不是对任意三步协议成立的通用安全定理。对三步公开币协议
这里
一个具体结论:Schnorr 签名的经典 ROM 版本
设
验证者先检查公钥、承诺的群成员资格和响应
- 原 Schnorr 协议具有 special soundness;同一
下两个不同挑战 的有效响应可提取 。 - 诚实验证者零知识模拟允许签名 oracle 先选
、令 ,再对完整哈希输入编程响应。 - 对手的随机预言机与签名查询数均为多项式。证明先界定签名模拟在已查询点编程的冲突概率,再处理最终伪造从未查询其完整哈希输入的情形;不能把“已经查询”额外假定成攻击者义务。当
时,固定 至多匹配一个挑战,未查询成功概率至多 ;均匀密钥的 事件也只有 ,所以这两类例外合计至多 。余下的非忽略成功质量才进入分叉论证。 - 哈希输入无歧义绑定域、群参数、公钥、消息和承诺;删去其中一项会改变被证明的签名方案。
例如每次模拟签名先独立均匀选
在这个 Schnorr 实例中,按显示的公式直接执行,签名需要一次群幂、一次哈希查询,以及模
直觉
Fiat–Shamir 把公币交互证明中的 verifier 随机挑战替换为对 transcript 与声明求得的哈希值。prover 先固定承诺,再查询所有人共享且响应一致的随机预言机,最后给出响应;它仍可更换承诺反复查询,故证明必须计入自适应查询和 grinding,而不能把挑战口头描述成绝对不可控制。验证者可独立重算挑战,因而省去在线验证者;ROM 安全并非对任意确定哈希函数的无条件定理。
例子与边界
三步 Sigma 协议的交互 transcript 为
若直接把挑战写成
同一承诺下的两次响应能算出什么
取玩具群
相减后在
这同一个计算既是交互特殊可靠性的核心,也说明真实签名中复用 nonce 会泄漏私钥。安全归约用受控重放取得两个分支,现实攻击者并没有免费重置诚实签名者的权限。
读到这里可以完成一项检验:核算这两次验证与提取,再区分诚实验证者模拟、重绕提取及随机预言机编程各自获得了哪些权限。若签名挑战仅为
推论与应用
Fiat–Shamir 以 Sigma 协议 的承诺—挑战—响应为输入,以 密码哈希实例化理想挑战,支撑 Schnorr 类签名、非交互知识证明和大量区块链证明系统中的 transcript 压缩。零知识、签名不可伪造性与 knowledge extraction 必须逐构造、逐模型验证,不能由变换语法一并推出。
参考资料
- Amos Fiat, Adi Shamir, How to Prove Yourself: Practical Solutions to Identification and Signature Problems (1986), original transform.
- David Pointcheval and Jacques Stern, Security Proofs for Signature Schemes, EUROCRYPT 1996,§3 分叉引理与 §6 Theorem 13 的 Schnorr 结论。
- Dan Boneh, Victor Shoup, A Graduate Course in Applied Cryptography (2023/2026 draft), Fiat–Shamir and signatures.