假设现在有客户端 A,服务器 B,和黑客 X,X会通过网络抓包的方式获取A和B之间发的所有信息,也可以伪造A向B或者B向A发送信息
HTTP存在的问题
由于HTTP使用明文传输,X可以截取A与B互相发送的任何信息,然后伪造其中一方向另一方发送别有用心的查询请求,因此及其不安全。
HTTPS
HTTPS = HTTP+SSL(Secure Socket Layer)
SSL/TSL协议的解决方案
SSL通常是指SLL和TSL,TSL是在SSL上进行了包装,本质上他们是一样的,通常HTTPS 是HTTP+SSL 或者HTTP+TSL;
都知道HTTPS采用了结合对称加密和非对称加密的混合加密机制,接下来会一一讲解为什么采用混合形式才能够实现安全通信
毫无安全措施
AB之间进行通信没有任何安全措施,X即可主动成为代理人获取信息并伪造
使用对称加密机制
若AB使用将数据对称加密进行通信,那双方只要拥有相同密钥的就可以对数据进行安全的加密传输,解密读取了,那要拥有相同的密钥势必会在通信初期将其中一方将密钥先传输给另一方,那么黑客X仍然可以获取到密钥进行数据解密和伪造。
其实到这里问题就已经解决了一半,是不是只要想办法解决第一次传输密钥被盗取的问题就好了。
因此引入了非对称加密。
结合非对称加密
非对称加密是使用一个密钥对(一个公钥,一个私钥),公钥加密只能由私钥解密,私钥加密只能由公钥解密。
我们假定此时B作为服务端,A作为客户端,A向B发起连接请求,B会将公钥发给A,然后A用B的公钥将一个对称加密密钥进行加密,返回给B,B使用发给A配对的私钥解密,便拿到了对称加密密钥进行安全的加密通信。
乍看之下很完美,但仍然存在一个问题,黑客X可以监听截取任何请求,那么在刚才的流程中,如果X截取了B发给A公钥的请求,然后把自己的公钥发给A,那对称加密密钥是不是仍然会被黑客所截取?
因此引入了最后的措施:数字证书
数字证书
到目前这一步只需要让A确保收到B发来的公钥确实是B的就OK了。
因为不管是谁来向我们的服务器B请求消息,他发给对方的公钥都是同一个。
那么我们可以建立一个拥有足够可信度的第三方来管理B的公钥
当A收到B的公钥后,A可以向这个第三方来确定我收到的公钥确实来自于B。
便可以建立安全通信黑客无处下手
具体流程为:
- 服务器B首先向一个大家都信任的****第三方机构(CA)**申请一个身份证书。
- 客户端A向服务器B建立通信之前首先向服务器请求获得B的证书。证书中包含公钥。
- 服务器B收到请求后把数字证书发送给客户端A。
- 客户端A获得服务器B的证书之后,然后与可信任的第三方机构证书进行验证,验证通过后则进行正常的内容通信。
结束语
以上便是基本的HTTPS加密认证流程,实际情况可能还会有双向认证,密钥合成算法等,后面的博客再来介绍