TLS握手和算法

本文详细解析了TLS握手过程,包括参数协商、身份验证和密钥交换,以及涉及的四种关键算法:信息摘要(如SHA1)、数字签名(如RSA)、密钥交换(如DH)和对称加密(如AES_128)。通过实例分析,阐述了这些算法在HTTPS通信中的应用,确保了数据的安全传输。
摘要由CSDN通过智能技术生成

这是一篇我写在“我就是程序员”的微信订阅号的里文章,原文的地址是:https://mp.weixin.qq.com/s/qgeFgO83uGoeuo__vkef9w


  为建立以安全为目的的HTTP通道,HTTPS应运而生。HTTPS在HTTP通信建立连接的握手过程中多加了一次TLS握手,用于产生会话秘钥,用对称加密算法对会话的内容进行加密。


图解TLS握手过程

图中的女士Alise作为客户端向作为服务端的Bob发送请求,协商建立起HTTPS通话的过程:


HTTPS的握手过程

在TCP三次握手成功之后,开始建立TLS握手。这里我们主要分析HTTPS特别的一步,即TLS握手,主要分为三个阶段:参数协商、身份验证、密钥交换。具体过程如下:


关于TLS握手过程,每一步骤的主要含义是:

  1. ClientHello: 一次新的握手中的第一条消息,将客户端的功能和首选项传送给服务器。

  2. ServerHello: 将服务器选择的连接参数传送给客户端。

  3. Certificate: 典型用于携带服务器X.509证书链。服务器必须保证它发送的证书与选择的算法套件一致。Certificate消息可选,因为并非所有的套件都使用身份验证,并非所有的身份验证都需要证书。

  4. ServerKeyExchange: 携带秘钥交换的额外数据。

  5. ServerHelloDone:表明服务器已经将所有预计的握手消息发送完毕,等待客户端发消息。

  6. ClientKeyExchange: 携带客户端为秘钥交换提供的所有信息。

  7. ChangeCipherSpec: 表明发送端已取得用以生成连接参数的足够信息,已生成加密密钥,并且将切换到加密模式。客户端和服务器都会在条件成熟时发送这个消息。

  8. Finished: 意味着握手已经完成,消息内容将加密,以便双方可以安全的交换验证整个握手完整性所需的数据。


TLS握手的结果

握手过程中协商了本次请求使用的加密套件,以及使用套件中的算法进行证书校验、身份验证、秘钥交换,再利用秘钥交换产生的预主秘钥,使用对称加密算法计算出会话秘钥。

下图是密码套件的具体构成,包含了上述的四个算法。

常用的密码套件有:

为了深入的了解TLS握手过程,需要搞清楚算法在这里起到了什么样的作用,下面选每一类算法里基础的算法进行分析,加密强度可能会比现在使用的算法强度低,但从原理的角度并不影响理解。


信息摘要算法

信息摘要算法和数字签名算法配合使用,用于证书加密和认真,首先理解一下这两个算法使用场景:

左半部分是服务端生成数字证书的过程:使用协商好的安全散列算法计算明文生成摘要,使用数字签名算法的私钥对证摘要加密,生成数字证书编号,和明文放在一起组成数字证书。

右半部分是客户端对数字证书认证的过程ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值