比特幣的安全性到底有多高?
01私鑰、公鑰、地址
就像銀行取款、網(wǎng)銀轉(zhuǎn)賬需要輸入密碼一樣,動用錢包里的比特幣也需要密碼,這個(gè)密碼被稱之為“私鑰”。
與“私鑰”對應(yīng)的是“公鑰”,“公鑰”就像你的銀行賬戶。每個(gè)銀行賬戶都有唯一的賬戶編號,也就是銀行卡號。在比特幣網(wǎng)絡(luò)中,這個(gè)銀行卡號就是“地址”。別人只要知道你的“銀行卡號”(即地址),就可以給你轉(zhuǎn)比特幣了。
在銀行,開戶流程基本是“開設(shè)銀行賬戶——給銀行卡號——設(shè)置銀行卡密碼——開戶成功”。但在區(qū)塊鏈?zhǔn)澜缋?,是先設(shè)置“密碼”(私鑰),再開設(shè)“銀行賬戶”(公鑰),最后給“銀行卡號”(地址)。
如果你路上撿到了一張紙條,上面只寫著銀行卡密碼,但沒寫銀行卡號,即便這個(gè)銀行卡密碼是真的,你也無法取走相關(guān)賬戶里的錢。
但在區(qū)塊鏈?zhǔn)澜?,你只要知道了別人的“銀行卡密碼”(私鑰),就可以知道別人的“銀行賬戶”(公鑰)和“銀行卡號”(地址),可以取走里面的幣。
為什么會這樣呢?
這是因?yàn)樵趨^(qū)塊鏈中,私鑰通過加密生成公鑰,公鑰轉(zhuǎn)換一下格式生成地址。也就是說,私鑰可以推導(dǎo)出公鑰,公鑰可以推導(dǎo)出地址。
02反向推導(dǎo)?沒門!
既然“私鑰可以推導(dǎo)出公鑰,公鑰可以推導(dǎo)出地址”,動用賬戶里的比特幣又必須輸入“密碼(私鑰)”,那黑客要竊取你錢包里的比特幣,必須、也只需拿到“私鑰”即可。
理論上,黑客有2種方法竊取你的私鑰:
1、通過地址/公鑰,反向推導(dǎo)出私鑰。
2、一個(gè)一個(gè)地去試私鑰,也就是暴力破解。
第一種方法并不可行,因?yàn)楸忍貛挪捎玫募用芩惴ǎ?ldquo;失之毫厘,差之千里!”。輸入的內(nèi)容,稍稍變動哪怕一丁點(diǎn)的東西,加密后輸出的結(jié)果和之前輸出的結(jié)果也有天壤之別,而且這些結(jié)果沒有規(guī)律可循。
所以,這種加密算法是“單向的”、“不可逆的”,黑客無法通過輸出(地址/公鑰)推導(dǎo)出輸入(私鑰)。
03暴力破解比特幣私鑰有多難?
既然第一種方法不可行,那第二種方法如何?在回答這個(gè)問題之前,我們先看下私鑰是怎么產(chǎn)生的。
假設(shè)你拋硬幣,正面朝上為1,反面朝上為0,連續(xù)拋256次,把每次拋的結(jié)果記錄下來,再轉(zhuǎn)換成十六進(jìn)制數(shù),就是一個(gè)比特幣私鑰。
What? 這么簡單?這么任性?
沒錯,比特幣的私鑰就是通過程序“拋256次硬幣”,隨機(jī)生成的。所以,比特幣私鑰的本質(zhì)是256位二進(jìn)制數(shù)。
每次拋硬幣,都有正反2面,所以拋256次,一共可以出現(xiàn)「2 x 2 x2 x 2……2 x 2x2」,即256個(gè)2相乘,也就是「2的256次方」種結(jié)果。所以,比特幣的私鑰總數(shù),理論上有「2的256次方」個(gè)。
注:私鑰總數(shù)的實(shí)際值比上面的理論值略低,因?yàn)橛幸恍〔糠炙借€不可用,但對總數(shù)影響微乎其微。
「2的256次方」是多大呢?它約等于「10的77次方」。那「10的77次方」又是多大呢?
如果我們居住的這個(gè)地球,海洋、巖石、地底下的巖漿全部用沙子來填充的話,整個(gè)地球的沙子數(shù)量大概是「10的30次方」。也就是說,一個(gè)和地球一樣大,全部由沙子組成的星球,需要用到「10的30次方」粒沙子。
「10的77次方」比「10的30次方」大「10的37次方」倍,整整37個(gè)0。在比一個(gè)地球的沙子數(shù)量還要多「10的37次方」倍的比特幣私鑰集里,一個(gè)一個(gè)地試,破解出某個(gè)地址對應(yīng)的私鑰,簡直比大海撈針還難。
所以,即便黑客有超級計(jì)算機(jī),都無法暴力破解比特幣私鑰。
這就是為什么很多人說,“比特幣第一次通過技術(shù)手段,保證了個(gè)人的私有財(cái)產(chǎn)神圣不可侵犯”。
04如果比超級計(jì)算機(jī)還要厲害?
雖然未來的科技如何發(fā)展誰都無法準(zhǔn)確預(yù)測,但如果有一天,人類發(fā)明了比超級計(jì)算機(jī)、量子計(jì)算機(jī)還要厲害的計(jì)算機(jī),比特幣私鑰不就不安全了嗎?
確實(shí),很多人想知道量子計(jì)算機(jī)到底對比特幣的安全性有沒有威脅,如果有威脅,比特幣有哪些措施可以應(yīng)對。
鑒于這個(gè)問題不是三言兩語能解釋清楚,后面我們會單獨(dú)開一篇文章,探討這個(gè)問題,敬請期待。
05結(jié)語
當(dāng)然,安全問題不僅僅牽涉到技術(shù)問題,也牽涉到私鑰的保存,錢包授權(quán)等問題。如果是因?yàn)樽约核借€保存不當(dāng),或是電腦中了病毒,或是使用的錢包軟件有漏洞或是有后門,導(dǎo)致私鑰被黑客竊走,那錢包里的比特幣安全性就無從談起了。
但是,因?yàn)樽约旱氖д`導(dǎo)致私鑰被盜,這鍋不能讓比特幣背,不是嗎?
所以,如果有人拿比特幣被盜事件來質(zhì)疑比特幣的安全性,你會怎么回答他呢?