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

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

压缩函数接收长度为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.hqwc.cn/news/29682.html

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

相关文章

输入 jar cvf 后指令提示‘jar‘ 不是内部或外部命令,也不是可运行的程序

输入 jar cvf 后指令提示jar 不是内部或外部命令&#xff0c;也不是可运行的程序 一堆说jdk系统环境配置的文章&#xff0c;我都看哭了&#xff0c;还好有这位老兄拯救了我&#xff01;&#xff01;&#xff01;献上地址 https://www.cnblogs.com/wadezhou/p/16647474.html 我输…

[SQL系列] 从头开始学PostgreSQL Union Null 别名 触发器

初级的操作就是CRUD&#xff0c;但是高级的操作也是CRUD&#xff0c;只是语句写的更加复杂&#xff0c;不再是select * from table&#xff1b;这样简单&#xff0c;这次咱们学一些稍微高级点的。下面是上一篇文章。 [SQL系列] 从头开始学PostgreSQL 约束连接_Edward.W的博客-…

【Redis】高可用之三:集群(cluster)

本文是Redis系列第6篇&#xff0c;前5篇欢迎移步 【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型&#xff0c;各个文章总有些小不同&#xff0c;我们这里讨论的是Redis 7.0&#xff0c;为确保准确&#xf…

字幕切分视频

Whisper 仓库地址&#xff1a; https://github.com/openai/whisper 可用模型信息&#xff1a; 测试视频&#xff1a;18段&#xff0c;总共447S视频&#xff08;11段前&#xff1a;有11段开头有停顿的视频&#xff09; Tiny: 跑完&#xff1a;142S &#xff0c;11段前&#xf…

在线乞讨系统 Docker一键部署

begger乞讨网 在线乞讨 全球要饭系统前端界面后端界面H2 数据库 console运行命令访问信息支付平台 在线乞讨 全球要饭系统 在线乞讨全球要饭项目,支持docker一键部署&#xff0c;支持企业微信通知&#xff0c;支持文案编辑 前端界面 后端界面 H2 数据库 console 运行命令 项…

PID算法

PID&#xff0c;就是“比例&#xff08;proportional&#xff09;、积分&#xff08;integral&#xff09;、微分&#xff08;derivative&#xff09;”&#xff0c;是一种很常见的控制算法。 需要将一个物理量保持在稳定状态&#xff08;比如维持平衡&#xff0c;温度、转速的…

《微服务架构设计模式》第十三章 微服务架构的重构策略

微服务架构的重构策略 一、重构到微服务需要考虑的问题1、为什么重构2、重构形式3、重构策略 二、设计服务与单体的协作方式三、总结 一、重构到微服务需要考虑的问题 1、为什么重构 单体地狱造成的业务问题&#xff1a; 交付缓慢充满故障的软件交付可扩展性差 2、重构形式 …

前端 | (六)CSS盒子模型 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 文章目录 &#x1f4da;元素的显示模式&#x1f407;CSS长度单位&#x1f407;元素的显示模式⭐️块元素&#xff08;block&#xff09;⭐️行内元素&#xff08;inline&#xff09…

浅谈电能分项计量在节能降耗中的应用

摘要&#xff1a;随着电力企业改革活动的持续推进&#xff0c;要想加快改革进程、优化改革效果&#xff0c;应该提高对节能降耗问题的关注度。在应用电力计量技术的过程中巧妙地渗透节能降耗这一理念&#xff0c;以此提高技术应用率&#xff0c;充分体现技术应用价值&#xff0…

selenium-多窗口和frame处理

1.切换窗口 适用场景&#xff1a;点击按钮后&#xff0c;重新打开一个窗口&#xff0c;想要在新的窗口定位操作&#xff0c;就需要切换窗口 原理&#xff1a;获取窗口的唯一标识就是句柄&#xff0c;获取到句柄&#xff0c;就可以切换到对应的窗口了 处理方法&#xff1a; …

S3C2440点亮LED(裸机开发)

文章目录 前言一、环境介绍一、GPIO介绍二、点亮开发板的LED1.预备动作2.led代码 总结 前言 本期和大家主要分享的是使用S3C2440开发板点亮一个LED灯&#xff0c;可能大家拿到开发板之后做的第一件事情都是点灯&#xff0c;这是为什么呢&#xff1f;因为点灯这件事情不仅能够检…

curl操作

下载路径&#xff1a;https://curl.se/windows/ 参考&#xff1a;https://blog.csdn.net/weixin_45191386/article/details/130652821 操作&#xff1a; curl http://localhost:8085/api/v1/aaa/bbbb/?ccc 652781344055627776