量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式。从计算的效率来看,由于量子力学叠加性的存在,目前某些已知的量子算法在处理问题时速度要明显快于传统的通用计算机。
在可见的将来,如果利用更高量子位的计算机对区块链的加密算法进行破解,那么区块链一直以来的安全性优势是否就不复存在了呢?
网友:区块链所基于的nonce-SHA256能在可预见的未来被算力暴增所攻破吗?
区块链靠着大量变换nonce值寻求一个被指定区域的hash值来保证安全以及货币的有价值性(需要大量算力)。但是我一直觉得区块链不靠谱的原因是这只是基于现在计算机计算速度不够高的情况下,如果10、20年内量子计算机或者其他革命技术被发明,那么不就整体攻破区块链体系了吗?
陈晓东:的确区块链技术大量依赖了哈希算法的计算。举一个例子:比特币里面通用的地址生成过程如下表所示,里面包含了多次哈希值的计算,利用了两种哈希算法:SHA256和RIPEMD160。
换一个场景,共识机制POW是如何寻(挖)找(矿)那个Nonce值得呢?基本过程如下:
假如说:已知明文Text,变换一个值 Nonce, 求SHA256(Text + Nonce)的结果是小于等于某个数值N,也就是说32Bytes或者256比特的数值里面高位至少有n个0。其查询伪代码(pseucode)如下:
可以说上面其实就是一种暴力(Brute force)破解法,这是因为目前SHA256没有任何快速高效解法来反向推导出来。那么假如这个数值等于1,也就是说最多有可能要尝试2^256次数才能找到那个Nonce值。而2^256是一个天文数字,是现在所有超级计算机加起来计算上亿年都无法完成的计算(可能是现在全网计算能力的万亿*万亿*万亿倍在71430540814238958387154年完成,而太阳在5000000000年后能源耗净)。
但是量子计算就是更擅长暴力计算的一种技术。因为普通的计算是以一个输入元素为基本运算单位来进行一次运算,但是量子计算是以输入一批元素或者是元素集合作为一次运算。假如说一种量子计算机有n个量子位(Qubit),那么它一次计算可以完成普通计算机的2^n次计算。但是目前全世界量子计算机可以实用的最高只有20个量子比特,也就是一次计算可以完成普通计算机的2^20次或者是1048576次。如果用它来破解SHA256,其实还是属于蚍蜉撼树。而且在区块链里面的哈希值通常是经过2次哈希的计算,也就是说有2^256 x 2^256 = 2^512次计算可能。如果量子计算机有一天达到256个量子比特计算能力,那么仍然需要2^256次计算才能暴力破解。如果量子计算机有一天达到了512个量子比特计算能力,那么为啥不可以做三次或者以上的连续SHA256哈希呢?这就像是矛和盾的关系。
同样的,我们来看一下密码学里常用的像RSA/ECC/ECDSA之类的非对称加密算法, 也就是说由私钥可以推导出公钥,但是反之就不行。这个意思就是没有快捷路径由公钥去算出私钥。而私钥通常由1024比特位,甚至很多系统或者应用已经改成默认支持2048比特的私钥生成和使用率。然而目前比特币这样的公链采用的是256比特位长度的私钥,也就是说暴力破解私钥需要计算接近2^256次。如果觉得因为量子计算机出现,这个计算次数不够大了,那么很简单,我们可以加大私钥的位数,比如说改成2048比特位,也就是需要大约2^2048次计算来暴力破解,那么现有或者未来很长一段时间里面人类能发明的量子计算机都是无法破解的。而且可以持续水涨船高,来保持这种优势的。另外一种和哈希组合类似,我们也可以连续对一个明文组合加密,里面加上一定的Salt,那么也同样相当于增强了暴力破解所需的尝试比特位数。除非是有人突然间发明了更高量子位的计算机而加密算法采用的比特位没有提升,那么这种突然产生的优势可以让这个人获得压倒性的优势而破解各种机密。不过这种可能性目前看来是小之又小的,大可不必杞人忧天。
另外再试想一下,如果我们改变哈希算法,利用量子加密技术,以彼之盾,防彼之矛呢?是不是这个问题就更加迎刃而解了。所以我们大家共同来拭目而待吧。