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

【WEB】网络传输中的信息安全 - 加密、签名、数字证书与HTTPS

文章目录

  • 1. 概述
  • 2. 网络传输安全
    • 2.1.什么是中间人攻击
    • 2.2. 加密和签名
      • 2.2.1.加密算法
      • 2.2.2.摘要
      • 2.2.3.签名
    • 2.3.数字证书
      • 2.3.1.证书的使用
      • 2.3.2.根证书
      • 2.3.3.证书链
    • 2.4.HTTPS

1. 概述

本篇主要是讲解讲一些安全相关的基本知识(如加密、签名、证书等),以及HTTPS如何实现的信息安全传输 不涉及复杂的底层逻辑

在CS架构中,客户端和服务端之间的网络交互一般是使用HTTP协议来完成的,在HTTP协议的请求体和响应体中会包含一次请求的报文(或者说参数),而这些参数往往是明文传输的,有可能会被有心之人拦截,从而获取到参数中的敏感或保密的信息。因此,HTTPS(Hyper Text Transfer Protocol Secure) 应运而生,它在 HTTP(超文本传输协议)的基础上通过传输加密身份认证保证了传输过程的安全性。

2. 网络传输安全

2.1.什么是中间人攻击

在开篇中提到了HTTP协议是不安全的,这种不安全主要体现在两个方面:信息泄露信息伪造,在客户端和服务器中间,有一个中间人可以接收到响应传输的信息。
在这里插入图片描述

  • 信息泄露:中间人可以获取到传输过程中的敏感、保密信息。
  • 信息伪造:中间人可以将自己伪造成客户端或服务器,发送虚假信息。

上述的情况,一般会被称为中间人攻击,在日常使用网络的过程中,如果没有注意网络的安全,例如:使用了未知的公用WiFi、使用了不安全的网络设备、木马感染、DNS劫持等,都容易遭到中间人攻击。


显然,我们不能只通过用户自行注意网络的使用来解决信息传输安全问题,所以我们应该建立安全的传输机制,涉及到两个重要的概念:加密签名

2.2. 加密和签名

2.2.1.加密算法

在这里插入图片描述
所谓加密,就是将原有明文信息通过加密算法转换成为一串没有确认含义,无法识别的字符,也就是密文信息,这样即使信息泄露出去,获取信息的人也无法识别其含义,起到保密的效果。

通过是否能将密文信息重新解密成明文信息的维度,将加密算法区分为:单向加密算法和双向加密算法。

  • 单向加密算法:无法解密,常见的算法是MD5SHA256,一般运用在生成摘要信息保存用户密码等场景。
  • 双向加密算法:可以解密,最常见的算法是AES与RSA,一般运用在信息传输中,保证信息传输的安全性。

在双向加密算法中,要达成解密的效果,会在加密和解密时使用到密钥,通过加解密是否使用同一个密钥,将双向加密算法区分为:对称加密算法和非对称加密算法。

  • 对称加密:通过一把密钥加密和解密,客户端和服务端都持有相同的密钥。
  • 非对称加密:将密钥分为公钥私钥,公钥加密时只能用私钥解密,反之,私钥加密时,只能用公钥解密。两种加密方式使用场景不用,其中公钥加密是将信息转换为密文,防止信息泄露,而私钥加密是用于签名,用于身份认证(即确认是某个人、某个公司机构等发送的信息)。

对比一下对称加密和非对称加密,对称加密速度快,密钥安全性不高。非对称加密速度相对较慢,通过对外只暴露公钥的方式增强了密钥的安全性,同时由于其特性,还可以做身份认证。


说到这里,提一嘴脱敏,加密和脱敏容易混淆。
加密是将明文信息转换为密文信息,密文中无法提炼出有用的信息。
脱敏则是对原有的明文信息做部分修改覆盖,避免敏感信息暴露的同时,还保留了一部分有用的业务信息,常见的就是姓名、身份证、手机号等数据通过 * 替换掉中间一部分数据。

2.2.2.摘要

对传输的信息做加密是为了防止信息泄露,那么摘要和签名就是为了防止信息伪造。

所谓摘要,就是一串和内容相关的哈希值,通过单向加密算法,如SHA256,将原文生成生成一个256位的二进制串。只要原文发生了任何改动,这个摘要信息都将会完全不同。
在这里插入图片描述
通过这样的特性,在不需要对原文进行逐字逐句对比的情况下,快速的验证原文是否被修改了。
在一些开源软件的下载页面,除了源码包之外,还有摘要包下载,用户可以下载之后,用样的算法做摘要,通过比较摘要的值确认源码是否被修改。


当然,除了被有心人篡改了源码内容之外,摘要验证往往还会用于校验文件的完整性。(例如因为网络等原因导致源文件没有下载完整的情况)

2.2.3.签名

签名是一种更高级的安全措施,可以同时验证信息完整性和信息真实性,它是在摘要的基础上,通过非对称加密算法对摘要信息做了一次加密。

所谓信息的真实性,就是指信息来源于官方发布而不是由第三方篡改的。
拿上面的例子来说,由于SHA256是通用算法,第三方拿到源码包并篡改后,重新生成了一个摘要包,将这两个包都放在伪造的网站上,用户下载之后无法验证来源的真实性。在这种场景下,官方可以通过非对称加密算法,使用私钥对摘要做加密,用户下载了签名之后,通过官方发布的公钥进行解密,再将原始摘要与新生成的摘要做对比,以此来确认下载的源码的真实性。

在这里插入图片描述
不同的网站可能会使用不同的加解密算法,细节上有细微的差异,但大体的流程都如上图所示。在Maven的官网中,下载界面就可以下载这三种包:
在这里插入图片描述
通过上面的verify the signature以及KEYS可以获取到校验方法及对应的公钥。
在这里插入图片描述

2.3.数字证书

2.3.1.证书的使用

数字证书是一种包含了公钥、所属组织信息、证书颁发机构、证书签名等信息的数字文件。
如果做过金融支付相关的业务,对接过银行或者三方支付平台的话,或多或少都会接触当数字证书。
这样的证书,多数情况是的就是通过操作系统生成的一个自签名的证书文件。我们在按照接口文档写完代码之后,下一步就是互相交换数字证书,在后续的接口调用过程中,会使用到对方的数字证书做签名验证,防止支付中的关键信息被中间人篡改。

而在CS架构中,客户端想要获取证书,在第一次访问网站时会从服务器中拉取证书,这种情况下,自签名的数字证书无法保证通信的安全性。
在这里插入图片描述
在这种情况下,要保证信息传输的安全,客户端就需要有一种机制可以验证证书的合法性。
这种机制就是在当两方无法确认对方的身份时,引入一个权威的第三方做身份确认,而这里的第三方指的就是根证书

2.3.2.根证书

所谓的根证书,就是各个权威的CA(Certificate Authority)机构的自签名证书,它们会预装在操作系统中的证书,用于浏览器或其他类型的客户端校验服务器提供的证书合法性。国内常见的CA机构有:CFCA、BJCA、SHECA等。

打开谷歌浏览器的证书管理,可以看到这样的内容:
在这里插入图片描述
点进去之后就可以看到预装的根证书了
在这里插入图片描述

企业机构可以通过权威的CA机构申请证书,将证书安装到服务器上,这样客户端就能校验出这个正式是否合法了。
在这里插入图片描述

2.3.3.证书链

处于根证书安全管理的灵活性业务需要等原因,企业申请的证书往往不是由根证书直接签发的,而是由一个层次关系:
在这里插入图片描述
这样的层次关系叫做证书链,在客户端访问服务器的时候,客户端会获取到服务器返回的证书链,再通过递归的方式一层层的向上校验,直到根证书校验通过。

2.4.HTTPS

在使用HTTPS协议时,客户端会通过TLS与服务器握手尝试建立一个安全连接通道,后续的请求都是通过这个通道来执行的。

在这里插入图片描述
这种设计方式既利用了非对称加密的安全性,又利用了对称加密的性能。后续的数据传输都是通过客户端生成的对称密码来进行加密和签名的。

相关文章:

【WEB】网络传输中的信息安全 - 加密、签名、数字证书与HTTPS

文章目录 1. 概述2. 网络传输安全2.1.什么是中间人攻击2.2. 加密和签名2.2.1.加密算法2.2.2.摘要2.2.3.签名 2.3.数字证书2.3.1.证书的使用2.3.2.根证书2.3.3.证书链 2.4.HTTPS 1. 概述 本篇主要是讲解讲一些安全相关的基本知识(如加密、签名、证书等)&…...

借助Claude实现Playwright的自动化(MCP Server)

借助Claude实现Playwright的自动化(MCP Server) MCP Server自己开发也是可以的,现在也有很多开箱即用的MCP Server,可以在https://github.com/modelcontextprotocol/servers中查找 Playwright的MCP Server Playwright的MCP Server是社区开发的,它能够为LLM提供操作浏览器的…...

【区间DP】【hard】力扣730. 统计不同回文子序列

给你一个字符串 s ,返回 s 中不同的非空回文子序列个数 。由于答案可能很大,请返回对 109 7 取余 的结果。 字符串的子序列可以经由字符串删除 0 个或多个字符获得。 如果一个序列与它反转后的序列一致,那么它是回文序列。 如果存在某个 …...

【Vim Masterclass 笔记11】S06L24 + L25:Vim 文本的插入、变更、替换与连接操作同步练习(含点评课)

文章目录 S06L24 Exercise 06 - Inserting, Changing, Replacing, and Joining1 训练目标2 操作指令2.1. 打开 insert-practice.txt 文件2.2. 练习 i 命令2.3. 练习 I 命令2.4. 练习 a 命令2.5. 练习 A 命令2.6. 练习 o 命令2.7. 练习 O 命令2.8. 练习 j 命令2.9. 练习 R 命令2…...

分布式组件底层逻辑是什么?

分布式组件是指在分布式系统中执行特定功能的模块,通常分布在多个物理节点上,共同协作完成任务。其底层逻辑包括多个方面,从通信和数据管理到一致性和容错设计,具体如下: 1.分布式组件的核心特点 分布性:功…...

Spring Boot中的扫描注解如何使用

在 Spring Boot 中,扫描注解是指通过注解来告诉 Spring 框架应该扫描哪些包、哪些类或哪些特定的组件,并将其作为 Spring 容器中的 bean 进行管理。Spring Boot 主要通过以下几种注解来实现自动扫描: ComponentScanSpringBootApplicationCom…...

初识JVM HotSopt 的发展历程

目录 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 各大 JVM look 看一下虚拟机 HotSopt 的发展历程 总结 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 即时编译 主要是…...

基于springboot果蔬供应链信息管理平台

基于Spring Boot的果蔬供应链信息管理平台是一种集成了先进信息技术和果蔬供应链管理理念的综合性系统。 一、背景与意义 随着人们生活水平的提高和对健康饮食的重视,果蔬市场需求不断增长。然而,果蔬供应链涉及多个环节,包括种植、采摘、加…...

掌握 React 关键:理解 super () 和 super (props) 的不同应用

在 React 中,super() 和 super(props) 都与 React 类组件的构造函数(constructor)以及继承有关。为了理解它们之间的区别,我们需要了解 JavaScript 类继承机制以及 React 类组件的工作原理。 1. super() 与 super(props) 的区别 …...

Scala语言的软件开发工具

Scala语言的软件开发工具概述 Scala是一种多范式编程语言,它结合了面向对象编程和函数式编程的特性。随着大数据技术的发展和互联网应用的广泛普及,Scala逐渐成为了开发高性能应用和后端服务的热门选择。为了更好地进行Scala开发,开发者需要…...

斯坦福大学李飞飞教授团队ARCap: 利用增强现实反馈收集高质量的人类示教以用于机器人学习

近年来,通过人类示范进行模仿学习在教授机器人操控技能方面取得了令人瞩目的进展。为了进一步扩大训练数据集的规模,近期的研究开始采用便携式数据采集设备,无需依赖物理机器人硬件。然而,由于在数据采集过程中缺乏机器人实时反馈…...

【Linux】从零开始:编写你的第一个Linux进度条小程序

Linux相关知识点可以通过点击以下链接进行学习一起加油!初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建GDB调试器与Git版本控制工具 文章目录 一、知识铺垫1.1 回车与换行概念1.2 缓冲区 二、实现简单倒计时三、进度条3.1 Verrs…...

web前端第八次作业---制作音乐榜单

制作音乐榜单 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…...

心脏扩散张量成像中的异常值检测:射击拒绝还是稳健拟合?|文献速递-视觉大模型医疗图像应用

Title 题目 Outlier detection in cardiac diffusion tensor imaging: Shot rejection or robust fitting? 心脏扩散张量成像中的异常值检测&#xff1a;射击拒绝还是稳健拟合&#xff1f; 01 文献速递介绍 心脏扩散张量成像&#xff08;Cardiac Diffusion Tensor Imagin…...

Linux Kernel 之十 详解 PREEMPT_RT、Xenomai 的架构、源码、构建及使用

概述 现在的 RTOS 基本可以分为 Linux 阵营和非 Linux 阵营这两大阵营。非 Linux 阵营的各大 RTOS 都是独立发展,使用上也相对独立;而 Linux 阵营则有多种不同的实现方法来改造 Linux 以实现实时性要求。本文我们重点关注 Linux 阵营的实时内核实现方法! 本文我们重点关注 …...

RabbitMQ-消息消费确认

我们一般使用的是消费者作为被动方接收 RabbitMQ 推送消息&#xff0c;另一种是消费者作为主动方可以主动拉取消息。 RabbitMq 服务器推送消息分为隐式(自动)确认和显示确认。 1 消费者拉取消息 消费者作为主动方拉取消息&#xff0c;每次只能获取一条。 using (var channel c…...

E10.【C语言】练习:编写一个猜数字游戏

目录 1.规则 2.准备 3.游戏代码 1.规则 1.程序生成1-100间的随机数 2.用户猜数字 猜对了&#xff1a;游戏结束 猜错了&#xff1a;程序会告知猜大了或猜小了&#xff0c;继续进行游戏&#xff0c;直到猜对 3.游戏可以一直玩除非退出游戏 2.准备 1.框架&#xff1a;循…...

RK3568-rk809rtc休眠唤醒

参考链接 https://www.360doc.cn/article/71858349_1119199262.html修改驱动drivers/mfd/rk808.c static void rk817_shutdown_prepare(void) { int ret; …...

【Uniapp-Vue3】pages.json页面路由globalStyle的属性

项目的全局配置在pages.json中。 一、导航栏设置 二、下拉刷新设置 下拉就可以看到设置的样式 三、上拉触底 这个页面中&#xff0c;向下滑动页面到底部就会输出“到底了” 现在将触底距离设置为500 走到半路就会输出“到底了”...

NHANES数据挖掘|特征变量对死亡率预测的研究设计与分析

书接上回&#xff0c;应各位临床或在科室的小伙伴们需求&#xff0c;除了多组学和算法开发外&#xff0c;插播关于临床护理方向的数据挖掘&#xff0c;今天分享两篇NHANES的分析文献。 1、时依中介分析 DOI&#xff1a; 10.1186/s12933-024-02191-5 整体思路 基于 NHANES 数据…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...