欢迎来到天天文库
浏览记录
ID:4222230
大小:108.25 KB
页数:37页
时间:2017-11-30
《加密它:用新的高级加密标准(AES)保持你的数据安全-毕业论文外文翻译》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、加密它:用新的高级加密标准(AES)保持你的数据安全JamesMcCaffrey摘要AES(TheAdvancedEncryptionStandard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。本文展示了AES的概貌并解析了它使用的算法。包括一个完整的C#实现和加密.NET数据的举例。在读完本文后你将能用AES加密、测试基于AES的软件并能在你的系统中使用AES加密。美国国家标准与技术研究所(NIST)在2002年5月26日建立了新的高级数据加密标准(AES)规范。本文中
2、我将提供一个用C#编写的的能运行的AES实现,并详细解释到底什么是AES以及编码是如何工作的。我将向您展示如何用AES加密数据并扩展本文给出的代码来开发一个商业级质量的AES类。我还将解释怎样把AES结合到你的软件系统中去和为什么要这么做,以及如何测试基于AES的软件。 AES是一个新的可以用于保护电子数据的加密算法。明确地说,AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返
3、回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。Figure1显示了AES用192位密钥对一个16位字节数据块进行加密和解密的情形。AES算法概述AES算法是基于置换和代替的。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES使用了几种不同的技术来实现置换和替换。为了阐明这些技术,让我们用Figure1所示的数据讨论一个具体的AES加密例子。下面是你要加密的128位值以及它们对应的索引数组:0011223344556677889
4、9aabbccddeeff0123456789101112131415192位密钥的值是:000102030405060708090a0b0c0d0e0f101112131415161701234567891011121314151617181920212223Figure2S-盒(Sbox)当AES的构造函数(constructor)被调用时,用于加密方法的两个表被初始化。第一个表是代替盒称为S-盒。它是一个16×16的矩阵。S-盒的前五行和前五列如Figure2所示。在幕后,加密例程获取该密钥数组并用它来生成一个名为w[]的密钥调度表,F
5、igure3所示。Figure3密钥调度表(KeySched)w[]最初的Nk(6)行被作为种子,用原始密钥值(0x00到0x17)。剩余行从种子密钥来产生。变量Nk代表以32位字为单位的种子密钥长度。稍后我分析AES实现时你将清楚地看到w[]是怎样产生的。关键是这里现在有许多密钥使用而不只是一个。这些新的密钥被称为轮密钥(roundkeys)以将它们与原始种子密钥区别开来。Figure4State(态)数组 AES加密例程开始是拷贝16字节的输入数组到一个名为State(态)的4×4字节矩阵中。(参见Figure4)。AES加密算法取名为
6、Cipher,它操作State[],其过程描述的伪代码参见Figure5。 在规范中,加密算法实现的一个预备的处理步骤被称为AddRoundKey(轮密钥加)。AddRoundKey用密钥调度表中的前四行对State矩阵实行一个字节一个字节的异或(XOR)操作,并用轮密钥表w[c,r]异或输入State[r,c]。 举个例子,如果State矩阵的第一行保存的字节是{00,44,88,cc},第一列密钥调度表是{00,04,08,0c},那么新的State[0,2]值是用w[2,0](0x08或0x80)异或State[0,2](0x88)
7、的结果:1000100000001000XOR10000000AES算法的主循环对State矩阵执行四个不同的操作,在规范中被称为SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)和AddRoundKey。除了每次循环AddRoundKey都被调用并使用密钥调度表的下面四行外,AddRoundKey与预备处理步骤中的AddRoundKey相同。SubBytes例程是一个代替操作,它将State矩阵中的每个字节替换成一个由Sbox决定的新字节。比如,如果State[0,1]的值是0x40如果你想找
8、到它的代替者,你取State[0,1]的值(0x40)并让x等于左边的数字(4)并让y等于右边的数字(0)。然后你用x和y作为索引进到Sbox表中寻找代替值,如Fi
此文档下载收益归作者所有