HTTPS加密过程详解

  • 一、前言
  • 二、HTTPS的混合加密
    • 1、摘要算法
    • 2、混合加密和数字证书
  • 三、补充
  • 四、参考资料

一、前言

http是为了解决http存在的问题而在http基础上加入了SSL/TSL,在HTTP/2中TCP三次握手后会进入SSL/TSL握手,当SSL/TSL建立链接后,才会进行报文的传输。(注意这里我说的是http/2,在3中建立链接的次数不同,可在下面补充内容中查看,下面默认是http/2)

二、HTTPS的混合加密

我们知道加密方式有三种

  • 对称加密
  • 非对称加密
  • 混合加密

HTTPS采用的就是对称加密和非对称加密的混合加密方法。

  • 混合加密解决了信息的机密性,防止数据被窃听
  • 摘要算法实现了数据的完成性,防止了数据被篡改
  • 数字证书提供了身份验证,防止了被冒充风险

1、摘要算法

客户端在向服务器端发送明文的时候,会通过摘要算法计算出明文的摘要,为了通俗来讲,我们将计算出的摘要比喻成身份证。然后客户端将明文和身份证通过密钥进行加密传给服务器端。服务器端会通过密钥解密客户端发来的数据,此时明文已经被解密出来,身份证呢?服务器端也会使用摘要算法计算出传来数据的身份证,然后将计算出的身份证和传过来的身份证进行比较,如果身份证相同,那么就说明数据是完整的。

2、混合加密和数字证书

在这里我们将混合加密和数字证书放到一块讲解,可能有人会疑问数字证书是什么?其实数字证书是第三方权威机构给颁发的一种认证证书,在https通信时,会去申请这个数字证书,同时伪造数字证书是一件极其难的事情,所以我们认为证书是可信的,那么其公钥(下面会讲)就是可信的。

https在建立链接时是非对称加密,建立链接后是对称加密,(不懂对称加密和非对称加密的小伙伴可自行查阅哦)具体详细请看下面的一张图:

  • 1、首先呢,客户端先向服务端发送加密通信(https)请求,这次请求中包括:

    • SSL/TSL版本号
    • 加密套件,也就是客户端支持的加密算法列表
    • 产生一个随机数,我们叫他为第1随机数
    • 有一个Client Hello字符串
  • 2、服务器收到请求后,向客户端发出响应:
    • 确认SSL/TSL版本号,如果客户端不支持,那么就关闭通信
    • 确认的加密算法列表
    • 生成一个随机数,我们叫第2随机数
  • 3、服务器再向客户端发送数字证书,这里敲重点了。服务器会把自己的公钥注册到CA(第三方证书机构),然后CA拿自己的私钥对服务器的公钥进行处理并颁发数字证书。
  • 4、服务器将公钥发送给客户端
  • 5、服务器发送Hello Done,表示发送完毕
  • 6、客户端收到服务端一系列响应后,确认数字证书和公钥,没有问题后向服务端发送:
    • 生成一个随机数,我们叫第3随机数或者预主密钥,此预主密钥会通过公钥进行加密
    • 客户端握手结束通知,表示客户端的握手结束
  • 7、服务端收到客户端数据后,使用私钥对加密后的预主密钥进行解密,没有其他人知道预主密钥,因为它加密了,除非服务器私钥泄漏。然后服务端通过第一、二、预主密钥计算出会话密钥。客户端也计算出了会话密钥。
  • 8、服务端向客户端发送:
    • 加密通信算法改变通知,以后通过会话密钥通信
    • 服务端握手结束

到此为止,SSL/TSL握手结束,在此之后都会通过会话密钥来进行加密和解密,也就是对称加密。

有小伙伴可能会说,https建立链接的过程太麻烦了吧。这里我想说,世界上没有事事都完美的东西,我们在不断优化的过程中,解决上一个问题可能也会产生新的问题,其实这也是世间万物的发展规律

三、补充

1、在http/1.1中加入了TCP长连接通信,每当建立起链接后,只要任意端口没有明确提出断开链接,TCP就会保持链接状态,大大减少了频繁建立链接的开销。

2、在http/2中,相对于http/1.1改进了一些内容:
- 头部压缩。http/2中会压缩头,如果客户端发送多个请求,头是相似或者相同,那么协议会消除重复的部分,减免了不必要的浪费。
- http/1.1中报文是文本格式,在http/2中报文是二进制格式,大大加快了传输效率。
- http2中使用了多路复用,解决了队头堵塞问题。什么是队头堵塞?在http/1.1中,队头堵塞指的是在TCP请求时,请求因为某种原因被阻塞,那么后面的请求无法继续进行(因为TCP是可靠链接,顺序执行)。多路复用是多个http复用一个TCP链接,那么多路复用后,请求和响应不再是按照顺序一一对应。如果一个请求被堵塞,其他请求可以继续。

3、http/2优化了http/1.1,但是也存在一些问题,就像上面说的,没有完美的事情。http/3对2进行了一些优化

  • 2在多路复用时是复用一个TCP链接,那么TCP一旦发送丢包,那么就会阻塞所以复用它的http,这就麻烦了,这里也是因为TCP是可靠传输,顺序要一一对应。所以http/3直接将TCP改为UDP,但是UDP是不可靠传输,所以也加入了基于UDP的QUIC协议,来实现类似TCP的了靠传输。
  • http/3将TCP三次握手和SSL/TSL三次握手直接合并成了三次握手,意思是将原来的6次合并成了3次,减少了链接次数。

我们可以看到http/3有很多优点,但是目前普及较慢,我也不清楚为什么,有知道的小伙伴可以评论区讨论讨论

四、参考资料

本篇文章的知识是看以下两位大佬讲解的:
1、小林coding
2、 技术蛋老师
没看明白的小伙伴也可以查看以上链接。

为了省时间,图也借用了一下,哈哈。
在此感谢二位为计算机行业做出的贡献!

HTTPS加密过程详解相关推荐

  1. HTTPS 加密过程详解

    HTTPS 加密过程详解 HTTPS 中的概念 对比 HTTP 与 HTTPS 网络分层结构 对称加密 非对称加密 HTTPS 中的概念 明文:可以直接看到原始数据的文本: 密文:看不见原始数据的文本 ...

  2. 网络传输数据的加密过程详解

    常见的明文传输协议有:http,smtp,dns,pop3,imap4. 常见的攻击方式有:窃听,数据注入,会话劫持 为了保证互联网上的数据传输的安全性,于是各种的加密方式和加密算法诞生了: 数据加密 ...

  3. https中SSL加密过程详解,看这一篇就够了!

    我们所说的https实际上就是安全版本的http,是http+ssl加密实现的. SSL握手协议 1.客户端:发起一个 HTTPS 请求,请给我公钥 2.服务器:这是我的证书,里面有加密后的公钥 3. ...

  4. HTTP 和HTTPS 连接过程详解(SSL TLS)

    简介 HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,减少了被恶意劫持的可能.很好的解决了解决了http的三个缺点(被监听.被篡改.被伪装) 对称加密和 ...

  5. 登录与注册时两次md5加密过程详解

    1 当前端传送密码到后端时候,需要进行两次MD5加密,登录和注册时的加解密流程是怎么样的? 前端和后端加密都可以规定使用密码的某几位作为盐进行加解密操作,而这种约定俗成的盐选取操作只有程序员自己知道, ...

  6. RSA加密过程详解 | 公钥加密| 密码学| 信息安全

    简介 RSA加密算法是一种非对称加密算法,所谓非对称,就是指该算法加密和解密使用不同的密钥,即使用加密密钥进行加密.解密密钥进行解密,分别称为公钥和私钥 在RAS算法中,公钥是公开的,而私钥是需要保密 ...

  7. HTTPS 加密算法原理详解

    本文讲的是HTTPS 加密算法原理详解, 前言 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一 ...

  8. Android签名与校验过程详解

    原文:https://blog.csdn.net/gulinxieying/article/details/78677487 目 录 一.签名与校验原理概要    2 1.数字签名简介    2 2. ...

  9. 浏览器实现抓包过程详解

    浏览器实现抓包过程详解 几乎所有浏览器都提供了抓取数据包的功能,因为浏览器为抓包提供了一个专门的操作界面,因此这种抓包方式也被称为"控制台抓包".本节以 Chrome 浏览器为例进 ...

最新文章

  1. epoll 接口以及原理说明
  2. Android NDK
  3. sql 递归查询所有的下级
  4. 创建订单 - 扣除商品库存与订单状态保存
  5. 如何分析IBASE对应的icon无法正常显示的问题
  6. 微型计算机原理risc,微型计算机原理习题及解答-20210409003329.docx-原创力文档
  7. ant实例 jmeter_Jmeter+ant搭建环境
  8. AOSP6.0.1 launcher3入门篇—解析launcher.java文件
  9. 《scikit-learn》随机森林之回归
  10. KVO(NSKeyValueObserving)、KVC(NSKeyValueCoding)作用浅谈
  11. css画三角形以及各种图形
  12. 容器技术—docker stack
  13. python eml解析_使用 python eml-parser 对 eml文件进行格式化
  14. 2016.7.31整机升级计划
  15. qt creator编译qt工程时报错:undefined reference to
  16. 3D MAX界面操作教程及渲染技巧
  17. 状态栏QStatusBar
  18. 【机器人学】逆运动学
  19. vc++之oncreate
  20. 用js写随机抽奖代码

热门文章

  1. Webots 机器人仿真平台(六) 新建四轮小车控制器
  2. 2021年P气瓶充装复审考试及P气瓶充装模拟试题
  3. opencv学习笔记(一)
  4. Android APK静态分析
  5. js 轮播图(透明度)
  6. MyBatis-Plus之@Version
  7. linux-top命令查看内存CPU
  8. AI解锁无人时代 仍需数据安全保驾护航
  9. [Spark基础]-- spark并行度和partion联系
  10. defy手机突然搜索不到wifi信号的问题