【linux】HTTPS 协议原理
1. 了解 HTTPS 协议原理
(一)认识 HTTPS
HTTPS 也是一种应用层协议,是在 HTTP 协议的基础上引入了一个加密层
因为 HTTP协议的内容都是按照文本的方式进行传输的,这个过程中,可能会出现一些篡改的情况
(二)认识 "加密" , "解密"
加密:把明文(在网络上要传输的数据)进行一系列操作,生成密文(处理过后的数据)的过程
解密:把密文再进行一系列操作,还原成明文的过程
在这个加密和解密过程中,往往需要一个或者多个中间数据,来辅助这个过程,这样的数据叫做密钥
(三)常见的加密方式
1. 对称加密
采用单密码的加密方法,同一个密钥可以同时用作信息的加密和解密
特征:
加密和解密所使用的密钥都是相同的
特点:
算法公开,计算小,加密速度快,加密效率高
2. 非对称加密
需要两个密钥来进行加密和解密,这两个密钥一个是公开密钥(一般来说,是服务器交给客户端的),一个是私有密钥(一般来说,是服务器私有的,不会交给别人)
特点:
算法强度复杂,安全性高,但是效率低,速度慢
注意:
公有密钥和私有密钥是配对的,可以通过 公有密钥 解开 私有密钥的加密,也可以通过 私有密钥 解开 公有密钥的加密
(四)数据摘要(数据指纹)
数据摘要(数据指纹):基本原理是利用单向散列函数(hash表)对信息进行运算,生成一串固定的长度的字符串,它不是一种加密,但是可以判断数据是否发生篡改
摘要常见算法:MD5,SHA1 ........,算法只能尽可能减少数据冲突,确保唯一性
(五)数字签名
摘要经过加密,就得到数字签名
2. HTTPS 数据安全的探讨
要确保数据安全,只要是在于加密过程是否安全可靠,而加密主要分为两大类:对称加密和非对称加密
(一)方案1 ---- 只使用 对称加密
(二)方案2 ---- 只使用 非对称加密
(三)方案3 ---- 双方都采用 非对称加密
(四)方案4 ---- 非对称加密 + 对称加密
针对方案3,4共同拥有的安全缺陷问题
中间人是有可能获取所有在网络传输中的数据
以上方案都存在⼀个问题,如果最开始,中间⼈就已经开始攻击,从而造成不安全
最直接的原因是:客户端无法识别公钥是不是服务端的 (这里需要引入一个概念:证书)
(五)⽅案 5 ---- ⾮对称加密 + 对称加密 + 证书认证
在客户端和服务器刚⼀建⽴连接的时候, 客户端给服务端发送请求,服务器给客户端返回一个证书,证书包含了之前服务端的公钥, 也包含了⽹站的⾝份信息
3. 证书
(一)CA认证
服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信
息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端
公钥的权威性
这里还有一些细节:如,签名是什么,如何保证证书的内容不会被中间人修改
(二)理解数据签名
签名的形成是基于⾮对称加密算法的
把证书里面的明文信息变成数据摘要,再通过加密(CA 机构自身的私有密钥进行加密),得到数据签名
(三)验证证书
客户端进行认证:
- 当客户端获取到这个证书之后, 会对证书进⾏校验(防⽌证书是伪造的).
- 判定证书的有效期是否过期
- 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构)
查看浏览器的受信任证书发布机构:
设置 -- 安全 -- 管理证书
- 验证证书是否被篡改
判断是否发生篡改,如图:
4. 常见问题
- 为什么签名不直接加密,⽽是要先形成数据摘要?
缩⼩签名密⽂的⻓度,加快数字签名的验证签名的运算速度
- 如何成为中间⼈?
1. ARP欺骗:在局域⽹中,hacker经过收到ARP Request⼴播包,能够偷听到其它节点的 (IP, MAC)地址。例, ⿊客收到两个主机A, B的地址,告诉B (受害者) ,⾃⼰是A,使得B在发送给A 的数据包都被⿊客截取
2. ICMP攻击:由于ICMP协议中有重定向的报⽂类型,那么我们就可以伪造⼀个ICMP信息然后发送给局域⽹中的客⼾端,并伪装⾃⼰是⼀个更好的路由通路。从⽽导致⽬标所有的上⽹流量都会发送到我们指定的接⼝上,达到和ARP欺骗同样的效果
3. 假wifi && 假⽹站等