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

【网络安全】理解报文加密、数字签名能解决的实际问题

文章目录

    • 前言
      • 1. 防止报文泄露 —— 加密体系的出现
        • 1.1 理解非对称加密体系的实施难点
        • 1.2 加密体系的实际应用
      • 2. 防止报文被篡改 —— 数字签名的出现
        • 2.1 数字签名的原理
        • 2.2 数字签名的实施难点
        • 2.2 数字签名的实际应用 —— 引入摘要算法
      • 3. 实体鉴别 —— CA证书
    • 后记

前言

工作中重新接触了 【公钥、私钥、签名】的概念。抽空重新看了《计算机网络》和国外的小黑书,把这块基础知识再收敛一下。基于小黑书的叙事结构,把网络安全解决的实际问题拆解成:

  • 防止报文泄露
  • 防止报文被篡改
  • 实体鉴别
  • 端点鉴别
  • 防止重放攻击

1. 防止报文泄露 —— 加密体系的出现

网络丢包是常见的事情,丢包意味着报文可能被截获。怎样能够减少丢包造成的损失呢?两个思路

  • 物理隔绝 —— 内网通信
  • 保护信息 —— 报文加密

如果两家公司在公网上通信,涉密信息的报文一定要经过加密。加密又有两种形式,(这个网上资料很多,不再赘述)

  • 对称加密
  • 非对称加密

NOTE: 非对称加密算法复杂,消耗的资源多,所以实际应用是【非对称加密 + 对称加密】,旨在确保通信安全的前提下兼顾效率。

1.1 理解非对称加密体系的实施难点

  • 以 RSA 非对称算法为例,比DES慢 2~4个数量级
  • 多对多的网络模式下,密钥的管理和交换比对称加密复杂

1.2 加密体系的实际应用

  • A与B用RSA(非对称加密)交换会话密钥(对称密钥
  • A和B在一段时间内,都使用会话密钥进行通信。

在这里插入图片描述

2. 防止报文被篡改 —— 数字签名的出现

上文提到,报文加密可以减少丢包的损失。简单来说就是截获网络报文的人看不懂双方在讲什么。只加密就完了吗?我们把攻击者想象得太简单了,有一些攻击者,会做这些事

  • 从发送方中把报文(密文)篡改了,再丢给接收方。接收方从密文中还原的明文也就成了乱码。
  • 从发送方中获取明文和密钥,修改明文,加密后再发给接收方。接收方就被误导了。

有没有办法证明报文本身没被篡改呢?大体思路是这样的:

  • 报文中确保有发送者的签名
    在这里插入图片描述
  • 签名一定要与内容进行绑定,内容变了,签名失效。(完成这种机制的就是数字签名)
    在这里插入图片描述

值得注意的是,“签名” 一词在中文里面表达一种不变量,比如小明本人签字,内容一定是“小明”。而在计算机世界中,这个 “签名” 是被计算出来的,根据内容实时变化的。

2.1 数字签名的原理

数字签名以非对称加密为基础。
“公钥加密,私钥解密” 这个是大多数人的共识,但是这里存在容易混淆概念的地方。
因为中文的“解密”一定出现在“加密”之前。实际上把 “加密” 和 “解密” 都换成 “运算”,更合理些。
因为运算是可以满足交换律的,数字签名就是使用的运算的交换律
在这里插入图片描述

  • A 生成密文后,用自己的私钥 (全宇宙只有自己持有),对密文进行X运算,生成数字签名。把密文和数字签名一起发送给 B
  • B 收到密文后,先用 A 的 公钥 对数字签名进行D运算。由于X运算和D运算满足交换律,所以对数字签名进行D运算会解析出密文。如果这个密文和A给的密文不一致,则报文被篡改。
  • 以上的 D运算 实际上就是验签
  • 由于A的私钥是全宇宙唯一的,所以A的签名不可伪造,也不可抵赖(A说自己没发过这个报文,但是世界不会承认他没发过)

2.2 数字签名的实施难点

非对称加密比较消耗资源,特别是对大报文进行运算。

2.2 数字签名的实际应用 —— 引入摘要算法

既然大报文消耗性能,能不能把报文弄小? 思路其实就是摘要算法,常见的 md5、sha-1 就是摘要算法(也叫散列算法)。
在这里插入图片描述

  • 程序中的应用
// 把签名拼接到密文后面,接收者再解析出签名,验签即可
密文.签名

3. 实体鉴别 —— CA证书

上文提到,现实的通信基础,是对称和非对称加密结合。那么自然就引出了两个议题

  • 如何交换密钥
  • 如何证明 “A的公钥属于A”

这块内容是密钥管理的内容,内容多的可以单独开个专题来讲了。对于通信双方,只需要知道CA证书的存在即可,他是作为密钥管理的第三方,CA = Certification Authority (认证中心)。具体的管理方式:

  • A 在认证中心上注册了自己的公钥,获得了CA证书。
  • B 要与 A 通信前先用 A 给的 CA 证书去认证中心确认公钥来自于 A

后记

理解报文加密、数字签名就写到这里。下面的三个话题主要是防止中间人攻击

  • 实体鉴别
  • 端点鉴别
  • 防止重放攻击

实际开发中暂时还接触不到这些,等有实际的工作体验后再来补充这部分的内容。

最后,值得一提的是,理解了上述概念,再看看jwt的报文组成,就显得合理多了。

相关文章:

【网络安全】理解报文加密、数字签名能解决的实际问题

文章目录 前言1. 防止报文泄露 —— 加密体系的出现1.1 理解非对称加密体系的实施难点1.2 加密体系的实际应用 2. 防止报文被篡改 —— 数字签名的出现2.1 数字签名的原理2.2 数字签名的实施难点2.2 数字签名的实际应用 —— 引入摘要算法 3. 实体鉴别 —— CA证书 后记 前言 …...

linux中安装nodejs,卸载nodejs,更新nodejs

卸载nodejs 卸载node sudo apt-get remove nodejs清理掉自动安装的并且不需要软件包 sudo apt autoremove查看node相关的文件 sudo whereis node如果有文件需要手动删除文件 删除该文件命令 sudo rm -rf /usr/local/bin/node在此查看node -v 是未找到,说明你已经…...

浅谈Python网络爬虫应对反爬虫的技术对抗

在当今信息时代,数据是非常宝贵的资源。而作为一名专业的 Python 网络爬虫程序猿,在进行网页数据采集时经常会遭遇到各种针对爬虫行为的阻碍和限制,这就需要我们掌握一些应对反爬机制的技术手段。本文将从不同层面介绍如何使用 Python 进行网…...

代理池在过程中一直运行

Hey,爬虫达人们!在爬虫的过程中,要保持代理池的稳定性可不容易。今天就来和大家分享一些实用经验,教你如何让代理池在爬虫过程中一直运行!方法简单易行,让你的爬虫工作更顺畅. 在进行爬虫工作时&#xff0…...

基于Java+SpringBoot+Vue前后端分离党员教育和管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...

【flutter直接上传图片到阿里云OSS】

flutter直接上传文件到阿里云需要获取凭证,通过调用阿里云获取凭证的接口能拿到下面这些参数 {"StatusCode": 200,"AccessKeyId": "STS.NSsrKZes4cqm.....","AccessKeySecret": "7eGnLZaEFsRCGYJAnrtdE9n....."…...

【MySQL系列】表的内连接和外连接学习

「前言」文章内容大致是对MySQL表的内连接和外连接。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、内连接二、外连接2.1 左外连接2.2 右外连接 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,前面篇章学习的…...

C语言日常刷题 3

文章目录 题目答案与解析1234、5、6、 题目 1.已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; ,正确的调用语句是( ) A: fun(c,&d); B: fun(c,d); C: fun(&c,&d…...

.net6中, 用数据属性事件触发 用httpclient向服务器提交Mes工单

MES开发中, 客户往往会要求 工单开始时记录工艺数据, 工单结束时将这些工艺数据回传到更上一级的WES系统中. 因为MES系统和PLC 是多线程读取, 所以加锁, 事件触发是常用手段. using MyWebApiTest.PLC; using MyWebApiTest.Service; using MyWebApiTest.Service.Entry; using M…...

sin(A)的意义

若存在矩阵A,则sin(A)表示对于矩阵A的每一个元素,进行对应的函数运算。 如:...

ctfshow-web14

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 首先看到这个,swith,那么直接输入4,则会打印$url的值 然后访问一下 查看一下,发现完整的请求是http://c7ff9ed6-dccd-4d01-907a-f1c61c016c15.challenge.ctf.sho…...

数据结构—循环队列(环形队列)

循环队列(环形队列) 循环队列的概念及结构循环队列的实现 循环队列的概念及结构 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。…...

vue3 实现按钮权限管理

在做后台管理系统时,经常会有权限管理的功能,这里来记录一下关于按钮权限管理的实现方法 1、自定义指令 v-permission。新建js文件用来写指令代码。 export default function btnPerms(app) {app.directive(permission, {mounted(el, binding) {if (!p…...

C语言练习4(巩固提升)

C语言练习4 选择题 前言 面对复杂变化的世界,人类社会向何处去?亚洲前途在哪里?我认为,回答这些时代之问,我们要不畏浮云遮望眼,善于拨云见日,把握历史规律,认清世界大势。 选择题 …...

将AI融入CG特效工作流;对谈Dify创始人张路宇;关于Llama 2的一切资源;普林斯顿LLM高阶课程;LLM当前的10大挑战 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 将AI融入CG特效工作流,体验极致的效率提升 BV1pP411r7HY 这是 B站UP主 特效小哥studio 和 拓星研究所 联合投稿的一个AI特…...

Vue2学习笔记のVue中的ajax

目录 Vue中的ajaxvue脚手架配置代理方法一方法二 插槽 hello, 这篇文章是Vue2学习笔记的第四篇,也是第四章:Vue中的ajax。 Vue中的ajax vue脚手架配置代理 方法一 在vue.config.js中添加如下配置: devServer:{proxy:"http://localho…...

C# 使用NPOI操作EXCEL

1.添加NOPI 引用->管理NuGet程序包->添加NOPI 2.相关程序集 3....

分布式 - 服务器Nginx:一小时入门系列之 return 指令

文章目录 1. return 指令语法2. return code URL 示例3. return code text 示例4. return URL 示例 1. return 指令语法 return指令用于立即停止当前请求的处理,并返回指定的HTTP状态码和响应头信息,它可以用于在Nginx中生成自定义错误页面,…...

【Linux】ext4和xfs扩大,缩小lv后,无法识别如何操作

虚拟机系统异常,挂载到其他环境如何修复系统盘 1、环境 UOS 1060E x86环境 模拟异常环境: 1060e系统,使用lvm缩小磁盘后,出现异常,将异常磁盘挂载到其他服务器中,但存在问题发现有uuid相同的问题。 为…...

基于HarmonyOS ArkUI实现音乐列表功能

本节将演示如何在基于HarmonyOS ArkUI的List组件来实现音乐列表功能。 本文涉及的所有源码&#xff0c;均可以在文末链接中找到。 活动主页 华为开发者论坛 规则要求具体要求如下&#xff1a; 第1步&#xff1a;观看<HarmonyOS第一课>“营”在暑期•系列直播&#x…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...