# 只使用对称加密
每个 Client 生成一个自己一个 Key,Server 也用对应的 Client 的 Key 解密。Server 传送到 Client 也使用对应的 Key 加密,Client 再使用自己的 Key 解密。这种情况要求 Server 要保存每一个 Client 的 Key。
# 只使用非对称加密
- Client 向 Server 请求 PK。
- Server 将生成的 PK 返回给 Client。
- Client 使用 Server 生成的 PK 加密传送给 Server 的数据,Server 使用 SK 解密。
- Server 使用 SK 加密传送给 Client 的数据。
- Client 使用 PK 解密。
这种情况下,黑客也可以拿到 Server 公钥,Client 到 Server 数据安全,Server 到 Client 不安全。
# 对称加密,非对称加密混合使用
- Client 向 Server 请求 PK。
- Server 将生成的 PK 返回给 Client。
- Client 生成用于数据传输的对称加密的密钥 RK。
- Client 使用 Server 生成的 PK 加密 RK。
- Server 使用 SK 解密得到 Client 的 RK。
- Server 返回解密成功的讯息到 Client。
- Client 和 Server 使用共有的 RK 进行数据加解密。
# 中间人攻击
对称加密,非对称加密混合使用中存在的一个问题是中间人攻击,黑客可以充当服务器的角色,在 Client 和 Server 之间传送数据。因为客户拿到的是黑客给的 PK1,使用 SK1 就可以获得客户生成的 RK, 然后如图红色部分,客户使用 RK 加密数据,黑客使用 RK 获取数据,并且可以篡改 Client 数据传送到 Server.
# 证书认证
-
Server 会先使用自己生成的 PK, SK 向 CA 机构购买证书,证书机构会使用自己的私钥 CSK 加密 Server 的 PK 生成证书,然后返回给 Server。
-
Client 访问 Server 时会先向 Server 请求证书。
-
Server 将 CA 下发的证书传送给 Client。
- 这时如果黑客截获了证书 license,并将自己的证书 license1 传送给 Client, Client 系统中不包含篡改后的证书的公钥 CPK, 验证不会通过。
-
Client 系统中包含 CA 的 CPK 可以解密 Licence 获取 Server 的 PK。
-
Client 使用 Server 生成的 PK 加密 RK。
-
Server 使用 SK 解密得到 Client 的 RK。
- 因为黑客在第 3 步也可以获得 Server 下发的 Licence, 黑客系统中也可以有 CA 的 CPK, 所以也可以获得 Server 的 PK, 但是因为只有 PK 没有办法解密 Client 的数据,所以无法获得 Client 的 RK。
-
Clicen 和 Server 使用 RK 加密解密数据。