Java 使用faceId/touchId的应用程序的安全性?它是如何工作的?
在我的国家,我们有一个MFA服务,例如,可以接收你的手机号码,然后ping你的手机,你输入一个pin,你就可以通过身份验证。调用此服务的应用程序将返回您的“社会安全号码”等价物 在应用程序中,可按如下方式使用:Java 使用faceId/touchId的应用程序的安全性?它是如何工作的?,java,android,ios,authentication,authorization,Java,Android,Ios,Authentication,Authorization,在我的国家,我们有一个MFA服务,例如,可以接收你的手机号码,然后ping你的手机,你输入一个pin,你就可以通过身份验证。调用此服务的应用程序将返回您的“社会安全号码”等价物 在应用程序中,可按如下方式使用: 您第一次打开应用程序。输入您的电话号码并进行身份验证 该应用程序可能还允许您选择pin,但首次登录后不会提示您再次使用此MFA,它将使用您的面部id或touchId 这是怎么回事 这里有一个猜测: 在注册过程中,会调用MFA服务,它会获取您的“社会保险号”,并将其用作您的用户名 您
- 您第一次打开应用程序。输入您的电话号码并进行身份验证
- 该应用程序可能还允许您选择pin,但首次登录后不会提示您再次使用此MFA,它将使用您的面部id或touchId
- 在注册过程中,会调用MFA服务,它会获取您的“社会保险号”,并将其用作您的用户名
- 您输入的pin(可能只有4个字母-非常短,因此我怀疑这一理论)将用作您的密码
- 用户名和密码(pin)随后存储在您的密钥链/核心存储器中,应用程序会提示您输入faceId/touchId,但随后会发送您的用户/pin以使用API对您进行身份验证
编辑:我猜可以为每个用户生成一个秘密,并且可以使用该秘密对pin进行加密,使其更长 最现代、最安全的方法不是与依赖方(后端)共享您的秘密(pin),而是使用非对称密钥加密。 例如,我的猜测是: 注册期间
- 您已成功使用凭据进行身份验证
- 该设备使用安全Enclave生成密钥对,并使其仅可通过生物识别技术(TouchID、FaceID)访问
- 公钥被发送到后端
- 后端通过某个通道向设备发送质询(推送通知?)
- 设备使用注册期间创建的私钥对质询进行签名,并将其发送到后端
- 后端验证签名并允许您访问受保护的资源
- 锁定应用程序,以防生物特征验证失败。PIN可用于解锁应用程序并允许您重试
- 如果用户禁用了生物识别身份验证方法,请使用PIN作为身份验证方法
谢谢您的回复,非常详细和清晰。你是否有机会了解Azure广告B2C?你知道我描述的MFA是如何工作的吗?