
https://eprint.iacr.org/2025/902.pdf
本文针对一种构建 SNARG 的通用范式——先在标准模型中通过功能交互式预言证明(FIOP)与功能承诺(FC)框架构造简洁交互式论证,再在随机预言模型(ROM)中通过 Fiat–Shamir 变换获得非交互式 SNARG——填补了此前分析中的关键安全空缺。作者提出并形式化了 状态恢复安全性(state‐restoration security)与 功能绑定(function binding)两大核心概念,证明只要所用 FIOP 与 FC 满足对应的状态恢复安全性与功能绑定变体,即可确保 Fiat–Shamir 变换后的非交互式论证在 ROM 中的可信性。
基于该主定理,文章进一步验证了多种 FC 架构(包括 KZG、多项式承诺等)满足功能绑定性质,并从而在 ROM 中首次给出了 Plonk SNARG 的 Fiat–Shamir 安全性证明(依赖可验证 RSA 分解困难性假设 ARSDH)。
Funky 协议定义如下:
定理 1(非正式):令 Funky[FIOP, FC] 为基于 FIOP(轮次 , 论证长 , 查询数 )及 FC 的 Funky 协议。若 FIOP 满足状态恢复安全性误差 ,FC 满足功能绑定误差 ,则在 ROM 中,对任何 轮交互、时间绑定 的 Adversary,其 Fiat–Shamir 后的论证接受概率上界为

在 Funky 协议中,FIOP 定义了一组在交互式论证中对 Prover 消息进行预言查询的函数族
其中每个查询 接受 Prover 在第 轮发送的消息 并返回答案 。
FIOP 本身由 构成,具有 轮交互,每轮交互后 Verifier 从相应查询类 中随机选取若干 并获得响应。
功能承诺 (FC) 在此基础上提供对函数 及其求值结果 的承诺能力。令
其中 为承诺串, 为辅助输出。
关键在于,FC 是三同态(triply homomorphic)的:若
则必有

此性质(Definition 8.5)使得在交互式论证中,来自多个 预言查询的承诺与证明可以线性组合并批量验证。
在 Funky 协议的每轮中,Prover 对于所选查询 先生成 FIOP 消息 ,再计算 ,最后调用
并将 与 一并发送给 Verifier,从而实现 FIOP 与 FC 的无缝集成。

由此 BatchMsg[FC, s] 对查询类 满足批量状态恢复函数绑定(Lemma 8.2):
在 Funky 协议中,交互式阶段包含 轮交互,每轮 Prover 发送 位的 FIOP 消息和一个 FC 承诺 。
因此,交互式协议的总通信量为 位,其中 取决于所用承诺方案(如 KZG 中为单个群元) 。
应用 Fiat–Shamir 变换后,非交互式 SNARG 的证明大小为
位,其中附加的 部分源于 ROM 中对每轮质询的随机预言响应 。
Verifier 验证过程中,需要进行 次 FIOP 验证和 次 调用 。
因此,Verifier 总时间复杂度为
当 为常数时,上述复杂度仍为常数阶,保持了 SNARG 的“简洁性” 。
本文建立了 Funky 协议在 ROM 中的 Fiat–Shamir 安全性,填补了此前构造的关键安全空缺 。
证明了状态恢复 soundness 错误 与 FIOP 及 FC 安全误差之间的精确关系,为后续框架设计提供了理论指导 。
实例分析表明,常用 FC 架构(例如 KZG)和 FIOP 架构(例如 Plonk IOP)可直接套用本框架,并获得 ROM 下的 Fiat–Shamir 安全证明 。
未来可探索将 Funky 协议与递归证明结合,实现多层 SNARG 的高效递归压缩 。
另外,可研究功能绑定在其他承诺方案(如 Bulletproofs 类承诺)中的应用,以进一步优化证明大小和验证开销 。
Kurt Pan: 即日起提供有偿「密码学论文代码实现和 benchmarking 服务」,语言侧重Rust / Python / C++,密码学侧重零知识证明系统和格密码方案。欢迎有需要的老师同学以及对密码学感兴趣的朋友联系我,邮箱kurtpan666 at pm dot me 或微信 cryptokurt(此號已因加過多好友被封,且無法解禁,抱歉),也可关注公众号后留言。