hash value 雜湊值

用途

  • 可以看成資料、檔案的摘要(message digest)。但又不會透漏原始的資訊

  • 檢視資料的完整性(integrity)
    資料前後有無變動、修改


架構為

1
2
stateDiagram-v2
信息M --> H(m)=雜湊值HashValue :Hash Function

給定任意長度的資料可以產出固定長度的文字(通常為256或512 bit)
而產出的文字又稱雜湊值(hash value 或 digest)


hash function 特點

  • 計算快
    不需要花太多的計算成本。
    hash value 的長度是由演算法所決定,
    不論原始資料的大小,都會產生固定長度的hash value
  • 避免碰撞(Collision resistance)
    不可發生存在兩個不同內容卻產生同個hash value 的狀況
  • 單向性
    無法由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值供辨識


參考

Hashing Algorithms and Security - Computerphile

RFC 6234