一:HTTPS含义
https:对于http的超文本传输协议的一层加密.
二:"加密"是什么?
2.1:明文:真正要传输的数据.
2.2:密文:对真正要传输的数据进行加密.
2.3:密钥:对密文进行解密,解密成明文.
2.4:加密和解密
在解密和加密的过程中.明文+密钥===>密文,密文+密钥===>明文,在解密和加密过程中,会生成一对密钥,分别为"公钥"和"私钥",可以用公钥来进行加密,私钥来进行解密,两个密钥反过来也可以。
三:HTTPS的工作过程
3.1https的工作流程:
最简单的保证安全的做法,引入对称密钥,针对传输的数据(http 的header 和 body)进行加密.
每个客户端,都需要一把自己的对称密钥(不同的客户端密钥也要不同),如果客户端生成了一个密钥,那么,密钥就需要传递给服务器,让服务器根据传进来的密文利用密钥进行解密)
如果客户端给服务器传递密钥的过程中,被黑客截获了,黑客就会根据密文和密钥进行解密,存在一定的风险.那么,怎么进行安全的传输? ===>对对称密钥进行加密===>还是不行!!!===>使用非对称加密对对称密钥进行加密!!!
服务器生成一对公钥和私钥,私钥给服务器自己留着,公钥会发给客户端.此时,客户端就会利用公钥对对称密钥进行加密!!!使用公钥加密,使用私钥进行解密.非对称加密针对对称密钥进行加密.后续数据的加密还是使用对称加密.
3.2中间人攻击:
根据3.1的https的工作流程,仍存在一个严重的问题,黑客可以根据中间人根据来获取对称密钥.
a):服务器生成非对称密钥,公钥:pub1 私钥:pri1
b):服务器本来要将从pub1传递给客户端,被黑客截获了.
c):此时,黑客便根据截获的pub1,生成新的公钥 pub2 和 私钥 pri2
d):黑客将公钥pub2传递给客户端
e):客户端便根据传进来的公钥pub2对对称密钥(888888)进行进一步加密.
f):客户端便将非对称密钥和对称密钥一起传递给黑客,黑客便利用私钥pri2进行解密,得到对称密钥.
g):黑客便使用从服务器之前传过来的pub1和从客户端传进来的密文进行加密,传递给服务器
h):服务器便利用自身的私钥pri1进行解密
整个过程中,服务器和客户端不知道有中间人的存在.
3.3解决中间人攻击 :
解决中间人攻击的关键,需要让客户端能够确认当前收到的公钥,确认是服务器的,而不是中间人的.====>引入了证书机制===>通过第三方机构作保,来判断是不是当前的公钥是不是来自于服务器的.
3.3.1证书验证阶段
1.浏览器发起Https请求,(浏览器会内置第三方CA的公钥);
2.服务器端返回Https证书(包含公钥),使用第三方CA的私钥加密公钥、以及机构信息、域名等,然后返回CA证书
3.客户端验证证书是否合法,可以对证书内容解密,然后通过证书中的域名、机构等信息验证证书是否合法,如果不合法则提示告警.
3.3.2数据传输阶段
4.当证书验证合法后,在客户端本地生成随机数;
5.通过公钥加密随机数,并将其传输到服务端;
6.服务端通过私钥对接收到的加密随机数进行解密操作;
7.服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密操作
后再 进行内容传输。
3.3.3为什么数据传输是用对称加密?
首先,非对称加密的加密效率低的,而http的应用场景通常存在着端与端之间的
大量数据交互,从效率来说是无法接受的;
其次,在Https场景中只有服务端保存了私钥,而一对公私钥只能实现单向的加解密(即 服务端无法使用私钥对传回浏览器客户端的数据进行加密,只能用于解密),所以 Https中内容传输加密采取的是对称加密,(此处随机数则是对称加密的介体,
即客户端和服务器端所拥有的随机数都是一致的,能够进行双向加解密)
3.3.4浏览器如何确保CA证书的合法性
1.证书包含的主要信息:
颁发机构信息,公钥,公司信息,域名,有效期,指纹,等等
2.证书的合法性依据
首先,权威机构是需要通过认证的。其次证书的可信性基于信任制,CA认证
机构需要 对其颁发的证书进行信用担保,只要是CA认证机构颁发的证书,
我们就认为是合法的。CA认证机构会对证书申请人的信息进行审核的。