目录
HTTPS就是在HTTP上引入一个加密层
1.什么是密文
加密就是把 明文 (要传输的信息)进行一系列变换, 生成 密文 .
解密就是把 密文 再进行一系列变换, 还原成 明文 .
2.工作过程
2.1引入对称加密
1.流程
为了防止密钥扩散,不同和客户端要有不同的密钥,因此,服务器要维护和不同客户端和每个密钥的关系.==>在双方建立连接时,协商密钥是什么.
2.问题
密钥明文传输,也会被黑客得到,所以就要对密钥加密传输.
2.2引入非对称加密
1.流程
需要两个密钥,一个公钥,一个私钥,公钥都可以有,但是私钥只有自己可以有.
相当于,公钥是一把锁,私钥是一个钥匙,公钥给谁都行,但私钥只有自己可以有,持有私钥才能解密
方法:
1.通过公钥对明文加密,变成密文;通过私钥对密文解密,变成明文
2.通过私钥对明文加密,变成密文;通过公钥对密文解密,变成明文
客户端有公钥,服务器有私钥,黑客可以拿到公钥,不能拿到私钥
客户端生成对称密钥,用公钥加密,黑客拿到密文,没有私钥,不能解密.
2.问题:
- 为什么不都用非对称加密呢?
非对称加密成本太高,用于加密密钥可以,如果都用非对称密钥不划算
- 中间人问题
黑客自己生成一对公钥和私钥,拦截到服务器给客户端返回的公钥,用自己的公钥替换,为了隐藏自己,会把得到的密文用服务器的公钥加密,变成另一个密文,发给服务器
2.3引入证书
1.流程
要确认公钥来自服务器,就要有第三方公信机构,证明公钥合法
服务器提供资质,公信机构提供证书,公钥放在证书中,客户端看到证书就能得到秘钥
客户端验证证书的合理,
1.证书自身有校验机制
2.向公信机构求证