是在HTTP协议传输报文的时候,利用非对称加密对报文进行加密传输,具体流程:

|676x402

先利用非对称加密,让双方生成会话密钥保持会话,这个会话密钥也就是对称加密中的协议。只要没有人知道这个协议,后续http对称加密就肯定是安全的。

那如果在访问https的官网的时候,黑客劫持了这个请求,并转发到他自己的服务器,仿造官网发给我了一个公钥,那么这样不也会攻破https吗?

这里的CA证书就发挥作用了,在图中第二步会发一个Certificate,如果这个证书没有经过验证,那么就会断开连接。这也是中间人攻击 MITM的经典手段,但只要有了CA证书这个数据,就可以防止这样的情况

当TLS握手完成过后,后续http的请求就用会话密钥来进行对称加密,但如果黑客篡改里面的数据,该怎么办呢?

在后续用http数据传输的过程当中,除了利用会话密钥进行对称加密以外,还用HMAC的机制,保证数据不被篡改,简单来说,就是在传输数据的时候,用数据+会话密钥计算的hash值,再附带在传输数据的末尾当中,这样客户端或者服务端在接受数据的时候可以自行计算hash值,如果没变,说明没有进行篡改