当前位置: 首页 > news >正文

【网络协议】应用层协议HTTPS

文章目录

  • 为什么引入HTTPS?
  • 基本概念
  • 加密的基本过程
  • 对称加密
  • 非对称加密
  • 中间人攻击
  • 证书

为什么引入HTTPS?

由于HTTP协议在网络传输中是明文传输的,那么当传输一些机密的文件或着对钱的操作时,就会有泄密的风险,从而引入HTTPS来保证数据在网络传输中的安全。

基本概念

HTTPS 协议是 HyperText Transfer Protocol Secure(超文本传输安全协议) 的缩写,是一种通过计算机网络进行安全通信的传输协议。

HTTP 本身是不安全的,因为传输的数据未经加密,可能会被窃听或篡改,为了解决这个问题,引入了 HTTPS,即在 HTTP 上加入 SSL/TLS 协议,为数据传输提供了加密和身份验证。

HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

HTTP 的 URL 是由 http:// 起始与默认使用端口 80,而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443

加密的基本过程

我们将网络中要传输的还未加密的数据称为“明文”,称加密的工具为“密钥”,被加密后的数据称为“密文”。

在发送端传输数据之前,使用密钥对数据进行加密,当加密后的数据到接收端时,接收端再使用密钥对密文进行解密,拿到信息。

解密算法主要是分为对称加密非对称加密
非对称加密的安全性更高一些。

对称加密

对称加密就是加密和解密使用同一把密钥:
在这里插入图片描述
这时,就会出现一个问题,每个服务器是给多个客户端服务的,一旦客户端的数量过多,那么服务器负载就会严重,此时又引入下面的做法:

每次在客户端和服务器进行通信时,客户端跟服务器要先约定好密钥,再进行通信,这样做就不必再服务器存入每一个客户端的密钥了。

在这里插入图片描述
这时,又又有一个问题,在客户端和服务器在沟通使用哪个密钥时,被黑客窃取到信息,那该怎么办呢?这时就引入了非对称加密

非对称加密

非对称加密就是加密和解密使用的密钥不是同一把。一个叫“公钥”,一个叫“私钥”,公钥和私钥之前是配对的,但是这个加密解密的过程非常慢,所以一不使用非对称加密,只是在协商密钥时使用。

这里的流程如下:

  1. 服务器生成私钥和公钥
  2. 服务器保存私钥,将公钥告知给客户端(所有人都能拿到公钥)
  3. 客户端使用公钥对协商使用哪个(对称加密)密钥的信息进行加密,传递给服务器
  4. 服务器在拿到信息后,使用私钥进行解密,获得信息,之后就使用协商的(对称加密)密钥来进行解密
    在这里插入图片描述

但这个过程还是存在风险,这就是中间人攻击要讲解的内容了。

中间人攻击

在这里插入图片描述
如上
黑客面对客户端时,就充当服务器的角色
面对服务器时,就充当客户端的角色。

兵来将挡水来土掩,那么这个问题又该如何解决呢?

这时引入了证书

证书

服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性

这个证书实际上是一个结构化的字符串,包含如下信息:

  • 证书发布机构
  • 证书有效期
  • 公钥
  • 证书拥有者
  • 持有者网站的主域名
  • 数字签名

这其中的数字签名是这些信息中最重要的一个。

数字签名是怎样得来的呢?

  1. 公证机构在颁布这个证书的时候会生成一对 “公钥”和“私钥”
  2. 对证书中的信息(发布机构、有效日期、公钥等)生成校验和
  3. 再用“校验和”和“私钥”进行非对称加密生成数字签名

有了证书后,客户端和服务器的通信过程又发生了一些变动。
在这里插入图片描述
如何对证书进行检验呢???

  1. 针对证书的字段计算校验和。得到校验和1
  2. 针对数字签名进行解密
    前面已经讲过,数字签名是公证机构使用私钥进行加密的,这时解密就需要公证机构的公钥来解密了。
    这里的公钥已经保存在操作系统中。(证书发布,操作系统就会将这个证书连同他的公钥一同存入到操作系统中)
    拿到公钥后,对数字签名进行解密,得到校验和2
  3. 比对校验和1和校验和2,如果相等,就说明证书是真的,也就代表证书中的公钥是真的
  4. 拿到真的公钥来进行后续的操作。

以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞

相关文章:

【网络协议】应用层协议HTTPS

文章目录 为什么引入HTTPS?基本概念加密的基本过程对称加密非对称加密中间人攻击证书 为什么引入HTTPS? 由于HTTP协议在网络传输中是明文传输的,那么当传输一些机密的文件或着对钱的操作时,就会有泄密的风险,从而引入…...

java nio FileChannel堆内堆外数据读写全流程分析及使用(附详细流程图)

这里是小奏,觉得文章不错可以关注公众号小奏技术 背景 java nio中文件读写不管是普通文件读写,还是基于mmap实现零拷贝,都离不开FileChannel这个类。 随便打开RocketMQ 源码搜索FileChannel 就可以看到使用频率 kafka也是 所以在java中文件读写FileCh…...

微服务架构-分支微服务设计模式

微服务架构-分支微服务设计模式 这种模式是聚合器模式的扩展,允许同时调用两个微服务链 分支微服务设计模式是一种用于构建大型系统的微服务架构模式,其核心思想是 将复杂的业务逻辑拆解为多个小的、相互独立的子系统,每个子系统由一个或多…...

关于Vue本地图片转file传到后端服务器(不通过组件上传)

一、代码 // 核心代码 const getMyFileFromLocalPath (localPath, filename) > {return fetch(localPath).then((response) > response.blob()).then((blob) > new File([blob], filename, { type: "image/png" })); // 假设是PNG格式// 获取真正的流文件…...

CCF20240302——相似度计算

CCF20240302——相似度计算 代码如下&#xff1a; #include <stdio.h> #include <string.h> #include <ctype.h>#define MAX_WORD_LEN 100 #define MAX_WORDS 10000int main() {int n, m;scanf("%d %d", &n, &m);char words1[MAX_WORDS][…...

C++的第一道门坎:类与对象(二)

一.类中生成的默认成员函数详解 0.类的6个默认成员函数 编译器会给类生成六个默认成员函数&#xff0c;在类中即使我们什么都不做&#xff0c;也会自动生成。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。 下面我们逐…...

C语言与内存息息相关的重要概念有哪些?

一、问题 C语⾔、C语⾔和C#语⾔&#xff0c;这三门语⾔&#xff0c;⼀个⽐⼀个加号&#xff08;&#xff09;多&#xff0c;C语⾔没有加号&#xff0c;C有两个加号&#xff0c;C#有四个加号。随着语⾔的发展&#xff0c;⼀个⽐⼀个简单&#xff0c;很多问题系统都给做了&#x…...

【chagpt】广泛使用API之前:考虑成本和数据隐私

文章目录 一. 定价和标记限制二. 安全和隐私 在广泛使用API之前&#xff0c;应该考虑两个重要因素&#xff1a;成本和数据隐私。 一. 定价和标记限制 OpenAI在Pricing页面上列出了模型的定价。请注意&#xff0c;OpenAI不一定及时更新该页面上的定价信息&#xff0c;因此实际…...

六月后考研如何备考看这一篇就够了

以下是考研六月后可以参考的规划&#xff1a; 6 月至 8 月&#xff08;强化阶段&#xff09;&#xff1a; 英语&#xff1a;继续背单词&#xff0c;开始刷历年真题中的阅读部分&#xff0c;仔细分析错题原因&#xff0c;总结解题技巧。数学&#xff1a;完成基础阶段的复习后&am…...

Linux主机连接腾讯云服务器详细配置

硬件条件 当然你要先有一个云服务器&#xff0c;腾讯云比阿里云便宜一点&#xff0c;所以就用腾讯云了 问了师兄买这个98的就行&#xff0c;选择CentOS&#xff0c;不要选Ubuntu&#xff0c;因为 嗯&#xff0c;大概就是这样 编程测试 云服务器当然是作为服务端 server.cpp…...

数字化工厂怎么收集,处理数据?

数字化工厂的数据收集与处理 数字化工厂是现代化工厂&#xff0c;利用数字技术和数据分析提高效率和优化流程。数据分析作为数字化工厂的核心技术&#xff0c;对数据的获取与处理至关重要。在数字化工厂中&#xff0c;数据的来源包括企业内部信息系统、物联网信息以及外部信息&…...

OOM不会导致JVM退出

问题来源 一次生产事故&#xff0c;由于一次性从数据库查询过多数据导致线程 OOM&#xff1a;Java heap space 异常&#xff08;千万级表&#xff0c;JVM堆内存2G&#xff09;&#xff0c;但是在线程OOM发生时&#xff0c;java进程却没有立即挂掉。 ##OOM与异常 说到底OutOfM…...

C++学习日记 | LAB 6 static library 静态库

资料来源&#xff1a;南科大 余仕琪 C/C Program Design LINK&#xff1a;CPP/week06 at main ShiqiYu/CPP GitHub 一、本节内容 本节主要介绍静态库和动态库。 1.1 静态库和动态库的概念 静态链接和静态库(也称为存档)是链接器将所有使用的库函数复制到可执行文件的结果。静…...

他用AI,抄袭了我的AI作品

《大话西游》里面有一句经典台词&#xff1a;每个人都有一个妈&#xff0c;但是“你妈就一定是你妈吗&#xff1f;” 用AI创作的艺术作品&#xff0c;也走进类似的困境&#xff1a;如何证明你用AI生成的作品&#xff0c;就是你的作品&#xff1f; 近日&#xff0c;腾讯科技独…...

力扣刷题--2956. 找到两个数组中的公共元素【简单】

题目描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;它们分别含有 n 和 m 个元素。 请你计算以下两个数值&#xff1a; 统计 0 < i < n 中的下标 i &#xff0c;满足 nums1[i] 在 nums2 中 至少 出现了一次。 统计 0 < i < m 中的下标 i &am…...

海信集团携纷享销客启动LTC数字化落地 推动ToB业务再升级

日前&#xff0c;海信集团携手连接型CRM纷享销客正式启动LTC&#xff08;Leads to Cash&#xff09;数字化平台实施落地项目。作为海信集团数字化的重要里程碑&#xff0c;该项目将通过统一规划、统一投资、统一平台、资源共享和数据赋能&#xff0c;构建ToB业务数字化经营管理…...

【Go语言入门学习笔记】Part5.函数

一、前言 这里的还是跟C有区别的&#xff0c;大家熟悉了其他语言后&#xff0c;还得注意一下这里的内容。Go的函数非常灵活。 二、学习代码 package mainimport "fmt"// ZhengXing 类似typedef的方法 type ZhengXing int// 函数名有说法&#xff0c;首字母大写是pu…...

磁珠笔记汇总

磁珠笔记汇总 磁珠是和电感很相似的器件。 电感磁珠单位亨(H)欧姆(Ω)是否储能存储能量消耗高频能量应用场景通常用于开关电源吸收高频&#xff0c;EMC保护如何看待损耗使用电感时希望损耗越小越好使用磁珠时是利用其损耗来消耗不需要的高频分量 一、磁珠的工作原理 磁珠与…...

【css3】02-css3新特性之选择器篇

目录 1 属性选择器 2 结构伪类选择器 3 其他选择器 :target和::selection ::first-line和::first-letter 4 伪类和伪元素的区别 伪类&#xff08;Pseudo-classes&#xff09; 伪元素&#xff08;Pseudo-elements&#xff09; 伪类和伪元素的区别 1 属性选择器 ☞ 属性选…...

修正错误的插入排序

错误版 void InsertSort(vector<int>& nums) {for (int i 0; i < nums.size()-1; i){int end i;int t nums[end 1];while (end > 0){if (nums[end1] < nums[end]) nums[end 1] nums[end];else break;--end;}nums[end 1] t;} } 无法得到正确结果。…...

Perplexity习语查询响应延迟超800ms?3个冷启动配置错误正在 silently 毁掉你的语言生产力

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity习语查询功能概览 Perplexity 的习语查询功能专为语言学习者与内容创作者设计&#xff0c;支持对英语中高频、多义、文化负载型习语进行上下文感知的精准解析。该功能不仅返回标准释义&#xff0c;还…...

如何快速找回遗忘的压缩包密码:开源工具的完整使用指南

如何快速找回遗忘的压缩包密码&#xff1a;开源工具的完整使用指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经为加密的压缩…...

ZVM嵌入式实时虚拟机:在ARMv8-A上实现Linux与Zephyr的混合关键性系统

1. 项目概述与核心价值如果你正在从事嵌入式系统开发&#xff0c;尤其是涉及汽车电子、工业控制或5G通信设备这类对实时性和可靠性要求极高的领域&#xff0c;那么你肯定对“既要、又要、还要”的困境深有体会。我们常常需要在同一块硬件上&#xff0c;既要运行一个功能丰富、生…...

Linux Capabilities(能力机制)细分学习

文章目录一. 网络相关 (Network)二. 系统与内核管理 (System & Kernel)三. 进程与信号管理 (Process & Signal)四. 文件系统与存储 (Filesystem & Storage)五. 审计与安全 (Audit & Security)六. IPC (进程间通信)七 在 Docker/K8s 中使用7.1. 只赋予网络管理能…...

Win11系统下JDK1.8(jdk-8u121)环境变量配置保姆级教程,附常见报错排查

Win11系统Java开发环境配置全指南&#xff1a;从安装到故障排查 1. 为什么Java环境配置如此重要&#xff1f; 对于每一位Java开发者来说&#xff0c;正确配置开发环境是迈入编程世界的第一步。想象一下&#xff0c;当你满怀期待地写下第一个"Hello World"程序&#x…...

【2025 版】CMD 命令大全|超详细!零基础到精通,一篇封神✅

在Windows操作系统中&#xff0c;命令提示符&#xff08;CMD&#xff09;是一个强大的工具&#xff0c;允许用户通过输入命令来执行各种操作。无论是系统管理、网络配置&#xff0c;还是文件管理&#xff0c;CMD都能提供高效的解决方案。 一、基本命令 cd&#xff1a;更改目录…...

Linux运维:Jenkins部署

Jenkins 完整部署流程 一句话总结&#xff1a;Jenkins 是自动化流水线工具&#xff0c;把"代码提交→编译打包→测试→部署上线"全流程自动化&#xff0c;不用人工一步步操作。一、先搞懂核心逻辑 Jenkins 就像一个自动化机器人&#xff0c;你告诉它"代码提交后…...

保姆级教程:在Windows上用Python连接CoppeliaSim远程API(附避坑指南)

从零开始掌握CoppeliaSim与Python的远程控制&#xff1a;Windows环境实战指南 在机器人仿真领域&#xff0c;CoppeliaSim&#xff08;原V-REP&#xff09;因其强大的功能和友好的用户界面而广受欢迎。对于希望将Python的灵活性与CoppeliaSim的仿真能力结合的研究者和工程师来说…...

字节面试官:你知道Claude Code的多Agent实现机制吗?

上周四晚上&#xff0c;我的微信弹出一条消息。一个准备跳槽字节AI Agent岗的朋友发来语音&#xff0c;语气像刚被泼了一盆冷水&#xff1a;“他们没让我手撕Transformer&#xff0c;也没问RLHF。上来就是一句——你知道Claude Code的多Agent实现机制吗&#xff1f;能不能讲一下…...

从Modbus报文到角度值:手把手教你用三菱FX3U的RS2指令读取绝对值编码器

从Modbus报文到角度值&#xff1a;三菱FX3U RS2指令读取绝对值编码器实战指南 在工业自动化领域&#xff0c;精确获取旋转设备的角度位置是许多控制系统的核心需求。绝对值编码器因其断电记忆和抗干扰特性成为首选&#xff0c;而Modbus RTU协议则是工业设备间最通用的通信语言。…...