密码学原理SHA3SHA3NIST2006征集200851个候选200914个2012Kecaak算法获胜2014年发布草案FIPS2012015年8月通过并发布SHA-3标准采用Kecaak算法:GuidoBertoni,JoanDaemen,MichaëlPeeters,andGillesVanAssche海绵结构海绵结构[]()ZSPONGEf,pad,rM,l......rc00fffffpadMZlabsorbingsqueezing(()()55{25501002004008001600}Kecaakfb)brbitrateccapacitybwb,,,,,,状态中c与消息无关,其长度为抵抗原像攻击和碰撞攻击长度的2倍海绵结构的用途Keccak算法关键过程Kecaak-f状态s|s|=bb=5×5×ws[i,j,k]表示第(5j+i)×w+k比特每轮五个步骤θ、ρ、π、χ、ι执行12+2d(d=log2w)轮pad10*1整数倍也需要填充[]()ZSPONGEKecaakf,pad,rM,l(b)比特(c)行iij(f)面j(e)列(d)深度kijk(a)状态轮函数中的步骤[][][1504][15041]si,j,ksi,j,ksimod,..,ksimod,..,kθ:列上元素与周围两列异或ρ:25个字分别以比特为单位循环移位(在深度方向循环移位)[][(1)(2)264]02()(10)02413tsi,j,ksi,j,ktt/modi,j,tj=0j=1j=2j=3j=4i=003634118i=114410452i=2626431561i=32855252156i=4272039814π:变换25个字的位置[][(3)5]si,jsijmod,iχ:唯一的非线性运算[][]([+15][25])si,j,ksi,j,ksimod,j,ksimod,j,kι:异或轮常数,消除对称性[00][00]()0122rrs,s,RCιιdSHA3标准b=1600=5×5×26Nr=24l为消息M的摘要长度[]()[(1600)101]()2(1600)*KecaakcM,lSPONGEKecaakf,pad,rM,lclrbc提供四种固定摘要长度的Hash函数和两种可扩展输出函数3224()[448](01224)3256()[512](01256)3384()[768](01384)3512()[1024](01512)128()[256](1111)256()[512](SHAMKecaakM||,SHAMKecaakM||,SHAMKecaakM||,SHAMKecaakM||,SHAKEM,lKecaakM||,lSHAKEM,lKecaakM1111)||,l后缀01和1111是为了保证同一消息在算法的不同应用下不会产生相同的摘要重点回顾SHA3采用Kecaak算法Kecaak算法的结构海绵结构特点和功能Kecaak算法中的轮函数SHA3标准的功能和参数