ARIA分组密码算法的不可能差分攻击

2018-06-08 01:42:55谢高淇卫宏儒
计算机研究与发展 2018年6期

谢高淇 卫宏儒

(北京科技大学数理学院 北京 100083) (xiegaoqi@sina.cn)

ARIA密码算法[1]是韩国国家安全研究所提出的一种SPN(substitution-permutation network)结构[2]的密码算法,隶属于分组密码算法[3],在2004年时,韩国工业部、商业部和能源部确定ARIA为韩国分组密码算法标准.在结构上,ARIA密码算法和AES(advanced encryption standard)算法[4-5]很相似,故很多用来分析AES算法的分析方法可以用来对ARIA密码算法进行分析,并取得了很好的效果.本文类比对AES算法的分析,结合对ARIA密码算法的研究,实现对ARIA密码算法新的攻击.

从文献[6-7]可知,不可能差分分析方法是由Biham和Knudsen提出的,一种使用不可能出现的差分即概率为0的差分特征过滤错误密钥猜测,从而得到正确密钥值的分析方法.一经提出,该方法便得到了广泛的应用,被应用于分析密码结构与算法.尤其是对AES算法的分析中效果良好,ARIA密码算法和AES算法结构上相似,不可能差分分析针对ARIA密码算法的分析也取得了非常好的效果.

1 算法ARIA

1.1 符号说明

本文所使用符号具体释义如表1所示:

Table 1 Symbol Description表1 符号说明

1.2 ARIA算法介绍

ARIA密码算法是SPN结构型分组密码,分组长度为128 b,密钥长度为128 b,192 b,256 b,相应的轮数分别为12轮、14轮和16轮[8].128 b的数据分组对应一个4×4的表格,共16 B,如图1所示.

Fig. 1 The state of 128 b on ARIA图1 ARIA的128 b状态

ARIA的轮函数由3个部件构成:

1) 混淆层(substitution layer,SL)

选用2个S盒S1和S2以及它们的逆S-11和S-12.每一个S盒定义为F28上的1个可逆的非线性变换函数S:{0,1}8→{0,1}8.ARIA有2种类型的S盒层:

奇数轮采用的变换为

偶数轮采用的变换为

2) 扩散层(diffusion layer,DL)

扩散层是一个{0,1}8×16→{0,1}8×16的映射,为16 B的线性运算:

(y0,y1,…,y15)T=L∘(x0,x1,…,x15)T,

其中,L(x)表示线性函数,“∘”是复合运算符.

其中:

y0=x3⊕x4⊕x6⊕x8⊕x9⊕x13⊕x14,
y1=x2⊕x5⊕x7⊕x8⊕x9⊕x12⊕x15,
y2=x1⊕x4⊕x6⊕x10⊕x11⊕x12⊕x15,
y3=x0⊕x5⊕x7⊕x10⊕x11⊕x13⊕x14,
y4=x0⊕x2⊕x5⊕x8⊕x11⊕x14⊕x15,
y5=x1⊕x3⊕x4⊕x9⊕x10⊕x14⊕x15,
y6=x0⊕x2⊕x7⊕x9⊕x10⊕x12⊕x13,
y7=x1⊕x3⊕x6⊕x8⊕x11⊕x12⊕x13,
y8=x0⊕x1⊕x4⊕x7⊕x10⊕x13⊕x15,
y9=x0⊕x1⊕x5⊕x6⊕x11⊕x12⊕x14,
y10=x2⊕x3⊕x5⊕x6⊕x8⊕x13⊕x15,
y11=x2⊕x3⊕x4⊕x7⊕x9⊕x12⊕x14,
y12=x1⊕x2⊕x6⊕x7⊕x9⊕x11⊕x12,
y13=x0⊕x3⊕x6⊕x7⊕x8⊕x10⊕x13,
y14=x0⊕x3⊕x4⊕x5⊕x9⊕x11⊕x14,
y15=x1⊕x2⊕x4⊕x5⊕x8⊕x10⊕x15.

3) 轮密钥加(round key addition,RKA)

中……

登录APP查看全文