目录
HTTPS协议
HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现⼀些被篡改的情况。很明显,这是不安全的,所以引入了 HTTPS 协议来解决这个问题。
HTTPS(Hyper Text Transfer Protocol Secure)是 HTTP 协议的一种安全版本,通过使用 SSL 或 TLS 协议对 HTTP 协议的通信进行加密,从而保证通信的安全性。
什么是安全呢?安全就是破解的成本远远大于破解的收益。
什么是加密
加密就是把明文(要传输的信息)进行⼀系列变换,生成密文。解密就是把密文再进行⼀系列变换,还原成明文。在这个加密和解密的过程中,往往需要⼀个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥。
为什么要加密
我们来看一个经典的案例,"运营商劫持"是指网络运营商(例如电信、联通、移动等)通过技术手段修改用户的网络流量,从而使用户的访问请求被重定向到其他网站或者被修改。这种行为通常是为了广告投放、监控用户行为或者政治审查等目的。
运营商劫持的方式有很多种,最常见的是 DNS 劫持和 HTTP 劫持。DNS 劫持指的是运营商篡改 DNS 服务器的解析结果,将用户请求的域名解析到错误的 IP 地址,从而达到劫持的效果。HTTP 劫持则是通过拦截用户的 HTTP 请求包,修改其中的内容或者插入广告等信息,再将请求转发到服务器上。
由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器、交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改。
点击 “下载按钮”,其实就是在给服务器发送了⼀个 HTTP 请求,获取到的 HTTP 响应其实就包含了该 APP 的下载链接。运营商劫持之后,就发现这个请求是要下载天天动听,那么就自动的把交给用户的响应给篡改成 QQ浏览器 的下载地址了。
因为 HTTP 的内容是明文传输的,明文数据会经过路由器、WIFI 热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击 ,所以我们才需要对信息进行加密。
不止运营商可以劫持,其他的黑客也可以用类似的手段进行劫持,来窃取用户的隐私信息或者篡改内容。所以在互联网上,采用明文传输是很危险的事情!!!HTTPS 就是在 HTTP 的基础上进行了加密,进⼀步的来保证用户的信息安全。
常见的加密方式
对称加密
- 采⽤单钥密码系统的加密方法,同⼀个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,特征:加密和解密所用的密钥是相同的。
- 常见对称加密算法(了解):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
- 特点:算法强度复杂、安全性依赖于算法与密钥。但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快;而其优点是密钥的分发和管理比较容易。
非对称加密使用一对密钥来加密和解密数据,公钥是公开的,任何人都可以获取,用来加密数据;私钥只有接收方才有,用来解密数据。
公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密要慢很多。
- 通过公钥对明文加密,变成密文
- 通过私钥对密文解密,变成明文
也可以反着用
- 通过私钥对明文加密,变成密文
- 通过公钥对密文解密,变成明文
数据摘要和数据指纹
- 数字指纹(数据摘要),其基本原理是利⽤单向散列函数(Hash函数)对信息进行