一、对称加密:
原理:客户端、服务端均用同一把秘钥对数据进行加密、解密
暴露的问题:
- 密钥 key 只有一把,很容易被截取
- 传输的内容被黑客篡改,接收方无法感知
二、非对称加密(公钥加密):
原理:公钥加密数据,只能由私钥解密;私钥加密数据,只能由公钥解密。服务器同时拥有公钥、私钥,将公钥给客户端,客户端用公钥加密,加密后的数据只能由服务器的私钥解密
解决的问题:
- 客户端向服务器发送数据安全
暴露的问题:
- 无法确定公钥来源、是否被修改
- 公钥无异常的情况下,可以保证客户端发送数据安全,但服务器发送的数据无法确保安全。
三、对称加密 + 非对称加密(TLS 握手过程):
原理:
- C → S:客户端支持的 TLS 版本、客户端生成的一个随机数 x、支持的加密算法列表
- S → C:确认 TLS 版本、服务端生成一个随机数 y、服务端选择一个加密算法
- S → C:将 证书+公钥 发送给客户端
- C → S:客户端根据自己的证书信任列表判断证书是否可信、客户端生成的一个随机数 z,用公钥加密后(z1)发送给服务端
- S、C:服务端用私钥解密 z1 获得 z,服务端用 x、y、z 以及加密算法计算出 “会话秘钥”(客户端同理)【截止目前都是非对称加密】
- S → C、C → S:用会话秘钥对数据进行加密、解密【对称加密】
解决的问题:
- CA证书可以保证公钥来自真正的服务器,且公钥没有被修改
- 随机数 z1 只有服务端能解密,保证了 z 只有客户端和服务端能获取,确定了会话秘钥的安全性