TLS协议测试资源汇总

版权声明:随意转载,需注明出处。by think_ycx https://blog.csdn.net/think_ycx/article/details/83657659

本文没有什么干货,今天有一个需求是测试一下TLS协议,覆盖RFC文档中的一些异常,异常包括:unexpected_message、bad_record_mac等。更多的异常可以参考tls 1.2的rfc文档:https://tools.ietf.org/html/rfc5246,tls1.0rfc文档:https://tools.ietf.org/html/rfc2246

相关概念

所有连接到互联网的设备都有一个共同点,它们依赖安全套接字层(secure socket layer,SSL) 和传输层安全(transport layer security,TLS)协议保护传输的信息。

SSL/TLS协议是用来加密传输的协议。如果根据OSI七层模型来分类工作在传输层之上,应用层之下的表示层。就常见的HTTP协议而言,可以引入SSL/TLS层,也可以不引入。

关于OpenSSL,OpenSSL项目是安全套接字层(secure sockets layer,SSL)和传输层安全(transport layer security,TLS)协议的一个实现,是一个开源项目,大多*nix系统安装时就继承了openssl。输入:openssl version -a来查看当前的openssl版本。大多数用户借助OpenSSL是因为希望配置并运行能够支持SSL的Web服务器。整个过程包括3 个步骤:(1) 生成强加密的私钥;(2) 创建证书签名申请(certificate signing request,CSR)并且发 送给CA;(3) 在你的Web服务器上安装CA提供的证书。具体的服务器配置和openssl的使用方法可以参考《HTTPS权威指南》。

关于SSL的握手过程可以参考【1】和【2】,核心过程基于非对称加密算法:

测试

我们的目标在于测试TLS协议的问题,因此设想需要寻找一个基于TLS协议的应用,并且构造TLS数据包观察异常的覆盖面。一阵搜索之后找到了tlsfuzzer【5】,用来fuzz tls协议的。这里简单介绍一下工作原理。

原理:sever端首先生成一个私钥以及根据私钥生成的证书,之后根据该证书基于openssl来运行一个server。 client端使用scripts中的脚本来测试。scripts脚本中覆盖了部分的异常,但是不是非常全面。举例,unexpected_message异常:

参考&资源汇总

  1. SSL/TLS协议运行机制的概述 http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

    扫描二维码关注公众号,回复: 4072732 查看本文章
  2. 图解SSL/TLS协议 http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

  3. google的ssl/tls测试工具:https://github.com/google/nogotofail

  4. 针对ssl来中间人攻击的工具:https://github.com/droe/sslsplit

  5. tlsfuzzer https://github.com/tomato42/tlsfuzzer

  6. 《https的权威指南》,有高清可复制的pdf可以下载

猜你喜欢

转载自blog.csdn.net/think_ycx/article/details/83657659