Aes

TLS1.2 中 CBC 塊密碼的 IV 的使用

  • September 3, 2015

在查看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

引用自:https://crypto.stackexchange.com/questions/27915