Https原理

一、加密算法

对称加密:加密和解密使用同一个密钥

非对称加密:分为私钥和公钥,由私钥加密的数据只能由公钥解密,由公钥加密的数据只能由私钥解密,且先有的私钥,公钥只能由私钥生成

对比:对称加密效率更高,非对称加密安全性更高

二、https原理

1.为啥用https?
http使用明文传输,容易被窃取和篡改;
https会对数据进行加密,传输的是密文,更加安全

2.使用对称加密?
NO,密钥很容易被盗取

3.使用非对称加密?
NO,效率低

4.最佳方案?
  两者结合,服务端持有私钥,访问端持有公钥,随机生成一个“密钥”,一方加密,另一方解密,双方协商好“密钥”后,就可以放心进行对称加密了。

5.访问端的公钥怎么来的?
  首先访问端可能是浏览器,也可能是客户端,浏览器不可能事先保存所有网站的公钥,客户端也不可能把公钥写进代码,很容易被反编译拿到,所以这个公钥应该是由服务器返回的,而且还能动态更新。

但是服务器返回的公钥有被篡改的风险,访问端一旦使用了假的公钥进行加密,传输的数据就能被人以假的私钥解密。

6.那么如何保证公钥的正确性?
  访问端判断不了公钥是否正确,因此需要引入第三方来帮助判断,也就是CA机构(数字证书认证机构)。具体原理是这样的:

1、服务器相关人员拿着公钥和money去向CA机构申请证书
2、CA机构将公钥、域名、有效期等信息,通过CA机构自己的私钥进行加密,加密后的数据就是证书,交给服务器保管好
3、访问端向服务器发起https连接时,服务器将证书传送到访问端
4、访问端使用自己内置的CA机构公钥(浏览器、pc、手机等都会在系统预置所有CA机构的公钥)对证书进行解密,如果解密成功,就能拿到正确的公钥,不成功则断开连接
5、拿到公钥之后进行协商密钥,传输数据等流程..

你可能感兴趣的:(Https原理)