HTTPS加密流程解析

1,167 阅读4分钟

这篇我会用通俗易懂的图文并茂来讲HTTPS,小白一个可能有些地方有些欠缺请大家理解 >x<

为什么需要HTTPS

  • HTTP报文使用明文(指未经过加密的报文)方式发送

  • HTTP明文协议的缺陷是导致数据泄露、数据篡改、流量劫持、钓鱼攻击等安全问题的重要原因

  • 具体来说 , 明文传输的每一个环节,数据都有可能被第三方窃取或者篡改,具体来说,HTTP 数据经过 TCP 层,然后经过WIFI路由器、运营商和目标服务器,这些环节中都可能被中间人拿到数据并进行篡改,也就是我们常说的中间人攻击。

HTTPS并不是一个新的协议, 而是一个加强版的HTTP。其原理是在HTTP和TCP之间建立了一个中间层,当HTTP和TCP通信时并不是像以前那样直接通信,直接经过了一个中间层进行加密,将加密后的数据包传给TCP, 响应的,TCP必须将数据包解密,才能传给上面的HTTP。这个中间层也叫安全层。安全层的核心就是对数据加解密。

  • 这个安全层就是 SSL/TLS

对称加密和非对称加密

首先需要理解对称加密和非对称加密的概念,后续延伸到整个加密流程时才能更好地理解

对称加密

就是加密和解密使用同一个密钥的加密技术

加密解密的过程

对称加密问题

  • 黑客拦截,直接自己加密一个返还给你,你是完全不知道的

非对称加密

非对称加密也成为公开密钥加密技术,就是使用不同密钥进行通信的加密技术

  • 如果有 A、 B 两把密钥,如果用 A 加密过的数据包只能用 B 解密,反之,如果用 B 加密过的数据包只能用 A 解密。

加密解密的过程

  • 安全问题解决了 可视客户端没有私钥无法解密

对称+非对称加密

  • 客户端请求服务端

  • 服务端给key1给客户端 客户端使用对称加密 将key2放在key1里

  • key1需要密匙解开 别人没有打不开 传到服务端后

  • 服务端使用私钥解开 获得到key2 key2是对称加密解密key2

  • 因为第一次key2被key1加密了,是看不到的,密匙双方都有,别人获取不到, 后续传输直接传公钥key2,客户端和服务端都能用同一个会话秘钥进行加解密了 从而他们的通信以及安全都得到了保障 黑客:你以为只有你们在进步?

混合加密的问题

  • 黑客拦截并且自己生成非对称加密 以假乱真

那么这时候为了解决该问题,就出现了一个机构,CA证书颁发机构

CA证书颁发机构

为了解决 主要问题 客户端无法确认收到的公钥是不是真的是服务端发来的

  • 由CA(一个权威的认证机构)颁发的一种证书,里面含有可以标识你身份的信息,类似于我们的身份证。

  • 证书是必须由服务端主动向CA申请的 服务器提供自己的信息和公钥给CA让其开数字证书

证书主要作用是数据加密和身份认证 , 身份认证就是指web浏览器和web服务器

数字证书+混合加密流程

客户端请求 --> 服务端接收 --> 服务端返回数字证书给客户端 --> 客户端验证证书 --->客户端生成对称加密的随机Key然后用公钥加密 ---> 给服务端 ---> 服务端用他的私钥解密得到随机Key ---> 后续传输用该Key加密传输

  • 最后一步对称加密知不道有没有理解错,如果有问题请大神指点

补充 : 如何验证数字证书?

  • 客户端对数字证书的明文信息进行hash加密获得摘要
  • 然后用CA公钥解密数字签名,获取里面hash加密的摘要
    • CA公钥是公开的 谁都能拿到 对比双方摘要是否相同,验证合法性
  • 验证数字证书的有效期
    • 是不是在CRL(吊销列表)里面
    • 它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书

嘤嘤嘤 结束了 希望能帮到大家