多个 Android 应用程序(同一设备)可以共享相同的密钥对以使用 FIDO 2 协议进行无密码身份验证吗?

Sac*_*rma 9 authentication google-identity android-security webauthn fido

问题陈述:

我想使用FIDO2协议(通过提供SDK)解决Android应用程序上的用户身份验证,而不需要为同一设备上的不同应用程序执行多个注册仪式。例如,如果用户已在 Android 应用程序 A 中注册(生成公私密钥对),则不应要求他/她在 Android 应用程序 B 中注册(假设应用程序 A 和应用程序 B 在同一设备上) 。

可能的解决方案是什么(据我所知):-

  1. 与应用程序 A 和 B 集成的通用 SDK 以提供身份验证。
  2. 单独的身份验证应用程序。

我想继续使用解决方案 1,因为解决方案 2 可能并不理想,因为它需要下载额外应用程序(身份验证应用程序)的额外步骤。

我现在能够实现什么: - 我们能够通过维护应用程序 A 和应用程序 B 的单独私钥来对应用程序 A 和应用程序 B 的用户进行无密码身份验证。

在此输入图像描述 在上图中:-

  1. 用户 XYZ 登录到应用程序 A 并向该设备上的应用程序 A 注册自己。
  2. 在注册步骤中,验证器生成公钥-私钥对。
  3. PrivateKey_1(PrivateKey) 被创建并存储在密钥库中,PublicKey_1(PublicKey) 被创建并与服务器共享。
  4. 现在假设用户 XYZ 想要登录应用程序 B。用户 XYZ 会重复相同的过程以将其注册到应用程序 B。
  5. 在此过程中,将创建 PrivateKey_2 并将其存储在密钥库中,并创建 PublicKey_2 并与服务器共享。
  6. 因此,在上述场景中,用户 XYZ 能够分别使用私钥 PrivateKey_1 和 PrivateKey_2 在 App A 和 App B 上进行身份验证。

我想知道以下场景的可行性? 我想对应用程序 A 和应用程序 B 进行用户 XYZ 的无密码身份验证,其中应用程序(应用程序 A 和应用程序 B)可以使用相同的凭据(公钥和私钥对),并且不需要执行重复的注册仪式(创建公共密钥)和私钥)对于同一设备上的同一用户共享公共 SDK的多个应用程序(应用程序 A 和应用程序 B)。

在此输入图像描述 在上图中:-

  1. 用户 XYZ 登录到应用程序 A 并向该设备上的应用程序 A 注册自己。
  2. 在此过程中,将创建 PrivateKey_1 并将其存储在密钥库中,并创建 PublicKey_1 并与服务器共享。
  3. 用户 XYZ 想要登录应用程序 B。
  4. 应用程序 B 应该能够使用先前生成的凭据(由应用程序 A)验证用户 XYZ。

这可能吗?我的理解有什么差距吗?

任何建议和帮助都非常值得:):)

Raf*_*afe 0

这些帐户是否在同一服务上注册?阅读 Android FIDO2 API与网站的互操作性部分,似乎可以托管https://example.com/.well-known/assetlinks.json列出的多个 Android 应用程序。