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密钥的作用是为了数据完整性检查
  • 不重数的作用是为了防止“连接重放攻击”

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值