【区块链与密码学】第5-1讲:哈希函数简史

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

 

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

5.1 哈希函数的定义与性质

点宽学园【区块链与密码学】第五单元开课啦!这单元我们将学习哈希函数及其在区块链中的应用。

哈希函数的定义

哈希函数(Hash Function)是一个公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M),又称为散列函数、杂凑函数。我们称函数值H(M)为哈希值、杂凑值、杂凑码、或消息摘要。

哈希函数功能示意图

杂凑值是消息中所有比特的函数,因此提供了一种错误检测能力,即改变消息中任何一个比特或几个比特都会使杂凑值发生改变。

哈希函数的性质    

哈希函数具有如下性质:

  • H可以作用于一个任意长度的数据块(实际上是不是任意,比如SHA-1要求不超过264)。

  • H产生一个固定长度的输出(比如SHA-1的输出是160比特,SHA-256的输出是256比特)。

  • 对任意给定的x,H(x)计算相对容易,无论是软件还是硬件实现。

  • 单向性(抗原像)(One-Way):对于任意给定的消息,计算其哈希值容易。但是,对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的。

其中前3条是实用性要求,后3条是安全性要求。

  1. 单向性:即给定消息可以产生一个哈希值,而给定哈希值不可能产生对应的消息;否则, 设传送数据C=<M, H(M‖K)>,K是密钥。攻击者可以截获C,求出哈希函数的逆,从而得出H-1(C),然后从M和M‖K即可得出K。
  2. 弱抗碰撞性:是保证一个给定的消息的哈希值不能找到与之相同的另外的消息,即防止伪造。否则,攻击者可以截获报文M及其哈希函数值H(M),并找出另一报文M’使得H(M’)=H(M)。这样攻击者可用M’去冒充M,而收方不能发现。
  3. 强抗碰撞性:是对已知的生日攻击方法的防御能力,强抗碰撞自然包含弱抗碰撞。

密码学上安全的杂凑函数H应具有以下性质:

  • 对于任意的消息x,计算H(x)是容易的

  • H是单向的

  • H是强抗碰撞的

5.2 哈希函数的发展

1978年,Merkle和Damagad设计MD迭代结构。

1993年,来学嘉和Messay改进加强MD结构。

在90年代初MIT Laboratory for Computer Science和RSA数据安全公司的Rivest设计了散列算法MD族,MD代表消息摘要。

MD族中的MD2、MD4和MD5都产生一个128位的信息摘要。

哈希函数结构示意图

MD2(1989年)、MD4(1990年)、MD5(1991年):由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,经MD2、MD3和MD4发展而来,输出的是128位固定长度的字符串。

RIPEMD-128/160/320:国际著名密码学Hans Dobbertin在1996年攻破了MD4算法的同时,也对MD5的安全性产生了质疑,从而促使他设计了一个类MD5的RIPEMD-160。在结构上,RIPEMD-160可以视为两个并行的类MD5算法,这使得RIPEMD-160的安全性大大提高。

值得注意的是,MD4、 MD5已经在2004年8月Crypto2004 上,被我国密码学者王小云等破译,即在有效的时间内找到了它们的大量碰撞。

SHA系列算法是美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)根据Rivest设计的MD4和MD5开发的算法. 美国国家安全局(National Security Agency,NSA)发布SHA作为美国政府标准。

SHA-0-SHA-0正式地称作SHA,这个版本在发行后不久被指出存在弱点.

SHA-1-SHA-1是NIST于1994年发布的,它与MD4和MD5算法非常相似,被认为是MD4和MD5的后继者.

SHA-2-SHA-2实际上分为SHA-224、SHA-256、SHA-384和SHA-512算法。

SHA系列哈希函数相关参数比较

2017年2月23日谷歌宣布,谷歌研究人员和阿姆斯特丹CWI研究所合作发布了一项新的研究,详细描述了成功的SHA1碰撞攻击。

NESSIE工程推荐使用的哈希算法有SHA-256/384/512和Whirlpool (Vincent Rijmen和Paulo S. L. M. Barreto在2000年设计,入选国际标准ISO/IEC 10118-3)。(NESSIE是欧洲一项为期三年的密码标准计划, 详见: http://www.nessieproject.com/)

日本密码研究与评估委员会推荐使用的算法有RIPEMD-160、SHA-256/384/512。

此外,NIST于2008年启动新的哈希标准的征集活动。

  • 除迭代结构以外的结构

  • 适用于任何平台的压缩函数

2008年10月提交文档,收到64个算法,公开56个,51个进入第一轮评估。2009年10月,第二轮评估开始,剩余14个算法。第三轮剩余五个算法,2012年10月2日, Keccak被选为SHA-3。

哈希函数碰撞攻击复杂度示意图

【区块链与密码学】第五单元的第一课今天就结束啦!这一单元我们将深入探讨哈希函数。敬请期待啦~

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

相关推荐

深入浅出 区块链密码学(学习笔记1.0)——哈希函数

关于哈希函数的知识点

m0_62829674的博客 1918

密码学:哈希函数 散列函数是什么 SHA-256原理 哈希碰撞

需要注意的是,随着计算能力的增强,一些早期的散列函数已经不再被视为安全,因此在选择散列函数时要谨慎,并考虑使用最新的、被广泛认可为安全的算法。虽然SHA-256生成的散列值是256位,但它在内部使用更大的数据块进行处理,这是因为SHA-256算法的设计要求。因此,SHA-256之所以要求输入数据的大小是512位的倍数,是因为它是基于512位数据块的处理算法,而最终的输出是256位。理论上,输入数据可以是无穷大的,但在实际应用中,这种情况是不可能的,因为计算机的内存和处理能力是有限的。

tenc1239的博客 4469

解密区块链中的密码学

在这片文章中,我们总结了区块链会用到的一些密码学原语,那什么是密码学“原语”? 不同于操作系统的“原语”概念,(注:操作系统原语是操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程,具有不可分割性。)密码学原语强调的是“动机”,可以简单理解为:你想做什么事情?比如“加密”、“签名”是个原语,“密钥交换”、“零知识证明”也是个原语。 位于第一层阶层的原语可能一共有十...

宽客在线的博客 6818

密码学哈希函数-SHA

一、哈希函数 1.定义Hash函数将长度可变的数据块M作为输入,产生固定长度的Hash值h=H(M)。 2.特征: (1)可变长度输入,固定长度输出; (2)不可逆; (3)小概率发生碰撞,只能减少碰撞概率,无法避免碰撞; 3.应用: (1)消息认证; (2)数字签名; (3)登陆认证; (4)入侵检测和病毒检测; (5)构建伪随机函数和作为伪随机数发生器; 4.密码...

David的博客 6976

哈希函数学习笔记

哈希函数(Hash Function)是一公开函数,用于将任意长的消息M映射为较短的、固定长 度的一个值H(M),又称为散列函数、杂凑函数.我们称函数值H(M)为哈希值、杂凑值、杂凑码、 或消息摘要。杂凑值是消息中所有比特的函数,因此提供错误检测能力。消息中任何一个比特或者几个比特的改变都会造成杂凑值的改变。总结:密码学上安全的哈希函数H应该包含的性质:①对于任意的消息x,计算H(x)是容易的。②H是单向的③H是强抗碰撞的对于给定的哈希值h,试图找到满足H(x)=h的x。对于m位的哈希值,穷举的规模大约是2

qq_54223524的博客 9930

什么是哈希函数

Hash函数译为哈希函数,又称散列函数。是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出的值称为散列值或消息摘要。简单来说就是一种将任意长度的输入消息压缩成某一固定长度的消息摘要的函数。 它具备以下的性质(哈希函数所必须的性质): H可应用于任意大小的数据块。 H产生定长的输出。 对任意给定的x,计算H(x)比较容易,用硬件和软件均可以实现。 出于安全性考虑,对哈希函数的三个安全性假设: 对任意给定的散列值h,找到满足H(x)=h的x在计算上是不可行的,称之为单向性...

zhuzitop的博客 1万+

区块链区块链密码学基础

密码学区块链技术的核心基石,没有现代密码学的支撑,区块链的去中心化、不可篡改等特性将无从谈起。本文将深入浅出地介绍区块链中的密码学基础知识。

鑫宝的博客 1万+

区块链哈希函数

武汉大学《区块链密码学》课件整理

weixin_62775913的博客 5532

区块链学习笔记】1:比特币中的密码学原理

跟着肖臻老师公开课学习一下区块链技术。

大桔骑士的学习笔记 5669

区块链密码学】第2-3区块链基础技术大剖析之哈希函数

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链密码学》授课义、教材及互联网,版权归属其原作者所有,如有侵权请立即我们联系,我们将及时处理。】 2.4.1 哈希函数 区块链作为一个诞生刚到十几年的技术,的确算是一个新兴的概念,但是它所用到的基础技术全是当前非常成熟的技术。可以说是一个技术的“结晶体“。 区块链的基础技术如哈希运算、数字签名、P2P网络、共识算法以及智能合约等,在区块链兴起之前,很多技术已经在各...

Digquant的博客 1595

区块链探秘:从基础到深度,全面解读区块链技术应用

区块链探秘:从基础到深度,全面解读区块链技术应用

qq_51447436的博客 3万+

密码学区块链技术中的应用

通过哈希函数,确保了数据的完整性和不可篡改性,为区块链的信任机制提供了坚实的基础。综上所述,密码学区块链技术中的重要性不可替代,已取得的应用成果令人瞩目,但为了应对不断变化的技术环境和应用需求,进一步的研究和发展是必不可少的。此外,区块链技术的广泛应用和不断拓展的场景对密码学的性能和效率提出了更高的要求。由于哈希函数的特性,即使区块中的数据有极微小的改变,所生成的哈希值也会完全不同。虽然加密能保护我们的交易信息不被别人看到,可要是加密的办法不够好,或者加密的时候出了错,交易信息可能会被泄露。

2401_85754355的博客 2930

区块链的数学基础:核心原理应用解析

区块链技术作为分布式账本系统,成功地解决了传统中心化系统中的信任问题。其背后隐藏着复杂而精妙的数学原理,包括密码学哈希函数、数字签名、椭圆曲线、零知识证明等。这些数学工具不仅为区块链提供了安全保障,也为智能合约和去中心化应用(DApps)的开发奠定了基础。本文将深入剖析区块链中的核心数学基础,帮助读者理解其工作原理实际应用。

fudaihb的博客 3567

区块链知识个人总结(一)哈希函数密码学

密码学中的哈希函数 三个性质 1.collision resistance 个人理解为抵抗哈希碰撞的性质,即能将人为制造哈希碰撞的效率降至非常低下,或者说不可能发生有效的人为制造哈希碰撞的性质。 理解a:这个算法无法被证明。 只可以在长时间的实践中证实。因为源文件可以是真正意义上的无数种,而哈希之后得到的哈希值一定会有穷尽。所以单纯的数学方法无法证明 理解b:这个算法不一定一直有效:。 比如说以前...

weixin_45067603的博客 2161

区块链中的密码学 —— 哈希函数

SHA-256 是。

qq_27510557的博客 1953

03 区块链密码学

Hash,一般翻译做散列、杂凑,或者音译为哈希,是把任意长度的输入通过哈希算法变换成固定长度的输出,该输出就是散列值。能够实现该功能的算法叫做哈希算法,能够实现哈希算法要求的函数叫做哈希函数哈希函数就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数区块链地址是指区块链网络上的标识,经典的地址生成算法由公私钥产生,具有安全性和隐私性。地址可以绑定数字资产,或者链上有价值的数据。

FrancyZhou的博客 885

密码学哈希函数区块链 “不可篡改” 的核心数字指纹技术

密码学哈希函数的核心是为任意数据生成唯一、不可逆、固定长度的数字指纹,单向性、强抗碰撞性、输入敏感性、固定输出长度四大特性是其核心要求;它是区块链 “不可篡改” 的技术根基,通过构建区块链式结构、默克尔树,实现了数据的安全存储和高效验证;在 Web3 领域,哈希函数还承担着钱包地址生成、密钥安全保护的重要作用,是保障数字资产安全、实现机器信任的基础。简单来说,没有密码学哈希函数区块链的信任体系就无从谈起,Web3 的数字资产确权、去中心化交易、智能合约执行等所有应用,也都失去了安全支撑。

2401_82363370的博客 1083

区块链密码学:原理、技术演进未来发展趋势

区块链技术依赖于密码学来保障数据的安全性、完整性和不可篡改性。

小宝哥Code的专栏 1708

区块链密码学简介

然而,一旦加密文件被泄露,用户应立即将资产转移至新的私钥对应的账户地址,并重新安全保存新的加密文件。Layer 1 负责确保安全和去中心化,做到全球共识,并作为“加密法院”,通过智能合约设计的规则进行仲裁,以经济激励的形式将信任传递到 Layer 2 上。在节点通信时,每个节点根据本地的 CA 列表验证对方节点发来的证书,同时发送自己的证书给对方进行验证。一个有效的方法是将大量的工作放到链下处理,只将最重要的数据提交到区块链主链上,让所有节点都能够验证这些链下工作的准确性和可靠性。

sj18838107211的博客 1341
上一篇: 【区块链与密码学】第4-8讲:区块链发展趋势全景
下一篇: 【区块链与密码学】第5-3讲:详解常用哈希函数(一)
Dig Quant
博客等级 码龄6年 124粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值