QIP: 2 适用于格密码的确定性分层钱包方案

该文档提出了一个适用于格密码的分层确定性钱包方案,旨在将HD钱包的便利性应用于后量子密码学领域。该方案使用HMAC的输出来生成用于多项式采样的RNG,并专注于Dilithium签名方案,因为它已最终确定为NIST后量子签名标准。该方案不支持非硬化密钥,但与BIP44钱包具有互操作性。

Abstract

本文档描述了一种适用于格密码学的分层确定性钱包方案。

Motivation

分层确定性钱包 HD-Wallets 已经 成为区块链中事实上的标准。随着区块链行业讨论后量子未来,我们希望将这种技术应用于格密码学环境中的密钥,因为备份单个种子短语的 用户体验非常好,它可以生成无限的、先验的、不相关的密钥,而用户不必在每次执行操作时都备份同一个钱包。我们专注于 Dilithium 签名方案,因为它 是第一个最终确定的 NIST 后量子签名,并且很可能成为行业标准。

将格密码学适配到 HD 环境中的挑战是双重的。首先,HMAC-SHA512 的输出不能直接用作格私钥。对于 Falcon 和 Dilithium, 我们需要形成格的“良好基”(小向量)的多项式,并且密钥生成算法使用拒绝采样,如果不进行修改,则不适合 HD 钱包方案。

第二个挑战是,在 BIP32 中,非强化密钥是通过椭圆曲线点(公钥)的加法导出的,而格不存在这种等效操作:格公钥的集合在加法或乘法下不是封闭的。

我们在此 QIP 中解决了第一个挑战,并且不尝试支持非强化密钥。据我们所知, 这第二个挑战是否可以在格密码学环境中克服,仍然是一个开放的研究问题。非强化密钥用于仅监视或审计钱包,对于 HD-Wallets 的主要用途而言并非必不可少,因此 我们认为这并不是一个关键的缺点。

Specification

基本的想法是将每次迭代中 HMAC 输出的熵用作多项式采样的 RNG。在 BIP32 中, HMAC 输出的一半用作私钥,可以直接用在“强化”的情况下,或者添加到 先前的私钥中,在“非强化”的情况下。这是因为椭圆曲线密码算法的结构,其中私钥可以看作是一个整数,该整数乘以 椭圆曲线组中的生成点。

在 Falcon 和 Dilithium 中,密钥生成算法在密钥派生过程中消耗 <= 64 字节的熵。 我们可以简单地将 HMAC 的整个输出馈送到密钥生成过程中,而不是使用一半作为私钥 本身,但是为了最大程度地与 BIP44 钱包 互操作,我们仅使用一半的输出。 这使得该方案与 BIP32 中的强化密钥派生相同。

NIST 这里 支持使用种子作为默认密钥格式的这种技术。

有关 BIP32 的摘要,请参见下图。

<img src=qip-0002/QIP-0002-1.png></img>

Reference Implementation

格 HD 钱包的实现位于 here。 我们根据 pq-crystals 生成的测试向量进行测试,pq-crystals 是一个参考实现 dilithium,由标准的作者用 C 语言编写。

两个钱包版本都使用 rust 库 bip39 从助记词“种子短语”获取到“种子”。然后,我们通过 HMAC-SHA512 从种子派生出一个 “主密钥”,该密钥构成了密钥树的根,每个边都表示 HMAC-SHA512(R || 0x00 || L || child_index),其中 L || R 是树中父节点的拆分值,如 BIP32 标准中所述。

Rationale

我们最初考虑使用 Falcon,因为它具有更小的密钥和签名。为此,我们依赖于 Thomas Pornin 的 rust-fn-dsa FALCON 签名算法的实现,进行了一些小的修改以允许外部 生成的熵。 Thomas Pornin 是 FALCON 标准的作者之一,也是 PQClean C 语言的作者 算法的实现。 Falcon 钱包的实现位于 here

后来我们注意到(来自 Thomas Pornin),Falcon 标准并未完全指定密钥生成路径, 因此我们已决定切换到 ml-dsa(以前称为 dilithium)。 Dilithium 具有以下几个优点。它是

缺点是 更大的密钥、更大的签名和更慢的验证

无论如何,格密钥和签名都比椭圆曲线大得多,因此我们将不得不为更多的 磁盘空间付费。

Dilithium 和 Falcon 都需要 <= 64 字节的熵作为密钥生成过程的输入,因此我们可以简单地使用 HMAC-SHA512 的前 32 字节输出作为熵源。非强化用例在格 密码学中显然无法实现,因此我们省略了它。

关于 HMAC-SHA512 的量子安全性,针对哈希函数的主要量子攻击是 Grover 算法,它提供了在搜索 未排序数据库(在我们的例子中为哈希原像)时的二次加速。这会将安全位数减半,因此 512 -> 256,256 -> 128 等。 这适用于所有哈希函数,因此任何经典安全哈希算法都将具有相同的问题。另一方面, 已经证明 Grover 算法是渐近最优的, 因此我们不应期望另一种量子算法比 Grover 算法针对安全哈希函数做得更好。

与哈希函数相反,区块链的数字签名更容易受到量子攻击,因为 Shor 算法 大大降低了从公钥中查找椭圆曲线私钥的难度,从指数级 (Pollard 的 rho) 降到多对数 O(log^3(n)), 其中 n 是位数

因此,我们优先保护数字签名免受量子 攻击,并保持哈希函数不变。

Copyright

本规范已发布到公共领域。

  • 原文链接: github.com/Quantus-Netwo...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Quantus-Network
Quantus-Network
江湖只有他的大名,没有他的介绍。