【问题标题】:How concerned should we be about brute force attacks when creating passwords?创建密码时,我们应该对暴力攻击有多担心?
【发布时间】:2020-07-24 14:20:10
【问题描述】:

暴力攻击在现实世界中有效吗?我曾经使用过的几乎所有需要密码的服务都具有某种类型的保护,可以防止尝试使用多个密码。另外,这如何转化为数据加密?

【问题讨论】:

    标签: security encryption passwords theory


    【解决方案1】:

    蛮力又名穷举键搜索 - 是一种可以处理多个攻击向量的方法

    您描述的是通过服务进行身份验证来攻击服务。这里的服务充当看门人,可以通过限制您的尝试等来防止攻击。

    但这只是系统的一种攻击媒介:

    如果攻击者通过其他方式获得对用户数据库的访问权怎么办?他现在能够利用这些知识来访问服务吗?

    如果该服务的所有者愚蠢到可以存储明文密码……哎呀……但是我们假设密码的存储方式至少使用了一种像哈希函数这样的单向函数

    让我们看看发生了什么变化......

    在我们可用的计算资源允许的范围内,我们可以在密码猜测方面进行尽可能多的尝试...

    这里唯一剩下的看门人是猜测密码的复杂性

    如果我们只需要检查 value == hash(password) 我们可以很容易地看到,除了暴力破解之外,还有其他有效的攻击方式......

    但是你特别要求暴力破解所以我们假设我们的密码是加盐的......

    value == hash(password,salt) ...不再有彩虹表...但这仍然很糟糕,因为我们可以非常快速地计算并并行化...剩下的限制因素是硬件... . 如果我们加入一些(租用的?...被黑客入侵?)具有足够核心/GPU 的数字运算系统...我们能以多快的速度通过蛮力破解密码? ...让我们在这里做一些数学运算...

    假设我们有一个系统来完成我们的工作......每秒大约进行 1,000,000 次密码猜测......假设我们的密码有大约 42 位的熵......这大约是一个 9 个字母的小写密码......需要多长时间?

    如果攻击者知道允许的字符池(在我们的例子中是较低的 alpha),则需要 51 天才能得到肯定的猜测

    你可以假设在 50% 的时间之后,正确猜测的概率是 50%,所以......不是很长......

    但情况变得更糟......我们假设一台机器......如果我们购买/租用/破解更多,它会扩展吗?确实如此……假设有 10,000 台机器……

    我们可以简单地除以 10k ... 我们减少到大约 7 分 21 秒 ...

    从云提供商处租用 10k 台机器 10 分钟需要多少费用? ...作为示例(我们没有指定哈希函数的复杂性,因此该示例可能不在每秒猜测的范围内,但您会看到它的去向)... a1.xlarge amazon ec2按需实例的成本大约为每小时 10 美分……我们需要它……10 分钟……所以除以 6……我们想要 10k 个节点……大约 170 美元……让我们四舍五入up ... 200 美元作为粗略估计

    所以...如果我们想租用相对较少的钱,可以大量使用计算资源...现在想想恶意软件捕获计算资源

    所以……有了坏人方面的所有计算资源……我们能做什么?

    我们可以让猜测变得更加困难......

    如果我们将密码复杂性从上面的 42 位增加到...假设是上下字母数字和 16 个字符的长度...那大约是 96 位的熵...我们的小机器有 1,000,000 次猜测每秒大约需要 2.5 万亿年才能找到我们的密码(保证...那是另一个故事)

    但回到现实世界 .. 我们采用另一个可以每秒猜测 100,000,000,000,000 个密码的云设置 ... 是我们之前计算的 10k 机器大小的 10k 倍... 我们需要 2500 万年才能拥有有保证的命中......在那段时间的 50% 之后可能会成功......那么为什么这不能抵消那些额外的 54 位熵的增加呢? ...指数增长...每多一点工作量就翻倍...

    除了增加熵之外,我们可以做的另一件事是增加猜测的计算复杂度

    如果我们像 hash(hash(hash(...))) 这样的散列函数链接可变轮数,我们可以增加计算结果所需的时间...

    对于常规登录,您的登录需要 10 毫秒还是 250 毫秒并不重要,但对于攻击者来说,这种差异意味着他必须承担 25 倍的计算资源,或者需要 25 倍的时间......随着我们的熵增加而强大,但仍然......这是一个可衡量的效果,我们这边的成本非常低

    当谈到数据加密时,我们通常不会谈论密码,而是加密密钥……几个字节的熵……在这个级别上,它与上面的计算基本相同……大约 80 到 90 位它相当困难和昂贵......大约 40 岁......哎呀它是开放的......

    有趣的部分是当您必须使用密码来加密某些东西时......如何从密码获取所需的密钥字节串?散列?可能...但是如何?

    好消息是......其他人在我们之前也遇到过同样的问题......这导致了像 PBKDF2(密码派生密钥派生函数......具有可变长度输出的哈希函数...它创建一个伪随机位流,您可以根据需要获取尽可能多的位...通常是对称密码的密钥大小)

    PBKDF2 有一个 round 参数来增加计算时间......所以基本上......它和上面的非常相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多