Aes
TLS1.2 中 CBC 塊密碼的 IV 的使用
在查看RFC 5246時,我很難理解消息在什麼時候被加密。該規範在第 6.2.3.2 節中給出了通用分組密碼:
struct { opaque IV[SecurityParameters.record_iv_length]; block-ciphered struct { opaque content[TLSCompressed.length]; opaque MAC[SecurityParameters.mac_length]; uint8 padding[GenericBlockCipher.padding_length]; uint8 padding_length; }; } GenericBlockCipher;
所以我的問題是,IV 是否被加密,IV 是否會影響填充?
不,IV 不會被加密。IV 是一個隨機向量,以確保密文對於相同的明文是不相同的。這會將資訊洩露給任何竊聽者。它必須是唯一的——在 CBC 的情況下,從隨機到竊聽者(“不可預測”)無法區分——但不是保密的。
由於 IV 與密文分開,因此不會影響填充。但是,RFC 有以下資訊:
填充長度必須使得 GenericBlockCipher 結構的總大小是密碼塊長度的倍數。
IV 包含在此結構中。這仍然是正確的,因為 IV 被指定為與塊大小完全相同(對於 CBC):
IV 長度為 長度
SecurityParameters.record_iv_length
,等於SecurityParameters.block_size
。