网络基础 【HTTPS】

 💓博主CSDN主页:麻辣韭菜💓

⏩专栏分类:Linux初窥门径

🚚代码仓库:Linux代码练习🚚


💻操作环境: CentOS 7.6 华为云远程服务器


🌹关注我🫵带你学习更多Linux知识
  🔝 

目录

 1. HTTPS  

1.1 什么是加密? 

1.2 为什么要加密? 

2. 常见的加密方式

 2.1 对称加密

 2.2 非对称加密

2.3 数据摘要&&数据指纹 

2.4 数字签名 

 3. 加密方案

        3.1 对称加密方案

3.2 非对称加密方案

3.3 对称加密 + 非对称加密

4. 引入证书 

4.1 CA证书

4.2 在加入CA证书的情况下遇到 MITM 攻击

4.2.1 情况一

 4.2.2 情况二

4.2.3 情况三 

4.2.4 情况四 

最终方案 


 

 1. HTTPS  

 我们前面通过实验 在HTTP中不管是URL传输数据,还是通过正文方式,都是明文传输的。这就导致了中间人都能拿到报文,对报文进行修改。安全的问题非常明显。

基于这样背景 诞生了 HTTPS,HTTPS是在HTTP基础上引入一个加密层。  

1.1 什么是加密? 

 在上面的网络协议栈示意图中,报文层层向下交付,到了传输层和网络层这里就有一个问题。 传输层和网络层属于OS,但是人家OS没有义务给你添加加密算法。下三层人家解决的是数据如何传输的问题。  

所以我们的请求和响应 要想不被中间人 拿到,需要在应用层添加 加密解密层。

 

以前是直接发给OS ,现在有了加密解密层,HTTP的报文先发给加密解密层,然后加密解密层发给OS。给报文加密就变成了密文, 给密文解密 还原成明文。加密也是需要其他的数据来辅助的,而这部分辅助的数据叫做密钥。对于服务器来说也是一样!这就是HTTPS 

那这个SSL 是程序员自己定制吗? 

有公司专门来定制网络安全协议。但是话说,任何网络安全协议都是基于当下是安全的。

为什么这么说? 

如果攻破的成本大于攻破收益,那么就是安全的。反之就是不安全 因为随着计算机硬件的发展 算力得到提升,攻破都是迟早得事。这个世界没有一劳永逸得事!

1.2 为什么要加密? 

前面说过 不加密我们报文就是明文,中间人拿到报文做修改,就比如说 我们在浏览器中下载东西,最后安装完毕才发现不是自己要下载的软件。 

 以前是直接下载链接被篡改成其他软件的下载链接,现在是先下什么 最后才是你想要下的。 

2. 常见的加密方式

 2.1 对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,

特征:加密和解密所用的密钥是相同的。 

常见对称加密算法 

  • AES(高级加密标准):目前最流行的对称加密算法,支持128、192和256位的密钥长度。
  • DES(数据加密标准):较老的加密标准,已被AES取代,只有56位有效密钥长度,容易受到暴力破解攻击。
  • 3DES:基于DES,使用三个56位的密钥,更加安全,但现在逐渐被AES取代。
  • Blowfish:一种替代DES的加密算法,支持不同长度的密钥。

 优点

  • 速度:对称加密算法比非对称加密算法要快很多,适合大量数据的加密。
  • 资源效率:由于算法简单,计算成本低。

 缺点

  • 密钥分发:必须安全地交换密钥,如果密钥泄露,通信的安全性会受到威胁。
  • 密钥管理:随着参与通信的用户数量增加,密钥管理变得更加复杂。

 2.2 非对称加密

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

常见非对称加密算法RSA  DSA  ECDSA

特点:算法强度复杂,安全性依赖于算法于密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

公钥和私钥是配对的,最大的缺点就是运算速度慢。比对称加密要慢很多。

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

也可以反着用 

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

2.3 数据摘要&&数据指纹 

数字摘要 又称为 数字指纹,指通过哈希函数对信息进行运算后生成的一串定长字符串,具有很强的唯一性,数字摘要 并不能加密,而是用于快速判断原始内容是否被修改

摘要常见算法MD5 SHA1 SHA256 SHA512 等,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)

摘要的特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来数据对比

2.4 数字签名 

数字摘要经过加密 就得到了数字签名

 3. 加密方案

        当我们有了 对称加密、非对称加密、数据摘要、数字签名 相关概念 对HTTP协议进行升级 

        3.1 对称加密方案

 密钥都是同一把 那么意味着 客户端的其他人当中间人,也是可以拿到报文的。就算客户端的人没有坏人,但是密钥本身就是明文中间人也是可以拿到密钥的。

这里关于密钥的产生有两种方案:

服务器生成,客户端生成。 

        如果是客户端生成 无疑是加大了服务器的负担,对每个客户的密钥要进行增删改查。

但是的但是 不管是哪一种方案 密钥 本身就是明文传输的。 有人说对密钥也进行加密,如果是这样就变成了 先有鸡还是先有蛋的问题了,一直死循环走不出来。

 密钥 在传输过程中,有可能被 “劫持”

 由此对称加密也不是安全的。

3.2 非对称加密方案

        既然对称加密不是安全的,毕竟加密和解密都是用的同一个密钥,那我们使用非对称加密 密钥是两个 一个公钥 一个私钥

只有 服务器使用非对称加密

服务器 生成公钥和密钥 

公钥交给客户端

使用 公钥 和 私钥 进行加密与解密,也可以使用 私钥 和 公钥 进行加密与解密 

 我们先说使用 公钥 和 私钥 进行加密与解密的方案

利用这种方式 虽然客户端数据经过公钥 加密 变成密文,发给服务器,这个过程是安全的。毕竟只有服务器有私钥

但是的但是,服务器发过来的密文可是用私钥加密的,那么公钥就可以解密。而公钥又是公开的,所以中间人攻击一样也能拿到服务器响应的报文。

只有服务器使用非对称加密方案还是不安全 

那我们让 服务器和客户端都使用 非对称加密。

双方都使用 公钥加密 私钥解密

 这一样一看 感觉是无懈可击,安全的很。但是这样真的就是安全的吗?

如果中间人 攻击,自己也有 公钥 和 私钥 ?

这时我们 假设一下 客户端  和 服务器 交换公钥 ,这时 中间人攻击 劫持它们各自的公钥,中间人把 自己的公钥 给了服务器和客户端。

这时公钥被偷梁换柱了, 客户端和服务器双方浑然不知。

 

那么不管是服务器还是客户端,它们对明文利用公钥进行加密 ,用的都是中间人的公钥。所以双方的密文在中间人这里就明文。 然后中间人获取到信息后,在用它们各自的公钥加密发送给客户端和服务器双方。

 

抛开安全性不说,就双方都使用非对称加密,效率非常低下。

  1. 非对称加密算法强度高,加密与解密时间长
  2. 客户端与服务器都需要存储并管理彼此的公钥,非常麻烦

 这种攻击方式常见吗?
非常常见,且容易上当,可能仅仅是连接一个公共环境下的免费WIFI,亦或是无名基站,个人信息就有可能会泄漏,无论是「对称式加密」、「非对称式加密」,还是后面的「非对称式加密」+「对称式加密」,都无法避免中间人攻击

3.3 对称加密 + 非对称加密

 中间人攻击现在还无法解决,但可以解决使用非对称式加密时的效率问题

服务器先将 公钥 交给客户端 

客户端使用 公钥 加密 密钥 后,交给服务器

因为此时 密钥 是使用服务器的 公钥 加密的,只能使用服务器的 私钥 解密,所以确保了 密钥 传输的安全性

 

 后续直接使用 密钥 进行加密与解密

这种解决方案首先使用非对称式加密保证了 密钥传输时的安全性,确保只有客户端和服务器拥有 密钥,因为 密钥 加密与解密的特点就是 效率高,所以后续在传输数据时,整体效率就会高很多

然而这种方式也是不安全的

上面提出的几种解决方案都存在一个致命问题:客户端和服务器在进行第一次交流时,并不认识对方

这就导致无论是传递 公钥 还是传递 密钥,都无法确保最终到达对端手里的 钥匙 是正确的,也就给中间人制造了一个攻击的好机会

中间人劫持到服务器 公钥 后,将自己的 公钥 交给客户端

中间人通过自己的 私钥 成功解密了客户端的密文,获取了 密钥,然后使用服务器 公钥 重新加密后,将 密钥 交给服务器 

 宏观上来看,客户端和服务器获取了唯一的 密钥,但实际上中间人已经劫持到了 密钥,后面传输数据时,中间人可以轻易解密,获取信息

被攻击的核心原因:客户端无法验证公钥的合法性(客户端不认识服务器),此时就需要一个公平公正的第三方机构来进行认证,确保客户端所连接的服务器是合法的 

4. 引入证书 

4.1 CA证书

在今天,如果想使用 HTTPS 协议,服务器就需要向 CA机构 申请一份 CA证书,证书就如同该服务的身份证,其中包含了 证书申请者信息、公钥信息 等重要信息,服务器在成功申请到证书后,就会将证书交给客户端(也就是浏览器),以进行证书认证和获取 公钥 

 

CA证书 中有该证书的 数字签名,是由 CA机构 使用自己的 私钥 进行加密而形成的密文,其他人都无法进行签名,至于 CA机构 的 公钥,一般浏览器出厂就已经进行了内置 

当客户端获取到服务器的 CA证书 后,会使用 CA机构 的 公钥 对 数字签名 进行解密,获取 数字摘要,同时使用相同的哈希算法,根据证书中的内容,计算出 数字摘要(散列值),与证书中的摘要进行对比,如果摘要一致,就证明证书是正常的,可以使用其中包含的 公钥,否则就证明证书已经被篡改过了,拒绝与网站进行连接(拒绝使用 “公钥”

也就是说,之前单纯的传输服务器 公钥,变成了传输 CA证书,这样是否防止中间人攻击呢? 

4.2 在加入CA证书的情况下遇到 MITM 攻击

4.2.1 情况一

中间人在劫持到 CA证书 后,什么都不做,转交给客户端 

 结果:没有丝毫影响,CA证书仍然是正常的,同时中间人也没有获取到任何信息

 4.2.2 情况二

中间人在劫持到 CA证书 之后,更改其中的 公钥 信息,改为自己的 公钥 

 结果:客户端根据 CA证书 内容进行哈希计算后,得出的 数字摘要 与 CA证书 自带的 数字摘要 并不相同,认为该证书失效,不使用

4.2.3 情况三 

中间人认为情况二失败的关键在于 摘要不一致,于是中间人在修改 公钥 的同时,修改了 数字摘要,并自己生成了一份 数字签名 

结果:客户端无法使用 CA公钥 解密签名,因为这个签名非法

注意: 私钥加密,需要使用公钥解密,但 CA机构 的私钥只有它们自己拥有

4.2.4 情况四 

中间人气急败坏,既然假证书不行,那就直接向 CA机构 申请一份证书,内容为自己的 公钥,即便它能申请到 CA证书,客户端在读取证书内容后,也会立马将证书丢弃,因为证书中包含了服务器的信息,客户端能轻而易举的发现当前证书中的服务器与自己想访问的目标服务器信息不一致 

 结果:客户端识别出证书不是自己想要的,丢弃证书,拒绝连接

 需要明白的是,证书申请比较麻烦,并且证书是有使用时限的,一旦过期,就需要重新申请,这就保证了合法的证书是可靠的,可以根据其中的内容判断是否丢弃

最终方案 

 在「非对称式加密」+「对称式加密」的基础上,引入「CA证书」,确保客户端获取到的是安全、可靠的 公钥,再使用该 公钥 加密 密钥,形成密文,该密文只能由服务器使用自己的 私钥 解密,获取 密钥,进行数据传输

只要公钥是安全可靠的,那么服务器在收到密文时,得到的密钥也是安全可靠的 

客户端通过 CA证书 获取到服务器的 公钥 

 使用 公钥 向服务器发送 密钥

 

 双方使用 密钥 进行数据传输

有了「非对称式加密」+「对称式加密」+「CA证书」的解决方案,可以充分保证我们在上网冲浪时的安全性,这也就是为什么大多数钓鱼网站仍在使用 HTTP 协议,因为这样可以跳过整个安全检测方案 

 证书 扮演着重要角色,在访问那些 证书 过期,或者是没有 证书 的网站时需要提高警惕

如何成为中间人?

ARP 欺骗、ICMP 攻击、假 WIFI、假网站

 

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

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

相关文章

LabVIEW提高开发效率技巧----调度器设计模式

在LabVIEW开发中,针对多任务并行的需求,使用调度器设计模式(Scheduler Pattern)可以有效地管理多个任务,确保它们根据优先级或时间间隔合理执行。这种模式在需要多任务并发执行时特别有用,尤其是在实时系统…

软件验证与确认实验一:静态分析

目录 1. 实验目的及要求.................................................................................................... 3 2. 实验软硬件环境.................................................................................................... 3 …

JAVA运用中springBoot获取前端ajax提交参数方式汇总

本篇文章主要讲解springboot获取前端提交的参数信息,后端进行接受的常见方法汇总,通过本篇文章你可以快速掌握对表单和连接参数获取的能力。 作者:任聪聪 日期:2024年10月5日 一、delete、get等url参数获取方式 前台提交&#xf…

数字图像处理:空间域滤波

1.数字图像处理:空间域滤波 1.1 滤波器核(相关核)与卷积 图像上的邻域计算 线性空间滤波的原理 滤波器核(相关核)是如何得到的? 空间域的卷积 卷积:滤波器核与window中的对应值相乘后所有…

【Echarts】折线图和柱状图如何从后端动态获取数据?

🚀个人主页:一颗小谷粒 🚀所属专栏:Web前端开发 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1.1 前端数据分析 1.2 数据库表分析 1.3 后端数据处理 1.4 前端接收数据 继上一篇文章&…

MySQL 查询优化器

文章目录 控制查询计划optimizer_prune_leveloptimizer_search_depth 优化器参数优化器提示索引提示成本模型server_costcost_name engine_cost 控制查询计划 https://dev.mysql.com/doc/refman/8.4/en/controlling-query-plan-evaluation.html 在执行SQL前会根据优化器选择执…

C++_智能指针详解

什么是智能指针?为什么要有智能指针?到目前为止,我们编写的程序所使用的对象都有着严格定义的生命周期。比如说,全局对象在程序启动时分配,在程序结束时销毁;再比如说局部static对象在第一次使用前分配&…

electron-builder 首次执行报错问题解决

假日想研究一下 react electron 的使用,结果发现首次打包疯狂报错,研究了一下之后才发现是第一次的话 electron-builder 会从外面下载依赖包到我们系统中,由于某种力量导致压缩包无法下载或者是下载过慢导致失败,要解决其实也简单…

初学51单片机之I2C总线与E2PROM二

总结下上篇博文的结论: 1:ACK信号在SCL为高电平期间会一直保持。 2:在字节数据传输过程中如果发送电平跳变,那么电平信号就会变成重复起始或者结束的信号。(上篇博文的测试方法还是不能够明确证明这个结论&#xff0…

【C++】入门基础介绍(上)C++的发展历史与命名空间

文章目录 1. 前言2. C发展历史2. 1 C版本更新特性一览2. 2 关于C23的一个小故事: 3. C的重要性3. 1 编程语言排行榜3. 2 C在工作领域中的应用 4. C学习建议和书籍推荐4. 1 C学习难度4. 2 学习书籍推荐 5. C的第一个程序6. 命名空间6. 1 namespace的价值6. 2 namespace的定义6. …

首届中美可持续发展峰会在加州圆满举行,引领国际绿色发展新方向

现场嘉宾与(部分)与会人员大合影 2024年8月18日,由美国领创商业联盟(Youth Entrepreneur Business Alliance, YEBA)主办的首届中美可持续发展峰会(Sino-American Symposium on Sustainable Development)在加州森林湖市(Lake Forest)盛大举行。此次峰会吸引了数百名来自中美两国…

HTML+CSS之表格(15个案例+代码+效果图+素材)

目录 1.table标签的border属性 案例:制作一个带边框的表格 1.代码 2.效果 2.table标签的cellspacing属性 案例:制作一个带边距的表格 1.代码 2.效果 3.table标签的cellpadding属性 1.代码 2.效果 4.table标签的width和height属性 案例:指定宽高的表格 1.代码 2.效果 5.table标签…

全新芒果YOLOv10改进135:最新注意力机制EMA:即插即用,具有跨空间学习的高效多尺度注意力模块,ICCASSP 2023

💡本篇内容:芒果YOLOv10改进135:最新注意力机制EMA:即插即用,具有跨空间学习的高效多尺度注意力模块,ICCASSP 2023 **具有跨空间学习的高效多尺度注意力模块EMA | 即插即用 该模块通常包括多个并行的注意力子模块,每个子模块关注于输入数据的不同尺度或分辨率。这些子模块…

HTML+CSS表单控件(11个案例+代码+效果图)

目录 单行文本框 (text) 案例:制作一个单行文本框 1.代码 2.效果 密码输入框 (password) 案例:制作密码输入框 1.代码 2.效果 单选按钮 (radio) 案例:制作单选按钮 1.代码 2.效果 复选框 (checkbox) 案例:制作一个复选框 1.代码 2.效果 普通按钮 (button) 案例:制作一个普通按钮…

Java毕业设计实战项目之基于SSM框架的民宿预定系统

项目技术架构: 该SSMVue的民宿预定系统,后端采用SSM架构,前端采用VueElementUI实现页面的快速开发,并使用关系型数据库MySQL存储系统运行数据。本系统分为三种角色,分别是系统管理员,用户,房主…

RD-Agent Windows安装教程

RD-Agent Windows安装教程 QuantML QuantML 2024年09月23日 18:30 Content RD-Agent 是微软亚洲研究院推出的一款自动化研究与开发工具,能够通过LLMs自动构建因子和策略,相关介绍见我们之前的文章:RD-Agent :自动化Quant工厂 然…

10.5二分专练,二分边界情况,+1不加1的判断,方向判断,各种DEBUG

5 https://leetcode.cn/problems/minimum-speed-to-arrive-on-time/submissions/570242512/ 就是说总时间是 前n-1量汽车的运行时间,向上取整,然后再加上最后一辆列车的运行时间 最快的话是需要n-1个小时 搜索空间就是时速,左边界是1&#x…

windows中下载、安装、配置JDK/JDK环境配置/Java配置环境变量/Linux中安装配置JDK环境

JDK下载(官网)、安装、配置(包括系统、idea、eclipse)一篇就够了 1、问题概述? Java开发者必须掌握的JDK下载、安装、配置过程。 包括在Eclipse及IDEA中的配置使用 2、下载JDK 【注册Oracle官网账号】 下载的前天是注册orcle官网账号,作为开发者,这个必须有,随时关注…

VBA信息获取与处理第三个专题第三节:工作薄在空闲后自动关闭

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

Web安全 - 路径穿越(Path Traversal)

文章目录 OWASP 2023 TOP 10导图定义路径穿越的原理常见攻击目标防御措施输入验证和清理避免直接拼接用户输入最小化权限日志监控 ExampleCode漏洞代码:路径穿越攻击案例漏洞说明修复后的安全代码代码分析 其他不同文件系统下的路径穿越特性Windows系统类Unix系统&a…