本文來自 Decentralize.today,原文作者:Sean
Odaily 星球日報譯者 | Moni
2²⁵⁶ 是 2 的 256 次方。
對于區塊鍊和加密行業來說,這個數字又代表了什麼意義呢?
我們知道,計算機都是基于二進制數字計算的。下面是一個示例,如果以兩位數字表示的話,每位上的數字隻能用“0”或“1”,那麼我們可以産生下面四種可能的組合(注意我們計數是從 0 開始的):
00 = 0
01 = 1
10 = 2
11 = 3
如果以位數是 3,那麼可能的二進制組合就有九種,即“2 的 3 次方”,如下所示:
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
101 = 7
111 = 8
如果位數有 256 個,那麼就意味着有“2 的 256 次方”種可能的二進制組合,這也是一個非常非常大的數字組合!那麼,“2 的 256 次方”在十進制中是什麼樣子呢?請不要眨眼,答案就是:
115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936
簡單表示的話,就是 1.158x10⁷⁷(也就是 1158 後面有 74 個 0),即“1.158 乘 10 的 77 次方”。
如果你無法直觀了解“2 的 256 次方”——即“1.158 乘 10 的 77 次方”有多大的話,我們在此做一個比較,或許能讓你更清楚地了解這個數字的“可怕”,相比之下:
1、地球上的沙子總數量隻有為“7.5乘 10 的 15 次方”;
2、在“可觀察”的宇宙裡,估計有“30 乘 10 的 21 次方”到“70 乘 10 的 21 次方”或“10 乘 10 的 23 次方”顆恒星;
3、在“可觀察”的宇宙裡,估計有“1 乘 10 的 78 次方”到“1 乘 10 的 83 次方”個原子。
所以,“2 的 256 次方”是可觀察的宇宙中所有恒星總量的 3.5 倍,僅比可觀察宇宙中的原子總量“少幾個零”。
“2 的 256 次方”非常重要,因為它是加密技術在區塊鍊中可能使用的私鑰值的全部“感知”範圍。
在加密貨币世界裡,如果要破解一個 256 位的加密安全系統,就必須要猜對一個 256 位的比特串,而且還要猜對兩次,第一次要在電子簽名的時候,第二次是在解密碼哈希函數的時候。
舉個例子,如果你想找到一條信息,讓它的 SHA256 哈希值等于某個 256 位比特串的話,基本上沒有别的好辦法,隻能随機猜測并檢驗結果——這意味着,平均下來,你需要嘗試“2 的 256 次方”次!(除非你的運氣非常非常非常...好,好到擁有了“2 的 256 次方”分之一次的運氣)
“2 的 256 次方”這個數字比我們通常遇到的數字都要大得多,因此很難去體會它的規模,但你可以把它看作是“2 的 32 次方和自己相乘 8 次”,這樣想會讓你容易理解,因為“2 的 32 次方”大約等于 40 億(4,294,967,296)。現在,我們要做的就是去體會一下 40 億連續乘 8 次是怎樣的概念:
相信我們大多數人都知道,計算機裡的 GPU 可以飛快地進行大量并行計算,因此要是你專門讓 GPU 反複計算密碼哈希函數,一個性能很好的 GPU 每秒也許能算出接近 10 億個哈希值,假如你擁有一堆這樣的 GPU,然後全部塞進計算機裡,讓你的計算機每秒能計算出 40 億個哈希值,那麼最開始的 40 億就代表了每台計算機每秒算出的哈希值數目,想象一下 40 億台這樣滿載 GPU 的計算機——對比一下,雖然谷歌沒有對外公布他們的服務器數量,但有人估算大約有幾百萬台,而現實中谷歌的大部分服務器算力都不如我們滿載 GPU 的電腦,不過我們假設谷歌把上百萬個服務器全部換成滿載 GPU 的計算機,那麼 40 億台計算機大概就相當于 1000 個這種“打了雞血”的谷歌,為了更好地解釋,我們暫時把這種算力成為“千谷歌(thousand Google)”。
現在,全世界人口總數大約有 73 億,接下來,我們假設有 40 億人人手都擁有一台這樣的“千谷歌”計算機。然後,再想象一下有 40億 個地球(作為對比,銀河系檢測到的恒星數量大約為 1000-4000 億顆,雖然不太确定,但估算大緻就在這個範圍),所以相當于銀河系 1% 的恒星會有一個地球,并且這個地球上超過一半的人口都擁有自己的“千谷歌”計算機。
接着想象有 40 億個這樣的銀河系,我們把它叫做“億萬星系超級計算機”,每秒能猜“2 的 160 次方”次。下面,40 億秒大概是 126.8 年,而它的 40 億倍就是 5070 億年,差不多是宇宙年齡的 37 倍,所以就算你有——滿載 GPU 的 40 億台計算機 40 億人手一台“千谷歌”計算機 40 億個像地球一樣的行星 億萬星系超級計算機,再花上 37 倍宇宙年齡的時間,也隻有 40 億分之一的可能性得到密鑰的正确答案。
順便提一下,目前比特币的哈希算力——把所有礦工都加起來,每秒能猜測并檢驗 500 億億個哈希值,隻相當于之前提到的“千谷歌”計算機算力的三分之一。當然這并不是因為真的有幾十億台滿載 GPU 的計算機,而是因為礦工使用的是比 GPU 算力強 1000 倍左右的芯片,它叫做“專用集成電路(ASIC)”,這些硬件是為比特币挖礦量身定做的,但這種芯片什麼都不會做,隻會計算基于 SHA256 算法的哈希值。換句話說,如果你想獲得龐大的算力,就不得不放棄一般的計算需求,去設計一個隻能執行一個單一任務的集成電路。
難道每個加密貨币都有“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 次方”,但仍然是一個異常龐大的數字,所以兩個私鑰相同的可能性超級低,除非有騙子要做壞事。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!