详解HTTPS加密工作过程

🚗🚗🚗今天给大家分享的是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.mzph.cn/news/620840.shtml

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

相关文章

PDCA/绩效管理活动

现代绩效管理理论认为,绩效管理活动是一个连续的过程,是指管理者用来确保自己下属员工的工作行为和工作产出与组织的目标保持一致的手段及过程。人们通常用一个循环过程来描述绩效管理的整个过程。我们认为,一个组织的员工绩效管理活动由四个…

NUS CS1101S:SICP JavaScript 描述:一、使用函数构建抽象

原文:1 Building Abstractions with Functions 译者:飞龙 协议:CC BY-NC-SA 4.0 心灵的行为,其中它对简单的想法施加其力量,主要有以下三种:1.将几个简单的想法组合成一个复合的想法,从而形成所…

【深度学习】RTX2060 2080如何安装CUDA,如何使用onnx runtime

文章目录 如何在Python环境下配置RTX 2060与CUDA 101. 安装最新的NVIDIA显卡驱动2. 使用conda安装CUDA Toolkit3. 验证onnxruntime与CUDA版本4. 验证ONNX需求版本5. 安装ONNX与onnxruntime6. 编写ONNX推理代码 如何在Python环境下配置RTX 2060与CUDA 10 RTX 2060虽然是一款较早…

Ps:何时需要转换为智能对象

智能对象 Smart Objects提供了广泛的灵活性和控制能力,特别是在处理复杂的合成、重复元素或需要非破坏性编辑的项目中。 ◆ ◆ ◆ 何时需要转换为智能对象 1、当需要对图像进行缩放、旋转等变换时。 涉及到的 Photoshop 命令包括:变换、自由变换、操控…

windows下如何搭建Yapi环境

今天使用YApi时发现原网址无法访问。这下只能本地部署了(官方文档)。 第一步:安装node.js 获取资源 nodejs: https://nodejs.org/en/downloadLinux安装yum install -y nodejs查看node版本node -v查看npm版本npm -v第二步:安装mo…

【论文阅读笔记】MobileSal: Extremely Efficient RGB-D Salient Object Detection

1.介绍 MobileSal: Extremely Efficient RGB-D Salient Object Detection MobileSal:极其高效的RGB-D显著对象检测 2021年发表在 IEEE Transactions on Pattern Analysis and Machine Intelligence。 Paper Code 2.摘要 神经网络的高计算成本阻碍了RGB-D显着对象…

Vue 自定义仿word表单录入之日期输入组件

因项目需要&#xff0c;要实现仿word方式录入数据&#xff0c;要实现鼠标经过时才显示编辑组件&#xff0c;预览及离开后则显示具体的文字。 鼠标经过时显示 正常显示及离开时显示 组件代码 <template ><div class"paper-input flex flex-col border-box "…

Matlab字符识别实验

Matlab 字符识别OCR实验 图像来源于屏幕截图&#xff0c;要求黑底白字。数据来源是任意二进制文件&#xff0c;内容以16进制打印输出&#xff0c;0-9a-f’字符被16个可打印字符替代&#xff0c;这些替代字符经过挑选&#xff0c;使其相对容易被识别。 第一步进行线分割和字符…

AI编程可视化Java项目拆解第一弹,解析本地Java项目

之前分享过一篇使用 AI 可视化 Java 项目的文章&#xff0c;同步在 AI 破局星球、知乎、掘金等地方都分享了。 原文在这里AI 编程&#xff1a;可视化 Java 项目 有很多人感兴趣&#xff0c;我打算写一个系列文章拆解这个项目&#xff0c;大家多多点赞支持~ 今天分享的是第一…

alibaba学习笔记03(小滴课堂)

自定义Ribbon负载均衡策略实战 启动3个视频服务和一个订单服务&#xff1a; 我们可以看到它是随机调用的。 也可以使用其他负载均衡策略。 讲解新一代负载均衡组件feign介绍 这种方式去写死接口肯定是不妥当的。 于是我们使用feign负载均衡组件&#xff1a; 改造微服务 集成F…

【Linux】 系统目录结构

进入到根目录 cd /ls目录名具体作用/存放系统系统相关的目录文件/boot放置linux系统内核文件和启动时用到的一些引导文件/home包含linux系统上各用户的主目录&#xff0c;子目录名称默认以该用户名命名/root系统管理员root的家目录/bin包含常用的命令文件&#xff08;如ls 等&a…

CBA业务架构师认证考试含金量

CBA业务架构师认证考试的含金量主要体现在以下几个方面&#x1f447; 1️⃣权威性 &#x1f48e;CBA业务架构师是业务架构师协会提供了一项国际认证计划&#xff0c;该计划可以衡量业务架构师的能力&#xff0c; 并向证明公认的熟练程度的个人授予认证业务架构师(Certified Bus…

vue前端开发自学,祖孙多层级组件嵌套关系数据传输

vue前端开发自学,祖孙多层级组件嵌套关系数据传输&#xff01;官方提供了一个解决方案&#xff0c;就是&#xff0c;在根组件内使用provide,哪个子孙组件想调用这个数据&#xff0c;就可以inject接收就行了。虽然是方便了&#xff0c;但是这个有点要求&#xff0c;就是只能自上…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(3)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

数据操作、数据预处理

1.数据类型&#xff1a; 2.数组元素操作&#xff1a; 3.数据预处理&#xff1a; import os import pandas as pd import numpy as np#创建csv文件并写入数据 os.makedirs(os.path.join(.., data), exist_okTrue) data_file os.path.join(.., data, house_tiny.csv) with open…

如何在电脑上免费更改 PDF 格式文档的字体大小?

对于需要编辑或修改的 PDF 文件来说&#xff0c;更改其字体大小是一个非常常见且必要的工作。虽然 Adobe Acrobat Pro DC 等专业的 PDF 编辑软件可以帮助您完成此任务&#xff0c;但他们通常都需要昂贵的恢复。幸运的是&#xff0c;有许多免费的 PDF 编辑工具可供选择。在本文中…

【WPF.NET开发】流文档

本文内容 什么是流文档&#xff1f;流文档类型创建流内容与流相关的类内容架构自定义文本 流文档旨在优化查看和可读性。 流文档根据运行时变量&#xff08;例如&#xff0c;窗口大小、设备分辨率和可选的用户首选项&#xff09;来动态调整和重新排列内容&#xff0c;而不是设…

开源数据库系统OpenGauss本地部署

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

1.5矩阵元素的引用

通过下标来引用矩阵的元素 A(3, 2)表示A矩阵第3行第2列的元素。 >> arr [1,2,3;4,5,6]; >> arr(4, 5) 10arr 1 2 3 0 04 5 6 0 00 0 0 0 00 0 0 0 10>> 如果引用元素超过矩阵的大小将自…

LeetCode讲解篇之47. 全排列 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个nums中元素是否被访问的数组used、记录还需要递归的深度deep 遍历nums 如果当前元素被访问过或者当前元素等于前一个元素且前一个元素没被访问过就跳过该次遍历 否则选择当前元素&#xff0c;继续递归 直到…