首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密如何迫使处理器“暂停”?

加密如何迫使处理器“暂停”?
EN

Security用户
提问于 2016-02-18 21:59:10
回答 3查看 164关注 0票数 0

我经常被告知,在执行解密哈希的数学运算时,加密会迫使处理器“暂停”,这就是暴力强制操作可能要花费这么长时间的原因。我不明白处理器“暂停”意味着什么,也不明白一串数字是如何强制暂停的。有人能用尽可能多的通俗易懂的英语来解释吗?

我意识到,我可能并不是以一种精确的方式把所有这些术语都抛在脑后--我的计算机科学和数学基础充其量是薄弱的。

EN

回答 3

Security用户

发布于 2016-02-18 22:15:49

你的问题听起来有点含糊不清,所以我可以想到两件事,你可能会强迫它停下来:

程序暂停--如果您无法访问密码哈希,而您只是试图在设备中键入密码,设备就可以任意地等待一定时间,然后告诉您是否成功。每次尝试失败,这一时间可能会增加,虽然最初的几次通常不会受到多少惩罚,这是因为人们倾向于混淆密码或输入错误的东西。如果有人可以访问您的密码哈希,并且正在使用他们自己的软件来测试所有的组合(一种野蛮的武力攻击),那么他们就不需要包含这个暂停,它也不会有任何效果。

计算昂贵的密码检查-某些散列策略需要大量的计算*来验证密码是正确的。这些是有意用于密码检查的,因为您不能编写自己的软件来绕过这一点。虽然强迫你的用户等待这个昂贵的计算可能是个坏主意,但是对有效的用户来说,等待一秒并不是什么大问题,但当与一个试图用暴力猜测密码的人打交道时,这是一个很大的问题,因为每一个错误的猜测都会招致这种惩罚。我应该指出,虽然从用户的角度来看,这似乎只是一个暂停,但从计算机的角度来看,这是大量的工作,而屏幕上没有任何可见的结果。

*与大多数操作所需的几毫秒相比,计算量很大--实际延迟可能仅为一秒钟左右,这取决于硬件。

票数 3
EN

Security用户

发布于 2016-02-18 22:17:10

我认为你混淆了几个概念,并且专门询问密码哈希,对吗?

正确地执行密码散列会引入一个工作因素,这意味着计算一个散列需要一些时间,而不是严格地说是您所描述的“暂停”,尽管它确实会导致最终用户感觉到一些延迟,这也可以用同样的方式来解释。

另外一个注释的更正是:散列是单向的。没有机会解密。因此,如果您有一个密码的散列,并且想知道使用了什么密码来创建该哈希,您所做的方法是使用相同的散列函数,并提交候选密码,并将结果散列与您所拥有的散列进行比较,以确定它们是否匹配。这就是网站(例如)的典型做法。简单地说,当您创建一个帐户时,您被要求提供一个密码,该密码被散列,并且哈希被存储。当您再次登录时,您再次输入您的密码,网站对您提供的内容进行了散列,并将其与其存储的哈希进行比较。如果他们匹配,你就被认证了。如果没有,你被要求再试一次。

因此,一个简单的散列函数的问题是,它相当容易创建许多候选密码的哈希非常快。因此,当攻击者从数据库中窃取密码哈希时,他可以从可能的密码字典中创建哈希,并将结果哈希与被盗的哈希进行比较,以便以惊人的速度计算出密码是什么。对于许多常见的散列函数,他每秒钟可以尝试数十亿个可能的密码。

解决这个问题的方法,我认为这是我提到的工作因素,通常是作为迭代实现的。因此,当一个密码被提交给哈希时,它不是一次哈希,而是10,000次,或者100,000次,或者1,000,000次。这意味着,当攻击者窃取此哈希时,他也必须对每个候选密码进行相同次数的散列,以确定候选人是否实际上是正确的。所以现在你已经把他可能的尝试限制在每秒数十亿,几十亿除以10,000,或除以100,000,或1,000,000。对他来说,花费要高得多,而且他也不太可能从可能的密码列表中得到足够多的信息来找到实际的密码。

在实践中,这件事要复杂一些。您必须详细考虑诸如盐类、计算硬度与内存硬度等变量,但一般来说,在较高的级别上,这是使攻击密码哈希困难的机制。

票数 3
EN

Security用户

发布于 2016-02-18 22:16:07

我认为有两件事你可能会听到给你这个想法。

首先,设计了一种较好的密码存储哈希算法,该算法需要很长的时间才能强制执行。然而,这不是通过使处理器暂停来实现的。相反,它是通过使处理器大量工作来实现的。

哈希算法的设计需要大量的计算(因此需要很长的时间)。要强行执行哈希,您需要运行哈希算法数十亿次,如果算法是好的,即使在一台好的计算机上也需要数年的时间。但这是多年来的主动计算,而不是停顿。

有关密码散列的更多信息,请参见文章,特别是关于慢散列函数的部分。

其次,您可能已经听说,在许多登录系统上,如果不强制您暂停输入密码,将不会接受任何次数的尝试,以防止您强行使用密码。这与加密无关。此外,处理器不暂停。只是不管您登录到什么地方(可能是远程服务器,也可能是iPhone中的集成电路)拒绝测试凭据,因为它是以这种方式编程的。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/115074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档