首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >氪、氪v/s迭代SHA-x

氪、氪v/s迭代SHA-x
EN

Security用户
提问于 2014-11-20 04:17:27
回答 2查看 444关注 0票数 1

bcrypt和scrypt散列算法都是为了增加计算过程中所需的资源而设计的。使用这些算法对密码进行散列可能是有益的,因为它会使脱机攻击者的任务更加困难。

通过增加bcrypt中的迭代次数,可以增加密码哈希所需的时间。然后,攻击者必须以顺序方式执行此迭代,因为没有假定的快捷方式。

散列密码所需的内存可以用scrypt增加。因此,攻击者将需要大量内存来进行并行攻击。

正如我所理解的,这两种算法都试图阻止并行攻击。

我的问题是,我们能否使SHA或任何现有的安全哈希算法迭代和内存密集,并实现与bcrypt和scrypt相同的功能?

EN

回答 2

Security用户

回答已采纳

发布于 2014-11-20 12:18:43

使散列函数“迭代”已经存在;它被称为PBKDF2。Bcrypt仍然是更可取,因为PBKDF2可以在GPU上进行彻底的优化。

设计一个好的密码哈希函数是一项困难的工作;但是是的,现有的散列函数是很好的构建元素,因此它们可能会在某个时候涉及到。实际上,看看氪石:它以PBKDF2调用开始和结束,因此需要大量散列。但是,内存硬度来自于这两个哈希阶段之间发生的情况。这不是一个简单的哈希函数组合的问题,它将提供内存硬度;就像汽车不仅仅是“随心所欲的车轮”:车轮是必不可少的,但在汽车中比车轮更重要。

密码专家目前正忙于设计和分析新的密码哈希函数,这些函数试图(在某种程度上)比PBKDF2、bcrypt和scrypt更好。这是密码散列竞赛。一些候选人重用现有的哈希函数(例如,Catena),但是,就像scrypt一样,它们漂亮的“密码散列”属性(例如内存硬度)来自于设计的其余部分。

票数 3
EN

Security用户

发布于 2014-11-20 11:33:55

你对为什么要使用氪和bcrypt的理解是正确的。

是的,至少在理论上,您可以产生一种需要时间和内存的新算法,并且它可以合并现有的加密安全散列函数。您可以通过迭代增加时间,并通过要求大量的先验值来计算下一个值来增加内存。但是为什么呢?正如您所指出的,已经有一些功能可以做到这一点,由加密人员设计,接受其他人的检查,并且经得起时间的考验。

尝试翻动你自己的密码是非常危险的。你的问题告诉我们为什么:“没有假定的捷径。”对于一个算法来说,只需要时间和内存是不够的;它还必须抵抗快捷攻击。快捷攻击可能是微妙和聪明的,避免它们,甚至发现漏洞是困难的,特别是在你自己的工作中,你“知道”是正确的。你更有可能最终得到别人所说的“古怪的散列函数”,这些函数最终会有很简单的快捷方式。

如果你想设计你自己的密码算法,首先要拿到数学博士学位,集中在密码上。当你拿到博士学位后,国安局会雇用你。在那之后,花十年时间在国安局做密码工作,你可能有资格开发新的密码算法。

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

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

复制
相关文章

相似问题

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