买币
行情
现货
合约BTC
理财
活动中心
福利中心
更多
0 费狂欢节
Fiat–Shamir 变换: 什么是 Fiat–Shamir 变换?Fiat–Shamir 变换是一种密码学技术,可将某些交互式证明协议转换为非交互式证明或数字签名。它消除了验证者必须直接向证明者发送新的随机挑战的需要。证明者改为对协议记录、公开陈述、承诺、消息以及其他必要上下文进行哈希运算,从而计算出挑战。生成的证明可以一次性创建,之后任何拥有相同公开信息的人都可以验证。该技术也称为 Fiat–Shamir 启发式,因为其安Fiat–Shamir 变换: 什么是 Fiat–Shamir 变换?Fiat–Shamir 变换是一种密码学技术,可将某些交互式证明协议转换为非交互式证明或数字签名。它消除了验证者必须直接向证明者发送新的随机挑战的需要。证明者改为对协议记录、公开陈述、承诺、消息以及其他必要上下文进行哈希运算,从而计算出挑战。生成的证明可以一次性创建,之后任何拥有相同公开信息的人都可以验证。该技术也称为 Fiat–Shamir 启发式,因为其安

Fiat–Shamir 变换

2026/10/13 15:34
#Advanced
Humanity
H$0.05598-4.40%
SynFutures
F$0.003133-1.84%
PX
PX$0.0128-3.03%
ADI
ADI$8.3982+0.33%
Chainlink
LINK$12.98+0.34%

什么是 Fiat–Shamir 变换?

Fiat–Shamir 变换是一种密码学技术,可将某些交互式证明协议转换为非交互式证明或数字签名。

它消除了验证者必须直接向证明者发送新的随机挑战的需要。

证明者改为对协议记录、公开陈述、承诺、消息以及其他必要上下文进行哈希运算,从而计算出挑战。

生成的证明可以一次性创建,之后任何拥有相同公开信息的人都可以验证。

该技术也称为 Fiat–Shamir 启发式,因为其安全性通常依赖于将密码学哈希函数建模为随机预言机。

Amos Fiat 和 Adi Shamir 于 1986 年在论文How to Prove Yourself: Practical Solutions to Identification and Signature Problems中提出了这一方法。

该变换对加密货币很重要,因为区块链系统无法始终支持每位证明者与每位验证者之间反复进行私下通信。

非交互式证明可以纳入交易、区块、智能合约调用、Rollup 证明、签名和跨链消息中。

Fiat–Shamir 变换解决什么问题?

许多知识证明协议最初被设计为证明者与验证者之间的对话。

证明者首先承诺隐藏的随机数或与秘密相关的信息。

随后,验证者发送一个随机挑战,而证明者在作出承诺前无法预测该挑战。

证明者使用秘密见证和挑战作出回应。

验证者检查承诺、挑战、响应和公开陈述是否满足协议方程。

在去中心化网络中,这种交互可能不便,因为证明者和验证者必须同时在线并交换多条消息。

一笔区块链交易之后可能会由成千上万个当时并未参与证明生成的节点独立检查。

Fiat–Shamir 变换用确定性的哈希挑战取代验证者实时生成的随机挑战,使每位验证者都能重新计算该挑战。

这样就能生成可移植的证明记录,进行存储、传输和验证,而无需联系原始证明者。

交互式证明如何运作?

一种常见的三消息交互协议包括承诺、挑战和响应。

证明者掌握一个称为见证的秘密值。

公开陈述描述了证明者声称知道的内容,或声称已正确完成的计算。

第一步,证明者采样私有随机数并生成承诺。

第二步,验证者生成无法预测的随机挑战。

第三步,证明者结合见证、私有随机数和挑战计算响应。

只有当响应与承诺、挑战和公开陈述一致时,验证者才会接受。

在承诺生成时,挑战必须不可预测。

否则,不诚实的证明者可能会构造一个只对预先选定挑战有效的承诺。

Fiat–Shamir 变换如何运作?

该变换移除验证者发送的第二条消息,并用密码学哈希计算取而代之。

证明者首先生成与交互式协议中相同的承诺。

随后,证明者对公开陈述、承诺、消息、协议标识符及其他必要记录数据进行哈希运算。

哈希输出会转换为协议有效挑战空间中的一个挑战。

证明者使用该挑战和秘密见证计算响应。

最终的非交互式证明通常包含承诺和响应,验证者则可以重新计算挑战。

验证者重新构建记录,计算相同的哈希挑战,并执行原始验证方程。

简化后的变换可以表示为:

challenge = Hash(protocol_context || public_statement || commitment || message)

具体输入内容和编码规则对安全性至关重要。

Schnorr 协议示例

Schnorr 身份识别协议清晰地展示了 Fiat–Shamir 变换的应用。

假设一个循环群有生成元

g
和阶
q
。

证明者持有私钥

x
和公钥
Y = g^x
。

证明者希望在不泄露

x
的情况下证明自己知道该值。

在交互式协议中,证明者选择随机值

r
并发送承诺
R = g^r
。

验证者返回随机挑战

c
。

证明者计算

s = r + c × x mod q
。

验证者检查

g^s = R × Y^c
是否成立。

有效响应表明,证明者能够针对不可预测的挑战满足该方程。

将 Fiat–Shamir 应用于 Schnorr 协议

非交互式版本用哈希取代验证者生成的挑战。

证明者计算类似

c = Hash(context || Y || R || message)
的挑战。

随后,证明者计算

s = r + c × x mod q
。

证明或签名包含承诺

R
和响应
s
。

验证者根据相同的公钥、承诺、上下文和消息重新计算挑战。

如果满足 Schnorr 验证方程,验证者就会接受。

RFC 8235规定了一种通过 Fiat–Shamir 变换,将三轮 Schnorr 身份识别方案转换而来的 Schnorr 非交互式零知识证明。

该变换如何生成数字签名

身份识别证明表明,证明者知道与某个公开身份相关联的秘密。

要创建数字签名,挑战还必须将证明绑定到特定消息。

更改消息会改变哈希输出,因而也会改变挑战。

为一笔交易创建的证明通常不能重复用作另一笔交易的有效签名。

签名者的响应证明其知道私钥,并将这一知识与待签名消息绑定。

这种从身份识别协议到签名方案的转换,是 Fiat–Shamir 变换最重要的用途之一。

Fiat–Shamir 与 Bitcoin Schnorr 签名

Bitcoin 的 BIP 340 为 secp256k1 椭圆曲线规定了 Schnorr 签名。

签名挑战通过对随机数承诺、公钥和消息进行哈希推导得出。

这遵循了与 Fiat–Shamir 变换相关的非交互式 Schnorr 签名模式。

BIP 340还使用带标签的哈希,将其哈希计算与协议中的其他用途区分开来。

带标签哈希会在输入前添加一个根据协议专属标签推导出的值。

这样可以降低同一哈希函数和输入格式被误认为执行两种不同密码学操作的风险。

BIP 340 签名用于 Bitcoin 的 Taproot 交易规则。

Fiat–Shamir 变换的适用范围不止 Bitcoin,还可用于多种证明系统、代数群和密码学假设。

Fiat–Shamir 在零知识证明系统中的应用

现代零知识证明系统通常会先以证明者与验证者之间的交互形式描述协议,这样更易于分析。

证明者会发送多项式承诺、Merkle 根、群元素或其他消息。

验证者会回应随机域元素或查询位置。

Fiat–Shamir 根据记录推导这些挑战,而无需验证者实时参与。

这使证明可以在链下生成,之后由区块链节点或智能合约验证。

该变换用于支持私密交易、有效性证明、可扩展 Rollup、可验证计算和区块链互操作性的系统。

Fiat–Shamir 在 Halo2 中的应用

Halo2 在分析时会以交互形式描述其证明协议,但会通过 Fiat–Shamir 变换将其实现为非交互式协议。

记录中包含承诺及证明者发送的其他消息。

密码学哈希输出会转换为验证者挑战,用于多项式求值和证明检查。

Halo2 协议文档说明,使用密码学强哈希函数替代验证者后,公共币交互式论证便可转化为非交互式论证。

Halo2 也会分析相关安全属性,并考虑证明者构造和重新访问记录状态的能力。

这表明,要安全地应用 Fiat–Shamir,不能仅仅用一次哈希调用取代随机数生成器。

Fiat–Shamir 在 STARK 证明中的应用

STARK 证明系统会使用多轮承诺和验证者挑战。

挑战可以用于确定随机系数、多项式求值点和低次数测试查询。

Fiat–Shamir 通道会从不断更新的证明记录中推导这些非交互式随机数。

证明者会先将承诺吸收到通道中,然后再请求下一个挑战。

验证者重复相同的记录操作,就会得到相同的挑战。

STARK 证明者文档介绍了用于在证明构建过程中生成非交互式随机数的 Fiat–Shamir 通道。

如果承诺或公开输入发生变化,之后的挑战也应随之改变。

什么是随机预言机模型?

随机预言机模型是一种安全模型,将哈希函数视为理想的公开随机函数。

每个唯一输入都会得到一个独立随机输出。

重复使用相同输入时,始终会得到相同输出。

任何人都可以查询预言机,但如果没有进行相应查询,就无法预测新的输出。

真实的哈希函数是确定性算法,而不是理想随机预言机。

在随机预言机模型中的 Fiat–Shamir 安全性证明,表明在这一理想化假设下方案具有安全性。

随后,实现者会使用被认为足以模拟该模型行为的真实密码学哈希函数来实例化预言机。

随机预言机模型很有用,但在该模型中的证明并不意味着对所有可能的哈希实现都能提供无条件安全保证。

为什么哈希必须包含完整记录?

每个挑战都应绑定到所有会影响其含义的先前协议数据。

这些数据可能包括公开参数、公钥、陈述、承诺、消息、先前挑战、链标识符和协议版本。

遗漏重要值可能导致证明被移用到其他上下文。

如果本应只对一种情况有效,证明却可能同时对两个公钥、两个应用、两个区块链网络或两个协议阶段有效。

在多轮证明中,每个挑战都应依赖该挑战生成前已累积的记录。

证明者必须先对先前数据作出承诺,然后才能得知推导出的挑战。

只对最终消息进行哈希,可能破坏交互式协议所需的顺序保证。

什么是域分离?

域分离可确保一种哈希操作不会与使用同一底层函数的另一种哈希操作混淆。

协议可以在前面添加唯一标签,例如协议名称、版本、网络、证明阶段或操作类型。

即使其他数据完全相同,标签也会改变哈希输入。

如果没有域分离,一个协议中作为挑战生成的值,可能会在另一个协议中被解释为随机数、承诺或挑战。

在加密货币软件中,域分离尤其重要,因为同一个哈希函数可能被用于交易标识符、签名、Merkle 树、密钥推导和证明记录。

BIP 340中的协议专属带标签哈希就是这种保护的实际示例。

为什么规范编码很重要?

证明者和验证者必须对完全相同的字节序列进行哈希。

数学值有时可以表示为多种有效的字节格式。

整数可能采用不同长度、字节序或前导零编码。

椭圆曲线点可能有压缩、未压缩或无效的替代编码。

如果没有明确编码元素长度和边界,列表可能产生歧义。

规范序列化为每个有效记录值规定唯一的可接受表示形式。

长度前缀、类型标签、固定宽度字段和严格解码规则可以避免歧义。

实现应拒绝非规范值,而不是以不同于其他验证者的方式对其进行标准化。

挑战长度与可靠性

挑战空间会影响不诚实的证明者在不知道有效见证的情况下成功的概率。

如果挑战只有 1 位,作弊证明者在单轮中猜对的概率相对较高。

重复协议或使用更大的挑战,可以降低可靠性误差。

哈希输出必须转换为足够大的挑战,以满足所需安全级别。

过度截短挑战会削弱证明安全性。

将哈希输出映射到域或群阶时,也必须避免不可接受的统计偏差。

协议可以使用拒绝采样、宽位归约或其他已记录的方法正确推导挑战。

什么是 Fiat–Shamir 磨取?

磨取是指证明者反复更改允许调整的承诺随机数,并对每个生成的记录进行哈希,直到得到有利挑战的行为。

由于挑战由证明者本地生成,而非独立的在线验证者生成,因此证明者可以进行这种搜索。

安全性分析必须考虑哈希查询次数和挑战空间大小。

在协议假设成立的情况下,足够大的挑战空间会使有效磨取在计算上难以实现。

如果证明者可控制的值会降低磨取成本或造成偏差,应用就不应将这些不必要的值加入记录。

采用 Fiat–Shamir 的证明系统必须分析这种行为,而不能假设证明者只会诚实地进行一次哈希查询。

重放与上下文绑定风险

非交互式证明是公开数据对象,因此可以被复制。

如果证明只用于展示一个不受时间影响的公开陈述,复制本身并无害处。

如果应用错误地把持有证明视为发生了新操作或获得了新的授权,复制就可能带来危险。

记录中可以加入交易标识符、收款方、网络、会话值、合约地址、有效期或应用专属随机数。

这些信息可以将证明绑定到预期上下文。

如果验证者未将该上下文值与当前请求进行核对,添加该值就没有帮助。

新鲜性要求应由完整的应用协议负责,而不能只依靠证明方程。

Fiat–Shamir 会自动提供零知识性吗?

不会。该变换不会自动使所有协议都具备零知识性。

原始交互式协议必须具备适当的零知识或诚实验证者零知识属性。

转换后的协议也必须在所选安全模型下进行分析。

承诺可能需要使用盲化随机数,避免泄露见证。

记录挑战可能需要限制取值范围,以免特殊值泄露私密信息。

证明可以是非交互式的,但不一定是零知识的。

非交互式仅表示证明者无需接收验证者的实时消息,就能生成证明。

Fiat–Shamir 会自动保证可靠性吗?

不会。安全地转换一个协议,并不能证明所有类似协议都安全。

原始交互式协议必须具备所需的可靠性、特殊可靠性或知识证明属性。

哈希输入和挑战映射必须保留预期的“先承诺、后挑战”顺序。

某些协议在转换后需要更强的假设或专门的证明。

某种构造可能在经典随机预言机模型中安全,但缺乏针对量子攻击者的充分证明。

开发者应使用经过审查并带有安全性证明的构造,而不是自行将 Fiat–Shamir 非正式地应用于新协议。

Fiat–Shamir 与后量子密码学

Fiat–Shamir 设计模式也出现在后量子签名研究中。

基于格、编码和多方安全计算的身份识别方案可以使用哈希推导的挑战生成签名。

部分格签名使用一种称为带中止的 Fiat–Shamir 变体。

如果中间响应可能泄露信息或不符合可接受分布,签名者可能会重新开始部分签名流程。

NIST FIPS 204标准化了 ML-DSA,这是一种基于模格、源自 Dilithium 设计的数字签名算法。

后量子签名标准的存在,并不意味着每个经典 Fiat–Shamir 证明都能抵御量子计算机攻击。

Fiat–Shamir 与量子随机预言机模型

量子攻击者可能通过叠加许多输入的方式查询模型中的随机预言机。

这与一次提交一个普通查询的经典攻击者不同。

经典随机预言机证明在量子随机预言机模型(通常简称 QROM)下不会自动继续有效。

密码学研究人员开发了额外的证明技术和协议条件,用于分析 Fiat–Shamir 构造抵御量子攻击者的能力。

因此,声称具备后量子安全性的方案,应有涵盖 QROM 或其他适当量子安全模型的分析作为依据。

仅仅将经典群替换为格问题本身并不足够。

Fiat–Shamir 与门限签名

门限签名将签名权限分配给多个参与者。

达到规定数量的参与者共同合作即可生成一个有效签名,而无需在同一地点重建完整私钥。

门限 Schnorr 协议必须谨慎协调随机数承诺和挑战计算。

挑战必须绑定组合公钥、组合随机数承诺、消息、参与者上下文和协议规则。

记录构建不当可能导致随机数操纵、恶意密钥行为或跨会话攻击。

RFC 9591规定了 FROST 门限 Schnorr 签名协议及其基于哈希的密码套件操作。

Fiat–Shamir 变换的优点

该变换可以消除兼容证明系统中的验证者实时交互。

证明生成一次后,可由许多区块链节点独立验证。

它减少了通信轮次,并简化了异步验证。

证明可以纳入交易、区块、智能合约和分布式存储。

同一证明可以重复验证,而无需向验证者提供私有随机数或维持交互会话。

该变换还为将身份识别协议转化为数字签名方案提供了实用路径。

这些特性使其适用于参与者可能永远不会直接通信的去中心化网络。

Fiat–Shamir 变换的局限

该变换通常依赖随机预言机模型。

它无法安全地转换所有可能的交互式证明。

记录遗漏和编码不一致可能导致严重漏洞。

证明者可以反复计算哈希,因此安全性分析必须考虑磨取行为。

除非应用将证明绑定到适当上下文,否则非交互式证明可能遭到重放。

量子安全性需要单独分析。

该变换无法保护实现免受侧信道泄露、随机数薄弱、内存损坏或私钥被盗等问题影响。

即使消除了交互,证明生成仍可能需要大量计算。

Fiat–Shamir 变换与交互式证明

交互式证明需要在证明者和验证者之间传递消息。

验证者会在交互过程中提供新的随机挑战。

Fiat–Shamir 证明则从记录的哈希值中推导这些挑战。

非交互式证明更容易分发,也更便于异步验证。

交互式协议可以依赖真正的验证者随机数,而转换后的协议依赖哈希函数具有类似随机预言机的行为。

Fiat–Shamir 变换与非交互式零知识证明

Fiat–Shamir 变换是构造非交互式证明的一种方法。

非交互式零知识证明(NIZK)是一类更广泛的证明,无需验证者实时交互,并且不会泄露受保护的见证信息。

有些 NIZK 使用 Fiat–Shamir,另一些则使用公共参考字符串、可信设置、透明设置或其他密码学技术。

称某项证明为非交互式,并不能说明它使用了哪种构造方法。

Fiat–Shamir 变换与数字签名

数字签名使用私钥和公开验证密钥对消息进行认证。

Fiat–Shamir 变换是一种构造技术,可以将某些身份识别协议转化为签名方案。

并非所有数字签名都通过 Fiat–Shamir 构造。

并非所有 Fiat–Shamir 证明都旨在用作数字签名。

证明可以用于证明知道某个见证或计算正确性,而不一定用于认证某个人或钱包。

Fiat–Shamir 变换与哈希到曲线

哈希到曲线会将任意输入数据转换为椭圆曲线上的有效点。

Fiat–Shamir 则将记录数据转换为验证者挑战。

一个证明系统可能同时使用这两种操作。

挑战可能是标量,而协议的另一部分可能需要哈希推导出的曲线点。

这两个流程需要分别遵守域分离和编码规则。

Fiat–Shamir 变换与提交-揭示

提交-揭示协议要求参与者先发布承诺,之后再揭示隐藏值。

它可以用于减少对共享随机数的提前了解或操纵。

Fiat–Shamir 不会等待之后公开揭示随机数。

它会根据现有记录生成确定性挑战。

尽管提交-揭示和 Fiat–Shamir 都使用密码学承诺和哈希,但二者解决的是不同的协调问题。

实现最佳实践

开发者应使用公开发布并经过审查的 Fiat–Shamir 安全性分析所支持的证明系统。

记录应包含定义陈述和上下文的所有公开值。

每个协议和证明阶段都应使用唯一的域分离标签。

所有值都应使用规范序列化,并明确类型和长度边界。

必须先吸收承诺,再生成依赖这些承诺的挑战。

挑战输出应使用文档规定的无偏方法映射到域或群中。

必须拒绝无效点、非规范标量、禁止的域值和格式错误的记录。

证明者随机数和签名随机数必须安全生成,或通过获批的确定性方法推导。

实现应测试:更改任何陈述、承诺、消息、网络标识符或协议版本后,推导出的挑战是否会发生变化。

测试向量应覆盖记录顺序、编码、域标签、空值、边界值和格式错误的证明。

Fiat–Shamir 实现中的常见错误

一种错误是只对承诺进行哈希,而没有对公开陈述进行哈希。

另一种错误是在证明旨在用作签名时,遗漏消息。

使用含糊的拼接方式,可能导致两个不同记录生成相同字节串。

在无关协议中使用相同域标签,可能造成跨协议混淆。

在吸收所有先前证明者消息之前生成后续挑战,会破坏记录顺序。

将较短的哈希直接归约到较大的域中,可能导致挑战熵不足。

接受非规范曲线点或标量,可能导致不同实现对不同表示进行哈希。

在 Schnorr 类协议中重复使用证明者随机数,可能泄露秘密见证。

假设经典证明自动具备后量子安全性,也是一个严重错误。

Fiat–Shamir 变换为何对加密货币很重要?

加密货币网络需要证明,使世界各地的参与者都能独立验证。

区块链交易不能依赖与每个未来验证节点进行私下对话。

Fiat–Shamir 可以将交互式密码学论证封装成静态证明对象。

这支持简洁签名、隐私系统、零知识 Rollup、可验证智能合约执行、门限钱包和其他区块链应用。

该变换也体现了加密货币设计中的一项重要原则。

哈希函数不仅可以创建交易标识符,还可以生成看似不可预测的挑战,将整个协议记录绑定在一起。

要实现这一点,必须进行审慎构造、精确序列化、严格域分离,并提供恰当的安全性证明。

常见问题

Fiat–Shamir 变换的作用是什么?

它会用从交互协议记录的密码学哈希值中推导出的挑战,替代某些交互协议中的验证者随机挑战。

Fiat–Shamir 为什么对加密货币有用?

它使区块链节点可以在之后验证证明和签名,而无需与证明者实时对话。

Fiat–Shamir 变换由谁提出?

Amos Fiat 和 Adi Shamir 于 1986 年发表的研究中提出了这一技术。

Fiat–Shamir 变换与哈希函数相同吗?

不同。它是一种协议变换,使用哈希函数生成验证者挑战。

什么是交互式证明?

这是一种证明者与验证者交换承诺、挑战和响应的协议。

什么是公共币协议?

这是一种交互式协议,其中验证者发送的消息由公开可见的随机挑战组成。

什么是 Fiat–Shamir 记录?

它是证明所用公开参数、陈述、承诺、挑战、响应、消息和上下文的有序集合。

什么是随机预言机模型?

这是一种理想化安全模型,将哈希函数视为具有一致输出的公开随机函数。

真实哈希函数是随机预言机吗?

不是。真实哈希函数是确定性的,但协议可以将其分析为仿佛具有理想随机预言机的行为。

Fiat–Shamir 会自动实现零知识吗?

不会。原始协议和转换后的构造都必须满足所需的零知识条件。

Fiat–Shamir 会生成数字签名吗?

如果挑战哈希包含消息,该变换可以将某些身份识别协议转化为签名。

Bitcoin 使用 Fiat–Shamir 模式吗?

Bitcoin 的 BIP 340 Schnorr 签名使用哈希推导的挑战,将随机数承诺、公钥和消息绑定在一起。

Fiat–Shamir 用于零知识 Rollup 吗?

许多 Rollup 证明系统使用 Fiat–Shamir 风格的记录挑战,将交互式证明协议转化为非交互式证明。

Fiat–Shamir 用于 STARK 吗?

是的,STARK 证明者和验证者可以使用 Fiat–Shamir 通道,从承诺中推导非交互式挑战。

Fiat–Shamir 用于 Halo2 吗?

是的,Halo2 通过 Fiat–Shamir 将其交互式证明描述实现为非交互式论证。

什么是域分离?

域分离会在哈希输入中加入协议专属标签,避免不同密码学操作的输出相互混淆。

为什么必须对公钥进行哈希?

对公钥进行哈希可以将证明或签名绑定到预期身份,并有助于防止密钥替换或跨密钥攻击。

为什么必须对消息进行哈希?

包含消息可以确保为一条消息创建的签名无法重复用于另一条消息。

什么是挑战磨取?

挑战磨取是指反复生成承诺,直到记录哈希产生对证明者有利的挑战。

Fiat–Shamir 证明可以被重放吗?

公开证明可以被复制,因此需要新鲜性的协议必须加入并验证合适的会话或交易上下文。

什么是规范序列化?

规范序列化是指为每个记录值指定唯一可接受的字节表示。

为什么记录顺序很重要?

每个挑战都必须依赖所有先前消息,以防证明者得知挑战后再更改承诺。

Fiat–Shamir 可以用于椭圆曲线吗?

可以,Schnorr 证明和签名通常会在椭圆曲线群中使用该变换。

Fiat–Shamir 可以用于后量子密码学吗?

可以,相关构造已用于后量子签名,但其安全性需要适当的量子分析。

什么是量子随机预言机模型?

在该模型中,量子攻击者可以通过量子叠加查询随机预言机。

经典安全性证明对量子攻击者仍然有效吗?

不一定,因为证明可能没有考虑量子预言机查询或量子提取限制。

什么是带中止的 Fiat–Shamir?

这是一种变体:如果响应不符合规定的分布或大小条件,签名者可以重新开始。

Fiat–Shamir 是可信设置吗?

不是。该变换本身不需要可信设置,不过底层证明系统可能有单独的设置要求。

智能合约可以验证 Fiat–Shamir 证明吗?

可以,只要合约能够重新计算记录哈希,并高效检查证明方程。

最大的实现风险是什么?

常见重大风险包括记录绑定不完整、编码存在歧义、域分离不充分、随机数生成薄弱和安全假设缺乏依据。

结语

Fiat–Shamir 变换可以将兼容的公共币交互式协议转换为非交互式证明或数字签名。

它用根据证明记录的密码学哈希值推导出的挑战,取代验证者实时生成的不可预测挑战。

这样,证明可以一次性生成,并由区块链节点、钱包、智能合约和其他加密应用独立验证。

该变换支持 Schnorr 签名、零知识证明系统、STARK、Halo2 类协议、门限签名和后量子签名研究。

其安全性取决于原始交互式协议的属性,以及用于对哈希函数建模的假设。

正确的实现必须将完整的陈述、承诺、消息、公开参数、上下文和协议版本绑定到规范记录中。

实现还必须采用严格的域分离、足够大的挑战、安全的随机数生成机制,以及经过仔细审查的挑战映射规则。

Fiat–Shamir 变换并不会自动提升所有证明协议的安全性。

它是一种强大的构造,其安全性取决于严谨的协议设计、规范的实现流程,以及针对经典和量子攻击者的安全分析。

您可能也喜欢

反恐融资(CTF)

反恐怖主义融资(CTF)是指旨在发现、预防和打击恐怖主义活动资金支持的法律、法规和活动。这包括监控和监管资金流动、在金融机构内部实施合规计划,以及执行旨在遏制恐怖主义融资的国际制裁和法规。 反恐融资在各领域的重要性 反恐融资在包括银行业、科技和国际贸易在内的各个领域都至关重要。在金融领域,强而有力的反恐融资措施可确保银行和其他金融机构不会被恐怖组织利用为其活动提供资金。这不仅有助于维护金融体系的完
2025/12/23 18:42

框架

在专业情境中,「框架」指的是一套结构化的指南、工具或实践,旨在支援专案、应用程式或系统的开发和实施。它提供了一种标准化的方法来解决复杂问题或实现特定目标,通常包含可根据具体需求进行调整和扩展的预先建置元件。 框架的关键特征 框架在软体开发、专案管理和数位行销等各个领域都至关重要。例如,在软体开发中,Angular、React 和 Django 等框架提供了开发人员用来高效建立高品质应用程式的程式库
2025/12/23 18:42

波动性爆发

「波动性爆发」是指金融市场、资产或指数的波动性突然显著增加,通常由不可预见的事件或市场情绪变化所驱动。这种突如其来的增加会导致价格大幅波动和交易量激增,从而影响投资者和交易者的风险和机会。 了解波动性爆发 波动性是衡量特定证券或市场指数收益分散程度的统计指标,显示资产价格在特定期间内的波动幅度。当这种波动超出正常水平时,就会发生波动性爆发,这通常是对意外新闻或经济事件的反应。这些事件可能包括地缘政
2025/12/23 18:42
回调还是机会?
回调还是机会?回调还是机会?
一边爆仓,一边扫货——24亿ETF资金在赌什么?