多重哈希的陷阱:为任意哈希函数消除输入歧义
来源: blog.trailofbits.com — 2026-10-02
概述
Trail of Bits 推出 SequenceHash 与配套的 SequenceMAC,为不使用 Keccak 的哈希函数提供安全的多重哈希构造,避免输入编码有歧义导致的攻击。两者行为类似 NIST 的 TupleHash,但不绑定单一哈希函数,可与 SHA256/384/512、BLAKE、RIPEMD 等配合,规范已进入 C2SP。
核心要点
- 多重哈希(multihashing)是常见陷阱:分次喂入与一次拼接在存在编码歧义时会产生完全相同的摘要,示例中三个 SHA-256 输出一致。
- 它是零知识证明中 Fiat-Shamir 变换的关键组件,做错会引入伪造风险,在加密货币场景里代价常以百万美元计。
- 现有生态里的做法五花八门,有的使用可能出现在输入中的分隔字符,作者明确指出这类方案并不安全。
- SequenceHash 对每个输入做长度编码,因此切分边界不同结果就不同;还支持用 customizer 字符串区分同内容的哈希。
- SequenceMAC 要求密钥至少 32 字节(约 128 位抗伪造安全级),并已发布 Rust、Go、Python 实现与大套测试向量。
金句
三个输出彼此完全无关——因为每个输入都被长度编码,分两次喂入与一次喂入并不等价。
👍 0
👎 0
← 返回 Lobsters 首页