握手协议是指主要用来让客户端及服务器确认彼此的身份的一类网络协议。除此之外,为了保护SSL记录封包中传送的数据,握手协议还能协助双方选择连接时所使用的加密算法、MAC算法及相关密钥。在传送应用程序的数据前,必须使用握手协议来完成上述事项。

1.握手协议类型

握手协议定义异步模块在通信时的接口信号时序,保证异步电路各个组件之间数据流动并且不发生冲突的一种机制。主要包括两类:四段握手协议(Four-Phase)和两段握手协议(Two-Phase)。

四段握手协议是基于电平的,只有高电平表示控制信号的请求和应答,因此控制信号有归零的动作。四段握手协议因此也被称为归零(Return-to-Zero,RTZ)握手协议,归零信号也被称为“电平信号”。这里的“四段”(Four-Phase)是指通信动作的次数:①发送端准备好数据后会将请求信号置高;②接收端接收数据后将应答信号置高;③发送端将请求信号置低作为响应(此时数据可以不再保持有效);④接收端通过将应答信号置低来做出应答。此时,发送端就可以开始下一个通信周期。四段握手协议的缺点是多余的归零翻转造成了不必要的时间和能量的损耗。

两段握手协议是基于事件的,控制信号的请求和应答通过上升沿或者下降沿来表示。两段握手协议中,请求和应答信号使用信号线上的电平翻转沿来进行编码。在这种编码中的。0→1和1→0翻转是没有区别的,它们都代表一次信号事件。理想情况下,两段握手协议应该比四段握手协议电路速度更快,但是由于不同问题所对应的电路往往复杂多变,因此不能简单地说哪种协议是最好的。

握手协议类型

2.握手协议组成

1、类型(type),1个字节:表示消息的类型,总共有十种

2、长度(length),3个字节:消息的位组长度。

3、内容(content),大于或等于1个字节,与此消息有关的参数。

握手协议组成

3.握手协议工作过程

1、客户端发送Client Hello报文给服务器端,服务器回答Server Hello。这个过程协商的安全参数包括协议版本、加密算法和压缩方法。

2、服务器端发送Certificate报文传送数字证书和公钥。如果服务器端被认证,它就会请求客户端的证书,在验证以后,服务器端就发送Hello Done消息,表示双方握手接通。

3、服务器端请求客户端证书时,客户端要返回证书或返回没有证书的指示。然后客户端发送密钥交换报文,改变加密规范协议报文和Encrypted Handshake报文,表示客户端握手消息交换已经完成。发送改变加密规范协议报文的作用是允许使用已经协商的加密算法和加密密钥。

4、服务器此时要返回改变加密规范协议报文和Encrypted Handshake报文,以示完整的握手消息交换已经全部完成。

5、握手协议完成后,客户端即可与服务器端传输应用加密数据,应用数据加密一般是用第①步密钥协商时确定的对称加密密钥,如DES、3DE等。非对称密钥一般为RSA,用于数字证书的验证。

握手协议工作过程