雙重哈希之謎

作者:CraigWright (比特幣SV是原初比特幣)

原文標題《 The puzzle of the double hash》,發於2019年4月30日《Medium》

譯者:劉曄律師 上海市海上律師事務所

比特幣有一個長期的未解之謎:我為什麼要用雙重哈希(double hash)?

首先,Core幣維基對雙哈希問題的解釋是完全錯誤的。


CSW | 雙重哈希之謎



如果你雙哈希一個值,生日攻擊仍然存在。如果有兩個值,哈希得到相同結果,則形成生日攻擊或衝突,仍會碰撞。展示出來很簡單。 假設我們有兩個值 X和 Y。給定哈希函數,有一個碰撞,如下:

A ==Hash(X) == Hash(Y)。

現在,考慮到 X和Y的哈希值,比如為A,可以很容易看到雙哈希或平方哈希的過程並沒有幫助,因為:

Hash(A)== Hash[Hash(X)] == Hash[Hash(Y)]。

實際上,因為增加哈希操作,我們丟掉了一些信息。可以說,如果迭代一個哈希 n 次,發生衝突的可能性就會增加 n 倍。在這裡我有些自由,解釋時所涉及的數學並不完全準確,但有一點是真的,即每一次使用相同的哈希函數重複哈希一個函數時,就失去了這個函數的衝突安全性。事實上,如果我們觀察比特幣地址的創建過程,可以發現雙哈希函數進一步增加了這個效應。換句話說,在哈希之哈希的場景,比單一哈希甚至是同一哈希函數的哈希(一種雙重哈希)更有可能導致碰撞。

A ==Hash-a(X1) == Hash-a(Y1)

B1== Hash-a(X2)

B2== Hash-a(Y2)

如果 B1= B2,那麼就是A的場景。

但是,也可能存在一些值,比如:

C ==Hash-b(B1) == Hash-b(B2)。

因此,當我們使用獨立的哈希函數(例如 SHA256和RIPEMD160)時,在兩個值(即兩個獨立的公鑰)之間發生衝突的概率會增加(比使用雙重哈希更多)。

因此,我必須指出,在這個領域(和許多其他領域一樣),比特幣,抱歉,Core幣維基是錯誤的。比特幣中的雙哈希不是用來提高安全性的。在尋址中,它確實增加了一個好處,那就是,如果一個哈希函數被發現是脆弱的,另一個哈希函數的安全時間可以更長些,但正如上面的場景,衝突也可能更容易發現。所以,很不幸,這種表面上的好處並不是採用雙哈希的原因。


CSW | 雙重哈希之謎


Ferguson 和 Schneier (實用密碼學)提出使用雙哈希函數來防禦 SHA-256的“長度擴展”攻擊,他們將其命名為 SHA-256d。Merkle-damgrd 哈希函數(如 MD5或 SHA-256)很容易受到這種攻擊。如果這是一個問題,我們可以使用 HMAC,但現實是,比特幣是一個經濟系統。比特幣的安全性總是關於攻擊成本vs防禦成本的。

雖然一個特定的SHA-256(k||d)計算可能遭受一個長度擴展攻擊,但是也很容易檢測、監視和阻止.此種情況下, 我真不認為查找腳本是一個問題。事實上,這個問題真的無關緊要,不過我不會在這裡詳細說明。現在有很多更好的方法來阻止對比特幣的長度延長攻擊。這就是腳本的力量所在。

因此,如果它降低了安全性,我們要這麼做呢?

我們有不少專利出來覆蓋所有這些問題。真不幸,由於那些虛假比特幣分叉的存在,不得不對人們不瞭解的技術申請專利。比特幣中雙哈希函數的一個用途是,在比特幣擴容時,對個別驗證函數特定化。

如果你開始思考這個問題,將會發現:

A== Hash(X),

現在:

B== Hash(A)

我們將 (A) 值發送給礦工,但不允許他們在沒有個別交易的情況下廣播一個區塊。 在默克爾樹結構中,可以做到分離一個交易,而發送和解決整個區塊。這樣做將允許我們構建一個 ASIC 挖礦設備,它不將數據存入區塊。礦工現在是一個分佈式函數。

這樣,工作量證明和驗證可以交給專門化的實體。ASIC設備可以在發現有效塊時將費用支付給驗證設備,但是系統可以做到不讓他們相互欺騙但可以相互交流。事實上,他們甚至可以與不同的礦工和礦池達成協議,不必擔心出現問題:如果一方作弊,雙方失敗。

當問到這樣的設備可以放在哪裡時,事情變得有趣。中國和中亞有些地方有電力,但沒有網絡接入。有能力分佈這些功能是有用的。

通過默克爾樹,我們可以允許一個驗證節點作為中國以外的分佈式系統發送簡單的但易於驗證的哈希函數,這些哈希函數滿足礦工檢查,而無需驗證所有的交易部分。換句話說,如果區塊傳播在某些地區是個問題,對於 BSV 中的大規模比特幣礦工也不是問題。

事實上,這只是冰山一角。在今年晚些時候,當專利開始公佈時,你會看到更多。

非法內容

使用雙哈希函數也可以創建一個系統,允許在遵守法律之下進行分佈和驗證。分佈式函數可以發送到專門系統,在本地管轄範圍內發揮作用。這樣,我們有一個不可篡改的數據存儲,可以通過已驗證哈希進行過濾,並允許在某些司法區域隨後刪除非法內容。也就是說,比特幣中的雙哈希創造了一種可以選擇性地傳播內容的方法。

區塊鏈是不可篡改的,但是通過雙哈希,可以限制和記錄對區塊鏈記錄的請求。

在這裡,我提出一個假設性的問題......

如果 BTC,ETH 等等都開始存儲兒童色情和其他非法內容時,只有 BSV 能夠過濾,會發生什麼?


分享到:


相關文章: