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

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函数标准。

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

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

相关文章

基于Docker的ElasticSearch、Kibana服务搭建并开启用户鉴权

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:云原生与服务部署专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 服务搭建 2.1. 部署ElasticSearch 2.2. 部署Kibana 3. …

Spring中RestTemplate用法

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 RestTemplate 是从…

十进制异步计数器

十进制异步计数器 十进制异步加法计数器 【例1】设计一个十进制异步加法计数器,要求电路按 8421 BCD 码进行加法计数 Step1:建立原始状态转换图 根据状态转换图画出对应的时序图,然后从翻转要求出发,为每个触发器选择合适的时钟…

清理安卓手机广告

保存脚本另存为 Fuck_AD.sh,在手机执行后体验效果。 echo ""echo " " echo " - 开始执行清理广告库文件" sleep 3files(/data/app/*/*/lib/arm64/libpangleflipped.so/data/app/*/*/lib/arm64/libzeus_direct_dex.so/data/app/*/*/l…

Python+Flask+Pandas怎样实现任意时间范围的对比数据报表

话不多说,有图有源码: 1.上图 2.因为是低代码的,只能发重要有用的代码片段了 实现思路:1)获取指定时间范围内的数据:2)df合并 #----------年份替换----------------for syear in range(int(byear),int(eyear)1):start_datestr(syear)strbdate[4:]end_datestr(syear)stredate…

[Spring Cloud] (9)XSS拦截器

文章目录 简述本文涉及代码已开源Fir Cloud 完整项目防XSS攻击必要性:作用: 整体效果后端增加拦截器开关配置pom中增加jsoup依赖添加JSON处理工具类添加xss拦截工具类防XSS-请求拦截器 前端 简述 本文涉及代码已开源 本文网关gateway,微服务…

python-找出四位数中的玫瑰花数

【问题描述】玫瑰花数指一个n位数(n>4),其每位上的数字的n次幂之和等于本身。 请求出所有四位数中的玫瑰花数 【输入形式】 【输出形式】 【样例输入】 【样例输出】1634 8208 9474 【样例说明】 【评分标准】 完整代码如下: for n in ra…

小程序-修改用户头像

1、调用拍照 / 选择图片 // 修改头像 const onAvatarChange () > { // 调用拍照 / 选择图片 uni.chooseMedia({ // 文件个数 count: 1, // 文件类型 mediaType: [image], success: (res) > { console.log(res) // 本地临时文件路径 (本地路径) const { tempFilePath } …

【大数据】MapReduce JAVA API编程实践及适用场景介绍

目录 1.前言 2.mapreduce编程示例 3.MapReduce适用场景 1.前言 本文是作者大数据系列专栏的其中一篇,前文我们依次聊了大数据的概论、分布式文件系统、分布式数据库、以及计算引擎mapreduce核心概念以及工作原理。 书接上文,本文将会继续聊一下mapr…

【zotero6】ZotCard笔记模板分享

zotcard插件下载链接:传送门 因为zotero出了新的zotero7,现在下载插件会出现zotero6和zotero7不兼容的情况,通过这个链接可以区分适配不同版本的插件。 下载后点击工具的附加组件 然后选择通过文件添加 就可以添加插件了 再通过 工具->…

【全开源】二手车置换平台系统小程序(FastAdmin+ThinkPHP+Uniapp)

二手车置换平台系统 特色功能: 车辆评估:系统提供车辆状况、性能和价值的评估功能,通过拍照、上传图片等方式自动识别车辆信息并给出估价建议,帮助买家和卖家更准确地了解车辆价值。 在线交易:平台提供在线购车、售车…

SpringBoot实现邮箱验证码

自行创建一个SpringBoot项目 导入SpringBoot所需要的邮箱验证码的包 <!--邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version>…

MCS-51伪指令

上篇我们讲了汇编指令格式&#xff0c;寻址方式和指令系统分类&#xff0c;这篇我们讲一下单片机伪指令。 伪指令是汇编程序中用于指示汇编程序如何对源程序进行汇编的指令。伪指令不同于指令&#xff0c;在汇编时并不翻译成机器代码&#xff0c;只是会汇编过程进行相应的控制…

java继承使用细节二

构造器 主类是无参构造器时会默认调用 public graduate() {// TODO Auto-generated constructor stub也就是说我这里要用构造器会直接调用父类。它是默认看不到的 &#xff0c;System.out.println("graduate");} 但当主类是有参构造器如 public father_(int s,doubl…

考研计组chap1计算机系统概述

目录 一、计算机发展历程(不考了) 二、计算机硬件的基本组成 3 1.五个部分 &#xff08;1&#xff09;输入设备 &#xff08;2&#xff09;控制器 &#xff08;3&#xff09;运算器 &#xff08;4&#xff09;&#xff08;主&#xff09;存储器 &#xff08;5&#xff0…

Python高效数据分析的综合复习指南【时间处理与机器学习】

五、时间处理 一、时间戳-----Timestamp类型 方法1&#xff1a;使用Timestamp创建 pandas.Timestamp(ts_input, freqNone, tzNone, unitNone, yearNone, monthNone, dayNone, hourNone, minuteNone, secondNone, microsecondNone, tzinfoNone, offsetNone) import pandas a…

微信好友这样打标签更高效!

为什么要做标签管理? ① 通过标签管理&#xff0c;可以清晰的知道每个私域好友的关系程度&#xff0c;如哪些是忠诚客户&#xff0c;哪些是意向客户&#xff0c;哪些是刚加上的客户等等。 这样就知道下一步要怎么操作&#xff0c;做到精细化运营。如忠诚客户跟进维护&#x…

子分支想主分支发起合并请求

请求合并 1.点击 git Web 页右上角打开 Merge requests 进入新页&#xff0c;点击右上角。注意选择要合并的项目 2.左边是源分支&#xff0c;右边是要合并的目标分支。 3.最后点击左下角绿色按钮 4.第一个红框 Assignee&#xff0c;选择要通知去合并的人。第二个红框不动&#…

qt5core.dll怎么下载,qt5core.dll下载安装详细教程

不知道大家有没有遇到过qt5core.dll丢失这个问题&#xff1f;目前这个问题还是比较常见的&#xff0c;一般使用电脑比较多的的人&#xff0c;有很大几率遇到这种qt5core.dll丢失的问题。今天主要针对这个问题&#xff0c;来给大家讲解一下一键修复qt5core.dll的方法。 Qt5Core.…

基于FPGA的函数信号发生器设计

本科时期的一个课设&#xff0c;现在将他分享出来&#xff0c;写了很详细的文章&#xff0c;可以直接拿去使用&#xff1a;设计采用波形查找表和相位累加器的方法实现DDS&#xff0c;查找表的数据位宽为8位&#xff0c;采样点数为4096。波形产生范围是100Hz-20MHz&#xff0c;最…