# 7 比特幣私鑰是怎么產生的,它可以被破解嗎?

題圖

如果你擁有比特幣,你可能最關心的是余額,而決定余額的是私鑰,所以你最應該關心的,其實是私鑰。當我們談到比特幣安全相關的問題時,我們也會提到私鑰,之前的文章《比特幣的助記符是什么》里提到的助記符,其實也可以理解為私鑰的一種表現形式,但私鑰究竟是什么?也許鮮有人知道。

私鑰是什么

私鑰是一個256位的隨機數

私鑰的定義非常簡單,但其中有2個專業術語可能會使不了解計算機的同學感到困惑,一個是256位,另一個是隨機數,下面內容是該定義的白話文解釋,已經理解了的同學可以跳過:

256位 - 字面上很容易被理解為256個十進制數字,其實不是的,因為計算機是用二進制來存儲和計算的,所以256位指代的是256個二進制數字,下圖是一個例子


隨機數 - 意思是這個數的產生沒有規律

所以

私鑰是一個數字,這個數字可以取從0到22??-1之間的任意值

私鑰可以被破解嗎

看到這里,你可能也會產生和我一樣的疑惑——私鑰也太簡單了把,我隨便寫一個數,只要不超過最大值,就可以用作私鑰,對嗎?是這樣的,沒錯。

那按照私鑰可以算出公鑰,公鑰可以產生地址的邏輯,豈不是我隨便選一個數作為私鑰,然后算出它的地址,如果這個地址上正好有未使用的比特幣,是不是就代表我破解了別人的賬號呢?

年輕人,你說得沒錯,其實我一開始也是這樣想的,雖然現在回想起來覺得有點Naive……

雖然私鑰只是一個簡單的數字,但它仍然很難被破解,原因在于這個數字的集合足夠大,大到我們很難窮盡所有數字,并對它們進行逐一的驗證。2的256次方近似于10的77次方,10的77次方有多大,我再舉個例子你就清楚了

到目前為止,人類可觀測的宇宙中的原子數約為10的80次方

進一步,因為這個數的范圍很大,所以我們能猜中一個正確私鑰的概率就變得非常低,假設地球上使用比特幣的人數達到100億,也就是10的10次方,則你猜中一個比特幣私鑰的概率是

這個概率到底有多小呢,我再給你舉兩個例子:

  1. "雙色球"一等獎的中獎概率是8×10ˉ?。——摘自《中國福利彩票的中獎概率》
  2. 從全世界范圍來看(假設全世界人口為70億),一年中每個人遭遇雷擊的概率是175萬分之一(5×10ˉ?)。——摘自中國氣象局-《遭遇雷擊的概率有多高》

說明什么呢?說明

被雷擊中的概率 > 抽中500萬的概率 >> 猜中比特幣私鑰的概率

上面的不等式中,我用了>>這個符號表示遠遠大于

從概率的角度,我們確實很難破解私鑰,但此時你可能會問,彩票一等獎和被雷擊中很難發生,在于它們發生的頻率很低,但計算機不一樣,計算機的計算速度很快,我們可以很容易的利用計算機的處理速度,來提升猜中私鑰的可能性,也就是快速計算10的67次方個私鑰,總有一次猜中把。

是的,通過這種暴力破解的方法確實可以實現破解比特幣的私鑰,但它要付出的代價也是極其高昂的,下面我們就來做個試驗。

我在我的Macbook Pro 2015版上運行了一條命令

$ begin=`date +%s`;  for ((i=0;i<10;i++));do bx seed | bx ec-new | bx ec-to-public | bx ec-to-address | xargs -I@ ./btc_balance -addr @ > /dev/null; done; end=`date +%s` ; echo `echo "scale=2;$end-$begin" | bc`
15

這條命令看不明白沒關系,我來介紹下它的功能:

這條命令會隨機產生10個比特幣的私鑰和地址,并獲取它的余額,這是暴力破解的基本步驟(其實還差一步判斷余額是否大于0,如果大于0就代表猜中了,但我們這里只預估成本,可以省去這一步),產生10個私鑰的目的是為了利用計算機的并行能力,因為我的CPU有4個核心;這條命令還會輸出程序運行所需要的時間,可以看到最后一行的15表示運行了15秒

利用這個程序的輸出,我們就可以計算出猜中一個私鑰需要花多長時間了,猜10個私鑰需要15秒,那么10??次猜測,需要


注意,經過換算,等式右邊的單位已經是年了,通過簡單的實驗和計算,我們可以估算出,想要暴力破解比特幣私鑰,幾乎是不可能完成的任務。

使用安全的算法產生私鑰

即便私鑰的設計已經足夠安全,但如果使用不當,仍然會產生嚴重的后果,正如統計結果顯示:目前還是有很多人使用1234567作為他們的賬戶密碼——就是一個典型的例子。

我們不要自己去生成私鑰,最好借用比特幣軟件,例如錢包或bitaddress.org這樣的站點來幫你產生私鑰,這里簡單介紹下這些軟件產生私鑰的原理,大致分為3個步驟:

  1. 產生一個很長的隨機字符串(隨機源)——例如bitaddress.org網站就是通過捕捉人們滑動鼠標的隨機行為來產生隨機源的。
  2. 將步驟1的數據輸入到SHA256 hash算法,輸出一個256位的數
  3. 確保產生的數在私鑰規定的范圍之內,否則重新回到第1步

通過這篇文章,相信你對私鑰有了更深層次的認識,同時也對比特幣的安全性有了足夠的信心,如果這篇文章對你有幫助,作為反饋,你可以在文章后面留言,或給我打賞一丁點代幣 :)

0xf7eA2c5C7cF4E3f384de97109685a02a8ED92BC6

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377