一个简化的AES实现外文翻译资料

 2022-08-09 20:14:19

英语原文共 23 页,剩余内容已隐藏,支付完成后下载完整资料


一个简化的AES实现

简述:我们在这篇文章中展现了一个AES中所谓超级S-box的实现,这个实现中体现的观点认为两轮连续的已经简化过的AES加密过程仍可以作为一个整体被进一步简化。在这样一个非解构的AES实现里,两轮连续的AES加密被看作了一次非线性的变化S和一次放射的变化R,这两个变化被分别作用在128bit输入的四个32bit列和四个32bit行上。同时为了说明这种AES加密的实现方法仍然具有类AES加密或者基于AES的hash算法的抵抗结构性攻击的能力,我们对一个由Knudsen和Rijmen于2007年在ASIACRYOPT上发表的用于攻击已知密钥的经过七轮AES加密的密钥流解密器进行了改进。我们首先将这个解密器引入去攻击经过了八轮AES加密的数据,这样的数据满足数字特性的可能有2的64次方个输入输出元组对。虽然这样一个新型的八轮解密器在时间复杂度上的表现并不如Gilbert和Peyrin发表在FSE以及Jean、Naya-Plasencia和 Peyrin发表在SAC上的微分解密器,但是我们的计算表明这样的新型解密器在面对十轮的拥有独立次级密钥的AES-128全加密的时候却又重新具有优势。这个衍生出来的十轮解密器与其源头——八轮解密器拥有同样的时间复杂度表现,但是与此同时这个解密器所标注出来的输入输出特征值又更加的混乱,因此这样的解密其对于十轮AES或者其他类似的hash函数加密的数据安全性的影响是十分有限的。这样的新型解密器并不会对全部的AES加密算法加密的数据构成威胁

1 介绍

在这篇论文中我们展示了一种替代性的AES算法实现。更准确的说,我们展示了AES可以被看做是各种变化单元的组合而不是被像其定义一样看作是一个轮次加密函数。有些人可能会纠结是一个加密算法的等价描述还是一个随机数协议更重要,但是很多的例子以及证明了一个合适的算法描述无论是对突出算法的结构性优势还是作为一个密码分析算法的起点抑或是寻找最佳实现方法的契机都是非常有用的。举一个非常简单的例子,尽管大家都知道所谓的Feistel方案的阶梯式实现和更传统的变形实现在奇数轮的情况下是严格等价的但是其对理解部分针对DES和类DES加密的攻击(如Davies-Murphy攻击)非常的重要和有效。

在AES中,很多的替代性实现已经被提出来去突出这些算法自身的代数结构的特点。这些实现方法往往都选择将加密文本与未加密的文本通过连续的切片以及其他基于有限域内的(2^8)的代数变化联系起来。正如其所展示一样,许多的双重加密AES加密算法——一种AES算法的等效描述,主要用于固定情景、易于计算并且将加密文本、未加密文本以及密钥的双射映射表进行了翻转——可以通过选择合适的变化函数作用于不可约的多项式上来表现一个有限域(2^8),以及S盒中的仿射变换以及列混淆系数等参数来实现。虽然这些算法可以认为是AES算法的一个等价实现,但是他们基本上还是保存了AES算法中的轮次函数的特征,只是将其具体的放到了待加密文本的各个部分上的元变换中。因此这些算法与我们在本篇文章中提出的算法比起来更像是原始的AES加密算法。

我们即将介绍的AES算法的实现是起源于一个被称作超级S盒的实现,S盒可以同时支持两轮连续的AES的加密,他把两轮连续的AES加密看作是一个单独的非线性操作(基于四行平行的拥有独立密钥的32bit长度的S盒)以及其他的仿射性操作的组合。这个算法实现由AES的设计者作为一个分析两轮AES算法之间的差异的工具性概念而被引入。后来其被用于去扩展针对至少一轮类AES置换加密的反弹攻击技术:这种改进后的反弹攻击技术,有时也会被称作超级S盒解密技术,被证明可以用于两种环境中:类AES哈希函数的解密以及已知密钥的类AES区块加密技术的研究。许多近期改进后的用于轮次减少后的AES加密的解密器都在使用超级S盒。

我们通过一个极简化的超级S盒的实现来引入一个新型的两轮连续的AES加密的实现。这个简化主要发生在包裹32bit的S盒的仿射性变化上。我们展示了所有的变换都可以被一个简单的32bit的发生在4*4状态矩阵列上的有向的仿射变化。我们提议将这种对两轮或者多轮AES变化的观点命名为非解构性实现,因为这种观点避免了将仿射变换看作是一个行相关的通过行位移来导致结构变化的动作。这种非解构的实现因此能够提供一种对连续两轮AES变化的等价的描述:

一个非线性的变形,由S(超级S盒的简称)控制。这个变形最终构成了四个非线性双映射表的平行变化也就是发生在在四个32bit的AES状态行中的操作。

一个仿射性的变形,由R(列混淆的简称)控制,这个变形最终构成了四个仿射表的平行变化也就是发生在在四个32bit的AES状态列中的操作。

图注一:将两轮连续的AES变换看作是一个RS组合的对输入状态的四次平行的非线性行双映射和四次平行的仿射列双映射。

正如在图注1中表示的那样,两个连续的AES变化可以通过这种抽象方式看作是一个lsquo;大轮rsquo;,也就是R与S的组合。接下来将要展示的是一些因为这样的简化改动而需要付出的一些小小的代价,因为2r轮AES转换被替代为了r轮lsquo;大轮rsquo;变化,我们需要在第一轮前做一个简单的仿射预处理并在最后一轮之后做一个类似的处理。

尽管一个替换性的算法很明显并不能被认为是一个新的设计或者是新的加密算法,但是我们认为这样的新型简化实现算法对我们在针对轮次减少之后的AES的结构性攻击的研究上有着非常大的帮助。事实上来说,这样一个新的实现使得基于AES变形算法的突出了32bit结构的超级S盒进一步提升了自己的优势。

为了证实这样一个替代性实现的可行性,我们展示了在已知密钥模型下减少轮次的AES加密后的结果的扩展集。已知密钥模型最早由Kundsen以及Rijmen引入。针对这种模型的攻击一般被称为已知密钥解密器,我们将在之后已知沿用这样一个术语。一个数学的已知密钥解密器用于7轮加密的AES算法被Kundsen以及Rijmen引入。我们首先通过利用非结构性的AES实现算法将这个解密器进行改进。这样的改进使得我们获得了一个可以用于八轮加密的AES算法的解密器。虽然这样一个新型的八轮解密器在时间复杂度上的表现并不如Gilbert和Peyrin发表在FSE以及Jean、Naya-Plasencia和 Peyrin发表在SAC上的微分解密器,但是我们发现这样的算法可以通过他的一些特性来获得优势,那就是它可以通过在前后各加一轮来将其拓展并可以反应八轮加密的一些数学特性。通过这样的思路我们可以将其拓展至10轮全加密的AES加密算法上。这样的解密器将拥有和其原本的八轮解密器一样的时间复杂度(2^64)(我们可以把他看作是和十轮加密的时间复杂度一样),于此同时是我们的解密器所需要面对的输入输出之间的关系更加复杂。但无论如何,我们都提供了证据去证明我们新建立的这样的一个解密器,不同于那些只能用于密钥及其小的块加密算法的解密器,我们的解密器是非常有意义的。虽然我们在论文中只讨论了AES算法在已知密钥模型下的安全性,但是我们仍然需要在更加严格和强大的安全模型下—选定模型下进行进一步的安全性研究。

剩余的文章将以以下的方式组织:在第二部分,我们介绍了新型的两轮连续的以及2r轮的AES加密的实现。在第三部分我们提出了一个已知密钥模型,我们定义了在这个模型中我们所考虑的因素并再次证明了所有的已知密钥都是无法攻破分块加密算法的。在第四部分,我们展示了如何运用一个非解构性实现去改造一个已知密钥的八轮AES加密的解密器并介绍了在其基础上扩展的十轮解密器而且阐述了这个解密器的意义。

2 一个新型AES实现

符号约定与常见的AES表示:

在这篇文章中,我们通常将两个数集的乘法记为F ·G而不是更常见的G◦F。我们在文中使用这种表达的选择主要是因为在从左到右的阅读习惯下这样的表达与真实的计算顺序是一致的。

让我们先快速的回顾一下那些对后面内容和符号的理解很有帮助的AES的概念与特点。每个AES模块都由一个4*4的字节矩阵来表示。由于AES算法拥有不同密钥长度的三个版本并且其加密轮数也不相同,所以本文为了简化的考虑只会选择使用十轮加密的AES-128算法以及在该算法基础上减少加密轮数的简化算法。有r轮加密的AES算法在本文中被表示为AESr并且将每一轮的次级密钥表示为K0-Kr。这些次级密钥是从kbit大小的主密钥中衍生出来的。用于AES中的主加密过程并不与本文中的分析过程相关,所以我们并不会详细的将这些所有的东西都描述出来。每一轮的AES加密函数中的四个过程分别被简化为:SB·SR·MC·AK。字节替换指通过S盒对每一个输入字节都进行一次矩阵运算来完成比特级别的双映射变换,行唯一循环的将每行的输入数据向左循环位移四位,列混合则将输入的四字节长度的列看作是GF(28)有限域上的向量并通过与4*4矩阵的左乘来完成GF(28)上的变换操作,轮密钥加发生在所有的中间轮和最终轮中,其通过将前一轮的密钥与当前输入矩阵进行字节乘法来获得新的轮密钥,这一步骤在初始加密轮中被密钥扩展所替代而在最终轮中则取消了列混淆的操作。在后续的文章中,我们有时也会将最后一轮的列混淆执行下去,我们将这种变化过的AESr算法表示为AESr 。在第四部分的结尾,我们也会引入一个使用独立轮密钥的AES加密算法,被表示为AESr *或者是AESr*,这主要取决于最后一轮的列混淆会不会被执行。

超级S盒的两轮连续加密实现:

超级S盒的实现允许我们将两轮连续的AES加密轮看作是四个并列的32bit数集运算,被分别应用到四列AES状态中,并且被仿射变换所包裹。更加详细的来说,因为SR和SB是可交换的并且每一轮加密的四个变换都是关联的,所以两轮连续的加密轮变换可以写为:

SB·SR·MC·AK ·SB·SR·MC·AK

并且可以变换为:

SR·(SB·MC·AK ·SB)·SR·MC·AK.

我们可以注意到在括号里的变换就是我们所说的超级S盒,也就是我们所有AES状态中的列变换的组合。这个超级S盒被分为四个并列并且独立的双映射的输入状态列变换。他被左右的仿射变换,也就是SR行位移所包裹。每个超级S盒都将其4字节的输入列进行四个并列的变换:一个S盒调用,一个列混淆矩阵左乘,一个轮密钥异或和另一个S盒调用。

进一步讨论非解构的两轮连续AES加密轮的实现:

我们现在即将展示的是如何将基于超级S盒的两轮连续加密轮的实现进一步表示为S·R组合的并列的四轮列方向上的非线性变换和并列的四轮行方向上的仿射变换。我们首先观察先前的等式,将其中的列变换用超级S盒来代替:

SR·SuperSB·SR·MC·AK

这个等式也可以通过循环位移被表示为:

SuperSB·SR·MC·AK ·SR

作为一个简单的纠正,我们需要在第一轮变换前加上一轮SR并且在最后一轮变换后加上一轮SR的逆运算。现在,为了能够进一步接近我们想要达到的两轮变换的表达形式,我们将SuperSB和SR·MC·AK·SR分别用事先选择好的字节置换P和Q以及他们的逆运算包裹起来。由于他们本身和逆运算直接相互抵消了影响,所以下面的等式也是成立的:

(Qminus;1 ·SuperSB·Pminus;1)·(P ·SR·MC·AK ·SR·Q)

由于我们需要让这两个字节替换运算能够不改变原本的运算结果并且Q还需要在首轮前以及末尾轮之后加上一次额外的运算,为了保证这些情况,这两个PQ必须满足下面的几个条件:

1、非线性变换S = Qminus;1·SuperSB·Pminus;1 必须是列级的操作

2、仿射变换 R = P ·SR·MC·AK ·SR·Q 必须是行级的操作。

为了去描述出满足我们提出的这两个要求的字节变换,我们引入了下列辅助的字节变化:

我们用T来表示下列矩阵变换:

⎛ a0 a4 a8 a12⎞ ⎛ a0 a1 a2 a3⎞

⎜ a1 a5 a9 a13 ⎟ ⎜ a4 a5 a6 a7 ⎟

T ⎜ a2 a6 a10 a14⎟ → ⎜ a8 a9 a10 a11⎟

⎝ a3 a7 a11 a15⎠ ⎝ a12 a13 a14 a15⎠

我们用SC来表示下列列交换变换,实际上是把第二列和第四列进行了交换:

⎛ a0 a4 a8 a12⎞ ⎛ a0 a12 a8 a4⎞

⎜ a1 a5 a9 a13 ⎟ ⎜ a1 a13 a9 a5 ⎟

SC ⎜ a2 a6 a10 a14⎟ → ⎜ a2 a14 a10 a6⎟

⎝ a3 a7 a11 a15⎠ ⎝ a3 a15 a11 a7⎠

可能情况:

⎛ a0 a4 a8 a12⎞ ⎛ a0 a5 a10 a15⎞

⎜ a1 a5 a9 a13 ⎟ ⎜ a3 a4 a9 a14 ⎟

P = SR·T ·SRminus;1 ⎜ a2 a6 a10 a14⎟ → ⎜ a2 a7 a8 a13 ⎟

⎝ a3 a7 a11 a15⎠ ⎝ a1 a6 a11 a12⎠

⎛ a0 a4 a8 a12⎞ ⎛ a0 a7 a10 a13⎞

⎜ a1 a5 a9 a13 ⎟ ⎜a1 a4 a11 a14⎟

Q = SRminus;1 ·T ·SR·SC : ⎜ a2 a6 a10 a14⎟ → ⎜ a2 a5 a8 a15 ⎟

⎝ a3 a7 a11 a15⎠ ⎝ a3 a6 a9 a12 ⎠

满足上诉的条件。

证明:

1、很容易可以看出P、Q以及它们的逆运算都是列级的变换所以S = Qminus;1 ·SuperSB·Pminus;1也会是列级别的运算。

2、我

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[238681],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。