http

在这里插入图片描述
http协议是将数据以明文的形式在网络上传输。若是传输的数据中包含一些敏感信息比如银行卡信息等可能会被有心人攻击造成信息泄露或被篡改。

总结:http协议进行数据传输难以保证数据的隐私性以及数据完整性,为了保证数据的准确定引入了https这一协议。

https

简单来说https就是安全版的http协议。

HTTPS协议也是一个应用层协议,是在http的基础上使用TLS/SSL(套接字)进行加密,这样通信就不容易受到拦截和攻击。

TLS/SSL
  • TLS:传输加密协议,规定了如何为网络中的数据进行加密和解密。
  • SSL:早期由网景公司设计的加密协议,后贡献给IETF组织,并最终命名为TLS。
  • tips:除了HTPPS外,TLS可以被用于任何基于TCP/IP协议的上层协议或应用程序,如SFTP协议、数据库间通信加密…

在这里插入图片描述

常见的加密方式

常见的加密算法有对称加密、非对称加密、摘要算法

HTTP加密过程探究
[1] 只使用对称加密

在这里插入图片描述
如上图所示

  • 客户端发送请求:其中包含了客户端所支持的TLS版本以及加密算法等信息;
  • 服务端接收请求:从中选取最优的TLS版本以及加密算法 并将这些信息反馈给客户端
  • 客户端接收响应:生成一段随机字符串(这段随机字符串被称为预主密钥),通过服务端指定的加密函数和加密算法将这段随机字符串生成一对密钥(被称为会话密钥) 用于后续数据传输时的加密和解密;
  • 客户端发送请求:将预主密钥发送给服务端并告知服务端生成密钥的算法等信息
  • 服务端接收请求: 接收信息后以同样的方式生成会话密钥
  • 此时 客户端和服务端 就可以 以会话密钥加解密数据进行通信了

引入对称加密之后即使数据被截获, 由于黑客不知道密钥是什么也就无法进行解密,获取原始数据了。

问题

如何将预主密钥传递给服务端成为最大的难题

若是预主密钥以明文的方式传输,那么在传输过程中 黑客获取到这个预主密钥 他完全可以创建出与客户端相同的会话密钥,最终导致后面所有的传输数据都面临着被破译的风险。

解决

通过非对称加密的方式 来传输预主密钥 确保数据的安全性;

[2] 使用对称加密+非对称加密

非对称加密包含两个不同的密钥文件 => 公钥用于加密私钥用于解密 公钥对外公开任何人都可以随意获取私钥则只有拥有者自己知道

与对称加密不同的是 非对称加密是不可逆

在这里插入图片描述
如上图所示

  • 客户端发送请求:其中包含了客户端所支持的TLS版本以及加密算法等信息;
  • 服务端接收请求:从中选取最优的TLS版本以及加密算法 并将这些信息反馈给客户端 除此之外还会将自己的公钥发送给客户端
  • 客户端接收响应:生成一段随机字符串(这段随机字符串被称为预主密钥),通过服务端的公钥将预主密钥进行加密并传递给服务端;
  • 客户端发送请求:将预主密钥发送给服务端并告知服务端生成密钥的算法等信息
  • 服务端接收请求: 接收信息后通过私钥解密得到预主密钥
  • 客户端和服务端:根据预主密钥通过相同的算法计算得到会话密钥
  • 此时 客户端和服务端 就可以 以会话密钥加解密数据进行通信了

这样即使黑客截取到数据也不知道密钥的原始值是什么,就无法获取后续传递的数据了。

问题

若是在最初建立连接的时候就被黑客监听到 当服务端返回公钥给客户端的时候 黑客截取并模仿生成一个公钥传输给客户端,那么后面无论客户端发送任何数据都不再安全了
在这里插入图片描述

如上图

  • 服务端发送公钥给客户端 但是中间被黑客拦截了,黑客模拟生成一个类似得公钥并传递给客户端
  • 客户端接收到之后认为此公钥是客户端的公钥(实际是黑客传递的)=> 客户端使用该公钥加密预主密钥传输给服务端(实际被黑克拦截 并将黑客生成的预主密钥发送给服务端)
  • 后续任何流程都是 客户端与服务端中间加了一个流程与黑客进行数据传输了!
解决

其实上述问题的本质就是客户端无法确定收到的含有公钥的数据报文就是⽬标服务器发送过来的

为了解决这一问题 引入了证书这一概念 。

客户端获取的不再是公钥而是证书 => 证书是由证书颁发机构(CA)签发的,用于唯一标识一个站点的身份信息。

[3] 将公钥存放在证书中
证书定义

简单来说 证书就像网站的身份证和护照用于帮助我们鉴别一个网站的真伪。

证书是用于鉴别网站的真实性和有效性,所有人都可以查看网站的证书。

查看证书

在这里插入图片描述

在这里插入图片描述

证书信息

在这里插入图片描述
证书的指纹用于唯一标识一个证书=>确保证书的完整性!

申请证书

证书是由CA机构办法的,CA机构分布在全球各处

申请证书:

  • 向某个心仪的机构提交证书申请

  • 申请成功后将其部署到web服务中即可

CA组织机构做了什么呢?

  • CA组织在为申请者申请证书时 会对证书的内容和公钥分别进行hash计算并将得到的值作为证书指纹附加到证书中,同时说明使用的hash算法 => 内容 + 公钥 + 由内容和公钥生成的hash值(证书指纹) + hash算法说明(一般使用hash256)

    客户端得到证书之后 使用相同的算法对 内容和公钥进行hash计算 得到的结果与证书指纹进行比对 若是完全一致则表明证书没有被截获/篡改从而确保了证书的完整性。

  • CA组织生成好证书后,会使用CA的私钥进行加密并将加密结果附加到证书

    客户端在获取到网站证书后还需要验证证书的真实性 表明该证书确实是由该证书上描述的CA机构所颁发的!

    通过数字签名对证书进行加密和解密来验证真伪的 => 使用私钥进行加密 使用公钥进行解密

    客户端在获取到网站证书后会使用CA对应的公钥进行解密 => 解密成功则表示客户端使用的公钥与CA加密时使用的私钥是一对密钥从而确保该证书确实是由该CA证书所签发的

问题

现在好像又循环到最初的问题了 => 如何安全的获取CA的公钥呢?

答案就是预安装

其实CA机构在对证书进行签名的时候 使用的是私钥+根证书

根证书最主要的作用之一就是对其他证书进行签名,CA的公钥也被附加在CA的根证书中

每个操作系统都会维护一个根证书库并默认安装好了受信任的全国各地的CA根证书。

当需要认证证书签名时直接从系统中找到对应的CA根证书即可。=> 避免网络传输 不会被窃听/碉堡

总结流程

在这里插入图片描述
如上图所示: 先通过TCP三次握手建立连接

  • 客户端发送请求:其中包含了客户端所支持的TLS版本以及加密算法等信息;

  • 服务端接收请求:从中选取最优的TLS版本以及加密算法 并将这些信息反馈给客户端 除此之外还会将自己的证书发送给客户端

  • 客户端接收响应:获取证书 => 验证证书的真实性与完整性,没有问题在证书中拿到服务器的公钥

    生成一段随机字符串(这段随机字符串被称为预主密钥),将预主密钥使用服务器的公钥进行加密

  • 客户端发送请求:将预主密钥发送给服务端并告知服务端生成密钥的算法等信息

  • 服务端接收请求: 接收信息后通过私钥解密得到预主密钥

  • 客户端和服务端:根据预主密钥通过相同的算法计算得到会话密钥

  • 此时 客户端和服务端 就可以 以会话密钥加解密数据进行通信了

tips: 这一过程也被称为TLS握手

http与https的区别

http是基于TCP协议以明文方式进行传递数据的协议;

不同点httphttps
核心本质信息以明文进行传输,没有任何加密通过http+TLS套接字进行加密数据传输
安全性不安全 => 容易被窃听、篡改或冒充安全 => 提供身份认证,确保连接到的是正确的网站,在信息传输过程中数据经过加密、具有校验机制
协议与端口号基于 TCP,使用端口 80在 HTTP 基础上加入了 SSL/TLS 加密层,使用端口 443
数字证书不需要由受信任的证书颁发机构 (CA) 颁发的 SSL/TLS 证书=> 存在一定开销。
工作方式直接与 TCP 通信先与 SSL/TLS 通信,再由 SSL/TLS 和 TCP 通信。相当于在 HTTP 和 TCP 之间加了一个“安全层”。

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

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

相关文章

阿里云 腾讯云 API 自动化查询指南

文章目录一、核心思路与架构建议二、经验与核心建议三、技术方案选型建议四、API使用详解4.1 阿里云4.2 腾讯云五、进阶:与内部系统联动免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn 一、核心思路与架构建议 自动化流程可以概括…

【Unity 性能优化之路——概述(0)】

Unity性能优化概述性能优化不是某个环节的极致压榨,而是所有模块的协同共进。本文将为你建立完整的Unity性能优化知识体系。很多Unity开发者一提到性能优化,首先想到的就是Draw Call、Batches这些渲染指标。这没错,但它们只是性能优化中的一部…

灵码产品演示:软件工程架构分析

作者:了哥 演示目的演示灵码对于整个复杂软件工程项目的架构分析能力,输出项目的软件系统架构图。演示文档接口生成能力。演示准备 克隆工程地址到本地(需提前安装好 git 工具, 建议本地配置 brew): git cl…

银河麒麟部署mysql8.0并连接应用

​客户需在国产化银河麒麟系统中部署软件应用,使用mysql8.0数据库。机器放置了两三年,里面命令工具和依赖都不太全。而且客户环境不联网,只能采用离线部署的方式。部署过程中踩了很多坑,也用到很多资源,记录一下。 过…

GitAgent-面壁智能联合清华大学发布的大模型智能体应用框架

本文转载自:https://www.hello123.com/gitagent ** 一、🔍 GitAgent 框架:大模型智能体的工具箱革命 GitAgent 是由面壁智能与清华大学自然语言处理实验室联合研发的创新型框架,旨在解决大模型智能体在复杂任务中的工具扩展瓶颈…

灵码产品演示:Maven 示例工程生成

作者:轻眉 演示主题:由 AI 自动生成 0 到 1 的电商订单 Java 项目 演示目的 面向 Java 零基础的用户,通过灵码的产品能力(如提示词、编码智能体、项目 Rules 和 SQLite MCP 服务、单元测试)自动生成 0 到 1 的电商订单…

AI编程从0-1开发一个小程序

小伙伴们,今天我们利用AI实现从0到1开发一个小程序!需求交给AI: 我们只要说出自己的开发思路,具体需求交给AI完成!输入提示词:个人开发的小程序 能开发哪些好备案,用户喜欢使用的 AI给出…

DDoS高防IP是什么? DDoS攻击会暴露IP吗?

DDoS高防IP是什么?高防IP是指一种网络安全服务,主要用于防御DDoS攻击。随着技术的发展,黑客进行网络攻击的强度也在加大,所以我们要做好网络防护,及时预防DDoS攻击。DDoS高防IP是什么?DDoS高防IP是指基于IP…

k8s事件驱动运维利器 shell operator

Shell-Operator 概述 Shell-Operator 是 Kubernetes 的一个工具,用于通过 shell 脚本扩展集群功能。它允许用户编写简单的脚本(Bash、Python 等)来响应 Kubernetes 事件(如资源变更、定时任务),无需编译复…

(二)文件管理-文件权限-chmod命令的使用

文章目录1. 命令格式2. 基本用法2.1 符号模式2.2 八进制数字模式3. 高级用法3.1 递归操作3.2 参考权限3.3 特殊权限位(Setuid, Setgid, Sticky Bit)3.4 X 特殊执行权限4. 注意事项4.1权限与所有权4.2 Root 权限4.3 安全风险4.4 -R 的风险4.5 目录的执行权限1. 命令格式 chmod …

医院预约挂号脚本

医院预约挂号脚本 功能介绍 本脚本是一个用 Python 编写的医院预约挂号程序,支持以下功能: 自动预约:通过api交互选择医院、科室、医生和时间段。自动监控:持续检查指定医生的号源状态,发现可预约时段时自动尝试预约。…

.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)

在使用MudTools.OfficeInterop.Word库进行Word文档自动化处理时,深入理解Word对象模型的核心组件是至关重要的。Word对象模型提供了一套层次化的结构,使开发者能够通过编程方式控制Word应用程序、文档以及文档内容。本章将详细介绍Word对象模型中最核心的…

Kotlin在医疗大健康域的应用实例探究与编程剖析(上)

一、引言 1.1 研究背景与意义 在当今数字化时代,医疗行业正经历着深刻的变革。随着信息技术的飞速发展,尤其是人工智能、大数据、物联网等新兴技术的广泛应用,医疗行业数字化转型已成为必然趋势。这种转型旨在提升医疗服务的效率和质量,优化医疗资源配置,为患者提供更加…

AI智能体的应用前景

AI智能体的应用前景正从技术探索迈向规模化落地的关键阶段,其发展动力源于大模型能力的突破、行业需求的深化以及商业化模式的创新。以下是基于最新技术动态和行业实践的深度解析: 一、技术突破:从「有脑无手」到「知行合一」 大模型的进化显著提升了智能体的多模态交互与…

高系分四:网络分布式

目录一、我的导图和思考二、大模型对我导图的评价优点可优化之处三、大模型对这章节的建议一、网络知识范畴(一)网络基础理论(二)局域网与广域网(三)网络安全(四)网络性能优化&#…

Day24_【深度学习(1)—概念】

一、AI、ML、DL基本关系 机器学习是实现人工智能的途径,深度学习是机器学习的一种方法。人工智能 (AI)↓ 机器学习 (ML) —— 让机器从数据中学习规律↓ 深度学习 (DL) —— 使用深层神经网络的机器学习方法二、深度学习与机器学习概念深度学习(Deep Lea…

VTK基础(01):VTK中的基本概念

VTK中的基本概念 1.三维场景中的基本要素 三维场景的基本要素包含:灯光、相机、颜色和纹理映射 (1)灯光vtkLight 光的本质是特定频段的电磁波,所以灯光的本质是特定频段(可见光频段)的电磁波发射器;依据发射可见光频段…

LeetCode 2348.全0子数组的数目

给你一个整数数组 nums ,返回全部为 0 的 子数组 数目。 子数组 是一个数组中一段连续非空元素组成的序列。 示例 1: 输入:nums [1,3,0,0,2,0,0,4] 输出:6 解释: 子数组 [0] 出现了 4 次。 子数组 [0,0] 出现了 2 次。…

【wpf】从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路

从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路 最近我在做一个 WPF 项目,需要封装一个 ImageView 控件,用来显示图像并处理鼠标交互。 在实际开发中,我遇到了一系列和 数据绑定 有关的问题: 控件需要…

人力资源管理的思维方式学习笔记2

战略人力资源管理的思维方式——北京师范大学政府管理学院——王建民 教授3.1.理念:人力资源是第一战略资源 我们先来了解海尔集团公司实施发展战略的情况。海尔集团创立于1984年,根据官方网站的介绍,目前是一家全球领先的美好生活解决方案服…