【计算机网络】HTTPS

news2024/10/12 8:02:31

文章目录

  • 1. HTTPS的概念
  • 2. 加密
    • 常见的加密方式
      • 对称加密
      • 非对称加密
  • 3. HTTPS的工作过程的探究
    • 方案1 —— 只使用对称加密
    • 方案2 —— 只使用 非对称加密
    • 方案3 —— 双方都是用非对称加密
    • 方案4 —— 非对称加密+对称加密
      • 中间人攻击
      • 引入证书
      • CA认证
      • 理解数据签名
    • 方案5 —— 非对称加密 + 对称加密 + 证书认证
      • 1. 验证证书的合法性
      • 2. 客户端在证书中提取公钥

1. HTTPS的概念

HTTPS也是一个应用层协议,在HTTP协议基础上引入加密层


由于HTTP协议内容都是按照文本形式 明文传输的,就导致在传输过程中出现一些篡改的情况

报文在传送时,有效载荷是明文传送的,容易泄露
在应用层和传输层之间 添加 软件层 ,一般称为 SSL /TLS

SSL/TLS 本质就是 HTTP的握手协商、加密解密


所以此时的数据交给 传输层的都是经过加密的


远端主机也是要进行通信的
转而将数据交给远端的HTTP
通过加一层软件层,就可以在协议栈中添加 加密 解密 功能
网络中的实际报文 一定是被加密的


HTTP 加上 SSL/TLS 称之为 HTTPS

2. 加密

加密就是把明文 进行一系列转换 生成为密文
解密 就是把 密文再进行一系列变换,还原成明文

在这个加密和解密的过程中,需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥


常见的加密方式

对称加密

采用 单钥 密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密
也称为 单秘钥加密,特征:加密和解密所用的密钥是相同的
特点:算法公开、计算量小、加密速度快、加密效率高

非对称加密

用两个密钥来进行加密和解密,这两个密钥是公开密钥私有密钥

公钥:可以向全网公开
私钥:只能自己拥有

用公钥加密,只能用私钥解密
用私钥加密,只能用公钥解密

因为公钥是公开的,所以所有人都可以使用公钥来进行 加密和解密

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

3. HTTPS的工作过程的探究

方案1 —— 只使用对称加密

若通信双方都各自持有同一个密钥,并且没有别人知道,这两方的通信安全当然是可以保证的
(除非密钥被破解)

即使黑客将数据截获,但是由于黑客并不知道密钥是啥,所以就没办法解密,也就不知道请求中的内容


如何保证客户端和服务端双方用同一个密钥?
若内置,则内置到windows操作系统还是浏览器中,无论是哪一个,则黑客都有一定渠道获取到


若刚开始时将密钥传给服务器,服务器就知道了对应的密钥了,双方再用密钥做加密
将密钥 经过客户端发送给服务器 ,无法保证密钥本身的安全
所以该方案是不安全的

方案2 —— 只使用 非对称加密

当使用公钥 加密, 使用私钥解密时,就算让黑客将数据截获,也没有关系,因为只有私钥才能解密
似乎看起来是安全的


(私钥加密 ,公钥解密)
若服务器用它的私钥数据 加密 传给浏览器,浏览器就可以用公钥解密它,公钥被全网公开
若这个公钥 被人劫持了,则他也能用该公钥 解密 服务器传来的消息
所以该方案也是不安全的

方案3 —— 双方都是用非对称加密

服务器拥有公钥S和私钥S1,客户端拥有公钥C和公钥C1
客户端和服务器在通信之前,交换下自己的公钥
客户端把自己的公钥 直接发给服务器,服务器就知道了客户端的公钥C
服务器再把自己的公钥 直接发给客户端,客户端就知道了服务器的公钥S


若客户端给服务器发消息,用公钥S加密,只有服务器能解密


若服务器给客户端发消息,则用公钥C进行加密


这种做法看似是安全的,但是存在效率低下的问题(非对称加密速度比较慢,而且双方都使用非对称加密就更慢了)
但依旧有安全的问题

方案4 —— 非对称加密+对称加密

服务器采用非对加密解密,客户端采用对称加密解密
服务器拥有公钥S和私钥S1
客户端发起HTTP请求,服务器 在响应
请求和响应都是明文的
服务器响应时,给客户端推送服务器端的公钥S


假设客户端形成对称秘钥C
通过 对称秘钥C和 推送公钥S 形成 一段密文
将加密后的数据推送给服务器端


服务器端再用自己的私钥S1 进行解密,形成对称密钥C
通过对称秘钥C来完成对称加密,保证双方数据的数据安全
但依旧有安全问题

中间人攻击

以方案四为例
简称 MITM 攻击


客户端获取到公钥S后, 客户端形成对称秘钥C 用服务器端给客户端的公钥S加密
中间人即使 窃取数据,中间人确实 无法解出 客户端形成的密匙C


M表示中间人
服务器端 具有 非对称加密的公钥S和私钥S1
中间人 具有 公钥M和私钥M1


客户端先请求,然后服务器响应,服务器向客户端发送公钥S

当服务器把自己的公钥推送给客户端时,中间人截获
将 S从报文中 拿出来保存好,并将中间人自己的公钥M填进去

将新的报文转发给客户端,因为客户端请求的服务器端,所以就默认是服务器端发送的报文
客户端得到公钥M,客户端并不知道公钥被更换过


客户端就正常运行,公钥M与客户端形成的对称秘钥X 结合成 加密报文
并将加密报文推送给中间人,此时就可使中间人对应的私钥M1 对加密报文解密
使中间人获得客户端的对称秘钥X


获取到客户端的对称秘钥X后,在与服务器的公钥S结合,重新形成 新的加密报文
再将新的加密报文 推送给服务器
服务器 只觉得给 客户端 推送公钥S,就应该返回 带有公钥S的加密报文
服务器依然进行解密,也获得了客户端的 对称秘钥 X


总结:
中间人攻击,核心原因是什么?
客户端无法验证公钥的合法性

引入证书

给别人提供网络服务的服务端,本身是否为合法的,并不由它自己说了算,
要引入一张权威的、第三方的机构来对服务端做认证

如:你是一个餐厅的老板,餐厅做的菜是否符合食品安全,你是不知道,就算你说好的,别人凭什么相信你
所以必须去政府的相关单位,获得经营许可证,获得了该证,食品安全就有了一点保证
所以此时别人相信该餐厅的食品安全,是因为相信给这个餐厅认证的食品安全部门

CA认证

CA机构是 互联网标准化组织,以及整个网络标准化组织 共同筹建的 机构
对全国范围内所有对应的 服务器进行认证,颁发一个电子证书后,服务器才能被信任

要想使用 HTTPS,就必须在CA机构中认证,以获取到CA证书
若不认证,则 浏览器会弹窗,链接是不安全的,导致客户不相信该网站


数字证书本质就是数据

理解数据签名

对大文本进行摘要,再对摘要的信息进行加密 即 数据签名

将文本经过哈希散列,形成散列值
特定CA证书 的私钥 对 散列值进行加密 形成 签名

将原始的文本和签名 结合,形成签名的数据
这个过程称为 颁发一个证书


将证书推送给某一个人时,将收到的证书(明文) 拆分为 数据 和对应的签名 对原始的数据 继续使用 哈希散列 形成散列值 再对加密过的签名,使用CA证书的公钥 解密 形成 散列值

对比两者的散列值 是否相等
若相等,则说明签名数据没有被篡改过
若不相等,则 明文数据和签名数据至少有一个被篡改过

方案5 —— 非对称加密 + 对称加密 + 证书认证

客户端先请求,然后服务器响应,给客户端证书

1. 验证证书的合法性

客户端先认证,证书的合法性

通过验证,将内容和签名 分开,用相同的hash算法,形成对应的散列值
先将数据 使用 hash算法,形成对应的散列值
使用浏览器内置公钥,对签名做解密,形成散列值

若两者的散列值 不同,有可能 数据被篡改了,所以直接丢弃
若两者的散列值相同,说明内容没有被篡改以及证书是合法的

2. 客户端在证书中提取公钥

若证书是合法的,则提取证书中的公钥

客户端在形成对称秘钥X,与提取出的公钥 结合,形成加密报文
将加密报文推送给 服务器,服务器通过对应的证书私钥解密
就形成了 客户端的对称秘钥X

证书存在的意义是 保证内容没有被篡改,在验证 证书合法性的同时 也验证了公钥的合法性

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

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

相关文章

【Redis】1、NoSQL之Redis的配置及优化

关系数据库与非关系数据库 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言&a…

WebGL 绘制矩形

上一节绘制了圆点,调用的绘制方法如下:gl.drawArrays(gl.POINTS, 0, 1); 第一个参数明显是个枚举类型,肯定还有其他值,如下所示: POINTS 可视的点LINES 单独线段LINE_STRIP 线条LINE_LOOP 闭合线条TRIANGLES 单独三…

【Redis7】--1.概述、安装和配置

文章目录 1.Redis概述1.1Redis是什么1.2Redis与MySQL的关系1.3Redis功能1.4Redis优势 2.Redis的安装和配置 1.Redis概述 1.1Redis是什么 Redis全称 远程字典服务器(Remote Dictionary Server),它是完全开源的,使用ANSIC语言编写…

算法-26. 删除有序数组中的重复项-⭐

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做…

【数据分析】Python:处理缺失值的常见方法

在数据分析和机器学习中,缺失值是一种常见的现象。在实际数据集中,某些变量的某些条目可能没有可用的值。处理缺失值是一个重要的数据预处理步骤。在本文中,我们将介绍如何在 Pandas 中处理缺失值。 我们将探讨以下内容: 什么是缺…

php将数组中的最后一个元素放到第一个

array_unshift($firstStepResult, array_pop($firstStepResult)); 转换之后

spring spring-boot spring-cloud spring-cloud-alibaba之间版本对应关系

spring 版本与 jdk 的对应关系 https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions 从 spring 6.0 开始使用 jdk 17 进行编译 对应的相关 servlet 容器(tomcat、undertow、jetty等)的 servlet 规范转移到 eclipse&…

算法-27.移除元素-⭐

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面…

MiniDump

一、minidump 模块集成 // .pro QT - guiCONFIG c11 console CONFIG - app_bundle# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consul…

想兼职?学网络安全,钱赚到你手软

前言 疫情过后,现在的经济形式并不好,所以有很多人想在本职工作以外找一份兼职,亦或者担心自己被裁员,想先学一门技术,从而提高自己的抗风险能力,这没有比网络安全更适合的了。如果有基础的小伙伴完全可以…

01深度学习目标检测引入

目标检测是计算机视觉领域的一个重要任务,旨在从图像或视频中准确地检测和定位特定的目标物体。 一、目标检测问题定义 目标检测是在图片中对可变数量的目标进行查找和分类。 二、目标检测过程中的常见的问题 目标种类和数量问题目标尺度问题外在环境干扰问题 三…

IDEA显示val,var的推断类型的设置

在java中val,var可以减少繁琐的代码量,但是IDEA默认关掉自动类型,导致使用val,var表示的不能一言判别类型,并且不能显示点入查看类型的详情因此需要在idea中设置,能够自动显示推断类型。 步骤1 Setting--->editor…

网络安全(黑客)工具大全

还是一句话,功夫再高,也怕菜刀 首先,恭喜你发现了宝藏。 本文章集成了全网优秀的开源攻防武器项目,包含: 信息收集工具(自动化利用工具、资产发现工具、目录扫描工具、子域名收集工具、指纹识别工具、端…

CSP 202112-1 序列查询

答题 这道题不难,但如果直接去实现查询f(x)的话,算法效率会非常低 我们直接观察样例,15(5-2)*1(8-5)*2(10-8)*3 所以我们可以写出下面程序 #i…

无涯教程-JavaScript - IMSUM函数

描述 IMSUM函数以x yi或x yj文本格式返回两个或多个复数的和。当添加复数时,实数和虚数系数分别相加,即找到两个复数a bi和c di的和的方程为- (a bi)(c in)(a c)(b d)我 语法 IMSUM (inumber1, [inumber2] ...)争论 Argument描述Required/OptionalInumber11 to 25…

css relative 和absolute布局

1、relative和absolute内部的元素都是相对于父容器,若父容器没有指定为relative,则默认为整个文档视图空间,absolute可以重叠元素,relative则不行。relative意味着元素的任意属性如left和right都是相对于其他元素的。absolute则相…

二叉树(上)

“路虽远,行则将至” ❤️主页:小赛毛 目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示(树的存储) 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树 2.3 特殊的二叉树: 2.4 二叉树的性质 3.二叉树的顺…

安全基础 --- 原型链污染

原型链 大部分面向对象的编程语言,都是通过“类”(class)实现对象的继承。传统上,JavaScript 语言的继承不通过 class,而是通过“原型对象”(prototype)实现 1、prototype 属性的作用 JavaScri…

【云原生进阶之PaaS中间件】第一章Redis-1.4过期策略

1 设置带过期时间的 key # 时间复杂度:O(1),最常用方式 expire key seconds# 字符串独有方式 setex(String key, int seconds, String value)除了string独有设置过期时间的方法,其他类型都需依靠expire方法设置时间&a…

高效数据湖构建与数据仓库融合:大规模数据架构最佳实践

文章目录 数据湖和数据仓库:两大不同理念数据湖数据仓库 数据湖与数据仓库的融合统一数据目录数据清洗和转换数据安全和权限控制数据分析和可视化 数据湖与数据仓库融合的优势未来趋势云原生数据湖自动化数据处理边缘计算与数据湖融合 结论 🎉欢迎来到云…