概念一:
- 公钥:顾名思义,大家都有的钥匙,当然不适合解密,但适用于加密
- 私钥:不能被别人知道的钥匙,适合解密
概念二:单向加密
客户端发送给服务器的数据,加密后,只能被服务器解密;服务器相应给客户端的信息,加密后,可以被所有人解密(其实就是不加密);也就是单向加密
非对称加密流程
- 客户端向服务发起请求,获取公钥
- 服务器返回公钥
- 客户端,使用公钥加密数据,发送给服务器
- 服务收到加密数据,用私钥加密,得到数据
- 服务用私钥加密数据,返回给客户端
- 客户端收到加密的数据,用公钥解密,得到数据
概念三:(看起来和概念一冲突,但结合概念二,理解加密的意义本质,就懂了)
- 公钥加密,私钥解密
- 私钥加密,公钥解密
不安全的 非对称加密流程
- 客户端向服务发起请求,获取公钥
- 经过网关(路由器或者服务器,都可以是网关),请求被恶意用途的服务器代理
- 恶意用途的服务器,去请求 真实服务器 公钥,得到公钥,返回 恶意用途的服务器 的公钥
- 客户端 用 恶意用途的服务器的公钥加密,发送数据 给真实服务器,请求依然被恶意用途的服务器代理
- 恶意用途的服务器 用 自己的私钥解密,得到数据,再用 真实服务器 公钥加密,去请求 真实服务器;
- 真实服务器 用私钥解密成功,认为是合法请求。开始操作数据库等其他行为。(转账成功等等)
安全的 非对称加密流程
一、CA机构 和 操作系统
-
CA机构,把自己的公钥,植入到操作系统;
image.png
image.png
二、服务器 与 CA机构
- 服务器开发人员把公钥上传到CA机构,并且填写一些信息,网站域名,身份证,手机号,等等
- CA机构 要求 服务器开发人员,在服务器某个文件夹下,新建一个文件,填写一些信息;用于校验,确保这个公钥真的是这个服务器的。
- CA机构请求 服务器上的文件,得到信息 和 自己要求的一致,认证通过;用自己的私钥加密,生成"数字证书",发送给 服务器开发人员
- 服务器开发人员,把"数字证书"存到服务器上
三、客户端 与 服务器
- 客户端向服务发起请求,获取"数字证书"(CA机构私钥加密过的,服务器的公钥)
- 服务器 返回 "数字证书"
- 客户端使用操作系统 CA机构的公钥,解密得到 服务器的公钥,如果"数字证书"是 恶意用途的服务器代理返回的,解密会失败。这就是 CA机构 的作用,它的公钥是安全的,不在网络上传输,植入到操作系统。和 私钥一样安全,放在服务器上,不传输。
- 客户端 拿到 真实服务器 公钥,解密数据,发送给你服务器
- 服务器用自己的私钥解密,再用自己的私钥加密数据,发送给客户端
- 客户端拿 公钥解密。完成一次请求
网友评论