在创建密码时,我们应该如何对待暴力攻击?

问题描述 投票:0回答:1

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

security encryption passwords theory
1个回答
0
投票

暴力又名穷举密钥搜索-一种可以对多个攻击向量起作用的方法

您所描述的是通过服务验证来攻击服务。这里的服务充当网守,并可以通过限制尝试次数等来防止攻击。

但是那只是系统的一个攻击媒介:

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

如果该服务的所有者愚蠢到足以存储明文密码... ouch ...,但我们假设密码的存储方式至少使用一种像散列函数那样的单向功能

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

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

这里唯一剩下的关守是猜测密码的复杂性

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

但是您特意要求使用蛮力,所以我们假设我们的密码是咸的...

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

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

~~ 51天,如果攻击者知道允许的字符池(在我们的情况下为低字母),则可以肯定地做出肯定猜测

您可以假设在那段时间的50%之后,正确猜测的概率为50%,所以...不太长...

但是情况变得更糟...我们假设有一台机器...如果我们购买/租用/入侵更多,它会扩展吗?可以。假设10,000台计算机...

我们可以简单地除以10k ...,而我们大约要花7分21秒...

从云提供商处租用1万台计算机10分钟要花多少钱? ...作为一个示例(我们没有指定哈希函数的复杂性,因此该示例可能不在每秒猜测的范围内,但是您会看到它的去向)... a1.xlarge亚马逊ec2按需实例的成本约为每小时10美分...我们需要它... 10分钟...因此除以6 ...我们希望获得1万个节点...约合170美元... ... ... 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具有一个舍入参数以增加计算时间...所以基本上...与上面的非常相同

© www.soinside.com 2019 - 2024. All rights reserved.