我使用AES加密某些数据,问题是我必须使用只包含4位数的密钥(如密码),所以任何人都可以循环9999次来查找我的密钥并解密我的文本。我在这里加密的数据是短信。
有任何想法可以避免这种情况吗?
答案 0 :(得分:1)
编辑:删除了关于添加盐的评论,每个指出这一点的人都是正确的。你可能会增加解密的时间复杂度,这样蛮力攻击就会花费相当长的时间。
答案 1 :(得分:1)
不,没有。您可以将所有盐和迭代计数添加到PBKDF中,但最终攻击者只有10K次尝试通过,那就是花生。
唯一明智的做法是让一个单独的实体执行解密。它可以将自己的秘密熵添加到密钥种子,并使用强密钥。然后,实体将使用PIN对身份验证进行限制。
您可能希望仔细查看系统的安全体系结构,看看是否可以更改某些内容以避免此问题(访问控制,其他登录凭据等)。
答案 2 :(得分:1)
您可以采用与ATM机相同的方式:在某人输入错误的PIN三次后,该帐户暂时无效(您还可以设置一个超时)并且该用户必须采取某种行动(例如,点击电子邮件中的确认链接)以激活他/她的帐户。
您还必须使用该用户的唯一属性对PIN进行加密(最好是在该用户注册时随机生成的字符串)。我还建议在所有哈希中添加一个额外的盐,这些哈希值是硬编码的,或者是从配置文件中读取的(如果你的数据库被泄露了,但其余部分没有被删除,则会很有用)。
这种方法仍然容易受到攻击,有人选择单个PIN和暴力破坏用户名。您可以通过对IP地址应用相同的策略来采取一些对策,但这仍然远非最优。
编辑:如果你的目标是加密流量而不是加密PIN,你应该使用HTTPS或基于公钥加密的其他协议,这样你就不必使用你的PIN来加密这些短信。
答案 3 :(得分:0)
假设您只能输入4位数字,请使用发件人的电话号码或类似内容填写应用程序中的密钥长度?