报文鉴别、实体鉴别

目录

鉴别

1  报文鉴别 

1.1 用数字签名进行鉴别(原理)

可保证机密性的数字签名

1.2  密码散列函数

MD5 算法

MD5 算法计算步骤

安全散列算法 SHA-1

1.3 用报文鉴别码实现报文鉴别

用报文鉴别码 MAC 鉴别报文

使用已签名的报文鉴别码 MAC 对报文鉴别

2  实体鉴别

最简单的实体鉴别过程

使用不重数进行鉴别

使用公钥体制进行不重数鉴别

假冒攻击

中间人攻击 


鉴别

·鉴别 (authentication) 是网络安全中一个很重要的问题。

鉴别包括:

1  报文鉴别 

1.1 用数字签名进行鉴别(原理)

鉴别发送者: A 用其私钥 SKA 对报文 X 进行 D 运算得到的密文。B 为了核实签名,用 A 的公钥 PKA 进行 E 运算,还原出明文 X。

鉴别报文: 由于无法得到并使用 A 的私钥 SKA 对报文 X 进行 D 运算,B 对收到的报文进行核实签名的 E 运算将会得出不可读的明文,可以发现报文已被篡改过。

不可否认: A 要抵赖曾发送报文给 B,B 可把 X 及 D_SK_A(X) 出示给进行公证的第三者。第三者很容易用 PKA去证实 A 确实发送 X   给 B。

数字签名的三个功能

        1.实体鉴别:证明来源。

        2.报文鉴别:防篡改,保证完整性。

        3.不可否认:防抵赖。

关键:没有其他人能够持有 A 的私钥 SKA。

可保证机密性的数字签名

·先后进行两次 D 运算两次 E 运算,运算量太大,花费非常多的 CPU 时间。目前普遍使用开销小得多的对称密钥加密。

·要实现数字签名必须使用公钥密码,但一定要设法减小公钥密码算法的开销。

1.2  密码散列函数

·散列函数(又称为杂凑函数,哈希函数)在计算机领域中广泛使用。

·符合密码学要求的散列函数又常称为密码散列函数 (cryptographic hash function)。

·密码散列函数 H(X) 应具有以下四个特点

        1.结果的长度应较短和固定。

        2.应具有很好的抗碰撞性,避免不同的输入产生相同的输出。

        3.应是单向函数(one-way function),不能逆向变换。

        4.其他特性:输出的每一个比特都与输入的每一个比特有关;仅改动输入的一个比特,输出也会相差极大;包括许多非线性运算等。

密码散列函数是单向的:

实用的单向密码散列函数:

·MD5:Message Digest 5,报文摘要的第 5 个版本。

·SHA-1:Secure Hash Algorithm,安全散列算法

·SHA-1 比 MD5 更安全,但计算起来却比 MD5 要慢些。

·1995 年发布的新版本 SHA-1 [RFC 3174] 在安全性方面有了很大的改进。

MD5 算法

·MD5 的设计者 Rivest 曾提出一个猜想:

        根据给定的 MD5 报文摘要代码,要找出一个与原来报文有相同报文摘要的另一报文,其难度在计算上几乎是不可能的。

·基本思想:用足够复杂的方法,使报文摘要代码中的每一位都与原来报文中的每一位有关。

MD5 算法计算步骤

1.附加:把任意长的报文按模 2^{64}计算其余数(64位),追加在报文的后面。

2.填充:在报文和余数之间填充 1~512 位,使得填充后的总长度是 512 的整数倍。填充的首位是 1,后面都是 0。

3.分组:把追加和填充后的报文分割为多个 512 位的数据块,每个 512 位的报文数据再分成 4 个 128 位的数据块。

4.计算:将 4 个 128 位的数据块依次送到不同的散列函数进行 4 轮计算。每一轮又都按 32 位的小数据块进行复杂的运算。一直到最后计算出 MD5 报文摘要代码(128 位)。

在2004年,中国学者王小云发表了轰动世界的密码学论文,证明可以用系统的方法找出一对报文,这对报文具有相同的 MD5 报文,而这仅需 15 分钟,或不到 1 小时。MD5 的安全性就产生了动摇。随后,又有许多学者开发了对 MD5 实际的攻击。MD5 最终被安全散列算法 SHA 标准所取代。

安全散列算法 SHA-1

·安全散列算法 SHA (Secure Hash Algorithm):由美国标准与技术协会 NIST 提出的一个散列算法系列。

·和 MD5 相似,但其散列值的长度为 160 位

·SHA-1 也是先把输入报文划分为许多 512 位长的数据块,然后经过复杂运算后得出散列值。

但 SHA-1 后来也被证明其实际安全性并未达到设计要求,并且也曾被王小云教授的研究团队攻破。谷歌也宣布了攻破 SHA-1 的消息。许多组织都已纷纷宣布停用 SHA-1。

·SHA-1 已被 SHA-2、SHA-3 所替代。

·SHA-2 的多种变型: SHA-224,SHA-256,SHA-384,SHA-512。

·SHA-3 的多种变型: SHA3-224,SHA3-256,SHA3-384,SHA3-512。

·SHA-3 采用了与 SHA-2 完全不同的散列函数。

目前,密码学家尚无法把一个任意已知的报文 X,篡改为具有同样 MD5 或 SHA-1 散列值的另一报文 Y。

1.3 用报文鉴别码实现报文鉴别

·散列函数问题:可以防篡改,但不能防伪造,不能真正实现报文鉴别。

·解决方法:采用报文鉴别码 MAC。

双方共享的密钥 K 报文 X 进行拼接,然后进行散列运算。 散列运算得出的结果为固定长度的 H(X + K),称为报文鉴别码 MAC (Message Authentication Code)。

用报文鉴别码 MAC 鉴别报文

·只要入侵者不掌握密钥 K,就无法伪造 A 发送的报文(因为无法伪造 A 的 MAC)。

·鉴别过程并没有执行加密算法,消耗的计算资源少。

这样的报文鉴别码称为数字签名数字指纹

HMAC 与 MAC 不同

MAC

        ·把密钥 K 作为计算 MAC 的参数。

        ·可以使用多种计算 MAC 的算法。

HMAC (Hashed MAC):

        ·把密钥 K 拼接在明文后面。

        ·使用密码散列算法对其进行运算。

        ·得出的散列值就是 HMAC。

使用已签名的报文鉴别码 MAC 对报文鉴别

·问题:如何分发共享密钥 K?

·解决:采用公钥系统。

        ·没有对报文进行加密,而是对很短的散列 H(X) 进行 D 运算。

        ·入侵者没有 A 的私钥,因此不可能伪造出 A 发出的报文。

2  实体鉴别

·实体鉴别与报文鉴别不同。

·报文鉴别:对每一个收到的报文都要鉴别报文的发送者。

·实体鉴别:在系统接入的全部持续时间内,对和自己通信的对方实体只需验证一次

最简单的实体鉴别过程

·使用共享的对称密钥 KAB 实现实体鉴别。

存在明显漏洞:不能抵抗重放攻击。

重放攻击 (replay attack):入侵者 C 不需要破译报文,而是直接把由 A 加密的报文发送给 B,使 B 误认为 C 就是 A。B 就会向伪装成 A 的 C 发送许多本来应当发给 A 的报文。

使用不重数进行鉴别

·不重数 (nonce) :是一个不重复使用的大随机数,即“一次一数”。

·由于不重数不能重复使用,所以 C 在进行重放攻击时无法重复使用所截获的不重数。

使用公钥体制进行不重数鉴别

·在使用公钥密码体制时,可以对不重数进行签名鉴别。

·使用公钥核实签名。

假冒攻击

·C 冒充是 A,发送报文给 B,说:“我是 A”。

·B 选择一个不重数 RB,发送给 A,但被 C 截获了。

·C 用自己的私钥 SKC 冒充是 A 的私钥,对 RB 加密,并发送给 B。

·B 向 A 发送报文,要求对方把解密用的公钥发送过来,但这报文也被 C 截获了。

·C 把自己的公钥 PKC 冒充是 A 的公钥发送给 B。

·B 用收到的公钥 PKC 对收到的加密的 RB 进行解密,其结果当然正确。

·于是 B 相信通信的对方是 A,接着就向 A 发送许多敏感数据,但都被 C 截获了。

中间人攻击 

·可见,公钥分配以及认证公钥的真实性是一个非常重要的问题。

欢迎一起学习~

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

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

相关文章

论文阅读:MotionNet基于鸟瞰图的自动驾驶联合感知和运动预测

MotionNet: Joint Perception and Motion Prediction for Autonomous Driving Based on Bird’s Eye View Maps MotionNet:基于鸟瞰图的自动驾驶联合感知和运动预测 论文地址:MotionNet: Joint Perception and Motion Prediction for Autonomous Drivi…

【AI视野·今日CV 计算机视觉论文速览 第294】Mon, 22 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 22 Jan 2024 Totally 64 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data Authors Lihe Yang, Bingyi Kang, Zilong Huang, X…

vue3-组合式 API

什么是组合式 API? 组合式 API (Composition API) 是一系列 API 的集合,使我们可以使用函数而不是声明选项的方式书写 Vue 组件。它是一个概括性的术语,涵盖了以下方面的 API: 响应式 API:例如 ref() 和 reactive()&a…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时,经常出现标准是: 精确 自动化测试用例应该测试一件事,只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他…

车载软件架构 —— Adaptive AUTOSAR软件架构中通信管理、诊断管理策略

车载软件架构 —— Adaptive AUTOSAR软件架构中通信管理、诊断管理策略 第四篇 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意…

链表OJ题目合集第一弹:移除元素,反转链表,中间结点,倒数第k个结点,合并有序链表,回文结构,相交链表判断。(C语言版,有详细解析、图示和链接)

目录 前言 1. 移除链表元素 (1)题目及示例 (2)解析 (3)代码 2. 反转链表 (1)题目及示例 (2)题目解析及思路 3.链表的中间结点 (1&#…

最适合初学者的Python入门详细攻略,一文讲清,赶紧收藏!

前言 目前python可以说是一门非常火爆的编程语言,应用范围也非常的广泛,工资也挺高,未来发展也极好。 Python究竟应该怎么学呢,我自己最初也是从零基础开始学习Python的,给大家分享Python的学习思路和方法。一味的买…

2024年【高处安装、维护、拆除】考试总结及高处安装、维护、拆除考试技巧

题库来源:安全生产模拟考试一点通公众号小程序 高处安装、维护、拆除考试总结根据新高处安装、维护、拆除考试大纲要求,安全生产模拟考试一点通将高处安装、维护、拆除模拟考试试题进行汇编,组成一套高处安装、维护、拆除全真模拟考试试题&a…

ArcGIS学习(八)基于GIS平台的控规编制办法

ArcGIS学习(八)基于GIS平台的控规编制办法 上一任务我们学习了”如何进行图片数据的矢量化?" 这一关我们来学习一个比较简单的案例一一”如何在ArcGIS中录入控规指标,绘制控规图纸?" 首先,先来看看这个案例的分析思路以及导入CAD格式的控规图纸。 接着,来看…

VMwareWorkstation17.0虚拟机安装搭建Windows 11虚拟机(完整图文详细步骤教程)

VMwareWorkstation17.0虚拟机安装搭建Windows 11虚拟机(完整图文详细步骤教程) 一、下载Windows11二、配置Windows11虚拟机机器环境三、启动Windows11系统 一、下载Windows11 【点击打开最全面的Windows 11原版系统镜像下载地址】 https://blog.csdn.ne…

FPGA中一些基本概念原理的区分

一、wire型变量与reg变量 在 Verilog 中,wire 和 reg 是两种不同类型的变量,它们有着不同的特性和用途 1.1 wire 变量 wire 变量用于连接模块中的输入、输出以及内部信号线。 它主要用于表示连续赋值的逻辑连接,类似于硬件电路中的导线。 …

春节专题|产业7问:区块链厂商的现在和未来——基础设施厂商

2023转瞬即逝,不同于加密领域沉寂一整年后在年末集中爆发,对于我国的区块链厂商而言,稳中求胜才是关键词,在平稳发展的基调下,产业洗牌也悄无声息的到来。 从产业总体而言,在经过了接近3年的快速发展后&…

第18讲 投票帖子管理实现

后端&#xff1a; /*** 删除指定id的投票信息* param id* return*/ GetMapping("/delete/{id}") Transactional public R delete(PathVariable(value "id")Integer id){voteDetailService.remove(new QueryWrapper<VoteDetail>().eq("vote_id…

【探索Linux】—— 强大的命令行工具 P.22(POSIX信号量)

阅读导航 引言一、POSIX信号量的基本概念二、信号量的相关操作1 . 初始化信号量sem_init ( )&#xff08;1&#xff09;原型&#xff08;2&#xff09;参数&#xff08;3&#xff09;返回值&#xff08;4&#xff09;示例代码 2 . 等待信号量&#xff08;1&#xff09;sem_wait…

Stable Diffusion webui安装详细教程

上一篇文章介绍了sd主流的ui&#xff0c;相信大家已经有所了解&#xff0c;下面为大家介绍sd-webui的安装详细教程 文章目录 一、 安装包说明二、对电脑的要求三、安装文件介绍四、安装步骤五、电脑问题与云主机六、界面简要说明及通用反向提示词 一、 安装包说明 通常我们使…

手把手一起开发SV4E-I3C设备(一)

1、SV4E-I3C设备介绍 SV4E-I3C 是Introspect Technology基于 13C 的设备接口开发、测试和编程的全套解决方案。该设备集三种仪器于一身&#xff0c;可用作协议练习器、协议分析器和通用 I3C 器件编程器&#xff0c;设备实物图片如图所示&#xff1a; SV4E-I3C设备的物理连接如…

给定n个结点m条边的简单无向图,判断该图是否存在鱼形状的子图:有一个环,其中有一个结点有另外两条边,连向不在环内的两个结点。若有,输出子图的连边

题目 思路: #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn = 1e6 + 5, inf = 1e18 * 3, maxm = 4e4 + 5,…

Junit测试套件(Test Suite)

0. 什么是测试套件 对多个测试类的统一执行 只有一个测试类 点击一下执行就好有 5个测试类 分别打开 挨个点执行有100个测试类 &#xff1f;&#xff1f;分别点开执行 为100个测试类创建一个测试套件&#xff0c;然后再执行一次测试套件 √ 一个测试套件“囊括“三个测试类…

跟着pink老师前端入门教程(JavaScript)-day02

三、变量 &#xff08;一&#xff09;变量概述 1、什么是变量 白话&#xff1a;变量就是一个装东西的盒子 通俗&#xff1a;变量是用于存放数据的容器&#xff0c;通过变量名获取数据&#xff0c;甚至数据可以修改 2、变量在内存中的存储 本质&#xff1a;变量是程序在内存…

作业帮 x TiDB丨多元化海量数据业务的支撑

导读 作业帮是一家成立于 2015 年的在线教育品牌&#xff0c;致力于用科技手段助力教育普惠。经过近十年的积累&#xff0c;作业帮运用人工智能、大数据等技术&#xff0c;为学生、老师、家长提供学习、教育解决方案&#xff0c;智能硬件产品等。随着公司产品和业务场景越来越…