HTTPS原理

背景

A和B通过网络进行通信

发展

1. 阶段一:不加密

A和B直接通过网络发送数据

缺点:数据透明,能随时被别人窃取,毫无安全性

2. 阶段二:对称加密

生成一个秘钥,A和B分别持有。A发送数据经过秘钥加密后传输给B,B通过秘钥解密后得到数据。B发送数据同样如此。

缺点:秘钥如何传输?秘钥一开始被别人截取则后续的传输形同透明

3. 阶段三:非对称加密(RSA)

A生成一个公钥A和私钥A,私钥只有自己知道,公钥全世界都知道都行。公钥加密的信息只有相应的私钥能解开,私钥加密的信息只有相应的公钥能解开,B同样生成一个公钥B和私钥B。

A传输数据之前将数据通过公钥B加密,经过网络传输到达B,只有B的私钥B才能解开公钥B加密的信息。B向A传输数据同样如此。

缺点:1. 传输速度很慢;2.不能确认B的公钥是否就是B的公钥(中间人将自己的公钥伪装成B的公钥发给A,再把自己的公钥伪装成A的公钥发给B,则数据同样会被窃取)

4. 阶段四:非对称加密+对称加密

A生成一个密钥通过非对称加密(RSA)传输给B(确保安全),B收到只有两个人知道的秘钥以后(理论上)以后就都通过这个秘钥进行对称加密。

缺点:不能确认B的公钥是否就是B的公钥、A的公钥是否就是A的公钥(中间人将自己的公钥伪装成B的公钥发给A,再把自己的公钥伪装成A的公钥发给B,则数据同样会被窃取)

5. 阶段五:数字证书

上一阶段无法证明A的公钥就是A的公钥,数字证书就是解决这个问题。

A向B发送公钥以及A的一些基本信息。先通过hash算法生成摘要(digest),然后A再通过CA(认证中心)私钥对摘要进行加密生成数字签名。再讲数字签名与原始信息(公钥以及其他信息)合并生成“数字证书”。

发送方:发送自己的公钥和基本信息生成的数字证书

接收方:接收到数字证书后,用CA的公钥对数字证书进行解密(确认数字证书是CA发布的),再讲发来的信息进行hash算法,将生成的hash值与CA解密后得到的摘要进行对比。正确则确认信息没被篡改过。这样就得到了发送方的公钥。

HTTPS过程

  1. 浏览器发出安全请求
  2. 浏览器返回数字证书
  3. 浏览器预置的CA(认证中心)列表公钥对证书进行解密,如果有问题,提示有风险
  4. 浏览器随机生成对称的秘钥,用的到的服务器的公钥进行加密。
  5. 服务器用自己的私钥对信息解密,得到对称秘钥
  6. 浏览器和服务器都知道了对称密钥,利用密钥进行加密传输。
posted @ 2018-09-25 11:48  凝血为墨  阅读(90)  评论(0编辑  收藏  举报