利用动态立方体攻击破解Grain - 128流密码
一、引言
在密码学领域,一个设计良好的密码系统应能抵御各类已知的密码分析攻击,如区分攻击和密钥恢复攻击。这两种攻击紧密相关,很多情况下,区分器可扩展为密钥恢复攻击。
传统上,迭代分组密码的密钥恢复攻击,如差分密码分析和线性密码分析,先构建区分器,再猜测部分密钥并用于部分解密,通过区分器验证猜测的正确性。然而,这种方法通常不适用于流密码,因为流密码无法进行部分解密。
本文聚焦于从立方体测试器获得的区分器,并展示如何将其用于密钥恢复攻击。立方体测试器是一类通用区分器,可应用于任何密码系统的黑盒表示;立方体攻击则与立方体测试器相关,二者都会对密码函数在部分输入值上的输出求和,但目的不同,前者用于区分密码与随机函数,后者用于推导密钥位的线性方程。
二、立方体攻击与立方体测试器
2.1 立方体攻击
在几乎所有密码方案中,每个输出位都可用一个关于秘密变量(密钥位)和公共变量(分组密码中的明文位、流密码中的IV位)的多元主多项式来描述。基本立方体攻击是一种求解此类多项式的算法,与高阶差分攻击和AIDA等已知攻击密切相关。
设一个具有 $n$ 个变量的多元主多项式 $p(x_1, \cdots, x_n)$ ,对于包含来自索引子集 $I$ 的变量相乘的项 $t_I$ ,多项式可写为:
$p(x_1, \cdots, x_n) \equiv t_I \cdot p_S(I) + q(x_1, \cdots, x_n)$
其中 $p_S(I)$ 称为 $I$ 在 $p$ 中的超多项式,它不包含与 $t_I$ 相同的变量,且 $q(x_1, \
超级会员免费看
订阅专栏 解锁全文
128

被折叠的 条评论
为什么被折叠?



