什麼是哈希?原理、密碼學和區塊鏈中的應用

哈希*指的是從可變大小的輸入生成固定大小輸出的過程。這個過程是通過已知的數學公式,稱爲哈希函數(,作爲哈希算法)實現的。

雖然並非所有的哈希函數都涉及加密,但所謂的加密哈希函數構成了加密貨幣的核心。正是因爲它們,區塊鏈和其他分布式系統才能達到顯著的數據完整性和安全性。

哈希函數的基礎

傳統和加密哈希函數是確定性的。確定性意味着,只要輸入不變,哈希算法將始終產生相同的輸出(,也稱爲摘要或哈希)。

典型的加密貨幣中使用的哈希算法被設計爲單向函數,這意味着不可能在沒有大量時間和計算資源的情況下輕易地逆轉。換句話說,從輸入生成輸出相對簡單,但反向操作,即僅憑輸出生成輸入相對困難(。一般來說,找到原始輸入的難度越大,哈希算法就被認爲越安全。

哈希函數是如何工作的?

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

爲了說明這一點,讓我們通過在比特幣中使用的SHA-256哈希算法)來執行單詞"Trading"和"trading":

SHA-256

入口:交易 輸出(256 bits):95d1a7ca65e8e7a866be323693fd2c22e07d8f198695481f1660e12142cdbecc

入口: 交易 輸出(256 bits):2180de693ed2598851b751454f78332a363a0ddb0376db0e4fc9eedb25cde194

觀察到一個小變化(首字母的大寫)導致了一個完全不同的哈希值。但是由於我們使用的是SHA-256,輸出始終將具有固定大小的256位(或64個十六進制字符),無論輸入的大小如何。此外,無論我們使用算法處理這兩個詞多少次,輸出都將保持不變。

另一方面,如果我們通過哈希算法 SHA-1 執行相同的輸入,我們將獲得以下結果:

SHA-1

輸入:交易 輸出(160 bits):37736e173a824ff9cecc9b5de47f5bda155b7f51

輸入:交易 輸出(160 bits):7da19b30a5c5c198709373e8eb7d5c33a3f48241

需要指出的是,SHA代表安全哈希算法。這是指一組加密哈希函數,包括SHA-0和SHA-1算法以及SHA-2和SHA-3系列。SHA-256是SHA-2系列的一部分,其他還有SHA-512和其他變體。目前,只有SHA-2和SHA-3系列被認爲對加密應用是安全的。

哈希函數的重要性

傳統哈希函數有廣泛的應用場景,包括數據庫搜索、大文件分析和數據管理。另一方面,密碼學哈希函數廣泛應用於信息安全應用,如消息認證和數字指紋。在比特幣的背景下,密碼學哈希函數是挖礦過程的重要組成部分,同時在生成新的地址和密鑰中也發揮着關鍵作用。

哈希的真正力量在於處理大量信息時顯現出來。例如,您可以通過哈希函數處理一個大文件或數據集,然後使用其輸出快速驗證數據的準確性和完整性。這是由於哈希函數的確定性特性:輸入總是會產生一個簡化和濃縮的輸出(hash)。這種技術消除了存儲和 "記住" 大量數據的需要。

哈希在區塊鏈技術的背景下特別有用。比特幣的區塊鏈有多種操作涉及哈希,其中大多數在挖礦過程中進行。實際上,幾乎所有的加密貨幣協議都依賴於哈希來連結和壓縮交易組到區塊中,並且還用於在每個區塊之間生成加密連結,有效地創建了一條區塊鏈。

加密哈希函數及其屬性

一個實現加密技術的哈希函數可以定義爲加密哈希函數。一般來說,破解一個加密哈希函數需要無數次的暴力嘗試。要“反轉”一個加密哈希函數,一個人需要通過嘗試和錯誤來猜測輸入值,直到產生相應的輸出。然而,也有可能不同的輸入產生完全相同的輸出,在這種情況下發生“碰撞”。

從技術上講,密碼學哈希函數需要滿足三個屬性才能被認爲是有效安全的:

  • 抗碰撞性: 不可能找到兩個不同的輸入產生相同的哈希作爲輸出
  • 預映像抗性: 不可行 "反轉" 哈希函數 ( 找到給定輸出的輸入 )
  • 第二前映像抗性:無法找到任何與特定輸入發生碰撞的第二輸入

( 抗碰撞性

如前所述,當不同的輸入產生完全相同的哈希時,就會發生衝突。因此,哈希函數被認爲是抗碰撞的,直到有人找到一個碰撞。請注意,對於任何哈希函數,始終會存在碰撞,因爲可能的輸入是無限的,而可能的輸出是有限的。

換句話說,哈希函數在碰撞抗性方面是抵抗碰撞的,當找到碰撞的可能性低到需要數百萬年的計算時。因此,盡管不存在完全無碰撞的哈希函數,但有些函數足夠強大,可以被認爲是抗碰撞的,例如,SHA-256。)

在各種SHA算法中,SHA-0和SHA-1家族已不再安全,因爲已經發現碰撞。目前,SHA-2和SHA-3家族被認爲是抗碰撞的。

反向映像抵抗

抗原像性屬性與單向函數的概念相關。當一個哈希函數被認爲是抗原像性時,意味着找到生成特定輸出的輸入的概率非常低。

這個屬性與前一個不同,因爲攻擊者試圖通過觀察特定的輸出來猜測輸入是什麼。另一方面,哈希衝突發生在某人找到兩個不同的輸入,生成相同的輸出,而不管使用了哪些輸入。

抗預映像屬性對於數據保護非常重要,因爲消息的簡單哈希可以在不揭示信息的情況下證明其真實性。實際上,許多服務提供商和網路應用程序存儲和使用基於密碼生成的哈希,而不是明文密碼。即使在交易平台上,這種技術對保護用戶憑證至關重要。

( 第二前映抵抗

爲了簡化,我們可以說第二預像的抗性位於其他兩個屬性之間。第二預像攻擊發生在某人成功找到一個特定輸入,該輸入生成與另一個已知輸入相同的輸出。

換句話說,第二預映像攻擊意味着找到一個碰撞,但攻擊者不是尋找兩個隨機輸入生成相同的哈希,而是尋找一個輸入生成由另一個特定輸入產生的相同哈希。

因此,任何抗碰撞的哈希函數也抵御第二預映像攻擊,因爲這些攻擊總是涉及到碰撞。然而,在抗碰撞的函數上仍然可以進行預映像攻擊,因爲這意味着要根據唯一的輸出找到唯一的輸入。

加密貨幣中的挖礦和哈希

在比特幣挖礦中,有很多步驟涉及哈希函數,比如餘額驗證、交易輸入和輸出的連結,以及在區塊內對交易進行哈希以形成默克爾樹。但是,比特幣區塊鏈安全的主要原因之一是礦工需要進行無數次哈希操作,以最終找到下一個區塊的有效解決方案。

具體來說,礦工在爲其候選區塊創建哈希值時,必須嘗試多種不同的輸入。本質上,只有在生成一個以特定數量的零開頭的輸出哈希時,他才能驗證自己的區塊。零的數量決定了礦業的難度,並根據分配給網路的哈希率而有所不同。

在這種情況下,哈希率代表在比特幣挖礦中投入了多少計算能力。如果網路的哈希率增加,比特幣協議將自動調整挖礦難度,以確保挖掘一個區塊所需的平均時間保持在10分鍾左右。相反,如果多個礦工決定停止挖礦,導致哈希率顯著下降,挖礦難度將會調整,便於挖礦),直到區塊的平均時間再次回到10分鍾###。

礦工不需要尋找衝突,因爲有多個哈希可以生成作爲有效輸出###,前面有一定數量的零(。因此,對於特定區塊存在多種可能的解決方案,礦工只需要找到其中之一,按照挖礦難度所確定的限制。

由於比特幣挖礦在能源和設備方面是一項昂貴的任務,礦工沒有理由欺騙系統,因爲這會導致重大財務損失。參與區塊鏈的礦工越多,區塊鏈就變得越大越強。

哈希在加密世界中的實際應用

哈希在加密貨幣生態系統和交易平台中有許多實際應用:

  • 交易驗證:區塊鏈中的每筆交易都會獲得一個唯一的哈希,作爲標識符,並允許驗證該交易未被篡改。

  • 地址生成:加密貨幣地址是通過對公鑰應用哈希函數生成的,這增強了安全性並減少了地址的大小。

  • 安全存儲密碼:交易平台使用哈希功能安全地存儲用戶的密碼,僅保存哈希而不是原始密碼。

  • 工作量證明:這一共識機制,廣泛應用於比特幣及其他加密貨幣,基本上基於哈希函數的單向性。

  • 數據完整性:平台使用哈希來驗證在傳輸過程中文件或數據是否未被修改。

結論

哈希函數是計算機科學中的基本工具,特別是在處理大量數據時。當與密碼學結合時,哈希算法可以非常靈活,以多種不同方式提供安全性和認證。因此,密碼哈希函數對於幾乎所有的加密貨幣網路和交易平台都是至關重要的,因此理解它們的屬性和運作機制對於任何對區塊鏈技術或數字資產交易感興趣的人來說都是非常有用的。

在一個日益數字化的世界中,數據和交易的安全至關重要,哈希功能仍然是支撐現代密碼系統信任的基本支柱之一。

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