Flickr 長度擴展攻擊是如何工作的?
我目前正在閱讀有關Flickr (pdf) 的長度擴展攻擊,但不了解那裡發生了什麼。
m = SECRET || data || padding` and `api_signature = md5(m)
伺服器向攻擊者發送
data
和發送。api_signature
攻擊者現在知道:
h = md5(m) = api_signature
data
- 長度
data
(他為什麼知道,為什麼他必須知道?)攻擊者的目標:附加一些額外的數據
他怎麼能那樣做?他可以將
api_signature = h = md5(m)
其用作雜湊函式的初始化向量,並對額外數據和另一個填充進行雜湊處理。這就是 hash length_extension 攻擊背後的想法,不是嗎?我的問題:然後
api_signature
會發生變化,因為它的計算方式如下:md5(extra || padding)
使用 oldapi_signature
作為初始化向量。這如何有效?總體而言:伺服器在發送此資訊時對“普通”客戶端的期望是什麼?
他怎麼能那樣做?他可以將
api_signature = h = md5(m)
其用作雜湊函式的初始化向量,並對額外數據和另一個填充進行雜湊處理。這就是 hash length_extension 攻擊背後的想法,不是嗎?正確的。
我的問題:然後
api_signature
會發生變化,因為它的計算方式如下:md5(extra || padding)
使用 oldapi_signature
作為初始化向量。這如何有效?這就是為什麼知道數據的長度很重要的原因。攻擊者可以使用長度擴展攻擊計算MD5雜湊,
data||original_padding||arbitrary_data
將原始雜湊值作為IV計算雜湊h'(arbitrary_data||new_padding)
,其中新填充使用原始填充數據和附加數據的總長度。總體而言:伺服器在發送此資訊時對“普通”客戶端的期望是什麼?
伺服器需要一個經過“身份驗證”的請求,其雜湊值為
secret||request
. 通過在請求的末尾添加數據並充分地按摩 URL,攻擊者可以在不知道秘密值的情況下計算雜湊值,以獲取足夠修改的 URL 以允許任意請求。(部分原因是 URL 參數如何為散列編碼的另一個弱點。)