其他分享
首页 > 其他分享> > 立方攻击

立方攻击

作者:互联网

立方攻击

1. 立方攻击的发展

  1. 2009-立方攻击:单纯的代数攻击1。

  2. 2011-动态立方攻击:利用立方的代数特性构建区分器,用来恢复秘密信息2。

  3. 2017-条件立方攻击:利用一种特殊的代数特性构建区分器,来恢复秘密信息3。

  4. 2020-新型条件立方攻击:放松了条件立方攻击的限制,更高的自由度,能得到比条件立方攻击更好的结果

2. 立方攻击原理及示例

### 2.1 原理

  将输出比特的关于输入的布尔表达式利用立方特性化简为低次简单的表达式,然后求解简单的表达式,从而得到密钥信息。

 

其中​是输入比特变量,包含秘密变量和一些公开变量。​是只包含公开变量的乘积项,称为立方,​是不能被​整除的多项式。

 

其中​被称为极大项。

定理1:对于一个如下所示的多项式,​中的变量的个数为​且仅包含公开变量,​中的变量可能的取值集合为​:

 

其中​称为立方​的超多项式,遍历立方所有取值并求和,有:​

  证明:​的元素的个数为​,因为​不能被​整除,所以​中至少一个变量不包含在​中,即对于任意的一个取值​,当遍历​中的元素时,总存在偶数个​,所以求和后为0;而对于​,当且仅当​中的元素全部取1时,​的值为1,所以求和后​。

攻击原理:任意的密码算法的某个输出比特都可以写成输入的布尔函数,将该布尔函数化简为上述形式,如果​的表达式是关于秘密变量非常简单的表达式,立方上求和后就可以得到简单的布尔函数方程组,从而求解得到秘密变量的值。

2.2 攻击过程

由于输出比特关于输入变量的布尔函数往往非常复杂,难以直接计算,所以可以先随机取一些变量,作为立方变量,然后测试求和后的超多项式是否是一个见多的多项式,如果在每一次立方上求和后可以确定得到的多项式都是关于部分变量的简单的多项式,那么所选 取的变量很可能就是立方变量,常见的测试方法有线性测试、二次测试、常数测试等。

线性测试:如果对于一个多项式,对于随机取值,总有​ 成立,则该多项式的代数次数有可能为1,否则一定不是线性多项式。

二次测试: 如果对于一个多项式​,对于随机取值​,总有:

 

成立,则该多项式有可能是二次多项式,否则一定不是二次多项式。

常数测试:如果对于一个多项式​,对于随机取值(​),总有​成立,则该多项式有可能只包含常数项,否则一定不是常数多项式。

攻击的一般过程:

  1. 随机选取一个公开变量的子集,记为​,其他值设置为0。

  2. 随机选取两个密钥变量值x和y,进行线性测试。若不通过,则转步骤1,通过则再次线性测试,测试N次都通过,则表示选取的变量为立方变量时,超多项式很可能是线性多项式。

  3. 恢复超多项式:

    • 常数项:除​之外的所有变量设为0,立方求和,若为0,无常数项,为1,有常数项。

    • 确定变量​的系数:将除​之外的所有变量设为0,立方求和;将​设为1,除​之外的所有变量设为0,立方求和,若两次结果相同,则该变量的系数为1,否则为0.

3. 动态立方攻击

立方测试:对于某些立方集合,在该立方上求和,根据输出分布的非随机性区分该多项式和一个随机多项式。

动态立方攻击的基本原理:根据密码算法的具体结构,将输出多项式表示成如下形式:

 

当​取0时,​,此时​的代数性质和​的代数性质相同;若​取值随机,则​相当于是随机多项式。假设​,其中​是一个公开变量,这个变量被称作动态变量,​是一个已知的关于输入变量的多项式。令​,猜测​的取值,若猜测正确,则​,否则​不一定为0。所以在正确猜测下,​具有某种非随机性,而错误猜测下,​表现出随机性,从而得到正确的猜测。

4. 条件立方攻击

条件立方变量:第一轮函数中被比特条件控制,第二轮函数后互不相乘的变量(存在某些条件,只有当条件成立时,变量在第二轮后不相乘,是条件变量,条件不成立时,不一定是条件变量)

普通立方变量:第一轮函数后互不相乘,第二轮函数后不与任何条件立方变量相乘的变量。

定理二:对于一个​轮的非线性部分代数次数为2的密码算法,如果有​个条件变量 ​ , ​ 个普通立方变量 ​ ,若 ​ ,则输出多项式中一定不包含 ​ 这个项。

  证明:假设 ​ 是第二轮后包含 ​ 的项,第二轮后关于 ​ 的次数为1。​ 是第二轮后包含 ​ 的项,第二轮后关于 ​ 的次数最高为2,且 ​ 不出现在 ​ 中。经过 ​ 轮后,关于 ​ 和 ​ 的最高次项一定有如下的形式:

 

并且有​ ,若 ​ 出现在 ​ 中,此时存在 ​ ,​ (因为 ​ 的值为奇数)。从而有:​ ,与 ​ 矛盾,故 ​ 中不存在 ​ 。

区分器:轮函数代数次数为2的密码算法,根据定理2有如下的区分器:假设前两轮有 ​ 个条件立方变量,​ 个普通立方变量,对于一个扩散性强的密码算法,可以构造一个 ​ 轮的区分器,当比特条件成立时,立方和为0,不成立时,立方和是随机数。

5. 对于Keccak置换的立方攻击

按位导数:布尔函数 ​ 关于某个变量 ​ 的按位导数的定义:

 

零阶按位导数为函数本身,​ 阶导数定义如下:

 

按位导数本质上还是立方求和。

 

 

[1]  Dinur, I. and A. Shamir. Cube attacks on tweakable black box polynomials. in Annual international conference on the theory and applications of cryptographic techniques. 2009. Springer. [2]  Dinur, I. and A. Shamir. Breaking Grain-128 with dynamic cube attacks. in International Workshop on Fast Software Encryption. 2011. Springer. [3]  Huang, S., et al. Conditional cube attack on reduced-round Keccak sponge function. in Annual International Conference on the Theory and Applications of Cryptographic Techniques. 2017. Springer.

 

标签:变量,攻击,多项式,求和,立方,取值
来源: https://www.cnblogs.com/Gnccw/p/15864346.html