最初
客户端像服务端发起请求。
中间人直接拿到请求数据并篡改发送给服务端,拿到服务端数据后再篡改返回给客户端,肆无忌惮。
对称加密
服务端生成一个秘钥,请求前先发送给对方秘钥,之后对数据进行加密传输。
中间人在秘钥请求过程中截取到秘钥,拿到秘钥继续为所欲为。
对称加密+非对称加密
基本流程如下:
- 客户端向服务端发起请求。
- 服务端将公钥返回给客户端,私钥自己留着。
- 客户端随机生成一个Key用服务端的公钥对key进行加密并传输给服务端。
- 服务端接受到数据,用私钥进行解密,此时对称加密所需的key就安全传输给了对方。
- 最后双方通过key进行对称加密。
此时又出现了一个问题。中间人在服务端将公钥返回给客户端这一步,截取公钥,并将自己的公钥返回给客户端,等客户端返回数据时再截取用自己的私钥解密,之后再用截取到的服务器公钥加密发送给服务器。无感知的获取到后续的对称加密的秘钥。
对称加密+非对称加密+认证机构
基本流程如下:
1、客户端向服务端发起请求。
2、服务端向认证机构发起请求。
3、认证机构返回给服务端一个 认证机构的公钥,记为CA公钥
4、服务端将自己的信息指纹用CA公钥加密,并将数据和自己的公钥(记为Server公钥)返回给客户端。
5、客户端将服务端数据发送给认证机构认证,认证机构用私钥解密确认服务端的身份。
6、确认身份后客户端生成一个key用取到的Server公钥加密并传输给服务端。
7、服务端接受到数据,用私钥进行解密,双方用Key进行对称加密传输