量子計算是一種遵循量子力學規(guī)律調(diào)控量子信息單元進行計算的新型計算模式。從計算的效率來看,由于量子力學疊加性的存在,目前某些已知的量子算法在處理問題時速度要明顯快于傳統(tǒng)的通用計算機。
在可見的將來,如果利用更高量子位的計算機對區(qū)塊鏈的加密算法進行破解,那么區(qū)塊鏈一直以來的安全性優(yōu)勢是否就不復存在了呢?
網(wǎng)友:區(qū)塊鏈所基于的nonce-SHA256能在可預見的未來被算力暴增所攻破嗎?
區(qū)塊鏈靠著大量變換nonce值尋求一個被指定區(qū)域的hash值來保證安全以及貨幣的有價值性(需要大量算力)。但是我一直覺得區(qū)塊鏈不靠譜的原因是這只是基于現(xiàn)在計算機計算速度不夠高的情況下,如果10、20年內(nèi)量子計算機或者其他革命技術(shù)被發(fā)明,那么不就整體攻破區(qū)塊鏈體系了嗎?
陳曉東:的確區(qū)塊鏈技術(shù)大量依賴了哈希算法的計算。舉一個例子:比特幣里面通用的地址生成過程如下表所示,里面包含了多次哈希值的計算,利用了兩種哈希算法:SHA256和RIPEMD160。
換一個場景,共識機制POW是如何尋(挖)找(礦)那個Nonce值得呢?基本過程如下:
假如說:已知明文Text,變換一個值 Nonce, 求SHA256(Text + Nonce)的結(jié)果是小于等于某個數(shù)值N,也就是說32Bytes或者256比特的數(shù)值里面高位至少有n個0。其查詢偽代碼(pseucode)如下:
可以說上面其實就是一種暴力(Brute force)破解法,這是因為目前SHA256沒有任何快速高效解法來反向推導出來。那么假如這個數(shù)值等于1,也就是說最多有可能要嘗試2^256次數(shù)才能找到那個Nonce值。而2^256是一個天文數(shù)字,是現(xiàn)在所有超級計算機加起來計算上億年都無法完成的計算(可能是現(xiàn)在全網(wǎng)計算能力的萬億*萬億*萬億倍在71430540814238958387154年完成,而太陽在5000000000年后能源耗凈)。
但是量子計算就是更擅長暴力計算的一種技術(shù)。因為普通的計算是以一個輸入元素為基本運算單位來進行一次運算,但是量子計算是以輸入一批元素或者是元素集合作為一次運算。假如說一種量子計算機有n個量子位(Qubit),那么它一次計算可以完成普通計算機的2^n次計算。但是目前全世界量子計算機可以實用的最高只有20個量子比特,也就是一次計算可以完成普通計算機的2^20次或者是1048576次。如果用它來破解SHA256,其實還是屬于蚍蜉撼樹。而且在區(qū)塊鏈里面的哈希值通常是經(jīng)過2次哈希的計算,也就是說有2^256 x 2^256 = 2^512次計算可能。如果量子計算機有一天達到256個量子比特計算能力,那么仍然需要2^256次計算才能暴力破解。如果量子計算機有一天達到了512個量子比特計算能力,那么為啥不可以做三次或者以上的連續(xù)SHA256哈希呢?這就像是矛和盾的關(guān)系。
同樣的,我們來看一下密碼學里常用的像RSA/ECC/ECDSA之類的非對稱加密算法, 也就是說由私鑰可以推導出公鑰,但是反之就不行。這個意思就是沒有快捷路徑由公鑰去算出私鑰。而私鑰通常由1024比特位,甚至很多系統(tǒng)或者應(yīng)用已經(jīng)改成默認支持2048比特的私鑰生成和使用率。然而目前比特幣這樣的公鏈采用的是256比特位長度的私鑰,也就是說暴力破解私鑰需要計算接近2^256次。如果覺得因為量子計算機出現(xiàn),這個計算次數(shù)不夠大了,那么很簡單,我們可以加大私鑰的位數(shù),比如說改成2048比特位,也就是需要大約2^2048次計算來暴力破解,那么現(xiàn)有或者未來很長一段時間里面人類能發(fā)明的量子計算機都是無法破解的。而且可以持續(xù)水漲船高,來保持這種優(yōu)勢的。另外一種和哈希組合類似,我們也可以連續(xù)對一個明文組合加密,里面加上一定的Salt,那么也同樣相當于增強了暴力破解所需的嘗試比特位數(shù)。除非是有人突然間發(fā)明了更高量子位的計算機而加密算法采用的比特位沒有提升,那么這種突然產(chǎn)生的優(yōu)勢可以讓這個人獲得壓倒性的優(yōu)勢而破解各種機密。不過這種可能性目前看來是小之又小的,大可不必杞人憂天。
另外再試想一下,如果我們改變哈希算法,利用量子加密技術(shù),以彼之盾,防彼之矛呢?是不是這個問題就更加迎刃而解了。所以我們大家共同來拭目而待吧。