密碼學基礎與應用
把秘密金鑰K與訊息m串接後的雜湊值 SHA-256(K ‖ m) 當作偵測竄改的標籤使用,被認為是危險的。其理由正確的是下列何者?
- A只要知道標籤與輸入的長度,即使不知道K,也能算出在m後面附加資料之訊息的標籤
- B已找到從SHA-256的輸出只反推放在輸入開頭之金鑰K部分的有效率方法
- C把金鑰K放在訊息前面會使輸入變長,SHA-256就容易找到碰撞
查看答案與解析
正確答案:A. 只要知道標籤與輸入的長度,即使不知道K,也能算出在m後面附加資料之訊息的標籤
在SHA-256這類Merkle–Damgård結構的雜湊函數中,輸出的雜湊值正是處理完最後一個區塊後的內部狀態本身。因此攻擊者可以把標籤當作內部狀態繼續計算,在不知道K的情況下,算出在 K ‖ m 後面加上固定形式的填充與任意資料之訊息的雜湊值(長度擴充攻擊)。HMAC使用由金鑰產生的兩個值,把內層的雜湊值再與金鑰一起做一次雜湊,因此能防止這種攻擊。SHA-3在結構上不會受到這種攻擊,因此只把金鑰放在前面的KMAC方式也已標準化。
- A. 正確。這稱為長度擴充攻擊,是使用HMAC的理由之一。
- B. 目前並不知道由SHA-256的輸出求出輸入的有效率方法。問題不在反推,而在能夠接著計算下去。
- C. 輸入變長,並不會使碰撞變得容易找到。