雜湊是將非固定大小的字母和字元的輸入轉換為固定大小的輸出的過程。此過程是使用哈希函數(作為哈希演算法實現)等數學公式來執行的。
雖然並非所有雜湊函數都使用加密技術,但所謂的加密雜湊函數是加密貨幣的核心。多虧了它們,區塊鏈和其他分散式系統才能實現高水準的資料完整性和安全性。
傳統的雜湊函數以及加密雜湊函數都是確定的。確定性意味著,只要輸入保持不變,雜湊演算法總是給出相同的輸出(也稱為表示或雜湊)。
通常,加密貨幣雜湊演算法被設計為單向雜湊函數,這意味著它們無法在不消耗大量計算時間和資源的情況下輕鬆轉換回來。換句話說,從輸入資料建立輸出很容易,但不可能進行相反方向的轉換(僅從輸出結果找到輸入資料)。一般來說,找到輸入資料越困難,哈希演算法就越安全。
哈希函數如何運作?
不同的雜湊函數會產生不同大小的輸出,但是可以獲得的輸出的大小總是固定的。例如,SHA-256 演算法只能產生 256 位元輸出,而 SHA-1 演算法將始終產生 160 位元表示。
為了說明這一點,讓我們透過 SHA-256 哈希演算法(比特幣中使用的演算法)運行單字「Binance」和「binance」。
可以看出,一個小的變化(首字母大寫)會導致完全不同的雜湊值。但是,由於我們使用 SHA-256,因此無論輸入資料大小如何,輸出始終為 256 位元(或 64 個字元)的固定大小。無論我們透過該演算法運行這兩個單字多少次,這兩個輸出都保持不變。
相反,當我們透過 SHA-1 雜湊演算法運行這些輸入時,我們得到以下結果:
SHA 是安全雜湊演算法的縮寫。這是一組加密雜湊函數,包括 SHA-0、SHA-1 雜湊函數以及 SHA-2 和 SHA-3 組雜湊函數。 SHA-256 與 SHA-512 和其他雜湊函數一起屬於 SHA-2 雜湊函數組。目前,只有 SHA-2 和 SHA-3 群組被視為安全雜湊函數群組。
哈希函數的重要性是什麼?
傳統的雜湊函數有很多用例,包括資料庫查找、大檔案分析和資料管理。另一方面,加密雜湊函數也廣泛應用於資訊安全應用,例如訊息認證和數位指紋識別。當在比特幣中使用時,加密雜湊函數是挖掘過程的重要組成部分,也有助於產生新地址和金鑰。
在處理大量資訊時,雜湊確實是一個強大的工具。例如,我們可以透過雜湊函數運行大檔案或資料集,然後使用它的輸出來快速驗證資料的準確性和完整性。這是可能的,因為雜湊函數的確定性本質:輸入總是會產生簡潔、簡化的輸出(雜湊)。由於這項技術,將不再需要儲存和「記憶」大量資訊。
哈希是區塊鏈技術中一個特別有用的過程。比特幣區塊鏈有許多使用哈希過程的操作,其中大部分是在挖礦過程中。事實上,幾乎所有加密貨幣協議都依賴哈希來將交易組鏈接並減少為區塊,並在每個區塊之間創建加密鏈接,從而有效地創建一站式區塊鏈。
加密哈希函數
同樣,實現密碼技術的雜湊函數可以被定義為密碼雜湊函數。一般來說,破解加密雜湊函數需要暴力破解。為了讓一個人「恢復」加密雜湊函數,他們需要透過反覆試驗來猜測輸入是什麼,直到產生相應的輸出。然而,不同的輸入也有可能產生相同的輸出,這種情況稱為「衝突」。
從技術上講,加密雜湊函數需要具有以下三個屬性才能被認為是安全的。這三個屬性是反衝突、反形象、反第二形象。
在討論每個屬性之前,我們先來總結這些屬性。
衝突保護:兩個不同的輸入不能產生相同的雜湊值。
反影像反轉:雜湊值無法「恢復」(無法根據輸出確定輸入)。
反第二影像反轉:無法找到與給定輸入衝突的第二輸入。
防衝突
如上所述,當不同的輸入產生相同的雜湊碼時,就會發生衝突。因此,雜湊函數被認為是防衝突的,直到有人發現衝突。請注意,任何雜湊函數中都始終存在衝突,因為輸入是無限的,而可能的輸出是有限的。
換句話說,當發現衝突的機率非常低並且可能需要數百萬年的計算才能找到衝突時,雜湊函數被認為是防衝突的。因此,雖然沒有一個雜湊函數是完全無碰撞的,但有些函數足夠強大,可以被認為是抗碰撞的(例如 SHA-256)。
在眾多 SHA 演算法中,SHA-0 和 SHA-1 群組不再安全,因為在該群組中發現了衝突。目前,SHA-2 和 SHA-3 組被認為是防衝突的。
防止影像操縱
反像性質與一維函數的概念有關。當從某個輸出找到輸入資料的機率非常低時,雜湊函數被認為是反逆的。
該屬性與第一個屬性不同,攻擊者將使用該屬性嘗試根據已知的輸出結果猜測輸入資料。同時,當發現兩個不同的輸入資料產生相同的輸出時,就會發生衝突,但使用哪個輸入資料並不重要。
反影像屬性對於資料保護很重要,因為只需要訊息的雜湊值來證明其真實性,而不洩漏資訊。事實上,許多 Web 應用程式和服務提供者將密碼儲存和使用為雜湊值而不是明文。
第二張影像的反反轉
簡單地說,第二個反象位於前兩個屬性之間。當有人發現某個特定輸入產生的輸出與他們已知的另一個輸入的輸出相同時,就會發生第二種影像反轉攻擊。
換句話說,第二次原像攻擊是為了尋找衝突,但他們不是尋找產生相同散列的兩個隨機輸入,而是尋找一個與他們已知的輸入的散列產生相同散列的輸入。
因此,任何避免衝突的雜湊函數也可以避免第二次影像反轉攻擊,因為第二次影像反轉也意味著會發生衝突。然而,仍然可以對反影像函數執行反轉攻擊,因為這意味著基於唯一的輸出找到唯一的輸入。
挖
在比特幣中,有許多步驟使用挖掘雜湊函數,例如檢查餘額、連結交易輸入和輸出以及對區塊中的交易進行雜湊處理以形成 Merkle 樹。但比特幣區塊鏈是安全區塊鏈的一個原因是,礦工必須創建無數的哈希值才能最終找到下一個區塊的有效解決方案。
具體來說,礦工在為其潛在區塊生成哈希時必須嘗試幾種不同的輸入。本質上,礦工只有產生以幾個零開頭的輸出哈希才能驗證其區塊。
在這種情況下,哈希率代表用於挖掘比特幣的運算能力。如果網路算力增加,比特幣協議會自動調整挖礦難度,使挖一個區塊的平均時間維持在10分鐘。反之,如果部分礦工停止挖礦,導致算力大幅下降,那麼挖礦難度就會調整,讓挖礦變得更容易(直到挖一個區塊的平均時間回到10分鐘)。
請注意,礦工不需要發現衝突,因為他們可以產生許多哈希值作為有效輸出(以一定數量的零開始)。因此,開採特定區塊有多種解決方案,礦工只需根據開採難度確定的門檻找到其中一種。
由於比特幣挖礦是一項成本高昂的任務,礦工沒有理由欺騙系統,因為這會導致重大的經濟損失。加入區塊鏈的礦工越多,區塊鏈就會變得越強大。
得出結論
可以肯定的是,雜湊函數是計算機科學中必不可少的工具,尤其是在處理大量資料時。當與密碼學結合時,可以靈活地使用雜湊演算法,以多種方式提供安全性和身份驗證。因此,加密雜湊函數對於大多數加密貨幣網路至關重要,因此了解其屬性和工作機制對於對該技術感興趣的人來說肯定是有益的。

