0

免责声明:我认为这是一个愚蠢的想法,我要求解释为什么这是一个愚蠢的想法:)

假设我在加密文件之前,我选择了一个x介于 0 和一个 constant 之间的随机数y。然后我用x随机字节之前和y-x之后的字节填充我的明文,这样文件大小就不会泄露 x。在运行正常的加密例程之前,我将 x 的实际值添加到我的缓冲区中。

这意味着用相同的密钥加密相同的明文很少会产生相同的加密输出,而不会增加加密或解密的工作量。

直觉上,我觉得这在减少密码分析的弱点方面应该非常方便,但我从未读过它的提及,所以我猜它没有。谁能向我解释为什么会这样?

4

2 回答 2

1

实际上,这不是一个坏主意,并且正在被使用。看看:http ://en.wikipedia.org/wiki/Padding_%28cryptography%29 ,尤其是来自谷歌学者搜索的几篇论文: http ://scholar.google.de/scholar?hl=en&as_sdt =0,5&q=random+padding+密码分析(很多都是免费的,点击右边的pdf链接)。

于 2013-04-03T06:43:29.237 回答
1

我会说这里的正确答案是“视情况而定”。我知道这可能不是您要寻找的,但请考虑一下。

  1. 您的加密数据是否只是一小部分信息(例如 0 到 2^32 之间的数字),如果这条信息是大型算法的一部分,我可以暴力破解整个算法并完全忽略您的加密数据。

  2. 这个密文的“密钥”或秘密是什么。你可以随心所欲地填充,但如果你的密钥是“7”,那么世界上所有的填充都不会帮助你。(这类似于小密码 + salt。如果您的密码空间只是 3 个 ASCII 字符,Salt 将无济于事)

  3. 您使用哪种加密模式?如果您处于 ECB 模式,则此填充可以提供极大的帮助并且基本上是必需的。其他操作模式(OFB,CTR,...)基本上会为您填充数据,这样一遍又一遍地加密同一文件会产生不同的密文。

我会提供一个简单的答案,从密码学的角度来看,填充数据永远不会受到伤害......

于 2013-04-06T03:12:48.727 回答