【网络安全】理解报文加密、数字签名能解决的实际问题
文章目录
- 前言
- 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,爬虫达人们!在爬虫的过程中,要保持代理池的稳定性可不容易。今天就来和大家分享一些实用经验,教你如何让代理池在爬虫过程中一直运行!方法简单易行,让你的爬虫工作更顺畅. 在进行爬虫工作时࿰…...

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

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...