对称加密是什么,非对称加密是什么

对称加密即:加密和解密用的是同一个密钥

非对称加密即:加密和解密用的是不同的密钥

—> 公钥负责加密,私钥负责解密。

—> 用公钥加密过的密文,只有用私钥才能解密。

—> 用私钥加密过的密文,只有用公钥才能解密

HTTP和HTTPS的区别

HTTPS会在HTTP和TCP之间加一层TLS/SSL加密连接

  1. HTTP是明文传输,会有被数据篡改和获取数据的风险。HTTPS在连接之间加了一层TLS/SSL连接,能够一定程度上保证加密性
  2. HTTP直接进行TCP连接后就可以进行HTTP的请求与响应。而HTTPS在建立了TCP连接后还需要建立TLS的握手过程,双发提供了会话密钥才能够进行加密报文传输
  3. HTTP的默认服务器端口是80,HTTPS的默认服务器端口是443
  4. 性能差异,HTTP只需要建立TCP连接就行了,而HTTPS建立了TCP连接后还要建立TLS/SSL握手,会增加RTT,连接的时间会增加,并且缓存也会比HTTP复杂,会通过CDN进行优化传输
  5. HTTPS需要SSL/TLS的证书,这个是由权威机构进行发布的,这个也是为了去验证服务器的身份信息。

HTTPS的工作原理

HTTPS在建立TCP连接后还需要建立TLS/SSL的握手,也就是在客户端和服务器端建立一个会话密钥之后,双方通过会话密钥进行对称加密传递信息。

  1. 客户端发送Hello,客户端向服务器端建立加密通话请求。
    报文包括以下信息:
    1. 随机数A
    2. TLS版本
    3. 支持的加密算法列表
  2. 服务器发送hello给客户端,收到客户端的请求之后发送响应。
    报文包括以下信息:
    1. 随机数B
    2. 确定TLS版本,如果不支持该版本会返回断开加密连接
    3. 服务器的证书信息,其中会包括服务器的公钥
    4. 从客户端提供的加密算法列表中选择一个,比如RSA加密算法
  3. 客户端接收到服务器的响应报文后,先通过CA公钥,这个CA公钥一般放在浏览器或者操作系统中,对服务器端提供的证书信息进行验证。并且拿出证书信息中的服务器公钥。
    客户端生成一个随机数pre-master,使用服务器公钥进行加密。然后向服务器发送报文
    1. 加密后的pre-master
    2. RSA加密算法更改成后续使用会话密钥加密信息的对称加密模式
    3. 之前所有信息的摘要
      会话密钥是由随机数A+随机数B加pre-master组成
  4. 服务器接收到客户端的finished报文后,先拿出pre-master用自己的私钥进行解密拿到解密后的pre-master,组装会话密钥。向客户端发送最后的相应信息
    1. RSA算法改变模式
    2. 之前所有信息的摘要