Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

The Case for Prefetching and Prevalidating TLS Server Certificates

论文下载

Abstract

文章着眼于优化SSL性能,提高连接速度,对已有的Snap Start、DNSprefetch等技术进行了改进,提出了4种提前获取连接信息的方法,保证安全性的前提下,省略了SSL连接中的多个步骤,从而达到提高连接速度的目的。

Introduction

安全性和用户体验总是会存在一定的冲突。由于SSL握手以及ocsp协议的证书有效性验证,都会带来网络连接的延迟,从而使用户访问服务器的速度减慢。在之前有过优化措施,包括Fast-track和Chrome的Snap Start,当客户端与服务器建立过连接后,会在本地存储一定的信息,供下次连接时使用,从而简化了SSL握手中的一些环节。

本文提出了一种对Snap Start的改进措施,通过提前获得和验证证书等信息,使得未进行连接过的客户端与服务器也可以使用优化过的SSL步骤进行连接。并且在文章最后给出了实验的评估,包括访问时间、四种方法对服务器带来的消耗等。

Background

这里提出了与SSL相关的多种技术

Fig

  1. TLS False Start:当客户端握手阶段发送Finished之后不用等待服务器的HelloDone而是直接带着一条HTTP request消息,服务器收到这条加密消息先存储在本地,然后发送完ServerHelloDone后做出相应。
  2. TLS Snap Start:若客户端从未与某服务器建立过连接,第一次访问该服务器时,会在clienthello里附带一个空的Snap Start Extension,服务器会返回本次连接中选择的密码套件和一个8位的orbit(对于同一域名的不同服务器会返回不同的orbit,用来防止重放攻击)。这样在一次连接时,客户端就获得了服务器证书,8位oubit和所用的密码套件。当客户端与该服务器再次建立连接时,只需要在Clienthello的Snap Start extension中提供这些信息以及TLS ciphertext records、20位“suggest”随机数和服务器握手信息的哈希,并且会发送第一个http request,服务器收到客户端发来的信息,获得主密钥并且验证握手信息,之后便发送ServerHelloDone,然后处理第一条请求信息。这样整个过程在握手阶段,省略了服务器的第二个步骤。
  3. DNS prefetching:提前获取域名的解析,Chrome做法有-用户在地址栏输入的同时解析,浏览器启动时获取其定义的最热10个地址的解析,鼠标移动到某个链接时。

Fig

OCSP Measurements

本文对OCSP做了评估。

Fig

  1. OCSP获取的证书的有效性信息会在本地客户端存留不同的时间,有15分钟,有7天。
  2. OCSP响应时间,大部分在200到600毫秒。
  3. 有些用户希望无痕浏览网页,然而本地存储的OCSP证书验证信息,会存留一个对应的OCSP responser的地址和证书的序号,这样ATTACKER就可以通过这个信息查询到用户访问过哪些网站。

Fig

Prefetching Methods

  1. truncates handshake:客户端与服务器进行SSL连接时,不适用完全的握手信息,客户端发送带有空的Sanp Start Extension的Clienthello,服务器返回Snap Start需要的响应信息(包括证书,8位orbit,选择的密码套件),之后客户端会发送alert终止连接,之后根据获取的信息进行Snap Start形式的连接。
  2. 通过http request直接向服务器请求snap start需要的相关信息。
  3. 通过DNS解析的时候,从DNS获取,但是此种方法应用不广泛,因为需要DNS TEXT records文件,有些DNS服务器不支持。
  4. 通过向多个CDN发送该请求,获得信息。

ANALYSIS

三种方法使用的时间评测。

Fig