安全是有分量的

网站防护_东莞高防云主机_如何防

2022-01-12 00:20栏目:高防

网站防护_东莞高防云主机_如何防

更新2020-02-14:正如一位读者所指出的(谢谢!),百度云ddos防御,证明不能防止中间人攻击,因为攻击者拥有与受害者相同模型的真实验证器。下面的证明部分已经更新,以解释可能的攻击场景。

本文是一篇关于FIDO2的高级博客文章。建议首先阅读关于什么是FIDO2的介绍。在这篇博文中,我们将介绍FIDO2的安全模型,并讨论协议核心的高级主题,如认证。

WebAuthn定义了两种操作:注册和认证。让我们看看这些操作是如何工作的,并讨论它们的安全性。

注册流

图:注册流,来自官方WebAuthn规范

在注册过程中,在依赖方(RP)上注册新帐户的用户将使用他们的web浏览器,淘宝是如何防御ddos,该浏览器实现WebAuthn规范。web浏览器的WebAuthn实现将使用CTAP2协议调用身份验证程序,怎样防御ddos,CTAP2协议使用名为CBOR的二进制格式对数据进行编码。

依赖方的web应用程序提供一个注册页,其中包含调用navigator.credentials.create()的客户端Javascript代码以及RP生成的一些参数,例如,服务器端随机生成的用于防止重放攻击的质询,以及RP支持的公钥算法列表。客户端代码通常在用户单击页面上的"注册"按钮时执行。此WebAuthn调用用于告诉web浏览器使用authenticatorMakeCredential()操作请求连接的验证器(嵌入式或通过USB、NFC等)生成新的凭证(私钥/公钥对),在本地存储(或加密,以便只有该验证器可以解密并返回它,以便将其发送到RP进行服务器端存储)。

在生成新凭证之前,验证器验证一些接收到的参数,并在验证器支持的情况下执行用户验证(例如,要求提供生物特征或PIN)。否则,它将执行简单的用户状态测试。例如,验证器可以要求用户点击验证器来确认用户的存在。

AuthenticateMakeCredential操作返回一个包含认证签名和公钥的认证对象,发送给依赖方。创建的凭证稍后可由认证者在认证期间用于登录。

认证者通过认证者数据(生成的公钥和认证者的属性)和客户端数据(操作类型、令牌绑定ID、质询、,

位包括身份验证器的GUID和表示身份验证器型号的数据。AAGUID表示"验证者证明全局唯一ID"。例如,Yubikey 5的AAGUID(2fc0579f-8113-47ea-b116-bb5a8db9202a)应不同于单独密钥的AAGUID(0076631b-d4a0-427f-5773-0ec71c9e0279)。

认证签名和证书链被发送回依赖方。如果RP关心证明,那么它验证证明签名以确保验证者实际上是它假装的模型,并且,例如,用户验证实际上是由验证者执行的,如验证者所声称的。它还验证证书链直至通过FIDO元数据服务(MDS)获得的公共信任根。RP还根据其策略验证验证者的安全属性是否可接受,以及接收到的质询是否与第一次生成的质询相同。

如果所有检查都成功,依赖方将公钥与新创建的用户一起存储,并显示成功消息。用户现在可以使用他们的验证器在依赖方使用此凭证进行身份验证。

有关详细信息,请参阅WebAuthn第5.1.3节。

身份验证流程

图:身份验证流程,根据官方WebAuthn规范

认证过程与上述注册流程基本相似,但存在一些差异,我们将在这里讨论。

在认证过程中,用户的web浏览器呈现依赖方的登录页面,并且通常在单击"Login"按钮后执行嵌入的客户端Javascript代码。此代码将包含对navigator.credentials.get()的调用。此WebAuthn调用用于告诉web浏览器请求附加的验证器使用现有凭据生成断言签名。

与此处的注册流不同的是,RP仅生成质询,并允许客户端web浏览器选择应用于验证的凭据(或"帐户"),而不是开始生成新凭证。

web浏览器准备客户端数据(类型、来源、质询、令牌绑定),但这次,类型设置为"webauthn.get"而不是"webauthn.create",因为这是一个身份验证而不是注册操作。它还验证RP ID是否与RP的有效域相对应,以避免网络钓鱼攻击。

web浏览器使用一些参数对附加的验证器调用authenticatorGetAssertion操作。验证器接收参数并进行一些检查。如果参数包含允许的凭据的非空列表,则身份验证器将尝试解密凭据ID,就像它们是加密(非驻留)密钥一样。如果成功,那么它会将这些密钥添加到可选择密钥列表中。

验证器会提示用户在该RP ID范围内选择一个凭据,以防止仿冒攻击,并执行用户状态或用户验证测试。它增加签名计数器(如果存在)。RP使用此计数器检测克隆的验证器。

验证器通过参数中接收的验证器数据和客户端数据哈希的串联,使用所选凭证的私钥生成断言签名。验证器以注册流程中相同的方式准备验证器数据结构,并返回包含所选凭证ID、验证器数据和生成的断言签名的结构。

web浏览器发送凭证ID、客户端数据、验证器数据,断言签名和用户句柄返回给依赖方。