助記詞可以破解嗎 私鑰助記詞碰撞是否可行
最近經(jīng)常有人說(shuō)給我們提供一個(gè)地址,讓我們定性破解對(duì)方私鑰。我可以明確告訴你,因?yàn)楝F(xiàn)在物理硬件的限制,定向暴力破解單個(gè)地址的可能性幾乎為0。
助記詞會(huì)不會(huì)被試出來(lái)
最近經(jīng)常有人會(huì)考慮助記詞的安全性,會(huì)不會(huì)有兩個(gè)一樣的助記詞與地址,這種可能性也有,但極低。就算一樣也可以進(jìn)行區(qū)分,到時(shí)候官方會(huì)給處理。
答:不會(huì)。
現(xiàn)在應(yīng)用最廣的BIP39助記詞標(biāo)準(zhǔn),助記詞字典里有2048個(gè)單詞。
現(xiàn)行助記詞標(biāo)準(zhǔn)一般有12詞和24詞兩種
12詞組合的可能性是2048^12 = 5.44e39 , 24 詞組合可能性是 2048^24 = 2.96e79
10^79 這個(gè)數(shù)量級(jí)接近宇宙里所有原子的數(shù)目,所以暴力破解是不可能的。
別說(shuō)用你的電腦24小時(shí)算,就算你用超級(jí)計(jì)算機(jī)從宇宙誕生到現(xiàn)在一刻不停地算都算不出來(lái)。
BIP39 規(guī)定了助記詞和種子生成規(guī)則。這些單詞取自一個(gè)固定詞庫(kù),詞匯生成有一定規(guī)矩和順序,詞庫(kù)共有 2048 個(gè)單詞。不是隨便輸入 24 個(gè)單詞就能生成加密貨幣地址的,也不能隨意選擇自己喜歡的詞,或者隨意組合詞匯。而兩個(gè)人選到一模一樣(詞匯一樣+順序一樣)的 24 個(gè)詞的概率有多大呢?可以說(shuō)這幾乎是不可能事件,2048 的 24 次方之一,仿若在宇宙中找一顆原子那么困難。
實(shí)際上哪怕 12 個(gè)詞也足夠安全了,只是多多益善,詞匯越多,意味著種子中的熵越多,能被暴力解碼的難度更大,更安全。
可在 Ian Coleman 的助記詞生成網(wǎng)站 (BIP39 - Mnemonic Code)來(lái)嘗試一下,多產(chǎn)生幾組詞試試,感受一下。
上個(gè)內(nèi)容很多人說(shuō)沒(méi)有詳細(xì)公布算法。那么下面我們就再詳細(xì)計(jì)算下這種碰撞成功的幾率 ,目前碰撞空間大概在 2的136次方級(jí)別。
目前在一臺(tái)最頂級(jí)的AWS GPU計(jì)算節(jié)點(diǎn)上面我們測(cè)試的碰撞效率是這樣的:
AWS p2.8xlarge 32 vCores Xeon v4, 8x K80 GPUs (50% each) ~80-88M/s
每秒鐘大概碰撞8000w次;目前最頂峰的時(shí)候,算力到了1G的級(jí)別,這樣計(jì)算下來(lái):
2^136 / 2^30 = 2 ^106
2^106 級(jí)別的碰撞效率還是遙遙無(wú)期??;
比特幣地址的生成,主要花費(fèi)在ECDSA、SHA256, RIPEMD 這三個(gè)算法的操作之上,但其實(shí)用GPU計(jì)算,這三個(gè)步驟花費(fèi)的時(shí)間是很少的,在整個(gè)碰撞過(guò)程中,其實(shí)大部分時(shí)間是耗費(fèi)在bloomfilter上面的;
而bloomfilter的原理,采用的是多級(jí)HASHMAP,常理來(lái)看,這已經(jīng)是判斷一個(gè)元素是否存在某集合的極限效率了;
但是有一點(diǎn)我們不要忘記,比特幣的地址采用base58編碼,他的地址空間是有規(guī)律的,簡(jiǎn)單來(lái)說(shuō),就是所有比特幣地址的前綴分布,是有規(guī)律可循的,他應(yīng)該在base58的編碼范圍內(nèi)成正態(tài)分布;而bloomfilter的HASHMAP是沒(méi)有這種條件優(yōu)化的,
所以說(shuō)bloomfilter的算法我們可以改進(jìn),提升效率。
我們分析了截至2018-12以前的所有比特幣地址,簡(jiǎn)便起見,提取了所有的P2PKH地址(共 377059211個(gè)地址),取其前4個(gè)字符地址前綴;執(zhí)行:
sort 4prefix.addr|uniq -c|sort -nr
得到了所有地址前綴的分布列表,差不多是個(gè)正態(tài)分布。
列舉一下最常用的地址前綴TOP10:
23600 1bit
23086 1btc
21895 13vs
21329 1gbx
21267 1gbt
21267 1gba
21210 1gbb
21206 1gbf
21196 1gbu
21189 1gbr
最常見的是1bit和1btc這兩個(gè)前綴,各比第三名多出了10000個(gè)左右,這多出來(lái)20000個(gè)地址應(yīng)該是Geek們自己生成的虛榮地址。
所有的比特幣P2PKH地址,4字母前綴共有42877種組合。
好了,這就是我們可以優(yōu)化的地方,把bloomfilter的第一級(jí)HASHMAP,采用這些前綴組合先來(lái)一把過(guò)濾,再去執(zhí)行常規(guī)的Bloomfilter,碰撞效率會(huì)再提高一個(gè)數(shù)量級(jí)。
我們?cè)谧约簷C(jī)器上實(shí)驗(yàn)了一下,在GTX750Ti 顯卡上面,最終效率可以達(dá)到 10M/s。
瓶頸現(xiàn)在又變成了genaddress環(huán)節(jié),我估計(jì)在一塊RX580卡上面,可以達(dá)到和AWS頂配GPU一樣的效率;
不過(guò),效率提升億倍,也不過(guò)是 2^90 的碰撞范圍,還是遙遙無(wú)期啊。
所以我們進(jìn)入更深入的分析
早期在http://bitcointalk.org論壇上,Laszlo Hanyecz曾經(jīng)有過(guò)一個(gè)想法,就是隨著硬件性能的發(fā)展,最終碰撞比特幣私鑰的收益會(huì)不會(huì)超過(guò)挖礦的收益?
中本聰當(dāng)時(shí)的回答是,要達(dá)到這個(gè)碰撞算力很遠(yuǎn)很遠(yuǎn)。
我們來(lái)仔細(xì)分析一下:
比特幣的地址生成是很容易硬件ASIC化的,如果用這種前綴過(guò)濾法,也不需要多少內(nèi)存,所以可以近似認(rèn)為:如果硬件化,比特幣私鑰碰撞的效率和挖礦效率是差不多的。
目前比特幣全網(wǎng)算力在40EH左右,就是2^62 ,這已經(jīng)是相當(dāng)于400w臺(tái)螞蟻S9的機(jī)器同時(shí)24X365 運(yùn)行了;消耗的電力估計(jì)已經(jīng)超過(guò)了上海市的居民用電,比特幣礦機(jī)的能源消耗,完全可以說(shuō)是抵得上一個(gè)小型國(guó)家的能源消耗了。
如果私鑰碰撞達(dá)到2^62 級(jí)別,那么毛估估,碰撞幾率就能減小到 ? 60 級(jí)別了;
而且另外一個(gè)無(wú)法預(yù)測(cè)的情況就是,將來(lái)人們的安全意識(shí)加強(qiáng),一般一個(gè)地址只要用過(guò)就會(huì)丟棄掉,所以最終bloomfilter的條目變化會(huì)非常頻繁,還要考慮一個(gè)數(shù)量級(jí)的損耗。
目前測(cè)算,隨著手續(xù)費(fèi)用的提高,即使多次減半,將來(lái)挖礦的收益估計(jì)很長(zhǎng)期穩(wěn)定1-10btc/block級(jí)別,在如果將來(lái)以1年時(shí)間碰撞一個(gè)私鑰的概率期望測(cè)算的話,一年大概是2^30 秒,碰撞效率要提高到 2^90 級(jí)別,所以掃U很快達(dá)到 破解私鑰得利 > 挖礦得利的效果;
而且,即使到了這一天,把RIPEMD替換成一種碰撞空間更大的算法就OK了。
這樣看來(lái),定性攻破某個(gè)地址的私鑰的可能性還是微乎其微,不太現(xiàn)實(shí)。而同時(shí)隨機(jī)攻破幾千萬(wàn)有幣地址的各個(gè)幣種,是不是概率就增加了一個(gè)量級(jí)的單位。于是我們就開發(fā)出了超速版和掃U程序,可以確保在幾年內(nèi)碰到一個(gè)1開頭的比特幣大額地址 。在真正的量子計(jì)算機(jī)誕生之前,這或許是破解私鑰的唯一最快方法了。
你可能感興趣的文章
-
助記詞24個(gè)單詞比12個(gè)單詞對(duì)比、轉(zhuǎn)換、安全性分析
隨著區(qū)塊鏈錢包的發(fā)展和分層確定性(HD)錢包技術(shù)的普及,越來(lái)越多的用戶開始熟悉了一個(gè)叫“助記詞”的概念,很多人都已經(jīng)習(xí)慣了從一開始使用一個(gè)錢包的時(shí)候,就先抄好單詞…
2024-07-11 -
如何安全的存放助記詞?私鑰與助記詞的差別
助記詞和私鑰是常見名詞和常用工具,私鑰是掌握與管理加密錢包的關(guān)鍵要素,助記詞是由 12 到 24 個(gè)易記的單詞組成,它是加密錢包的另一種備份方式,本文小編給大家介紹了如…
2025-04-22 -
虛擬幣錢包中的私鑰、助記詞、密碼分別是什么
對(duì)于虛擬幣,若想保存就需要使用虛擬幣錢包,比如bitpie、imtoken等,在使用錢包的過(guò)程中有幾個(gè)名詞你必須清楚,必須、必須、必須,如果在不清楚的情況下就貿(mào)然使用錢包,…
2023-12-19 -
助記詞和私鑰用什么保存才不會(huì)丟失?
私鑰保存的常見錯(cuò)誤是將私鑰保存在云盤、云筆記、郵箱中,或者用手機(jī)拍照保存,這都是非常危險(xiǎn)的容易泄露私鑰的方式,那么,助記詞和私鑰用什么保存才不會(huì)丟失?助記詞和私…
2023-12-05 -
如何恢復(fù)丟失的助記詞? 恢復(fù)丟失的助記詞的三種常用方法
助記詞(Mnemonic Phrase)是一種用于恢復(fù)或遷移加密貨幣錢包的方法,它由12個(gè)或24個(gè)單詞組成,如果你不幸丟失了你的助記詞,你是否還有機(jī)會(huì)恢復(fù)你的錢包呢?在這篇文章中…
2023-10-18 -
一文搞清楚比特幣助記詞是什么
比特幣助記詞在加密貨幣市場(chǎng)中并不少見,因?yàn)楫?dāng)投資者創(chuàng)建他們的第一個(gè)加密錢包或相關(guān)帳戶時(shí)經(jīng)常會(huì)遇到它,簡(jiǎn)單的介紹還不能夠了解比特幣助記詞是什么?接下來(lái)小編帶大家一…
2023-09-15 -
私鑰和助記詞都丟了怎么辦?怎樣保存私鑰和助記詞?
錢包的安全一直是大家都在討論的一個(gè)話題,對(duì)于錢包而言,保證私匙和助記詞的安全性至關(guān)重要,所以使用錢包的第一要點(diǎn)就是,安全地備份好自己的私鑰/助記詞,但用戶總會(huì)擔(dān)心…
2023-09-07 -
導(dǎo)入錢包助記詞怎么填寫? 導(dǎo)入錢包助記詞格式錯(cuò)誤怎么辦?
幣圈投資者在更換設(shè)備時(shí),需要將原來(lái)的錢包助記詞導(dǎo)入到新設(shè)備中來(lái)進(jìn)行管理自己的數(shù)字貨幣資產(chǎn),但往往有一些投資者可能會(huì)遇到輸入助記詞不正確的提示,因此對(duì)于很多投資者…
2023-08-31 -
助記詞被別人知道了怎么辦?助記詞泄露錢包還能繼續(xù)用嗎?
在投資者進(jìn)行注冊(cè)錢包時(shí),會(huì)自動(dòng)生成助記詞,通縮來(lái)說(shuō)助記詞就相當(dāng)于錢包的一個(gè)重要密碼,也可以說(shuō)助記詞是數(shù)字貨幣資產(chǎn)的一種保險(xiǎn)柜,如果一旦出現(xiàn)助記詞被別人知道的情況…
2023-08-29 -
錢包助記詞怎么輸入?錢包助記詞輸入格式全解
目前不少投資者會(huì)將自己的數(shù)字貨幣資產(chǎn)放在錢包中,主要是為了保障數(shù)字貨幣的安全,投資者在創(chuàng)建錢包賬戶時(shí),會(huì)遇到12個(gè)英文單詞,該錢包軟件都會(huì)提示你記牢這些助記詞,因…
2023-08-21