【发布时间】:2011-04-07 23:40:41
【问题描述】:
在 CBC 模式下使用 AES 和使用 IV(当然)使用自身加密给定密钥是否存在任何安全缺陷?
遵守原则:密钥是秘密的,IV 是公开的(因为这不会影响加密的安全性)。
但是,潜在的攻击者会知道(因为他可以访问源代码),字符串是使用自身作为密钥进行加密的。
我的判断没有发现任何问题,但我正在努力确定。
谢谢。
编辑 - 任务的细节,我希望我能清楚地传递它们,这对我自己来说还不是很清楚:
我的系统使用加密将某些值存储在 MySQL 表中。加密是在 PHP 代码上执行的(不是 MySQL 内置的 AES)。显然,我需要一个密钥,它需要由系统管理员在系统设置时设置一次。这一点很关键,因为在保存任何加密数据后更改密钥会使该数据无法解密。
管理员可以通过简单地通过 FTP(或其他)编辑 PHP 脚本文件来设置密钥。但这不是我想要的。
我想要的是有一个安装脚本,在此期间管理员会选择密钥,该密钥会自行加密并存储到表中。当然,下面提出的一个有效观点是,您需要密钥来解密密钥......我的推理没有深入,我正处于调查是否用自己加密密钥的阶段因为密钥仍然是安全的东西。
如果您对上述内容有任何想法,我们将不胜感激。
谢谢。
【问题讨论】:
-
起初我同意@Piskor,“有什么意义?”但是我看到,如果您自己加密了密码,然后存储了生成的密文,您可以通过尝试使用提供的密码解密密文来验证正确的密码。这与您的用例相似吗?
-
只是我还是你的标题和问题不同? :S
-
@Greg 如果他只是测试密码是否正确,他最好存储密码的加密哈希。您对用户的输入进行哈希处理,如果哈希匹配,您就知道输入的密码是正确的。
-
@Greg:我希望它就这么简单,对于简单的密码检查,我只需使用 SHA 哈希并完成它。 @Ranhiru Cooray:我想只有你 :)
标签: encryption