我的任务是把一个简单的标志在经验的地方,用户键入他们的ID和一个5到8的数字值作为密码或PIN在这里被称为。
我使用ASP .NET核心,使用Identity Server 4作为发行令牌的核心实现。我必须实现登录页面,并且知道建立一个安全的页面/云系统的需求。
根据我的研究,Bcrypt是用于执行此任务的事实上的散列机制,但我有几点需要考虑:
在这些情况下,我的默认答案是使用Auth0/Azure B2C或其他大型公司,他们每天都在执行这种操作,并强制执行复杂的密码,但是这个要求非常具体,不能被外面的操作员满足。
我对此进行了风险分析,并将其提交给了他们接受的企业,但这里的一些小问题是:
发布于 2020-02-02 22:01:32
发布于 2020-02-24 12:12:56
在密码中有这么小的搜索空间,使用标准的密码散列方法是不明智的。
相反,我会使用苹果在iPhone上保护PIN的相同方法:他们使用一个秘密密钥作为哈希函数的一部分,并且该密钥在防篡改硬件中。
因此,您可以使用HMAC-SHA-256 (key, salt||PIN),而不是昂贵的散列。您只需要一个迭代,因为它是您所依赖的密钥的机密性。
保密密钥是很困难的;硬件安全模块(HSM)执行HMAC操作而不向软件公开密钥是必要的。您可以让多个应用服务器与一组散列服务器对话。
https://crypto.stackexchange.com/questions/77366
复制相似问题