hash value 雜湊值
用途
可以看成資料、檔案的摘要(message digest)。但又不會透漏原始的資訊
檢視資料的完整性(integrity)
資料前後有無變動、修改
架構為
1 | stateDiagram-v2 |
給定任意長度的資料可以產出固定長度的文字(通常為256或512 bit)
而產出的文字又稱雜湊值(hash value 或 digest)
hash function 特點
- 計算快
不需要花太多的計算成本。
hash value 的長度是由演算法所決定,
不論原始資料的大小,都會產生固定長度的hash value - 避免碰撞(Collision resistance)
不可發生存在兩個不同內容卻產生同個hash value 的狀況- 內容稍有改變,hash value 將有大幅度的變化(Avalanche effect)
- 單向性
無法由hash value 反推出原始的資料
hash value 不會揭露任何原始資料的訊息。
攻擊者無法藉由hash value 字面上的意思得到任何關於原始資訊的訊息
安全性(Security)
分成兩點
Collision Resistance (抗碰撞性)
找到M1,M2 符合 H(M1)=H(M2)
Preimage Resistance (抗原像性)
可分成 Preimage resistance 和 second preimage resistance
Preimage resistance 指的是給定 h= H(M1),很難找到M1
Second preimage resistance 指的是
給定 M1 ,很難找到 另外一個M2 ≠ M1 ,可以符合H(M1)=H(M2)
恩…這聽起來很像前面所講的抗碰撞性
常見的演算法
- MD5
- SHA1
- SHA2
- SHA3
- BLAKE2
目前MD5和SHA1都已被發現有缺陷。非必要就別用了。
雖然有些軟體的驗證還是會提供MD5值供辨識