最近在看 PQC (後量子密碼學) 的 ML SDA 當中有用到 SHA3 , 小有所感趁機紀錄以下的內容根據 FIPS 官方資料 (https://csrc.nist.gov/pubs/fips/202/final)進行閱讀後的整理
前言
在資訊安全領域裡,「雜湊函數(Hash Function)」是一個基礎但極其重要的工具。它能夠將任何長度的輸入訊息,轉換成固定長度的輸出(稱為訊息摘要)。這個摘要具有以下特性:
- 不可逆:幾乎不可能從輸出反推出原始輸入。
- 抗碰撞:不同的輸入幾乎不會產生相同的輸出。
- 固定長度:無論輸入多大,輸出長度固定。
這些特性,讓 Hash 被廣泛應用於:
- 驗證資料完整性(檔案驗證、下載檢查碼)。
- 數位簽章與驗證。
- 密碼學基礎建構(例如 HMAC、隨機數產生器)。
在過去幾十年,SHA(Secure Hash Algorithm, 安全雜湊演算法)系列成為最常用的雜湊家族。從 SHA-0、SHA-1 到 SHA-2,逐步守護著資訊安全。然而,隨著計算能力提升以及演算法分析技術進步,舊有的雜湊標準逐漸顯現弱點。這也引出了今天的主角:SHA-3。
SHA 的歷史
- SHA-0(1993 年)
- 第一版安全雜湊演算法,由美國國家安全局(NSA)設計並發表。
- 由於存在安全弱點,很快就被棄用。
- SHA-1(1995 年)
- 改良後的版本,輸出長度為 160 位元。
- 曾廣泛應用在 SSL、數位簽章、檔案驗證等場景。
- 但隨著 2017 年 Google 公布實際碰撞攻擊實例,SHA-1 正式被視為不再安全。
- SHA-2(2001 年)
- 包含多個版本:SHA-224、SHA-256、SHA-384、SHA-512。
- 輸出長度更長,設計更安全,目前仍被廣泛使用。
- 但其設計仍是基於 Merkle–Damgård 結構,若未來計算能力大幅提升,潛在風險依舊存在。
- SHA-3(2015 年,正式標準化)
- 由 Keccak 演算法在 NIST(美國國家標準技術研究院)舉辦的雜湊演算法競賽中勝出。
- 最大的不同是:架構完全不同。SHA-3 基於 Sponge 結構,而不是傳統的 Merkle–Damgård。
- 這使得 SHA-3 在安全性與彈性上具備不同優勢,也能衍生出 SHAKE(可延伸輸出長度的雜湊函數)。