HTTPS
HTTPS 网络传输协议
HTTP 协议是通过明文传输的,这个数据明文在网络传输过程时,每个人都可以查看到,甚至可以进行修改。
为了解决数据传输安全问题,提出了 HTTPS 安全的网络传输协议。
在 HTTP 协议的基础上加入了 SSL 或 TLS 协议层来提供加密通信和身份验证。保护在客户端(如网页浏览器)和服务器之间传输的数据不被窃听和篡改,同时确保通信双方的身份真实性。
加密
加密/解密,就是在原本的数据之上,添加一个或多个中间数据,辅助进行加密/解密过程(多添加的数据就是 密钥)。
- 加密就是把明文(要传输的信息)进行一系列变换,文成密文
- 解密就是把密文再进行一系列变换,还原成明文
常见的加密方式(对称/非对称加密)
- 对称加密:使用一个密钥就可以同时进行加密和解密
- 非对称加密:需要用到两个密钥,公开密钥(公钥)、私有密钥(私钥)
公钥对明文加密,变成 密文; 私钥对密文解密,变成 明文
数据摘要、数字签名
- 数据摘要:也被称为哈希值,将任意长度的数字信息通过特定算法压缩成较短的字符串的过程
这个短字符串通常被称为数字指纹或哈希值,它唯一地代表了原始数据的内容。
在数据库中,为了保证数据的安全性。用户的输入的密码就是通过 数据摘要 的方式存储在表中。等下次用户输入密码时,通过输入的密码再次生成 数据摘要 对比数据库表中的数据,来验证密码的正确性。
常见的生成数据摘要的算法:MD5、SHA系列…
- 数字签名:使用发送者的私钥对数据摘要后的数据进行再加密,生成的密文就是数字签名
HTTPS 加密过程探索的方案
前面提到,HTTP传输数据是不安全的。为了保证数据安全,网络传输就不能再进行明文传输,要对明文进行加密处理。
HTTPS 网络传输协议并不是一蹴而就定下来的。为了使用更好的加密方式,在此期间提出了几个加密的方案,我们来看看:
只使用对称加密(效率低下、不安全)
使用对称加密,需要自身和对方都拥有相同的密钥。这个密钥只有双方才知道,双方通信的安全是可以得到保证的,前提是密钥密钥被破解。
来看看这样的一张图解:
使用了对称加密,即使是获取了请求数据,没有对应的解密方法,也就获取不到数据的内容。
但是,只使用对称加密就是好的吗?
服务器是为客户端进行服务的,客户可以有多个,但是服务器只有一台。就形成了 一对多 的关系。
一个客户端一个密钥,有多少客户,服务器就要维护多少个密钥&