当前位置: 首页 > 网络安全 > 正文

SSL协议分析

发布时间:2019-11-07 编辑:李素芳 来源:

概念

SSL协议 缩写 Secure SocketLayer,是一种制定的保证服务器和客户端安全通信的一种协议。最初是由Netscape 1996年发布,由于一些安全的原因SSL v1.0SSL v2.0都没有公开,直到1996年的SSL v3.0TLSSSL v3.0的升级版,目前市面上所有的HTTPS都是用的是TLS,而不是SSL

HTTPS(Hyper TextTransfer Protocol over Secure Socket Layer),是一种基于SSL/TLSHTTP,所有的HTTP数据都是在SSL/TLS协议封装之上传输的。HTTPS协议在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。所以,研究HTTPS协议原理,最终其实是研究SSL/TLS协议。

SSL和TLS的关系

最新版本的TLSTransport Layer Security,传输层安全协议)是IETFInternet Engineering Task ForceInternet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。在TLSSSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLSSSL3.0不能互操作。

TLS 1.0通常被标示为SSL 3.1TLS 1.1SSL 3.2TLS 1.2SSL 3.3。

1TLSSSL的差异

1)版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为SSLv3.1

2)报文鉴别码:SSLv3.0TLSMAC算法及MAC计算的范围不同。TLS使用了RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的是异或运算。但是两者的安全程度是相同的。

3)伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。

4)报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CAunknown_ca)、拒绝访问(access_denied)等。

5)密文族和客户证书:SSLv3.0TLS存在少量差别,即TLS不支持Fortezza密钥交换、加密算法和客户证书。

6certificate_verifyfinished消息:SSLv3.0TLS在用certificate_verifyfinished消息计算MD5SHA-1散列码时,计算的输入有少许差别,但安全性相当。

7)加密计算:TLSSSLv3.0在计算主密值(master secret)时采用的方式不同。

8)填充:用户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度要达到密文块长度的最小整数倍。而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式可以防止基于对报文长度进行分析的攻击。

2TLS的主要增强内容

TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS SSL v3.0 的基础上,提供了以下增强内容:

1)更安全的MAC算法

2)更严密的警报

3灰色区域规范的更明确的定义

3TLS对于安全性的改进

1)对于消息认证使用密钥散列法:TLS 使用消息认证代码的密钥散列法HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变更。SSLv3.0还提供键控消息认证,但HMACSSLv3.0使用的(消息认证代码)MAC 功能更安全。

2)增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRFPRF使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。

3)改进的已完成消息验证:TLSSSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变更。然而,TLS将此已完成消息基于PRFHMAC值之上,这也比SSLv3.0更安全。

4)一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。

5)特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应该发送某些警报进行记录。

原理

SSL在OSI结构中的位置:

SSL协议是一个分层协议

  • 高层协议包括

SSL握手协议 SSL handshakeProtocol

改变加密约定协议 (Change Cipher Spec Protocol

报警协议 (AlertProtocol

  • 底层协议

SSL记录层协议(SSL Record Protocol

每一层中的信息可能包含长度、描述和内容等字段

报文分析

类型

版本

长度

明文数据/密文数据

1字节

2字节

2字节

(长度)字节

类型的一个字节:控制SSL的握手协议、改变加密约定协议、报警协议、应用数据

数据部分的结构有分为

明文数据/密文数据

数据

HMAC

填充

填充的长度

实现

SSL会话过程建立过程分为握手阶段和传输阶段。

  • 握手阶段

在整个通讯过程中,为实现TLS的安全连接,服务端与客户端要经历如下5个阶段[3]①Client申请链接,包含自己可以实现的算法列表以及其它信息;②Server回应链接,回应中确定了这次通信所使用的算法,将证书发送给对方,证书中包含了自己的身份和公钥;③Client在收到消息后会生成一个秘密消息ClientKeyExchange――(此秘密消息经处理后,将用作加密密钥(会话密钥)),用Web服务器的公钥加密并传至Server④Server再用私钥解密秘密消息ClientKeyExchange,并进行处理,生成会话密钥(用于之后的数据加密),会话密钥协商成功;⑤ClientServer得到会话密钥,并用此会话密钥进行数据加密。

  • 应用数据传输阶段

握手阶段后会进行数据传输,传输会进行加密。