安全地将AES密码参数(块大小/块模式/密钥大小等)存储在文件头中



在加密文件的(未加密的)头中存储密码参数是否"安全"?有没有什么东西(当然不是钥匙!)不应该在透明空间中存储/传输?

您使用的是对称加密,其中存储块大小、块模式和密钥大小是安全的,因为您没有(绝对不能)按照您所说的那样使密钥可用。

但所有这些参数通常对攻击者有用。如果文件不能很容易地与密码和使用的params(或分别与软件)相关联,攻击者将有更多的工作要做,这就是加密的基本目的。密码是安全的,而(因为)每个人都能看到它是如何工作的。此外,试图隐藏一些信息也可以增加一些安全性。

  • AES具有128位的固定块大小,这本身并不是关键信息,因为已经知道AES本身。所以在文件头中不需要这个。

  • 密钥大小由密钥本身给定,因此也可以忽略它。

  • blockmode是剩下的参数。永远不要使用欧洲央行。永久使用像OCB这样的单一块模式,您也不需要将其存储在文件中。

如果您不打算在每个文件中更改所有参数,那么在两侧预定义所有参数是一种解决方案。错误检查可以使用校验和来完成,校验和也是关键信息,因此您可以将它们与数据一起加密,或者将它们与密钥一起提供。

也许,如果您无论如何都必须传输params,以下方法会有所帮助:

  • 在密钥文件中传输参数,如果您要自己定义格式,并且密钥是在每个文件的基础上分发的。

  • 您还可以通过将它们映射到一些随机定义的枚举器来定义不同的设置,这些枚举器在不了解软件的情况下无法提供有价值的信息。

相关内容

最新更新