iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
Security

學習密碼學神祕名詞系列 第 6

Merkle–Damgård 架構

  • 分享至 

  • xImage
  •  

為了方便,密碼雜湊函数 CHF 常會生成相同長度的 Digest。 這串突如其來、連唸都唸不出來的「Merkle–Damgård 架構」就是能做到這樣功能的一個「想法」。根據 Merkle 及 Damgård 這兩位博士的說法,如果設計的 Hash 方程式有效避免碰撞,則經 Merkle–Damgård 架構運算後得出來的結果也有相同避免碰撞的能力

那許多知名的 CHF 的方法如 MD5, SHA-1, SHA-2 都是利用這套架構打造出來的演算法,所以我們在這裡先介紹一下。

Merkle–Damgård 架構的步驟為:

  1. 一個起始向量(initial vector, IV)
  2. 一個固定長度的輸入(input),不足則補 0
  3. 將輸入(input)拆成數段,以下面第一張圖為例,是切 6 段
  4. 從第一段開始,將 IV 及第一段輸入連接起來,放進所選的 Hash 方程式產生臨時的 Digest
  5. 將 4. 產生的 Digest 及下一段輸入連接起來,再放進所選的 Hash 方程式產生下一個臨時的 Digest
  6. 重複 5. 直到得到最後結果

下面兩張圖是我從網路上 copy 來的,基本上是上述步驟的圖像化,可選一張較易理解的看:
https://ithelp.ithome.com.tw/upload/images/20220916/20141437m2YXwLoTMT.png

https://ithelp.ithome.com.tw/upload/images/20220916/20141437r1iSRU8hsN.png

不過,Merkle–Damgård 架構的演算法若是沒小心使用,容易被未來會提到的「長度延伸攻擊Length extension attack」攻擊

參考資料


上一篇
密碼雜湊函数 Cryptographic Hash Function(CHF)
下一篇
OpenSSL
系列文
學習密碼學神祕名詞12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言