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

文章目录

    • 前言
      • 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的报文组成,就显得合理多了。

另外,理解报文加密、数字签名就写到这里。

下面的两个话题主要是防止中间人攻击。

  • 端点鉴别
    • 类似于回答 “证明你是你的问题”,比如现实生活中的活体认证(扫脸)。
      EG:
      • 一个ip数据包的源地址为 102.189.67.134,已知报文可以伪造,怎么证明该ip数据包就是 102.189.67.134 发出的
      • 结论:类似这种 ip欺骗 (如 DDOS 攻击)的攻击手段,在网络层执行。应用层已经没有痕迹了 ,只能用 加密口令 加大攻击难度

  • 防止重放攻击
    • 可以联想一下业务的幂等控制,通常以”加锁“的方式实现。但是通信领域需要高效的解决方案,加锁太重了,取而代之的是采用 ”不重数集“。
      EG:
      • 102.189.67.134 发起交易请求的报文被攻击者复制了一份(注意,是复制而不是截获,因为问题主干是 “重放”),攻击者把源ip地址改为 102.189.67.134 (伪造成原来的发送方),再发送出去,接收方怎么识别这种攻击呢?
      • 结论:类似于TCP的滑动窗口,两边约定一个不重数集合,消费过的数据不会被重复消费。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker之 Consul(注册与发现)

目录 一、什么是服务注册与发现? 二、什么是consul 三、consul 部署 3.1建立Consul服务 3.1.1查看集群状态 3.1.2通过 http api 获取集群信息 3.2registrator服务器 3.2.1安装 Gliderlabs/Registrator 3.2.2测试服务发现功能是否正常 3.2.3验证 http 和 ng…

小研究 - Java虚拟机即时编译器的一种实现原理

深入分析了 Kaffe虚拟机的 JIT(Just-In-Ti&#xf…

CNN 01(CNN简介)

一、卷积神经网络的发展 convolutional neural network 在计算机视觉领域,通常要做的就是指用机器程序替代人眼对目标图像进行识别等。那么神经网络也好还是卷积神经网络其实都是上个世纪就有的算法,只是近些年来电脑的计算能力已非当年的那种计算水平…

kubernetes--技术文档--可视化管理界面dashboard安装部署

阿丹: 使用官方提供的可视化界面来完成。 Kubernetes Dashboard是Kubernetes集群的Web UI,用户可以通过Dashboard进行管理集群内所有资源对象,例如查看资源对象的运行情况,部署新的资源对象,伸缩Deployment中的Pod数量…

搜索二叉树的算法解析与实例演示

目录 一.搜索二叉树的特性与实现1.特点2.实现二.搜索二叉树的性能 一.搜索二叉树的特性与实现 1.特点 二叉搜索树是特殊的二叉树,它有着更严格的数据结构特点: (1)非空左子树的所有键值小于其根结点的键值。 (2&…

【C++入门到精通】C++入门 —— 多态(抽象类和虚函数的魅力)

阅读导航 前言一、多态的概念1. 概念2. 多态的特点 二、多态的定义及实现1. 多态的构成条件2. 虚函数3. 虚函数的重写⭕虚函数重写的两个例外1.协变(基类与派生类虚函数返回值类型不同)2.析构函数的重写(基类与派生类析构函数的名字不同) 4. override 和 final(C11 …

1.4亿X区城市运行“一网统管”体系建设项目项目招标WORD

导读:原文《1.4亿X区城市运行“一网统管”体系建设项目项目招标WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 部分内容: 各部分需求…

为Claude的分析内容做准备:提取PDF页面内容的简易应用程序

由于Claude虽然可以分析整个文件,但是对文件的大小以及字数是有限制的,为了将pdf文件分批传入Claude人工智能分析和总结文章内容,才有了这篇博客: 在本篇博客中,我们将介绍一个基于 wxPython 和 PyMuPDF 库编写的简易的…

FreeSWITCH 1.10.10 简单图形化界面5 - 使用百度TTS

FreeSWITCH 1.10.10 简单图形化界面5 - 使用百度TTS 0、 界面预览1、注册百度AI开放平台,开通语音识别服务2、获取AppID/API Key/Secret Key3、 安装百度语音合成sdk4、合成代码5、在PBX中使用百度TTS6、音乐文件-TTS7、拨号规则-tts_command 0、 界面预览 http://…

FxFactory 8 Pro Mac 苹果电脑版 fcpx/ae/motion视觉特效软件包

FxFactory pro for mac是应用在Mac上的fcpx/ae/pr视觉特效插件包,包含了成百上千的视觉效果,打包了很多插件,如调色插件,转场插件,视觉插件,特效插件,文字插件,音频插件,…

C语言基础之——指针(下)

前言:本篇文章将继续讲解有关指针的剩余基础知识。 学无止境,一起加油叭!! 目录 一.指针运算 1.指针 - 整数 2.指针的关系运算 3.指针 - 指针 二.指针与数组 三.二级指针 四.指针数组 总结 一.指针运算 指针运算包括以下三…

09-微信小程序 网络请求API(实现轮播广告和简易的聊天窗口)

09-微信小程序API网络请求(实现轮播广告和简易的聊天窗口) 文章目录 微信小程序API服务器域名配置注意网络相关APIrequestRequestTask 请求任务对象object.success 回调函数object.fail 回调函数案例代码(实现轮播图) WebSocket案例代码(实现…

C++数据结构学习——栈

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、栈二、C语言实现1.声明代码2.实现增删查改代码3.测试代码 总结 前言 栈(Stack)是计算机科学中一种常见的数据结构,它是…

PHP敬老院管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 敬老院管理系统(养老)是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 论文 https://download.csdn.net/download/qq_41221322/…

Wlan——STA上线流程与802.11MAC帧讲解以及报文转发路径

目录 802.11MAC帧基本概念 802.11帧结构 802.11MAC帧的分类 管理帧 控制帧 数据帧 STA接入无线网络流程 信号扫描—管理帧 链路认证—管理帧 用户关联—管理帧 用户上线 不同802.11帧的转发路径 802.11MAC帧基本概念 802.11协议在802家族中的角色位置 其中802.3标…

数据结构——栈和队列OJ题

栈和队列小提升! 前言一、用队列实现栈队列接口实现(1)栈的接口定义(2)栈的初始化(3)入栈函数的定义(4)出栈函数的定义(5)查找栈顶元素&#xff0…

Python“牵手”当当网商品详情API接口运用场景及功能介绍,当当网API接口申请指南

当当网是全球知名的综合性网上购物商城,由国内著名出版机构科文公司、美国老虎基金、美国IDG集团、卢森堡剑桥集团、亚洲创业投资基金(原名软银中国创业基金)共同投资成立。当当网是北京当当网信息技术有限公司营运的一家中文购物网站&#x…

QT版权查询

文章目录 QT工具版权QT模块版权查询 根据条件自动筛选: Qt Features, Framework Essentials, Modules, Tools & Add-Ons QT工具版权 Licensing QT模块版权查询 在 All Modules 中点击进入每个模块,在详细内容中一般有Lisence相关内容。 Licens…

uniapp - 实现卡片式胶囊单选后右上角出现 “√“ 对勾对号选中效果功能,适用于小程序h5网页app全平台通用(一键复制组件源码,开箱即用!)

效果图 uniapp全平台兼容(小程序/h5网页/app)实现点击选择后,右上角出现 √ 对号效果(角标形式展现),功能组件, 改个样式,直接复制使用该组件。 组件源码 在 components 组件文件夹下,随便建立一个 .vue 文件,一键复制下方源码。

DockerFile解析

1. 是什么 Dockerfile是田来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本 1.1 概述 1.2 官网 Dockerfile reference | Docker Documentation 1.3 构建三步骤 1. 编写dockerfile文件 2. docker build命令构建镜像 3. docker run依镜像运…