详解HTTPS加密工作过程

news2025/4/24 9:38:59

🚗🚗🚗今天给大家分享的是HTTPS加密的工作过程。

清风的CSDN博客

🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流!

✈️✈️✈️动动你们发财的小手,点点关注点点赞!在此谢过啦!哈哈哈!😛😛😛 

目录

一、引入对称加密 

二、非对称加密

三、引入证书

四、总结 


         既然要保证数据安全, 就需要进行 "加密",网络传输中不再直接传输明文了, 而是加密之后的 "密文"。加密的方式有很多, 但是整体可以分成两大类: 对称加密非对称加密。

一、引入对称加密 

对称加密其实就是通过同一个 " 密钥 " , 把明文加密成密文 , 并且也能把密文解密成明文。
一个简单的对称加密, 按位异或:
        假设明文 a = 1234, 密钥 key = 8888,则加密 a ^ key 得到的密文 b 为 9834。然后针对密文 9834 再次进行运算 b ^ key, 得到的就是原来的明文 1234。(对于字符串的对称加密也是同理, 每一个字符都可以表示成一个数字) 。当然, 按位异或只是最简单的对称加密,HTTPS 中并不是使用按位异或。

        引入对称加密之后 , 即使数据被截获 , 由于黑客不知道密钥是啥 , 因此就无法进行解密 , 也就不知道请求的真实内容是啥了。
         但是事情并没有这么简单, 服务器同一时刻其实是给很多客户端提供服务的。 这么多客户端 , 每个人用的密钥都 必须是不同的 ( 如果是相同那密钥就太容易扩散了 , 黑客就也能拿到了 )。  因此 服务器就需要维护每个客户 端和每个密钥之间的关联关系 , 这也是个很麻烦的事情。

比较理想的做法 , 就是能在客户端和服务器建立连接的时候 , 双方 协商 确定这次的密钥:

        如果直接把密钥明文传输 , 那么黑客也就能获得密钥了,此时后续的加密操作就形同虚设了。因此密钥的传输也必须加密传输! 但是要想对密钥进行对称加密 , 就仍然需要先协商确定一个 " 密钥的密钥 "。 这就成了 " 先有鸡还是先有蛋 " 的问题了, 此时密钥的传输再用对称加密就行不通了。 此时,就需要引入非对称加密了!

二、非对称加密

非对称加密要用到两个密钥 , 一个叫做 " 公钥 ", 一个叫做 " 私钥"。公钥和私钥是配对的, 最大的缺点就是 运算速度非常慢 ,比对称加密要慢很多。
  • 通过公钥对明文加密, 变成密文
  • 通过私钥对密文解密, 变成明文

也可以反着用:

  • 通过私钥对明文加密, 变成密文
  • 通过公钥对密文解密, 变成明文

        服务器生成一对公钥和私钥,私钥自己留着,公钥发送给客户端。客户端就可以拿着公钥进行对称密钥的加密,对于黑客来说,可以拿到加密后的对称密钥的密文,但是无法解密。即使黑客手里可能有公钥,但是并没有私钥。而要对公钥加密的密文进行解密,只能用私钥。这样就可以有效的保证数据的安全。(此处使用非对称加密,只是针对“对称密钥”进行加密)。因为非对称加密运算量很大,效率很低。

        到此为止,还是不能保证数据的安全。可以试想一下,如果黑客入侵网络设备之后,生成一对公钥和密钥,然后对客户端:假装自己是服务器,而对服务器:假装自己是客户端,这样从中截获:

此时,也会导致数据不安全。那么,如何解决这一问题呢?继续往下看。

三、引入证书

        解决中间人攻击的关键,是让客户端能够确认当前收到的公钥确实是服务器返回的,而不是黑客伪造的,因此引入证书机制,即第三方认证机构,通过第三方认证机构作保来确认当前的公钥是有效的。

  • 首先,服务器要去第三方公正机构申请证书,此时机构会审核服务器的资质,审核通过就可以得到证书,证书包含很多属性和字段:证书发布机构 、证书有效期、公钥、证书所有者、数字签名等等。数字签名是针对上述数据进行的一个验证机制,公正机构在生成证书的时候,会先针对证书中的其他属性生成校验和。
  • 其次,公正机构还会使用自己的私钥针对上述的校验和加密,别人无法重新生成。
  • 在客户端向服务器发起申请建立连接时,服务器给客户端返回证书(证书里面包含公钥)。
  • 当客户端收到证书之后,就会针对证书进行验证,检查证书是否合法。为什么客户端可以验证加密的证书呢?这是因为客户端持有公正机构的公钥,这个公钥不是通过网络传输的,而是系统内置的,黑客无法对次环节进行攻击。
验证步骤:
  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构)
  • 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash (称为据摘要), 设为 hash1,然后计算整个证书的 hash , 设为 hash2, 对比 hash1 hash2 是否相等。如果相等, 则说明证书是没有被篡改过的。

此时,无论黑客是直接替换公钥,还是把公钥和数字签名一起替换,都能被客户端发现。

四、总结 

HTTPS 工作过程中涉及到的密钥有三组:
  • 第一组(非对称加密): 用于校验证书是否被篡改,服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥)。服务器使用这个私钥对证书的签名进行加密,客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过。
  • 第二组(非对称加密): 用于协商生成对称加密的密钥,服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端,然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密的密钥。
  • 第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

其实一切的关键都是围绕这个对称加密的密钥,其他的机制都是辅助这个密钥工作的 :

  • 第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器
  • 第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥

🚗🚗🚗好啦,今天的分享就到这里,别说还挺晕的,哈哈哈。多看几遍就行啦!也有可能是我没有给大家表述清楚,有什么问题欢迎大家指出。

🎉🎉🎉创作不易,还希望各位大佬支持一下!

✈️✈️✈️点赞,你的认可是我创作的动力!

⭐⭐⭐收藏,你的青睐是我努力的方向!

✏️✏️✏️评论:你的意见是我进步的财富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1382381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣双周赛第三题----2857. 统计距离为 k 的点对

这题我们的暴力做法就是o(n^2),但是根据数据量这样会超时,所以我们不能用暴力解法去解决 那么想一想双指针可以吗,不可以。为什么呢?因为他没有一个特性可以让他双指针跳过前面或者后面一个点。比如他们数组有顺序的情况下,还有一…

大数据StarRocks(七):数据表创建

1. 基本概念 1.1 Row & Column 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 ⚫ 在默认的数据模型中,Column 只分为排序列和非排序列。存储引擎会按照排序列对…

紫光展锐M6780丨画质增强——更炫的视觉体验

智能显示被认为是推动数字化转型和创新的重要技术之一。研究机构数据显示,预计到2035年底,全球智能显示市场规模将达到1368.6亿美元,2023-2035年符合年增长率为36.4%。 随着消费者对高品质视觉体验的需求不断增加,智能手机、平板…

【数据结构与算法】之数组系列-20240114

这里写目录标题 一、414. 第三大的数二、448. 找到所有数组中消失的数字三、561. 数组拆分四、594. 最长和谐子序列 一、414. 第三大的数 简单 给你一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。 示例 1: 输入&…

前端八股文(性能优化篇)

目录 1.CDN的概念 2.CDN的作用 3.CDN的原理 4.CDN的使用场景 5.懒加载的概念 6.懒加载的特点 7.懒加载的实现原理 8.懒加载与预加载的区别 9.回流与重绘的概念及触发条件 (1)回流 (2)重绘 10. 如何避免回流与重绘&#…

kylin集群使用nginx反向代理

前文已经提到,我安装了kylin集群。 kylin3集群问题和思考(单机转集群)-CSDN博客文章浏览阅读151次,点赞3次,收藏6次。由于是同一个集群的,元数据没有变化,所以,直接将原本的kylin使用…

20240106----重返学习-在VMware里给centos7设置静态IP地址

在VMware里给centos7设置静态IP地址 场景 学习nginx中,想要设置静态IP地址,以便让win10主环境中的Xshell里能够连接到VMware中的CentOS7上,进而可以在Xshell里进行操作。可以做到如复制粘贴之类的,而不是在虚拟机中的默认终端上…

Mac安装nvm以及使用nvm安装node

1. 安装nvm命令 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags2. 配置环境变量 vi ~/.bash_profileexport NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &&…

【每日一题】删除排序链表中的重复元素

文章目录 Tag题目来源解题思路方法一:比较相邻两节点 写在最后 Tag 【遍历】【链表】【2024-01-14】 题目来源 83. 删除排序链表中的重复元素 解题思路 方法一:比较相邻两节点 思路 比较两个相邻的节点,如果下一个节点值和当前节点值一样…

设计模式——1_4 外观(Facade)

文章目录 定义图纸一个例子:自动生成一杯茶沏茶的流程组合方式一:直接组合方法二:外观 碎碎念多个外观对象外观和封装外观和单例姑妄言之 定义 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这…

Windows系统Outlook邮件备份导出与导入教程

注意:微软商店UWP版本outlook客户端暂时不支持邮件备份!而Microsoft Office2003-目前(2021)中的outlook客户端才支持邮件备份。所以,想要备碧桂园集团邮箱邮件,请安装或者登录Microsoft Office中的outlook客户端以进行邮件的备份。…

Vue3+Vite连接高德地图JS API——地图显示、输入搜索

1 开通高德地图Web端JS API服务 1、进入高德地图API官网(https://lbs.amap.com/): 2、注册登录。 3、进入控制台。 4、点击“应用管理”,点击“我的应用”,创建新应用。 5、添加Key,服务平台选择“Web端&…

Mysql数据库高版本向低版本迁移方法

操作步骤 1、首先低版本Mysql创建数据库 2、使用navicat工具,复制高版本数据库的表 3、在低版本数据库中粘贴,弹出数据传输界面,选项去掉包含字符集、包含引擎及表类型 使用该版本实现了Mysql8.0向Mysql5.5的迁移,如果在Mysql8.0生…

VS游戏打包教程

我用得天天酷跑小游戏做的例子 1:安装打包插件 2:在解决方案里新建一个项目 3:新建一个setup项目 4:界面如下(通过右键folder,可以创建folder目录和输出) 5:素材文件 6:素材放完了就项目输出 7:创建快捷方式 右键这个主输出选择第一个create shortcut 8:将这个快捷方式,拖到,…

《最新出炉》系列入门篇-Python+Playwright自动化测试-9-页面(page)

1.简介 通过前边的讲解和学习,细心认真地小伙伴或者童鞋们可能发现在Playwright中,没有Element这个概念,只有Page的概念,Page不仅仅指的是某个页面,例如页面间的跳转等,还包含了所有元素、事件的概念&#…

ESU毅速丨制造企业需不需要建设增材制造中心?

随着科技的不断发展,增材制造技术已经成为制造行业的新宠。越来越多的企业开始考虑建设增材制造中心,以提高生产效率、降低成本、加速产品创新。但是,对于制造企业来说,是否需要建设增材制造中心呢? 首先,我…

EfficientSAM 代码推理

SA网站主页:Segment Anything | Meta AI 论文主页:EfficientSAM 代码地址:https://github.com/yformer/EfficientSAM 官方给的推理代码是CPU版本的,如果想使用GPU推理需要自己修改一下 经过推理测试3090GPU,官方测试…

从字节码角度分析i++与++i的区别

情况一 : 当i与i没有对象接收值时, 没有任何区别 情况二 : 当i与i没有对象接收值时 可以看到 i时, 先把i值10从局部变量表拿到操作数栈(29), 之后执行iinc, 直接修改局部变量表里面的值10修改成11(30), 最后将操作树栈里面的值赋值给i4(33) (由于iinc直接修改的局部变量表里面…

鸿蒙开发-UI-布局

鸿蒙开发-序言 鸿蒙开发-工具 鸿蒙开发-初体验 鸿蒙开发-运行机制 鸿蒙开发-运行机制-Stage模型 鸿蒙开发-UI 鸿蒙开发-UI-组件 鸿蒙开发-UI-组件-状态管理 鸿蒙开发-UI-应用-状态管理 鸿蒙开发-UI-渲染控制 文章目录 前言 一、布局概述 1.布局结构 2.布局元素组成 3.布局分类 …

微信小程序快速入门03

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、生命周期生…