【区块链与密码学】第5-4讲:详解常用哈希函数(二)

美国第3代哈希散列算法之SHA3(Keccak) (1)Keccak算法简介 Keccak算法是美国国家标准与技术研究院(NIST)发起的SHA3竞赛的获胜算法,采用的是新型的海绵结构。根据摘要值长度的不同可以分为Keccak224、Keccak256、Keccak384、Keccak512共4个版本。 海绵结构的状态被分为两部分:第一部分长度为r比特,称为比特率(bitrate):第二部分长度为c比特,称为填充数(capacity),因此海绵结构的状态大小为b=r+c。 阅读详情

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

5.4.1 Keccak算法简介

美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)于2007年公开征集SHA-3,要求:

能够直接替代SHA-2,这要求SHA--3必须也能够产生224,256,384,512比特的哈希值。

保持SHA-2的在线处理能力,这要求SHA-33必须能处理小的数据块(如512或1024比特)。

安全性:能够抵抗原像和碰撞攻击的能力,能够抵抗已有的或潜在的对于SHA-2的攻击。

效率:可在各种硬件平台上的实现,且是高效的和存储节省的。

灵活性:可设置可选参数以提供安全性与效率折中的选择,便于并行计算等。

2008年10月,有64个算法正式向NIST提交了方案,经过初步评价,共有51个算法进入第一轮评估,主要对算法的安全性、消耗、和实现特点等进行分析。

2009年7月24日宣布,其中14个算法通过第一轮评审进入第二轮;2010年12月9日宣布,其中5个算法(JH、Grstl、Blake、Keccak和Skein)通过第二轮评审进入第三轮。

2012年10月2日NIST公布了最终的优胜者,它就是由意法半导体公司的Guido Bertoai Bertoai、Jean Daemen Daemen、Gilles Van Assche Assche与恩智半导体公司的Micha Michaëël Peeters 联合设计的Keccak算法。

SHA-3成为NIST的新哈希函数标准算法(FIPS PUB 180--5),Keccak算法的分析与实现详见:https://keccak.team/index.html

SHA-3的结构仍属于Merkle提出的迭代型哈希函数结。最大的创新点是采用了一种被称为海绵结构的新的迭代结构.。海绵结构又称为海绵函数。

在海绵函数中,输入数据被分为固定长度的数据分组。每个分组逐次作为迭代的输入,同时上轮迭代的输出也反馈至下轮的迭代中,最终产生输出哈希值。

海绵函数允许输入长度和输出长度都可变,具有灵活的性,能够用于设计哈希函数(固定输出长度)、伪随机数发生器,以及其他密码函数。

5.4.2 Keccak算法描述

其输入数据没有长度限制,输出哈希值的比特长度分为:224,256,384,512。

符号与函数

Keccak算法使用以下符号与函数:

符号

r:比特率(比特 rate),其值为每个输入块的长度

c:容量(capacity),其长度为输出长度的两倍

b:向量的长度,b=r+c,而b的值依赖于指数I,即b=25×2I  

Keccak算法的参数定义

函数

Keccak算法用到了以下5个函数:θ(theta)、ρ(rho)、π(pi)、χ(chi)、ι(iota)

算法描述

Keccak算法对数据进行填充,然后迭代压缩生成哈希值。

填充

对数据填充的目的是使填充后的数据长度为r的整数倍.因为迭代压缩是对r位数据块进行的,如果数据的长度不是r的整数倍,最后一块数据将是短块,这将无法处理。

设消息m长度为l比特。首先将比特“1”添加到m的末尾,再添加k个“0”,其中,k是满足下式的最小非负整数:l+1+k=r-1modr;

然后再添加比特“1”添加到末尾. 填充后的消息m的比特长度一定为r的倍数。

以算法Keccak-256,信息“abc”为例显示补位的过程. a, b, c对应的ASCII码分别是97, 98, 99;于是原始信息的二进制编码为:01100001 01100010 01100011。此时r  = 1088。

① 补一个“1” :0110000101100010 01100011 1

② 补1062个“0”:

01100001 01100010 01100011 10000000 00000000 … 00000000

③ 补一个“1” ,得到1088比特的数据:

整体描述

Keccak算法采用海绵结构(Sponge Construction),在预处理(padding并分成大小相同的块)后,海绵结构主要分成两部分:

吸入阶段(Absorbing Phase):将块xi传入算法并处理。

挤出阶段(Squeezing Phase):产生一个固定长度的输出。

Keccak算法的整体结构如下图:

Keccak算法的整体运算示意图

吸入与挤出阶段

给定输入串x,首先对x做padding,使其长度能被r整除,将padding后分割成长度为r的块,即x=x0|| x1|| x2||...|| xt-1 。然后执行以下吸入阶段和挤出阶段:

1.初始化一个长度为r+c比特的全零向量。

2.输入块xi,将xi和向量的前r个比特做异或运算,然后输入到f函数中处理。

3.重复上一步,直至处理完x中的每个块。

4.输出长为r的块作为y0,并将向量输入到f函数中处理,输出y1,以此类推,得到的哈希序列即为y= y0||y1||y2||...||yu。在Keccak-224/256/384/512中,只需要在y0中取出前224/ 256/ 384/ 512位即可。

 Keccak算法的吸入阶段和挤出阶段示意图

压缩函数

压缩函数f是Keccak算法的核心,它包含nr轮。

nr的取值与我们之前计算b时用到的指数I (b=25×2I)有关,具体地,nr=12+2*I.Keccak-224/256/384/512中,取I=6,因此nr=24。

在每一轮中,要以此执行五步,即θ(theta)、ρ(rho)、π(pi)、χ(chi)、ι(iota)。

在处理过程中,我们把b=1600个比特排列成一个5*5*w的三维数组,其中w=2I=64比特,如右图所示:

 Keccak算法的三维数组示意图

Keccak算法的压缩函数结构示意图

安全性与性能

安全性

可以抵御对哈希函数的所有现有攻击。

到目前为止,没有发现它有严重的安全弱点。

灵活性

可选参数配置,能够适应哈希函数的各种应用。

高效性

设计简单,软硬件实现方便.在效率方面,它是高效的。

尚未广泛应用,需要经过实践检验。

常用的Keccak算法就讲到这里啦,下节课我们将学习常用哈希函数SM3算法,敬请期待!


 

深入浅出 区块链密码学(学习笔记1.0)——哈希函数 关于哈希函数的知识点 阅读详情

相关推荐

区块链与哈希函数

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

weixin_62775913的博客 5540

Keccak简介

一 什么是Keccak Keccak是一种被选定为SHA-3标准的单向散列函数算法。 Keccak可以生成任意长度的散列值,但为了配合SHA-2的散列值长度,SHA-3标准中规定了SHA3-224、SHA3-256、SHA3-384、SHA3-512这4种版本。在输入数据的长度上限方面,SHA-1为2的64次方-1比特,SHA-2为2的128次方-1比特,而SHA-3则没有长度限制。 此为,...

实践求真知 1万+

解密区块链中的密码学

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

宽客在线的博客 6825

现代密码学:Hash函数Keccak

Hash函数的核心在于设计压缩函数。可以证明,如果压缩函数具有抗碰撞能力,那么迭代Hash函数也具有抗碰撞能力。 2007年起,NIST开始向全球征集新的安全Hash算法SHA-3,最后的优胜者是Keccak。Keccak以及SHA-3在正式成为标准之前有很多不同程度的更改,我想这也是网上有关Keccak和SHA-3算法的资料都多多少少不太一致的原因。本文仅介绍Keccak-224/256/384...

ayang1986的专栏 8438

keccak:Keccak 的实现

凯卡克/SHA3 我自己的 Keccak 实现,源自 Markku-Junahi O. Saarinen 的,但具有常量正确性。 这也有一个“keccaksum”程序的工作实现。 就像 Saarinen 的 README 所说的那样,这段代码根本没有在汇编中进行优化,所以不要指望它像生产就绪的代码一样快速运行。 这只是为了让其他人可以获得稍微更“const正确”的代码段,它基本上与Saarinen的版本做同样的事情。

快充协议全兼容!HUSB390对比测试:iPhone/小米/华为哪个充电最快?

本文深入评测了HUSB390快充协议芯片的全兼容性能,展示了其在iPhone、小米和华为设备上的极速充电表现。通过智能功率分配算法和多协议并行处理引擎,HUSB390实现了高效的动态调压和温度控制,显著提升多设备充电效率。特别适合需要同时为不同品牌设备快充的用户。

dd012的博客 1万+

keccak算法及实现

前言现在社会中hash算法的应用越来越广泛,因为hash 算法可以用于保证文件不被篡改,可以保证消息正确有效,同时还可以做数字签名,在http协议的开发中,还可以验证某个文件是否被修改过以做到断点续传。而传统的hash函数受到的攻击也越来越多,攻击方法也越来越有效,旧的算法变得不安全,那么就要推行新的标准,而keccak作为SHA- 3算法中的最终的优胜者,当然是有他的优势所在的,所以这里将讨论ke

博客 1万+

【KDD2024】ShapeFormer:用于多元时间序列分类的Shapelet Transformer

多元时间序列分类(MTSC)因其在现实世界中的广泛应用而吸引了大量研究关注。最近,Transformer在MTSC中取得了先进的性能。然而,

m0_52597077的博客 4747

Keccak 算法详解

Keccak 是一种基于海绵结构(Sponge Construction)的密码哈希算法,由比利时密码学家团队设计,2012 年被美国 NIST 选为 SHA-3 标准的核心算法。对每行元素执行:s[x][y] = s[x][y] ^ ((~s[x+1][y]) & s[x+2][y])。与轮常数(RC [r])异或,RC [r] 由 LFSR 生成,每轮不同34。与轮常数(RC [r])异或,RC [r] 由 LFSR 生成,每轮不同。第 x 行的元素 y 移动到位置 (2x+3y) mod 5。

草香农的博客 1500

Python+Selenium实战:5分钟搞定快手评论区数据采集(附完整代码)

本文详细介绍了如何使用Python和Selenium快速采集快手评论区数据,提供完整的代码实现和优化方案。通过动态加载处理和智能等待策略,5分钟内即可构建高效的评论采集工具,适用于用户行为分析和内容挖掘等场景。

weixin_30415113的博客 344

USB-Type-C PCB布局布线设计规范

USB Type-C连接器有24个引脚。图1和图2分别显示了USB Type-C插座和插头的插针。母头/母座公头/插头可以很明显看出,插口内的Pin功能相对于中心对称。公头插入母头,无论正反插,引脚功能都完美契合。而且电源VBUS/GND都拥有4个Pin,最大支持5A电流,在保证高速数据传输的同时也提高了电流承载能力。表 1 和表 2 分别汇总了在 USB Type-C 型插座和插头上所使用的信号列表。

weixin_63005522的博客 8285

【区块链】区块链密码学基础

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

鑫宝的博客 1万+

从ADS到Origin:高效绘制负载牵引Smith圆图的完整指南

本文提供了一份从ADS导出负载牵引数据并在Origin中绘制专业Smith圆图的完整指南。详细介绍了数据导出、导入、关键的数据解释步骤,以及高效处理多组曲线的技巧,帮助射频工程师快速生成用于报告和论文的出版级图表。

tgb3456789的博客 1137

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

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 5.1哈希函数的定义与性质 点宽学园【区块链与密码学】第五单元开课啦!这单元我们将学习哈希函数及其在区块链中的应用。 哈希函数的定义 哈希函数(Hash Function)是一个公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M),又称为散列函数、杂...

Digquant的博客 1248

实战交易策略 篇二十二:情绪流龙头交易策略

在股票市场中,机构主导趋势,游资驱动热点,散户易被情绪裹挟,形成“金字塔”式生态链,并存在情绪传递、强者恒强、物极必反的规律特点。股市是资金驱动的情绪博弈场,价格波动由群体心理、资金博弈和预期差共同驱动,核心是资本逐利性与人性贪婪恐惧的交织,兼具资源配置、财富再分配与风险定价功能。涨停加速与逃逸缺口(主升强化)凹字板/平台突破(趋势延续)天量弱转强(分歧买点)不参与首波(二波策略)情绪周期(道术合一)主线思维(聚焦核心)开盘抢筹(竞价博弈)一字助攻(情绪强化)分批进出(滚动操作)

生活在别处 1504

YOLOv11+BiFPN双向特征金字塔:全方位解析多尺度检测性能优化指南

飞书链接:https://ecn6838atsup.feishu.cn/wiki/EhRtwBe1CiqlSEkHGUwc5AP9nQe?购买即可解锁800+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,每日更新。函数中添加BiFPN的解析逻辑(找到。链接可用,不要多复制空格了。密码:946m22&8。

FJN110的博客 308

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

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

Digquant的博客 1600

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 125

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

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

2401_85754355的博客 2938

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

区块链学习二———密码学原理

本文介绍了区块链使用到的密码学原理,主要使用到了哈希函数和数字签名。

qq_43589852的博客 2860

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

03 区块链密码学

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

FrancyZhou的博客 894

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

大桔骑士的学习笔记 5698

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

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

weixin_45067603的博客 2163

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

SHA-256 是。

qq_27510557的博客 1977

【区块链与密码学】第5-3讲:详解常用哈希函数(一)

​ 【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 5.3 SHA-256算法简介 目前常用的哈希函数有三种,分别为SHA-256算法、Keccak算法、SM3算法,今天我们对SHA-256算法进行详细讲解。 概况 SHA系列标准哈希函数是由美国标准与技术研究所(National Institute of Standards ..

Digquant的博客 1234

哈希函数详解:从MD5到SHA-3的密码学基石

哈希函数是现代密码学的核心组件,它将任意长度的输入转换为固定长度的输出(哈希值),具有单向性、抗碰撞性和雪崩效应等安全特性。本文系统解析了哈希函数的定义、性质、典型算法及应用场景。 核心算法包括已淘汰的MD5(128位)、SHA-1(160位),以及当前主流的SHA-2(如SHA-256)和新兴的SHA-3(基于海绵结构)。哈希函数广泛应用于数据完整性校验(如文件下载验证)、密码存储(加盐哈希防彩虹表攻击)、区块链(区块标识)和数字签名等领域。随着算法演进,SHA-256仍是安全推荐标准,而BLAKE3等新

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值