https加密过程(SSL握手)

SSL握手流程

https在http的基础上多了SSL加密层。https的加密过程也就是SSL的握手过程。

ssl加密过程

为什么要有MAC密钥

MAC密钥相当于数据校验,是为了保证数据完整性而存在的。SSL将数据流分割成记录,每条记录都会附上一个MAC,然后再对“记录+MAC值”进行加密。比如客户端要向服务端发送数据,对于数据的每个记录,客户端都会用它的MAC密钥Mc对记录进行一次MAC计算生成一个MAC值,然后再用它的加密密钥Ec对“记录+MAC值”进行加密。不过需要注意SSL记录的类型、版本、长度不会参与加密。

SSL记录
如果黑客从中间捕获了两个报文段,并修改了TCP报文的序号,从而打乱了顺序,在没有MAC加密的情况下,接收端不会认为接收到的数据顺序有任何异常。但如果我们有了这个MAC加密的过程,并且让序号也参与MAC加密,那我们就可以防止黑客的这一行为。

在SSL握手的最后,客户端和服务端会互相发送之前所有报文的MAC。这么做的目的是为了确保之前的所有的连接都是安全的。服务端会将收到的MAC与自己计算的MAC相比较,如果不相同的话,服务端可以立即终止连接,而同样的,客户端也会做类似的检查。

为什么要用不重数

在SSL连接的最开始阶段,客户端和服务端有互相发送不重数,并且在接下来的阶段用这个不重数参与主密钥的导出。这样做的目的是为了防止“连接重放攻击”。如果黑客截取了客户端服务端之间所有的报文,然后第二天将这些报文段重新依次发送给服务端。在没有不重数的情况下,服务端不会察觉到任何异常,因为所有报文段的发送与接收都会和前一天一模一样,所有报文段都会通过MAC完整性检查。这样一来,黑客不用去获取密钥,也不用去知道每个报文段是什么内容,就完成了攻击。相反,如果使用不重数的话,黑客就无法得逞。因为每次的不重数都不一样,每次的密钥也都将不同,黑客的报文段无法通过MAC完整性检查,由此“连接重放攻击”得到了防御。

总结

  • 服务端有自己的公钥pk,私钥sk,公钥被加密在CA颁发的证书中
  • 公钥算法用于公钥加密前主密钥过程
  • MAC算法用于MAC加密过程
  • 对称算法用于SSL连接完成后的数据包加密过程
  • MAC密钥的作用是为了数据完整性检查
  • 不重数的作用是为了防止“连接重放攻击”

本文内容主要参考自《计算机网络自顶向下方法》一书

HTTPS SSL握手过程是用于建立安全的通信连接,确保数据传输过程中的机密性、完整性和可靠性。它包含以下步骤: 1. 客户端发送客户端hello消息,其中包含SSL版本信息、密码套件列表和随机数等。 2. 服务器收到客户端hello消息后,发送服务器hello消息,其中包含SSL版本信息、密码套件选择和随机数等。 3. 服务器发送证书,包含公钥和证书链等信息,用于验证服务器的身份。 4. 客户端接收服务器证书后,验证证书的合法性,包括证书的颁发机构、有效期等,并生成一个随机数用于后续的密钥协商。 5. 客户端使用服务器公钥加密一个随机数,并发送给服务器,用于后续数据加密。 6. 服务器使用私钥解密客户端发送的随机数,并使用客户端和服务器生成的随机数,计算出一个预主密钥(Pre-Master Secret),并发送给客户端。 7. 客户端和服务器使用预主密钥和协商的密码套件,生成会话密钥(Session Key)。 8. 客户端发送Finished消息,其中包含使用会话密钥加密的哈希值,用于验证握手过程的完整性和正确性。 9. 服务器接收到客户端的Finished消息后,也发送Finished消息,其中包含使用会话密钥加密的哈希值,用于验证握手过程的完整性和正确性。 10. 握手完成,客户端和服务器开始使用会话密钥加密数据进行通信。 以上是HTTPS SSL握手过程的基本步骤,不同的SSL版本和密码套件可能会有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值