ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:4.43MB ,
资源ID:642353      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-642353.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(高级加密标准Word格式文档下载.docx)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

高级加密标准Word格式文档下载.docx

1、, 以增加知识及指导。9 生效:此标准于 2002 年 5 月 26 日生效10 专利: 安全散列算法在美国或国外专利范围内。11 出口管制:密码装置和技术数据受联邦政府出口管控,出口的密码模块和技术数据必须符合联邦宪法规定,并得到美国商务部出口管理局授权。相关出口管制规定详见:CFR 740.17部分 15 条;CFR 742部分15 条; CFR 774 部分,类别 5,2 部分12 要求:NIST 遵循对 AES 分析的发展成果。相对别的密码算法标准,NIST 会对 AES 每五年进行一次重审。NIST 使用 AES 对威胁安全使用的因素进行核查,考虑新的有效分析与科技。此外,NIST

2、会对此算法的任何突破性技术与数学弱点进行重审,并提供必要修改。13豁免程序。特殊情况下,联邦部门的领导批准放弃FIPS。此机构领导依据美国法典44条3506(b)章在高级官员中重新予以委任。以下情况允许免除:a 此标准对联邦政府计算机系统操作产生不利影响,阻碍任务的执行 。b 此标准对联邦政府财务操作产生不利影响,产生赤字。代理负责人会依据以上信息做出书面免除请求。当不符合以上标准时不必做出书面请求 。代理负责人只有在接到书面通知时,被认为要求得到批准。批准复印件寄至:;美国马里兰州 208998900,盖士堡 100局 Dr8900, 国家标准和技术研究所,ATTN:FIPS免除决定。此外,

3、免除批准通告和官方委任批准通告应立即寄至美国众议院委员会和美国参议院政府事务委员会,并在联邦登记簿声明。当放弃采购设备和/或服务时,作为收购申请的一部分在商务日报声明;如果在通知发出后才做出免除决议,修改通知。免除通知复印件,任何批准免除的文件和附件,在美国法典552(b)范围内的授权删除决议,由代理机构保管。14 取得SHS附件的地点http:/csrc.nist.gov/publications/. 此网站参看电子版。其它一系列计算机安全出版物,包括订购信息可以此网站NIST91条获取。NIST计算机安全出版物副本从 维吉尼亚州 22161. 斯普林菲尔德,Royal 路,5285,NIS

4、T 获取。联邦政府信息处理标准1972001年11月26日目录1.简介52定义52.1 术语和首字母缩略词一览表52.2 算法参数,符号和函数63. 记法与协议73.1 输入与输出73.2 字节83.3 字节数组83.4 状态93.5 纵列数组状态104. 数学准备104.1 加法104.2 乘法104.2.1乘以 X.104.3带GF(28)系数的多项式125. 运算说明135.1 密码145.1.1 SubBytes( ()变化155.1.2 ShiftRows()变化175.1.3 MixColumns()变化175.1.4 AddRoundKey()变化185.2 密匙拓展195.3

5、逆向密码205.3.1 InvShiftRows()变化215.3.2 InvSubBytes()变化225.3.3 InvMixColumns()变化.23 5.3.4Inverse of the AddRoundKey()变化. 235.3.5 等效逆密码236. 注意事项256.1 密匙长度要求256.2 键入限制266.3 密钥长度,数据块大小和约整数的参数化266.4 不同平台的操作建议26附录 A 密匙拓展例证27A.1 128-位 密码索引拓展27A.2 192-位 密码索引拓展28A.3 256-位 密码索引拓展30附录 B 密码例证33附录 C 实例35C.1 AES-128

6、 (NK=4, NR=10).35C.2 AES-192 (NK=6, NR=12).38C.3 AES-256 (NK=8, NR=14).42附 录 D 参考47图目录图 1. 位模式的十六进制8图2. 字节和位的目录9图 3. 输入和输出数组状态9图 4. 密匙-数据块-约整数组合14图 5. 伪码15图 6. 字节替换()字节应用S-box.16图 7. S-box: xy的代入值 (十六进制格式).16图 8. 行位移 () 状态最后三行的循环位移17图 9. 列混合() 状态的纵列顺序操作18图 10 密匙加法()用密匙调度中的字进行每列的逻辑运算19图11. 密匙扩展的伪码20图

7、 12. 逆向密码的伪码21图 13. 反行移位()状态最后三行的循环位移22图 14.逆向 S-box: xy的代入值(十六进制格式t).22图 15. 等逆向密码的伪码251. 简介AES 解述了高级加密标准(3 和 4), 对称分组密码用带有 128, 192, 和256位长度的密匙.产生 128 位数据块。高级加密标准可以对额外数据块大小和密匙长度进行处理,尽管它们不被 AES 采用。这个标准中,算法指“AES 算法”,与上文提到的 3 种不同长度密匙共用。指:“AES-128”, “AES-192”, 和“AES-256”.。见以下详述:2 术语,首字母缩略词,算法参数,符号与函数的

8、定义。3 用于算法中的注释与惯例,包括二进制位数的顺序与数量,字节,和字4 读懂算法时,数学属性很有用。5 算法详述涵盖,密匙扩展,加密和解密路径6 实施问题,如密匙长度支持,键入限制,额外数据块/密匙/循环大小AES以数个附录作为结束,包括密匙扩展和密码步骤,密码和逆向密码的实例,以及一些列参考。2. 定义2.1 术语和首字母缩略词一览表以下定义在 AES 中皆会使用:AES高级加密标准Affine包含乘法的变换,矩阵随后Transformation 增加向量Array相同字符实体的列举(如 一系列字节)Bit含 0 或 1 的二进制位Blocks二进制序列,包含输入,输出,形态结构和回合密

9、匙。序列长度是序列所含的字数。数据块也可理解为字节数组Byte一组 8 字或被看作单实体或 8 个个体字Cipher一系列变换使用密匙把明文变为密文Cipher Key被密匙扩展路径使用的秘密,密匙,用来生成轮密匙,可用矩形字节表示,有 4 行 NK 列。Ciphertext密码数据输出或输入到逆向密码Inverse Cipher 一系列变换使用密匙把密文变为明文。Key Expansion 可以从密匙中生成轮密匙的路径Plaintext数据输入到密码或从逆向密码中的输出RijindaelAES 详述的密码算法Round Key轮密匙即用密匙扩展路径从密匙中衍生的值,它们用于密码和逆向密码中形

10、态结构。State中间密码结果,可用矩形字节图表示,有 4 行 Nb 列S-box非线性代替表,用于数个字节代入变换和字节扩展路径 完成字节值的代入Word一组 32 字或被看作单实体或 4 字节数组。2.2 算法参数,符号和函数以下算法参数,符号和函数将在 AES 中使用AddRoundKey()密码和逆向密码变换,使用 XOR 操作把轮密匙加入到形态中。轮密匙长度等同状态大小(Nb=4,轮密匙长度等于 128 字/16 字节)InvMixColumns() 逆向密码变换是列混合的逆向InvShiftRows()逆向密码变换是行位移的逆向InvSubBytes()逆向密码变换是字节替换的逆向

11、K密匙MixColumns()密码变换利用 State 所有列,并混合数据(互相独立) 产生新列Nb列数(32 位字)包含 State。AES 中,Nb = 4. (见 6.3.章)Nk32 位字数包含密匙。AES 中,Nk = 4, 6, 或 8. (见 6.3.章)Nr循环数,是函数 Nk 和 Nb(固定)AES 中,Nr=10, 12,或14.(见 6.3.章)Rcon循环常数字列RotWord()用在密匙扩展路径中的函数,使用 4 字节字,完成循环排列。ShiftRows()通过循环移位形态中末 3 行,密码中的变化来处理形态。SubBytes()通过非线性字节代替表(S-box)(对

12、每个独立字节产生影响),密码中的变化来处理 State。SubWord()字节扩展路径中的函数,采用 4-字节输入字,每个 4 字节使用一个 S-box产生一个输出字。XOR互斥操作互斥操作乘以2个多项式(每个度 4)模数 x4 + 1. 有限制乘法3. 记法与协议3.1 输入与输出AES 算法的输入与输出中每个包含128 B 序列(0或1 数值)。这些序列有时被认为数据块,以及所包含的位被认为是它们的长度。AES 算法的密匙是128,192,或 256 字序列。其它输入,输出和密匙长度不被 AES 认可。此序列内的字从 0 到 N 结束(n=序列长度)附属在一个字上的 i 被称为它的变址(或

13、索引),范围:0 i 128, 0 192 or 0 256 依据数据块长度和密匙长度(上文中已详解)3.2 字节AES 算法中处理的基本单元是一个字节,8 位序列被认为单实体。输入,输出和密匙位序列(在 3.1 章中进行了详细的描述)被认为字节数组进行处理,其中把这些序列分成 8 个连续字用来形成字节数组(详见 3.3 章)。用 a表示输入,输出或密匙,结果数组的字节将应用其中一个形式 an 或 an, n 的范围如下:密匙长度 = 128 bits, 0 n 16; 数据块长度 = 128 bits, 0 密匙长度= 192 bits, 0 24;密匙长度= 256 bits, 0 32.

14、AES 算法中所有字节值被认为在b7, b6, b5, b4, b3, b2, b1, b0.中各自字值(0或 1)的串联。这些字节被认为 是用多项式表示的有限域元素。例如: 01100011 决定 特定有限域元素十六进制表示法可以很好的表示字节值,见图 1图 1位组合表示十六进制元素01100011可表示为63, 在63中数字表示包含多数字的 4 位组 (在左边)一些有限域操作包含额外的字(b8),这个额外的字作为01在 8 位字节前出现, 例如,一个 9 位序列表示为011b.3.3 字节数组字节数组表示为字节和字节内的位序从 128-位输入序列中衍生而出input0 input1 inp

15、ut2 input126 input127如下:此模式可以拓展为更长序列(i.e., 192- 和 256-位 密匙), 所以,简言如下:an = input8n, input8n+1, , input8n+7. (3.2)把 3.2 和 3.1 联合,图 2 展示每字节中的位如何计算:图 2字节和位的目录3.4 状态AES 算法操作在字节的二维数组上进行,称之为 状态。它包括 4 行字节,每行包括 Nb 字节,Nb 是数据长度除以 32 。用 s 表示的状态数组中,每一个字节有 2 个变址,行数 r 0 r 4 ,列数 c 0 c Nb 。状态的个体字节或用sr,c 或 sr,c表示。此标准

16、下 Nb=4, 0 4 (.见 6.3 章).在密码和逆向密码的开始(5 章中详细描述),输入 字节数组 in0, in1, in15 已复制到图 3 状态数组中。密码和逆向密码操作指导状态数组,然后它的终值复制到输出字节数组 out0, out1, out15.图 3状态数组输入和输出在密码和逆向密码的开始,输入数组被复制到状态数组,下图:sr, c = inr + 4c for 0 4 and 0 Nb, (3.3)在密码和逆向密码的最后,状态被复制到输出数组,下图:outr + 4c = sr, c for 0 Nb. (3.4)3.5 纵列数组状态状态数组 32-位字的每列中的 4 字

17、节中,行数 r 为每个字里的 4 字节提供一个变址,这个状态被看做 32 位字的一维数组(列)w0.w3, 列数 c 为此数组提供一个变址,如 图 3 所示,状态被认为 4 字数组,如下:4. 数学准备AES 算法中所有字节被看做有限域元素,这些元素使用 3.2 章所介绍的记法。有限域元素可进行加法和乘法,但是这些操作与用于数字的操作相异。以下章节介绍在 5 章中会用到的数学概念。4.1 加法为多项式中相应的冥添加系数以获取有限域中的额外 2 个元素。用 XOR 操作 (表示),即 以 2 为模数 所以 11 = 0 , 10 = 100 = 0 . 因此减少多项式与增加多项式等同。额外有限域

18、元素可用模数 2表示字节中相应的额外字。如 2 个字节a7a6a5a4a3a2a1a0 和 b7b6b5b4b3b2b1b0,总和为c7c6c5c4c3c2c1c0, 其中 ci = ai bi(i.e., c7 = a7 b7, c6 = a6 b6, .c0 = a0 b0).例如,以下表述等同:(x6 + x4 + x2 + x +1) + (x7 + x +1) = x7 + x6 + x4 + x2(多项式记法);01010111 10000011 = 11010100(二进制记法);57 83 = d4(十六进制记法).4.2 乘法在多项式表达中,GF(28)中的乘法(用表示),与

19、以8 度数不能复归的多项式为模数的乘法多项式 相对应。如果多项式的唯一除数为本身,则不能复归。如AES 算法,此不能复归多项式为: m(x) = x8 + x 4 + x3 + x +1,(4.1) 或 十六进制记法中的011b 如57 83 = c1, 因为(x 6 + x 4 + x 2 + x +1) (x 7 + x +1) = x13 + x11 + x9 + x8 + x7 +x7 + x5 + x3 + x 2 + x + x6 + x 4 + x 2 + x +1= x13 + x11 + x9 + x8 + x6 + x5 + x 4 + x3 +1和x13 + x11 +

20、x9 + x8 + x6 + x5 + x 4 + x3 +1 modulo ( x8 + x 4 + x3 + x +1)= x7 + x 6 +1.用 m(x)进行模块化缩小确保结果会是度数少于 8 的二元多项式,可用一个字节表示。与加法不同,相对应的字节层面上无简单操作。以上定义的乘法相互关联,元素01倍增。任何非 0 二元多项式 b(x)的度数少于 8 ,倍增逆向的 b(x),表示 b-1(x),可在以下找到:扩展的 Euclidean 算法7 用来计算多项式 a(x) 和 c(x) ,如:b(x)a(x) + m(x)c(x) = 1.(4.2)因此a(x) b(x)mod m(x)

21、 = 1, 意味着b-1 (x) = a(x)mod m(x) . (4.3)此外,对于此域中任何 a(x), b(x)和 c(x) ,a(x) (b(x) + c(x) = a(x) b(x) + a(x) c(x)它遵循 256 字节值,XOR 用于加法,乘法如上文所述,是有限域 GF(28).结构。4.2.1乘 法 X乘以二元多项式(等式 3.1 中定义), 多项式 x 结果显示在:缩减 m(x)(已在等式 4.1 中进行详述)结果获取 x b(x)值。如果 b7 = 0,则结果以简化形式出现。如果 b7 = 1,对多项式 m(x).进行减法(也就是 XORing)完成缩减。符合 X 乘

22、法(如00000010 or 02) 在字节层面作为左移位应用,随后是1bXOR 。此操作由 xtime()显示。重复应用 xtime()完成乘法 X。增加中间结果,完成任何常数乘法。57 13 = fe因为: 02 = xtime(57) = ae 04 = xtime(ae) = 47 08 = xtime(47) = 8e 10 = xtime(8e) = 07,所以: 13 = 57 (01 02 10)= 57 ae 07= fe.4.3 带 GF(28)系数的多项式含 4 项的多项式可以由有限域元素系数进行定义,如下:a(x) = a3x3 + a2x2 + a1 x + a0 (

23、4.5)以上可以用a0 , a1 , a2 , a3 .定义。本章节中多项式表现形式与有限域元素中多项式有所不同个,即使这两个多项式使用相同的中间量 X,本章中系数作为本身有限域元素,如字节代替位,含 4 项的多项式使用不同的缩减多项式,详见下文,添加有限域系数(如 X)完成加法,它与在每字的相应字节间 XOR 操作相对应。换言之,完整字值的 OXR。使用(4.5) 和 (4.6)方程式,完成乘法需要2步。第一步多项式产生c(x) = a(x) b(x) 用代数方法扩展。下图:其中结果c(x) 不代表4字节的字。因此多项式第二步是减少c(x),它以4次多项式为模。结果可以减为少于4次的多项式。

24、对与AES 算法,用多项式x4 + 1 完成,因此,a(x) 和 b(x), 用a(x) b(x)表示,并用4项多项式d(x) 表示,带有当a(x)是固定多项式时,等式(4.11) 中对操作进行定义,可用矩阵图表示如下:因为x4 +1 不是通过GF(28)的不可约多项式,固定4项的多项式乘法没必要可逆。即使这样AES算法对一个固定4项多项式进行详述,这个多项式有反数(见5.1.3 节和Sec. 5.3.3节)AES算法中的另一个多项式(参见5.2章的RotWord() 函数) a0= a1 = a2 = 00and a3 = 01,是多项式x3. 上述等式(4.13)显示它可以利用输入字中的循

25、环字节生成输出字。这意味着b0, b1, b2, b3 转换为b1, b2, b3, b0.。5. 运算说明对于AES算法,输入数据块,输出数据块的长度,状态是128字。用Nb = 4可以表示,其中Nb = 4显示状态中32-bit 字(列数)的数量。对于AES算法,密钥长度,K 是 128,192,或 256字。用Nb = 4,6或8可以表示,其中Nb = 4,6或8 显示状态中32-bit 字(列数)的数量。对于AES算法,在进行运算时运作循环数,算法由密钥大小决定。Nr 代表循环数,当Nr,=4时Nr=10,Nr=6时Nr=12,Nr=8时Nr=14.密钥-数据块-循环符合AES标准,见图4 ,涉及到密钥长度,数据块大小,循环数。对于密码和逆向密码,AES使用循环函数,此循环函数由4个不同字节导向变换: 1)字节代入使用代入表(S-box),2) 使用不同偏移改变状态数组行 3) 在状态数组的每列中混合数据 4) 状态上添加循环密钥。详见 5.1.1-5.1.4 和5.3.1-5.3.4.章。5.1 密码开始时,用3.4节中描述的约定(或协议)把输入拷到状态数组里。初始循环密钥后,利用末循环(与首Nr -1 循环微异)执行循环函数10,12,或14(由密钥长度决定),改变状态数组 。这样末状态拷到输出中。使用密钥安排使循环函数参数

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2