可以安全地在文件头中存储AES密码参数(blocksize / blockmode / keysize等)吗?

时间:2012-03-24 14:09:15

标签: aes encryption encryption-symmetric

将加密参数存储在加密文件的(未加密)标头中是否“安全”?是否有任何东西(当然除了钥匙!)不应该以明文形式存储/传输?

1 个答案:

答案 0 :(得分:1)

您正在使用对称加密,其中存储blocksize,blockmode和keysize是安全的,因为您没有(不得)按照您的声明使密钥可用。

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

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

  • 密钥大小由密钥本身给出,因此也可以省略。

  • blockmode是剩余参数。永远不要使用ECB。永久使用单个块模式,如OCB,您也不需要将其存储在文件中。

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

或许,如果您必须传输参数,以下方法可以提供帮助:

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

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