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

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

抗碰撞性(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 是哈希函数,|| 表示连接。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(一)——创建Glue

1 通过Athena查询s3中的数据 此实验使用s3作为数据源 ETL: E extract 输入 T transform 转换 L load 输出 大纲 1 通过Athena查询s3中的数据1.1 架构图1.2 创建Glue数据库1.3 创建爬网程序1.4 创建表1.4.1 爬网程序创建表1.4.2 手动创建表 1…

Mybatis 操作续集(连着上文一起看)

"查"操作(企业开发中尽量不使用*,需要哪些字段就写哪些字段,都需要就全写上) Mybatis 会自动地根据数据库的字段名和Java对象的属性名进行映射,如果名称一样就进行赋值 但是那些名称不一样的,我们想要拿到,该怎么拿呢? 一开始数据库字段名和Java对象属性名如下图…

4G基站BBU、RRU、核心网设备

目录 前言 基站 核心网 信号传输 前言 移动运营商在建设4G基站的时候,除了建设一座铁塔之外,更重要的是建设搭载铁塔之上的移动通信设备,这篇博客主要介绍BBU,RRU以及机房的核心网等设备。 基站 一个基站有BBU,…

数字法院大脑管理|助力实现司法数字化

数字法院是现代社会数字化和信息化的产物,它的出现标志着法律领域的创新和进步。数字法院以数字技术为核心,借助互联网、大数据、人工智能等新兴技术,实现了案件流程的数字化和智能化。通过数字法院,人们可以在线提交诉讼材料&…

IDEA 保存自动ESLint格式化

作为后端人员,偶尔修改一下前端代码,ESLint总提示格式不正确。有没有什么办法实现自动格式化呢? 安装插件Save Actions Tool 设置中搜索eslint 勾选 Run eslint --fix on save 这样以后,只要保存文件就会自动格式化了。 参考 …

windows下ffmpeg源码编译

参考:windows上使用vs2019和msys64编译 ffmpeg 4.3 | 码农家园 (codenong.com) 安装命令: pacman -S nasm pacman -S yasm pacman -S make pacman -S cmake pacman -S diffutils pacman -S pkg-config pacman -S git 1.编译 x264 将 x264放到home文件下…

JS学习--类型转换

函数转换 parseInt() 转换之前,首先会分析该字符串。判断位置为0处的字符串,判断是否为有效数字,若否,直接返回NaN,不再继续; 若是,继续打印直到不为数字的地方停止 parseFloat() 转换之前&…

[英语学习][7][Word Power Made Easy]的精读与翻译优化

[序言] 这次翻译, 遇到非常细微的短语, 让我差点翻车. 我从7点半开始思考到10点, 才恍然大悟. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入我的社区讨论与交流英语相关的内容. [原著英文与翻译版对照][第19] …

SpringBoot系列之使用Redis ZSet实现排序分页

软件环境: JDK 1.8 SpringBoot 2.2.1 Maven 3.2 Mysql 8.0.26 spring-boot-starter-data-redis 2.2.1 jedis3.1.0 开发工具 IntelliJ IDEA smartGit 实现思路 相对于set来说,sorted set是一种有序的set,排序是根据每个元素的score…

Nginx(十二) gzip gzip_static sendfile directio aio 组合使用测试(2)

测试10:开启gzip、sendfile、aio、directio1m,关闭gzip_static,请求/index.js {"time_iso8601":"2023-11-30T17:20:5508:00","request_uri":"/index.js","status":"200","…

SpringBoot整合ES客户端操作

SpringBoot整合ES客户端操作 介绍ES ES下载与安装 https://www.elastic.co/cn/downloads/past-releases 不要装太新的,里面自己配置了jdk,太新的可能用不了,免安装的,解压就好 浏览器输入:http://localhost:9200/ 返…

算法通关村第十六关-黄金挑战滑动窗口与堆的结合

大家好我是苏麟 , 今天带来一道小题 . 滑动窗口最大值 描述 : 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 题目 : …

U-GAT-IT 使用指南:人脸动漫风格化

U-GAT-IT 使用指南 网络结构优化目标 论文地址:https://arxiv.org/pdf/1907.10830.pdf 项目代码:https://github.com/taki0112/UGATIT U-GAT-IT 和 Pix2Pix 的区别: U-GAT-IT:主要应用于图像风格转换、图像翻译和图像增强等任务…

上传文件获得下载链接方法:直链!直链!

!非 百度网盘 不是直接用网盘下载,要用直链,百度上有很多方法。 我自己研究了个,跳过百度网盘输密码进网页的方法 还是先还是要把文件上传网盘让后搜索网盘获取直链的方法(那百度网盘举例) 地址 https:…

项目部署到线上服务器后,报 Redis error: ERR unknown command del 错误

查了很多资料,终于解决了,问题出在redis.conf里,该文件里被添加了新的命令如下: 在这几句命令前加 # 号注释掉,重启即可解决 另附上相关redis的命令: 停止Redis:systemctl stop redis启动Redis…

JavaEE进阶学习:Spring Boot 配置文件

1.配置文件的作用 整个项目中所有重要的数据都是在配置文件中配置的,比如: 数据库的连接信息(包含用户名和密码的设置);项目的启动端口;第三方系统的调用秘钥等信息;用于发现和定位问题的普通…

大数据项目——基于Django协同过滤算法的房源可视化分析推荐系统的设计与实现

大数据项目——基于Django协同过滤算法的房源可视化分析推荐系统的设计与实现 技术栈:大数据爬虫/机器学习学习算法/数据分析与挖掘/大数据可视化/Django框架/Mysql数据库 本项目基于 Django框架开发的房屋可视化分析推荐系统。这个系统结合了大数据爬虫、机器学习…

深入理解Go语言GC机制

1、Go 1.3之前的标记-清除(mark and sweep)算法 Go 1.3之前的时候主要用的是普通的标记-清除算法,此算法主要由两个主要的步骤: 标记(Mark phase)清除(Sweep phase) 1&#xff09…

通达OA inc/package/down.php接口存在未授权访问漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一. 产品简介 通达OA(Office Anywhere网络智能办公系统&am…

图像语义分割算法(FCN/U-net)

Some definitions  与目标检测不同,语义分割任务不但要对图片中的物体的位置和类别进行预测,还要精确地描绘出不同类物体之间的边界(注意是不同类物体,而不是不同物体。若对同一类的不同物体也进行区分,则…