基于AES算法的文件加密系统的实现外文翻译资料

 2022-04-11 21:02:16

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


摘要:本文讨论了Rijndael算法的高效加密标准(AES)在硬件描述语言Verilog中的有效编码。在这项工作中,我们分析了新AES的结构和设计,遵循三个标准:a)抵抗所有已知的攻击; b)广泛的平台上的速度和代码紧凑性;和c)设计简单;以及它与其他对称密码的相似之处和不同之处。另一方面,研究了新型AES在DES方面的主要优势及其局限性。因此,例如,新密码及其反向使用不同组件的事实,实际上消除了用于DES的弱密钥和半弱密钥的可能性,以及密钥扩展的非线性,也消除了密钥等效密钥的可能性,这是新密码的两个主要优点。最后,处理Rijndael密码的实现方面及其逆向。因此,尽管Rijndael非常适合在各种处理器和专用硬件上高效实现,但我们已将研究集中在8位处理器上,这些处理器通常用于当前智能卡和32位处理器(典型用于PC)。

关键词:密码学,DES,AES,Rijndael算法

I.介绍

1997年,国家标准与技术研究院(NIST)启动了一个选择对称密钥加密算法的流程,以保护敏感信息来促进NIST的法定职责。1998年,NIST宣布接受15个候选算法,并要求密码学研究界协助分析候选人。该分析包括对每种算法的安全性和效率特性的初步检查。 NIST审查了这项初步研究的结果,并选择MARS,RC6,Rijndael,Serpent和Twofish作为入围名单。这些算法的一个有趣的性能比较可以在[3]中找到。 2000年10月,在进一步审查了对入围者的公开分析后,NIST决定将Rijndael提议为高级加密标准(AES)。 Rijndael由比利时的Joan Daemen(Proton World International Inc.)和Vincent Rijmen(Katholieke Univeriteit Leuven)设计,是一种简单而优雅的结构[2]。

高级加密标准(AES)也称为Rijndael算法,是一种对称分组密码,可以使用128,192或256位的对称密钥加密128位数据块。 引入AES是为了普遍替代使用了很长时间的Triple DES(3DES)算法。 但是,如果安全性是唯一的考虑因素,那么3DES将在未来数十年内将为适用于标准化加密算法的适当选择。 其主要缺点是软件实施缓慢。 由于效率和安全性的原因,较大的块的大小是可取的。 由于其高安全性,高速度,易于实施和灵活性,Rijndael在2001年被选为AES标准。

II RIJNDAEL 算法

Rijndael算法(发音为“Reign Dahl”,“Rain Doll”或“Rhine Dahl”)是美国国家标准与技术研究院(NIST)推荐的新的高级加密标准(AES),用于保护敏感,未分类的政府信息。 NIST一直在使用其他加密算法,如DES(数据加密标准),Triple DES和Skipjack来加密重要的政府信息。然而,在1997年它感觉需要一种新的更强大的加密算法来规避高级黑客对这些算法的任何潜在威胁。因此,1997年1月2日,NIST宣布启动AES开发工作。 NIST于1997年9月12日对算法进行了正式调用。所提交的算法需要满足的关键要求是,它们是基于对称密钥密码学作为分组密码并且(至少)支持块大小为128位的免版税公开披露的算法,,密钥大小为128位,192位和256位。由于此次电话会议,来自全球密码团体的15个候选算法进入了第一轮审查阶段

在1999年评估这些候选算法后,NIST选择了五种算法作为入围者。他们是:MARS,RC6,Rijndael,Serpent和Twofish。这五种算法在第二轮审查过程中经过了更严格的审查。在2000年10月2日,NIST宣布它已经选择了Rijndael算法作为高级加密标准(AES)。宣布后,NIST开始为AES制定联邦信息处理标准草案(FIPS),并于2001年11月最终批准为FIPS 197.(美国商务部长批准采用AES作为官方政府标准,自5月26日起生效)今天,有四种FIPS认可的加密算法:AES,Triple-DES,DES和Skipjack。 DES由IBM设计并被美国政府采纳作为非军用和非分类使用的标准加密方法。该算法使用56位密钥加密64位明文。该文本通过十九(19)种不同且非常复杂的程序(转置,替换,交换,异或和旋转)。此外,每个步骤使用从原始密钥导出的不同密钥,并将前一步骤的输出用作其输入以创建64位密文。然而,随着现代技术的进步,破解DES加密密文已变得越来越可行。因此美国政府提出了Triple-DES算法,正如其名称所暗示的那样,通过应用DES算法三次加密给定的明文。如果EK(I)和DK(I)分别表示使用DES密钥K对I的加密和解密,则由EK3(DK2(EK1(I))给出Triple-DES加密O(I),其中K1,K2 ,K3是三个键。使用Triple-DES的I的解密由DK1(EK2(DK3(I)))给出。 Triple-DES向后兼容单DES。因此,它可能仍然是与AES一起进行高级加密的政府标准。另一个美国政府标准Skipjack通过使用置换,异或操作和寄存器中的数据移位总共32步来加密4字(即8字节)数据块。

诸如安全性,性能,效率,易于实施和灵活性等因素的组合促成了将该算法选择为AES。 具体来说,Rijndael在各种环境下在硬件和软件平台上表现一致。 其中包括硬件中的高效VLSI和固件实现,以及以各种编程语言编写算法代码的简易性。 该算法具有出色的关键设置时间和良好的关键敏捷性。 但是,更重要的是,在不牺牲性能的情况下,它也需要较少的内存来执行。 这一事实使其非常适合于限制空间的环境。 此外,这种算法的结构似乎具有从指令级并行性中受益的良好潜力。

由于其强大的加密功能,AES有望取代Triple-DES。 AES指定三种密钥大小:128,192和256位。这意味着,按十进制计算,大约有3.4 x 1038个可能的128位密钥,6.2 x 1057个可能的192位密钥和1.1 x 1077个可能的256位密钥。相比之下,DES密钥长度为56位。这个比特长度意味着大约有7.2times;1016个可能的DES密钥。因此,AES 128位密钥的数量比DES 56位密钥的多1021倍。假设人们可以构建一台能够在一秒钟内破解DES密钥的机器(即每秒尝试255个密钥),那么它将使该机器约149万亿(149万亿)年破解128位AES密钥。从这个角度来看,宇宙被认为不到200亿年。 AES支持的密钥尺寸远远大于DES支持的密钥尺寸,NIST认为该算法具有在未来几十年内保持安全的潜力。

III RIJNDAEL的结构和描述

图1. Rijndael算法流程图

A.数学预备

正如我们将要描述的,Rijndael中的几个操作是在字节级定义的,字节表示Galois域GF(28)中的元素。 正如其已知的那样,有限域的元素可以用几种方式来表示。 对于任何主要功率都有一个有限域,因此有限域GF(28)的所有表示都是同构的[7]。 尽管有这种等价性,并考虑到表示对实现复杂性的影响,经典的多项式表示已被选中。 因此,我们可以写

GF(28)={a7x7 a6x6 a5x5 a4x4 a3x3 a2x2 a1x a0 : aiZ2

因此,由比特b7b6b5b4b3b2b1b0 组成的一个字节可以被认为是一个系数为(0,l}的多项式。例如,字节11001010对应于多项式x7 x6 x3 x。 在多项式表示中,GF(28)中的乘法对应于多项式mod(F(z))的乘法,其中F(z)是8次不可约多项式。对于Rijndael,F(z) = z8 z4 z3 z 1 (2)

而且,在Rijndael中,其他操作是以4字节的字来定义的。 但是,可以定义GF(28)中具有系数的多项式。通过这种方式,一个4字节的字对应一个4以下的多项式。

在这种情况下,这些多项式的乘法需要一个4次多项式,以便将乘积减少到多项式在4以下。在Rijndael中,这是用多项式完成的M ( z ) = z4 1 (3)

M(z)不是GF(28)上的不可约多项式,因此乘以固定多项式不一定是可逆的。 在Rijndael中,选择了一个具有倒数的固定多项式。 由于GF(28)中的加法是按位异或,所以在该有限域中添加两个具有系数的多项式是简单的按位异或。 但是,乘法更复杂。 因此,假设我们有两个GF(28)系数的多项式

p(x)=p3x3 p2x2 p1x p0

q(x)=q3x3 q2x2 q1x q0 (4)

由r(x)= p(x)q(x)表示的p(x)和q(x)的模(即p(x).q(x))mod(x) 由 r(x)=r3x3 r2x2 r1x r0给出,并且有

r0= p0q0p3q1p2q2p1q3

r1= p1q0p0q1p3q2p2q3

r2= p2q0p1q1p0q2p3q3

r3= p3q0p2q1p1q2p0q3

或表示为矩阵乘法

=

B. Rijndael的结构

Rijndael是一个迭代的分组密码。 它有一个可变的块长度b和一个可变的密钥长度k,可以设置为128,192或256位。 建议的轮数n和轮数由b和k确定,并在10和14之间变化,如表1所示。

表1:作为块和关键长度的函数的ROUND(NR)的数量。

nr

b=4

b=6

b=6

K=4

10

12

14

K=6

12

12

14

K=8

14

14

14

在Rijndael中,状态(即中间密码结果)S可以写成具有四行和Nb列的矩形字节阵列,其中Nb = LB / 32,其中LB是块长度。 密码密钥类似地写成具有四行和Nk列的矩形,其中Nk = LK / 32,其中LK是密钥长度。 其外部接口的输入和输出被认为是从0到4Nb-1编号的一维字节数组。密码密钥也被认为是从0到4Nk-1编号的一维字节阵列。

因此,考虑明文块B,密钥K和轮数n,我们可以描述AES的行为如下:

  1. 从键K计算子键KO,K1,...,Kn S = B $ K o
  2. For i = 1 to nr - 3

3.1 S = ByteSub(S)

3.2 S = ShiftRow(S)

3.3 S = MixColumn(S)

3.4 s = Ki euro;3

4. S = ByteSub(S)

5. S = ShiftRow(S)

6. S =KS

逆变换可以通过以下步骤来描述:

1. 从密钥K计算子密钥KO,KI,...,Kn

  1. S=BK,
  2. S = InvShiftRow(S)
  3. S = InvByteSub(S) 全文共6346字,剩余内容已隐藏,支付完成后下载完整资料


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

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

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