admin 管理员组

文章数量: 1086019


2024年6月19日发(作者:lambda function)

第21卷第2期 北京电子科技学院学报 

2013年6月 

V01.21No.2 

Journal of Beijing Electronic Science and Technology Institute 

Jun.2013 

SHA一3获胜算法:Keccak评析 

李梦东 邵鹏林2李小龙 

1.北京电子科技学院信息安全系 北京100070 

2.西安电子科技大学通信工程学院西安710070 

摘 要:2012年10月初NIST确定SHA一3获胜算法为Keccak,为此该算法目前成为人们关注的 

焦点。本文对Keccak算法的实现过程、性能特点、获胜理由和攻击现状等进行了简评。通过这 

些介绍可达到初步了解Keccak的目的。 

关键词:Hash函数;SHA一3;KeccakSponge 

中图分类号-TN918 文献标识码:A 文章编号:1672—464X(2013)06一l8—06 

众所周知,由于王小云及其后继者对于MD 认证加密等功能。 

5、SHA一1等标准算法的攻击,美国NIST于 

以下简述了Keccak算法过程,分析了算法 

2007年启动了类似1997年AES算法征集活动 

安全性能、实现性能等方面,介绍了Keccak的获 

的SHA一3算法竞选。经过五年的三轮筛选过 

胜理由,并对当前针对keccak的攻击方法的现 

程,NIST于2012年10月初宣布SHA一3竞选的 

最终获胜者是Keccakl】 。NIST对于Keccak的 

状进行了概述。 

评价是:具有良好的安全性和实现性能,特别是 

1 Keccak算法简述 

与SHA一2完全不同的设计方式,可避免已有的 

攻击方式,而且能够提供SHA一2不具备的一些 

Keccak整体结构为Sponge结构_2 (见图 

性能。 

1),Sponge结构即是针对一个固定置换_厂的迭代 

Keccak在迭代结构上采用的是Sponge结 

过程。置换输入/输出的二进制串称为状态,其 

构,它与传统的MD迭代结构很不同,依赖于一 长度b=r+e,其中r称为比特率,与输入消息块 

个固定的大置换。这为算法提供了良好的实用 

长度相同,该部分比特称为外部状态;e称为容 

性和可证明安全性,理论上可以证明该结构在理 

量,该部分比特称为内部状态。算法的初始状态 

想模型下与随机预言是不可区分的。Keceak的 

为全零(图1中用方形框表示)。Keccak规定b 

置换是基于比特级的操作,实现简单,软件实现 

25・2 ,Z:0,1,2,…,6,因此b有{25,50, 

性能与SHA一2类似,而硬件实现性能非常优 

异。整个算法具有较大的安全余量和良好的适 

100,200,400,800,1600}共7种规模,在提交 

应性。Sponge结构可以容易地调整安全强度和 

SHA一3的Keccak算法中b=1600bit。Sponge 

处理速度之间的平衡,很方便地产生较大和较小 

结构分为吸收(abstracting)和挤压(squeezing)两 

的输出值,并且可定义修改的链接模式用以提供 

个阶段。在吸收阶段,输入消息经过填充,分为 

基金项目:本项目为北京电子科技学院重点实验室项目支持。 

作者简介:李梦东,男,教授,硕士生导师,主要研究领域为密码学与纠错编码。 

第21卷 SHA一3获胜算法:Keccak评析李梦东邵鹏林李小龙 .19. 

长度为r的各块P 一,P 一,P ,每块分别与各 

次置换的输入状态的r长外部状态异或,而C长 

内部状态保持不变,形成作为本次置换_厂的输 

入。在挤压阶段,根据所需的输出长度,从各次置 

换的输出中分别提取z 一, 各子串,连接后形 

成算法输出。实际上Sponge结构可以产生任意 

长度的输出。 

图2 Keccak的状态数组表示方式 

按照NIST要求,算法输出长度分为224、 

256、384和512bit,Keccak算法的消息块长度r 

是根据输出长度变化的:Keccak一512时消息块 

长度r为576bit;Keccak一384时r为832bit;Kec— 

cak一256时r为1088bit;Keccak一224时 

为1152bit。 

Keccak的填充方式为:首先添加一个1,之 

后添加数个0,最后添加一个1,即填充方式为 

10…01,其中0的个数应使填充后的长度是消息 

分组长度的最小整数倍。 

啡 峙 嗨* 噌童 

吸收 挤压 

籀 

图1 Sponge结构 

Keccak算法中置换-厂的输入表示为 

5 5 2 的三维比特数组 ][Y][ ](见图 

2),称为状态数组。当b=1600时,数组大小为 

5 5 64(z=6)。为了方便,算法将该数组分为 

slice(各5 5 1bit)、plane(各5:l:1 2 zbit)、 

sheet(各1%5 2 zbit)、lane(各1%1:l:2lbit)、 

rOW(各5 1 lbit)和column(各1 5:l=lbit)单 

元。置换就是分别这些单元的各比特进行12+ 

2z轮迭代运算。 

置换 可视为SP结构,每一轮迭代的轮函 

数为5个变换的复合:R=‘。 。仃。P。0,它们 

进行分别对三维数组的不同方向进行变换,以达 

到混淆和扩散的目的。这5个变换分别是: 

:a Ex 3 Ey 3[ ]+-一a Exl Ey 3[ ]+∑:_100[ 一 

1]Ey ]Ez3+∑:_=0n[ +1]Ey ]E 一1]。这一 

变换是将每比特附近的两列(column)比特之和 

迭加到该比特上( 和Y的坐标都是模5的); 

E 3 Ey ̄Ez]卜 ]Ey J 】 

其中。 <24,满足(: //0'/=( )矩阵元 

素为GF(5)中元素,且 =Y=0时t=一1。这一 

变换是针对每个z方向的lane的比特循环移位; 

7r:。c cy 十—。 y’ ,( )=( )( ,), 

其中矩阵元素为GF(5)中元素。这一变换是针 

对每个 —Y平面的slice的比特移位; 

:0[ ]卜 ]+(0[ +1]+1)a Ex+2]这是 

针对每个 方向的row的非线性运算,等效为5 

5的S盒; 

‘:0—0+RC[i,],这一变换是加轮常数RC,逐 

比特进行,且每轮i,的轮常数不同。 

2 Keccak性能分析 

2.1迭代结构 

Keccak采用的Sponge结构具有可证明安全 

性和良好的适应性。与多数具有明显压缩函数 

2O・ 北京电子科技学院学报 2013年 

结构的算法不同,Sponge结构采用大状态的固 

定置换。在假设置换是理想的情况下,可证明该 

结构与随机预言是不可区分的(indiferentia— 

ble),区分复杂度的下界为2 (c即容量,也称 

1088bit,以达到原象安全。在进入第三轮后 

Keccak简化了填充方式。 

2.4软件实现性能 

NIST根据两组数据进行软件性能评测 j: 

(a)eBASH。它是测试一般目的计算机上的实 

为安全参数)。这就保证了算法具有抵抗一般 

性攻击(即结构上的攻击)的能力。这种可证明 

性与第三轮其他几种候选算法类似,都是将算法 

安全性归结于置换或压缩函数的安全性之上。 

现性能,分别在AMD64、X86、ARM—NEON、32 

bit RISC不同类型机器上进行,并对不同级别 

的长消息和短消息进行测试,主要指标为Cycle/ 

与此同时Sponge结构可以输出任意长度,适用 

能力较强。 

2.2置换 

Keccak的置换中运算都是比特级的运算 

(即逻辑运算),这些运算可使截断差分、积分攻 

击等不易发生,并且便于硬件实现。除了加常数 

运算 以外,其他运算都具有平移不变性即对称 

性,这使算法具有良好的适用性和实现性能。在 

安全性上, 是唯一的非线性部件,为一个可逆 

的.s盒,代数次数仅为2,这将便于分析差分和 

线性特性,便于加入防护措施以防止差分能量攻 

击。但其逆.s盒具有不同性质;0是为了实现 

slice之间的扩散性;7r是为了打乱水平和垂直 

方向的规律性;加常数 是为了打破整个置换的 

对称性,保证各轮的变换不同和防止不动点。 

2.3整体安全性能 

Keccak具有较大的安全余量 ]。碰撞和近 

似碰撞的结果最能反映杂凑算法的安全性,Kec 

cak的24轮中(当时)只发现5轮的近似碰撞。 

区分攻击能够反映算法随机性的性能,评选当时 

仅发现Keccak的12轮区分器。而针对Keceak 

的原象攻击方面仅有很少轮数且复杂性很高的 

结果。Keccak用同一个置换产生所有输出长度 

的摘要输出,好处是易于实现简便变型算法,但 

是为保证安全性,消息分块要随输出长度变化, 

而且摘要越长,执行速度越慢。进入第二轮后, 

Keccak进行了一些修改:由轮数12+z增至12+ 

2l;224bit输出对应的消息块长度从1024bit增 

到1152bit,256bit输出的从1024bit增到 

byte。对于长消息的测试结果为:Keccak一256 

属于中等水平,和SHA一2类似,但比不上 

BLAKE一512和所有尺寸的Skein。Keccak一 

512属于低档水平;对于短消息的测试结果: 

Keccak一256和Keccak一512基本都属于中等水 

平;(b)XBX。它是测试嵌人式微处理器上的性 

能,包含了8种平台,测试指标同时考虑使用面 

积(RAM和ROM的个数)和速度性能,结果为: 

Keccak一256为中上等(BLAKE最好,Skein其 

次),但Keccak一512属于下等。不过由于Kec. 

cak算法特点,可以利用未来将普遍采用的矢量 

旋转指令(vector rotate instructions)来提高Kec. 

cak一512的速度。 

2.5硬件实现性能 

NIST采用了ASIC和FPGA两种测试平 

台 ,测试指标主要为throughout/area。测试结 

果表明:Keccak是五个第三轮候选算法中唯一 

个超过SHA一2的,这表明它的硬件性能很 

好,而且能量损耗最小,具有和SHA一2相同的 

每比特能量消耗量。 

2.6应用方面 

Keccak可以方便地实现MAC;可以作为流 

密码使用,输出长度可灵活变化 ;其duplexing 

模式,可以实现伪随机数发生器和认证加密。 

3 NIST选择Keccak的理由 

3.1 Keccak具有较大的安全余量 

这意味着出现实际有效的攻击的可能性很 

小。在第三轮的五个候选算法中,关于Groestl、 

第21卷 SHA一3获胜算法:Keccak评析李梦东邵鹏林李小龙 .21. 

BLAKE和Skein的攻击文章最多,这一方面说 

明:可能由于Groestl采用AES部件,BLAKE和 

NIST接受,如此则可进一步提高Keccak的适用 

性。另外Keccak认证加密模式是一个较好的附 

加性能,这是Sponge构造的非常自然的扩展。 Skein采用SHA一2类似的ARX部件,研究者易 

于分析;另一方面也说明对于这些算法的研究比 

较深入。而针对Keccak的分析文章相对较少, 

关于JH的最少 。截止到目前的分析表明: 

4 Keccak的攻击现状 

当Keccak成为SHA一3获胜者之后,必然 

会引起更多的关注和分析。目前关于Keccak的 

BLAKE、Keccak和Skein的安全余量较大,而 

Groestl和JH相对而言安全余量较少(已出现全 

攻击方式主要有:利用差分技术的碰撞攻击和部 

轮JH和90%轮Groestl的区分攻击)。 

虽然与BLAKE、Groestl和Skein相比,Kec. 

cak的分析还不够深入,但它也接受了一定量的 

分析。Keccak基本上是个全新的和与以往非常 

不一样的算法,与SHA一2完全无关。而 

BLAKE和Skein的部件使用与SHA一2类似的 

ARX运算,因此人们怀疑SHA一2的分析工具 

将来很可能用于它们。而Keccak的新颖结构和 

运算则不存在这样的隐患。(但仍需要对其新 

颖结构和比特级运算进行深入分析。) 

3.2 Keccak具有可接受的软件性能和优异的硬 

件性能 

Keccak面向硬件的设计,完全基于简单的 

比特级运算和扩散,使其具有良好的性能和实现 

效率。Keccak的软件性能大致与SHA~2相仿, 

在第三轮五个候选算法中属于中上等水平,但其 

硬件性能则是最优秀的,比SHA一2好很多,不 

需要SHA一2所需的32bit或者64bit加法或者 

密钥扩展过程。而且Keccak提供了良好的性能 

权衡能力,可视情况在安全性、实现性能和简便 

变型等方面进行取舍。 

3.3 Keccak的适应能力强 

Keccak成为获胜者,得益于它的十分简单 

轻巧的设计,和可用于广泛环境的适应能力。 

Sponge扩展方式使之易于分析为提高性能而改 

变消息分组长度所产生的对安全性影响问题,可 

以扩展输出长度以适用于诸如RSA全域杂凑函 

数等场合。Keccak也可以提供800比特置换, 

若从安全角度再进行深入研究的话,则可被 

分碰撞攻击;利用Biclique等技术的原象或第二 

原象攻击;零和区分攻击和旋转区分攻击等。 

d.1碰撞和近似碰撞攻击 

I.Dinur等 从已有的2轮低重量的状态差 

分开始,反向扩展1轮产生目标状态差分,再由 

目标差分算法从初始值开始进行正向1轮扩展, 

产生了4轮Keccak一224实际碰撞,在PC机上 

仅用时2—3分钟,产生4轮的Keccak一256实 

际碰撞用时15—30分钟;产生5轮的近似碰撞 

(只差5、10bit)耗时几天时间。2013年,I.Dinur 

等 又采用目标内部差分算法提高了上述结 

果,对5轮的Keccak一256产生了碰撞攻击,复 

杂度为2“ 。并结合squeeze攻击产生了3轮的 

Keccak一512实际性攻击,产生了4轮Keccak一 

384的碰撞,复杂度为2M 。 

J.Daemen等 提出了有效产生给定重量的 

Keccak—f[1600]的所有差分路径的方法。利用 

计算机程序搜索得到了重量为36时3轮的所有 

差分轨迹,确认了A.Duc等_ l找到的重量为32 

的3轮轨迹是最轻的;指出6轮的轨迹中重量没 

有小于74的。提出了一种新技术将变换的性 

质和差分轨迹重量相关连,在为恒等映射时,采 

用有效的状态表示方法,构建了in—kernel 

轨迹。 

4.2原象攻击 

Naya—Plasencia等 采用中间相遇的方法, 

提出了2轮Keccak一224和Keccak一256的原 

象和第二原象攻击,时间复杂度为2”,存储复杂 

度为2扣。这是一种可以实际实现的攻击。 

22・ 北京电子科技学院学报 

4.3区分攻击(随机性攻击) 

C.Boura等 采用零和子集划分的方式对 

Keccak进行了区分攻击。零和攻击可以看作积 

体的算法规格说明等内容将随后公布。 

Keccak作为SHA一3的获胜者,已经引起人 

们更广泛的关注,对它的分析日益增多。Keccak 

基于比特级的置换将会受到更为深入地研究,将 

与基于ARX、基于字节型S盒的置换进行充分 

分攻击的推广,即是利用输入和输出的和为零的 

子集进行区分攻击。他们针对Keccak的17轮、 

19轮和20轮置换产生了零和划分,尺寸(复杂 

度)分别为2” 、2¨ 和2 。在[1O]中他们又 

比较。Sponge结构的特点和进一步应用也会受 

到同样关注。 

提出了针对全轮Keccak置换的零和划分,复杂 

度为2幅 。可以看到这种攻击的复杂性是很 

大的。 

A.Duc等 找到了Keccak目前最好的(重 

量最轻的)5轮差分路径,针对0变换的零核特 

性,利用unalignedrebound技术,构造了8轮区分 

器,复杂度为2 钾。这比零和区分器的复杂度 

小很多。这里所谓“unaligned”是指:Keccak不 

像存在截断差分的AES那样容易处理rebound 

过程,因为其1个活跃行经过1轮后会影响多个 

slice。 

P.Morawiecki等_】 采用旋转攻击方法,提 

出了5轮Keccak的区分攻击,复杂度仅为2 , 

但是对于更多轮数则遇到了较大困难。另外,这 

攻击方式与其他区分攻击不同之处在于:可以 

产生4轮原象攻击,复杂度为理论值减少2 倍。 

5结束语 

NIST的SHA一3征集活动是杂凑函数研究 

的一件大事,类似当年AES征集活动,它有力促 

进了整个领域的设计和分析水平。 

进入第三轮的五个算法都是很优秀的算法, 

具有各自的优势和特点,例如BLAKE和Skein 

的安全余量也较大,其软件实现性能是这些算法 

中最为突出的。NIST综合考虑了算法的各方面 

因素,最终选定了Keccak作为SHA一3标准。 

Keccak能够获胜,不仅是由于其安全性能良好, 

更重要的是因为其新颖的结构设计、优秀的整体 

实现性能和良好的适应能力。作为SHA一3的 

最终标准,NIST允许其进行一些微小改动,其具 

参考文献: 

[1]G.Bertoni,et al,The Keccak Reference,Januar- 

Y,201 1,http://Keccak.noekeon.org. 

[2]G.Bertoni,J.Daemen et al,Cryptographic 

sponge functions,January,2011,http:// 

sponge.noekeon.org/. 

[3]Shu—jen Chang,et al,Third—Round Repoa of 

the SHA——3 Cryptographic Hash Algorithm Com-- 

petition,November,2012,http://dx.doi.org/ 

10.6028/NIST.IR.7896. 

[4]I.Dinur,O.Dunkelman and A.Shamir,New at— 

tacks on Keccak一224 and Keccak一256,FSE’ 

2012,2012. 

[5]I.Dinur,O.Dunkelman and A.Shamir,Collision 

Attacks on Up to 5 Rounds of SHA——3Using Gen—- 

eralized Intema1 Differentials,FSE’2013,2013. 

[6]A.Duc,J.Guo,T.Peyrn and L.Wei,Unaligned 

Rebound Attack:Application to Keccak,FSE’ 

2012,2012. 

[7]J.Daemen and G Van Assche,Differential Propa— 

gation analysis of Kecaak,FSE’2012,2012. 

[8]M.Naya—Plasencia,A.Reock,and W.Meier, 

Practical Analysis of Reduced—Round Keccak, 

INDOCRYPT 2011,2011. 

[9]C.Boura and A.Canteaut,Zero—Sum Distin- 

guishers for Iterated Permutations and Application 

to Keccak—f and Hamsi一256,SAC’ 

2010,2010. 

[10]C.Boura,A.Canteaut and C.De Canniere, 

第21卷 SHA一3获胜算法:Keccak评析李梦东邵鹏林李小龙 ・23・ 

Higher—order differential properties of Keccak tational cryptanalysis of round—red

uced Kec— 

and Luffa,FSE’2011,2011 cak,FSE’2013,2013 

[1 1]P.Morawiecki,J.Pieprzykand M.Srebrny,Ro— 

A Short Review 

on SHA一3 Winner:Keccak 

Li Mengdong 

Shao Penglin。Li Xiaolong 

1.Department of Information Security,Beijing Electronic Science and 

Technology Institute,Beijing 100070,China; 

2.School of Telecommunication Engineering,Xidian University,Xian,710071,China 

Abstract:Abstract:Since NIST claimed Keccak was the winner of SHA一3 Competition on October 

2, 

2012;this algorithm has become the focus of attentions.In this paper a brief discussion is given on 

the 

algorithmic procedures,properties,winning advantages and security status about Keccak.Through the 

analysis,we can have a better understanding of Keccak. 

Keywords:Hash Function;SHA一3;Keccak;Sponge 

(责任编辑:王曼珠) 


本文标签: 算法 攻击 性能 进行 输出