WebAuthn能防范中间人攻击吗

wen 网络安全 7

本文目录导读:

WebAuthn能防范中间人攻击吗

  1. WebAuthn 如何防范 MITM?
  2. WebAuthn 无法防范的 MITM(或其他攻击)

这是一个非常专业且关键的问题,简短的回答是:能,WebAuthn 是当前防范中间人攻击(MITM,即 Man-in-the-Middle Attack,指攻击者拦截并篡改通信双方数据)最有效的技术之一,尤其相较于传统的密码和短信验证码。

但需要明确一点:没有绝对的安全,WebAuthn 的设计极大地提高了 MITM 的门槛,在特定条件下仍有极小的绕过可能。

下面我们来详细解析 WebAuthn 为何能防范 MITM,以及它不能防范什么。

WebAuthn 如何防范 MITM?

核心在于它的 “来源绑定”“数字签名” 机制。

  1. 来源绑定(Origin Binding)与 RP ID 校验:

    • 当用户注册凭据时,WebAuthn API 会记录下当前网站的 来源(Origin)https://example.com
    • 当用户进行登录(断言)时,浏览器会将你的请求来源(例如你实际访问的网站 https://evil-phish.com)与在注册时绑定的来源(https://example.com)进行比较。
    • 关键点: 这个比较发生在操作系统的浏览器内核层面,而不是网络层面的 JavaScript 可以篡改的,即使是攻击者伪造了一个看起来一模一样的钓鱼网站 https://evil-example.com/,浏览器也会发现 origin 不匹配,从而拒绝发送签名,攻击者无法让用户的物理安全密钥或生物识别信息对一个错误的 origin 进行签名。
  2. 挑战-响应协议与防重放:

    • WebAuthn 使用基于公钥密码学的 挑战-响应 机制,服务器发送一个随机的、一次性的“挑战”(challenge),用户的安全密钥或平台验证器(如手机/电脑的指纹传感器)需要用私钥对这个挑战进行签名。
    • 如果攻击者拦截了这个挑战,他只能拿到一段签了名的数据,但由于挑战是一次性的,并且签名绑定了特定的 origin 和 RP ID(依赖方 ID,即网站的身份标识),攻击者无法在另一个会话或另一个网站上重放这个签名来冒充用户。
  3. 私钥永不出设备:

    • 用户的私钥始终安全地存储在硬件(如 YubiKey、手机的 TEE/安全芯片)中,它永远不会通过网络传输,也不会被任何网站或服务获取。
    • 防范 MITM 的关键: 即使在网络传输过程中,攻击者拦截了所有通信,他也无法获取私钥,他无法伪造用户的签名,没有私钥,就无法完成认证。
  4. 抵抗钓鱼:

    • 这是 WebAuthn 最重要的特性之一,设想一个 MITM 攻击场景:
      1. 用户连接到一个虚假的 Wi-Fi(或者 DNS 被劫持)。
      2. 用户访问了 https://bank.com,但 DNS 解析实际上指向了攻击者的服务器 https://evil.com
      3. 攻击者的服务器创建了一个看似与 bank.com 完全一样的登录页面,并向用户自己的安全密钥发起认证请求。
      4. 问题来了: 安全密钥会问:“谁让我签名?” 用户浏览器回答:“https://evil.com”。
      5. 安全密钥说:“我没有在这里注册过,我的私钥只属于 https://bank.com。”
      6. 结果: 认证失败,即使攻击者成功截获了数据,也无法发起一次合法的认证。

WebAuthn 无法防范的 MITM(或其他攻击)

尽管非常强大,但 WebAuthn 并非万能:

  1. 设备端恶意软件/木马(会话劫持):

    • 如果用户的电脑或手机已经被植入恶意软件,攻击者可以:
      • 在认证成功后,立即使用 JS 脚本或更底层的方法窃取服务器颁发的会话 Cookie
      • 攻击者可以利用这个 Cookie 直接接管用户的会话,而绕过再次认证,这本质上是一种认证后的 MITM,但攻击者不再需要伪造密码或获取私钥。
    • 防范: 这超出了 WebAuthn 的能力范围,需要依赖设备本身的安全(系统更新、防病毒软件等)。
  2. 点击劫持(Clickjacking):

    攻击者可以在一个透明的 iframe 中嵌入合法的 WebAuthn 登录页面,诱骗用户点击“是”或“确认”按钮来触发认证,但 WebAuthn 的 API 本身有防范点击劫持的机制(浏览器会通过弹窗或特定 UI 来执行操作),但在某些实现中仍需谨慎。

  3. 针对平台验证器的攻击(如 Face ID/Touch ID 被欺骗):

    如果攻击者能够绕过设备自身的生物识别机制(比如使用高质量的 3D 打印面具骗过 Face ID,或者使用法院命令/强力手段),那么他们可以物理上控制设备,但这属于物理安全范畴,不再是网络 MITM。

  4. 条件限制:

    • 如果攻击者已经控制了你浏览器端(比如通过恶意扩展) 的所有活动,他们可以尝试在认证过程中挂钩 API 调用,但最坏情况下,他们只能拿到一次有效的签名(绑定到他们指定的 origin),但无法伪造后续的签名。
特性 传统密码 + OTP(一次性密码) WebAuthn
对 MITM 的抗性 ,密码可被拦截,OTP 可被实时转发。 极高,私钥永不出设备,签名绑定 origin,无法重放。
对钓鱼的抗性 中/低,用户容易被欺骗输入。 极高,浏览器自动校验来源,物理拒绝错误来源。
主要弱点 密码泄露、中间人拦截、社会工程学。 设备被彻底攻陷(恶意软件窃取会话)、物理接触。
  • WebAuthn 几乎是不可直接通过纯网络层面的 MITM 攻击被破解的。 钓鱼网站、DNS 劫持、SSL 剥离等传统 MITM 手段在面对 WebAuthn 时基本无效。
  • 真正的风险点在于攻击者成功地攻破了你的设备(例如植入木马),并在你成功认证后窃取了你的会话令牌,这是所有认证方案(包括 WebAuthn)的最终风险点,但 WebAuthn 将风险从“网络层”转移到了“设备层”,极大地提高了普通攻击者的攻击成本。

如果你问的是“WebAuthn 能否防范中间人攻击?”,答案是:能,而且做得非常好,但前提是你需要确保设备本身是安全的。

抱歉,评论功能暂时关闭!