非对称加密 + 对称加密

HTTPS 加密机制

既然非对称加密耗时,我们考虑是否可以采用非对称加密+对称加密结合的方式,而且要尽量减少非对称加密的次数。
非对称加密、解密各只需一次的方法:

  1. 某网站拥有用于非对称加密的公钥A1、私钥A2。
  2. 浏览器向网站服务器请求,服务器把公钥A1明文给传输浏览器。
  3. 浏览器随机生成一个用于对称加密的**X,用公钥A1加密后传给服务器。
  4. 服务器拿到后用私钥A2解密得到**X。
  5. 这样双方就都拥有**X了,且别人无法知道它。之后双方所有数据都用**X加密解密即可。

HTTPS基本就是采用了这种方案。但还是有漏洞的。

HTTPS 工作原理

HTTPS 加密机制

 

  1. client向server发送请求https://baidu.com,然后连接到server的443端口。

  2. 服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。

  3. 传送证书
    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。

  4. 客户端解析证书
    这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值(**)。然后用证书对该随机值进行加密。

  5. 传送加密信息
    这部分传送的是用证书加密后的**(随机值),目的就是让服务端得到这个**(随机值),以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务端加密信息
    服务端用私钥解密,得到了客户端传过来的**(随机值),然后把内容通过该值进行对称加密。

  7. 传输加密后的信息
    这部分信息是服务端用**(随机值)对称加密后的信息,可以在客户端被还原。

  8. 客户端解密信息
    客户端用之前生成的**(随机值)解密服务端传过来的信息,于是获取了解密后的内容。

相关文章: