Keccak

進階

Keccak (發音為「凱奇克」) 是由 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 不再被認為是安全的,並且不建議再做使用。
在 NIST 宣佈公開競賽和審核流程後,Keccak 函數 (SHA-3) 在 2007 年左右開始開發,尋找可以克服先前 SHA-1 和 SHA-2 潛在缺陷的新加密雜湊函數。

儘管尚未有針對 SHA-2 的重大攻擊,但預計雜湊函數會隨著時間遭到破解,並且需要數年才能開發新的標準函數。考慮到這一點,以及考量到 2004 年和 2005 年對 SHA-1 成功進行攻擊,NIST 認為需要建立新的加密雜湊演算法。2012 年,NIST 宣佈 Keccak 為競賽的獲勝演算法,並將其標準化為 SHA 家族的最新成員 (也就是 SHA-3)。 

NIST 選擇 Keccak 的原因之一是它的創新結構,經驗證比其他演算法更安全和有效率。從技術上講,SHA-3 演算法依賴所謂的海綿函數 (或海綿結構) - 與 SHA-1 和 SHA-2 使用的 Merkle Damgård 結構相比。

目前,SHA-2 仍被認為是安全的,並且被廣泛使用。例如,比特幣和其他加密貨幣使用 SHA-256,而且它在挖礦過程中扮演重要角色。未來可能會有越來越多人採用 SHA-3,因為要做出成功的攻擊似乎非常不容易。儘管如此,隨著密碼學領域的進步和發現新的缺陷,我們將在未來幾年看到更多加密雜湊演算法被開發出來。