TCP如何保证传输安全
- 对称加密
- 加密和解密使用同一把密钥进行
- 问题暴露: 明文传输密钥跟客户端,密钥在中间被截取了呢,如何安全传输密钥给客户端?
- 非对称加密
- 客户端和服务器同时拥有公钥和私钥
- 用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密
- 过程: 服务器用公钥加密,客户端使用私钥解密
- 问题暴露:加密速度较对称加密慢百倍
- 对称加密 + 非对称加密
- 非对称加密 加密密钥
- 对称加密 加密传输数据
- 过程: 明文传输公钥给客户端 -> 客户端使用收到的公钥加密 密钥(对称加密的) -> 服务器私钥解密得到 密钥(对称加密的)
- 解决的问题:
- 服务端如何安全得到 密钥(对称加密的)
- 数据传输速度提升 (真正的数据传输使用对称加密, 只有密钥传输使用了非对称加密)
- 问题暴露: 服务器明文传输公钥,万一传输过程中被截取了呢 (若截取成功,客户端传输数据再次被截取,岂不是GG),跟换了一个公钥,也就说服务器身份无法得到验证
- 数字证书
- 认证中心CA
- 过程: 把要传输的公钥和服务器信息通过Hash算法生成 信息摘要 -> CA使用自己的私钥加密信息摘要形成数字签名 -> 再把 公钥+数字签名+未hash的个人信息 形成 数字证书 -> 客户端拥有一份数字证书,经过hash算法对公钥和个人信息生成信息摘要,最后对比两份信息摘要 (一致就是可靠的服务器)
- 问题暴露: 1. CA的公钥怎么给客户端 2. CA的私钥怎么给服务器
- 客户端内置证书
- 服务器一开始就申请证书 (需要购买的)