1

试图将我的头包裹在 FIDO 协议套装上。

前提

  1. Authenticator 有一个主私钥(也称为 attestation key)
  2. 在注册仪式期间,验证者签署挑战和其他几个参数以及新生成的公钥,并通过 WebAuthN 协议将其发送到 FIDO 通用服务器。并且生成的私钥存储在本地的身份验证器中。



问题

  1. FIDO服务器如何验证authenticator生成的公钥的完整性(简单地说服务器如何验证证书链回信任根)?这是假设身份验证器和 Web 客户端之间存在中间人攻击的范围。
  2. 服务器是否内置了相应的认证密钥/主私钥的公钥(复制CA模型)?
  3. 如果是这样,所有的 fido 身份验证器在创建时是否都具有相同的主密钥(无论是软件模块还是硬件模块)?如果不是,制造商和 FIDO 服务器如何跟上正在创建和部署的大量物理身份验证器和软件模块?
4

3 回答 3

0

好的。让我们谈谈证明、mds 和元数据。

设备有一个叫做认证的东西。这是一种识别设备型号的方法。一般情况下,如安全密钥,即Yubikey、Trustkey等,厂商会生成一个认证批次证书和一个私钥,然后放置在批次设备上。

然后将批处理证书的根放在元数据中,这是一个描述设备属性(名称、模型 ID、算法、安全属性等)的数字文档。

然后将元数据存储在元数据服务、MDS 和 FIDO 联盟管理的元数据集中存储中。

FIDO 服务器不时地获取 MDS,并加载所有元数据。在注册期间,设备将返回一个证明,该证明可以通过使用modelid(AAGUID或AAID)查找匹配的元数据来验证,并使用元数据中的根证书,验证设备使用批处理生成的证明签名钥匙。

在此处输入图像描述

现在,这是一件事。这一切都很酷而且很花哨,但实际上,在大多数情况下,您实际上并不需要证明。大多数服务只想使用安全密码身份验证,因此默认情况下 WebAuthn API 将返回“无”证明。没有浏览器出于隐私原因删除证明信息。

如果您想了解更多信息,有一篇很棒的文章深入讨论了证明:https ://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651

于 2021-12-02T17:07:08.323 回答
0

FIDO 服务器可以使用FIDO 联盟元数据服务来获取有助于将证书链验证回信任根的​​信息。

WebAuthn W3C 建议中“注册新凭据”的第 15 步指出:

如果验证成功,则从可信来源或策略获取该证明类型和证明声明格式 fmt 的可接受信任锚(证明根证书或 ECDAA-Issuer 公钥)列表。例如,FIDO 元数据服务 [FIDOMetadataService] 提供了一种获取此类信息的方法,即使用 authData 中 attestedCredentialData 中的 aaguid。

摘自https://fidoalliance.org/mds/

FIDO 联盟元数据服务 (MDS) 是一个基于 Web 的工具,FIDO 身份验证器供应商可以在其中发布元数据声明以供 FIDO 服务器下载。这为部署 FIDO 服务器的组织提供了有关 FIDO 身份验证器的集中且可信的信息源。

于 2018-11-03T01:34:38.890 回答
0
  1. 身份验证器在出售给用户之前会被注入一个私钥(证明密钥)。证明证书受 FIDO 服务器信任。该证书将用于验证证明声明中的签名。让我们谈谈信任证书。有两种信任:信任和信任链。

信任:FIDO 服务器直接导入(存储)一个已知的 Authenticator Vendor 证书。假设我信任 Yubico,我从 Yubico 站点下载 Yubico 密钥证明证书并导入到我的 FIDO 服务器。该证书将用于验证使用 Yubico 密钥的用户的注册。如果没有私有证明,任何人都无法生成有效的证明声明。不要担心中间人,因为供应商可能已经应用了安全芯片技术来保护私钥。

信任链:FIDO 服务器显然信任 FIDO 元数据服务 (MDS),只存储 MDS 证书。MDS 为 Authenticator Vendors 颁发证书。因此,当Authenticator创建attestation statement并将其发送给FIDO server时,Server会使用attestation statement中的attestation证书验证签名,然后将attestation证书与MDS证书结合起来进行验证。

请注意,我们谈论的是迄今为止最常见的完整基本证明模型。ECDAA 会有所不同。

  1. 如上文 1. 中所述。服务器可能或可能没有证明公钥。请注意,身份验证器中的证明私钥不是不同的。供应商批量生产安全密钥。他们每批都注入相同的私有证明,这是为了用户隐私。这不是一个完美的解决方案。未上线的ECDAA完美解决了用户隐私问题。

  2. 正如 1.、2 所解释的那样。

于 2019-05-27T11:24:04.987 回答