SSL握手流程
https在http的基础上多了SSL加密层。https的加密过程也就是SSL的握手过程。
为什么要有MAC密钥
MAC密钥相当于数据校验,是为了保证数据完整性而存在的。SSL将数据流分割成记录,每条记录都会附上一个MAC,然后再对“记录+MAC值”进行加密。比如客户端要向服务端发送数据,对于数据的每个记录,客户端都会用它的MAC密钥Mc对记录进行一次MAC计算生成一个MAC值,然后再用它的加密密钥Ec对“记录+MAC值”进行加密。不过需要注意SSL记录的类型、版本、长度不会参与加密。
如果黑客从中间捕获了两个报文段,并修改了TCP报文的序号,从而打乱了顺序,在没有MAC加密的情况下,接收端不会认为接收到的数据顺序有任何异常。但如果我们有了这个MAC加密的过程,并且让序号也参与MAC加密,那我们就可以防止黑客的这一行为。
在SSL握手的最后,客户端和服务端会互相发送之前所有报文的MAC。这么做的目的是为了确保之前的所有的连接都是安全的。服务端会将收到的MAC与自己计算的MAC相比较,如果不相同的话,服务端可以立即终止连接,而同样的,客户端也会做类似的检查。
为什么要用不重数
在SSL连接的最开始阶