在我们国家/地区,我们拥有MFA服务,例如,您可以输入您的手机号码,然后ping您的电话,输入密码并通过身份验证。调用此服务的应用会取回您的“社会保险号”。
在应用中,可以按以下方式使用
:这是如何工作的?
这是一个猜测:
这是如何工作的?如果是这样,那么4位数字的密码不是太不安全吗?我假设如果您可以使用它来进行身份验证,那么任何可以访问您的API的人都可以尝试对其进行暴力破解。而且由于它是应用程序使用的API,因此这意味着它向所有人开放。
如果我错了,请纠正我。
编辑:我想可能会为每个用户生成一个秘密,并且可以使用该秘密对密码进行加密,从而使其更长。
答案 0 :(得分:0)
执行此操作的最现代,最安全的方法不涉及与依赖部分(后端)共享您的秘密(密码),而是使用非对称密钥加密。 例如,我的猜测是:
注册期间
身份验证期间
设备使用注册期间创建的私钥对挑战进行签名,并将其发送到后端。
后端验证签名,并为您提供受保护资源的访问权限。
这是我期望的现代应用程序的基本安全性。
这是如何工作的?如果是这样,那么4位数字的密码不是太不安全吗?我假设如果您可以使用它来进行身份验证,那么任何可以访问您的API的人都可以尝试对其进行暴力破解。而且由于它是应用程序使用的API,因此这意味着它向所有人开放。
我不确定他们为什么要求您提供PIN码。也许他们想施加一些额外的保护,并做类似的事情:
锁定生物识别身份验证失败的应用程序。 PIN码可用于解锁应用程序,然后让您重试。
如果用户禁用了生物特征认证方法,则使用PIN作为认证方法。
在任何情况下,即使4位数字太少,通常也会使用密钥派生功能(例如PBKDF2)对PIN进行散列,以使攻击者变慢并防止暴力攻击。实际的PIN永远不会存储,而是散列。
所有这些安全方案现在都已标准化,以确保产品足够安全。如果您喜欢冒险,可以看一下FIDO UAF协议: https://fidoalliance.org/specs/fido-uaf-v1.1-id-20170202/fido-uaf-overview-v1.1-id-20170202.html