【计算机网络】HTTPS

文章目录

  • 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.mzph.cn/news/73847.shtml

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

相关文章

Java守护线程的理解及应用

在Java中有两类线程,分别是User Thread(用户线程)和Daemon Thread(守护线程) 。 用户线程很好理解,我们日常开发中编写的业务逻辑代码,运行起来都是一个个用户线程。而守护线程相对来说则要特别…

C#__资源访问冲突和死锁问题

/// 线程的资源访问冲突:多个线程同时申请一个资源,造成读写错乱。 /// 解决方案:上锁,lock{执行的程序段}:同一时刻,只允许一个线程访问该程序段。 /// 死锁问题: /// 程序中的锁过多&#xf…

vscode debug python launch.json添加args不起作用

问题 为了带入参数调试python 程序,按照网上搜到的教程配置了lauch.json文件,文件中添加了"args": [“model” “0” “path”] {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: h…

深入浅出学Verilog--基础语法

1、简介 Verilog的语法和C语言非常类似,相对来说还是非常好学的。和C语言一样,Verilog语句也是由一连串的令牌(Token)组成。1个令牌必须由1个或1个以上的字符(character)组成,令牌可以是&#x…

day3_C++

day3_C 思维导图用C的类完成数据结构 栈的相关操作用C的类完成数据结构 循环队列的相关操作 思维导图 用C的类完成数据结构 栈的相关操作 stack.h #ifndef STACK_H #define STACK_H#include <iostream> #include <cstring>using namespace std;typedef int datat…

2023 年全国大学生数学建模竞赛题D 题 圈养湖羊的空间利用率思路详解+Python源码(二)

昨天已经将E题第一二问的详解和思路源码都写了出来&#xff0c;大家如果想从E题下手的话推荐参考本人文章&#xff0c;个人认为E题在建模上是优于D题的&#xff0c;毕竟有给出数据而且有明确的建模思路&#xff0c;E题我直接提供了Python源码直接可以运行即可&#xff1a; 202…

STC15单片机特有的PWM寄存器和普通定时器实现PWM输出

STC15单片机特有的PWM寄存器和普通定时器实现PWM输出 🌿主要针对STC15W4型号特有的6通道15位专门的高精度PWM。 ✨STC15W4K32S4系列单片机具有6通道15位专门的高精度PWM(带死区控制)和2通道CCP(利用它的高速脉冲输出功能可实现11~16位PWM);(STC15F/L2K60S2系列单片机具有3通…

Android逆向学习(番外一)smali2java部分文件无法反编译的bug与修复方法

Android逆向学习&#xff08;番外一&#xff09;smali2java部分文件无法反编译的bug与修复方法 一、前言 昨天我和往常一样准备着android逆向&#xff08;四&#xff09;的博客&#xff0c;结果发现smali2java对某些文件无法进行逆向&#xff0c;我不知道windows会不会产生这…

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

windows10使用wheel安装tensorflow2.13.0/2.10.0 (保姆级教程)

安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的python解释器&#xff0c;并使用tensorflow常见错误 注意&#xff1a; t…

反序列化中_wakeup的绕过

文章目录 前言绕过方法变量引用属性个数不匹配(cve-2016-7124)C绕过fast-destruct其余GC回收机制 前言 反序列化中_wakeup扮演着非常重要的角色&#xff0c;ctf碰到很多的题目都有涉及到_wakeup绕过&#xff0c;写下这篇博客来总结下大部分绕过方法&#xff0c;其中会有例题具…

大数据导论 笔记

一、大数据方向 1、技术发展 计算机网络云计算大数据时代人工智能&#xff08;本科&#xff1a;使用&#xff0c;研究生&#xff1a;推导&#xff0c;博士&#xff1a;创新&#xff09; 2023年 大数据模型 人工智能元年 2、基础课程 hadoop 大数据基础 三大件&#xff1a;HDF…

java实现调用百度地图

这里使用的springbootthymeleaf实现&#xff0c;所以需要有springboot技术使用起来更方便 当然&#xff0c;只使用html加js也可以实现&#xff0c;下面直接开始 首先我们需要去百度地图注册一个AK&#xff08;百度地图开放平台 | 百度地图API SDK | 地图开发&#xff09; 找到左…

学会用命令行创建uni-app项目并用vscode开放项目

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 创建 uni-app 项目 命令行创建 uni-app 项目 编译和运行 uni-app 项目&#xff1a; 用 VS Code 开发 uni…

教你如何快速阅读葡萄酒标签

我们经常被问及葡萄酒标签上写了什么&#xff0c;总体而言这些信息可以分为四个关键部分&#xff0c;第一品牌或生产商&#xff1b;第二国家或地区&#xff1b;第三葡萄品种&#xff1b;第四年份。 第一品牌或生产商&#xff0c;在寻找葡萄酒的制造商时&#xff0c;著名的品牌名…

一篇文章教会你什么是高度平衡二叉搜索(AVL)树

高度平衡二叉搜索树 AVL树的概念1.操作2.删除3.搜索4.实现描述 AVL树的实现1.AVL树节点的定义2.AVL树的插入3.AVL树的旋转3.1 新节点插入较高右子树的右侧---右右:左单旋3.2 新节点插入较高左子树的左侧---左左:右单旋3.3 新节点插入较高左子树的右侧---左右&#xff1a;先左单…

尖端AR技术如何在美国革新外科手术实践?

AR智能眼镜已成为一种革新性的工具&#xff0c;在外科领域具有无穷的优势和无限的机遇。Vuzix与众多医疗创新企业建立了长期合作关系&#xff0c;如Pixee Medical、Medacta、Ohana One、Rods & Cones、Proximie等。这些公司一致认为Vuzix智能眼镜可有效提升手术实践&#x…

计算机网络的故事——了解Web及网络基础

了解Web及网络基础 文章目录 了解Web及网络基础一、使用 HTTP 协议访问 Web二、HTTP 的诞生三、网络基础 TCP/IP四、与 HTTP 关系密切的协议 : IP、TCP 和 DNS 一、使用 HTTP 协议访问 Web 根据Web浏览器指定的URL&#xff0c;从对应的服务器中获取文件资源&#xff0c;从而显…

深度学习-4-二维目标检测-YOLOv5理论模型详解

YOLOv5理论模型详解 1.Yolov5四种网络模型 Yolov5官方代码中&#xff0c;给出的目标检测网络中一共有4个版本&#xff0c;分别是Yolov5s、Yolov5m、Yolov5l、Yolov5x四个模型。 YOLOv5系列的四个模型&#xff08;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff09;在参数量和性…

手写Ribbon基本原理

本文已收录于专栏 《中间件合集》 目录 概念说明什么是RibbonRibbon和Nginx负载均衡的区别 工作流程代码实现RibbonSDK发送请求端引入RibbonSDK和Nacos的依赖配置文件中填写负载均衡策略调用代码 接收请求端执行效果发送请求端接收请求端 总结提升 概念说明 什么是Ribbon Ribb…