形式陈述
Fiat–Shamir 是一种变换语法,不是对任意三步协议成立的通用安全定理。对三步公开币协议 ,把验证者随机挑战替换为
这里 的输出须落在原协议的挑战空间 ,全部字段先作无歧义编码。若用固定长度摘要实例化,还须明确摘要到 的映射;直接模 约化一般不是精确均匀抽样。证明者输出 ,验证者重算 并检查原协议验证式。
这一段只定义非交互 transcript;零知识、知识可靠性或签名不可伪造性都必须另给协议、模型与归约。
一个具体结论:Schnorr 签名的经典 ROM 版本
设 为素数阶 的有效编码群,群与参数由安全参数 索引, 可忽略。密钥生成取 ,公钥为 ,并假设相应群族上的离散对数困难。这里 是输出均匀 元素的随机预言机。签名者取均匀 nonce ,令 ,并计算
验证者先检查公钥、承诺的群成员资格和响应 ,再检查 。EUF-CMA 使用数字签名理路数字签名Digital signature由私钥签名、公开验证并提供不可伪造性的认证机制。页的新消息标准:最终伪造的 没有被请求签名。在经典随机预言机模型理路随机预言机模型Random oracle model · ROM把所有参与者共享的哈希接口理想化为可自适应查询且响应一致的真随机函数。中,Pointcheval–Stern 的 forking-lemma 路线可把对该精确 Schnorr 签名接口的 EUF-CMA 伪造者转成离散对数求解器,但需要以下条件:
- 原 Schnorr 协议具有 special soundness;同一 下两个不同挑战 的有效响应可提取 。
- 诚实验证者零知识模拟允许签名 oracle 先选 、令 ,再对完整哈希输入编程响应。
- 对手的随机预言机与签名查询数均为多项式。证明先界定签名模拟在已查询点编程的冲突概率,再处理最终伪造从未查询其完整哈希输入的情形;不能把“已经查询”额外假定成攻击者义务。当 时,固定 至多匹配一个挑战,未查询成功概率至多 ;均匀密钥的 事件也只有 ,所以这两类例外合计至多 。余下的非忽略成功质量才进入分叉论证。
- 哈希输入无歧义绑定域、群参数、公钥、消息和承诺;删去其中一项会改变被证明的签名方案。
例如每次模拟签名先独立均匀选 ,其 条件于过去仍均匀。若至多有 次对手查询及 次签名查询,对此前表项冲突作保守并集界理路并集界Union bound · Boole 不等式多个坏事件中至少一个发生的概率,不超过各事件概率之和。,概率至多为 ;证明在冲突时中止并计入这项损失。forking 再重放对手并改变某次随机预言机回答,完整归约还会损失查询次数和原伪造概率的因子。本页只陈述这一经典 ROM 实例,不把它外推到任意 Sigma 协议、标准模型或量子随机预言机。
在这个 Schnorr 实例中,按显示的公式直接执行,签名需要一次群幂、一次哈希查询,以及模 的一次标量乘法和一次加法;验证需要两次群幂、一次群乘法和一次哈希查询。这里计数的是原语调用,不把群幂或哈希视为常数时间:消息与参数编码、群成员及标量范围检查、精确均匀抽样,以及各原语的位运算时间和工作空间都须另计。
直觉
Fiat–Shamir 的哈希挑战链 Fiat–Shamir 把公币交互证明中的 verifier 随机挑战替换为对 transcript 与声明求得的哈希值。prover 先固定承诺,再查询所有人共享且响应一致的随机预言机,最后给出响应;它仍可更换承诺反复查询,故证明必须计入自适应查询和 grinding,而不能把挑战口头描述成绝对不可控制。验证者可独立重算挑战,因而省去在线验证者;ROM 安全并非对任意确定哈希函数的无条件定理。
例子与边界
三步 Sigma 协议的交互 transcript 为 ,非交互对象则只携带 ,挑战由验证者使用完整编码重新计算。在上面的 Schnorr 实例中,statement 是公钥 ,context 包含待签消息 ,域标签与群参数把这次哈希和其他协议用途隔开;这说明“适当消息绑定”具体落在哪些字段上。
若直接把挑战写成 ,哈希输入没有绑定声明、公共参数、协议域和必要上下文,证明便可能遭跨实例或跨协议重放,或出现可塑性问题。知识提取理路知识证明Proof of knowledge · PoK要求任何以超过知识误差的概率说服验证者的证明者,都对应一个能提取有效见证的算法。还要求明确 extractor 如何获得同一承诺下的不同挑战、knowledge error 与查询损失;交互协议的 special soundness 本身不足以证明非交互对象可提取。标准模型中并非所有 Sigma 协议的 Fiat–Shamir 变换都安全;量子随机预言机下的安全证明也需专门技术,不能直接沿用经典 rewinding。
同一承诺下的两次响应能算出什么
取玩具群 ,其阶为 。设 ,公钥 ,重复使用 得到相同承诺 。若两个完整哈希输入的挑战分别为 和 ,响应分别为 、。两次验证为
相减后在 中提取
这同一个计算既是交互特殊可靠性的核心,也说明真实签名中复用 nonce 会泄漏私钥。安全归约用受控重放取得两个分支,现实攻击者并没有免费重置诚实签名者的权限。
读到这里可以完成一项检验:核算这两次验证与提取,再区分诚实验证者模拟、重绕提取及随机预言机编程各自获得了哪些权限。若签名挑战仅为 而未绑定消息,把一次合法签名复制到另一条未签消息就能通过同一验证;这已经违反新消息不可伪造。小群只演示等式,不能作为安全参数。
推论与应用
Fiat–Shamir 以 Sigma 协议理路Sigma 协议Sigma protocol · Σ-protocol具有首消息—随机挑战—响应三步结构,并满足特殊可靠性与诚实验证者零知识的公开币协议。 的承诺—挑战—响应为输入,以 密码哈希理路密码哈希函数Cryptographic hash function把任意长输入压缩到固定长度并要求原像、第二原像或碰撞难求的函数族。实例化理想挑战,支撑 Schnorr 类签名、非交互知识证明和大量区块链证明系统中的 transcript 压缩。零知识理路零知识证明Zero-knowledge proof证明者使验证者相信陈述为真而不泄露额外知识的交互证明。、签名不可伪造性与 knowledge extraction理路知识证明Proof of knowledge · PoK要求任何以超过知识误差的概率说服验证者的证明者,都对应一个能提取有效见证的算法。 必须逐构造、逐模型验证,不能由变换语法一并推出。
单元素VOPRF理路可验证不经意伪随机函数Verifiable oblivious pseudorandom function · VOPRF对固定P256公钥重建RFC9497单元素DLEQ挑战,只有盲求值响应通过同钥匙检查才允许去盲输出。把这项变换用于同离散对数关系:由响应重建两个临时点,再按规定的长度前缀重算挑战,只有匹配才允许去盲输出。它单独证明错误关系在明确理想挑战模型中的逐查询界,并保留非零组合系数、规范编码和固定公钥条件;该关系证明不能替代整个OPRF的伪随机性或输入隐藏论证。
参考资料