DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > WEB安全 > 正文

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

06-29 WEB安全

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

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

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

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

注册流

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

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

依赖方的web应用程序提供一个注册页,其中包含调用navigator.credentials.create()的客户端Javascript代码以及RP生成的一些参数,例如,服务器端随机生成的用于防止重放攻击的质询,ddos攻击防御方案,以及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还根据其策略验证验证者的安全属性是否可接受,防御ddos服务,以及接收到的质询是否与第一次生成的质询相同。

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

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

身份验证流程

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

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

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

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

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

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

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

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

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

依赖方验证质询、操作类型、来源以及是否执行了用户存在或用户验证。最后,RP使用与接收到的凭证ID相关联的公钥来验证断言签名。如果所有检查都成功,则用户已成功通过身份验证。

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

什么是令牌绑定?

注册期间生成的客户端数据可能包含令牌绑定ID,但它用于什么?令牌绑定协议(RFC 8471)允许应用程序跨多个TLS会话创建唯一可识别的TLS绑定,防止令牌导出和重放攻击,因为服务器可以检测到它是否通过另一个TLS连接重放。

目前,只有Edge支持令牌绑定。其他主流浏览器不支持它。Chrome有一个早期的实现,默认情况下是禁用的,浅析ddos的攻击及防御,但是Chrome开发者在权衡了安全优势与维护成本、行业采用、web兼容性风险等因素后决定删除该功能。因此,在实践中,由于缺乏主流web浏览器的支持,目前不会经常使用此方法。

证明的目的是什么?

生成新密钥对时,所有身份验证器都必须提供证明。通常,为产生认证签名而签名的值是认证器数据和客户机数据散列的串联,但这可能因使用的认证格式而异。

FIDO2中认证的第一个目的是认证认证器及其创建的数据的来源,例如私钥/公钥对。换句话说,它允许RPs验证生成这个公钥的验证器是否真的是它声称的验证器的特定模型。这一点很重要,因为它允许RPs相信所使用的验证器具有特定的特性,例如用于存储私钥的方法、所使用的用户验证方法或验证器声称的总体加密强度。它允许RPs基于验证器特征构建接受策略,

更新:认证语句的第二个目的是防止攻击者替换自己生成的公钥,并将替换后的密钥转发给RP。认证语句中包含的公钥签名将不匹配。但是,这并不能阻止攻击者替换签名。

实际上,攻击者可能拥有多种身份验证器模型,检查截获的认证证书并确定使用的身份验证器模型,从同一模型的自己的身份验证器请求认证,美国服务器高防cdn,并将该认证转发给RP,无法判断认证签名是由受害者的认证者生成的还是由攻击者的生成的。

此攻击可以完全自动化,包括使用GPIO对攻击者的认证者进行用户状态测试,以假触摸认证者。但是,由于RP注册了攻击者的验证器而不是受害者的验证器,因此很容易检测到此攻击。如果攻击者无法在所有受害者的计算机上执行中间人攻击,则未来的身份验证尝试将失败,受害者将知道发生了什么。然而,攻击者可以解决这个问题,让注册仪式在不改变的情况下完成

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: /web/70504.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 9326303访问次数
  • 建站天数

    QQ客服

    400-0797-119

    X