用过xxnetwork钱包生成钱包地址的朋友会发现,除了标准助记词外,还会生成一组抗量子签名钱包助记词
,那这究竟是什么?他的工作原理和生成方式是什么?与标准助记词之间什么关系呢?
今天这篇文章就来做一个简单的分析。
原理
关于抗量子钱包和抗量子签名,xxnetwork采取了一种新的密钥生成机制,用户可以生成一个”备份密钥(back up key)”,安全地嵌套在签名方案的秘钥中。其主要原因是,在密匙泄漏的情况下,基于零知识证明的既定技术是无效的,因为密匙是公开的。另一方面,秘密的 “备份钥匙”可以用来生成”所有权证明(“proof of ownership)”,也就是说,只有这个秘密钥匙的真正主人才能生成这样的证明。
据我们所知,这种额外的安全级别是非常新颖的,如果有的话,已经可以在实践中用于加密货币的数字钱包,这些数字钱包存在账户私钥的大规模泄漏风险。在xxnetwork中,将 “所有权证明 “和”回落(Fallback)”的概念正式确定为新的属性。该方案可以与基于ECDSA签名的钱包兼容,并使用W-OTS+签名的密钥作为”备份密钥”。从而提供了一个量子安全的可选方案。这种设计允许隐藏任何量子安全签名密钥对,并不仅仅是W-OTS+。
更多技术细节,请参考David Chaum等xxnetwork核心团队写的论文《W-OTS+ up my Sleeve! A Hidden Secure Fallback for Cryptocurrency Wallets》,链接如下:https://eprint.iacr.org/2021/872.pdf
实现方案
xxnetwork基于以上论文实现了Sleeve抗量子钱包方案。
一个完整的Sleeve钱包的生成图如下:
生成钱包的输入是随机的,使用BIP39
将其编码为一个助记词。然后,一个BIP44
的自定义路径m/44'/1955'/0'/0'/0'
被用于BIP32 HD Derivation
,生成一个256位的子私钥(Child Private Key)
和256位链码(Chain Code)
。
子私钥和链码分别作为生成WOTS+签名的密钥和公共种子,在生成WOTS+密钥后,保存量子安全公钥(Public Key, PK)。这个公钥将在未来实现全量子安全
功能时作为钱包地址使用。
子私钥也被用来导出一个”袖筒私钥(Sleeve Secret Key)”。这个秘钥允许WOTS+的公钥在任何时候被安全地共享,而不影响由Sleeve产生的非量子安全密钥。这个秘钥将来会被用来将非量子安全钱包
转换成WOTS+量子安全钱包
。
Sleeve的输出是使用SHA3_256将Sleeve的秘钥和WOTS+的公钥一起哈希生成的。然后使用BIP39
对产生的哈希值进行编码,输出助记词,此助记词可用于在任何区块链平台上生成非量子安全密钥。
下图是上图中WOTS+ Key Generation
放大后的技术流程:
更多细节,请加入xxnetwork中文社区讨论,或查阅:https://github.com/xx-labs/sleeve