当前位置: 首页 > news >正文

【网络世界】HTTPS协议

目录

🌈前言🌈

📁 HTTP缺陷

📁 HTTPS

 📂 概念

 📂 加密

 📂 加密方式

📁 中间人攻击

📁 CA机构和证书

 📂 数据摘要(数据指纹)

 📂 数字签名

 📂  CA机构和证书

📁 完整工作流程

📁 总结


🌈前言🌈

        本期【网络世界】将介绍应用层协议HTTPS的理论知识,通过了解HTTP缺陷,引入HTTPS是如何解决,以及在解决过程中遇到的问题,如何解决这些问题的。其中不乏一些有趣的知识,例如中间人攻击等。

        如果你对HTTP协议还不是很了解,或者遗忘部分,可以通过下面这篇博文来快速阅览学习:

【网络世界】HTTP协议-CSDN博客

📁 HTTP缺陷

        HTTP协议作为互联网上应用最为广泛的一种协议,用于将服务器的超文本数据传输到客户端。然而,HTTP协议缺乏一些安全机制,这就会被有心之人利用。        

        1. 通信内容不加密,存在窃听的风险。

        2. 无法验证数据的完整性。

        3. 不验证用户身份,存在伪装风险。

        4. 缺乏会话管理和状态保持机制。

        针对第四条,我们在HTTP学习过程中知道,通过HTTP Cookie 和 Session技术解决。但是前面三条,单纯使用HTTP是无法解决的。

        因此,就引入了HTTPS协议,简单理解就是在HTTP协议上加入了一个对数据进行加密的过程,两台主机协商对数据如何加密,如何解密,确保传输过程中,不会有人对数据有所更改。

📁 HTTPS

 📂 概念

        HTTPS(安全超文本传输协议),是一个用于计算机网络上进行安全通信的传输协议。基于HTTP协议进行开发,通过引入SSL(安全套接层)和TSL(安全传输层)来加密客户端和服务器之间的通信数据。

        HTTPS协议的特点:加密通信;身份认证;端口采用443(HTTP采用80);

 📂 加密

        HTTP协议中传输的都是明文,为了保护数据不被篡改,因此需要加密技术来保护。

        例如,谍战影片里面的密码本,我们传达信息时,只有通过母本,才能知道对方想要表达或想要对方表达的信息。

        因此,我们有了简单的理解,加密就是将明文(要传输的数据)进行一系列转换,变成密文。解密就是将密文在通过一些列转换,还原成明文。

        在加密和解密过程中,需要一个或多个中间的数据进行辅助,这个中间数据就叫做密钥

 📂 加密方式

对称加密

        采用单钥密码系统的加密方式,同一个密钥可以用作数据的加密和解密过程。

        特征:数据加密和解密的的密钥是相同的。

        特点:算法公开,计算量小,加密速度快,加密效率不高。

一个很简单的对称加密,按位异或

假设 明文a = 1234 ,秘钥key = 8888

则加密数据 a ^ key,得到密文 b = 9834

接收端针对密文9384再次异或,得到原来的明文1234

非对称加密

        需要两个密钥来进行加密和解密,一个是公开密钥(公钥),另一个是私有密钥(私钥)。

        特点:算法强度复杂,安全性依赖于算法与密钥。但是算法复杂,导致加密解密速度比对称加密慢。

        公约和私钥是配对的,可以通过公钥加密,私钥解密;也可以私钥加密,公钥解密。

        公钥加密,私钥解密:只有少数人能解密。

        私钥加密,公钥解密:只有少数人能加密。

        A 要给 B 一些重要的文件, 但是 B 可能不在。

         于是 A 和 B 提前做出约定: B 说: 我桌子上有个盒子,然后我给你一把锁, 你把文件放盒子里用锁锁上, 然后我回头拿着钥匙来开锁取文件。

        在这个场景中, 这把锁就相当于公钥, 钥匙就是私钥. 公钥给谁都行(不怕泄露), 但是 私钥只有 B 自己持有. 持有私钥的人才能解密.

📁 中间人攻击

        学习了两种加密技术,HTTPS是不是就是采用了其中的一种技术呢?单纯采用一种方法,都容易遭到中间人攻击,那么什么是中间人攻击?

        中间人攻击(MIMT)指的是攻击者利用技术手段,插入自己在通信的两个端点间,欺骗双方,使他们误以为他们直接通信。

        这里就不在给出单纯使用对称加密方式的图了,原理都是一样的,通信双方在实际通信之前要进行加密协商传递一个密钥,来确保双方能使用这个密钥来进行加密解密。

        此外,单纯使用非对称加密还有一个劣势就是加密解密速度慢,因此,我们就可以知道不能单纯使用对称加密方式 或 非对称加密方式。

        那么对称加密和非对称加密方式混合使用呢?是不是可以解决问题。

        上图,细心的人可能看出,不对呀,返回公钥S途中,中间人发起来攻击,劫持了公钥S,再拿公钥S截获密钥key,之后通信双方的数据还是能被篡改。

        我们可以看出,不管是那种方式,都能被中间人攻击。

        我们从攻方的角度来看,我们可以看出,通信双方没有将要加密解密的密钥加密呀,所以我可以拿到这个密钥,来进行加密解密。

        因此,我们防守就需要修补这个漏洞,即将传送的密钥进行保护,确保通信双方能识别出这个数据有没有被修改。

📁 CA机构和证书

 📂 数据摘要(数据指纹)

        通过单项散列函数(Hash函数)来得到一个字符串,通过对比字符串,来判断数据是否被修改。数据摘要确保修改后的数据再次进行摘要时,得到的字符串与之前的字符串相差很大。

        注意的是,数据摘要是用来判断数据是否被修改,而不是用来加密数据的。

        例如我们对数据data进行摘要,将摘要放在数据的头部,此后,通信双方就取出摘要,然后通过相同的Hash函数再次对数据进行摘要,对比两个摘要是否一样,如果不一样,就判断数据被修改,丢弃该报文。

 📂 数字签名

        对数据摘要进行加密,得到的就是数子签名。

 📂  CA机构和证书

        CA机构(Certificate Authority,证书颁发机构)是一种信任第三方实体,它负责验证和签发数字证书。数字证书是用于在Internet上验证通信方身份的一种机制,通常被用于加密通信和确保数据完整性。

        只有CA机构才能进行数字签名,办法证书(带数字签名的服务器信息)。CA机构有一对公钥和私钥,CA机构对申请者的信息进行签名,来确保申请者身份的合法性。

服务器端:

        服务端在使用 HTTPS 前,需要向 CA 机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行 了,证书就如身份证,证明服务端公钥的权威性。

客户端:

        • 当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的).

        • 判定证书的有效期是否过期

        • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).

        • 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一 个 hash 值(称为数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对 比 hash1 和 hash2 是否相等. 如果相等, 则说明证书是没有被篡改过的。

        这里有人问了?为什么一个证书就能就觉问题了。我们看一下证书的细节

        CA机构采用私钥加密,公钥解密,即只有CA机构才能加密,其他人只能解密。

        这次我们在站在攻方的角度,尝试去修改。

        (1). 修改数据:你不是公钥解密嘛,我也可以拿到你的公钥,我解密得出你的数据,进行修改。发送给客户端。客户端拿到证书,用CA机构的公钥解密数据,也将数字签名解密,得到数据摘要,然后对解出来的数据进行摘要,发现摘要不一致,发现数据被篡改,丢弃该报文。

        (2). 修改摘要:好像也没有什么意义。修改摘要,客户端将数据再行摘要,发现摘要不一致,认为数据被篡改,丢弃该报文。

        (3). 全部修改:我即修改数据,也修改签名,因为可以用公钥解密,再用自己的密钥加密。但是客户端不认,客户端会在本地缓存认证的CA机构的公钥,如果发现用CA机构的公钥解不开数据,就认为数据被篡改。

        CA机构只会开放公钥,CA机构的私钥会自己保管好,别人是拿不到的,也就无法再次对数据进行加密。

        因此,攻方手段尽失,无法在修改任何数据了,即使修改了,客户端也能发现并丢弃了。

        有了证书后,证书内包含了服务器的公钥,客户端再生成自己的密钥,用服务器的公钥加密密钥,然后传输给服务器,此后,通信双方就是用客户端生成的密钥进行通信,即保证了安全性,也保证了性能。

📁 完整工作流程

        有了证书的存在,通信双方再也不怕服务器的公钥被修改了,验证了服务器公钥的权威性和合法性。

  HTTPS 工作过程中涉及到的密钥有三组.:

        第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在形成 CSR 文件 与申请证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同 时持有对应的公钥). 服务器在客户端请求时,返回携带签名的证书. 客户端通过这个公 钥进行证书验证, 保证证书的合法性,进一步保证证书中携带的服务端公钥权威性。

        第⼆组(非对称加密): 用于协商生成对称加密的密钥. 客户端用收到的 CA 证书中的公钥 (是可被信任的)给随机生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解 密获取到对称加密密钥。

        第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

📁 总结

        本期【网络世界】介绍了什么是HTTPS协议,是如何对HTTP缺陷进行修补,学习了什么是中间人攻击,以及HTTPS是如何解决中间人攻击的。此外,也了解CA机构,证书的概念。

        以上,就是本期【网络世界】的主要内容了,如果感觉本期内容对你有帮助,欢迎点赞,收藏,关注 Thanks♪(・ω・)ノ

相关文章:

【网络世界】HTTPS协议

目录 🌈前言🌈 📁 HTTP缺陷 📁 HTTPS 📂 概念 📂 加密 📂 加密方式 📁 中间人攻击 📁 CA机构和证书 📂 数据摘要(数据指纹) &…...

根据空域图信息构造飞机航线图以及飞行轨迹模拟matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 航路网络建模 4.2 航线图构建 4.3 飞行轨迹模拟的具体步骤 5.完整程序 1.程序功能描述 空域图是指航空领域中的一种图形表示方式,它涵盖了空中交通管理所需要的各种信息&a…...

llama-factory 系列教程 (五),SFT 微调后的模型,结合langchain进行推理

背景 微调了一个 glm4-9B的大模型。微调后得到Lora权重,部署成vllm 的API,然后通过langchain接入完成相关任务的推理。 关于SFT 微调模型的部分就不做介绍了,大家可以参考前面的文章,将自己的数据集 在 Llamafactory 的 dataset…...

hive 中编写生成连续月sql

记录一下 sql 编写生成从一个确定的起始月份到当前月份的连续月份序列 SELECT substr(add_months(table1.start_dt,table2.pos),1,4) AS INDICT_YEAR,substr(add_months(table1.start_dt,table2.pos),1,7) AS INDICT_MON FROM (SELECT 2024-01-01 AS start_dt,substr(CURRE…...

前端开发实用的网站合集

文章目录 一、技能提升篇vueuseJavaScript中文网JavaScript.infoRxJsWeb安全学习书栈网码农之家 二、UI篇iconfont:阿里巴巴矢量图标库IconPark3dicons美叶UndrawError 404摹克 三、CSS篇You-need-to-know-cssCSS TricksAnimate.cssCSS ScanCSS Filter 四、颜色篇中…...

蓄势赋能 数智化转型掌舵人百望云杨正道荣膺“先锋人物”

2024年,在数据与智能的双涡轮驱动下,我们迎来了一个以智能科技为核心的新质生产力大爆发时代。在数智化浪潮的推动下,全球企业正站在转型升级的十字路口。在这个充满变革的时代,企业转型升级的道路充满挑战,但也孕育着…...

(七)前端javascript中的函数式编程技巧2

函数式编程范式的技巧 迭代算法-可以替代for in let count 10;while (count--) {console.log(count); }斐波拉契的实现 function fabci(n) {console.log("🚀 ~ fabci ~ n:", n);if (n 1 || n 2) {return 1;}return fabci(n - 1) fabci(n - 2);}cons…...

LeetCode热题 翻转二叉树、二叉树最大深度、二叉树中序遍历

目录 一、翻转二叉树 1.1 题目链接 1.2 题目描述 1.3 解题思路 二、二叉树最大深度 2.1 题目链接 2.2 题目描述 2.3 解题思路 三、二叉树中序遍历 3.1 题目链接 3.2 题目描述 3.3 解题思路 一、翻转二叉树 1.1 题目链接 翻转二叉树 1.2 题目描述 1.3 解题思路 根…...

DNS查询服务器的基本流程以及https的加密过程

DNS查询服务器的基本流程,能画出图更好,并说明为什么DNS查询为什么不直接从单一服务器查询ip,而是要经过多次查询,多次查询不会增加开销么(即DNS多级查询的优点)? 用户发起请求:用户…...

后台管理系统(springboot+vue3+mysql)

系列文章目录 1.SpringBoot整合RabbitMQ并实现消息发送与接收 2. 解析JSON格式参数 & 修改对象的key 3. VUE整合Echarts实现简单的数据可视化 4. List<HashMap<String,String>>实现自定义字符串排序(key排序、Val…...

Android经典面试题之Kotlin中 if 和 let的区别

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在Kotlin中,if和let虽然有时候用来处理相似的情景,但它们实际上是用于不同的场景并具有不同的性质。下面我们来详细对比…...

python inf是什么意思

INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的范围(或者说超过了 double 类型的值)。例如,当用 0 除一个整数时便会得到一个1.#INF / inf值;相应的,如果…...

Cursor搭配cmake实现C++程序的编译、运行和调试

Cursor搭配cmake实现C程序的编译、运行和调试 Cursor是一个开源的AI编程编辑器,开源地址https://github.com/getcursor/cursor ,它其实是一个集成了Chat-GPT的VS Code。 关于VS Code和VS的对比可以参考这篇文章VS Code 和 Visual Studio 哪个更好&…...

C#-了解ORM框架SqlSugar并快速使用(附工具)

目录 一、配置 二、操作步骤 1、根据配置映射数据库对象 2、实体配置 3、创建表 4、增删改查 增加数据 删除数据 更新数据 查询数据 5、导航增删改查 增加数据 删除数据 更新数据 查询数据 6、雪花ID 三、工具 SqlLite可视化工具 MySQL安装包 MySQL可视化…...

巴黎奥运会 为啥这么抠?

文|琥珀食酒社 作者 | 朱珀 你是不是挺无语的 这奥运会还没有开始呢 吐槽大会就停不下来了 接近40度的高温 公寓没有空调 奥运巴士也没空调 连郭晶晶老公霍启刚 这种见惯大场面的也破防了 你可能会问 好不容易搞个奥运会 干嘛还要抠抠搜搜的呀 在咱们看…...

Python日期和时间处理库之pendulum使用详解

概要 在处理日期和时间时,Python 标准库中的 datetime 模块虽然功能强大,但有时显得过于复杂且缺乏一些便捷功能。为了解决这些问题,Pendulum 库应运而生。Pendulum 是一个 Python 日期和时间处理库,它在 datetime 模块的基础上进行了扩展,提供了更加友好的 API 和更多的…...

如何通过 CloudCanal 实现从 Kafka 到 AutoMQ 的数据迁移

01 引言 随着大数据技术的飞速发展,Apache Kafka 作为一种高吞吐量、低延迟的分布式消息系统,已经成为企业实时数据处理的核心组件。然而,随着业务的扩展和技术的发展,企业面临着不断增加的存储成本和运维复杂性问题。为了更好地…...

详解Qt 之QPainterPath

文章目录 前言QPainterPath 与 QPainter 的区别QPainterPath 的主要函数和成员成员函数构造函数和析构函数路径操作布尔运算几何计算 示例代码示例 1:绘制简单路径示例 2:使用布尔运算合并路径示例 3:计算路径长度和角度 更多用法... 总结 前…...

深入理解Apache Kylin:从概念到实践

深入理解Apache Kylin:从概念到实践 引言 Apache Kylin 是一个分布式分析引擎,专为在大规模数据集上进行快速多维分析(OLAP)设计。自2015年开源以来,Kylin 已经成为许多企业在大数据分析领域的首选工具。本文将从概念…...

vue3框架Arco Design输入邮箱选择后缀

使用&#xff1a; <a-form-item field"apply_user_email" label"邮箱&#xff1a;" ><email v-model"apply_user_email" class"inputborder topinputw"></email> </a-form-item>import email from /componen…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...