在知道某個比特幣地址的情況下,是否有可能通過破解私鑰來攻破該賬戶?

比如我知道了@李笑來 的比特幣地址里有很多比特幣,並且短時間內不會轉移,是否能夠暴力窮舉私鑰來攻破該賬戶


有這樣一間屋子,內部的牆壁、地板和天花板用億萬片碎鏡片密密麻麻貼滿,弄成一個巨大的反射空間。一束光從空間內某個地方射出,在牆壁、地板和天花板之間來回反射,經過億萬次以後,光束到達了某個落點。

假如知道光的初始位置和方向,很容易順藤摸瓜畫出反射路徑、推測最終落點。但如果把順序反過來,告訴你初始位置和最終落點,要構造出中間的反射路徑(注意到每一次反射都有億萬種可能,而一共要經過億萬次反射),這就難了。

用一組特別的數學曲線替代鏡片,就有點像橢圓曲線密碼問題了,它是目前最難破解的密碼學問題之一。

可以用RSA加密演算法作為對比。RSA加密演算法包含在https安全協議中,我們登錄網銀、支付寶、Gmail等網站的時候都會用到這個安全協議,應用很廣,強度也不錯。如果破解RSA演算法需要的能量只夠燒開一瓢水,破解橢圓曲線密碼需要的能量夠把整個地球上的水都燒開了(A (relatively easy to understand) primer on elliptic curve cryptography)。

比特幣的私鑰和公鑰就是基於這個橢圓曲線密碼演算法加密的,目前還沒有人(以及機器)能攻破它。


理論上來講是有可能的,只是:

  1. 難度太高,一般人做不到(你有量子計算機也許還可以——只是也許)
  2. 能夠破解這個,那還不如去破解世界上的任何一家大銀行的密碼……


在比特幣的語境下,這個問題很有趣。

如果你能破解某個地址的私鑰,同樣的算力大概夠你挖幾億年礦了……


可以

這個地方有所有的密鑰:比特幣私鑰資料庫 你可以找找看

LOL


理論上是可以暴力破解的,但是從現有的計算資源來看,相當相當相當困難


知道地址沒有什麼意義,因為全部有過交易的地址都記錄在區塊鏈上,獲得全世界所有有餘額的比特幣地址沒有任何難度。

假設我們現在把有餘額的地址全部羅列出來,是1000億個,對應的是1000億個私鑰(10^11次方),這個地址的列表我們現在隨時就能獲得,但對應的私鑰就得窮舉了。

地址/私鑰總量是2^256次方,也就是多少呢?是10^77次方。

從10^77次方裡面找出10^11次方的有用私鑰,需要相當於10^66個私鑰裡面才有一個有用的,算出這10^66個私鑰,就能搞定一個有用的私鑰,拿到裡面的錢。

計算一個私鑰與現有地址是否匹配需要多少時間?包括幾個步驟,第一步是窮舉一個(0秒),然後是計算出公鑰,然後是計算出地址,然後是掃描匹配現有地址(10^11次方)。

量子計算機按0.001毫秒完成這些步驟,算出一個私鑰,一年等於3*10^7秒,等於3*10^10毫秒,等於3*10^13(0.001毫秒),算完10^66次方私鑰,要花掉10^52次方年,也就是1000億年的10^41次方倍。

總結一點說,量子計算機用了1000億年*10^41次方的時間,算到該計算機已經化為暗物質10000000億次,可以算出來一個有用的私鑰。

因為比特幣交易的離散性,大量的地址都是零錢,這個時候很有可能發現這個私鑰的餘額是0.000001 BTC。


只知道比特幣的地址不可以得到公鑰,因為從公鑰到地址有兩次不可逆的hash。

退一萬步,即使得到了公鑰,也不能通過公鑰去得到私鑰。只有通過私鑰可以得到公鑰。否則,現有的金融機構將會大面積被黑。因為比特幣採用的非對稱加密技術是現在的主流金融加密技術。

唯一的可能,就是量子計算機的出現,但是當量子計算機出現的時候,加密的演算法也已經升級換代了。

我估計你是擔心,別人可以看到你的比特幣地址上的錢,這樣是不是很危險?

放心吧。沒有問題的。


比特幣的世界裡「得私鑰者得天下」這一句話一點都不誇張。比特幣地址是公開的,每個人都可以查詢到地址對應的餘額,每個人都擁有知情權。但是決定你是否擁有對該地址的餘額的處決權的就是私鑰。破解比特幣的關鍵就是獲取地址的私鑰。

比特幣私鑰是一個256位的數字,取值範圍為0~0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141。每個有效私鑰都可以推導出一個地址,地址為160位的數字。私鑰-&>地址是一個單向不可逆的過程,至少按照目前的數學理論和計算能力是這樣的。因此目前破解的辦法只有一個就是暴力破解,也就是遍歷私鑰:通過計算每個私鑰對應的地址,再查詢該地址是否有餘額,如果有,那麼你就獲得了該地址的私鑰。

私鑰推導地址的具體步驟如下:

1.生成一個隨機256位私鑰,以十六進位表示為0x125d54ba100c5d0dfc574ba59fac64e00193b8d8f2d19644dcf90a3eb11da974

2.通過橢圓曲線加密演算法(ECDSA-secp256k1)計算,得到公鑰,以十六進位表示為0x03dfcc2161d9ecf9c7ae2411d21407cdacc10ca6d5878051f7eb2f6f3190638cbe

3.對公鑰進行SHA256哈希,結果以十六進位表示為0xb671b1996ee2aea88914e208b3acbe0ddb8d85c392b1b55312d7401ee1763329

4.對上一步的結果再進行RIPEMD160哈希,結果以十六進位表示為0xf25dab7e6eb6f9585a3ec9d9e99d37a66573abd8

5.對上一步的結果進行帶校驗碼的Base58變換,得到1P6WjirMukKyDmfGHxAcDoMMoaDwownXKN,這個就是我們熟悉的地址。

上述5個步驟中,除了第4和第5兩步驟是可逆的之外,其他的都是不可逆的。既然我們都知道了破解的方法,那為什麼很多人又說比特幣是不可破解的?這就涉及到概率的問題。私鑰推導地址,是做了一個聚攏的變換,那麼就會出現多個私鑰對應同一個地址的問題,平均每個地址大約會有2^96個私鑰,而根據比特幣的交易驗證演算法,每一個私鑰都是有效的,所以我得出的比特幣破解概率公式是:

概率=有效地址數*破解速度/2^160

其中有效地址是有餘額的地址,目前有超過10,000,000個,而且數量還在不斷增加。破解速度就是計算機從私鑰推導地址的速度。目前一台普通PC機的破解速度可以達到10,000次/秒。那麼連續運行1天,破解的概率=10,000,000*10,000*3600*24/2^160=5.9117*10^-33。這個值有多小呢,我們可以對比一下福彩雙色球一等獎的獲獎概率=1/((33*32*31*30*29*28)/(6*5*4*3*2*1)*16)=5.643*10^-8,福彩雙色球一等獎的獲獎概率比破解一個比特幣地址要高1億億億倍(前提是雙色球沒有作弊,嘿嘿你懂得)。

既然知道比特幣破解概率這麼低,那為什麼我還要做這個小男孩的網站呢?我的理由有3點:

1.聚少成多,積小成大。互聯網的時代,全世界上網的人應該不少於10億個吧,如果能夠協同這麼多人一起來破解,那概率會大大提高。

2.以發展的眼光來看,以前摩爾定律是18-24個月計算能力翻一番,現在雖然放緩,但計算能力也是在不斷進步,破解速度也會越來越高。

3.最後,我相信運氣,祝你們好運了(*^_^*)

轉載自 http://www.xiaonh.com/index.php/2017/10/31/aboutbitcoincracker/


這就是公鑰密碼機制的算力安全性,從資訊理論角度看,公鑰機制泄漏了所有私鑰的信息,是可以計算出私鑰的,但是算力目前不可達。


應該要敬請期待量子計算機了吧?

按照目前的算力遠遠不夠。


李老師躺槍。

如果你有水平破獲這個(以有限時間有限資源內進行破獲)。那麼任何商業到IT,政治與軍事在互聯網上加密的內容你都能搞定大半了。相信我,你可以掌握這個世界至少1%的財富。


推薦閱讀:

HOPE, zjo np mjoh, 19/2, never-1, enqfds是什麼意思?
解一個有趣的數學(圖論、資訊理論)問題?
用無理數加密,如何破解?
西電只是211,為什麼密碼學排第一?
前男友分開的時候給了我一個密碼,求大神解答是什麼意思?

TAG:比特幣Bitcoin | 密碼學 |