揭示纯文本的长度?

时间:2010-01-01 12:52:24

标签: security encryption cryptography

如果我刚刚用CBC和Rijndael将一些纯文本加密成密文,那么告诉全世界原始纯文本的长度是x字节是不安全的吗?它似乎总是与密文的长度相同,所以,我认为没关系,但是它有一些块模式或密码吗?它有什么关系?

4 个答案:

答案 0 :(得分:5)

您应该使用PKCS5填充方案。此方案始终填充额外信息,包括已添加的额外字节数。在解密时,检查最后一个块以查看应丢弃多少字节。

很难抑制有关原始邮件长度的信息。即使使用填充到块大小,也可以推断出原始消息的长度为n,n-1,n-2,...或n-blocksize + 1个字节。大多数加密协议很少或根本没有努力隐藏明文长度。

答案 1 :(得分:0)

输出的长度并不总是相同。但是,如果明文的长度相似,则由于填充,密文的长度可以相同(Rijndael / AES是分组密码) http://en.wikipedia.org/wiki/Padding_(cryptography)

如果你告诉全世界明文的长度,它会削弱你的安全性,所以除非有充分的理由,否则我会反对它。

另请参阅CBC如何运作:

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29

答案 2 :(得分:0)

Rijndael是一个分组密码,因此纯文本将填充到一个完整的块。 (这可能会被您的加密层隐藏)。

因此加密的消息文本长度将表示纯文本长度。

如果您按消息长度泄漏信息,则必须自己填充。实际上,发送消息可能会泄漏信息,因此当您没有任何要发送的内容时,您需要发送无操作消息。

答案 3 :(得分:0)

纯文本的长度通常与密文不同。纯文本在加密前填充。如果您发送两个不同消息中的一个“是”或“否”,则发送原始长度可能不是一个好主意。如果您的所有消息长度相同,则可以发布该长度。