FIDO-FIDO服务器如何在注册阶段/仪式期间验证入站公钥的完整性?

时间:2018-10-13 09:11:42

标签: pki fido-u2f webauthn fido

试图把头缠在FIDO协议服上。

前提

  1. Authenticator具有主私钥(也称为证明密钥)
  2. 在注册仪式期间,验证者对质询和其他几个参数以及新生成的公钥进行签名,并通过WebAuthN协议将其发送到FIDO通用服务器。生成的私钥将存储在本地的身份验证器中。



问题

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

2 个答案:

答案 0 :(得分:0)

FIDO服务器可以使用FIDO Alliance Metadata Service来获取有助于将证书链验证回到信任根的信息。

WebAuthn W3C建议书中"Registering a new credential"的第15步指出:

  

如果验证成功,请获取可接受的信任锚的列表   (证明根证书或ECDAA-发行人公共密钥)   来自受信任的证明类型和证明语句格式fmt   来源或来自政策。例如,FIDO元数据服务   [FIDOMetadataService]提供了一种获取此类信息的方法,   使用authData中attestedCredentialData中的aaguid。

https://fidoalliance.org/mds/中提取:

  

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

答案 1 :(得分:0)

  1. 身份验证器在出售给用户之前已注入了私钥(证明密钥)。证明证书受FIDO服务器信任。该证书将用于验证证明声明中的签名。 让我们谈谈信任证书。信任有两种:信任和信任链。

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

信任链:FIDO服务器显然信任FIDO元数据服务(MDS),仅存储MDS证书。 MDS为身份验证器供应商颁发证书。因此,当身份验证器创建证明语句并将其发送到FIDO服务器时,服务器将使用证明语句中的证明证书来验证签名,然后将证明证书与MDS证书结合起来进行验证。

请注意,我们正在谈论的是到目前为止最常见的完全基本证明模型。 ECDAA会有所不同。

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

  2. 如1.,2。

  3. 所述