报文鉴别、实体鉴别

news2024/12/22 23:02:40

目录

鉴别

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 截获了。

中间人攻击 

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

欢迎一起学习~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工程师日常:海丰县附城镇鹿境元宵开灯活动

海丰县附城镇鹿境元宵开灯活动 (蔡惠进搜集整理) 鹿境乡春节正月初十大老热,全县家喻户晓。为纪念先祖功德,在本乡车地建立蔡氏“济阳堂”大祖祠,并定年初十为开灯日,大祖开灯代代相传。凡移居外乡裔孙、“…

机器学习8-决策树

决策树(Decision Tree)是一种强大且灵活的机器学习算法,可用于分类和回归问题。它通过从数据中学习一系列规则来建立模型,这些规则对输入数据进行递归的分割,直到达到某个终止条件。 决策树的构建过程: 1.…

java 宠物医院系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 宠物医院系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

463. Island Perimeter(岛屿的周长)

问题描述 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有…

希捷与索尼集团合作生产HAMR写头激光二极管

最近有报道指出,希捷(Seagate)在生产其采用热辅助磁记录(HAMR)技术的大容量硬盘时,并非所有组件都在内部制造。根据日经新闻的一份新报告,希捷已与索尼集团合作,由索尼为其HAMR写头生…

qml中边界图片BorderImage的使用

1、基本概念 2、案例 原图,120*120像素 (1)水平和垂直方向上都设置为拉伸模式 import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.12ApplicationWindow {id: windowvisible: truew…

【c语言】人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

【学习笔记】一文打通Docker!(项目部署orCTF)

Docker What is Docker? 利用Docker 可以快速安装应用,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境,配置,系统函数库。 注意这个系统函数库,相当于在不同的操作版本…

反向迭代器------封装的力量

目录 一、list封装中模板参数Ref和Ptr的理解 二、反向迭代器的实现 一、list封装中模板参数Ref和Ptr的理解 对于反向迭代器,是我们在前面STL模拟实现中留下的一个问题。在之前的文章中,我们极大程度上的利用了模板,从而减少了许多的代码&…

【半监督图像分割 2023 】BHPC

【半监督图像分割 2023 】BHPC 论文题目:Semi-supervised medical image segmentation via hard positives oriented contrastive learning 中文题目:通过面向硬阳性的对比学习进行半监督医学图像分割 论文链接: 论文代码:https:/…

CCF编程能力等级认证GESP—C++6级—20231209

CCF编程能力等级认证GESP—C6级—20231209 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)闯关游戏工作沟通 答案及解析单选题判断题编程题1编程题2 单选题…

Midjourney绘图欣赏系列(五)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

2024023期传足14场胜负前瞻

新的一年祝大家行大运、发大财、中大奖!2024023期赛事由英超2场,德甲2场、意甲4场、西甲3场、法甲3场组成。售止时间为2月18日(周六)21点30分,敬请留意: 本期中深盘较少,1.5以下赔率仅1场&#…

二、ActiveMQ安装

ActiveMQ安装 一、相关环境二、安装Java8三、下载安装包四、启动五、其他命令六、开放端口七、后台管理 一、相关环境 环境:Centos7.9安装ActiveMQ版本:5.15.9JDK8 二、安装Java8 安装教程:https://qingsi.blog.csdn.net/article/details/…

RCS系统之:基础算法

设计仓库机器人的控制管理系统涉及到路径规划、任务分配、库存管理、通信系统等方面。以下是一个基本的仓库机器人控制管理系统方案的概述: 路径规划:设计一个路径规划系统,用于确定机器人在仓库内的最佳行驶路径,以最大程度地提…

学习数据结构和算法的第9天

题目讲解 移除元素 ​ 给你一个数组nums和一个值 val,你需要 原地 移除所有数值等于 val的元素,并返回移除后数组的新长度。 ​ 不要使用额外的数组空间,你必须仅使用0(1)额外空间并 原地 修改输入数组。 ​ 元素的顺序可以改变。你不需要…

使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南

导读 本指南为开发者提供了使用 Taro 框架开发鸿蒙原生应用的快速入门方法。Taro,作为一个多端统一开发框架,让开发者能够使用一套代码同时适配多个平台,包括鸿蒙系统。文章将详细介绍如何配置开发环境,以及如何利用 Taro 的特性…

leetcode hot100 拆分整数

在本题目中,我们需要拆分一个整数n,让其拆分的整数积最大。因为每拆分一次都和之前上一次拆分有关系,比如拆分6可以拆成2x4,还可以拆成2x2x2,那么我们可以采用动态规划来做。 首先确定dp数组的含义,这里dp…

linux学习进程控制【创建-终止-等待】

目录 1.进程创建 1.1fork函数 1.2写时拷贝 2.进程终止 2.1进程退出场景 2.2进程退出方式 3.进程等待 3.1进程等待的必要性 3.2等待方式 3.2.1wait() 3.2.2waitpid() 3.3轮训等待 总结: 1.进程创建 …

给定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,…