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

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.rhkb.cn/news/331012.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合、Collection接口特点和常用方法

1、集合介绍 对于保存多个数据使用的是数组,那么数组有不足的地方。比如, 长度开始时必须指定,而且一旦制定,不能更改。 保存的必须为同一类型的元素。 使用数组进行增加/删除元素的示意代码,也就是比较麻烦。 为…

分布式数据库HBase入门指南

目录 概述 HBase 的主要特点包括: HBase 的典型应用场景包括: 访问接口 1. Java API: 2. REST API: 3. Thrift API: 4. 其他访问接口: HBase 数据模型 概述 该模型具有以下特点: 1. 面向列: 2. 多维: 3. 稀疏: 数据存储: 数据访问: HBase 的数据模型…

你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解

目录 一、onMounted的前世今生 1.1、onMounted是什么 1.2、onMounted在vue2中的前身 1.2.1、vue2中的onMounted 1.2.2、Vue2与Vue3的onMounted对比 1.3、vue3中onMounted的用法 1.3.1、基础用法 1.3.2、顺序执行异步操作 1.3.3、并行执行多个异步操作 1.3.4、执行一次…

基于STM32实现智能光照控制系统

目录 引言环境准备智能光照控制系统基础代码示例:实现智能光照控制系统 光照传感器数据读取PWM控制LED亮度用户界面与显示应用场景:智能家居与农业自动化问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式系统中使用C语言实现智…

纯代码如何实现WordPress搜索包含评论内容?

WordPress自带的搜索默认情况下是不包含评论内容的,不过有些WordPress网站评论内容比较多,而且也比较有用,所以想要让用户在搜索时也能够同时搜索到评论内容,那么应该怎么做呢? 网络上很多教程都是推荐安装SearchWP插…

数据结构----堆的实现(附代码)

当大家看了鄙人的上一篇博客栈后,稍微猜一下应该知道鄙人下一篇想写的博客就是堆了吧。毕竟堆栈在C语言中常常是一起出现的。那么堆是什么,是如何实现的嘞。接下来我就带大家去尝试实现一下堆。 堆的含义 首先我们要写出一个堆,那么我们就需…

基于地理坐标的高阶几何编辑工具算法(4)——线分割面

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理 工具步骤 选中待分割面,点击“线分割面”工具,绘制和面至少两个交点的线,双击结束,执行分割操作 应用场景 快速切分大型几何面,以降低面的复杂度&…

数据结构篇其三---链表分类和双向链表

​ 前言 数据结构篇其二实现了一个简单的单链表,链表的概念,单链表具体实现已经说明,如下: 单链表 事实上,前面的单链表本质上是无头单向不循环链表。此篇说明的双向链表可以说完全反过来了了。无论是之前的单链表还…

ElasticSearch - 删除已经设置的认证密码(7.x)

文章目录 Pre版本号 7.x操作步骤检查当前Elasticsearch安全配置停止Elasticsearch服务修改Elasticsearch配置文件删除密码重启Elasticsearch服务验证配置 小结 Pre Elasticsearch - Configuring security in Elasticsearch 开启用户名和密码访问 版本号 7.x ES7.x 操作步骤 …

从ES到ClickHouse,Bonree ONE平台更轻更快!

本文字数:8052;估计阅读时间:21 分钟 作者:博睿数据 李骅宸(太道)& 娄志强(冬青) 本文在公众号【ClickHouseInc】首发 本系列第一篇内容: 100%降本增效!…

01-02.Vue的常用指令(二)

01-02.Vue的常用指令(二) 前言v-model:双向数据绑定v-model举例:实现简易计算器Vue中通过属性绑定为元素设置class 类样式引入方式一:数组写法二:在数组中使用三元表达式写法三:在数组中使用 对…

redis--redis Cluster

简介 解决了redis单机写入的瓶颈问题,即单机的redis写入性能受限于单机的内存大小、并发数量、网卡速率等因素无中心架构的redis cluster机制,在无中心的redis集群当中,其每个节点保存当前节点数据和整个集群状态,每个节点都和其他所有节点连…

数组和指针的联系(C语言)

数组和指针是两种不同的数据类型,数组是一种构造类型,用于存储一组相同类型的变量;而指针是一种特殊类型,专门用来存放数据的地址。数组名除了sizeof(数组名)和&数组名表示整个数组外,其他情况下都表示的是首元素的…

百度集团:AI重构,走到哪了?

内有自家公关一号“自曝”狼性文化,主动制造舆论危机。 外有,OpenAI、谷歌、字节、华为等大模型劲敌扎堆迭代新产品, 强敌环伺。 今天我们要说的是早就从BAT掉队的——百度。 最近,在武汉Aapollo Day 2024上,百度发布了…

增强ev代码签名证书2300

代码签名证书是软件开发者们确保软件完整性和安全性的重要工具之一。在各种类型的代码签名证书中,增强EV代码签名证书拥有许多独特的功能而受到企业开发者的欢迎,今天就随SSL盾小编了解增强EV代码签名证书的申请条件以及申请流程。 1.增强型EV代码签名证…

npm介绍、常用命令详解以及什么是全局目录

目录 npm介绍、常用命令详解以及什么是全局目录一、介绍npm的主要功能npm仓库npm的配置npm的版本控制 二、命令1. npm init: 初始化一个新的Node.js项目&#xff0c;创建package.json文件。package.json是一个描述项目信息和依赖关系的文件。2. npm install <package_name&g…

Linux 内核之 mmap 内存映射的原理及源码解析

文章目录 前言一、简介1. mmap 是什么&#xff1f;2. Linux 进程虚拟内存空间 二、mmap 内存映射1. mmap 内存映射的实现过程2. mmap 内存映射流程2.1 mmap 系统调用函数2.2 ksys_mmap_pgoff 函数2.3 vm_mmap_pgoff 函数2.4 do_mmap_pgoff 函数2.5 do_mmap 函数2.6 get_unmappe…

ElasticSearch操作之重置密码脚本

ElasticSearch操作之重置密码脚本 #!/bin/bash # 使用样例 ./ES密码重置.sh 旧密码 新密码# 输入旧密码 es_old_password$1# 设置新的密码变量 es_password$2# 正确响应 es_reponse{"acknowledged":true}# 检查Elasticsearch是否在运行 if pgrep -f elasticsearch &g…

DNF手游攻略:角色培养与技能搭配!游戏辅助!

角色培养和技能搭配是《地下城与勇士》中提升战斗力的关键环节。每个职业都有独特的技能和发展路线&#xff0c;合理的属性加点和技能搭配可以最大化角色的潜力&#xff0c;帮助玩家在各种战斗中立于不败之地。接下来&#xff0c;我们将探讨如何有效地培养角色并搭配技能。 角色…

Leetcode | 5-21| 每日一题

2769. 找出最大的可达成数字 考点: 暴力 数学式子计算 思维 题解 通过式子推导: 第一想法是二分确定区间在区间内进行查找是否符合条件的, 本题最关键的便是 条件确定 , 第二种方法: 一般是通过数学公式推导的,这种题目我称为数学式编程题 代码 条件判断式 class Solution { …