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

上传人:wj 文档编号:642353 上传时间:2023-04-29 格式:DOCX 页数:48 大小:4.43MB
下载 相关 举报
高级加密标准Word格式文档下载.docx_第1页
第1页 / 共48页
高级加密标准Word格式文档下载.docx_第2页
第2页 / 共48页
高级加密标准Word格式文档下载.docx_第3页
第3页 / 共48页
高级加密标准Word格式文档下载.docx_第4页
第4页 / 共48页
高级加密标准Word格式文档下载.docx_第5页
第5页 / 共48页
高级加密标准Word格式文档下载.docx_第6页
第6页 / 共48页
高级加密标准Word格式文档下载.docx_第7页
第7页 / 共48页
高级加密标准Word格式文档下载.docx_第8页
第8页 / 共48页
高级加密标准Word格式文档下载.docx_第9页
第9页 / 共48页
高级加密标准Word格式文档下载.docx_第10页
第10页 / 共48页
高级加密标准Word格式文档下载.docx_第11页
第11页 / 共48页
高级加密标准Word格式文档下载.docx_第12页
第12页 / 共48页
高级加密标准Word格式文档下载.docx_第13页
第13页 / 共48页
高级加密标准Word格式文档下载.docx_第14页
第14页 / 共48页
高级加密标准Word格式文档下载.docx_第15页
第15页 / 共48页
高级加密标准Word格式文档下载.docx_第16页
第16页 / 共48页
高级加密标准Word格式文档下载.docx_第17页
第17页 / 共48页
高级加密标准Word格式文档下载.docx_第18页
第18页 / 共48页
高级加密标准Word格式文档下载.docx_第19页
第19页 / 共48页
高级加密标准Word格式文档下载.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《高级加密标准Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《高级加密标准Word格式文档下载.docx(48页珍藏版)》请在冰点文库上搜索。

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

,以增加知识及指导。

9生效:

此标准于2002年5月26日生效

10专利:

安全散列算法在美国或国外专利范围内。

11出口管制:

密码装置和技术数据受联邦政府出口管控,出口的密码模块和技术数据必须符合联邦宪法规定,并得到美国商务部出口管理局授权。

相关出口管制规定详见:

CFR740.17 部分15条;

CFR742 部分 15条;

CFR774部分,类别5,2部分

12要求:

NIST遵循对AES分析的发展成果。

相对别的密码算法标准,

NIST会对AES每五年进行一次重审。

NIST使用AES对威胁安全使用的因素进行核查,考虑新的有效分析与科技。

此外,NIST会对此算法的任何突破性技术与数学弱点进行重审,并提供必要修改。

13豁免程序。

特殊情况下,联邦部门的领导批准放弃FIPS。

此机构领导依据美国法典44条

3506(b)章在高级官员中重新予以委任。

以下情况允许免除:

a此标准对联邦政府计算机系统操作产生不利影响,阻碍任务的执行。

b此标准对联邦政府财务操作产生不利影响,产生赤字。

代理负责人会依据以上信息做出书面免除请求。

当不符合以上标准时不必做出书面请求。

代理负责人只有在接到书面通知时,被认为要求得到批准。

批准复印件寄至:

美国马里兰州20899—8900,盖士堡100局Dr8900,国家标准和技术研究所,ATTN:

FIPS免除决定。

此外,免除批准通告和官方委任批准通告应立即寄至美国众议院委员会和美国参议院政府事务委员会,并在联邦登记簿声明。

当放弃采购设备和/或服务时,作为收购申请的一部分在商务日报声明;

如果在通知发出后才做出免除决议,修改通知。

免除通知复印件,任何批准免除的文件和附件,在美国法典552(b)范围内的授权删除决议,由代理机构保管。

14取得SHS附件的地点

http:

//csrc.nist.gov/publications/.此网站参看电子版。

其它一系列计算机安全出版物,包括订购信息可以此网站NIST91条获取。

NIST计算机安全出版物副本从维吉尼亚州22161.斯普林菲尔德,Royal路,,5285,NIST获取。

联邦政府信息处理标准197

2001年11月26日

目录

1.简介 5

2定义 5

2.1术语和首字母缩略词一览表 5

2.2算法参数,符号和函数 6

3.记法与协议 7

3.1输入与输出 7

3.2字节 8

3.3字节数组 8

3.4状态 9

3.5纵列数组状态 10

4.数学准备 10

4.1加法 10

4.2乘法 10

4.2.1乘以X. 10

4.3带GF(28)系数的多项式 12

5.运算说明 13

5.1密码 14

5.1.1SubBytes(()变化 15

5.1.2ShiftRows()变化 17

5.1.3MixColumns()变化 17

5.1.4AddRoundKey()变化 18

5.2密匙拓展 19

5.3逆向密码 20

5.3.1InvShiftRows()变化 21

5.3.2InvSubBytes()变化 22

5.3.3InvMixColumns()变化.

............................................................................................................235.3.4InverseoftheAddRoundKey()变化...................................................23

5.3.5等效逆密码 23

6.注意事项 25

6.1密匙长度要求 25

6.2键入限制 26

6.3密钥长度,数据块大小和约整数的参数化 26

6.4不同平台的操作建议 26

附录A–密匙拓展例证 27

A.1128-位密码索引拓展 27

A.2192-位密码索引拓展 28

A.3256-位密码索引拓展 30

附录B–密码例证 33

附录C–实例 35

C.1AES-128(NK=4,NR=10). 35

C.2AES-192(NK=6,NR=12). 38

C.3AES-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

图12.逆向密码的伪码 21

图13.反行移位()状态最后三行的循环位移 22

图14.逆向S-box:

xy的代入值(十六进制格式t). 22

图15.等逆向密码的伪码 25

1.简介

AES解述了高级加密标准([3]和[4]),对称分组密码用带有128,192,和

256 位长度的密匙.产生128位数据块。

高级加密标准可以对额外数据块大小和密匙长度进行处理,尽管它们不被AES采用。

这个标准中,算法指“AES算法”,与上文提到的3种不同长度密匙共用。

指:

“AES-128”,“AES-192”,和“AES-256”.。

见以下详述:

2术语,首字母缩略词,算法参数,符号与函数的定义。

3用于算法中的注释与惯例,包括二进制位数的顺序与数量,字节,和字

4读懂算法时,数学属性很有用。

5算法详述涵盖,密匙扩展,加密和解密路径

6实施问题,如密匙长度支持,键入限制,额外数据块/密匙/循环大小

AES以数个附录作为结束,包括密匙扩展和密码步骤,密码和逆向密码的实例,以及一些列参考。

2.定义

2.1术语和首字母缩略词一览表以下定义在AES中皆会使用:

AES 高级加密标准

Affine 包含乘法的变换,矩阵随后

Transformation增加向量

Array 相同字符实体的列举(如一系列字节)

Bit 含0或1的二进制位

Blocks 二进制序列,包含输入,输出,形态结构和回合密匙。

序列长度是序列所含的字数。

数据块也可理解为字节数组

Byte 一组8字或被看作单实体或8个个体字

Cipher 一系列变换使用密匙把明文变为密文

CipherKey 被密匙扩展路径使用的秘密,密匙,用来生成轮密匙,可用矩形字节表示,有4行NK列。

Ciphertext 密码数据输出或输入到逆向密码

InverseCipher一系列变换使用密匙把密文变为明文。

KeyExpansion可以从密匙中生成轮密匙的路径

Plaintext 数据输入到密码或从逆向密码中的输出

Rijindael AES详述的密码算法

RoundKey 轮密匙即用密匙扩展路径从密匙中衍生的值,它们用于密码和逆向密码中形态结构。

State 中间密码结果,可用矩形字节图表示,有4行Nb列

S-box 非线性代替表,用于数个字节代入变换和字节扩展路径完成字节值的代入

Word 一组32字或被看作单实体或4字节数组。

2.2算法参数,符号和函数

以下算法参数,符号和函数将在AES中使用

AddRoundKey() 密码和逆向密码变换,使用XOR操作把轮密匙加入到形态中。

轮密匙长度等同状态大小(Nb=4,轮密匙长度等于128字/16字节)

InvMixColumns()逆向密码变换是列混合的逆向

InvShiftRows() 逆向密码变换是行位移的逆向

InvSubBytes() 逆向密码变换是字节替换的逆向

K 密匙

MixColumns() 密码变换利用State所有列,并混合数据(互相独立)产生新列

Nb 列数(32位字)包含State。

AES中,Nb=4.(见6.3.章)

Nk 32位字数包含密匙。

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)(对每个独立字节产生影响)

,密码中的变化来处理State。

SubWord() 字节扩展路径中的函数,采用4-字节输入字,每个4字节使用一个S-box 产生一个输出字。

XOR 互斥操作

Å

互斥操作

Ä

乘以2个多项式(每个度<

4)模数x4+1.

·

有限制乘法

3.记法与协议

3.1输入与输出

AES算法的输入与输出中每个包含128B序列(0或1数值)。

这些序列有时被认为数据块,以及所包含的位被认为是它们的长度。

AES算法的密匙是

128,192,或256字序列。

其它输入,输出和密匙长度不被AES认可。

此序列内的字从0到N结束(n<

=序列长度)附属在一个字上的i被称为它的变址(或索引),范围:

i<

128,0£

192or0£

256依据数据块长度和密匙长度(上文中已详解)

3.2字节

AES算法中处理的基本单元是一个字节,8位序列被认为单实体。

输入,输出

和密匙位序列(在3.1章中进行了详细的描述)被认为字节数组进行处理,其中把这些序列分成8个连续字用来形成字节数组(详见3.3章)。

用a 表示输入,输出或密匙,结果数组的字节将应用其中一个形式an或a[n],n的范围如下:

密匙长度=128bits,0£

n<

16;

数据块长度=128bits,0£

密匙长度=192bits,0£

24;

密匙长度=256bits,0£

32.

AES算法中所有字节值被认为在{b7,b6,b5,b4,b3,b2,b1,b0}.中各自字值(0

或1)的串联。

这些字节被认为是用多项式表示的有限域元素。

例如:

{01100011}决定特定有限域元素

十六进制表示法可以很好的表示字节值,见图1

图1 位组合表示十六进制

元素{01100011}可表示为{63},在{63}中数字表示包含多数字的4位组(在左边)

一些有限域操作包含额外的字(b8),这个额外的字作为‘{01}’在8位字节前出现,例如,一个9位序列表示为{01}{1b}.

3.3字节数组

字节数组表示为

字节和字节内的位序从128-位输入序列中衍生而出

input0input1input2…input126input127

如下:

此模式可以拓展为更长序列(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个变址,行数r0£

r<

4,列数c0£

c<

Nb。

状态的个体字节或用

sr,c或s[r,c]表示。

此标准下Nb=4,0£

4(.见6.3章).

在密码和逆向密码的开始(5章中详细描述),输入—字节数组in0,in1,

…in15——已复制到图3状态数组中。

密码和逆向密码操作指导状态数组,然后它的终值复制到输出—字节数组out0,out1,…out15.

图3 状态数组输入和输出

在密码和逆向密码的开始,输入数组被复制到状态数组,下图:

s[r,c]=in[r+4c]for0£

4and0£

Nb,(3.3)

在密码和逆向密码的最后,状态被复制到输出数组,下图:

out[r+4c]=s[r,c]for0£

Nb.(3.4)

3.5纵列数组状态

状态数组32-位字的每列中的4字节中,行数r为每个字里的4字节提供一个变址,这个状态被看做32位字的一维数组(列)w0...w3,列数c为此数组提供一个变址,如图3所示,状态被认为4字数组,如下:

4.数学准备

AES算法中所有字节被看做有限域元素,这些元素使用3.2章所介绍的记法。

有限域元素可进行加法和乘法,但是这些操作与用于数字的操作相异。

以下章节介绍在5章中会用到的数学概念。

4.1加法

为多项式中相应的冥添加系数以获取有限域中的额外2个元素。

用XOR操作(Å

表示),即以2为模数–所以1Å

1=0,1Å

0=1 0Å

0=0.因此减少多项式与增加多项式等同。

额外有限域元素可用模数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)中的乘法(用·

表示),与以8度数不能复归的多项式为模数的乘法多项式相对应。

如果多项式的唯一除数为本身,则不能复归。

AES算法,此不能复归多项式为:

m(x)=x8+x4+x3+x+1, (4.1)或十六进制记法中的{01}{1b}如 {57}·

{83}={c1},因为

(x6+x4+x2+x+1)(x7+x+1)=x13+x11+x9+x8+x7+

x7+x5+x3+x2+x+x6+x4+x2+x+1

=x13+x11+x9+x8+x6+x5+x4+x3+1

x13+x11+x9+x8+x6+x5+x4+x3+1modulo(x8+x4+x3+x+1)

=x7+x6+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)modm(x)=1,意味着

b-1(x)=a(x)modm(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乘法(如{00000010}or{02})在字节层面作为左移位应用,随后是{1b}XOR。

此操作由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+a1x+a0(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次的多项式。

对与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={00}

anda3={01},是多项式x3.上述等式(4.13)显示它可以利用输入字中的循环字节生成输出字。

这意味着[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