密码学学习笔记(十二):压缩函数 - Davies–Meyer结构

news2024/12/23 16:53:11

密码学中压缩函数是指将输入的任意长度消息压缩为固定长度输出的函数。压缩函数以两个特定长度的数据为输入,产生与其中一个输入大小相同的输出。简单来说就是它接受一些较长的数据,输出更短的数据。

压缩函数接收长度为X和Y的两个不同输入,并生成长度为X或Y的输出

在CRYPTO 2016,Cogliati和Seurin介绍了Encrypted Davies-Meyer(EDM)结构。

其中p1、p2是两个排列

Cogliati和Seurin证明了EDM^{p1,p2}的行为类似于复杂度为2^{2n/3}的随机函数,并实际上推测2^{n}是可能的。

构造方法

XOR操作

XOR异或操作是一种按位操作的运算。

1\oplus 0 = 1

1\oplus 1 = 0

0\oplus 1 = 1

0\oplus 0 = 0

XOR的操作对象是2个比特。除两个操作数都是1的情况外,XOR运算与OR运算的结果完全一样。

Davies–Meyer

Davies–Meyer构造方法是是一种很常见的构造压缩函数的方法。压缩函数的第一个和输入块作为分组密码的密钥;第二个输入块作为分组密码的输入进行加密。然后用第二个输入块与分组密码的输出进行异或XOR操作。

使用分组密码F的Davies-Meyer构造的示意图如下所示:

压缩函数的Davies-Meyer构造使用了n位密钥长度和l位块长度的分组密码。

压缩函数可以被定义为:

为了证明所得到的压缩函数的抗碰撞性,我们将F建模为理想密码(理想随机强置换)。任何用于实例化理想密码的分组密码都必须根据理想密码提出的以下更严格的要求进行评估。

  • 所有各方都可以访问一个用于随机密钥排列的预言机。

F : \left \{ 0,1 \right \}^{n} \times F : \left \{ 0,1 \right \}^{l} \rightarrow F : \left \{ 0,1 \right \}^{l}

以及它的逆F^{-1}

另一种认为这一点的方法是,每个密钥k\in \left \{ 0,1 \right \}^{n}在l个比特串上指定了一个独立的、一致的置换F(k,·)。 计算F(或F^{-1})的唯一方法是用(k,x)显式查询预言机并接收回F(k,x)。

  • 理想的密码模型意味着不存在相关的密钥攻击。即,排列F(k,·)和F(k',·)必须独立地表现,即使例如,k和k'仅在一个比特上不同。
  • 不可能存在一种弱密钥k(例如,全0密钥),因为F(k,·)很容易与随机区分。
  • 即使在已知k的情况下,F(k,·)也应该是随机的。

如果F被建模为理想密码,那么Davies-Meyer构造产生了抗碰撞压缩函数。具体地说,任何对其理想密码预言机进行q< 2^{n/2}查询的攻击者都会发现概率最大为q^{2}/2^{l}的冲突。

  • SHA-2算法的压缩函数采用的就是Davies–Meyer构造方法

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

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

相关文章

v1.1!最新版Weblogic漏洞利用工具

工具简介 迫于目前现有的weblogic工具没怎么更新、payloay jdk适用版本等问题&#xff0c;所以基于superman18、sp4zcmd等项目&#xff0c;写一个weblogic工具&#xff0c;工具运行版本要求jdk 8&#xff0c;支持漏洞检测、命令执行、内存马注入、密码解密等&#xff08;深信服…

Linux进程理解【进程状态】

Linux进程理解【进程状态】 进程运行时&#xff0c;进程会被CPU调度&#xff0c;但系统中存在多个进程&#xff0c;进程运行的先后顺序等等该怎么保证呢&#xff1f;OS将进程分成了运行、睡眠、休眠、暂停、死亡等几种状态来对进程进行管理&#xff0c;下面我将带大家学习进程…

工作--数组

一、遍历数组 1、filter&#xff1a; 新数组、return、条件表达式 &#xff08;不改变原数组&#xff09; 把满足条件的元素返回给 新数组&#xff0c;filter返回的是新数组 &#xff01;&#xff01;&#xff01;&#xff01; 赋值&#xff0c;会直接覆盖掉原来的值 使用…

react useState useEffect useMemo实际业务场景中的使用

下面的代码实现了上面图片的功能 import React, { useMemo } from "react"; import "./HomeHead.less"; import Img from "../assets/images/timg.jpg";const HomeHead function HomeHead(props) {{ /*父组件传过来的值 */}let { today } pro…

Gabor Filters

Gabor Filters: Manjunath, B. S., & Ma, W. Y. (1996). Texture features for browsing and retrieval of image data. IEEE Transactions on Pattern Analysis and Machine Intelligence, 18(8), 837-842. Gabor滤波器是一种基于Gabor函数的特定频率和方向选择性滤波器。…

Go语言之流指针类型,new函数

计算机中所有的数据都必须放在内存中&#xff0c;不同类型的数据占用的字节数不一样&#xff0c;例如 int 占用 4 个字节。为了正确地访问这些数据&#xff0c;必须为每个字节都编上号码&#xff0c;就像门牌号、身份证号一样&#xff0c;每个字节的编号是唯一的&#xff0c;根…

MySQL-DDL-表结构操作

DDL&#xff08;表操作&#xff09; 表的创建 以具体代码的显示展示如何进行数据表的创建 CREATE DATABASE <数据库名>;CREATE TABLE <表名> (<列名1> <数据类型1> <约束>,<列名2> <数据类型2> <约束>,... ) 具体代码示例&am…

基于Spring Boot的高校专业学习预警系统设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的高校专业学习预警系统设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java sp…

C++正则表达式校验某个字符串是否是合格的email

C正则表达式校验某个字符串是否是合格的email 可以借助正则表达式校验某个字符串是否是合规的电子邮箱。对于邮箱的正则表达式有严格的模式&#xff0c;如&#xff1a;^[a-zA-Z0-9_&*-](?:\\.[a-zA-Z0-9_&*-])*(?:[a-zA-Z0-9-]\\.)[a-zA-Z]{2,7}$ 对应的C实现如下&a…

测试基础概念及常见开发模型和测试模型

目录 1.需求的概念 2.测试用例 3.什么是BUG 4.软件的生命周期 5.开发模型和测试模型 开发模型 瀑布模型 快速原型模型 螺旋模型 增量模型 敏捷方法 scrum三大角色 测试模型 V模型 W模型 1.需求的概念 衡量软件测试结果的依据—需求 概念&#xff1a;满足用户期…

变量与数据类型

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…

互联网未来信任锚点,后量子计算标准与迁移势在必行

作者 | 宋慧 出品 | CSDN 云计算 图片 | 视觉中国 IT、数字化正在深刻改变和加速全行业的效率与创新。不过&#xff0c;互联网的信息通信安全基石——密码学技术仍在使用第一代公钥密码算法&#xff0c;而随着量子计算的产生发展&#xff0c;以离散对数和大数分解这类等价的数…

深入理解网络通信和TCP、IP协议-01

1、网络协议 计算机网络是什么&#xff1f; 随着计算机技术发展&#xff0c;计算机的体积和价格都在下降&#xff0c;之前计算机多用于研究机构&#xff0c;现 阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存&#xff0c;人们…

【CXL】CXL ATS 介绍

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

《代码随想录》专题:二叉树的遍历

0、二叉树的遍历方式总结 二叉树主要有两种遍历方式 深度优先遍历&#xff1a;先往深走&#xff0c;遇到叶子节点再往回走。广度优先遍历&#xff1a;一层一层的去遍历。 从深度优先遍历和广度优先遍历进一步拓展&#xff0c;才有如下遍历方式 深度优先遍历 前序遍历&#xff…

【网络编程】网络编程核心概念与模式

配套环境 vscode、gcc、ubuntu22.04 概念描述 网络编程的本质 使用操作系统提供的接口函数&#xff0c;使得应用程序具备收发网络数据的能力。 网络接口在代码层面是操作系统提供的函数 应用程序通过网络接口使用操作系统的联网能力 网络编程核心概念 协议&#xff1a;为进…

STM32——led灯的点亮+闪烁+流水灯的实现

文章目录 一、LED点亮1.原理2.寄存器方式--代码3.库函数--代码4.结果展示 二、LED闪烁三、LED流水灯1.代码2.结果展示 一、LED点亮 1.原理 其方式有两种一种是寄存器方式一种是库函数方式&#xff0c;但其原理都是一样的。如原理图所示&#xff0c;与LED相连接的IO口置低电平…

HTML学习 第一部分(前端学习)

参考学习网站: 网页简介 (w3schools.com) 我的学习思路是&#xff1a;网站实践视频。 视频很重要的&#xff0c;因为它会给你一种开阔思路的方式。你会想&#xff0c;噢&#xff01;原来还可以这样。这是书本或者网站教程 所不能教给你的。而且&#xff0c;对一些教程&#…

【深度解析】OSPF-开放式最短路径优先协议

目录 重点&#xff1a; VPN---Virtual Private Network(虚拟专用网络隧道) OSPF网络类型&#xff1a; 表格视图&#xff1a; P2P---点对点协议 BMA---广播多路访问网络 NBMA---非广播多路访问网络 P2MP---点对多点协议 OSPF认证&#xff1a;检测类型&#xff0b;密码 …

陪诊师接单app开发|陪诊小程序开发|陪诊师接单系统开发

随着人们健康意识的提高和医疗服务的不断完善&#xff0c;陪诊服务逐渐受到人们的关注和需求。为了满足顾客的需求&#xff0c;陪诊小程序应运而生。下面将介绍陪诊小程序开发的几个优势。   1. 提供方便的预约和服务体验   陪诊小程序可以让顾客随时随地通过手机预约陪诊服…