安全雜湊演算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼雜湊函數家族,是FIPS所認證的安全雜湊演算法。能計算出一個數碼訊息所對應到的,長度固定的字串(又稱訊息摘要)的演算法。且若輸入的訊息不同,它們對應到不同字串的概率很高。

SHA家族的演算法,由美國國家安全域(NSA)所設計,並由美國國家標準與技術研究院(NIST)發佈,是美國的政府標準,其分別是:

  • SHA-0:1993年發佈,當時稱做安全雜湊標準(Secure Hash Standard),發佈之後很快就被NSA撤回,是SHA-1的前身。
  • SHA-1:1995年發佈,SHA-1在許多安全協定中廣為使用,包括TLSGnuPGSSHS/MIMEIPsec,是MD5的後繼者。但SHA-1的安全性在2010年以後已經不被大多數的加密場景所接受。2017年荷蘭密碼學研究小組CWI和Google正式宣佈攻破了SHA-1[1]
  • SHA-2:2001年發佈,包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。SHA-2目前沒有出現明顯的弱點。雖然至今尚未出現對SHA-2有效的攻擊,但它的演算法跟SHA-1基本上仍然相似。
  • SHA-3:2015年正式發佈,由於對MD5出現成功的破解,以及對SHA-0和SHA-1出現理論上破解的方法,NIST感覺需要一個與之前演算法不同的,可替換的加密雜湊演算法,也就是現在的SHA-3。

SHA函數對比

下表中的中繼雜湊值(internal state)表示對每個資料區塊壓縮雜湊過後的中繼值(internal hash sum)。

More information 演算法和變體, 輸出雜湊值長度 (bits) ...
SHA函數對比
演算法和變體 輸出雜湊值長度
(bits)
中繼雜湊值長度
(bits)
資料區塊長度
(bits)
最大輸入訊息長度
(bits)
迴圈次數 使用到的運算子 碰撞攻擊
(bits)
效能範例[3]
(MiB/s)
MD5(作為參考) 128 128
(4 × 32)
512 無限[4] 64 And, Xor, Rot, Add (mod 232), Or ≤18
(發現碰撞)
335
SHA-0 160 160
(5 × 32)
512 264 − 1 80 And, Xor, Rot, Add (mod 232), Or <34
(發現碰撞)
-
SHA-1 160 160
(5 × 32)
512 264 − 1 80 <63[5]
(發現碰撞[6]
192
SHA-2 SHA-224
SHA-256
224
256
256
(8 × 32)
512 264 − 1 64 And, Xor, Rot, Add (mod 232), Or, Shr 112
128
139
SHA-384
SHA-512
SHA-512/224
SHA-512/256
384
512
224
256
512
(8 × 64)
1024 2128 − 1 80 And, Xor, Rot, Add (mod 264), Or, Shr 192
256
112
128
154
SHA-3 SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
1600
(5 × 5 × 64)
1152
1088
832
576
無限[7] 24[8] And, Xor, Rot, Not 112
128
192
256
-
SHAKE128
SHAKE256
d (arbitrary)
d (arbitrary)
1344
1088
min(d/2, 128)
min(d/2, 256)
-
Close

SHAd

SHAd函數是一個簡單的相同SHA函數的重述:

SHAd-256(m)=SHA-256(SHA-256(m))。它會克服有關延伸長度攻擊的問題。

參考文獻

外部連結

參見

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.