HTTPS
加密
HTTPS 就是在 HTTP 的基础上进行了 加密 , 进一步的来保证用户的信息安全~
举个例子:
83 版 <<火烧圆明园>> , 有人要谋反干掉慈禧太后. 恭亲王奕䜣给慈禧递的折子. 折子内容只是扯一扯家常,但套上一张挖了洞的纸就能看到真实要表达的意思~
明文: 要传递的原始信息(当心肃顺,瑞华,戴恒)
密文:扯家常的折子
密钥: 带窟窿的纸(在加密和解密中,起到至关重要的重要)
加密: 使用密钥把明文变成密文
解密:使用密钥把密文还原成明文
对称加密: 加密和解密使用同一个密钥
非对称加密: 加密和解密使用不同密钥
保证安全就需要加密~
加密简单的办法,对称加密
最简单的对称加密,就是按位异或 :
a^ b ^ b => a (加密a^b,解密再在加密的基础上^b 就得到了a)
哈希不是加密,因为无法解密,计算hash
会丢失信息量!
一个服务器要给很多客户端提供服务,这些客户端是使用不同的密钥~ (如果大家都用同一个密钥,等于没有密钥)
🚜典型的做法,就是每个客户端,在建立连接之初,先生成密钥,然后进行通信的时候,先把自己的这个密钥,发给服务器~
客户端生成密钥,就需要传给服务器,但是如果明文传输,就会导致密钥被黑客拿到,后续的加密形同虚设!!!
就需要考虑对密钥进行加密!!
为了解决上述问题,就引入 非对称加密 来解决
加密一个密钥
解密一个密钥
这俩是成对的,但是知道一个,无法推测出另一个
可以使用密钥A来加密,配对的密钥B解密
也可以使用密钥B来加密,配对的密钥A来解密
可以让服务器生成一对非对称密钥
一个是公开出来的,任何人都能获取到 公钥
另一个是私密的,只有服务器自己知道 私钥
客户端就可以先从服务器拿到服务器的公钥,然后使用公钥对自己生成的对称密钥进行加密~
此时由于外界只有公钥,私钥只有服务器自己所有(服务器拿不到)
只有服务器可以使用对上述的请求进行解密了
既然都引入了非对称加密,为啥还要有对称加密?
因为对称加密开销成本较低~ 算的快,资源成本小
非对称加密开销成本大~ 算的慢,资源成本大
但是针对上述情况,黑客还是有办法进行入侵的!!
中间人攻击:
如何反制上述情况?
引入证书
中间人攻击的关键,就是要证明当前这个公钥,是服务器自己的公钥,而不是伪造的!!
证书校验过程不一定非要访问网络~
上面介绍的https
的对称加密+非对称加密+ 证书这套流程,不是HTTPS独有的,其实这套机制属于一个专门的协议SSL/TLS
HTTPS = HTTP + SSL
(很多加密的场景都会用到这个)