2024年4月20日发(作者:)

SSL协议原理与应用

1,概念:

安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器

之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。

2,背景:

基于万维网的电子商务和网上银行等新兴应用,极大地方便了人们的日常

生活,受到人们的青睐。由于这些应用都需要在网络上进行在线交易,它们对网

络通 信的安全性提出了更高的要求。传统的万维网协议HTTP不具备安全机制

——采用明文的形式传输数据、不能验证通信双方的身份、无法防止传输的数据

被篡改 等,导致HTTP无法满足电子商务和网上银行等应用的安全性要求。

Netscape公司提出的安全协议SSL,利用数据加密、身份验证和消息完整性

验证机制,为网络上数据的传输提供安全性保证。SSL可以为HTTP提供安全连

接,从而很大程度上改善了万维网的安全性问题。

3,SSL具有如下优点:

提供较高的安全性保证。SSL利用数据加密、身份验证和消息完整性验证机

制,保证网络上数据传输的安全性。

支持各种应用层协议。虽然SSL设计的初衷是为了解决万维网安全性问题,

但是由于SSL位于应用层和传输层之间,它可以为任何基于TCP等可靠连接的应

用层协议提供安全性保证。

部署简单。目前SSL已经成为网络中用来鉴别网站和网页浏览者身份,在浏

览器使用者及Web服务器之间进行加密通信的全球化标准。SSL协议已被集成到

大部分的浏览器中,如IE、Netscape、Firefox等。这就意味着几乎任意一台装有

浏览器的计算机都支持SSL连接,不需要安装额外的客户端软件。

4,协议安全机制:

SSL协议实现的安全机制包括:

数据传输的机密性:利用对称密钥算法对传输的数据进行加密。

身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验

证,其中客户端的身份验证是可选的。

消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。

5,SSL的位置:

SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传

递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

如图所示,SSL位于应用层和传输层之间,它可以为任何基于TCP等可靠连

接的应用层协议提供安全性保证。SSL协议本身分为两层:

上层为SSL握手协议(SSL handshake protocol)、SSL密码变化协议(SSL change

cipher spec protocol)和SSL警告协议(SSL alert protocol)

底层为SSL记录协议(SSL record protocol)。

其中:

SSL握手协议:是SSL协议非常重要的组成部分,用来协商通信过程中使用

的加密套件(加密算法、密钥交换算法和MAC算法等)、在服务器和客户端之间

安全地交换密钥、实现服务器和客户端的身份验证。

SSL密码变化协议:客户端和服务器端通过密码变化协议通知对端,随后的

报文都将使用新协商的加密套件和密钥进行保护和传输。

SSL警告协议:用来向通信对端报告告警信息,消息中包含告警的严重级别

和描述。

SSL记录协议:主要负责对上层的数据(SSL握手协议、SSL密码变化协议、

SSL警告协议和应用层协议报文)进行分块、计算并添加MAC值、加密,并把处

理后的记录块传输给对端。

6,SSL握手过程(原理):

SSL通过握手过程在客户端和服务器之间协商会话参数,并建立会话。会话

包含的主要参数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密

算法和MAC算法等)以及主密钥(master secret)。通过SSL会话传输的数据,

都将采用该会话的主密钥和加密套件进行加密、计算MAC等处理。

不同情况下,SSL握手过程存在差异。下面将分别描述以下三种情况下的握

手过程:

只验证服务器的SSL握手过程

验证服务器和客户端的SSL握手过程

恢复原有会话的SSL握手过程

(一),只验证服务器的SSL握手过程

如图所示,只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL

的握手过程为:

(1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交

换算法、MAC算法等信息发送给SSL服务器。

(2) SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello

消息通知给SSL客户端。如果SSL服务器允许SSL客户端在以后的通信中重用本

次会话,则SSL服务器会为本次会话分配会话ID,并通过 Server Hello消息发送

给SSL客户端。

(3) SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给

SSL客户端。

(4) SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件

协商结束,开始进行密钥交换。

(5) SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客

户端随机生成的premaster secret,并通过Client Key Exchange消息发送给SSL服

务器。

(6) SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采

用协商好的密钥和加密套件进行加密和MAC计算。

(7) SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已

交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添

加MAC值、加密等),并通过Finished消息 发送给SSL服务器。SSL服务器利用

同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比

较,如果二者相同,且MAC值 验证成功,则证明密钥和加密套件协商成功。

(8)同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报

文将采用协商好的密钥和加密套件进行加密和MAC计算。

(9) SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密

套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息 发送给

SSL客户端。SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与

Finished消息的解密结果比较,如果二者相同,且MAC值 验证成功,则证明密

钥和加密套件协商成功。

SSL客户端接收到SSL服务器发送的Finished消息后,如果解密成功,则可

以判断SSL服务器是数字证书的拥有者,即SSL服务器身份验证 成功,因为只

有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到premaster

secret,从而间接地实现了SSL客户端对SSL服务器的身份验证。

说明:

Change Cipher Spec消息属于SSL密码变化协议,其他握手过程交互的消息

均属于SSL握手协议,统称为SSL握手消息。

计算Hash值,指的是利用Hash算法(MD5或SHA)将任意长度的数据转

换为固定长度的数据。

(二), 验证服务器和客户端的SSL握手过程

SSL客户端的身份验证是可选的,由SSL服务器决定是否验证SSL客户端的

身份。如图6中蓝色部分标识的内容所示,如果SSL服务器验证SSL客户端身份,

则SSL服务器和SSL客户端除了交互“3.2.1 只验证服务器的SSL握手过程”中

的消息协商密钥和加密套件外,还需要进行以下操作:

(1) SSL服务器发送Certificate Request消息,请求SSL客户端将其证书发送给

SSL服务器。

(2) SSL客户端通过Certificate消息将携带自己公钥的证书发送给SSL服务器。

SSL服务器验证该证书的合法性。

(3) SSL客户端计算已交互的握手消息、主密钥的Hash值,利用自己的私钥

对其进行加密,并通过Certificate Verify消息发送给SSL服务器。

(4) SSL服务器计算已交互的握手消息、主密钥的Hash值,利用SSL客户端

证书中的公钥解密Certificate Verify消息,并将解密结果与计算出的Hash值比较。

如果二者相同,则SSL客户端身份验证成功。、

(三),恢复原有会话的SSL握手过程

协商会话参数、建立会话的过程中,需要使用非对称密钥算法来加密密钥、

验证通信对端的身份,计算量较大,占用了大量的系统资源。为了简化SSL握手

过程,SSL允许重用已经协商过的会话,具体过程为:

(1) SSL客户端发送Client Hello消息,消息中的会话ID设置为计划重用的会

话的ID。

(2)SSL服务器如果允许重用该会话,则通过在Server Hello消息中设置相同

的会话ID来应答。这样,SSL客户端和SSL服务器就可以利用原有会话的密钥和

加密套件,不必重新协商。

(3) SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采

用原有会话的密钥和加密套件进行加密和MAC计算。

(4)SSL客户端计算已交互的握手消息的Hash值,利用原有会话的密钥和加

密套件处理Hash值,并通过Finished消息发送给SSL服务器,以便SSL服务器判

断密钥和加密套件是否正确。

(5)同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报

文将采用原有会话的密钥和加密套件进行加密和MAC计算。

(6)SSL服务器计算已交互的握手消息的Hash值,利用原有会话的密钥和加

密套件处理Hash值,并通过Finished消息发送给SSL客户端,以便SSL客户端判

断密钥和加密套件是否正确。

7,典型组网应用(使用):

(一),HTTPS

HTTPS是基于SSL安全连接的HTTP协议。HTTPS通过SSL提供的数据加密、

身份验证和消息完整性验证等安全机制,为Web访问提供了安全性保证,广泛

应用于网上银行、电子商务等领域。

图为HTTPS在网上银行中的应用。某银行为了方便客户,提供了网上银行业

务,客户可以通过访问银行的Web服务器进行帐户查询、转帐等。通过在客户

和银行的Web服务器之间建立SSL连接,可以保证客户的信息不被非法窃取。

(二),SSL VPN

SSL VPN是以SSL为基础的VPN技术,利用SSL提供的安全机制,为用户远

程访问公司内部网络提供了安全保证。如图9所示,SSL VPN通过在远程接入用

户和SSL VPN网关之间建立SSL安全连接,允许用户通过各种Web浏览器,各种

网络接入方式,在任何地方远程访问企业网络资源,并能够保证企业网络的安全,

保护企业内部信息不被窃取。

SSL VPN的典型组网环境