每個加密貨幣裡,一定都有「2 的 256 次方」個私鑰嗎?
星球日報 /原文作者:Sean/譯者:Moni/張詠晴編譯
2019-04-16 08:40

 

2²⁵⁶ 是 2 的 256 次方。

 

對於區塊鏈和加密貨幣產業來說,這個數字又代表了什麼意義呢?

 

不完全是這樣,並非所有「2 的 256 次方」範圍內的數字都會用在查找匹配公鑰的數字曲線上。比特幣和以太坊(以及其他許多加密貨幣)使用的是 secp256k1 橢圓曲線,該區先定義的公鑰匹配範圍略小於「2 的 256 次方」。如果再略微準確地表達 secp256k1 橢圓曲線數字範圍的話,可能這個結果是:

 

432420386565659656852420866394968145599按照 SEC2 標準的定義,其密鑰數值範圍是從「0」到0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141,假設我們用「N」來代表這個數值,那麼用十進制表達N的話:

 

N=115792089237316195423570985008687907852837564279074904382605163141518161494336

2²⁵⁶-N = 432420386565659656852420866394968145599

 

在數學上,這是一個近似值的問題,就好像我們會把100億減10的結果看作仍是100億一樣。(星球君 o-daily 注:簡單解釋一下「secp256k1」的含義,它其實是「SEC」、「P」、「256」、「K」和「1」這幾個字母和數字的組合,每個都有不同的含義:其中「SEC」代表了  SEC2 高效密碼學的標準,「P」代表曲線坐標是素數域,「256」表示素數是 256 位長,「K」表示它是所謂 Koblitz 曲線的變量,「1」表示它是該類型的第一個、也是唯一的曲線標準。)

 

稍等,除了比特幣,我們再來看看以太坊的密鑰

 

比特幣地址是公共地址的 RIPEMD-160,RIPEMD是一種加密哈希函數,由魯汶大學 Hans Dobbertin,Antoon Bosselaers 和 Bart Prenee 組成的 COSIC 研究小組於 1996 年發布的。 RIPEMD 是以 MD4 為基礎原則所設計,而且其表現與更有名的 SHA-1 類似。RIPEMD-160 是以原始版 RIPEMD 所改進的 160 位元版本,而且是 RIPEMD 系列中最常見的版本。 RIPEMD-160 是設計給學術社群所使用的,剛好相對於 SHA-1 和 SHA-2 算法。 另一方面,RIPEMD-160 比 SHA-1 較少使用,所以可能時候 RIPEMD-160 比 SHA 不常被審查的原因之一。另外,RIPEMD-160 並沒有任何專利所限制。

 

同時也存在著 128,256,320 位元的這種算法,稱為 RIPEMD-128、RIPEMD-256 和 RIPEMD-320。 128 位版本的用意僅是取代原始版RIPEMD,因為原版也同樣是 128 位元,並且被發現有潛在的安全問題。 而 256 和 320 位版本只有減少碰撞發生的機率,但沒有提升安全等級。不過,RIPEMD 的設計者們沒有真正設計 256 和 320 位元這兩種標準,他們只是在 128 位元和 160 位元的基礎上,修改了初始參數和 s-box 來達到輸出為 256 和 320 位元。所以,256 位的強度和 128 相當,而 320 位的強度和 160 位相當,且 RIPEMD 建立在 md 的基礎之上,所以其添加數據的方式和 md5 完全一樣。

 

以太坊將密鑰長度減少到 160 位,這仍然是一個非常大的數字,以十進制表示的話,就是:

 

2¹⁶⁰= 1.46x10⁴⁸或1461501637330902918203684832716283019655932542976。

 

這個數字有多大呢?目前我們可觀測的宇宙寬度為 8.8 x 10²⁶ 或 8.8 x 10²⁹ 毫米,如果我們把一個比特幣或以太坊地址看作為 1 毫米,那麼其密鑰長度相當於超過了可觀察宇宙長度的兩倍。

 

對於以太坊來說,其唯一錢包地址實際總量可能是 1.46 x 10⁴⁸,這也引發了一個棘手的問題:我們有 2²⁵⁶ 個可能的私鑰卻要映射到 2¹⁶⁰ 個可能的公鑰上,邏輯告訴我們,每個公鑰都可能會有超過 1 個私鑰。但即便如此,這也意味著你需要在 2⁹⁶ 個私鑰(假設每兩個私鑰映射一個公鑰)中找到能夠對應某個地址的公鑰哈希_在此,我也許只能祝你好運了!

 

總結

 

加密貨幣私鑰的可能值範圍非常非常大,即便其可能會略低於 SEC2 標準中定義的「2 的 256 次方」,但仍然是一個異常龐大的數字,所以兩個私鑰相同的可能性超級低,除非有騙子要做壞事。

 

本文為巴比特資訊授權刊登,原文標題為「加密世界里最強大的數字:2²⁵⁶