大多数分组密码实现都期望用户进行填充,以便消息与密码块大小相匹配。我理解填充的目的是使输入与密码块大小匹配。它还具有可能对观察者隐藏实际消息长度的有益效果。
对于NaCl分泌盒,文档中明确声明“注意长度没有隐藏”。那到底是什么意思?
发布于 2015-10-19 16:11:31
通常假定消息的长度不是秘密的。即使使用填充,近似长度也会泄漏,而且任何加密都必然会显示最大长度--如果使用压缩,至少会显示信息内容--因为密文一般不能比消息短。
NaCl的秘密盒不使用分组密码,而是使用流密码-- XSalsa20 (pdf) --所以它不需要填充,而且确切的消息长度是显示出来的。
如果您遇到消息长度应该保持秘密的情况,您必须确保您自己,例如,将消息填充到一个固定的最大长度。自动这样做将是浪费的,并将限制该算法可以使用的消息大小,这就是为什么留给用户的原因。
https://crypto.stackexchange.com/questions/29939
复制相似问题