比特币系统中的私钥由随机生成器生成,再通过椭圆曲线算法(椭圆曲线的离散对数问题)、哈希函数等等单向、不可逆算法推导出公钥以及地址。所以从理论上来说,哈希公钥是可以抵御量子算力威胁的,就算将地址和公钥公开在网络上,也无法借其推导出私钥,拥有私钥就等于拥有比特币的所有权。公钥、私钥与地址的关系但实际上,加密资产只在未交易前受到哈希函数的保护,因为在使用P2PKH或P2WPKH交易标准进行交易输出加密货币时,公钥会因此而暴露。而在后量子时代,我们广泛使用的基于离散对数的公钥密码系统被认为是会被破解的。量子装置能够一次处理一个数据集的所有可能的2^n变种的函数,基于此,以量子计算为基础的Shor算法可以很容易地在多项式时间内分解大整数因子。也就是说,当你把一笔交易广播到网络上,并且它还没有被区块链所接受,那么这些交易就很容易受到攻击。这个攻击的窗口机会是有限的,但理论上还是可能的,如果QC的处理能力已经足够强大,那么使用QC的黑客就可以根据暴露的公钥,在交易被合法执行之前暴力破解出私钥,然后用其签名创建一个冲突的交易,将这笔交易中的加密货币发送到他们自己的地址。更可怕的是,如果这个黑客本身就是矿工,那么除了根据公钥计算私钥以盗取加密货币外,他们同时可以拒绝确认那些不将加密货币发送给他们的交易。这无疑是令人担忧的情况,但人们同时又自我安慰地认为:公钥只有参与了交易之后,才会被暴露给账本,这种情况只发生在极少数账户。而事实上这个数字不容小觑:有超过550万个的比特币在公钥暴露的情况下正在进行交易输出。这些公钥中,有的是因为使用了P2PK地址进行交易输出,有的是因为用户重复使用一个地址,公钥在之前的交易被签名时公开。在这个数字基础上,我们可以想象一下:如果量子计算机强大的计算能力突破了互联网的安全防护,能够在交易被确认前利用已暴露的公钥计算出私钥,那么黑客就能盗取这些数量惊人的比特币,甚至于摧毁比特币经济,让它变得一文不值。不仅仅是区块链,加密货币工具和钱包同样存在公钥暴露的问题。在目前的加密货币工具和钱包中,没有哪个软件将公钥视为私密信息,大多数人并没有意识到量子计算将给比特币造成怎样的影响。许多钱包的做法是将父扩展公钥发送到服务器,以便服务器监控交易,并能够将数据发送回客户端。所有使用这些钱包的人,钱包也会向服务器发送他们的父密钥。服务提供商就有可能根据这些公钥来计算私钥,衍生出其他所有的子私钥。私钥的泄露让使用过这些钱包的人的加密货币资产变得不再安全,随时有被窃取的风险。比特币的扩展公钥公钥的复杂脚本和合约也存在问题。使用脚本实现可编程交易的一个典型例子就是多重签名技术Multisigs,这些脚本是不对公钥进行哈希加密的。而合约中,不是所有的合约参与方都必须相互信任,这意味着其中一个参与方可以是恶意的。一旦有恶意参与者出现,他可以获取合约中所有涉及到的公钥(通过脚本),从而窃取与这些公钥有关的加密货币。现有的公钥哈希并不能对此进行保护。总而言之,除了交易之外,仍有非常多种方式让公钥暴露,我们可能只是因为使用了钱包,就造成了公钥的暴露。量子计算机对椭圆曲线离散对数问题的威胁,可能会促使加密社区向后量子密码学过渡,我们目前所有运用公钥加密的系统需要改成能够应对量子攻击的密码系统。如果量子计算发展缓慢,加密系统有时间转换到更强的函数上,并对所有的资产重新签名。但如果椭圆密码曲线突然被破解,系统无法及时检测,那么可以将所有依赖ECDLP签名算法(ECDSA和Schnorr)的签名进行软分割,从而锁定所有加密货币。用户可以根据公钥,通过提供非暴露或具有量子阻抗的零知识证明来声明私钥的所有权。比方说,用户可以通过他们拥有的BIP32种子来证明自己的所有权。通过BIP0032标准定义的HD钱包BIP32种子是分层确定性钱包所遵循的标准,它是从单一种子产生一树状结构储存多组keypairs的系统,我们只需要保存一个种子就可以推导出其他所有的子密钥。由于零知识证明的特性,种子本身不会暴露(种子不是公钥、私钥中的一部分,它们不存在共享的公共组件)。目前来说,这种方式是相对安全的。因此,尽管哈希算法的单向秘密机制使加密过程不可逆,但由于公钥的暴露,当量子计算能力足够强时,数百万比特币将被盗取,哈希只能提供一种虚假的安全感,现有的解决方案无法应对即将到来的威胁。当然,这一切都建立在我们假设“量子计算机的算力足够强大,能够通过公钥计算出私钥,而我们并没有意识到这项技术的强大,没能及时升级对应系统”的前提下。而实际上,量子计算机的每一步进展都在“众目睽睽之下”,在量子计算机强大到足以打破椭圆曲线上的离散对数问题ECDLP之前,比特币有足够的时间进行抗量子的签名算法软分叉,最终,依赖ECDLP的签名将被取代。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。