浅谈SSL加密协商过程

2020年09月17日

SSL是一种安全传输协议,及安全套接层。该协议最初由Netscape发展而来,现在主要用于网络上用来鉴别网站和网页浏览者身份,以及在浏览器及服务器之间进行加密通讯。例如现在的网上银行和电子商务等大型网上交易系统普遍采用HTTP和SSL相结合的方式。

SSL协议的工作流程:
服务器认证阶段:
(1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
(2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
(3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
(4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段:
在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。

SSL采用TCP作为传输协议提供数据的可靠传送和接收。位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可以分为两层:

SSL记录协议(SSLRecord Protocol):它建立在TCP之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

通过以上SSL加密协议的介绍,我们知道在传输应用数据之前,必须先进行通过SSL握手协议进行身份认证、密钥交换等,因此我访问了一个经过SSL协议加密的网站,并对整个过程进行抓包分析,用来详细分析SSL握手过程,了解其具体是怎样进行身份密钥交换。具体情况如下:

客户端和服务端通过三次握手建立连接后,客户端首先发送“Client Hello”消息,其中包含有:协议版本、随机数、以及客户端所支持的所有加密算法。

服务端在收到客户端的Hello消息后,首先会返回一个“Server Hello”数据包,其中包含:协议版本、服务端生成的随机数、以及从客户所建议的加密算法中选择的一套加密算法。

在发送完Hello消息后,服务端会发送它的证书和密钥交换信息。如果服务端被认证,它就会请求客户端的证书,在验证后,服务端就发送“Sever Hello Done”消息,以示达成握手协议,双方握手接通。

客户端收到Server Done消息后,检查服务器提供的证书,并判断hello参数是否可以接受。如果服务端请求证书,则要先发送一个certificate消息,然后客户端发送“clent key exchange”及密钥交换信息。

客户发送一个change_cipher_spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中。然后,客户用新的算法、密钥参数发送一个finished消息,这条消息可以检查密钥交换和鉴别过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。

服务器同样发送change_cipher_spec消息和finished消息。握手过程完成,客户和服务器可以交换应用层数据。

至此,一次完整的SSL握手过程完成,接着使用交换过后的加密方式对应用数据进行加密传输。



江苏国骏-打造安全可信的网络世界

为IT提升价值


http://www.jsgjxx.com/

免费咨询热线:400-6776-989

5f3f9f2f6c723.jpg


江苏国骏信息科技有限公司 苏ICP备17037372号-2 电话:400-6776-989; 0516-83887908 邮箱:manager@jsgjxx.com