TTPS 是什么?
HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层.
HTTP协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况
概念准备
1. 什么是"加密"
加密就是把明文(要传输的信息)进行一系列变换, 生成 密文
解密就是把密文再进行一系列变换, 还原成 明文
在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为密钥
加密解密到如今已经发展成一个独⽴的学科:密码学。而密码学的奠基人, 也正是计算机科学的祖师爷之一, 艾伦·⻨席森·图灵
2. 为什么要加密
臭名昭著的 "运营商劫持"
下载一个 天天动听
未被劫持的效果, 点击下载按钮, 就会弹出天天动听的下载链接
已被劫持的效果, 点击下载按钮, 就会弹出 QQ 浏览器的下载链接
由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等),那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改。
点击 "下载按钮", 其实就是在给服务器发送了一个 HTTP 请求, 获取到的 HTTP 响应其实就包含了该 APP 的下载链接. 运营商劫持之后, 就发现这个请求是要下载天天动听,那么就自动的把交给用户的响应给篡改成 "QQ 浏览器" 的下载地址了
所以:因为 http 的内容是明文传输的,明文数据会经过路由器、wifi 热点、通信服务,运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是 中间人攻击 ,所以我们才需要对信息进行加密
3. 常见的加密方式
对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,特征:加密和解密所用的密钥是相同的
- 常见对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2 等
- 特点:算法公开、计算量⼩、加密速度快、加密效率⾼
对称加密其实就是通过同一个 "密钥" , 把明文加密成密文, 并且也能把密文解密成明文.
一个简单的对称加密, 按位异或
假设 明文 a = 1234, 密钥 key = 8888
则加密 a ^ key 得到的密文 b 为 9834.
然后针对密文 9834 再次进行运算 b ^ key, 得到的就是原来的明文 1234.
(对于字符串的对称加密也是同理, 每一个字符都可以表示成一个数字)
当然, 按位异或只是最简单的对称加密. HTTPS 中并不是使用按位异或
非对称加密
需要两个密钥来进行加密和解密,这两个密钥分别是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)
- 常见非对称加密算法(了解):RSA,DSA,ECDSA
- 特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
非对称加密要用到两个密钥, 一个叫做 "公钥", 一个叫做 "私钥"
公钥和私钥是配对的. 最大的缺点就是运算速度非常慢