【问题标题】:Is it possible to harden aes encryption against brute force attack?是否可以针对暴力攻击加强 aes 加密?
【发布时间】:2012-08-15 06:43:48
【问题描述】:

有没有办法在不加强密码的情况下强化 aes 加密以防止暴力攻击。我的意思是用户通常选择简单的密码。我不想强迫用户选择越来越复杂的密码。(这是正确的解决方案,但是当他们不断忘记密码并且无法使用密码时,它是无用的)他们从大写,小写和数字中选择密码.密码长度为 8。我想在不更改这些密码属性的情况下使暴力攻击变得困难。

编辑:密码长度正好是 8 位。不能接受较短的长度。还有一个关于回复的问题,将加密文本保存在内存中(使用加盐和密钥拉伸)是一个安全问题?

【问题讨论】:

  • 这是两个 Mehmet 中的第二个题外话。

标签: security encryption aes password-protection brute-force


【解决方案1】:

我很想说:不,这是不可能的。为了使蛮力攻击更难,你需要更多的熵。

话虽如此,如果你这样做key stretching,实际上可以让猜测过程变慢。

【讨论】:

  • 那么在内存中存储加密文本会不会是一个安全问题?
【解决方案2】:

如果不知道问题的使用方式的确切性质,很难对问题发表评论。 (例如,密码只能存储为 8 个字符吗?)。

也就是说,选择一个好的salt 会使暴力破解更加困难。今天被盗的大多数密码都是由于未能实施适当的加盐造成的。

为了提高安全性,您可以使用 consistent hashing 将盐分片到一系列值上。

【讨论】:

  • ... 或为每个条目单独分配盐,而不是为完整的密码数据库分配一个盐。
  • @Rik:确切地说,bast salt 是一种全球唯一 salt,128 位是您的下限。
  • @HubertKario 如果它是为每个条目单独分配的盐,那么盐的存储就会成为问题。这就是为什么我建议使用一致的散列将盐分布在一个范围内。对于足够数量的密码(大约 2^(n - 1)),盐很可能是唯一的。
  • 你的答案不清楚你用什么哈希来得到盐。我也不明白为什么一致的哈希在这里有用。
  • @Asti:如果存储 16 字节的信息是个问题,那么您还有更大的问题需要解决……请记住:过早优化是万恶之源。
【解决方案3】:

如果您想保护您的用户不使用“密码”、“12345678”或类似密码,那么没有办法强化它们。

您必须能够在合理的时间内(即平均硬件时间少于 1 秒)检查提供的密码是否与您拥有的哈希值匹配。即使检查哈希和密码是否相等,暴力破解简单密码也需要 1 秒,在普通 PC 上只需要不到一天的时间。

如果您想保护平均质量的密码(不在前 1000 个最常见的密码或少数最常用语言中的单个单词),那么密码/密钥拉伸是您的最佳选择:scrypt、bcrypt 或标准 PBKDF2 都不错选择。

【讨论】:

  • Salt(每个用户唯一)和键拉伸是要走的路。
  • 正确的加盐和拉伸甚至可以强化像“密码”这样的简单密码。 (如果它是第一个猜到的密码,那么是的,这将失败,但它仍然可以根据要求极大地帮助对抗暴力破解。)
  • @RobNapier:将大多数常见密码的攻击时间从 5 分钟更改为 10 小时对您有何帮助?
  • 首先,出于同样的原因,TRTL-30 保险箱优于 TL-15 保险箱。针对具有有限资源和自己的成本/收益分析的真正攻击者实施安全措施。让他们的工作更难是一种胜利。更一般地说,加盐、拉伸和随机 IV 可以防止彩虹表式攻击。不要假设唯一的攻击是“获取一条消息,然后破解它”。许多攻击看起来像“获取许多消息,看看其中是否有任何看起来像我知道的东西”。盐渍使这很难。对于攻击的完整性:xkcd.com/538
  • @RobNapier:我并没有拒绝加盐和拉伸,事实上,我认为任何不使用它们的密码存储从一开始就被破坏。我只是指出,无论是哪种攻击,它都无助于保护非常弱密码。
【解决方案4】:

使用多轮会减慢尝试密码的过程,但这就是我能想到的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多