代数攻击

来自Citizendium
跳转到导航 跳转到搜索
这篇文章可能很快就会被删除。
要反对或讨论提名,请访问CZ:建议删除并按照说明进行操作。

有关月度提名名单,请参阅
类别:删除文章.


代数攻击是一种方法密码分析针对密码它包括:

  • 将密码操作表示为方程组
  • 用已知数据替换一些变量
  • 解决关键问题

攻击者可以选择使用哪个代数系统;例如,对于一种密码,他可能将文本视为位向量并使用布尔代数,而对于另一种密码则可能选择将其视为字节向量并使用算术模28.

使这种攻击不切实际的是方程组的绝对大小和所涉及的关系中的非线性的结合。在任何代数中,求解线性的只要方程比变量多,方程就或多或少是直截了当的。然而,解决非线性方程组要困难得多。因此,密码设计者努力使其密码高度非线性。

引入非线性的一种技术是混合不同代数系统的操作,例如,在密码中同时使用算术和逻辑操作,因此无法用正规代数或布尔代数中的线性方程来描述密码。另一个是使用s-盒,是包含非线性数据的查找表。请参阅非线性分组密码文章的讨论部分。

代数攻击类似于暴力破解或a密码本攻击理论上,它可以打破任何对称加密但在实践中,这对于任何合理的密码来说都是非常不切实际的。

攻击线性分组密码

要打破分组密码由于只使用线性运算,攻击者只需插入已知的明文/密文对,直到有至少与变量一样多的等式,然后求解密钥。

例如,对于具有64位块和128位密钥的密码,攻击者可以编写64个布尔方程,每个方程用64个输入和128个密钥位表示一个输出位,至少在原则上是这样的,尽管在实践中可能相当困难。插入已知的明文/密文对,只保留密钥位作为变量。他有128个变量的64个方程,不是一个可解系统。然而,如果他有第二个已知的配对,则会给他一个不同的一组64个等式,其中128个密钥位与变量相同。整个系统现在是128个变量中的128个方程。如果方程都是线性的,这可以用标准技术解决当然,他还可以选择插入第三个已知对,以得到一个包含192个方程、128个变量的系统,如果这更容易求解,或者如果这有帮助的话,可以走得更远。

如果关键时间表给他带来了困难,他可以选择绕过它。他可以尝试解出所有的圆键,而不是解出128位的主键。例如,反对AES-128标准他可以尝试求解11个128位的圆键,而不是单个128位的主键。这让他忽略了关键时间表它从主键派生圆键。它需要更多已知的明文/密文对,方程的数量变得明显难以处理,但如果所有方程都是线性的,那么系统仍然可以直接求解,至少在理论上是这样。找到圆密钥会像找到主密钥一样破解密码;攻击者可以尝试其中之一,也可以同时尝试这两种方法。

过定系统的线性化

假设攻击者有一个非线性系统中的方程式变量,系统被过度确定;明显大于他可以尝试用新的变量替换方程中的所有非线性项;这将使他得到一个变量比原来多的线性系统。如果原系统足够高估且没有太多非线性项,则该新系统可能是可解的。如果他能解出这个系统,他会将结果代入原始方程,希望这样可以简化它们,使其余的方程都可以解。

AES公司有一个简单的代数描述[1].Courtois和Pieprzyk[2]声称发现了基于线性化的漏洞,但这一说法有争议。[3]

线性密码分析

攻击者也可以尝试线性密码分析如果他能找到一个足够好的线性近似对于round函数,并且有足够的已知明文/密文对,那么这将破坏密码。在前一句中出现的两个地方定义“足够”相当复杂;看见线性密码分析.过分简化,密码设计者的一个好规则是非线性越强越好;至少有一些组件甚至不接近线性.

工具书类

  1. 尼尔斯·弗格森、理查德·施罗佩尔和道格·怀廷(2001)。Rijndael的简单代数表示Springer Verlag公司。
  2. 尼古拉斯·科托伊斯(Nicolas T.Courtois)和约瑟夫·皮埃尔齐克(Josef Pieprzyk)。具有超定义方程组的分组密码的密码分析.
  3. Bruce Schneier(2002年9月),“AES新闻",密码通讯