现代密码学——消息认证和哈希函数

news2024/11/26 8:50:08

1.概述

1.加密-->被动攻击(获取消息内容、业务流分析)  

消息认证和数字签名-->主动攻击(假冒、重放、篡改、业务拒绝)

2.消息认证作用:

验证消息源的真实性,

消息的完整性(未被篡改、插入、删除)、顺序性和时间性(未重排、重放、延迟)

3.消息认证和数字签名都有认证的功能

数字签名除了认证外,还用于消息的不可否认性

4.认证符的产生的多种方式:

(1)消息认证码MAC

(2)哈希函数

(3)加密函数

①使用对称密码

真实性验证:仅有收发双方拥有密钥;

完整性验证:报文中有足够格式信息、冗余或校验时,修改密文会破坏这些信息

②使用公钥密码

公钥加密不能提供身份确认:任何人都可以拥有公钥;

私钥签名提供消息源身份确认,不提供保密性

2.消息认证码MAC

2.1消息认证码

1.过程

A计算消息认证码MAC -->  A给B发送M||MAC -->  B收到后计算MAC’比较MAC’=MAC是否成立

2.意义

①保证消息的完整性:收方相信发方发出的消息M没有被篡改

②保证了消息源的真实性:收方相信发方不是冒充的

③攻击者不知道密钥所以无法有效篡改消息,也无法冒充 MAC同时提供消息的完整性和消息源认证

3.消息认证码的使用方式

①只提供消息认证  M||Ck (M)

②提供消息认证和保密性(对明文认证)  Ek2(M||CK1(M))

③提供消息认证和保密性(对密文认证)  Ek2(M)||CK1(Ek2(M))

4.消息认证码的定义及使用方式

①MAC函数不必可逆,满足多到一映射

②加密秘钥与认证秘钥不同

5.缺点

穷搜索攻击

2.2数据认证算法

数据认证算法是消息认证码中最为广泛使用的一个,算法于CBC(分组链模式)的DES算法需被认证的数据(消息、记录、文件或程序)被分为64比特长的分组。

2.3 128-EEA3/128-EIA

128-EEA3是机密性保护算法。

128-EIA3是完整性保护算法。

3.哈希函

3.1哈希函数基本

将任意长的消息M变换为较短定长的一个值H(M),作为认证符。  ≈指纹

提供一种错误检测能力,改变消息中任何一位哈希值会改变。

3.2哈希函数的使用方式

  1. 第一类:先hash,再对称加密

①消息与哈希值链接后用单钥加密算法加密,见图(a)

提供消息的保密性、认证性、完整性。

② 用单钥加密算法仅对哈希值加密,见图(b)

提供消息的认证性、完整性,不要求保密性的情况。 

注:与MAC中的保密认证模式相比较,MAC使用两个不同密钥,保密认证能力分开,安全性更强。

2.第二类:先hash,再签名

③ 用公钥加密算法和发方私钥加密哈希值(即数字签名):

图(c) 提供消息的认证性、完整性、不可否认性 

将消息连同③产生的签名再用密钥加密:

图(d) 提供了消息的保密性和数字签名(认证性、完整性、不可否认性) 

仅对哈希值加密和签名的方式是提供认证性的常用方式

3.第三类:带共享秘密值的hash,实际上是一种MAC

⑤ 从发方计算消息M和秘密值S链接在一起的杂凑值作为M认证码:

图(e) 要求通信双方共享一个秘密值S;提供消息的认证性、完整性

对⑤中的消息认证码再增加单钥加密运算:图(f) 提供消息的保密性、认证性、完整性 (e)是HMAC标准的原型, (f)的安全性与带保密性的MAC认证模式相当,(d)的安全性最强

3.2 Hash函数的六个条件

(1)消息认证:

①输入可以是任何长度

②输出是定长

③对任意给定的消息x,计算H(x)较为容易

(2)安全要求:

①函数的单向性(抗逆向特性):对任意给定的h,求 H(x)=h的x,在计算上不可行的, 称H(x)为单向哈希函数 

弱单向哈希函数抗弱碰撞性):对给定消息x,找消息 y(y!= x),使得H(y)=H(x)在计算上不可行    

若存在--存在一个碰撞--碰撞性

强单向哈希函数抗强碰撞性):找到任何两个不同的输入x,y,使得H(x)=H(y)在计算上不可行 

3.3 对Hash函数的攻击:寻找碰撞

(1)生日攻击

①第I类生日攻击

针对弱单向性

若对H随机取k个输入,则至少有一个输入y,使得H(y)=H(x)的概率

复杂度为 O(2^n-1)

②第II类生日攻击

寻找哈希函数H的具有相同输出的两个任意输入的攻击方式

复杂度为 O(2^m/2 )

(2)中途相遇攻击

3.4 Hash函数结构

Hash函数迭代结构也称为MD结构,由Merkle和Damgard分别提出。目前使用的大多数Hash函数如MD5、SHA,其结构都采用这种迭代型的结构,消息分为固定长度分组,最后一个分组包含消息总长度。

由于含消息长度,所以攻击者必须找出具有相同散列值且长度相同的2个消息,或者找出两条长度不等但加入长度后散列值相同的消息,从而增加了攻击难度。

MD是消息摘要。

MD5算法是美国密码学家Ronald Rivest设计的。 

MD5常被用来验证数据完整性。

MD5算法采用迭代型散列函数的一般结构。

算法的输入为任意长的消息,分为512比特长的分组,输出为128比特的消息摘要。

有很好的混淆效果。

王小云教授破译了MD5。

SHA3成为新的Hash函数标准。

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

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

相关文章

Redis篇 有关Redis的认识和Redis的特性应用场景

Redis 一. Redis的基本概念1.1 应用/系统1.2 模块/组件1.3 分布式1.4 集群1.5 主/从1.6 中间件1.7 可用性1.8 响应时长1.9 吞吐 二.Redis的特性三.使用场景 一. Redis的基本概念 1.1 应用/系统 一个应用就是一个组,一个服务器程序 1.2 模块/组件 一个应用,里面有很多功能,每个…

spring boot打的包直接运行

Spring Boot 提供了一个插件 spring-boot-maven-plugin 把程序打包成一个可执行的jar包&#xff0c;直接执行java -jar xxx.jar即可以启动程序 1、引用 spring-boot-maven-plugin插件 <build><plugins><plugin><groupId>org.springframework.boot<…

2024年顶级算法-黑翅鸢优化算法(BKA)-详细原理(附matlab代码)

黑翅鸢是一种上半身蓝灰色&#xff0c;下半身白色的小型鸟类。它们的显著特征包括迁徙和捕食行为。它们以小型哺乳动物、爬行动物、鸟类和昆虫为食&#xff0c;具有很强的悬停能力&#xff0c;能够取得非凡的狩猎成功。受其狩猎技能和迁徙习惯的启发&#xff0c;该算法作者建立…

转运机器人负载最高可达 1000kg,重复精度高达±5mm

转运机器人&#xff0c;内部搭载ICD系列核心控制器&#xff0c;拥有不同的移载平台&#xff0c;负载最高可达 1000kg;重复精度高达5mm;支持 Wi-Fi漫游&#xff0c;实现更稳健的网络数据交互;无轨化激光 SLAM 导航&#xff0c;配合 3D 避障相机等多传感器进行安全防护。转运器人…

FreeRTOS_同步互斥与通信_环形buffer、队列_学习笔记

FreeRTOS_同步互斥与通信_概念_学习笔记 信号量、互斥量的本质是队列&#xff0c;队列的本质是加强版环形缓冲区 5 FreeRTOS数据传输的方法-环形buffer、队列 如果我有两个任务TaskA和TaskB&#xff0c;他俩可以同时运行。想要在他们之间传递数据&#xff0c;可以用一个全局变…

深入解析kube-scheduler的算法自定义插件

目录 ​编辑 一、问题引入 二、自定义步骤 三、最佳实践考虑 一、问题引入 当涉及到 Kubernetes 集群的调度和资源分配时&#xff0c;kube-scheduler 是一个关键组件。kube-scheduler 负责根据集群的调度策略&#xff0c;将 Pod 分配到适当的节点上。kube-scheduler 默认使…

YTM32的flash应用答疑-详解写保护功能

YTM32的flash应用答疑-详解写保护功能 文章目录 YTM32的flash应用答疑-详解写保护功能IntroductionPrincipleOperation & DemonstrationDemo #1 验证基本的写保护功能Demo #2 编程CUS_NVR设定EFM_ADDR_PROT初值Demo #3 启用写保护后试试块擦除操作 Conclusion Introduction…

HarmonyOS之ArkUI布局设计常见细节

这里写目录标题 1. Button设置带有渐变色的背景图片无效1.1 问题分析1.2 成功案例 2. 路由跳转失败2.1 问题分析 1. Button设置带有渐变色的背景图片无效 1.1 问题分析 说明&#xff1a;设置颜色渐变需先设置backgroundColor为透明色。 Button($r(app.string.login), { type…

python实现对应分析的随笔记

文档来源&#xff1a; Correspondence analysis 1 对应分析 参考&#xff1a; SPSS&#xff08;十二&#xff09;SPSS对应分析&#xff08;图文数据集&#xff09;案例6&#xff1a;SPSS–对应分析10 对应分析 对应分析的实质&#xff08;理论很复杂&#xff0c;但是结果很明…

春秋CVE-2022-23906

简介 CMS Made Simple v2.2.15 被发现包含通过上传图片功能的远程命令执行 (RCE) 漏洞。此漏洞通过精心制作的图像文件被利用。 正文 1.进入靶场2.进入登录界面&#xff0c;弱口令admin/123456 3.进入后台&#xff0c;文件上传点 4.上传一句话木马图片 5.复制图片&#xf…

爬虫基础1

一、爬虫的基本概念 1.什么是爬虫&#xff1f; 请求网站并提取数据的自动化程序 2.爬虫的分类 2.1 通用爬虫&#xff08;大而全&#xff09; 功能强大&#xff0c;采集面广&#xff0c;通常用于搜索引擎&#xff1a;百度&#xff0c;360&#xff0c;谷歌 2.2 聚焦爬虫&#x…

人工智能应用-实验4-蚁群算法求解 TSP

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;代码&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;分析结果&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;实验总结&#x1f9e1;&#x1f9e1; &#x1f9…

【GO基础】1. Go语言环境搭建

Go语言环境搭建 Go的三种安装方式Go标准包安装Windows 安装验证是否安装成功 4.Go的第一个程序 Hello World.go Go的三种安装方式 Go有多种安装方式&#xff0c;可以选择自己适合的。这里介绍三种最常见的安装方式&#xff1a; Go源码安装&#xff1a;这是一种标准的软件安装…

【NumPy】NumPy实战入门:统计与聚合(histogram、percentile、corrcoef、cov)详解

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

如何解决vcruntime140.dll丢失问题,详细介绍5种靠谱的解决方法

vcruntime140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;它为使用Visual C编译器开发的应用程序提供必要的运行时环境。该DLL文件包含了大量应用程序运行时需要调用的库函数&#xff0c;这些函数是实现C标准库、异常处理机制、RTTI&#xff08;运行…

IO端口编址

统一编址 特点 独立编址 特点 内存地址分配 区别 应用 IO端口地址译码 硬件上的实现 示例1&#xff1a; 示例2&#xff1a; IO指令 软件上的实现 示例

golang通过go-aci适配神通数据库

1. go-aci简介 go-aci是神通数据库基于ACI(兼容Oracle的OCI)开发的go语言开发接口&#xff0c;因此运行时需要依赖ACI驱动和ACI库的头文件。支持各种数据类型的读写、支持参数绑定、支持游标范围等操作。 2. Linux部署步骤 2.1. Go安装&#xff1a; 版本&#xff1a;1.9以上…

CleanMyMac X2024垃圾清理神器,让你的Mac保持飞速运行

在数字时代的浪潮中&#xff0c;我们的苹果电脑扮演了至关重要的角色。然而&#xff0c;随着数据的增长和存储需求的不断上升&#xff0c;不合理的文件管理往往会导致系统性能逐渐下降&#xff0c;影响我们的工作效率。为了有效应对这一挑战&#xff0c;许多用户转向使用专为Ma…

抖音运营_抖音电商介绍

截止20年8月&#xff0c;抖音的日活跃数高达6亿。 20年6月&#xff0c;上线抖店 &#xff08;抖音官方电商&#xff09; 一 抖店的定位和特色 1 一站式经营 帮助商家进行 商品交易、店铺管理、客户服务 等全链路的生意经营 2 多渠道拓展 抖音、今日头条、西瓜、抖音火山版…

MyBatisPlus使用流程

引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.4</version> </dependency> 版本号根据需要选取 在实体类上加注解声明&#xff0c;表信息 根据数…