[关闭]
@killa 2016-01-12T07:28:09.000000Z 字数 1615 阅读 863

Here’s My Cert, So Trust Me, Maybe?Understanding TLS Errors on the Web

论文阅读笔记

课程 计算机系统安全分析


我们在使用浏览器的过程中经常会遇到浏览器提示网站证书异常的情况,造成这种情况的原因无非有两种:网站服务器配置不当、网站为恶意网站。在实际生活中,网站为恶意网站的几率比较低,但是浏览器无法独立判断是否为恶意网站,故将选择权交给用户。这篇文章主要研究的是通过对大量的TLS警告进行分析,帮助浏览器判断证书错误的原因以提供更好的用户体验和保持用户在遇到警告时的警惕性和注意力。


Abstract & Introduction

TLS是一种通过证书和公钥来验证服务器身份的技术,防止客户端误访问恶意服务器导致隐私数据丢失甚至造成更大的损失。

当证书验证出现问题时,原因可能是多样的。主要的原因有两个,一个是服务器配置出现问题,另一个是服务器是恶意服务器。很明显第一种原因的危害并不大,并且从实际上来说,第一种原因出现的频率要比另外一种高得多。

但是由于浏览器本身无法判断真正的原因到底是那种,所以目前主流浏览器采取的措施都是交给用户判断是否继续浏览网站。但由于大部分情况都是安全的,这无疑给用户的使用造成了一些不便。


Background

TLS Ecosystem

  1. CA(证书认证机构)使用自己的根证书为服务器颁发证书,对其进行认证。
  2. 服务器将证书和公钥公布。
  3. 客户端通过检查服务器证书的信任链判断是否信任服务器。

TLS Warnings

TLS错误产生的警告总共有两种:一是顶层页面包含错误时存在间歇性警告,另一种是当图像脚本等资源加载错误导致的TLS警告。

当前主流浏览器显示的是这两种警告的混合,要想减少浏览器因判断不准确而产生的冗余警告,关键在于提高TLS Ecosystem的安全性。


Experiments

作者使用火狐浏览器作为实验用浏览器,并且为了简化过程,将证书验证分为三个部分:

  1. Chain Building
  2. Chain Validation
  3. Name Validation

日常生活中用来验证证书使用比较多的库是OpenSSL,但是作者使用NSS来进行实验。

数据收集

作者使用9个月的时间,捕获了互联网上11.5亿个向不同端口发出的SSL连接。最后获得的离散证书共496742个。并对其中出现的错误进行了分类,主要有以下几类:

Chain Building阶段:
- 未知发行人错误
- 自签名证书
- 不完整链接
Chain Validation阶段:
- 过期证书
- 撤回证书
Name Validation阶段:
- www错误匹配
- 放松匹配
- 注册域匹配
- 证书多名

实验结果及讨论

基于所有的TLS错误警告分析结果,这篇论文得出九点推荐的建议:
1. 通过类似StartCom的权威机构敦促社会提倡自由的使用TLS。
2. 增加以域名系统为基础的实名身份验证的新标准势头。
3. 接受过期一周之内的证书,并不弹出警告。
4. 在证书验证环节容忍WWW错误匹配。
5. 使用一个更宽泛的姓名确认算法来接受多级星号。
6. 修改子域警告的不匹配,帮助用户把注意力集中在高风险的场景。
7. 浏览器提供关于证书验证错误的onerror事项信息,如果有此类信息的话。
8. 允许AIA支持,或在浏览器缓存中预载所有已知的内部认证信息。
9. 切换到独立的行政和安全撤销列表,并带有明显的警告。


Conclusion

浏览器在显示证书错误警告时无法判断威胁的程度,并且由于大部分警告的威胁性并不大,用户会习惯于直接点击警告并继续浏览,这就降低了TLS协议的安全性,通过检测常见的不同类型的错误警告,这篇论文为浏览器提供了一个框架来重新评估当前的警告机制并保存了用户的注意力。同时基于论文的分析,也呈现了大量准确的推荐的建议。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注