“Fiat–Shamir 以 Sigma 协议 的承诺—挑战—响应为输入,以 密码哈希实例化理想挑战,支撑 Schnorr 类签名、非交互知识证明和大量区块链证明系统中的 transcript…”
“若直接把挑战写成 $H(a)$,哈希输入没有绑定声明、公共参数、协议域和必要上下文,证明便可能遭跨实例或跨协议重放,或出现可塑性问题。知识提取还要求明确 extractor 如何获得同一承诺…”
Proof of knowledge · PoK
要求任何以超过知识误差的概率说服验证者的证明者,都对应一个能提取有效见证的算法。
设
知识可靠性不只限制假语句上的接受率。协议具有 knowledge error
且差距
所以当接受率只比 knowledge error 高一个逆多项式量时,提取仍为期望多项式时间。不同文献对严格/期望时间、提取成功概率与知识误差的形式略有差异,引用定理必须给出所用版本,而不能只写“存在 extractor”。
Extractor 可按模型黑盒运行、重置或 rewind
这里没有隐藏 bit 或
若知识可靠性量化任意证明者策略,通常称 proof of knowledge;若只要求对 PPT
“证明者知道 witness”不能通过查看它的内心定义,只能用可操作的反事实刻画:若它确实能稳定回答验证者随机挑战,就应能把这项应答能力转化为一个 witness。Extractor 正是这种转化算法;知识误差则标出完全靠猜挑战也可能通过的基线。
提取通常需要让同一承诺面对不同挑战。一次成功对话只说明证明者猜中或正确回答了一个分支,未必暴露足够代数信息;重绕把它带回分叉点,收集多个彼此一致的成功分支,才可能解出 witness。
Schnorr Sigma 协议中,prover 证明知道
是有效 witness。这项 special soundness 是提取器的代数核心;单轮均匀挑战下,单靠预先准备一个可回答分支的策略仍约有
单个接受 transcript 通常不能提取 Schnorr witness。诚实验证者 transcript 甚至可以在不知道
知识证明与零知识正交。PoK 限制 prover 的能力来源,ZK 限制 verifier 学到的内容;一个协议可以可提取却泄漏整个 witness,也可以零知识却没有所需的知识可靠性。称为 zero-knowledge proof of knowledge 时,两套定义及其对手模型都必须分别成立。
Fiat–Shamir 把挑战改成 transcript 的哈希后,普通交互重绕不再直接适用。随机预言机中的 forking 或 oracle programming 可以在特定条件下恢复不同挑战,但提取概率、查询次数和并发行为都需重新分析;经典 ROM 结果也不能原样覆盖量子查询。
并发协议是另一边界。一个黑盒 extractor 在重绕某次会话时可能扰动其他会话,导致分布和运行时间失控。没有说明 stand-alone、并发或可组合模型的 PoK 结论,只能按其原始执行模型使用。
知识证明用于身份认证、凭证展示、可验证计算和零知识论证。它把“能成功响应”连接到“存在可提取 witness”,从而支持协议证明中关于密钥占有、签名知识或约束满足解的推理,而无需把 witness 直接发送给验证者。
Sigma 协议的 special soundness、rewinding 和分叉引理是常见提取技术。实际系统还需报告 knowledge error、挑战长度、重复方式、提取器访问模型和具体成功损失;仅把挑战空间放大或把协议非交互化,不会自动保留原知识定理。