讲一下HTTPS

HTTPS

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

HTTP与HTTPS的区别

SSL:安全套接字层
TLS:传输层安全

如上图所示 HTTPS 相比 HTTP 多了一层 SSL/TLS,它其实不算在应用层、也不算在传输层,SSL/TLS介于两者之间,TLS的前身是SSL,TLS1.0是基于SSL3.0设计的。后面发现SSL3.0有安全漏洞,谷歌建议禁止SSL3.0,后面火狐和微软也发现了隐患。知道2018年8月,最终通过了TLS1.3(不向后兼容),2020年旧版本TLS1.0和1.1被废弃,目前谷歌和微软等都开始使用更加安全的TLS1.3,到目前为止TLS1.2还是安全可用的,只是发现了有潜在的安全隐患。所以现在能使用的TLS只有1.2和1.3了。

在应用层中,应用TLS协议最多的就是HTTP了(这里的HTTP+TLS就是HTTPS,书上这么写,我还以为HTTP怎么用TLS…),但也并非只有HTTP用了TLS,SMTP也可以使用TLS进行加密鉴别。

这里讲一下TLS在传输层是怎么用的

注:

  • SSL译为安全套接字层,套接字层(不算在五层模型中)介于应用层与传输层,所以有人把SSL/TLS归纳为在这里(如果面试问到的话回答这个比较靠谱)。
  • 但因为TLS在建立TCP连接之后,就开始执行,所以也有人把SSL/TLS归纳为传输层。
  • 但说在应用层我就觉得有点离谱了,我查了很多资料并没有说SSL/TLS在应用层中怎么工作…

这里有两个阶段,即握手协议和会话阶段。在握手阶段,TLS使用其中的握手协议,而在会话阶段,TLS使用其中的记录协议

介绍一下握手阶段
  1. 在建立TCP连接之后,客户端向服务器发送自己选定的加密算法(以及密钥交换算法)
  2. 服务器确定自己支持的算法后,然后把自己的CA证书发送给A(注:由于现在TLS1.3并不向后兼容,把以前很多陈旧的加密算法取消了,比如MD5,SHA-1,DES,3DES等,只留下几种最安全的方法)
  3. 客户端用数字证书中CA的公钥对服务端发送过来的证书进行鉴别验证
  4. 客户端依据双方确认的密钥交换算法生成主密钥,然后客户端使用公钥对主密钥进行加密,然后把加密后的主密钥发送给服务端。
  5. 服务端通过自己的私钥把主密钥给解密出来,这样服务端和客户端就有了为后面的数据传输(会话阶段)使用的共同的主密钥。
  6. 为了使双方的通信更加安全,主密钥会被分割为4个不同的密钥(注意:分割后的密钥依旧是对称密钥)

过程如下图所示:

在这里插入图片描述

你可能会迷惑,这些阶段对应着什么?所以接下来我会对这些步骤进行一个简单的概括。

一二三步这个其实没什么好说的,主要是通过CA证书验证服务端是否合法,然后协商后面的加密算法和密钥交换算法(生成主密钥时使用的算法)

在主密钥传输的部分使用的是非对称加密。为什么要使用非对称加密呢?这里主要是为了后面的会话阶段做准备。(如果不了解什么是对称加密和非对称加密的话,我建议还是需要去看一下这两种加密方式的区别)

会话阶段不使用非对称加密,而使用对称加密,主要是效率上的问题(相差3个数量级)。

而对称加密使用公钥对数据进行加密。就有安全问题,如果公钥明文被黑客获取,拿传输的数据就很容易被黑客截获和篡改。

所以在握手阶段,为了解决效率问题和安全问题,就需要通过非对称加密的方式。客户端通过对会话阶段使用的公钥使用自己的公钥进行加密,服务端使用自己的私钥进行解密。通过对主密钥的加密,防止黑客获取主密钥的明文,这样就保证了会话阶段的传输安全。

会话阶段

有点杂,这里就不讲了…后面研究完会补充在这里0v0

参考文章:

  1. https://zhuanlan.zhihu.com/p/27395037
  2. 计算机网络(第八版)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值