文章横幅PC版
文章横幅iPad版
文章横幅手机版

ssl握手协议四个阶段

TIME:2019-01-11 16:17  click: 423 次 来源: 未知

SSL握手协议可以进行客户端和服务器相互认证,并协商加密密钥用户保护SSL记录层所发送的数据。实行握手协议分为4个阶段。

1)第一阶段:建立安全能力

这一阶段由客户端向服务器发起建立连接请求,然后服务器与客户机进行消息交换,创建主密钥在这个阶段交换两个信息,即Client Hello和Server Hello 信息。

客户端发送的Client hello含以下内容:

(1)客户端可以支持的SSL的最高版本号;

(2)客户端生成的32字节的随机数;

(3)一个可变长度的会话标识符ID,非零值表示客户端希望更新现有连接的参数,零值表示客户端希望为这次会话建立一条新连接;

(4)客户端可支持的密码算法组合以优先选用递减的顺序给出;

(5)客户端可以支持的压缩方法列表。

服务器发送的ServerHello包含以下内容:

(1)一个版本号,选取客户支持的最高版本号和服务器支持的最高版本号中的较低者;

(2)服务器生成的32字节的随机数;

(3)一个会话标识符ID,与客户端发送的一致;

(4)从客户端列表中选择密码算法;

(5)从客户端列表中选择压缩方法。

SSL协议支持如下密钥交换方法:

(1)RSA:密钥用接收者的RSA公钥加密;

(2)固定Diffie-Hellman:这是一个Diffie-Hellman密钥交换过程,客户端和服务器都可以准备固定的参数,然后它们可建立一个固定的Diffie-Hellman半密钥,而这些半密钥包含在用户的公钥证书里,因此,双方可交换证书来获得固定密钥;

(3)匿名Diffie-Hellman:该方法使用基本的Diffie-Hellman密钥交换方法来获得密钥,注意:该方法不进行认证,因此,易受到中间人攻击;

(4)暂时Diffie-Hellman:该方法用于创建临时或一次性密钥,为了阻止中间人攻击,客户端与服务器都用本身的私钥签名一个Diffie-Hellman密钥并发送给对方,接收者用相应的公钥验证签名;

(5)Fortezza:这种技术是专为Fortezza方案定义的,Fortezza是一种带有96bit密钥的分组密码算法。

2)第二阶段:服务器验证和密钥交换

若要认证,则在此阶段,服务器发送其证书、公钥,也许还要对客户请求证书。然后服务器将发送server_key_exchange消息,如果服务器已发送含固定Diffie-Hellman参数的证书或用了RSA密钥交换方法,则不用发送该消息。

3)第三阶段:客户端认证和密钥交换

该阶段共有三个消息从客户端发送到服务器。

首先,如果服务器在第二阶段已请求证书,则客户端要发送一个证书信息;若无证书,那么发送一个告警信息。

然后,客户端将发送server_key_exchange消息。若密钥交换算法为RSA,客户端则建立完整的预备主密钥,且借助服务器RSA公钥来加密。如果是匿名Diffie-Hellman或暂时Diffie-Hellman,客户端就发送Diffie- Hellman半密钥;若是固定Diffie-Hellman,信息内容就为空;如果是Fortezza,就发送Forteza参数。

最后,客户端向服务端发送证书验证消息进行证书确认,以便宣布它拥有证书中的公钥,这对阻止一个发送了证书且说明此证书来源于客户的假冒者是必需的。注意:仅当客户端证书有签名功能时才会发送该消息,所以固定 Diffie-Hellman证书不可以如此验证。

4)第四阶段:完成

在这个阶段交换4个信息。

首先客户端发送一个改变密码规格信息,并把未定的密码规格复制到当前密码规格中,这个信息实际上是将要讨论的改变密码各个协议的一部分。然后发送一个完成消息宣布握手协议完成。

服务器为响应这2条消息,发送一个改变密码规格信息,并把未定的密码规格复制进当前密码规格中。然后发送一个完成消息宣布握手协议完成。

上一篇:密码反馈模式优缺点解读 下一篇:互联网密钥交换协议