密碼學基礎與應用
接收以CBC模式加密之資料的伺服器,在解密後填充不正確時,與填充正確但內容檢查失敗時,回傳了不同的錯誤。關於這種狀況的說明,正確的是下列何者?
- A攻擊者竄改密文後送出,以錯誤的差異為線索,可能在不知道金鑰的情況下逐位元組求出明文
- B從錯誤的差異只能得知填充的長度,因此只要金鑰沒有外洩,明文內容本身就不會洩漏
- C只要把金鑰從AES-128換成AES-256,就不會再有從錯誤的差異求出明文的風險
查看答案與解析
正確答案:A. 攻擊者竄改密文後送出,以錯誤的差異為線索,可能在不知道金鑰的情況下逐位元組求出明文
CBC模式的解密中,若反轉某個密文區塊的位元,下一個區塊解密結果中相同位置的位元就會反轉。攻擊者一面改變前一個區塊的最後一個位元組一面送出,找出被判定為「填充正確」的值,藉此求出明文的最後一個位元組,再反覆進行就能逐位元組揭露明文。這就是填充預言攻擊,錯誤的種類或回應時間的差異會成為線索(預言機)。對策的基本做法,是使用GCM這類鑑別加密,或先驗證附加在密文上的MAC,在解密之前一律拒絕被竄改的密文。
- A. 正確。只能得知填充是否正確的回應,就足以逐位元組求出明文。
- B. 能得知填充是否正確,再結合竄改密文,就能求出明文本身。
- C. 這種攻擊不求金鑰,而是利用CBC模式的性質與錯誤的差異,因此改變金鑰長度也無法防止。