Keccak(發音為「ketchak」)是由 Guido Bertoni、Joan Daemen、Michaël Peeters 和 Gilles Van Assche 設計的多功能加密函數。儘管Keccak 可能用於其他目的,但它最出名的是一種雜湊函數,與SHA-1 和SHA-2 等舊雜湊演算法相比,它提供了更高級別的安全性。
SHA 代表安全雜湊演算法,指由美國國家標準與技術研究所 (NIST) 發布的一組加密雜湊函數。 SHA-1 和 SHA-2 都是由美國國家安全局 (NSA) 設計的,因此具有相似的結構。雖然 Keccak 支援與 SHA-2 相同的輸出大小(雜湊長度),但其工作機制卻截然不同。儘管如此,Keccak 仍然是SHA 家族的一部分,通常被稱為SHA-3。
對SHA-1 的理論攻擊是該演算法於 2004 年執行,並於 2005 年公開。幾年後,即 2011 年,NIST 宣布 SHA-2 作為要使用的新標準雜湊函數。然而,從 SHA-1 到 SHA-2 的遷移相當緩慢,直到 2017 年初,很大一部分開發人員和電腦科學家才最終遷移到 SHA-2。不久之後,Google 於 2017 年 2 月宣布成功進行了 SHA-1 碰撞攻擊,從那時起,SHA-1 不再被認為是安全的,並且不鼓勵使用它。
Keccak 函數 (SHA-3) 於 2007 年左右開始開發,此前 NIST 宣佈公開競爭和審查流程,尋求新的加密雜湊值可以克服前面的SHA-1 和SHA-2 的潛在缺陷的功能。
雖然沒有對SHA-2 進行重大攻擊儘管已經得到證明,但預計雜湊函數會隨著時間的推移而被破解,並且需要數年時間才能開發出新的標準函數。考慮到這一點,再加上 2004 年和 2005 年針對 SHA-1 的成功攻擊,NIST 意識到需要創建一種新的加密雜湊演算法。 2012 年,NIST 宣布 Keccak 為競賽獲勝演算法,並將其標準化為 SHA 家族的最新成員(因此稱為 SHA-3)。
Keccak 被 NIST 選擇的原因之一是其創新結構,事實證明該結構比其他演算法。從技術上講,SHA-3 演算法依賴所謂的海綿函數(或海綿構造) - 與 SHA-1 和 SHA-2 使用的 Merkle Damgård 構造相反。
目前,SHA-2 仍被認為是安全的並被廣泛使用。例如,比特幣和其他加密貨幣使用 SHA-256,在挖礦過程中發揮至關重要的作用。我們可能會看到 SHA-3 的採用不斷增加,因為它似乎遠未成功受到攻擊。儘管如此,隨著密碼學領域的進步和新缺陷的發現,我們將在未來幾年看到更多的密碼雜湊演算法被開發出來。