TLS协议

目录

什么是TLS协议?

TLS的基本流程?

两种密钥交换算法?

基于ECDHE密钥交换算法的TLS握手过程?

基于RSA密钥交换算法的TLS握手过程?

基于RSA的握手和基于ECDHE的握手有什么区别?

什么是前向保密?


什么是TLS协议?

        TLS是(Transport Layer security)的缩写中文叫传输层安全协议,是一种加密协议,用于保护网络通信的安全。

TLS的基本流程?

        1)客户端向服务器索要并验证服务器的公钥

        2)双方协商生产会话密钥

        3)双方采用会话密钥进行通信

两种密钥交换算法?

        RSA和ECDHE,基于不同的密钥交换算法的TLS握手过程有些区别。另外,TLS1.3及其以上版本已经不在支持RSA密钥交换算法。

基于ECDHE密钥交换算法的TLS握手过程?

        1)第一次握手是客户端发送Client Hello消息。(包含TLS版本,支持的密码套件,以及一个随机数)

        2)第二次握手是服务端发送Server Hello消息。(服务器确认的TLS版本号,以及一个随机数,并选择了一个合适的密码套件)。另外服务端为了证明自己的身份,还会发送一个证书给客户端。除此之外,还会发送给客户端一个Server Key Exchange(将选择的椭圆曲线,以及基点G和服务端的椭圆曲线公钥发送给客户端),以及还有一个是Server Hello done告诉客户端我发送完毕了。

        3)第三次握手是客户端发送Client Key Exchange消息,将客户端的椭圆曲线公钥发送给服务端。并生成一个随机数作为自己的私钥。发送change cipher spec消息,告诉服务端之后客户端要用加密通信。接着客户端会将之前发送的消息的摘要进行加密发送给服务端。

        4)第四次握手是服务端向客户端发送Change Cipher Spec,接着会将之前发送的信息进行加密发送给客户端。如果双方的加解密都没有问题,则握手完成,之后就可以进行加密通信。

基于RSA密钥交换算法的TLS握手过程?

        1)第一次握手是客户端向服务端发送Client Hello消息。(包含TLS版本,支持的密码套件和客户端生成的随机数)

        2)第二次握手是服务端向客户端发送Server Hello消息(包含确认的TLS版本,选择的密码套件和服务端生成的随机数)并发送证书(包含服务端的公钥)

        3)第三次握手:客户端验证证书的可信性后,客户端会生成一个新的随机数(pre-master),用服务器的RSA公钥加密该随机数,通过Client Key exchange消息发送给服务端。至此客户端和服务端共享了三个随机数,客户端随机数(Client Random),服务端随机数(Server Random)以及刚刚生成的随机数(pre-master)。将三个随机数进行计算生成会话密钥。生成会话密钥后,和发送Change Cipher Spec,告诉服务端开始使用加密的方式发送消息。然后客户端再发送一个加密消息供服务端解密验证。

        4)第四次握手:服务端收到客户端的加密随机数(pre-master)后,用私钥进行解密。计算出会话密钥,解密服务端的加密消息。之后对客户端发送change cipher spec,以及再发送一个加密消息供客户端解密验证。

基于RSA的握手和基于ECDHE的握手有什么区别?

        1)ECDHE安全。RSA密钥协商算法不支持前向保密(服务端的公私钥是不变的,一旦服务端私钥泄漏,之前的通信内容全部会被破解),而ECDHE密钥协商算法支持前向保密。

        2)ECDHE抢跑。使用了RSA密钥协商算法,TLS完成四次握手后才能进行应用数据传输。而ECDHE算法,客户端可以不用等服务端的最后一次TLS握手,就可以提前发出加密的HTTP数据,节省了一个消息的往返时间

        3)在第二次握手中,ECDHE多了一个Server Key Exchange

什么是前向保密?

        前向保密是密码学中通讯协议的安全属性,指的是长期使用的主密钥泄漏不会导致过去的会话密钥泄漏。

你可能感兴趣的:(计算机基础,计算机网络)