【网络】HTTPS协议原理

文章目录

  • 1. HTTPS 是什么
  • 2. 常见的加密方式
  • 3. 数据摘要
  • 4. 加密方案测试
    • 4.1 只是用对称加密
    • 4.2 只使用非对称加密
    • 4.3 双方都使用非对称加密
    • 4.4 对称 + 非对称
  • 5. 证书
    • 5.1 数据签名
    • 5.2 CA 证书
    • 5.3 方案五 非对称加密 + 对称加密 + 证书认证

在这里插入图片描述

1. HTTPS 是什么

HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被窃取、篡改的情况

  • 因为 http 的内容是明文传输的, 明文数据会经过路由器、 wifi 热点、 通信服务运营商、 代理服务器等多个物理节点, 如果信息在传输过程中被劫持, 传输的内容就完全暴露了。
  • 劫持者还可以篡改传输的信息且不被双方察觉, 这就是中间人攻击,所以我们才需要对信息进行加密。

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

在这里插入图片描述
加密就是把明文(要传输的信息)进行一系列变换,生成密文
解密就是把密文再进行一系列变换,还原成明文
在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥

2. 常见的加密方式

  1. 对称加密

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

  • 特征: 用什么加密就用什么解密(一个密钥)
  • 特点: 算法公开、 计算量小、 加密速度快、 加密效率高
  • 例如:异或运算就是一种简单的对称加密方式
  1. 非对称加密

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

  • 特征:通过公钥对明文加密,则需要使用私钥解密(公钥加密,私钥解密);通过私钥对明文加密,则需要使用公钥解密(私钥加密,公钥解密
  • 特点: 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快

3. 数据摘要

数据摘要(数据指纹),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串固定⻓度的数字摘要。

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

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

4. 加密方案测试

4.1 只是用对称加密

在这里插入图片描述

只使用对称加密,首次的时候,双方无法同步密钥!不可靠

4.2 只使用非对称加密

在这里插入图片描述
由于公钥是公开的,因此别人可对服务器加密的信息进行解密,然后窃取数据,因此不可靠

4.3 双方都使用非对称加密

在这里插入图片描述
这种方式貌似是安全的,但其实它和方案二从左向右是一样的,都是不安全的。
其次,都使用非对称加密,速度太慢了。

4.4 对称 + 非对称

在这里插入图片描述
此时,如果中间人在双方交换完对称密钥后,就无法窃取信息了。

如果中间人在双方握手前就来了,那会有什么结果呢?
在这里插入图片描述
对于方案2、3都存在该问题

所以,根本原因在于:客户端无法识别“服务器”发的公钥是不是“真的”

那如何让客户端识别呢?

5. 证书

5.1 数据签名

即:对数据摘要进行加密。

那谁来加密?签名者使用私钥加密(它是非对称加密,也有公钥、私钥)

在这里插入图片描述

此时,如果有人劫持了签名

  • 它能使用签名者的公钥将签名解密查看,也能查看明文的数据
  • 它无法对签名替换,因为如果替换了,它没有签名者的私钥,即使使用别的私钥加密了,验证时用签名者的公钥解不开,直接丢弃
  • 它无法对明文传送的数据进行更改,因为更改以后,对数据做摘要形成的散列值就与原散列值不同了,验证时如果不同,直接丢弃。

所以,如果将服务端的公钥放到签名中,客户端就能知道,该公钥一定是真的,所以签名者至关重要!

那签名者是谁呢? - -CA机构

CA机构(Certificate Authority,证书颁发机构)是负责发放和管理数字证书的权威第三方机构,在公钥基础设施(PKI)中扮演核心角色

5.2 CA 证书

证书:含有证书申请者信息、申请者公钥信息等。 服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了, 证书就如身份证,证明服务端公钥的权威性

服务端在使用 HTTPS 前 需要向 CA 机构申领一份数字证书

在这里插入图片描述

当服务端申请 CA 证书的时候,CA 机构会对该服务端进行审核,并专门为该网站形成数字签名,过程如下:

  1. CA 机构拥有非对称加密的私钥和公钥
  2. CA 机构对服务端申请的证书明文数据进行 hash, 形成数据摘要
  3. 然后对数据摘要用 CA 机构的私钥加密,得到数字签名 S,服务端申请的证书明文和数字签名 S 共同组成了数字证书,这样一份数字证书就可以颁发给服务端了

5.3 方案五 非对称加密 + 对称加密 + 证书认证

在客户端和服务器刚一建立连接的时候,服务器给客户端返回一个证书,证书包含了之前服务端的公钥,也包含了网站的身份信息

所有客户端都会内置CA机构的公钥

在这里插入图片描述
客户端进行认证
当客户端获取到这个证书之后,会对证书进行校验(防止证书是伪造的).

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

中间人能不能整个掉包证书?

  • 中间人没有 CA 私钥, 所以无法制作假的证书,
  • 所以中间人只能向 CA 申请真证书,然后用自己申请的证书进行掉包;这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。
  • 永远记住: 中间人没有 CA 私钥,所以对任何证书都无法进行合法修改,包括中间人自己申请的

总结:
HTTPS 工作过程中涉及到的密钥有三组(双非一对):

  • 第一组非对称加密的密钥(CA机构的)是为了让客户端拿到第⼆组非对称加密的公钥
  • 第⼆组非对称加密的密钥(服务器的)是为了让客户端把对称密钥传给服务器
  • 第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密(加密/解密速度快)

在这里插入图片描述


常见问题

  1. 为什么摘要内容在网络传输的时候一定要加密形成签名?

如果中间人把数据篡改了,同时也把哈希值重新计算下,客户端就分辨不出来了。所以被传输的哈希值不能传输明文,需要传输密文。

  1. 为什么签名不直接加密, 而是要先 hash 形成摘要?

缩⼩签名密文的⻓度,加快数字签名的验证签名的运算速度

在这里插入图片描述

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

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

相关文章

计算机网络————(三)

前文二 前文一 Websocket协议 是一种存在TCP协议之上的协议 当客户端需要了解服务器是否更新就需要不断给客户端发送请求询问是否更新,这行会造成服务端压力很大 而Websocket相当于服务器一旦更新了就会给客户端发送消息表明自己更新了,类似客户端订阅…

Blueprint —— Events

目录 一,Event Level Reset 二,Event Actor Begin Overlap 三,Event Actor End Overlap 四,Event Hit 五,Event Any Damage 六,Event Point Damage 七,Event Radial Damage 八&#xff…

博云先进算力管理平台AIOS已上线全尺寸DeepSeek系列模型

在异构基础设施上轻松运行全尺寸DeepSeek DeepSeek于2024年12月发布了包括 DeepSeek V3、R1、Janus Pro等多版本模型。V3版本适用于通用型自然语言处理任务,R1专注于复杂推理任务,而 Janus Pro 则擅长多模态理解与生成,可满足企业不同 AI 场…

如何搭建起成熟的团队知识文档管理系统

搭建一个成熟的团队知识文档管理系统,对于提升团队的工作效率、促进信息共享以及保障知识资产的安全性都至关重要。**要实现这一目标,首先需要明确知识管理的目标和需求,其次选择合适的知识管理工具,最后制定有效的管理流程和权限…

0-基于强化学习的图Transformer算法求解车辆路径问题(2023)

文章目录 Abstract1 Introduction2. Related Work2.1 引言2.2.基于RNN的VRP解决方案2.3.基于GNN的VRP解决方案2.4.基于Transformer的车辆路径问题求解方法3 边嵌入注意力模型3.1 编码器3.1.1 边嵌入多头注意力3.1.2. 前馈网络(FFN)、批量归一化和残差连接3.2 解码器3.2.1 解码…

C#快速调用DeepSeek接口,winform接入DeepSeek查询资料 C#零门槛接入DeepSeek C#接入DeepSeek源代码下载

下载地址<------完整源码 在数字化转型加速的背景下&#xff0c;企业应用系统对智能服务的需求日益增长。DeepSeek作为先进的人工智能服务平台&#xff0c;其自然语言处理、图像识别等核心能力可显著提升业务系统的智能化水平。传统开发模式下&#xff0c;C#开发者需要耗费大…

有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2

https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package

深度神经网络(DNN)编译器原理简介

深度神经网络(DNN)编译器原理简介 目录 深度神经网络(DNN)编译器原理简介1 什么是DNN编译器2 前端3 后端4 中间表达&#xff08;Intermediate Representation&#xff0c;后文用IR代替&#xff09;5 优化过程6 计算图优化6.1 表达式化简6.2 公共子表达式消除6.3 常数传播6.4 矩…

最小二乘法与梯度下降(原理)

一、最小二乘法 损失函数矩阵形式&#xff1a; 令导数loss0 &#xff0c;可解得&#xff1a; API : sklearn.linear_model.LinearRegression() 功能&#xff1a; 普通最小二乘法线性回归, 权重和偏置是直接算出来的&#xff0c;对于数量大的不适用&#xff0c;因为计算量…

【2025全网最新最全】前端Vue3框架的搭建及工程目录详解

文章目录 安装软件Node.js搭建Vue工程创建Vue工程精简Vue项目文件 Vue工程目录的解读网页标题的设置设置全局样式路由配置 安装软件Node.js 下载地址&#xff1a;https://nodejs.org/zh-cn/ 安装完成后&#xff0c;打开cmd,查看环境是否准备好 node -v npm -vnpm使用之前一定…

Java 之集成 DataX 数据同步工具

1、官网下载 DataX https://github.com/alibaba/DataX 2、将依赖添加到本地&#xff08;DataX没有maven坐标&#xff0c;需要自己安装&#xff09; mvn install:install-file -Dfile"datax-common-0.0.1.jar" "-DgroupIdcom.datax" "-DartifactIdda…

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…

Springboot基础篇(3):Bean管理

前言&#xff1a;Spring 通过扫描类路径&#xff08;Classpath&#xff09;来查找带有特定注解&#xff08;如 Component、Service、Repository 等&#xff09;的类&#xff0c;并将它们注册为 Spring 容器中的 Bean。 1 Bean扫描 Bean 扫描是 Spring 框架的核心功能之一&…

VidSketch:具有扩散控制的手绘草图驱动视频生成

浙大提出的VidSketch是第一个能够仅通过任意数量的手绘草图和简单的文本提示来生成高质量视频动画的应用程序。该方法训练是在单个 RTX4090 GPU 上进行的&#xff0c;针对每个动作类别使用一个小型、高质量的数据集。VidSketch方法使所有用户都能使用简洁的文本提示和直观的手绘…

Vulhub靶机 Apache APISIX Dashboard RCE(CVE-2021-45232)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动docker ps 查看开放的端口 影响范围 2.7 ≤ Apache APISIX Dashboard < 2.10.1 二、访问靶机IP 9080端口 1、下载利用脚本&#xff0c;并利用 https://github.com/wuppp/apisix_dashboard_rce 这里需要注意IP的端口为9000…

Python - Python连接数据库

Python的标准数据库接口为&#xff1a;Python DB-API&#xff0c;Python DB-API为开发人员提供了数据库应用编程接口。 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个实现库&#xff0c;Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&…

Windows 11【1001问】Windows 11 都有哪些版本?

随着Windows 11的普及&#xff0c;越来越多的用户开始关注其不同版本及其分支版本之间的差异。在此之前&#xff0c;我们已经通过一系列文章详细介绍了Windows 11的基本概念、硬件配置要求、系统镜像下载方法以及多种安装方式。从使用Rufus和UltraISO软碟通制作Windows 11系统安…

【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费

【Kimi】免费生成PPT并免费下载 用了好几个大模型&#xff0c;有些能生成PPT内容&#xff1b; 有些能生成PPT&#xff0c;但下载需要付费&#xff1b; 目前只有Kimi生成的PPT&#xff0c;能选择模板、能在线编辑、能下载&#xff0c;关键全部免费&#xff01; 一、用kimi生成PP…

【Java项目】基于Spring Boot的旅游管理系统

【Java项目】基于Spring Boot的旅游管理系统 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;旅游管理系统是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模块包括&#xff08;1&#xff09;首…