Aes
TLS AES-CBC / SHA 密碼套件的直通模式
我正在查看 RFC5246,似乎 AES-CBC/SHA 密碼套件無法以直通模式實現。
假設接收到的記錄跨越兩個段。據我了解,只有在第二條記錄的最後一個字節(pad_length)被解密後才能開始 HMAC 計算,這需要緩衝包含一條記錄的兩個段。
我錯過了什麼嗎?
我錯過了什麼嗎?
嗯,第一個明顯的問題要問,甚至在“我可以嗎?”之前。是“我應該嗎?”。
從安全的角度來看,以直通模式執行 TLS 會出現安全問題,因此即使可以嘗試,也不清楚是否應該嘗試。
假設你這樣做了;您實現了一種接收部分 TLS 記錄並將部分解密的明文記錄發送給接收方的方法。
然後,攻擊者可以做的是發送一個聲稱是 16k 字節加密記錄的 TLS 記錄,然後發送包含他選擇的前 15k 密文的分段;如果無法找到匹配的 HMAC;他可能決定根本不發送那個。
您的實現將解密 15k 的密文並將其轉發。然後它會收到一個不匹配的 HMAC,或者超時;沒關係,因為接收者已經收到了他的 15k 虛假明文。
而且,如果你說“攻擊者無法控制他的密文將解密到什麼,因此它對攻擊並不那麼重要”,那是錯誤的。通過從以前的記錄中粘貼密文,和/或翻轉精心選擇的位(這將混淆一個明文塊,但翻轉另一個明文塊的相應位),攻擊者俱有相當大的靈活性。
這與設計的 TLS 無關,因為在 HMAC 驗證之前,整個解密的記錄永遠不會轉發給應用程序;你打破了這個假設。