Mac
AEAD密碼真的需要時間常數比較嗎?
在驗證(HMAC)身份驗證標籤時,通常表明需要時間常數比較才能確保功能安全。我可以看到有關密碼雜湊的洩漏資訊如何會引入一個輕微的漏洞,因為密碼雜湊可能會為人所知。但是,我們在這裡討論的是對已知和隨機密文的計算。
如果我們要執行非時間常數比較,會有什麼漏洞?會不會允許恢復用於派生身份驗證密鑰的秘密(即密碼)?
如果我們假設派生密鑰是完全隨機的(即攻擊者不知道有關各個位值的資訊,是否還有其他攻擊可能?)
讓易受攻擊的比較逐字節比較,並在第一次不匹配後跳出循環。如果我們忽略雜訊,這會通過時序洩露 MAC 的多少字節(前綴)是正確的。
然後攻擊者可以使用不同的 MAC 一遍又一遍地發送具有相同隨機數的相同消息。平均 128 次嘗試後,MAC 的另一個字節將是正確的,這將導致比較花費更長的時間並且攻擊者知道它是正確的。然後他們可以鎖定那個字節,並改變 MAC 的下一個字節。對於一個 16 字節的 MAC,它將花費 128*16=2048 次嘗試構造一個完全有效的 MAC,接收者將接受。
這不會洩露 MAC 密鑰,但會產生成功的偽造。
如果接收者接受具有相同 IV/nonce 的多條消息,則攻擊者可以將此攻擊與任何適用的預言機攻擊相結合,以針對底層未經身份驗證的加密(例如針對 CBC 的填充預言機)來了解截獲消息的內容。