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

news2024/11/26 22:30:38

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

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

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

相关文章

如何退出telnet

例如&#xff0c;我已经成功telnet到服务器了&#xff0c;可以输入信息&#xff1a; 此时&#xff0c;同时按 ctrl 和 ] 键&#xff0c;可以到telnet提示符窗口&#xff0c;如下&#xff1a; 在telent提示符窗口&#xff0c;输入quit&#xff0c;然后回车&#xff0c;就回到了…

性能测试的一二三

目录 前言&#xff1a; 性能测试流程 性能工具 如何选择性能测试工具 性能测试需要掌握哪些技能 总结 前言&#xff1a; 性能测试是评估系统在不同负载条件下的性能和稳定性的过程。 在我们日常生活和工作中&#xff0c;软件已经成为不可或缺的一部分。然而&#xff0c;…

高并发的哲学原理(五)-- 拆分网络单点(上):应用网关、负载均衡和路由器(网关)

上一篇文章的末尾&#xff0c;我们提到了一个假想出来的五万 QPS 的系统&#xff0c;以及这种规模的系统架构中必然存在的负载均衡器&#xff0c;那本篇文章我们就来一起利用负载均衡搭建一个能够支撑五万 QPS 的系统。 “监听 HTTPS 443 端口的进程”这个单点 之前&#xff0…

Linux DMA 简介

文章目录 1. 前言2. 背景3. DMA 硬件基础3.1 什么是 DMA&#xff1f;3.2 为什么需要 DMA&#xff1f;3.3 DMA 传送模式3.4 DMA 常见硬件拓扑3.4.1 ARM 架构常见 DMA 硬件拓扑3.4.2 其它架构 DMA 硬件拓扑 4. Linux 下的 DMA4.1 DMA 内存地址和区域4.1.1 DMA 内存涉及的3种地址4…

Matplotlib是什么

Matplotlib 是一款用于数据可视化的 Python 软件包&#xff0c;支持跨平台运行&#xff0c;它能够根据 NumPy ndarray 数组来绘制 2D 图像&#xff0c;它使用简单、代码清晰易懂&#xff0c;深受广大技术爱好者喜爱。 NumPy 是 Python 科学计算的软件包&#xff0c;ndarray 则…

NAT转换网关实现IP地址转换,保障数据采集

NAT转换网关&#xff08;Network Address Translation Gateway&#xff09;是物通博联推出的一款物联网设备&#xff0c;用于在不同网络之间进行网络地址转换&#xff08;Network Address Translation&#xff09;&#xff0c;以实现IP地址的转换和映射。 物通博联NAT转换网关…

再谈操作系统

文章目录 ⭐1. 什么是操作系统&#x1f31f;2. 为什么要有操作系统&#x1f320;3. 操作系统如何管理 ⭐1. 什么是操作系统 先入为主&#xff0c;操作系统是一款管理软件 操作系统分为两部分 操作系统本身&#xff0c;主要做一些进程管理、内存管理、文件管理、驱动管理等工…

【AGC】删除控制台应用重建报错url is null问题

【关键字】 AGC、agconnect-services.json、InvalidParameterException 【问题描述】 有开发者反馈在删除了AppGallery Connect中某个应用及其对应的项目&#xff0c;再重新创建相同的应用&#xff08;包名一致&#xff09;&#xff0c;并且重新下载agconnect-services.json到…

【c++修行之路】IO流架构及使用

文章目录 前言输入输出库文件读写序列化与反序列化结语 前言 大家好久不见&#xff0c;今天一起来学习c中的IO流。 输入输出库 这两张架构图略显复杂&#xff0c;这里给出一张比较清楚的IO流架构图&#xff1a; 也就是说&#xff0c;我们平时使用的诸如cin、cout、cerr、cl…

2023华为产品测评官-开发者之声 | 华为云CodeArts征文活动,多重好礼邀您发声!

"2023华为产品测评官&#xff0d;开发者之声"活动激发了众多开发者和技术爱好者的热情&#xff0c;他们纷纷递交了精心编写的产品测评报告。活动社群充满活力&#xff0c;参与者们热衷于交流讨论&#xff0c;互相帮助解决问题&#xff0c;一起探索云技术的无限可能。…

C# Nullable学习

在C#1.x&#xff0c;一个值类型变量是不可以被赋予null值的&#xff0c;否则会产生异常。 在C#2.0中&#xff0c;提供了Nullable类型&#xff0c;允许用它定义包含null值&#xff08;即空值&#xff09;的数据类型&#xff0c;这对处理数据库中包含可选字段以及很多方面都有帮…

【云原生】Docker网络Overlay搭建Consul实现跨主机通信

目录 1.overlay网络是什么&#xff1f; 实现overlay环境 1.overlay网络是什么&#xff1f; 在Docker中&#xff0c;Overlay网络是一种容器网络驱动程序&#xff0c;它允许在多个Docker主机上创建一个虚拟网络&#xff0c;使得容器可以通过这个网络相互通信。 Overlay网络使用…

linux - bc 命令安装

一.引言 迁移新机器后发现没有 bc 命令&#xff0c;之前 shell 脚本的一些计算逻辑会出错&#xff0c;下面快速安装一下。 二.安装 bc 请确保在 root 权限下执行该命令&#xff1a; sudo yum install bc 出现下述界面即安装成功&#xff1a; 三.测试 bc 测试下脚本里 % 的…

Nautilus Chain 更换全新测试网,主网即将在不久上线

目前&#xff0c;Nautilus Chain 正在为主网上线前的最后阶段做准备&#xff0c;据悉该链更新了全新的测试网&#xff0c;在此前版本的测试网的基础上进行了全新的技术升级&#xff0c;最新测试网版本与生态发展的技术规划更为贴近。本次测试网升级将会是最后一次测试网版本的迭…

ylb-接口8手机号注册

总览&#xff1a; 在web模块下的service包&#xff0c;补充短信接口&#xff08;SmsService&#xff09;&#xff1a;检查用户发送的验证码是否正确 package com.bjpowernode.front.service;public interface SmsService {/*** param phone 手机号* return true&#xff1a;发…

聚集十二罗汉,探索宇宙本质,马斯克神秘的xAI

作者 | 德新编辑 | 王博 马斯克组团入局通用人工智能。 7月12日&#xff0c;马斯克发推官宣成立新的公司xAI。据官网介绍&#xff0c;这是一家试图「探索理解宇宙本质」的公司。 新公司公布了12名首批成员&#xff0c;除了马斯克外&#xff0c;他们曾经在「AlphaStar、AlphaCod…

springboot线上买菜系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…

【Linux进阶之路】冯诺依曼体系结构与操作系统

前言 存储器与CPU 在正式介绍今天的话题之前&#xff0c;博主先来带大家搞清楚一些硬件的概念&#xff0c;方便接下来的理解。 存储器&#xff0c;顾名思义就是用来存储的设备&#xff0c;那在计算机里&#xff0c;存储器包含什么呢&#xff1f; 答&#xff1a;内存 外存&a…

【C语言初阶(14)】扫雷游戏(优化:标记地雷+自动展开)

文章目录 Ⅰ游戏规则Ⅱ 游戏实现思路Ⅲ 游戏实现步骤⒈菜单界面⒉创建棋盘① 创建两个棋盘② 防止数组越界 ⒊棋盘初始化⒋棋盘的打印⒌布置地雷⒍玩家排查雷实现步骤⒎计算 x&#xff0c;y 周围有多少雷⒏展开非雷区⒐标记地雷⒑取消标记 Ⅳ 模块化代码实现⒈test.c⒉game.h⒊…

TCP协议下的三大协议的验证实验

系列文章目录 数通王国历险记&#xff08;1&#xff09; 前言 一&#xff0c;我们要先知道PDU是什么&#xff1f; 二、TCP协议下的三大协议的验证实验 1.FTP的验证实验 1&#xff0c;拓扑图 2.将lsw4配置一下 3&#xff0c;FTP服务器端开启FTP服务&#xff1a; 4&#x…