【发布时间】:2012-03-24 14:09:14
【问题描述】:
将密码参数存储在加密文件的(未加密)标头中是否“安全”?有什么不应该被明文存储/传输的(当然除了密钥!)?
【问题讨论】:
-
根据您的系统使用方式,攻击者可能会降级您的系统,并可能使用它来例如剥离身份验证。
标签: aes encryption encryption-symmetric
将密码参数存储在加密文件的(未加密)标头中是否“安全”?有什么不应该被明文存储/传输的(当然除了密钥!)?
【问题讨论】:
标签: aes encryption encryption-symmetric
您正在使用对称加密,其中存储块大小、块模式和密钥大小是安全的,因为您不(必须)按照您的说明提供密钥。
但所有这些参数通常对攻击者有用。如果文件不能轻易地与密码和使用的参数(或软件)相关联,攻击者将有更多的工作要做,这就是加密的基本用途。密码是安全的,而(并且因为)每个人都可以看到它是如何工作的。此外,尝试隐藏一些信息也可以增加一些安全性。
AES 具有 128 位的固定块大小,它本身不是关键信息,已经知道 AES 本身。所以文件头里面不需要这个。
密钥大小由密钥本身给出,因此也可以省略。
blockmode 是剩余的参数。只是永远不要使用欧洲央行。永久使用像 OCB 这样的单块模式,您也不需要将其存储在文件中。
如果您不打算在每个文件中更改它们,则在两侧预定义所有参数是一种解决方案。 可以使用校验和进行错误检查,校验和也是关键信息,因此您可以将它们与数据一起加密或与密钥一起提供。
如果您无论如何都必须传输参数,以下方法可能会有所帮助:
在密钥文件中传输参数,如果您要自己定义格式并且密钥是按文件分发的。
您还可以通过将它们映射到一些随机定义的枚举器来定义不同的设置,这些枚举器在不了解软件的情况下无法提供有价值的信息。
【讨论】: