SequenceHash:为大众打造的多哈希方案
多哈希(Multihashing)是将多个值组合为单个哈希值的过程,是一项关键但常被误解的密码学任务。不安全的多哈希实现可能导致漏洞,尤其是在零知识证明等领域。Trail of Bits 推出了 SequenceHash 和 SequenceMAC,这两种新构造旨在为广泛的密码学哈希函数提供安全的多哈希方案。与仅绑定于 Keccak 的 NIST TupleHash 不同,SequenceHash 和 SequenceMAC 是哈希无关的,可与 SHA256、BLAKE 和 RIPEMD 等函数协同工作。这些新构造提供了明确的输入编码,防止对拼接输入进行操纵。它们还提供了长度扩展防护,这是许多哈希函数的关键安全特性。此外,SequenceHash 和 SequenceMAC 集成了可选的自定义字符串,用于协议绑定以防止重放攻击。SequenceMAC 作为带密钥的变体,为消息认证码提供了类似的安全优势。SequenceHash 采用简化的固定长度 128 位整数编码来表示输入字节计数,其长度后缀编码支持流式 API。该方法旨在实现简单,并能处理实际输入规模,上限为 ${2}^{128}-1$ 字节。其双重哈希构造类似于 HMAC,可防止长度扩展攻击,并支持带密钥的 SequenceMAC 模式。SequenceMAC 通过纳入密钥元数据,解决了 HMAC 中潜在的关键伪碰撞问题。目前已有三种 SequenceHash 和 SequenceMAC 的初始实现,分别提供于 Rust、Go 和 Python,并附带全面的测试向量。这些工具旨在简化开发者的安全多哈希工作。最终目标是为此常见的密码学挑战提供一个标准化且易于使用的解决方案。