Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Origin-Bound Certificates:A Fresh Approach to Strong Client Authentication for the Web

论文下载

Abstract

  • 【背景】一直以来,网络上客户端的身份认证都使用的都是密码和cookie的验证方式。【文章贡献】这篇文章提出一种基于公钥的认证机制,通过建立一个简单的TLS扩展,使得客户端与服务器间建立强认证通道并将现有的认证token绑定到这个通道中。这种方式不会对现有机制做太大改动,但大大加强了客户端的身份认证。
  • 【评估】作者将这个想法在google chrome和google web服务基础设施上进行实现,并对性能进行了评估。

Introduction

  • MITM成功后,攻击者可以获取authentication cookies从而完全控制用户账户。这种攻击本来不应该发生,客户端向服务器端进行身份认证的同时不受中间人攻击在理论上是一个已经解决的问题,例如客户端和服务器可以使用authenticated key agreement protocol 来建立一个永久安全的Channel。但在实际中,采用的都是bearer token模式,也就是只要是token的持有者都有访问权限,这种形式会受到很多类型的攻击。学术界早就知道通过使用公钥密码而不是共享秘密来避免这个弱点,但实际中取代bearer token的尝试都没有进展。
  • 作者通过对network stack中的每一层做一些微小调整,来实现使用公钥机制的强认证。整体的思想是:浏览器为每个网站生成不同的自签名公私钥对(origin bound certificates,OBC),因为浏览器在与某个origin通信时使用的是同一个客户端证书,因此可以将token与OBC绑定。TLS-OBC的通道绑定机制使得被盗的token不能用于其他通道。

Threat Model

两类攻击者:可以获取到用户名/密码(credential)、只可以获取认证token。本文只考虑第二类攻击。

TLS-OBC

Fig

生成的证书DN是“anonymous.invalid”,扩展中指定origin。

Channel-binding cookies

<v,HMACk(v+f)>,v是cookie值,f是OBC指纹,k是密钥,只有服务器知道。服务器返回的cookie必须是这种形式,否则可能会被降级攻击。

Fig

攻击者可以丢掉所有bearer token,强迫用户重新输入用户名密码。要抵御这种攻击可以结合protected/unprotected login来给用户警告。

TLS Terminators

出于安全或性能考虑,有些服务会使用TLS terminator,让用户的请求首先通过terminator节点被wrapped/unwrapped。这时有两种方法来做cookie harden:一是terminator直接将OBC和HTTP请求的其他信息(如客户端发来的cookie)传给后端服务,后端服务计算并验证Channel-bound cookie;二是在后端服务不愿或无法处理OBC信息时,terminator维护cookie列表并自己丛验证。

Performance

  • gathered with the Chromium benchmarking extension and the HTML5 Navigation Timing JavaScript interface

Fig

  • measured the total network latency from the Navigation Timing fetchStart event to the responseEnd event。
  • 证书生成是造成延时的主要原因,可以预先计算公私钥对,但是证书签发仍旧要在连接时进行。