软件学报
JOURNAL OF SOFTWARE
2000　Vol.11　No.2　P.202-206



LOKI97的线性密码分析
吴文玲　李宝　冯登国　卿斯汉
摘　要：该文利用线性密码分析对LOKI97进行了攻击,结果显示,LOKI97的安全性并没有达到高级加密标准的要求;利用线性密码分析中的算法1和250个明密文对,以0.977的成功率预测92比特子密钥;利用线性密码分析中的算法2和245个明密文对,以0.967的成功率预测LOKI97的种子密钥.
关键词：线性密码分析,线性逼近,非线性度.
分类号：TP309
Linear Cryptanalysis of LOKI97
WU Wen-ling　LI Bao　FENG Deng-guo　QING Si-han
(Engineering Research Center for Information Security Technology The Chinese Academy of Sciences,Beijing,100080)
WU Wen-ling　LI Bao　FENG Deng-guo　QING Si-han
(State Key Laboratory of Information Security Institute of Software The Chinese Academy of Sciences,Beijing,100080)
Abstract：In this paper,LOKI97 is analyzed using linear cryptanalysis.The results show that LOKI97 does not meet the needs of AES (advanced encryption standard).Using algorithm 1 of linear cryptanalysis,the authors can get the 92－bit subkey with 250 known-plaintexts and the success rate is 0.977; using algorithm 2 of linear cryptanalysis,it is possible to break LOKI97 with 245 known-plaintexts and the success rate is 0.967.
Key words：Linear cryptanalysis,linear approximation,nonlinearity.▲
　　LOKI97是美国国家标准技术研究所(NIST)公布的15个21世纪高级加密标准(advanced encryption standard,简称AES)的候选算法之一,它是LOKI系列密码的最新产品.Biham和Shamir在文献［1］中对LOKI89进行了分析,结果显示,虽然LOKI89减少几轮变体后可能易受差分密码分析的攻击,但全部16轮的LOKI89却经得起差分密码分析的攻击.Tokita Sorimachi和Matsui在文献［2］中对LOKI91对进行了线性密码分析,发现12轮以上的LOKI91对线性密码分析是安全的.LOKI97选取的S-盒的非线性性能非常好,S1的线性逼近的概率p满足:,S2的线性逼近的概率p满足:.由此,文献［3］给出下列结果:
　　.单轮的最佳线性逼近概率pbest满足:;
　　.14轮LOKI97的最佳线性逼近概率pbest满足:;
　　.16轮LOKI97的最佳线性逼近概率pbest满足:.
　　利用文献［4］和上面的结果,可以估计出用线性密码分析攻击LOKI97所需的明密文对大约为2282.这似乎反映了LOKI97对线性密码分析是免疫的,然而，事实却不然,在本文中,我们利用LOKI97轮函数的特点,对某些密钥构造出单轮的线性逼近,它们仅涉及输出和密钥,然后利用“+”运算对于最低比特位的线性性,把单轮的线性逼近结合起来,构造出14轮和16轮LOKI97的线性逼近,它们的概率p分别满足:

利用这些线性逼近,我们对LOKI97进行线性密码分析.
1 LOKI97算法描述
　　LOKI97的分组长度为128比特,密钥长度为128,192,256比特.它采用的是16轮的Fesitel结构.
1.1 加密过程
1.1.1 加密算法的总体结构
　　P=L0|R0为128比特的明文输入,用下列方式计算密文,对于j=1,...,16,有
Ri=Li-1F(Ri-1+K3i-2,K3i-1),
Li=Ri-1+K3i-2+K3i，
C=R16|L16为密文.
1.1.2 轮函数F
　　轮函数F:F642×F642→F642,
F(A,B)=Sb(P(Sa(E(KP(A,B))),B).
　　KP(A,B)是一个简单的密钥控制置换,它将64比特输入A分成两个32比特字,用输入B的较低(最右边)32比特确定是交换这些字中比特的相应位(如果密钥比特是1),还是不交换(如果密钥比特为0).
　　E是一个扩展函数,E从64个输入比特中产生一个96比特输出值.
［4-0,63-56|58-48|52-40|42-32|34-24|28-16|18-8|12-0］.
　　Sa由盒S1和盒S2并置构成,Sa=［S1,S2,S1,S2,S2,S1,S2,S1］,Sa的输入是E的输出.
　　P把输入比特［63-0］映射到输出比特:
［56,48,40,32,24,16,08,00,57,49,41,33,25,17,09,01,
58,50,42,34,26,18,10,02,59,51,43,35,27,19,11,03,
60,52,44,36,28,20,12,04,61,53,45,37,29,21,13,05,
62,54,46,38,30,22,14,06,63,55,47,39,31,23,15,07］,
即输入比特63转入输出比特56,输入比特62转入输出比特48等.
　　Sb由盒S1和盒S2并置构成,Sb=［S2,S2,S1,S1,S2,S2,S1,S1］,Sb的输入是
B［63-61］|P［63-56］,B［60-58］|P［55-48］,B［57-53］|P［47-40］,
B［52-48］|P［39-32］,B［47-45］|P［31-24］,B［44-42］|P［23-16］,
B［41-37］|P［15-8］,B［36-32］|P［7-0］,
其中B［63-61］表示由B的第63到61比特组成的比特串.Sb的第1个S盒S2的输入为B［63-61］|P［63-56］.
1.2　解密过程
　　输入密文C=R16|L16,然后反向对轮进行操作.即对i=1,...,16,有
Li-1=RiF(Li-K3I,K3i-1),
Ri-1=Li-K3i-K3i-2,
P=L0|R0,即为明文.
1.3 密钥方案
16轮LOKI97需要48个64比特的密钥,我们用下述方法把种子密钥K扩展为子密钥.首先,依据种子密钥的长度,预制4个64比特字［K40|K30|K20|K10］.
K=［Ka|Kb|Kc|Kd］为256比特,令［K40|K30|K20|K10］=［Ka|Kb|Kc|Kd］;
K=［Ka|Kb|Kc］为192比特,令［K40|K30|K20|K10］=［Ka|Kb|Kc|f(Ka,Kb)］;
K=［Ka|Kb］为128比特,令［K40|K30|K20|K10］=［Ka|Kb|f(Kb,Ka)|f(Ka,Kb)］,
然后对i=1,...,48作如下计算:
Ki=K1i=K4i-1gi(K1i-1,K3i-1,K2i-1),
K4i=K3i-1,
K3i=K2i-1,
K2i=K1i-1,
其中gi(K1,K3,K2)=F(K1+K3+(Delta*i),K2),
Delta=［(sqrt(5)-1)*263］=9E3779B97F4A7C1516.
2 LOKI97的线性逼近
　　令S1(x12,...,x2,x1,x0)=(f7,f6,f5,f4,f3,f2,f1,f0):F132→F82,通过计算,我们给出S1的分支函数f0的代数表达式为:

　　令(x12,x11,x10,x9,x8)=i,0≤i≤31,可得32个布尔函数gi(x7,x6,x5,x4,x3,x2,x1,x0),它们的汉明重量归纳如下:
WH(g0)=144,WH(g1)=128,WH(g2)=128,WH(g3)=128,WH(g4)=144,WH(g5)=128,
WH(g6)=128,WH(g7)=128,WH(g8)=128,WH(g9)=144,WH(g10)=128,WH(g11)=128,
WH(g12)=128,WH(g13)=112,WH(g14)=128,WH(g15)=128,WH(g16)=128,WH(g17)=112,
WH(g18)=128,WH(g19)=128,WH(g20)=128,WH(g21)=144,WH(g22)=128,WH(g23)=128,
WH(g24)=112,WH(g25)=128,WH(g26)=128,WH(g27)=128,WH(g28)=112,WH(g29)=128,
WH(g30)=128,WH(g31)=128.
　　显然,g0,g4,g9,g13,g17,g21,g24,g28是非平衡的布尔函数,因此,它们的非线性度小于16.又因为轮函数F的Sb层的每一个S盒的最高几比特输入是子密钥,所以对某些密钥,可以给出轮函数F(X,K)=Y的一批概率为且仅涉及输出和密钥的线性逼近:
Y［0］=K［h(36-32)］,　　(1)
其中K［h(36-32)］=h(k36,k35,k34,k33,k32),h是线性布尔函数.
　　令(Li-1,Ri-1)和(Li,Ri)分别是第i轮的输入和输出,
Li=Ri-1+K1i+K3i,　　(2)
Ri=Li-1F(Ri-1,K2i).　　(3)
　　对于式(2),有下列概率为1的线性逼近:
Ei:Li［0］=Ri-1［0］K1i［0］K3i［0］.
　　对于式(3),利用式(1),给出下列概率为的线性逼近:
Di:Ri［0］=Li-1［0］K2i［h(36-32)］.
　　对于16轮的LOKI97,令(L0,R0)和(R16,L16)分别是它的输入和输出,我们构造轨迹为（E1,D2,E3,D4,E5,D6,E7,D8,E9,D10,E11,D12,E13,D14,E15,D16）的线性逼近:
　　(4)
　　轨迹为（D1,E2,D3,E4,D5,E6,D7,E8,D9,E10,D11,E12,D13,E14,D15,E16）的线性逼近:
　　(5)
　　式(4)和式(5)的概率都满足:.
　　从第2轮开始,以轨迹（E2,D3,E4,D5,E6,D7,E8,D9,E10,D11,E12,D13,E14,D15,E16）构造线性逼近:
L0［0］F(R0+K11,K21)［0］k=L16［0］,　　(6)
其中,式(6)的概率满足:

3 LOKI97的线性密码分析
　　利用式(4),我们以0.977的成功率预测K2i的第36到32比特,i是偶数,1≤i≤16;利用式(5),我们以0.977的成功率预测K2i的第36到32比特,i是奇数,1≤i≤16.
　　分析所需的明密文对数N=250.下面以式(4)为例,给出操作办法.
　　第1步.对任意给定的偶数j(1≤j≤16),固定式(4)中K2i［h(36-32)］(i≠j)的h.
　　第2步.令K2j［h(36-32)］=K2j［32］,用式(4)预测k0=k′K2j［32］.其中.
　　第3步.令K2j［h(36-32)］=K2j［33］,用式(4)预测k1=k′K2j［33］.
　　第4步.令K2j［h(36-32)］=K2j［32,33］,用式(4)预测k2=k′K2j［32,33］.
　　第5步.令K2j［h(36-32)］=K2j［32,33,34］,用式(4)预测k3=k′K2j［32,33,34］.
　　第6步.令K2j［h(36-32)］=K2j［32,33,34,35］,用式(4)预测k4=k′K2j［32,33,34,35］.
　　第7步.令K2j［h(36-32)］=K2j［32,33,34,35,36］,用式(4)预测k5=k′K2j［32,33,34,35,36］.
　　第8步.计算K2j［32］=k0k2,K2j［33］=k1k2,K2j［34］=k3k2.K2j［35］=k3k4,K2j［35］=k5k4.
　　上面我们利用线性密码分析的算法1,以0.977的成功率预测出子密钥的92比特,所需明密文对为250.下面，我们对密钥长度为128比特的LOKI97，用线性密码分析的算法2进行分析.令K=(K1,K2),由密钥方案可得下面的方程:
　　(7)
　　我们假定已知K11和K21,从此方程求解K1和K2比较容易.
　　因为F(R0+K11,K21)［0］与K21的37到63比特无关,又因为K21的32到36比特已知,所以,（K11,K21）的可能值有296个.首先,利用式(6)和文献［4］中的算法2,预测K11及K21的低32比特,所需明密文对为245,成功率是0.967;然后,对K21的任意可能值（共有227个）,求解方程式(7);最后,再用明密文对检测所得的结果是否为真正的密钥.
4 结束语
　　本文对LOKI97进行了线性密码分析,结果显示，LOKI97的安全性并没有设计者所希望的那么强大，我们利用轮函数的仅涉及输出和密钥的线性逼近,再利用Feistel网络的结构特性,对某些密钥构造出14轮和16轮LOKI97线性逼近,并以此对LOKI97进行分析.由此,我们指出:在设计体制时,轮函数应保证子密钥和输入的充分混合,使得攻击者构造不出仅涉及密钥和输出的有效线性逼近.■
基金项目：本文研究得到国家自然科学基金(No.69673016)和国家博士后基金资助.
作者简介：吴文玲,女,1966年生,博士后,主要研究领域为分组密码的设计与分析.
　　　　　李宝,1962年生,博士后,主要研究领域为椭圆曲线公钥字密码体制的分析与实现.
　　　　　冯登国,1965年生,研究员,主要研究领域为信息安全.
　　　　　卿斯汉,1939年生,研究员,博士生导师,主要研究领域为信息安全技术.
作者单位：吴文玲(中国科学院信息安全技术工程研究中心　北京　100080)
　　　　　李宝(中国科学院信息安全技术工程研究中心　北京　100080)
　　　　　冯登国(中国科学院信息安全技术工程研究中心　北京　100080)
　　　　　卿斯汉(中国科学院信息安全技术工程研究中心　北京　100080)
　　　　　吴文玲(中国科学院软件研究所信息安全国家重点实验室　北京　100080)
　　　　　李宝(中国科学院软件研究所信息安全国家重点实验室　北京　100080)
　　　　　冯登国(中国科学院软件研究所信息安全国家重点实验室　北京　100080)
　　　　　卿斯汉(中国科学院软件研究所信息安全国家重点实验室　北京　100080)
参考文献：
［1］Biham E,Shamir A.Differential cryptanalysis Snefru,Kharfe,REDOC-II,LOKI and Lucifer,Vol.576.Lecture Notes in Computer Science,Berlin:Springer-Verlag,1991.156～171
［2］Toshio Tokita,Tohru Sorimachi,Mitsuru Matsui.Linear cryptanalysis of LOKI and S2DES,Vol.917.Lecture Notes in Computer Science,Berlin:Springer-Verlag,1994.363～366
［3］Lawrie Brown.LOKI97,http://csrc.ncsl.nist.gov/encryption/aes/aes-home.htm
［4］Mitsuru Matsui.Linear cryptanalysis method for DES cipher,Vol.765.Lecture Notes in Computer Science,Berlin:Springer-Verlag,1993.368～397
收稿日期：1998-12-15
修稿日期：1999-03-17
