源试用:Chrome 中的设备绑定会话凭据

设备绑定会话凭据 (DBSC) 是一项新的 Web 功能,旨在保护用户会话免遭 Cookie 盗窃和会话盗用。此功能现已在 Chrome 135 中作为源代码试用版提供测试。

背景

Cookie 在现代网络身份验证中发挥着至关重要的作用,可让用户在浏览会话期间保持登录状态。不过,攻击者越来越多地利用被盗的身份验证 Cookie 来盗用会话,从而绕过多重身份验证和其他登录安全机制。

恶意软件操作者经常从被入侵的设备中渗漏会话 Cookie,以便在未经授权的情况下访问用户账号。由于 Cookie 是不记名令牌,因此无需证明所有权即可授予访问权限,这使得它们成为攻击者的理想目标。

设备绑定会话凭据 (DBSC) 旨在通过创建绑定到设备的经过身份验证的会话来打击 Cookie 盗用行为。这种方法可降低被渗漏的 Cookie 访问其他设备上账号的几率。

运作方式

DBSC 引入了一个新 API,可让服务器创建绑定到设备的已验证会话。发起会话时,浏览器会生成公钥-私钥对,并使用硬件支持的存储空间(例如可用的可信平台模块 [TPM])安全地存储私钥。

然后,浏览器会发出常规会话 Cookie。在会话生命周期内,浏览器会定期证明其拥有私钥,并刷新会话 Cookie。您可以将 Cookie 的生命周期设置得足够短,以便攻击者无法从盗取 Cookie 中获利。

关键组件

  • 会话注册

    • 当用户登录时,服务器会使用 Sec-Session-Registration HTTP 标头请求设备绑定的会话。
    • 浏览器会生成新的密钥对,并安全地存储私钥。
    • 系统还会建立一个短时有效的身份验证 Cookie,并将其绑定到此密钥对。
    • 服务器会将会话与相应的公钥相关联,确保该会话只能在原始设备上使用。
  • 会话刷新和所有权证明

    • 短时有效的 Cookie 到期后,Chrome 会触发会话刷新。
    • 浏览器向服务器定义的刷新端点(在会话注册期间提供)发送请求,并使用 Sec-Session-Challenge 标头发送已签名质询(如果服务器提供)。
    • 服务器通过验证使用会话私钥签名的响应来验证所有权证明。
    • 如果有效,服务器会发出新的短时有效 Cookie,以允许会话继续。

这种方法的一个好处是,Chrome 会推迟那些原本会缺少刷新的短时有效 Cookie 的请求。与不自动续订 Cookie 而导致 Cookie 可能会过期或消失的方法相比,这种行为可确保会话绑定的 Cookie 在整个会话期间始终可用,让开发者能够更放心地依赖这些 Cookie。

实现示例

服务器可以请求设备绑定的会话,如下所示:

HTTP/1.1 200 OK
Sec-Session-Registration: (ES256);path="/refresh";challenge="12345"

当会话处于活动状态时,服务器可以通过质询-响应交互进行验证:

HTTP/1.1 401 Unauthorized
Sec-Session-Challenge: "verify-session"

浏览器会做出如下响应:

POST /refresh
Sec-Session-Response: "signed-proof"

优势

  • 减少 Cookie 被盗的风险:即使会话 Cookie 被盗,也无法在其他设备上使用。
  • 在不对用户体验做出重大更改的情况下增强安全性:在后台透明运行,无需用户进行额外互动。
  • 减少对长时效会话 Cookie 的依赖:只要会话在原始设备上保持有效,系统就会自动刷新短时效 Cookie。
  • 支持标准加密机制:利用 TPM 支持的安全存储空间(如果有),可强力防范渗漏。

隐私权和安全注意事项

DBSC 旨在增强安全性,同时保护用户隐私:

  • 无其他跟踪矢量:每个会话都与唯一的密钥对相关联,以防止跨会话跟踪。
  • 不会长期跟踪设备指纹:除非用户明确允许,否则服务器无法将同一设备上的不同会话相关联。
  • 可由用户清除:当用户清除网站数据时,系统会删除会话和密钥。
  • 符合 Cookie 政策:DBSC 遵循与 Cookie 相同的基于网站的范围限定,确保不会引入跨源数据泄露。

试试看

设备绑定会话凭据源试用从 Chrome 135 开始提供。

对于本地测试

如需在本地测试 DBSC,请执行以下操作:

  • 前往 chrome://flags#device-bound-session-credentials 并启用该功能。

对于公开测试

如需在公共环境中使用源试用版测试 DBSC,请执行以下操作:

  1. 访问 Chrome Origin 试用版页面并注册。
  2. 将提供的令牌添加到您网站的 HTTP 标头中:

    Origin-Trial: <your-trial-token>
    

资源

参与其中,共同塑造网络安全的未来

欢迎加入我们,共同打造更安全的网络身份验证!我们鼓励 Web 开发者测试 DBSC,将其集成到其应用中,并分享反馈。您可以在 GitHub 上与我们互动,或参与 Web 应用安全工作组的讨论。

通过实现 DBSC,我们可以共同降低会话盗用风险,并增强用户的身份验证安全性。立即开始使用,帮助我们定义 Web 安全的未来!