密码学学习笔记(二十三):哈希函数的安全性质:抗碰撞性,抗第一原象性和抗第二原象性

在密码学中,哈希函数是一种将任意长度的数据映射到固定长度输出的函数,这个输出通常称为哈希值。理想的哈希函数需要具备几个重要的安全性质,以确保数据的完整性和验证数据的来源。这些性质包括抗碰撞性、抗第一原象性和抗第二原象性。

抗碰撞性(Collision Resistance)

抗碰撞性指的是在合理的时间内很难找到两个不同的输入x和y使得它们的哈希值相同,即H(x) = H(y)。对于所有x\neq y,找到H(x) = H(y)是不可行的。

假设有一个哈希函数 H,其输出是一个128位的哈希值。为了证明这个函数具有抗碰撞性,我们需要展示即使在大量尝试之后也很难找到两个不同的输入导致相同的哈希值。

在密码学中,这通常通过展示哈希函数能够抵抗“生日攻击”来完成。生日攻击是一种概率攻击,其原理类似于生日悖论:在一个23人的房间中,至少有两人生日相同的概率超过50%。

在哈希函数的上下文中,这意味着在 2^{n/2} 次尝试后,找到一对碰撞的概率超过50%,其中 n 是哈希值的位数。因此,如果我们的哈希函数 H 在超过 2^{64} 次尝试后仍然没有碰撞,我们可以认为它具有良好的抗碰撞性。在实际应用中,如密码存储或数字签名,开发者会选择已知具有强抗碰撞性的哈希函数。

抗第一原象性(Pre-image Resistance)

抗第一原象性意味着对于给定的哈希值 h,在合理的时间内很难找到任何原始输入 x,使得 H(x) = h。对于给定的h,找到任意x使得H(x) = h是计算不可行的。

这是一个理论上的属性。例如,如果攻击者获得了数据库中的哈希密码,他们不应该能够找到对应的密码。

假设一个黑客获得了一个哈希值 h,他们想要找到一个消息 m 使得 H(m) = h。如果哈希函数是抗第一原象的,黑客尝试所有可能的输入直到他们找到一个匹配的原象,这个过程应该是不切实际的。例如,如果一个哈希函数的输出是256位长,黑客将需要尝试2^{256}个不同的输入才能找到正确的原象,这在现实中是不可行的。

抗第二原象性(Second Pre-image Resistance)

抗第二原象性指的是对于一个固定的输入 x,在合理的时间内很难找到一个不同的输入 y,使得 H(x) = H(y)。对于固定的x和任意的y\neq x,找到H(x)=H(y)是计算不可行的。这保证了即使攻击者知道一个特定的输入和它的哈希值,他们也不能找到另一个具有相同哈希值的不同输入。

考虑一个电子文件签名的场景,Alice 用哈希函数 H 对文件 f 生成一个哈希值 h=H(f) 并用她的私钥加密它,创建一个数字签名。Bob 可以用Alice的公钥解密并得到 h,然后自己对文件 f 运行 H 来验证签名。

如果一个攻击者想要伪造一个签名,他们需要找到一个不同的文件 f′ 使得 H(f′)=h。如果哈希函数是抗第二原象的,那么找到这样的 f′ 将是非常困难的。

在这些例子中,一个关键的假设是哈希函数的输出空间足够大,这样概率才会站在我们这一边使得找到满足上述条件的输入变得不现实。在实践中,这就是为什么推荐使用比如SHA-256或更高位数哈希函数的原因,因为它们为找到原象或碰撞提供了足够小的概率。

Message Authentication Code (MAC)

MAC涉及的是一个哈希函数和一个密钥,用于验证消息的完整性和真实性。它结合了哈希函数的抗碰撞性和密钥的保密性,使得即使有人可以找到哈希函数的碰撞,他们也无法生成有效的MAC,因为他们不知道密钥。

MAC(k,m) = H(k || m)

其中 k 是密钥,m 是消息,H 是哈希函数,|| 表示连接。

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

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

相关文章

MidJourney笔记(9)-daily_theme-docs-describe

/daily_theme 切换 #daily-theme 频道更新的通知。 但我发现在对话框那里,是没有这个命令的: 但官网是有介绍,不知道是不是版本问题还是这个命令已经无效。 但后来,我发现这个命令是要在Midjourney服务对话框那里才有,在我们后面添加的Mid

测试C#使用AForge从摄像头获取图片

百度“C# 摄像头”关键词,从搜索结果来看,使用OpenCV、AForge、window动态链接库获取摄像头数据的居多,本文学习基于Aforge.net连接摄像头并从摄像头获取图片的基本方法。   AForge相关包(尤其是相关的控件)主要针对…

计算机网络简述

前言 计算机网路是一个很庞大的话题。在此我仅对其基础概述以及简单应用进行陈述。后续或有补充以形成完善的计算机网络知识体系。 一.计算机网络的定义 根据百度词条的描述,计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过…

智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.减法平均算法4.实验参数设定5.算法结果6.…

OKCC语音机器人的人机耦合来啦

目前市场上语音机器人的外呼形式基本就分为三种,一种纯AI外呼,第二种也是目前主流的AI外呼转人工。那么第三种也可能是未来的一种趋势,人机耦合,或者也叫人机协同。 那么什么是人机耦合呢? 人机耦合是为真人坐席创造相…

跟着LearnOpenGL学习11--材质

文章目录 一、材质二、设置材质三、光的属性四、不同的光源颜色 一、材质 在现实世界里,每个物体会对光产生不同的反应。 比如,钢制物体看起来通常会比陶土花瓶更闪闪发光,一个木头箱子也不会与一个钢制箱子反射同样程度的光。 有些物体反…

K8S的二进制部署

K8S的源码包部署 搭建准备: k8smaster01:20.0.0.32 kube-apiserver kube-controller-manager kube-scheduler etcdk8smaster02:20.0.0.33 kube-apiserver kube-controller-manager kube-scheduler node节点01:20.0.0.34 …

二分查找及其复杂的计算

(一)二分查找及其实现 二分查找,也称为折半查找,是一种高效的搜索算法,用于在有序数组(或有序列表)中查找特定元素的位置。 二分查找的基本思想是将待查找的区间不断地二分,然后确…

支付宝沙箱环境配置结合内网穿透实现远程调试Java SDK接口

文章目录 1.测试环境2.本地配置2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道3. 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名5. 使用固定二级子域名进行访问 1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,…

Jmeter 压测 —— 非GUI模式执行实例!

1、上传脚本 把在Windows下调试好的脚本上传的Linux系统/home目录下。 注意:只留测试脚本,屏蔽其它监控组件,比如:查看结果树、聚合报告、监听器等。 2、执行脚本 ①输入命令执行脚本 jmeter -n -t case.jmx -l case.jtl -n&…

神经网络:模型部署

【一】模型压缩的必要性与可行性? 模型压缩是指对算法模型进行精简,进而得到一个轻量且性能相当的小模型,压缩后的模型具有更小的结构和更少的参数,可以有效降低计算和存储开销,便于部署在端侧设备中。 随着AI技术的…

多组件卡片式问答引擎

#本篇文章联合同花顺人工智能领域开发者严同学创作 1.简介 为了满足用户个性化需求以及精细化运营,越来越多的企业推出多组件式的卡片问答,这种回答方式不会千篇一律,能够更好地为客户提供服务,帮助客户解决问题。 使用这种问答…

JAVA中的栈和堆

JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。 基本,栈stack和堆heap这两个概念很重要,不了解清楚&…

从零实现一套低代码(保姆级教程) --- 【6】在项目中使用redux状态管理

摘要 在上一篇文章中的末尾,我们也完成了Input组件的属性面板配置。现在我们的低代码项目已经小有成就了。但是后面的内容还是不少的。 如果你是第一次看到这篇文章,那么请移步到第一节: 从零实现一套低代码(保姆级教程&#xf…

防雷接地设备综合应用方案

防雷接地设备是一种用于保护建筑物、设备和人员免受雷电危害的设备。 防雷接地设备主要包括以下几种: 防雷针:防雷针是一种用于吸引雷电并将其导入地面的金属棒,通常安装在建筑物的最高点或其他易受雷击的位置。 防雷带:防雷带…

【论文笔记】BiFormer: Vision Transformer with Bi-Level Routing Attention

论文地址:BiFormer: Vision Transformer with Bi-Level Routing Attention 代码地址:https://github.com/rayleizhu/BiFormer vision transformer中Attention是极其重要的模块,但是它有着非常大的缺点:计算量太大。 BiFormer提…

Halcon颜色提取,基于MLP自动颜色提取功能

1.前言 在实际的图像处理中,经常会遇到彩色图像,使用彩色图像往往跟颜色识别有关系。但是使用RGB进行调参时又很难达到所需要的效果(异常区域过多不好处理)。 在Halcon中,halcon对颜色提取采用MLP(多层感知…

Hive 部署

一、介绍 Apache Hive是一个分布式、容错的数据仓库系统,支持大规模的分析。Hive Metastore(HMS)提供了一个中央元数据存储库,可以轻松地进行分析,以做出明智的数据驱动决策,因此它是许多数据湖架构的关键组…

C/C++ 递增/递减运算符和指针

可以将递增运算符用于指针和基本变量。本书前面介绍过。将递增运算符用于指针时。将把指针的值增加其指向的数据类型占用的字节数,这种规则适用于对指针递增和递减。 double arr[5] {1.1, 2.1, 3.1, 4.1, 5.1}; double *ptr arr; ptr; 也可以结合使用这些运算符和…

第十部分 欧拉图与哈密顿图

欧拉图: 历史背景: 哥尼斯堡七桥问题与欧拉图 问题提出后,很多人对此很感兴趣,纷纷进行试验,但在相当长的时间里,始终未能解决。而利用普通数学知识,每座桥均走一次,那这七座桥所有的…