针对流密码MAG算法的已知明文攻击现代密码学
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0 ≤ i < 127 ; C t 表示时刻 t 时记忆单元 C 的内容。状态更新
函数 F ( R t , C t ) 具体如下:
t t t t 步骤 1 更新记忆单元 C,比较 R2 和 R3 ,如果 R2 > R3 ,
则 C t 与 R1t 进行异或运算,然后再与常数 E 模 232 加,所得结 果用来更新 C 得到 C t +1 ,否则 C t 与 R1t 的补进行异或运算后 与常数 E 模 232 加,所得结果用来更新 C 。其数学表示如下:
1− 2 1− 2 1− 2 1− 2 1− 2 1− 2 1− 2 ( R0 , R1 , R2 , R3 , R4 ," , R125 , R126 , C1−2 ) =
14 14 14 14 14 14 14 14
(T0 , T1 , T2 , T3 , T4 ," , T0 , T1 , T2 )
1if0126ttrcir?????基金项目河南省杰出青年科学基金资助项目0312001800作者简介常亚勤1980女博士研究生主研方向密码学金晨辉教授博士生导师收稿日期20100509emailyaqinchangyahoocomcn160具体的填充过程为对于128bit密钥设128bit密钥kkk令001skk646595kkk39697skk121212121201234ssssssss对于80bit密钥设80bit密钥kkktkk3161747tkkk121212121201234tttttttt调用状态更新函数过程如下14for21to0frc算法的加密过程为for0to1
调用状态更新函数过程如下:
for i = −214 + 1 to 0 F (R , C )
i i
算法的加密过程为:
for i = 0 to n − 1 { F ( Ri , C i );
i +1 KSi = R126 mod 256;
法内部状态的低 8 bit 值。 (2) 当 时 刻 t = 126 时 , 算 法 的 内 部 状 态 的 低 8 bit 为
128 128 (1) 当 时 刻 t = 127 时 , 算 法 的 内 部 状 态 为 ( R0 , R1 ," , 128 t R126 , C128 ) , 根据 MAG 算法内部状态的更新函数由 R0 = Rit −i 得 2 3 128 ′i+1 , R126 ," , R126 , C128 ) 。又由 KSi = R126 到算法的内部状态为 ( R126
第 36 卷 Vol.36
第 20 期 No.20
计 算 机 工 程 Computer Engineering
文章编号:1000—3428(2010)20—0159—02 文献标识码:A
2010 年 10 月 October 2010
中图分类号:TN918.1
·安全技术·
针对流密码 MAG 算法的已知明文攻击
可得时刻 t = 127 时算法的内部状态的低 8 bit 为 ( KS1 , KS 2 ," ,
128 1 KS127 , C128 mod 256) 。 而 R126 = R126 ⊕ C128 , 因此 (C128 ) mod 256 = 1 128 ( R126 ⊕ R126 ) mod 256 = KS0 ⊕ KS127 已知,由此可知 t = 127 时算
CTi = M i ⊕ KSi ; }
有 2 个可能值。 (3)对于 0 ≤ i ≤ 126 , 记 Ri′t = Rit mod 256、C ′t = C t mod 256 ,
′0 , KS0 , 则当时刻 t = 125 时,算法的内部状态的低 8 bit 为 ( R126
0 ′0 ⊕ C ′127 , KS1 ," , KS125 , C ′126 ) , R126 、C126 都未知。由 KS126 = R126
2
流密码 MAG 算法
MAG 是一个基于细胞自动机的密码算法, 其内部状态由
—159—
具体的填充过程为:对于 128 bit 密钥,设 128 bit 密钥 K = (k0 , k1 ,", k127 ) , 令 S0 = (k0 , k1 ,", k31 ) 、S1 = (k32 , k33 ,", k63 ) 、
C t +1 = ((C t ⊕ D t ) + E ) mod 232
t t ⎧ R1t if R2 > R3 ⎪ ; E 是一个 32 bit 的常数。在密钥 t t t ⎪ ⎩ R1 if R2 ≤ R2
其中, D t = ⎨
初始化算法中, E = 0 x11111111 (16 进制表示 ) ,在加密算法 中E=0。 步骤 2 更新移存器 R 的状态:
由于在时刻 t = −214 + 1 时,算法的内部状态 R 和 C 填充 的是密钥,因此攻击方法是还原时刻 t = −214 + 1 时的内部状 态。具体步骤为:首先确定时刻 t = 127 时算法内部状态的低 8 bit 值,从逆推求出 t = 0 时内部状态的低 8 bit 值,最终逆 推求出 t = −214 + 1 时内部状态的低 8 bit 值,得到密钥。 下文首先确定时刻 t = 127 时算法内部状态的低 8 bit 值:
概述
一个 127 级 32 bit 值的存储器组成的移存器 R 和 1 个 32 bit 的记忆单元 C 组成,共有 4 096 bit。 下文首先给出一些符号说明, 用 “+” 表示模 232 加, “⊕” 表示按位异或, “ x ”表示对 x 进行按位取补运算。然后记 Rit 表示时刻 t 时移存器 R 的第 i 级存储器的内容。其中,
C ′126 = C ′127 ⊕ KS0 ⊕ ((a × ( N 126 mod 2)) mod 256) ⊕ ((a × ( N 127 mod 2)) mod 256) = C ′127 ⊕ KS0 ⊕ ((a × (( N 126 + N 127 ) mod 2)) mod 256)
其中, M i 表示明文; KSi 表示密钥流; CTi 表示密文。MAG 算法结构框架如图 1 所示。
R0
R1 R2
R3
⋅⋅⋅
R124
R125
R126
′0 = C ′127 ⊕ KS126 有 2 个 可 能 值 , 再 由 C ′127 = C ′126 ⊕ 得 R126 KS0 ⊕ ((a × ( N 126 mod 2)) mod 256) 得到:
S 2 = (k64 , k65 ,", k95 ) 、 S3 = (k96 , k97 ,", k127 ) ,则:
1−2 1− 2 1− 2 1− 2 1− 2 1− 2 1− 2 ( R0 , R1 , R2 , R3 , R4 ," , R125 , R126 , C1−2 ) =
14 14 14 14 14 14 14 14
常亚勤,金晨辉
(解放军信息工程大学电子技术学院,郑州 450004) 摘 要:基于已知明文的假设下,针对 MAG 算法初始化、密钥流生成阶段的不同特点,给出 2 个前向逆推攻击算法。对于密钥规模为 80 bit、128 bit 的 MAG 算法,利用上述 2 个攻击算法只需已知前 128 个密钥流输出值,即可恢复其 40 bit、32 bit 的密钥,计算复杂度为 O(214)。模拟结果表明,该方法的平均攻击时间约为 9 min,攻击成功率为 1。 关键词:MAG 算法;流密码;已知明文攻击
( KS0 , KS1 ," , KS126 , C127 mod 256) , 只 有 C127 未 知 , 而 C128 =
2 C127 ⊕ R126 ⊕ (a × ( N 127 mod 2)) ,由此可得:
(C127 )mod256 = (C128 mod256) ⊕ KS1 ⊕ (a × (N127 mod2)mod256)
Known Plaintext Attack for Stream Cipher MAG Algorithm
CHANG Ya-qin, JIN Chen-hui
(Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004, China) 【Abstract】Aiming at the different characteristics of initialization process and the key stream generation of My Array Generator(MAG) algorithm, this paper gives two kinds of forward inversion attack algorithm based on known plaintext assumption. For the 80 bit and 128 bit keys, it can recover 40 bit and 32 bit key respectively with 128 consecutive known key stream byte and the computing complexity O(214). Simulation results show that the average attack time is about 9 min, and the attack success rate is 1. 【Key words】My Array Generator(MAG) algorithm; stream cipher; known plaintext attack
1
MAG(My Array Generator)[1]是一个基于细胞自动机的密 码算法。该算法内部状态由一个大的移存器 R [2]和 1 个 32 bit 的记忆单元 C 组成,其中,移存器 R 由 127 级 32 bit 值的存 储器组成,在内部状态更新时没有使用代数函数,而是使用 条件分支数保证算法的安全性,每次内部状态更新后输出 1 个 8 bit 的字作为密钥流, 密钥规模有 80 bit 和 128 bit 2 种。 MAG 可以看成单元扩大后的细胞自动机 (Cellular Automata, CA)系统,算法中 MAG 的安全分析 [3]仅在 CA 分析的 基础上进行。事实上,由于 MAG 直接输出部分内部状态使 得算法存在安全漏洞。文献 [4]给出一个对 MAG 算法的区分 攻击,该区分攻击很有效,只需利用算法前 129 个密钥流输 出值,经过简单的计算和判断就能区分出一个序列是 MAG 算法的输出序列还是随机序列,但是该区分攻击不能恢复密 钥。文献 [5]在假设 MAG 算法初始化过程中某常数 E=0 的条 件下,给出一个对 MAG 算法新的区分攻击。由于 E=0 时, 算法的非线性变换退化为线性变换,因此,文献 [3]的区分攻 击不但有效而且能将该区分攻击扩展为恢复部分密钥攻击, 其计算复杂度为 O(214 ) 。 但在 MAG 算法初始化过程中,常数 E 不等于 0,而文 献 [5] 中给出的区分攻击方法和恢复部分密钥攻击的方法都 不适用于 E 不等于 0 的情况。因为,此时用来恢复部分密钥 的线性方程组将变为非线性方程组,解非线性方程组将增加 攻击算法的计算复杂度, 等同于穷尽部分密钥的计算复杂度。 本文对 MAG 算法的安全性进行分析,提出一种对 MAG 算 法的已知明文攻击 [6]方法,所需明文量为 128 Byte。
t t +1 ⎧ ⎪ R0 ⊕ C if i = 126 Rit +1 = ⎨ t if 0 ≤ i < 126 ⎪ ⎩ Ri +1
下文介绍 MAG 的初始化过程。 MAG 的初始化过程分为 2 个阶段:第 1 个阶段是填充密钥,第 2 个阶段是使用状态 更新函数更新算法的内部状态。
基金项目:河南省杰出青年科学基金资助项目(0312001800) 作者简介:常亚勤(1980-),女,博士研究生,主研方向:密码学; 金晨辉,教授、博士生导师 收稿日期:2010-05-09 E-mail:yaqinchang@
( S0 , S1 , S2 , S3 , S0 ," , S1 , S2 , S3 )
对于 80 bit 密钥,设 80 bit 密钥 K = (k0 , k1 ,", k79 ) ,令
T0 = (k0 , k1 ," , k31 )、T1 = (k32 , k33 ," , k63 )、T2 = (k64 , k65 ," , k79 , k0 ," , k15 ) 、 T3 = (k16 , k17 ,", k47 ) 、 T4 = (k48 , k17 ,", k79 ) ,则:
函数 F ( R t , C t ) 具体如下:
t t t t 步骤 1 更新记忆单元 C,比较 R2 和 R3 ,如果 R2 > R3 ,
则 C t 与 R1t 进行异或运算,然后再与常数 E 模 232 加,所得结 果用来更新 C 得到 C t +1 ,否则 C t 与 R1t 的补进行异或运算后 与常数 E 模 232 加,所得结果用来更新 C 。其数学表示如下:
1− 2 1− 2 1− 2 1− 2 1− 2 1− 2 1− 2 ( R0 , R1 , R2 , R3 , R4 ," , R125 , R126 , C1−2 ) =
14 14 14 14 14 14 14 14
(T0 , T1 , T2 , T3 , T4 ," , T0 , T1 , T2 )
1if0126ttrcir?????基金项目河南省杰出青年科学基金资助项目0312001800作者简介常亚勤1980女博士研究生主研方向密码学金晨辉教授博士生导师收稿日期20100509emailyaqinchangyahoocomcn160具体的填充过程为对于128bit密钥设128bit密钥kkk令001skk646595kkk39697skk121212121201234ssssssss对于80bit密钥设80bit密钥kkktkk3161747tkkk121212121201234tttttttt调用状态更新函数过程如下14for21to0frc算法的加密过程为for0to1
调用状态更新函数过程如下:
for i = −214 + 1 to 0 F (R , C )
i i
算法的加密过程为:
for i = 0 to n − 1 { F ( Ri , C i );
i +1 KSi = R126 mod 256;
法内部状态的低 8 bit 值。 (2) 当 时 刻 t = 126 时 , 算 法 的 内 部 状 态 的 低 8 bit 为
128 128 (1) 当 时 刻 t = 127 时 , 算 法 的 内 部 状 态 为 ( R0 , R1 ," , 128 t R126 , C128 ) , 根据 MAG 算法内部状态的更新函数由 R0 = Rit −i 得 2 3 128 ′i+1 , R126 ," , R126 , C128 ) 。又由 KSi = R126 到算法的内部状态为 ( R126
第 36 卷 Vol.36
第 20 期 No.20
计 算 机 工 程 Computer Engineering
文章编号:1000—3428(2010)20—0159—02 文献标识码:A
2010 年 10 月 October 2010
中图分类号:TN918.1
·安全技术·
针对流密码 MAG 算法的已知明文攻击
可得时刻 t = 127 时算法的内部状态的低 8 bit 为 ( KS1 , KS 2 ," ,
128 1 KS127 , C128 mod 256) 。 而 R126 = R126 ⊕ C128 , 因此 (C128 ) mod 256 = 1 128 ( R126 ⊕ R126 ) mod 256 = KS0 ⊕ KS127 已知,由此可知 t = 127 时算
CTi = M i ⊕ KSi ; }
有 2 个可能值。 (3)对于 0 ≤ i ≤ 126 , 记 Ri′t = Rit mod 256、C ′t = C t mod 256 ,
′0 , KS0 , 则当时刻 t = 125 时,算法的内部状态的低 8 bit 为 ( R126
0 ′0 ⊕ C ′127 , KS1 ," , KS125 , C ′126 ) , R126 、C126 都未知。由 KS126 = R126
2
流密码 MAG 算法
MAG 是一个基于细胞自动机的密码算法, 其内部状态由
—159—
具体的填充过程为:对于 128 bit 密钥,设 128 bit 密钥 K = (k0 , k1 ,", k127 ) , 令 S0 = (k0 , k1 ,", k31 ) 、S1 = (k32 , k33 ,", k63 ) 、
C t +1 = ((C t ⊕ D t ) + E ) mod 232
t t ⎧ R1t if R2 > R3 ⎪ ; E 是一个 32 bit 的常数。在密钥 t t t ⎪ ⎩ R1 if R2 ≤ R2
其中, D t = ⎨
初始化算法中, E = 0 x11111111 (16 进制表示 ) ,在加密算法 中E=0。 步骤 2 更新移存器 R 的状态:
由于在时刻 t = −214 + 1 时,算法的内部状态 R 和 C 填充 的是密钥,因此攻击方法是还原时刻 t = −214 + 1 时的内部状 态。具体步骤为:首先确定时刻 t = 127 时算法内部状态的低 8 bit 值,从逆推求出 t = 0 时内部状态的低 8 bit 值,最终逆 推求出 t = −214 + 1 时内部状态的低 8 bit 值,得到密钥。 下文首先确定时刻 t = 127 时算法内部状态的低 8 bit 值:
概述
一个 127 级 32 bit 值的存储器组成的移存器 R 和 1 个 32 bit 的记忆单元 C 组成,共有 4 096 bit。 下文首先给出一些符号说明, 用 “+” 表示模 232 加, “⊕” 表示按位异或, “ x ”表示对 x 进行按位取补运算。然后记 Rit 表示时刻 t 时移存器 R 的第 i 级存储器的内容。其中,
C ′126 = C ′127 ⊕ KS0 ⊕ ((a × ( N 126 mod 2)) mod 256) ⊕ ((a × ( N 127 mod 2)) mod 256) = C ′127 ⊕ KS0 ⊕ ((a × (( N 126 + N 127 ) mod 2)) mod 256)
其中, M i 表示明文; KSi 表示密钥流; CTi 表示密文。MAG 算法结构框架如图 1 所示。
R0
R1 R2
R3
⋅⋅⋅
R124
R125
R126
′0 = C ′127 ⊕ KS126 有 2 个 可 能 值 , 再 由 C ′127 = C ′126 ⊕ 得 R126 KS0 ⊕ ((a × ( N 126 mod 2)) mod 256) 得到:
S 2 = (k64 , k65 ,", k95 ) 、 S3 = (k96 , k97 ,", k127 ) ,则:
1−2 1− 2 1− 2 1− 2 1− 2 1− 2 1− 2 ( R0 , R1 , R2 , R3 , R4 ," , R125 , R126 , C1−2 ) =
14 14 14 14 14 14 14 14
常亚勤,金晨辉
(解放军信息工程大学电子技术学院,郑州 450004) 摘 要:基于已知明文的假设下,针对 MAG 算法初始化、密钥流生成阶段的不同特点,给出 2 个前向逆推攻击算法。对于密钥规模为 80 bit、128 bit 的 MAG 算法,利用上述 2 个攻击算法只需已知前 128 个密钥流输出值,即可恢复其 40 bit、32 bit 的密钥,计算复杂度为 O(214)。模拟结果表明,该方法的平均攻击时间约为 9 min,攻击成功率为 1。 关键词:MAG 算法;流密码;已知明文攻击
( KS0 , KS1 ," , KS126 , C127 mod 256) , 只 有 C127 未 知 , 而 C128 =
2 C127 ⊕ R126 ⊕ (a × ( N 127 mod 2)) ,由此可得:
(C127 )mod256 = (C128 mod256) ⊕ KS1 ⊕ (a × (N127 mod2)mod256)
Known Plaintext Attack for Stream Cipher MAG Algorithm
CHANG Ya-qin, JIN Chen-hui
(Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004, China) 【Abstract】Aiming at the different characteristics of initialization process and the key stream generation of My Array Generator(MAG) algorithm, this paper gives two kinds of forward inversion attack algorithm based on known plaintext assumption. For the 80 bit and 128 bit keys, it can recover 40 bit and 32 bit key respectively with 128 consecutive known key stream byte and the computing complexity O(214). Simulation results show that the average attack time is about 9 min, and the attack success rate is 1. 【Key words】My Array Generator(MAG) algorithm; stream cipher; known plaintext attack
1
MAG(My Array Generator)[1]是一个基于细胞自动机的密 码算法。该算法内部状态由一个大的移存器 R [2]和 1 个 32 bit 的记忆单元 C 组成,其中,移存器 R 由 127 级 32 bit 值的存 储器组成,在内部状态更新时没有使用代数函数,而是使用 条件分支数保证算法的安全性,每次内部状态更新后输出 1 个 8 bit 的字作为密钥流, 密钥规模有 80 bit 和 128 bit 2 种。 MAG 可以看成单元扩大后的细胞自动机 (Cellular Automata, CA)系统,算法中 MAG 的安全分析 [3]仅在 CA 分析的 基础上进行。事实上,由于 MAG 直接输出部分内部状态使 得算法存在安全漏洞。文献 [4]给出一个对 MAG 算法的区分 攻击,该区分攻击很有效,只需利用算法前 129 个密钥流输 出值,经过简单的计算和判断就能区分出一个序列是 MAG 算法的输出序列还是随机序列,但是该区分攻击不能恢复密 钥。文献 [5]在假设 MAG 算法初始化过程中某常数 E=0 的条 件下,给出一个对 MAG 算法新的区分攻击。由于 E=0 时, 算法的非线性变换退化为线性变换,因此,文献 [3]的区分攻 击不但有效而且能将该区分攻击扩展为恢复部分密钥攻击, 其计算复杂度为 O(214 ) 。 但在 MAG 算法初始化过程中,常数 E 不等于 0,而文 献 [5] 中给出的区分攻击方法和恢复部分密钥攻击的方法都 不适用于 E 不等于 0 的情况。因为,此时用来恢复部分密钥 的线性方程组将变为非线性方程组,解非线性方程组将增加 攻击算法的计算复杂度, 等同于穷尽部分密钥的计算复杂度。 本文对 MAG 算法的安全性进行分析,提出一种对 MAG 算 法的已知明文攻击 [6]方法,所需明文量为 128 Byte。
t t +1 ⎧ ⎪ R0 ⊕ C if i = 126 Rit +1 = ⎨ t if 0 ≤ i < 126 ⎪ ⎩ Ri +1
下文介绍 MAG 的初始化过程。 MAG 的初始化过程分为 2 个阶段:第 1 个阶段是填充密钥,第 2 个阶段是使用状态 更新函数更新算法的内部状态。
基金项目:河南省杰出青年科学基金资助项目(0312001800) 作者简介:常亚勤(1980-),女,博士研究生,主研方向:密码学; 金晨辉,教授、博士生导师 收稿日期:2010-05-09 E-mail:yaqinchang@
( S0 , S1 , S2 , S3 , S0 ," , S1 , S2 , S3 )
对于 80 bit 密钥,设 80 bit 密钥 K = (k0 , k1 ,", k79 ) ,令
T0 = (k0 , k1 ," , k31 )、T1 = (k32 , k33 ," , k63 )、T2 = (k64 , k65 ," , k79 , k0 ," , k15 ) 、 T3 = (k16 , k17 ,", k47 ) 、 T4 = (k48 , k17 ,", k79 ) ,则: