首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PBKDF2风险散列盐类+5-8号引脚

用PBKDF2风险散列盐类+5-8号引脚
EN

Cryptography用户
提问于 2020-02-02 21:47:26
回答 2查看 388关注 0票数 2

我的任务是把一个简单的标志在经验的地方,用户键入他们的ID和一个5到8的数字值作为密码或PIN在这里被称为。

我使用ASP .NET核心,使用Identity Server 4作为发行令牌的核心实现。我必须实现登录页面,并且知道建立一个安全的页面/云系统的需求。

根据我的研究,Bcrypt是用于执行此任务的事实上的散列机制,但我有几点需要考虑:

  1. 如果/正如他们在安全行业所说的那样,系统受到危害,使用如此短的PIN,即使我们使用大盐,也很容易计算出所有的PIN,因为与自由文本密码相比,在技术上只有少量的结果。
  2. 在.NET中没有经过验证的Bcrypt实现-- ASP.NET Core使用PBKDF2,并且由于它是框架的一部分,所以我认为我在这里获得了可信度。

在这些情况下,我的默认答案是使用Auth0/Azure B2C或其他大型公司,他们每天都在执行这种操作,并强制执行复杂的密码,但是这个要求非常具体,不能被外面的操作员满足。

我对此进行了风险分析,并将其提交给了他们接受的企业,但这里的一些小问题是:

  1. 有没有比PBKDF2更现代的东西,并验证了我应该使用什么?
  2. 如果系统数据被泄露,我担心密码很容易被破解吗?
  3. 在这样的系统中,您会推荐什么样的审计机制?
EN

回答 2

Cryptography用户

回答已采纳

发布于 2020-02-02 22:01:32

  1. 是的,比如这里。例如,考虑使用Argon2。
  2. 是的,你的担心是正确的。密码推导应该足够慢。但实际上,如果登录时间超过1秒,用户就不能接受。因此,密码推导不应超过1秒。如果一个PIN由5个数字组成,它意味着100 000个不同的PIN。如果每个人花费的时间不超过1秒,攻击者就需要不超过10万秒的时间来用CPU的单个核心来强制执行,这意味着大约需要28小时。在4个核心CPU的情况下,它将需要7个小时。使用8位数字的PIN将花费更长的时间。大致可以是28000小时左右的单核CPU = 7000小时,4核CPU = 292天这样的CPU。这意味着,如果你有10个CPU,它将需要不到1个月的时间来打破它。使用更多的CPU,野蛮的强制将花费更少的时间。
  3. 关于审计的问题在这个网站上是超出范围的。最好是在信息安全网站问一下。但是,不管您要实现什么审计,如果攻击者获得了带有密码散列的数据库,他将强行执行,检索普通密码,然后应用这些密码。当一些用户抱怨他的帐户有问题时,审计可能有助于跟踪攻击者。但是,即使找到攻击者也无助于减轻所造成的损害。
票数 2
EN

Cryptography用户

发布于 2020-02-24 12:12:56

在密码中有这么小的搜索空间,使用标准的密码散列方法是不明智的。

相反,我会使用苹果在iPhone上保护PIN的相同方法:他们使用一个秘密密钥作为哈希函数的一部分,并且该密钥在防篡改硬件中。

因此,您可以使用HMAC-SHA-256 (key, salt||PIN),而不是昂贵的散列。您只需要一个迭代,因为它是您所依赖的密钥的机密性。

保密密钥是很困难的;硬件安全模块(HSM)执行HMAC操作而不向软件公开密钥是必要的。您可以让多个应用服务器与一组散列服务器对话。

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

https://crypto.stackexchange.com/questions/77366

复制
相关文章

相似问题

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