使用AES加密弱密钥

时间:2012-06-08 15:06:05

标签: encryption cryptography key aes

我使用AES加密某些数据,问题是我必须使用只包含4位数的密钥(如密码),所以任何人都可以循环9999次来查找我的密钥并解密我的文本。我在这里加密的数据是短信。

有任何想法可以避免这种情况吗?

4 个答案:

答案 0 :(得分:1)

编辑:删除了关于添加盐的评论,每个指出这一点的人都是正确的。你可能会增加解密的时间复杂度,这样蛮力攻击就会花费相当长的时间。

编辑:请阅读:https://security.stackexchange.com/questions/6719/how-would-you-store-a-4-digit-pin-code-securely-in-the-database

答案 1 :(得分:1)

不,没有。您可以将所有盐和迭代计数添加到PBKDF中,但最终攻击者只有10K次尝试通过,那就是花生。

唯一明智的做法是让一个单独的实体执行解密。它可以将自己的秘密熵添加到密钥种子,并使用强密钥。然后,实体将使用PIN对身份验证进行限制。

您可能希望仔细查看系统的安全体系结构,看看是否可以更改某些内容以避免此问题(访问控制,其他登录凭据等)。

答案 2 :(得分:1)

您可以采用与ATM机相同的方式:在某人输入错误的PIN三次后,该帐户暂时无效(您还可以设置一个超时)并且该用户必须采取某种行动(例如,点击电子邮件中的确认链接)以激活他/她的帐户。

您还必须使用该用户的唯一属性对PIN进行加密(最好是在该用户注册时随机生成的字符串)。我还建议在所有哈希中添加一个额外的盐,这些哈希值是硬编码的,或者是从配置文件中读取的(如果你的数据库被泄露了,但其余部分没有被删除,则会很有用)。

这种方法仍然容易受到攻击,有人选择单个PIN和暴力破坏用户名。您可以通过对IP地址应用相同的策略来采取一些对策,但这仍然远非最优。

编辑:如果你的目标是加密流量而不是加密PIN,你应该使用HTTPS或基于公钥加密的其他协议,这样你就不必使用你的PIN来加密这些短信。

答案 3 :(得分:0)

假设您只能输入4位数字,请使用发件人的电话号码或类似内容填写应用程序中的密钥长度?