对称加密 非对称加密 HTTPS
对称加密: 原始数据可逆变换.简单来说就是 加密解密是同一个秘钥. 比如有一个秘钥 A
原始 --> 使用 A 加密 --> 密文 --> 使用 A 解密 --> 原始
非对称加密: 简单来说 就是有两个密码 A 和 B ,用 A 加密的内容 只能用 B 解密 ,用 B 加密的内容 只能 用 A 解密.
原始 --> 使用 A 加密 --> 密文 --> 使用 B 解密 --> 原始
同样
原始 --> 使用 B 加密 --> 密文 --> 使用 A 解密 --> 原始
至于 公钥 与 私钥 是相对概念,私钥是自己用的不想别人知道的,公钥是给别人用的
例子: HTTPS
HTTP: 好处是简单易用,坏处,主要有3点
1. 数据是明文,容易被窃听
2. 无法保证数据的完整性,即不能验证是否被串改或丢失
3. 无法验证通讯双方的合法性
解决方案:
使用 HTTPS 及 在 HTTP 与 TCP 之间加了一层 SSL/STL ,即安全传输通道
分析:
安全通道的建立
1.将通讯的内容用 对称方式加密. 但这样客户端需要知道 对称的密钥.
有缺点,不能被广泛使用,
2. 使用非对称秘钥传输 对称密钥
有缺点,公钥需要事先指定,同时无法验证服务器合法性
3. 借助第三方机构
操作系统直接保存了可信任的第三方机构的公钥,服务器向第三方机构申请私钥,使用第三方私钥加密服务器自己要下发的公钥.
1 有一个问题,对称密钥无法传输给对方,必须不能明文传输,可以被窃听
2 解决了1中对称加密的密钥的传输的问题,但没让客户端验证发送公钥服务器的合法性.比如伪造一个服务器是某个银行,在劫持 DNS或其他手段使客户端的请求响应到伪造服务器上,这样双方通信不是 mb 了.
3 解决了可信服务器公钥传输的问题.
总的来说: 客户端的操作系统实现保存好了第三方的公钥, 服务器向第三方申请 私钥 ,服务器用申请的私钥加密 服务器下发给客户端自己的公钥, 客户端用系统中已经存在的第三方公钥解密 获得服务器下发的公钥同时验证服务器的合法性.不合法的服务器没有第三方的私钥.客户端随机生成一个对称加密的秘钥,用公钥加密后,上传到服务器,服务器用自己的私钥解密.或的对称加密的秘钥,之后内容使用对称秘钥加密.加密信道建立. 至于数据完整性,就是使用 hash 码 .