我正在尝试将 webauthn 添加到我的网络应用程序中,并且我想安全地存储带有凭据数据的私钥。我发现的使用凭证存储数据的方法有:hmac-secret 扩展、大 blob 扩展、CredentialsContainer.store() 。这些方法中的哪一种(如果有)可以安全地将数据存储在身份验证器上/与身份验证器一起存储?有更好的方法吗?
最佳答案
CredentialsContainer.store
与公钥凭证无关:它们永远不会被存储,只会被创建。 (您可以存储其他类型的凭据,例如密码,但标题显示“WebAuthn”,所以我将继续讨论该主题。)
hmac-secret
扩展(在 WebAuthn 级别公开为 prf
扩展)允许使用 HMAC 等 PRF 派生任意数量的 secret 。目前该功能落后于 chrome://flags/#enable-experimental-web-platform-features,但将在安全 key 方面获得最大程度的支持,并将在未来几个月内得到 Android 设备的支持。这是您问题的答案,但尚未完全准备好。
credBlob
扩展允许使用凭证存储少量固定数量的数据。然而,它最初并不是为了保密。只有较新的安全 key 才支持此功能。
largeBlob
扩展用于使用凭据(通常是该 key 的证书)存储 1 KB 或 2 KB 的数据。这将具有最少的安全 key 支持。
但是,目前这些选项在 Safari 中可能都不起作用。
关于google-chrome - Webauthn 安全地存储用户凭证数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75407223/