8.2.1 SSL结构(图)

作者:佚名    文章来源:不详    点击数:    更新时间:2008-8-17

8.2  安全套接层(SSL)和传输层安全(TLS)协议
8.2.1  SSL结构
1.SSL简介

SSL(Secure Socket Layer,安全套接层协议)是由Netscape设计的一种开放性协议,它提供了一种介于应用层和传输层之间的数据安全套接层协议机制。它为TCP/IP连接提供数据加密、服务器认证、消息完整性,以及可选的客户机认证。SSL是在Internet基础上提供的一种保证私密性的安全协议,它能使客户机/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对客户进行认证。SSL协议要求建立在可靠的传输层协议(如TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的。高层的应用层协议(如HTTP, FTP, TELNET…)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商,以及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
SSL协议提供的安全信道有以下三个特性。
1)私密性:在握手协议定义了会话密钥后,所有的消息都被加密。
2)确认性:尽管会话的客户端认证是可选的,但是服务器端始终是被认证的。
3)可靠性:传送的消息包括消息完整性检查(使用MAC)。
2.SSL的结构
SSL的设计目标是在TCP基础上提供一种可靠的端到端安全服务,其服务对象一般是Web应用。在SSL的体系结构中包含两个协议子层,其中底层是SSL记录协议层(SSL record protocol layer);高层是SSL握手协议层(SSL handshake protocol layer)。SSL的协议栈如图8-1所示。

图8-1  SSL的协议栈 SSL协议由SSL记录协议和SSL握手协议两部分组成。
1)SSL记录协议
在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和长度不为0的记录数据组成的。所有的SSL通信包括握手消息、安全空白记录和应用数据都使用SSL记录层。SSL记录协议包括了记录头和记录数据格式的规定。
① SSL记录头格式
SSL的记录头可以是两个或三个字节长的编码。SSL记录头包含的信息包括:记录头的长度、记录数据的长度、记录数据中是否有粘贴数据。其中粘贴数据是在使用块加密算法时,填充实际数据,使其长度恰好是块的整数倍。最高位为1时,不含有粘贴数据,记录头的长度为两个字节,记录数据的最大长度为32 767个字节;最高位为0时,含有粘贴数据,记录头的长度为三个字节,记录数据的最大长度为16 383个字节。
当数据头长度是三个字节时,次高位有特殊的含义。次高位为1时,标识所传输的记录是普通的数据记录;次高位为0时,标识所传输的记录是安全空白记录(被保留用于将来协议的扩展)。
② SSL记录数据格式
SSL的记录数据包含三个部分:MAC数据、实际数据和粘贴数据。
MAC数据用于数据完整性检查。计算MAC所用的散列函数由握手协议中的CIPHER-CHOICE消息确定。若使用MD2和MD5算法,则MAC数据长度是16个字节。当会话的客户端发送数据时,密钥是客户的写密钥(服务器用读密钥来验证MAC数据);而当会话的客户端接收数据时,密钥是客户的读密钥(服务器用写密钥来产生MAC数据)。序号是一个可以被发送和接收双方递增的计数器。每个通信方向都会建立一对计数器,分别被发送者和接收者拥有。计数器有32位,计数值循环使用,每发送一个记录计数值递增一次,序号的初始值为0。
2)SSL握手协议
SSL握手协议层包括SSL握手协议(SSL handshake protocol)、SSL密码参数修改协议(SSL change cipher spec protocol)、应用数据协议(application data protocol)和SSL报警协议(SSL alert protocol)。握手协议层的这些协议用于SSL管理信息的交换,允许应用协议传送数据之前相互验证,协商加密算法和生成密钥等。
SSL握手协议包含两个阶段,第一个阶段用于建立私密性通信信道,第二个阶段用于客户认证。
第一阶段是通信的初始化阶段,通信双方都发出HELLO消息。当双方都接收到HELLO消息时,就有足够的信息确定是否需要一个新的密钥。若不需要新的密钥,双方立即进入握手协议的第二阶段。否则,此时服务器方的SERVER-HELLO消息将包含足够的信息使客户方产生一个新的密钥。这些信息包括服务器所持有的证书、加密规约和连接标识。若密钥产生成功,客户方发出CLIENT-MASTER-KEY消息,否则发出错误消息。最终当密钥确定以后,服务器方向客户方发出SERVER-VERIFY消息。因为只有拥有合适公钥的服务器才能解开密钥。图8-2为第一阶段的流程。
图8-2  SSL握手协议第一阶段的流程需要注意的是每一通信方向上都需要一对密钥,所以一个连接需要四个密钥,分别为客户方的读密钥、客户方的写密钥、服务器方的读密钥、服务器方的写密钥。
第二阶段的主要任务是对客户进行认证,此时服务器已经被认证了。服务器向客户发出认证请求消息REQUEST-CERTIFICATE。当客户收到服务器方的认证请求消息,发出自己的证书,并且监听对方回送的认证结果。而当服务器收到客户的认证,认证成功返回SERVER-FINISH消息,否则返回错误消息。

  • 上一篇文章:
  • 下一篇文章: