理解加密貨幣中的哈希函數

哈希是一個過程,它使用稱爲哈希函數的數學公式從可變大小的輸入生成固定大小的輸出。雖然並非所有哈希函數都涉及加密,但加密哈希函數對於加密貨幣至關重要,使區塊鏈和其他分布式系統能夠實現顯著的數據完整性和安全性。

常規哈希函數和加密哈希函數都是確定性的,這意味着只要輸入數據保持不變,哈希算法將始終產生相同的結果(也稱爲摘要或哈希)。

加密貨幣哈希算法通常被設計爲單向函數,使得在沒有大量時間和計算資源的情況下難以逆向操作。換句話說,從輸入生成輸出相對容易,但反向操作則相當具有挑戰性。一般而言,找到輸入越困難,哈希算法被認爲就越安全。

哈希函數是如何工作的?

不同的哈希函數產生的結果大小各不相同,但每個哈希算法的可能輸出大小始終是固定的。例如,SHA-256算法只能產生256位的結果,而SHA-1總是生成160位的摘要。

爲了說明,讓我們將單詞 "Gate" 和 "Gate" 通過 SHA-256 哈希算法 (,也就是比特幣中使用的那種。

SHA-256

輸出

輸出 )256 位(

Gate

7f43e4e2c9d9e6249ba0df8a911b46400f6fd5e9993a5f1ea65e4633e2de5a6c

Gate

9c6b057a2b9d96746c38a3f4e466678e1b4c4425ff8fe9659e96c903e7a1f3cc

注意,首字母的輕微變化)導致了完全不同的哈希值。但由於我們使用的是SHA-256,輸出值將始終具有固定大小256位(或64個字符),無論輸入大小如何。此外,無論我們將這兩個詞通過算法運行多少次,兩個輸出值將保持不變。

如果我們通過SHA-1哈希算法傳遞相同的輸入,我們將得到以下結果:

SHA-1的

輸出

輸出 (160 位)

Gate

f8e4eba8d46e2b1079e6a1a8abf0a0d8c3a81d73

Gate

b7e23ec29af22b0b4e41da31e868d57226121c84

有趣的是,SHA代表安全哈希算法。它是一組加密哈希函數,包括SHA-0和SHA-1算法,以及SHA-2和SHA-3組。SHA-256是SHA-2家族的一部分,此外還有SHA-512和其他變種。目前,只有SHA-2和SHA-3組被認爲是安全的。

爲什麼這項技術重要?

常規哈希函數有廣泛的用途,包括數據庫查詢、大文件分析和數據管理。另一方面,加密哈希函數在信息安全應用中被廣泛使用,例如消息認證和數字指紋。當談到比特幣時,加密哈希函數是礦業過程不可或缺的一部分,並且在生成新地址和密鑰方面也發揮着作用。

哈希的真正強大之處在於處理大量信息時。例如,您可以通過加密哈希函數運行一個大文件或數據集,然後使用其結果快速驗證數據的準確性和完整性。這是由於哈希函數的確定性特性:輸入總是會產生一個壓縮和簡化的輸出 (哈希)。此方法消除了存儲和“記憶”大量數據的需要。

哈希在區塊鏈技術中尤其有用。比特幣區塊鏈有幾個與哈希相關的操作,其中大多數在挖礦過程中進行。事實上,幾乎所有加密貨幣協議都依賴哈希將交易組連結和組合成區塊,並在每個區塊之間創建加密哈希連結,從而形成區塊鏈。

加密哈希函數

再次,使用加密技術的哈希函數可以定義爲加密哈希函數。通常,解密加密哈希函數需要許多暴力破解嘗試。要"展開"加密哈希函數,必須通過反復試驗選擇輸入,直到獲得合適的輸出。然而,不同的輸入產生相同結果的可能性也存在,在這種情況下將發生"碰撞"。

從技術上講,加密哈希函數必須滿足三個屬性才能被認爲是安全的。我們可以將它們描述爲:抗碰撞性以及對第一次和第二次預影像攻擊的抵抗。

在描述每個屬性之前,讓我們用三句話來總結它們的邏輯。

  • 碰撞抗性:無法找到兩個不同的輸入生成相同的哈希。

  • 第一預像抗性:無法通過給定的輸出反向哈希函數 ( 找到輸入 )。

  • 第二原像抗性:無法找到一個與第一個具有相同哈希值的第二輸入。

( 抗碰撞性

如前所述,當不同的輸入產生相同的哈希時,就會發生碰撞。此時,哈希函數被認爲是抗碰撞的,直到有人發現這樣的碰撞。請注意,由於輸入的無限數量和輸出的有限數量,任何哈希函數都會始終存在碰撞。

因此,當檢測到衝突的概率小到需要數百萬年的計算時,哈希函數是抗衝突的。出於這個原因,雖然不存在無衝突的哈希函數,但有些哈希函數強大到可以被視爲穩定的),例如,SHA-256###。

在不同的SHA算法中,SHA-0和SHA-1組已不再安全,因爲已檢測到碰撞。目前,只有SHA-2和SHA-3組被認爲是抗碰撞的。

( 第一次預映像抗性

這個屬性與單向函數的概念密切相關。哈希函數被認爲在尋找第一個原像時是強的,只要有人使用生成的輸出找到輸入的概率非常低。

請注意,這個屬性與之前的不同,因爲攻擊者需要根據特定的輸出來猜測輸入。這種類型的碰撞發生在某人找到兩個不同的輸入,產生相同的輸出,無論使用了哪一個特定的輸入。

第一個預映像抗性特性對數據安全至關重要,因爲消息的簡單哈希可以證明其真實性,而無需披露額外信息。在實踐中,許多網路服務提供商和應用程序存儲和使用從密碼生成的哈希,而不是以文本格式使用它們。

) 第二原像抗性

這種穩定性介於前兩種屬性之間。第二個預映像攻擊的內容是找到一個特定的輸入,通過這個輸入可以生成一個已經使用另一個已知輸入生成的輸出。

換句話說,第二預映像攻擊涉及檢測衝突,但不是尋找兩個隨機輸入生成相同的哈希,而是攻擊旨在找到一個輸入,能夠重現已經由另一個輸入生成的哈希。

因此,任何抗碰撞的哈希函數也抵御第二前像攻擊,因爲後者總是需要碰撞。然而,在一個容忍碰撞的函數上進行第一次前像攻擊仍然是可能的,因爲這涉及到尋找具有特定輸出的輸入。

挖礦

比特幣挖礦中有許多步驟是通過哈希函數執行的。這些步驟包括驗證餘額、連結交易輸入和輸出,以及將所有交易組合在一個區塊中形成梅克爾樹。但比特幣區塊鏈安全的主要原因之一是礦工必須盡可能多地執行哈希操作,以最終找到下一個區塊的正確解決方案。

礦工在爲他們的候選區塊生成哈希時必須使用幾種不同的輸入。只有當正確生成的輸出以哈希的形式以一定數量的零開頭時,才能驗證該區塊。零的數量決定了挖礦的難度,並根據網路的哈希率而變化。

在這種情況下,哈希率是您在比特幣挖礦中投入的計算能力的衡量標準。如果哈希率開始增加,比特幣協議將自動調整挖礦難度,以便挖掘一個區塊所需的平均時間約爲10分鍾。如果幾個礦工決定停止挖礦,導致哈希率顯著下降,挖礦難度將調整,以暫時便於計算###,直到平均區塊形成時間恢復到10分鍾###。

請注意,礦工不需要尋找衝突,因爲他們可以生成多個作爲有效輸出的哈希(,且以一定數量的零)開頭。因此,對於給定的區塊,存在多個可能的解決方案,礦工只需找到其中之一,具體取決於由挖礦難度確定的閾值。

由於比特幣挖礦是一項昂貴的任務,礦工沒有理由去作弊,因爲這會導致巨大的經濟損失。因此,加入區塊鏈的礦工越多,它就會變得越大越強。

結論

毫無疑問,哈希函數是計算中的主要工具之一,尤其是在處理大量數據時。當與加密技術結合時,哈希算法可以非常有用,因爲它們以各種方式提供安全性和身分驗證。因此,加密哈希函數對幾乎所有加密貨幣網路至關重要,了解它們的屬性和操作機制對任何對區塊鏈技術感興趣的人來說無疑是有益的。

IN1.69%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 轉發
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)