SSL/TLS握手协议

握手协议是指客户端和服务器之间交换的一系列消息。

消息格式

类型 长度 内容

1字节3字节≥0字节
类型

表示10种消息中的一种。所有类型如下:

hello_request 空

client_hello建立初始的逻辑连接server_hello同上certificate一系列证书certificate_request请求证书certificate_verify证书验证server_key_change服务器秘钥交换client_key_change客户端秘钥交换server_done消息结束,等待回复finished密码已经变更完成
长度

消息长度(字节)。

内容
阶段1:建立安全功能

由客户端发起,建立初始的逻辑连接,并为后面的阶段交换所需参数。
SSL/TLS握手协议

client hello消息内容:

    版本号:客户端支持的最高TLS版本。随机数:32位的时间戳 + 客户端生成的28字节的随机数。可以为这次握手防止重放攻击,但不作为后续密钥的参数。会话标志:分为0值和非零值。
    0值:客户端想在新会话上建立一个新连接。
    非0值:在原会话上建立一个新连接。密码组:按优先级降序排列的密码算法列表。表中每行包括2个元素:密钥交换方法和CipherSpec(密码说明)。压缩方法:客户端支持的所有压缩方法的列表。

server hello消息:

    版本号:决定使用的版本号。

    随机数:服务器生成的随机数(也同时生成了时间戳)。

    会话标识:
    若客户端发的是0值:则服务器生成一个新连接,发回新ID。
    若客户端是非0值:则服务器发送同样的数值。

    密码组:决定使用的密码组。

    压缩方法:决定使用的压缩方法。

密码组详情

    交换密钥的方法
    ① RSA 非对称加密
    ② 固定DH
    ③ 瞬时DH
    ④ 匿名DHcipher spec 密码说明
    ① 密码算法(任何算法,如RC4,DES3,IDEA等)
    ② MAC算法(MD5,SHA-1)
    ③ 密码类型(流 / 块)
    ④ 可否出口(可 / 不可)???
    ⑤ 散列长度(0 / 16(MD5) / 20(SHA-1))
    ⑥ 密钥材料???
    ⑦ IV大小(CBC分组的初始向量大小)

.
.

阶段2:服务器的认证和密钥交换

服务器承接阶段1,继续发送消息,可能发送 对自己身份的认证,密钥参数(哪个密钥?)和请求客户端表明身份等等。
SSL/TLS握手协议
certificate 消息:

内容:一个或一组X.509证书(证明服务器身份,具体查看X.509部分)。不需要certificate消息:使用匿名DH 。若是固定DH 会在此消息中附加服务器DH公钥的参数(后面无需再发server key change消息)

server_key_change 消息:

不需要此消息的情况:
① 若服务器发送了带有固定DH的参数的certificate消息;
② 若使用RSA密钥交换(???)。
.必需此消息的情况:
① 匿名DH(两个全局DH值 和 服务器DH公钥)。
② 瞬时DH(三个DH参数))。
③ RSA,且服务器仅用了RSA签名密钥。???

certificate request消息:

内容:证书类型 + 签证机构。证书类型:表明公钥算法和它对应的用途???
RSA:仅用于签名
DSS:仅用于签名
固定DH的RSA:发送RSA签名证书,其签名仅用于认证。
固定DH的DSS:仅用于认证。签证机构:可接受的签证机构列表

server done 消息:

表明服务器hello结束,等待客户端应答。

无参数

.
.

阶段3:客户端的认证和密钥交换

在收到server done后,客户端检验服务器的证书合不合法,再检验server hello的参数能否接受。一切无误之后,开始向服务器发送消息。

SSL/TLS握手协议
certificate 消息:

如果服务器发了certificate request,那么客户端才会回应certificate。
若不能提供合适的证书,客户端会发一条“无证书警告”。

client key change 消息:

内容 依赖于双方共同决定的密钥交换类型:
① RSA:.客户端生成的48字节次密钥,并用服务器certificate中的公钥 / server key change中的临时RSA密钥加密。后面用它生成主密钥。???
② 瞬时DH 和 匿名DH:发送客户端DH公钥参数。
③ 固定DH:由于certificate消息中已包含DH参数,故此条消息为空。

certificate verify 消息:

提供对客户端证书的精准认证。(只有客户端证书具有签名能力时才会发送)???

.
.

阶段4:完成

SSL/TLS握手协议
change cipher spce 消息(不属于握手协议):

客户端示意 变更密码规范,并从cipher spec中复制,以挂起cipher spec。于是客户端开始以新的算法和密钥发送消息

client finished 消息:

客户端发送完成消息。

change cipher spce 消息(不属于握手协议):

在收到上面2个消息后,服务器 变更密码规范,也从cipher spec中复制,以挂起cipher spec。于是服务器开始以新的算法和密钥发送消息

server finished 消息:

服务器发送完成消息。

.

此时 握手完成,客户端和服务器开始交换应用层数据。

.
.
.

.
.

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

SSL/TLS握手协议

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » SSL/TLS握手协议
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏