當前位置:首頁 » 比特幣問答 » 比特幣公鑰為何不可逆

比特幣公鑰為何不可逆

發布時間: 2023-05-29 07:57:24

① 【區塊鏈比特幣私鑰、公鑰、簽名

在 了解區塊鏈的基礎名詞概念 提到地址由字元和數字組成,但沒有說明怎樣產生的。銀行卡號由銀行核心系統生成,那比特幣地址是通過什麼生成的呢?看下圖:

對於剛接觸比特幣的小白來說,看到這張圖就蒙圈了,究竟什麼是私鑰、公鑰,為什麼生成個地址要這么麻煩嗎?

現在請大家記住這句話: 私鑰通過橢圓曲線相乘生成公鑰,使用公鑰不能導推出私鑰;公鑰通過哈希函數生成比特幣地址,地址也無法導推出公鑰

通過這么復雜演算法才算出地址,那私鑰和公鑰只是為了生成地址嗎?不是的,他們還有其他用途,我們先了解下私鑰和公鑰。

現在已經講解地址、挖礦、工作量證明、算力、區塊、區塊鏈等等的概念,不知大家還有印象嗎?如果忘記請溫習這些概念,因為後續很多地方都會用到這些概念。明天講解下區塊鏈有哪些特點。

參考書籍:《精通比特幣》
區塊鏈知識專題:

比特幣記賬方式(區塊鏈知識2)
了解塊鏈的基礎名詞概念(區塊鏈知識1)

② ​入門科普:比特幣的私鑰、公鑰和地址是什麼

上一篇,我們講到了幣圈要注意防範傳銷、洗錢等一類的騙局,保護好自己的資產。這一篇,我要告訴大家,進行比特幣交易時,都會用到的私鑰、公鑰與地址,如果你還不了解它們的重要性,隨便交易,很容易弄丟自己的資產。那什麼是私鑰、公鑰與地址?三者之間有著什麼樣的關系呢?

01

私鑰

1.導出:

創建錢包後,輸入密碼可以導出私鑰,私鑰由很長的字元串組成,且是隨機生成的, 一個地址只有一個私鑰。

2.用途:

用於控制交易時的簽名,擁有私鑰才能控制賬戶的資金,相當於銀行賬戶的交易密碼,用來解密公鑰加密的信息。

3.注意事項:

私鑰是用來證明這筆交易的發起人確實是比特幣的所有者。所以 私鑰一定不能曝光,私鑰一旦泄露,你的比特幣將會有被盜的風險。 用戶必須保管好私鑰,防止泄露或丟失。

02

公鑰

1.導出:

公鑰是由私鑰通過演算法生成的,使用了橢圓曲線加密, 通過私鑰可以計算出唯一的公鑰。

2.用途:

公鑰是用來驗證交易的簽名,一個私鑰簽名的數據,只有對應的公鑰才能對其進行驗證,公鑰相當於銀行賬戶,公開後無風險。

03

地址

1.導出:

地址由公鑰生成的,使用了哈希運算。創建錢包後會生成一個以「0x」 開頭的 42 位字元串,這個字元串就是錢包地址,一個錢包對應一個錢包地址, 地址唯一且不能修改,也就是說一個錢包中所有代幣的轉賬收款地址都是一樣的。

2.用途:

由於公鑰太長,在交易中不方便使用,所以就有了地址,地址是由公鑰生成的,地址相當於銀行卡號,用來發送和接收比特幣。

3.注意事項:

平台上不同代幣的轉賬收款地址一般都不同,因此,轉幣到交易平台前一定要確認好地址。

總結

私鑰 → 公鑰 → 錢包地址 (不可逆)

私鑰用來簽名交易,公鑰用來驗證私鑰簽名的交易,地址用來收款。

公鑰、私鑰以及地址都在比特幣交易中起到了不同的作用,所以才能順利的完成一筆數字貨幣的交易。 所以用戶必須好好保存,防止泄露重要信息。

③ 比特幣的地址、公鑰、私鑰,你都了解了嗎

了解比特幣,就不可避免地要掌握什麼是比特幣的地址、公鑰、私鑰,下面我們一個一個來解釋。

地址,就好比是銀行賬(卡)號,在創建數字錢包後就會自動生成,簡單來說,就是創建錢包的時候,先產生一對私鑰和公鑰,然後公鑰通過一套演算法生成地址,這個地址實質上是一串字元,比如。

像銀行賬(卡)號可以用來收款一樣,比特幣地址也可以用來接收比特幣。

這個比特幣地址不單單給你轉幣的人知道,連整個比特幣網路的人都能查看,可以說,全球所有用戶的地址都可以被任何人知道。為什麼這樣說呢?因為比特幣本質就是一個大型的公開賬本,所有交易對所有人都是可見的。而交易記錄中包括了交易流水單號、發幣人的發幣地址、收幣人地址、發幣人的找零地址。

私鑰,可以看作是銀行密碼,是一串很長的由錢包生成的隨機數,比如, LBB9ZXMCJ。私鑰是唯一能夠證明你擁有的比特幣是屬於你的,也只有用私鑰才能轉賬、交易和使用數字錢包里的比特幣。

我們都知道了,銀行密碼絕對不能泄露給別人,私鑰也一樣,打死也不要告訴他人,否則你的比特幣很容易就被轉走。銀行的錢被盜了,因為有國家監管和第三方信用,還有可能被追回,但比特幣是去中心化的,沒有第三方,自己的幣只能自己負責看管,丟了,或被他人轉走了,就永遠拿不回來了。所以千萬千萬不要把私鑰告訴他人,不要把私鑰保存在手機或者電腦上,不要通過網路傳輸你的私鑰,那怎麼辦?記住了,要用筆寫在紙上,寫兩到三份分別放在不同的地方,保管好。

公鑰,顧名思義,是可以公開的,也是像地址和私鑰一樣,是一串長長的字元。公鑰由私鑰通過橢圓曲線加密演算法生成,通過私鑰可以算出唯一一個公鑰,但公鑰不能逆向推導出私鑰。

那到底比特幣地址、公鑰、私鑰在交易中起什麼作用的呢?

首先,錢包通過加密演算法把私鑰加密成字元串(也叫作簽名),然後把這個字元串,和公鑰一起寫到交易信息里,再發給礦工。礦工收到信息後,就會將簽名、公鑰寫入一個驗證函數,如果得出的結果為「true」,那麼這個交易會被確認為真實有效,就能被驗證通過。而結果為「false」,則說明這筆交易存在問題,不能被驗證通過。

通過以上淺顯的文字,希望能幫到你對比特幣的地址、公鑰和私鑰有一個初步的了解吧!感謝你的閱讀!

④ 比特幣有沒有可能被破解

比特幣的破解是有可能但幾乎不可能的,僅僅存在理論可能。

從背景和基本原理上來講,比特幣賬戶購物城是通過秘鑰-公鑰-地址的結構形式來構成的,可以大致理解成鑰匙-箱子-箱子編號的基本模式,比特幣的破解實際上就是從箱子編號或者從箱子入手破解到鑰匙。

破解比特幣的攻擊手段一般意義上只有兩種,一種是通過字典的方式進行攻擊,也就是通過腦錢包直接破解。這種破解方式並非直接破解比特幣持有者的比特幣秘鑰,而是去破解比特幣持有者為記憶比特幣秘鑰而新設置的便捷密碼,也就是腦錢包。如果是這種方式的話,首先需要比特幣持有者通過腦賬戶設置一個新密碼,同時需要對包含別的比特幣持有者的個人生活信息十分了解才能破解。如果比特幣持有者不設置腦賬戶的話,那麼就無法通過這個方式進行破解。

其次是通過暴力破解的手段進行破解,也就是通過枚舉法列舉出所有可能的數字字母與符號的排列組合。以這些全部的組合一一進行嘗試破解。但通過這種方式破解出比特幣秘鑰的可能性就更低了,因為比特幣的秘鑰是由256位二進制數字組成的。這是一個非常大的數字,使用十進制進行表示大約是十的77次方。目前市面上絕大多數的電腦算力是無法完成這個計算過程的,即便完成也需要花費幾千年甚至上萬年的時間。只有科研機構與高校內的部分量子計算機才可能實現這一目標。

⑤ 第4課 區塊鏈中的密碼學 學習總結

這是加入公Ulord深度學習第四課,楊博士給大家主講區塊鏈中的密碼學問題,本期課程令讓我弄懂了一個一直困擾著我的關於公鑰和私鑰的問題,他們之間到底是什麼關系?再這次學習中我得到了答案,現在我把我學習到的內容跟大家分享一下。

區塊鏈里的公鑰和私鑰,是非對稱加密里的兩個基本概念。

公鑰與私鑰,是通過一種演算法得到的一個密鑰對,公鑰是密鑰對中公開的部分,私鑰是非公開的部分。公鑰通常用於加密會話,就是消息或者說信息,同時,也可以來用於驗證用私鑰簽名的數字簽名。

私鑰可以用來進行簽名,用對應的公鑰來進行驗證。通過這種公開密鑰體製得到的密鑰對能夠保證在全世界范圍內是唯一的。使用這個密鑰對的時候,如果用其中一個密鑰加密數據,則必須用它對應的另一個密鑰來進行解密。

比如說用公鑰加密的數據就必須用私鑰才能解密,如果用私鑰進行加密,就必須要對應的公鑰才能解密,否則無法成功解密。另外,在比特幣的區塊鏈中,則是通過私鑰來計算出公鑰,通過公鑰來計算出地址,而這個過程是不可逆的。

⑥ bitcoin私鑰是如何產生的

比特幣地址和私鑰是怎樣生成的?比特幣使用橢圓曲線演算法生成公鑰和私鑰,選擇的是secp256k1曲線。生成的公鑰是33位元組的大數,私鑰是32位元組的大數,錢包文件wallet.dat中直接保存了公鑰和私鑰。我們在接收和發送比特幣時用到的比特幣地址是公鑰經過演算法處理後得到的,具體過程是公鑰先經過SHA-256演算法處理得到32位元組的哈希結果,再經過RIPEMED演算法處理後得到20位元組的摘要結果,再經過字元轉換過程得到我們看到的地址。這個字元轉換過程與私鑰的字元轉換過程完成相同,步驟是先把輸入的內容(對於公鑰就是20位元組的摘要結果,對於私鑰就是32位元組的大數)增加版本號,經過連續兩次SHA-256演算法,取後一次哈希結果的前4位元組作為校驗碼附在輸入內容的後面,然後再經過Base58編碼,得到字元串。

⑦ 比特幣一個UTXO交易為什麼要經過6個區塊確認才被認為更改不可逆(或者說幾乎不可逆)

你說的是對的,的確會回滾, 如果的交易不幸被打包到分叉上面了,這個交易很有可能會在主鏈被同步後被取消掉。

至於為什麼要6個確認是因為加大蒙出最優解難度(防止單節點造假)。 一個塊可能還能蒙出一個最優解,6個塊一起蒙出基本上不可能。 跟分叉關系不大

⑧ 比特幣基礎知識 你絕對想不到


橢圓曲線數字簽名演算法
橢圓曲線數字簽名演算法(ECDSA)是使用橢圓曲線對數字簽名演算法(DSA)的模擬,該演算法是構成比特幣系統的基石。
私鑰
非公開,擁有者需安全保管。通常是由隨機演算法生成的,說白了,就是一個巨大的隨機整數,32位元組,256位。
大小介於1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之間的數,都可以認為是一個合法的私鑰。
於是,除了隨機方法外,採用特定演算法由固定的輸入,得到32位元組輸出的演算法就可以成為得到私鑰的方法。於是,便有了迷你私鑰(Mini Privkey),原理很簡單,例如,採用SHA256的一種實現:
private key = SHA256()1
迷你私鑰存在安全問題,因為輸入集合太小,易被構造常見組合的彩虹表暴力破解,所以通常仿輪納還是使用系統隨機生成的比較好,無安全隱患。
公鑰
公鑰與私鑰是相對應的,一把私鑰可以推出唯一的公鑰,但公鑰卻無法推導出私鑰。公鑰有兩種形式:壓縮與非壓縮。
早期比特幣均使用非壓縮公鑰,現大部分客戶端已默認使用壓縮公鑰。
這個貌似是比特幣系統一個長得像feature的bug,早期人少活多代碼寫得不夠精細,openssl庫的文檔又不足夠好,導致Satoshi以為必須使用非壓縮的完整公鑰,後來大家發現其實公鑰的左右兩個32位元組是有關聯的,左側(X)可以推出右側(Y)的平方值,有左側(X)就可以了。
現在系統里兩種方式共存,應該會一直共存下去。兩種公鑰的首個位元組為標識位,壓縮為33位元組,非壓縮為65位元組。以0x04開頭為非壓縮,0x02/0x03開頭為壓縮公鑰,0x02/0x03的選取由右側Y開方後的奇偶決定。
壓縮形式可以減小Tx/Block的體積,每個Tx Input減少32位元組。
簽名
使用私鑰對數據進行簽署(Sign)會得到簽名(Signature)。通常會將數據先生成Hash值,然後對此Hash值進行簽名。簽名(signature)有兩部分組成: R + S。由簽名(signature)與Hash值,便可以推出一個公鑰,驗證此公鑰,便可知道此簽名是否由公鑰對應的私鑰簽名。
通常,每個簽名會有三個長度:73、72、71,符合校驗的概率為25%、50%、25%。所以每次簽署後,需要找出符合校驗的簽名長度,再提供給驗證方。
地址
地址是為了人們交換方便而弄出來的一個方案,因為公鑰太長了(130字元串或66字元串)。地址長度為25位元組,轉為base58編碼後,為34或35個字元。base58是類似base64的編碼,但去掉了易引起視覺混淆的字元,又在地址末尾添加了4個位元組校驗位,保障在人們交換個別字元錯誤時,也能夠因地址校驗失敗而制止了誤操作。
由於存在公鑰有兩種形式,那麼一個公鑰便對應兩個地址。這兩個地址都可由同一私鑰簽署交易。
公鑰生成地址的演算法:
Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111
Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))
Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))
Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)1234
下圖是非壓縮公鑰生成地址的過程:
對於壓縮公鑰生成地址時,則只取公鑰的X部分即可。
推導關系
三者推導關系:私鑰
公鑰
兩個地址。過程均不可逆。擁有私鑰便擁有一切,但通常為了方便,會把對應的公鑰、地址也存儲起來。
交易
比特幣的交易(Transation,縮寫Tx),並不是通常意義的桐散交易,例如一手交錢一手交貨,而是轉賬。交易由N個輸入和M個輸出兩部分組成。交易的每個輸入便是前向交易的某個輸出,那麼追蹤到源頭,必然出現一個沒有輸入的交易,此類交易稱為CoinBase Tx。CoinBase類備沒交易是獎勵挖礦者而產生的交易,該交易總是位於Block塊的第一筆。
擁有一個輸入與輸出的Tx數據:
Input:
Previous tx:
Index: 0
scriptSig:
241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160
OP_EQUALVERIFY OP_CHECKSIG12345678910
一旦某個Tx的第N個輸出成為另一個Tx的輸入,那麼該筆比特幣即為已花費。每個交易有唯一Hash字元串來標識,通過對交易數據做兩次SHA256哈希運算而來:
Tx Hash ID = SHA256(SHA256(Tx Data))1
礦工費
礦工費(Transaction Fee)是鼓勵礦工將Tx打包進Block的激勵報酬。計算一筆交易的礦工費:
Transaction Fee = SUM(Inputs amount) - SUM(Outputs amount)1
每筆Tx的礦工費必然大於等於零,否則該筆Tx即為非法,不會被網路接收。
數據塊
數據塊(Block)是存儲Block Meta與Tx的地方。Block的第一筆Tx總是CoinBase Tx,因此Block中的交易數量總是大於等於1,隨後是這段時間內網路廣播出來的Tx。
找到合適的Block是一件非常困難的事情,需要通過大量的數學計算才能發現,該計算過程稱為「挖礦」。首個發現者,會得到一些比特幣作為獎勵。
數據鏈
多個Block連接起來成為數據鏈(Block Chain)。
為了引入容錯與競爭機制,比特幣系統允許Block Chain出現分叉,但每個節點總是傾向於選擇最高的、難度最大的鏈,並稱之為Best Chain,節點只認可Best Chain上的數據。
首個Block稱為Genesis Block,並設定高度為零,後續每新增一個Block,高度則遞增一。目前是不允許花費Genesis Block中的比特幣的。
每個Block中的Tx在此Block中均唯一
一個Tx通常只會在一個Block里,也可能會出現在多個Block中,但只會在Best Chain中的某一個Block出現一次
貨幣存儲
比特幣是密碼貨幣、純數字化貨幣,沒有看得見摸得著的硬幣或紙幣。一個人持有比特幣意味著:
其擁有一些地址的私鑰
這些地址是數筆交易的輸出,且未花費
所有貨幣記錄均以交易形式存儲在整個blockchain數據塊中,無交易無貨幣。貨幣不會憑空產生,也不會憑空消失。遺失了某個地址的私鑰,意味著該地址上的Tx無法簽署,無法成為下一個Tx的輸入,便認為該筆比特幣永久消失了。
貨幣發行
既然所有交易的輸入源頭都是來自CoinBase,產生CoinBase時即意味著貨幣發行。比特幣採用衰減發行,每四年產量減半,第一個四年每個block的coinbase獎勵50BTC,隨後是25btc, 12.5btc, 並最終於2140年為零,此時總量達到極限為2100萬個btc。
減半周期,嚴格來說,並不是准確的四年,而是每生成210000個block。之所以俗稱四年減半,是因為比特幣系統會根據全網算力的大小自動調整難度系統,使得大約每兩周產生2016個block,那麼四年約21萬塊block。
該函數GetBlockValue()用於計算挖得Block的獎勵值:
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
nSubsidy = (nHeight / 210000);
return nSubsidy + nFees;
}123456789
當達到2100萬btc以後,不再有來自CoinBase的獎勵了,礦工的收入來源僅剩下交易的礦工費。此時,每個block的收入絕對值btc很低,但此時比特幣應當會非常繁榮,幣值也會相當的高,使得礦工們依然有利可圖。
杜絕多重支付
傳統貨幣存在多重支付(Double Spending)問題,典型的比如非數字時代的支票詐騙、數字時代的信用卡詐騙等。在比特幣系統里,每筆交易的確認均需要得到全網廣播,並收錄進Block後才能得到真正確認。每筆錢的花銷,均需要檢測上次輸入交易的狀態。數據是帶時間戳的、公開的,BlockChain由巨大的算力保障其安全性。所以比特幣系統將貨幣的多重支付的風險極大降低,幾近於零。通過等待多個Block確認,更是從概率上降低至零。一般得到6個確認後,可認為非常安全。但對於能影響你人生的重大支付,建議等待20~30個確認。
匿名性
任何人均可以輕易生成大量的私鑰、公鑰、地址。地址本身是匿名的,通過多個地址交易可進一步提高匿名性。但該匿名性並不像媒體宣傳的那樣,是某種程度上的匿名。因為比特幣的交易數據是公開的,所以任何一筆資金的流向均是可以追蹤的。
不了解比特幣的人為它的匿名性產生一些擔憂,比如擔心更利於從事非法業務;了解比特幣的人卻因為它的偽匿名性而苦惱。傳統貨幣在消費中也是匿名的,且是法律保障的,大部分國家都不允許個人塗畫紙幣。
地址本身是匿名的,但你可以通過地址對應的私鑰簽名消息來向公眾證明你擁有某個比特幣地址。
其他名詞
哈希
哈希(Hash)是一種函數,將一個數映射到另一個集合當中。不同的哈希函數映射的空間不同,反映到計算機上就是生成的值長度不一樣。同一個哈希函數,相同的輸入必然是相同的輸出,但同一個輸出卻可能有不同的輸入,這種情況稱為哈希碰撞。
常見的哈希函數有CRC32, MD5, SHA1, SHA-256, SHA-512, RIPEMD-160等,哈希函數在計算中有著非常廣泛的用途。比特幣里主要採用的是SHA-256和RIPEMD-160。
腦錢包紙錢包
前面提到過的腦錢包與紙錢包,這其實不算是錢包的分類,只是生成、存儲密鑰的方式而已。腦錢包屬於迷你私鑰的產物。腦錢包就是記在腦袋裡的密鑰,紙錢包就是列印到紙上的密鑰,僅此而已。
有同學提到過,以一個計算機文件作為輸入,例如一個數MB大小的照片,通過某種Hash運算後得到私鑰的方法。這個方案的安全性還是不錯的,同時可以防止盜私鑰木馬根據特徵掃描私鑰。文本形式存儲私鑰是有特徵的,而一個照片文件卻難以察覺,即使放在雲盤等第三方存儲空間中都是安全的。

⑨ 區塊鏈的加密技術

數字加密技能是區塊鏈技能使用和開展的關鍵。一旦加密辦法被破解,區塊鏈的數據安全性將受到挑戰,區塊鏈的可篡改性將不復存在。加密演算法分為對稱加密演算法和非對稱加密演算法。區塊鏈首要使用非對稱加密演算法。非對稱加密演算法中的公鑰暗碼體制依據其所依據的問題一般分為三類:大整數分化問題、離散對數問題和橢圓曲線問題。第一,引進區塊鏈加密技能加密演算法一般分為對稱加密和非對稱加密。非對稱加密是指集成到區塊鏈中以滿意安全要求和所有權驗證要求的加密技能。非對稱加密通常在加密和解密進程中使用兩個非對稱暗碼,稱為公鑰和私鑰。非對稱密鑰對有兩個特點:一是其間一個密鑰(公鑰或私鑰)加密信息後,只能解密另一個對應的密鑰。第二,公鑰可以向別人揭露,而私鑰是保密的,別人無法通過公鑰計算出相應的私鑰。非對稱加密一般分為三種首要類型:大整數分化問題、離散對數問題和橢圓曲線問題。大整數分化的問題類是指用兩個大素數的乘積作為加密數。由於素數的出現是沒有規律的,所以只能通過不斷的試算來尋找解決辦法。離散對數問題類是指基於離散對數的困難性和強單向哈希函數的一種非對稱分布式加密演算法。橢圓曲線是指使用平面橢圓曲線來計算一組非對稱的特殊值,比特幣就採用了這種加密演算法。非對稱加密技能在區塊鏈的使用場景首要包含信息加密、數字簽名和登錄認證。(1)在信息加密場景中,發送方(記為A)用接收方(記為B)的公鑰對信息進行加密後發送給

B,B用自己的私鑰對信息進行解密。比特幣交易的加密就屬於這種場景。(2)在數字簽名場景中,發送方A用自己的私鑰對信息進行加密並發送給B,B用A的公鑰對信息進行解密,然後確保信息是由A發送的。(3)登錄認證場景下,客戶端用私鑰加密登錄信息並發送給伺服器,伺服器再用客戶端的公鑰解密認證登錄信息。請注意上述三種加密計劃之間的差異:信息加密是公鑰加密和私鑰解密,確保信息的安全性;數字簽名是私鑰加密,公鑰解密,確保了數字簽名的歸屬。認證私鑰加密,公鑰解密。以比特幣體系為例,其非對稱加密機制如圖1所示:比特幣體系一般通過調用操作體系底層的隨機數生成器生成一個256位的隨機數作為私鑰。比特幣的私鑰總量大,遍歷所有私鑰空間獲取比特幣的私鑰極其困難,所以暗碼學是安全的。為便於辨認,256位二進制比特幣私鑰將通過SHA256哈希演算法和Base58進行轉化,構成50個字元長的私鑰,便於用戶辨認和書寫。比特幣的公鑰是私鑰通過Secp256k1橢圓曲線演算法生成的65位元組隨機數。公鑰可用於生成比特幣交易中使用的地址。生成進程是公鑰先通過SHA256和RIPEMD160哈希處理,生成20位元組的摘要成果(即Hash160的成果),再通過SHA256哈希演算法和Base58轉化,構成33個字元的比特幣地址。公鑰生成進程是不可逆的,即私鑰不能從公鑰推導出來。比特幣的公鑰和私鑰通常存儲在比特幣錢包文件中,其間私鑰最為重要。丟掉私鑰意味著丟掉相應地址的所有比特幣財物。在現有的比特幣和區塊鏈體系中,現已依據實踐使用需求衍生出多私鑰加密技能,以滿意多重簽名等愈加靈敏雜亂的場景。

⑩ 比特幣的安全性到底有多高,你有懷疑比特幣的安全性嗎

近期,比特幣突破新高,一枚比特幣價值近26萬人民幣,一枚比特幣換一輛特斯拉。對於剛入圈的新人來說,你肯定很關心比特幣的安全問題。

那麼,比特幣安全嗎?換句話說, 錢包里的比特幣,容易被黑客盜走嗎?

01
私鑰、公鑰、地址

就像銀行取款、網銀轉賬需要輸入密碼一樣, 動用錢包里的比特幣也需要密碼,這個密碼被稱之為「私鑰」。

與「私鑰」對應的是「公鑰」,「公鑰」就像你的銀行賬戶。 每個銀行賬戶都有唯一的賬戶編號,也就是銀行卡號。 在比特幣網路中,這個銀行卡號就是「地址」。 別人只要知道你的「銀行卡號」(即地址),就可以給你轉比特幣了。

在銀行,開戶流程基本是「開設銀行賬戶——給銀行卡號——設置銀行卡密碼——開戶成功」。但在區塊鏈世界裡,是先設置「密碼」(私鑰),再開設「銀行賬戶」(公鑰),最後給「銀行卡號」(地址)。

如果你路上撿到了一張紙條,上面只寫著銀行卡密碼,但沒寫銀行卡號,即便這個銀行卡密碼是真的,你也無法取走相關賬戶里的錢。

但在區塊鏈世界,你只要知道了別人的「銀行卡密碼」(私鑰),就可以知道別人的「銀行賬戶」(公鑰)和「銀行卡號」(地址),可以取走裡面的幣。

為什麼會這樣呢?

這是因為在區塊鏈中,私鑰通過加密生成公鑰,公鑰轉換一下格式生成地址。也就是說, 私鑰可以推導出公鑰,公鑰可以推導出地址。


02
反向推導?沒門!

既然「私鑰可以推導出公鑰,公鑰可以推導出地址」,動用賬戶里的比特幣又必須輸入「密碼(私鑰)」, 那黑客要竊取你錢包里的比特幣,必須、也只需拿到「私鑰」即可。

理論上,黑客有2種方法竊取你的私鑰:

第一種方法並不可行,因為比特幣採用的加密演算法,「失之毫釐,差之千里!」。 輸入的內容,稍稍變動哪怕一丁點的東西,加密後輸出的結果和之前輸出的結果也有 天壤之別 ,而且這些結果沒有規律可循。

所以,這種加密演算法是「單向的」、「不可逆的」,黑客無法通過輸出(地址/公鑰)推導出輸入(私鑰)。


03
暴力破解比特幣私鑰有多難?

既然第一種方法不可行,那第二種方法如何?在回答這個問題之前,我們先看下私鑰是怎麼產生的。

假設你拋硬幣,正面朝上為1,反面朝上為0,連續拋256次,把每次拋的結果記錄下來,再轉換成十六進制數,就是一個比特幣私鑰。

What? 這么簡單?這么任性?

沒錯,比特幣的私鑰就是通過程序「拋256次硬幣」,隨機生成的。所以, 比特幣私鑰的本質是256位二進制數

每次拋硬幣,都有正反2面,所以拋256次,一共可以出現「2 x 2 x2 x 2……2 x 2x2」,即256個2相乘,也就是「2的256次方」種結果。 所以,比特幣的私鑰總數,理論上有「2的256次方」個。

註: 私鑰總數的實際值比上面的理論值略低,因為有一小部分私鑰不可用,但對總數影響微乎其微。

「2的256次方」是多大呢?它約等於「10的77次方」。那「10的77次方」又是多大呢?

如果我們居住的這個地球,海洋、岩石、地底下的岩漿全部用沙子來填充的話,整個地球的沙子數量大概是「10的30次方」。也就是說, 一個和地球一樣大,全部由沙子組成的星球,需要用到「10的30次方」粒沙子。

「10的77次方」比「10的30次方」大「10的47次方」倍,整整47個0。在比一個地球的沙子數量還要多「10的47次方」倍的比特幣私鑰集里,一個一個地試,破解出某個地址對應的私鑰,簡直比大海撈針還難。

所以,即便黑客有超級計算機,都無法暴力破解比特幣私鑰。

這就是為什麼很多人說 , 「比特幣第一次通過技術手段,保證了個人的私有財產神聖不可侵犯」。

04
如果比超級計算機還要厲害?

雖然未來的 科技 如何發展誰都無法准確預測,但如果有一天,人類發明了比超級計算機、量子計算機還要厲害的計算機,比特幣私鑰不就不安全了嗎?

確實,很多人想知道量子計算機到底對比特幣的安全性有沒有威脅,如果有威脅,比特幣有哪些措施可以應對。

鑒於這個問題不是三言兩語能解釋清楚,後面我們會單獨開一篇文章,探討這個問題,敬請期待。

05
結語

當然,安全問題不僅僅牽涉到技術問題,也牽涉到私鑰的保存問題。 如果是因為自己私鑰保存不當,或是電腦中了病毒,或是使用的錢包軟體有漏洞或是有後門,導致私鑰被黑客竊走,那錢包里的比特幣安全性就無從談起了。

但是,因為自己的失誤導致私鑰被盜,這鍋不能讓比特幣背,不是嗎?

所以,如果有人拿比特幣被盜事件來質疑比特幣的安全性,你會怎麼回答他呢?

熱點內容
區塊鏈關鍵股 發布:2025-09-15 08:10:04 瀏覽:664
如何快速的圈幣 發布:2025-09-15 07:29:55 瀏覽:129
btc芝加哥 發布:2025-09-15 07:05:21 瀏覽:371
區塊鏈neo礦幣分析 發布:2025-09-15 07:04:00 瀏覽:848
eth能漲起來嗎 發布:2025-09-15 06:08:57 瀏覽:854
1什麼是區塊鏈 發布:2025-09-15 06:06:14 瀏覽:218
btc合約怎麼盈利 發布:2025-09-15 05:56:31 瀏覽:950
神馬m20s一天能挖多少個btc 發布:2025-09-15 05:47:04 瀏覽:705
星火礦池怎麼設置自動提幣 發布:2025-09-15 05:23:24 瀏覽:16
基於區塊鏈數據共享 發布:2025-09-15 05:19:20 瀏覽:419