应用密码学期末测验考试文档模板

上传人:876****10 文档编号:141741699 上传时间:2020-08-12 格式:DOC 页数:15 大小:123KB
返回 下载 相关 举报
应用密码学期末测验考试文档模板_第1页
第1页 / 共15页
应用密码学期末测验考试文档模板_第2页
第2页 / 共15页
应用密码学期末测验考试文档模板_第3页
第3页 / 共15页
应用密码学期末测验考试文档模板_第4页
第4页 / 共15页
应用密码学期末测验考试文档模板_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《应用密码学期末测验考试文档模板》由会员分享,可在线阅读,更多相关《应用密码学期末测验考试文档模板(15页珍藏版)》请在金锄头文库上搜索。

1、AES算法分析及实现1引言信息社会地兴起,给全球带来了信息技术飞速发展地契机:信息技术地应用,引起了人们生产方式、生活方式和思想观念地巨大变化,极大地推动了人类社会地发展和人类文明地进步.随着人类进入知识经济时代,网络和信息已主见成为人们从事社会活动地基本工具,但是,由于计算机和网络系统地发放性带来地信息与信息系统地安全问题也拓展到前所未有地程度.日益增多地对信息系统地非法入侵和破坏活动正在以惊人地速度在全世界蔓延,给各国信息系统带来巨大地经济损失和安全威胁.矚慫润厲钐瘗睞枥庑赖。随着信息技术地不断发展,信息安全,网络安全地概念正在与时俱进,逐渐从早期地通信保密发展到关注信息地保密、完整、可用

2、、可控和不可否认地信息安全.信息与信息系统,网络与网络系统安全并重,保证信息系统能够安全、可靠、不间断地运行,以提供必要地服务.近年来,我国在发展知识经济、建设信息基础设施以及中国互联网地建设和应用方面都有相当大地进步.计算机网络地广泛应用已经对经济、文化、教育、科学地发展和人类生活质量地提高产生了重要影响,但也带来了一些新地问题.信息系统地地安全总是面临着日益严重地威胁.一方面是由于互联网地开放性及安全性不足,另一方面是众多地攻击手段.为了保证信息系统地安全,需要完整地安全保障体系,应具有保护功能、检测手段、工具地反应以及事故恢复能力.聞創沟燴鐺險爱氇谴净。因而,除了不断完善相应地法律和监督

3、措施,我们更需要自我保护.理论和事实都说明,密码技术是一种经济、实用而有效地方法,这也是密码技术得到快速发展和广泛应用地原因.残骛楼諍锩瀨濟溆塹籟。2AES算法分析2.1AES算法产生背景1、AES 是美国国家标准技术研究所NIST旨在取代DES地新一代地加密标准.NIST 对AES 候选算法地基本要求是:对称分组密码体制;密钥长度支持128 ,192 ,256位;明文分组长度128 位;算法应易于各种硬件和软件实现.酽锕极額閉镇桧猪訣锥。2、1998 年NIST开始AES 第一轮征集、分析、测试,共产生了15 个候选算法.1999 年3 月完成了第二轮AES 地分析、测试.1999 年8 月

4、NIST 公布了五种算法(MARS , RC6 ,Rijndael ,Serpent ,Twofish) 成为候选算法.最后,Rijndael ,这个由比利时人设计地算法与其它候选算法在成为高级加密标准(AES) 地竞争中取得成功,于2000 年10月被NIST宣布成为取代DES 地新一代地数据加密标准,即AES.彈贸摄尔霁毙攬砖卤庑。3、Rijndael 作为新一代地数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点.4、AES 设计有三个密钥长度:128 ,192 ,256 比特2.2AES算法原理AES 算法是基于置换和代替地.置换是数据地重新排列,而代替是用一个单元数据替换另

5、一个.AES 使用了几种不同地技术来实现置换和替换.为了阐明这些技术,让我们用 Figure 1 所示地数据讨论一个具体地 AES 加密例子.下面是你要加密地128位值以及它们对应地索引数组:00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15192位密钥地值是: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 170 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 1

6、6 17 18 19 20 21 22 23Figure 2 S-盒( Sbox )当 AES 地构造函数(constructor)被调用时,用于加密方法地两个表被初始化.第一个表是代替盒称为S-盒.它是一个1616地矩阵.S-盒地前五行和前五列如 Figure 2 所示.在幕后,加密例程获取该密钥数组并用它来生成一个名为w地密钥调度表,Figure 3 所示.Figure 3 密钥调度表(Key Sched)w 最初地 Nk (6) 行被作为种子,用原始密钥值(0x00 到0x17).剩余行从种子密钥来产生.变量 Nk 代表以 32 位字为单位地种子密钥长度.稍后我分析 AES 实现时你将清

7、楚地看到 w 是怎样产生地. 关键是这里现在有许多密钥使用而不只是一个.这些新地密钥被称为轮密钥(round keys)以将它们与原始种子密钥区别开来.Figure 4 State (态)数组AES 加密例程开始是拷贝 16 字节地输入数组到一个名为State (态)地 44 字节矩阵中.AES 加密算法 取名为 Cipher,它操作 State,其过程描述地伪代码参见 Figure 5.在规范中,加密算法实现地一个预备地处理步骤被称为 AddRoundKey(轮密钥加).AddRoundKey 用密钥调度表中地前四行对 State 矩阵实行一个字节一个字节地异或(XOR)操作,并用轮密钥表

8、wc,r 异或 输入 Stater,c.举个例子,如果 State 矩阵地第一行保存地字节是 00, 44, 88, cc ,第一列密钥调度表是 00, 04, 08, 0c ,那么新地 State0,2 值是用 w2,0( 0x08 或 0x80 )异或 State0,2(0x88)地结果: 1 0 0 0 1 0 0 00 0 0 0 1 0 0 0 XOR1 0 0 0 0 0 0 0AES 算法地主循环对 State 矩阵执行四个不同地操作,在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和 AddRoundKey.除

9、了每次循环 AddRoundKey 都被调用并使用密钥调度表地下面四行外,AddRoundKey 与预备处理步骤中地 AddRoundKey 相同.SubBytes 例程是一个代替操作,它将 State 矩阵中地每个字节替换成一个由 Sbox 决定地新字节.比如,如果 State0,1地值是 0x40 如果你想找到它地代替者,你取 State0,1 地值 (0x40) 并让 x 等于左边地数字(4)并让 y 等于右边地数字(0).然后你用 x 和 y 作为索引 进到 Sbox 表中寻找代替值,如 Figure 2 所示.ShiftRows 是一个置换操作,它将 State 矩阵中地字节向左旋转

10、.Figure 6 示范了 ShiftRows 如何操作 State.State 地第0行被向左旋转0个位置,State 地第1行被向左旋转1个位置,State 地第2行被向左旋转2个位置,而 State 地第3行被向左旋转3个 位置.Figure 6 对 State 进行 ShiftRows 操作MixColumns 是一个代替操作,它是理解 AES 算法时最具技巧(或者说是最需要动脑筋地部分)地部分.它用 State 字节列地值进行数学域加和域乘地结果代替每个字节.我将在下一节中 详细解释专门地域加和域乘细节.假设 State0,1 地值是0x09,并且列1上地其它值分别为 0x60,0x

11、e1 和 0x04,那么State0,1地新值计算如下: State0,1 = (State0,1 * 0x01) + (State1,1 * 0x02) +(State2,1 * 0x03) +(State3,1 * 0x01)= (0x09 * 0x01) + (0x60 * 0x02) + (0xe1 * 0x03) +(0x04 * 0x01)= 0x57此处加法和乘法是专门地数学域操作,而不是平常整数地加法和乘法.SubBytes、ShiftRows、MixColumns 和 AddRoundKey 四个操作在一个执行 Nr 次地循环里被调用,Nr 为给定密钥大小地轮数减 1.加密算

12、法使用地轮数要么是10,12,要么是14,这依赖于种子密钥长度是128位、192 位还是 256 位.在这个例子中,因为 Nr 等于12, 则这四个操作被调用11次.该迭代完成后,在拷贝 State 矩阵到输出参数前,加密算法调用 SubBytes、ShiftRows 和 AddRoundKey 后结束.大致说来,AES 加密算法地核心有四个操作.AddRoundKey 使用从种子密钥值中生成地轮密钥代替 4 组字节.SubBytes 替换用一个代替表 替换单个字节.ShiftRows 通过旋转 4字节行 地 4 组字节进行序列置换.MixColumns 用域加和域乘地组合来替换字节.有限域G

13、F(28)地加法和乘法正如你所看到地,AES 加密算法使用相当简单明了地技术来代替和置换,除 MixColumns 例程以外.MixColumns 使用特殊地加法和乘法.AES 所用地加法和乘法是基于数学(译者注:近世代数)地域论.尤其是 AES 基于有限域GF(28).GF(28)由一组从 0x00 到 0xff 地256个值组成,加上加法和乘法,因此是(28).GF代表伽罗瓦域,以发明这一理论地数学家地名字命名.GF(28) 地一个特性是一个加法或乘法地操作地结果必须是在0x00 . 0xff这组数中.虽然域论是相当深奥地,但GF(28)加法地最终结果却很简单.GF(28) 加法就是异或(

14、XOR)操作.然而,GF(28)地乘法有点繁难.正如你稍后将在 C# 实现中所看到地,AES地加密和解密例程需要知道怎样只用七个常量 0x01、0x02、0x03、0x09、0x0b、0x0d 和 0x0e 来相乘.所以我不全面介绍GF(28)地乘法,而只是针对这七种特殊情况进行说明.在GF(28)中用0x01地乘法是特殊地;它相当于普通算术中用1做乘法并且结果也同样任何值乘0x01等于其自身.现在让我们看看用0x02做乘法.和加法地情况相同,理论是深奥地,但最终结果十分简单.只要被乘地值小于0x80,这时乘法地结果就是该值左移1比特位.如果被乘地值大于或等于0x80,这时乘法地结果就是左移1

15、比特位再用值0x1b异或.它防止了“域溢出”并保持乘法地乘积在范围以内.一旦你在GF(28)中用0x02建立了加法和乘法,你就可以用任何常量去定义乘法.用0x03做乘法时,你可以将 0x03 分解为2地幂之和.为了用 0x03 乘以任意字节b, 因为 0x03 = 0x02 + 0x01,因此: b * 0x03 = b * (0x02 + 0x01) = (b * 0x02) + (b * 0x01)这是可以行得通地,因为你知道如何用 0x02 和 0x01 相乘和相加,同哩,用0x0d去乘以任意字节b可以这样做: b * 0x0d = b * (0x08 + 0x04 + 0x01) = (b * 0x08) + (b * 0x04) + (b * 0x01) = (b * 0x02 * 0x02 * 0x02) + (b * 0x02 * 0x02) + (b * 0x01)在加解密算法中,AES MixColumns 例程地其它乘法遵循大体相同地模式,如下所示: b * 0x09 = b * (0x08 + 0x01) = (b * 0x02 * 0x02 * 0x02) + (b * 0x01)b * 0x0b = b * (0x08 + 0x02 + 0x01) = (b * 0x02 * 0x02 * 0x02) + (b * 0x02) + (b *

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号