1. HTTPS的概念
HTTPS也是一个应用层协议,在HTTP协议基础上引入加密层
由于HTTP协议内容都是按照文本形式 明文传输的,就导致在传输过程中出现一些篡改的情况
报文在传送时,有效载荷是明文传送的,容易泄露
在应用层和传输层之间 添加 软件层 ,一般称为 SSL /TLS
SSL/TLS 本质就是 HTTP的握手协商、加密解密
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-1.png)
所以此时的数据交给 传输层的都是经过加密的
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-2.png)
远端主机也是要进行通信的
转而将数据交给远端的HTTP
通过加一层软件层,就可以在协议栈中添加 加密 解密 功能
网络中的实际报文 一定是被加密的
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-3.png)
HTTP 加上 SSL/TLS 称之为 HTTPS
2. 加密
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-4.png)
加密就是把明文 进行一系列转换 生成为密文
解密 就是把 密文再进行一系列变换,还原成明文
在这个加密和解密的过程中,需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥
常见的加密方式
对称加密
采用 单钥 密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密
也称为 单秘钥加密,特征:加密和解密所用的密钥是相同的
特点:算法公开、计算量小、加密速度快、加密效率高
非对称加密
用两个密钥来进行加密和解密,这两个密钥是公开密钥和私有密钥
公钥:可以向全网公开
私钥:只能自己拥有
用公钥加密,只能用私钥解密
用私钥加密,只能用公钥解密
因为公钥是公开的,所以所有人都可以使用公钥来进行 加密和解密
特点:算法强度复杂 ,安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快
3. HTTPS的工作过程的探究
方案1 —— 只使用对称加密
若通信双方都各自持有同一个密钥,并且没有别人知道,这两方的通信安全当然是可以保证的
(除非密钥被破解)
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-5.png)
即使黑客将数据截获,但是由于黑客并不知道密钥是啥,所以就没办法解密,也就不知道请求中的内容
如何保证客户端和服务端双方用同一个密钥?
若内置,则内置到windows操作系统还是浏览器中,无论是哪一个,则黑客都有一定渠道获取到
若刚开始时将密钥传给服务器,服务器就知道了对应的密钥了,双方再用密钥做加密
但 将密钥 经过客户端发送给服务器 ,无法保证密钥本身的安全
所以该方案是不安全的
方案2 —— 只使用 非对称加密
当使用公钥 加密, 使用私钥解密时,就算让黑客将数据截获,也没有关系,因为只有私钥才能解密
似乎看起来是安全的
(私钥加密 ,公钥解密)
若服务器用它的私钥数据 加密 传给浏览器,浏览器就可以用公钥解密它,公钥被全网公开
若这个公钥 被人劫持了,则他也能用该公钥 解密 服务器传来的消息
所以该方案也是不安全的
方案3 —— 双方都是用非对称加密
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-6.png)
服务器拥有公钥S和私钥S1,客户端拥有公钥C和公钥C1
客户端和服务器在通信之前,交换下自己的公钥
客户端把自己的公钥 直接发给服务器,服务器就知道了客户端的公钥C
服务器再把自己的公钥 直接发给客户端,客户端就知道了服务器的公钥S
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-7.png)
若客户端给服务器发消息,用公钥S加密,只有服务器能解密
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-8.png)
若服务器给客户端发消息,则用公钥C进行加密
这种做法看似是安全的,但是存在效率低下的问题(非对称加密速度比较慢,而且双方都使用非对称加密就更慢了)
但依旧有安全的问题
方案4 —— 非对称加密+对称加密
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-9.png)
服务器采用非对加密解密,客户端采用对称加密解密
服务器拥有公钥S和私钥S1
客户端发起HTTP请求,服务器 在响应
请求和响应都是明文的
服务器响应时,给客户端推送服务器端的公钥S
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-10.png)
假设客户端形成对称秘钥C
通过 对称秘钥C和 推送公钥S 形成 一段密文
将加密后的数据推送给服务器端
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-11.png)
服务器端再用自己的私钥S1 进行解密,形成对称密钥C
通过对称秘钥C来完成对称加密,保证双方数据的数据安全
但依旧有安全问题
中间人攻击
以方案四为例
简称 MITM 攻击
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-12.png)
客户端获取到公钥S后, 客户端形成对称秘钥C 用服务器端给客户端的公钥S加密
中间人即使 窃取数据,中间人确实 无法解出 客户端形成的密匙C
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-13.png)
M表示中间人
服务器端 具有 非对称加密的公钥S和私钥S1
中间人 具有 公钥M和私钥M1
客户端先请求,然后服务器响应,服务器向客户端发送公钥S
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-14.png)
当服务器把自己的公钥推送给客户端时,中间人截获
将 S从报文中 拿出来保存好,并将中间人自己的公钥M填进去
将新的报文转发给客户端,因为客户端请求的服务器端,所以就默认是服务器端发送的报文
客户端得到公钥M,客户端并不知道公钥被更换过
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-15.png)
客户端就正常运行,公钥M与客户端形成的对称秘钥X 结合成 加密报文
并将加密报文推送给中间人,此时就可使中间人对应的私钥M1 对加密报文解密
使中间人获得客户端的对称秘钥X
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-16.png)
获取到客户端的对称秘钥X后,在与服务器的公钥S结合,重新形成 新的加密报文
再将新的加密报文 推送给服务器
服务器 只觉得给 客户端 推送公钥S,就应该返回 带有公钥S的加密报文
服务器依然进行解密,也获得了客户端的 对称秘钥 X
总结:
中间人攻击,核心原因是什么?
客户端无法验证公钥的合法性
引入证书
给别人提供网络服务的服务端,本身是否为合法的,并不由它自己说了算,
要引入一张权威的、第三方的机构来对服务端做认证
如:你是一个餐厅的老板,餐厅做的菜是否符合食品安全,你是不知道,就算你说好的,别人凭什么相信你
所以必须去政府的相关单位,获得经营许可证,获得了该证,食品安全就有了一点保证
所以此时别人相信该餐厅的食品安全,是因为相信给这个餐厅认证的食品安全部门
CA认证
CA机构是 互联网标准化组织,以及整个网络标准化组织 共同筹建的 机构
对全国范围内所有对应的 服务器进行认证,颁发一个电子证书后,服务器才能被信任
要想使用 HTTPS,就必须在CA机构中认证,以获取到CA证书
若不认证,则 浏览器会弹窗,链接是不安全的,导致客户不相信该网站
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-17.png)
数字证书本质就是数据
理解数据签名
对大文本进行摘要,再对摘要的信息进行加密 即 数据签名
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-18.png)
将文本经过哈希散列,形成散列值
用 特定CA证书 的私钥 对 散列值进行加密 形成 签名
将原始的文本和签名 结合,形成签名的数据
这个过程称为 颁发一个证书
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-19.png)
对比两者的散列值 是否相等
若相等,则说明签名数据没有被篡改过
若不相等,则 明文数据和签名数据至少有一个被篡改过
方案5 —— 非对称加密 + 对称加密 + 证书认证
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-20.png)
客户端先请求,然后服务器响应,给客户端证书
1. 验证证书的合法性
客户端先认证,证书的合法性
通过验证,将内容和签名 分开,用相同的hash算法,形成对应的散列值
先将数据 使用 hash算法,形成对应的散列值
使用浏览器内置公钥,对签名做解密,形成散列值
若两者的散列值 不同,有可能 数据被篡改了,所以直接丢弃
若两者的散列值相同,说明内容没有被篡改以及证书是合法的
2. 客户端在证书中提取公钥
若证书是合法的,则提取证书中的公钥
![【计算机网络】HTTPS,计算机网络,计算机网络,https,网络协议](https://imgs.yssmx.com/Uploads/2023/09/704352-21.png)
客户端在形成对称秘钥X,与提取出的公钥 结合,形成加密报文
将加密报文推送给 服务器,服务器通过对应的证书私钥解密
就形成了 客户端的对称秘钥X文章来源:https://www.toymoban.com/news/detail-704352.html
证书存在的意义是 保证内容没有被篡改,在验证 证书合法性的同时 也验证了公钥的合法性文章来源地址https://www.toymoban.com/news/detail-704352.html
到了这里,关于【计算机网络】HTTPS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!