ssl协议连接过程

SSL简介

密码技术常常用于提供机密性、数据完整性和端点鉴别;
对于一个TCP连接的加密过程,TCP 的这种强化版本通常被称为安全套接字层 Secure Socket Layer, SSL; SSL协议版本3以上修改的版本被称为运输层安全性 Transport Layer Security, TLS

SSL协议通过采用机密性、数据完整性、服务器鉴别和客户鉴别来强化TCP,从而强化HTTP2连接,来解决一些服务器上的应用安全问题;它是一个套接字接口API,当需要使用时,在应用层编程后作用于TCP;

SSL加密过程

简单来说它具有三个阶段,握手、密钥导出和数据传输。需要用到对称密钥算法,公钥算法,散列算法。
以客户端和服务器为例:

1、握手

在握手阶段,客户端需要做的事:
1、建立与服务器的Tcp连接;三次握手实现;
2、验证服务器是否是真实的发送对象;客户端发送包括客户端的序列号,三种密钥算法;服务器返回CA证书和它的序列号;然后发送hello报文,
3、发送给服务器一个密钥;客户端首先进行产生密钥,然后用证书中的公钥加密密钥并发给服务器,服务器用私钥进行解密;

2、密钥导出

由握手阶段,得出了一个客户端产生的密钥和一对证书中的公私钥;
这一步主要是做的产生剩下步骤需要的密钥,两个加密数据的密钥,两个验证数据完整性的密钥;
1、服务端用私钥解密出客户端加密的主密钥;
2、把解密出的密钥划分成四个段;
3、其中两端作为加密数据的密钥,两个作为验证完整性的密钥;
4、客户端和服务段交换密钥信息;

从这之后的所有数据发送均会被加密;

3、数据传输

SSL 将数据流分割成记录段,计算一个由密钥和数据hash的密钥消息认证码MAC;对每个记录段附加 消息认证码MAC 用于完整性检查,客户端使用他的会话加密密钥加密”记录端+ MAC" 这个包,客户端将数据连同密钥放入一个散列函数中。 ,然后这个加密的包将传递给TCP; 理清一下步骤就是:
1、客户端对数据进行分段;并确定是否压缩(TLS)
2、计算一个”密钥+数据段“hash算法后的消息认证码MAC,客户端将数据和客户端的MAC组装起来成为一个包;
3、然后用客户端的数据加密密钥再对整个数据段包+MAC进行一个加密;
4、添加SSL记录头,发送数据包;
5、服务端使用对称加密算法的密钥进行解密;并使用后面的MAC进行一个数据完整性效验;

关闭SSL连接

如果直接关闭TCP连接也是不安全的,可能会被中间人攻击,因而采用在类型字段中指出该记录是否是用千终止该 SSL 会话的;
一个SSL报文组成:类型主要指出用于握手还是传数据,即可以表明不在传输数据;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44830792/article/details/121444912