新一代数据加密标准_AES
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作 者 简 介 :王先培(1963~) ,男,副教授、博士,从事计算机网 络、信息安全、人工智能等领域的研究;张爱菊、熊 平,硕士 生;张 俊,硕士 收 稿 日 期 :2002-03-04
—69—
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0=∑bixi,0≤i≤7 有限域GF(28)上的乘法取逆可用下式表示:
2 AES加密算法性能分析
AES加密算法和DES加密算法有很多的共同点,都要经 过一个S 盒、替换和移位等操作,但是,AES加密算法最终 取代DES,主要是因为:
⑴ 在DES中,密钥长度为64 bits,有效密钥空间仅为256, 这样小的密钥空间对像穷举密钥这样的攻击显得太小了。相 比之下AES有更长的密钥,密钥长度可为128bits、192bits 和 256bits三种情况,明显提高了加密的安全性,同时,对不同 机密级别的信息,可采用不同长度的密钥,执行灵活性较高。
1 分 组 密 码AES的 设 计 原 理
在密码专家对筛选出的5种算法进行攻击试验、破译试 验的基础上,根据安全性、速度性能、实现的方便实用性、 通用性和灵活性标准, Rijndael最终被选作 AES 标 准 ( 高 级 加密标准)的加密算法。AES 为 分 组 密 码 体 制 , 分 组 长 为 128比特,密钥长可以为128、192 和256比 特3种。AES 加 密 算法的数据处理单元是字节,128比特的分组信息被分成16 个字节。 AES算法中引入矩阵的概念,分组的16个字节按 顺序被复制到一个4*4的矩阵中,称为状态(state),AES的所 有变换都是基于状态的变换。AES 变换是由轮函数通过多轮 迭代实现的,根据密钥长度的不同,轮函数的迭代次数也不 一样,对应上面的3种密钥长度,迭代次数分别为10、12 、 14轮。轮函数的构成包括非线性、扩散和密钥调度几种元 素。非线性变换的目标就是通过较小较简单的非线性元素得 到大的复杂化的非线性构件。在轮函数的每一轮迭代中,包 括4步变换,分别是字节代换运算(ByteSub())、行变换
(ShiftRows())、列混合(MixColumns()) 以及轮密钥的添加 变换(AddRoundKey()),其作用就是通过重复简单的非线性 变换、混合函数变换,将字节代换运算产生的非线性扩散, 达到充分的混合,使加密后的分组信息统计特性分布更均 匀,在每轮迭代中引入不同的密钥,这样便以最简单的运算 代价得到最好的加密效果,实现加密的有效性。在AES加密 体制中,用到了一些专用术语、缩写词和运算符,为便于后 面的叙述,下面分别加以定义:
(4) 轮密钥的混合(AddRoundKey())变换 在轮密钥的混合变换中,就是将轮密钥的各字节与状态 中的各字节分别异或,实现密码和密钥的混合。轮密钥由加 密密钥通过一定的规则扩展产生,产生的轮密钥总长为 Nb (Nr+1)个字,Nr为迭代轮数,在每一轮的密钥混合变换中, 都要从轮密钥Nb(Nr+1)中按顺序依次取出 Nb个字与状态的各 字节分别异或。若再次把轮密钥和各字节异或便得其逆运 算。轮密钥的混合运算可用下面的式子表达:
A New Advanced Encryption Standard——AES
WANG Xianpei,ZHANG Aiju, ZIONG Ping, ZHANG Jun (Electron Information Institute of Wuhan University,Wuhan 430072)
b(x)=b3x3+b2x2+b1x+b0 列变换就是从状态中取出一列,表示成多项式的形式 后,用它乘以一个固定的多项式a(x),然后将所得结果进行 取模运算,模值为x4+1。在AES加密算法中,由于x4+1不是 有限域GF(28)上的不可约多项式,因此,用b(x) 乘以任意一 个4项式的运算不一定是可逆的,于是,在AES中,将a(x)设 置成一个固定的值,以确保可进行求逆运算。在AES加密算 法中,a(x)的表达式为:
⊗ : 幂指数小于4的两个多项式的乘法,其结果对x4+1进行 取模运算。
AES加密算法每一轮由4步操作构成: (1) 字节代换运算(ByteSub()) 字节代换运算是一个可逆的非线性字节代换操作,这种 变换要对分组中的每个字节进行,对字节的操作遵循一个代 换表,即S 盒。S 盒由有限域GF(28)上的乘法取逆和GF(2)上 的仿射变换两步构成。在AES加密算法中,所有的字节都可 以表示成8个二进制位的组合,如 b7b6b5b4b3b2b1b0,因此字 节可以多项式的形式,表示成有限域GF(28)上的元素,如:
第 29卷 第 3期 Vol.29 № 3
计 算 机 工 程 Computer Engineering
2003年 3月 March 2003
· 安全技术·
文章编号: 1000— 3428(2003)03 — 0069— 02
文献标识码:A
中图分类号: TP309.7
新一代数据加密标准——AES
王先培,张爱菊,熊 平,张 俊
⑵ 在DES中,还存在一些弱密钥和半弱密钥。DES的16 次加密迭代中使用不同的子密钥是确保DES强度的一种重要 措施,但实际上存在一些密钥,由它产生的16个子密钥会部 分的重合甚至完全一致。这样的密钥为弱密钥或半弱密钥, 它们的存在无疑会降低DES的强度。所以,在DES中,对初 始密钥的选取存在一定的限制。在AES中,由于密钥扩展函 数的特点,所产生的轮密钥随机性很强,对初始密钥的选取 也没有特别的限制。
[ s'0,c, s'1,c , s'2,c ,s'3,c ]= [ s0,c, s1,c , s2,c ,s3,c ]⊕[wround*Nb+c] 其中, 0≤c< Nb ,[wi]表示轮密钥中第i个字,0≤round≤ Nr 。
在轮密钥的混合变换中,对数据的操作工作量很小,同 时存储器的需求较少。
密码技术所提供的安全性来源于破解密码计算上的困难 性。计算机技术发展到今天,计算能力已经对像DES这样的 加密算法构成了威胁,比如,DES的密钥太短,有效密钥只有 56位;DES 加密算法中还存在弱密钥和半弱密钥 ;DES 加密标 准的算法存在互补对称性等,为此,急需制定新的密码标准来 取代DES 。2000年10月,美国商务部宣布Rijndael成为AES 加 密标准的算法,标志着信息技术有了新的安全工具,它的出 现将为计算机网络数据保密提供强有力的支持。
现代密码存在两类密码体制,即对称密码体制(私钥密 码体制)和非对称密码体制(公钥密码体制)。对称密码是 较传统的加密体制,鉴于其算法实现简单和加密速度快等优 点,目前仍然是主流密码体制之一。对称密码体制分为序列 密码和分组密码两类,序列密码以密钥控制密钥流发生器, 产生一随机序列,用这个随机序列和明文信息逐位异或,就 得到密文,其加密单元为比特;分组密码体制将数据流分成 固定长度的分组,然后再用密钥按照一定的算法把分组加密 成为密文,其数据加密单元为分组。
a(x)={03}x3+{01}x2+{01}x+{02}
a(x)的乘法逆多项式为:
a-1(x)={0b}x3+{0d}x2+{09}x+{0e}
列混合的算术表达式为:
—70—
s'(x)=a(x) ⊗ s(x) 其中,s(x)表示状态的列多项式。 上面的表达式用矩阵可表示为:
S'0,c
02 03 01 01 S0,c
(3) 列混合(MixColumns())变换 列混合是对状态(State)的列的一种线性变换,状态每列 有4个字节,即一个字{b0,b1,b2,b3},其中b0、b1、b2、b3都是 字节。一个字可以用有限域GF(28)上的4项多项式来表示, 在多项式中,未知数的系数分别为字中的相应字节。一个字 在有限域GF(28)上可表示成下面的4项多项式:
b-1(x)b(x) ≡1 mod m(x) 其中: m(x)=x8+x4+x3+x+1 b(x)是用多项式表示的S盒的输入,b-1(x)为乘法求逆后 的输出。
仿射变换也对字节操作, 设输入字节为{b7b6b5b4b3b2b1b0} ,经过仿射变换后的输出字节为 { b'7 b'6 b'5 b'4 b'3 b'2 b'1 b'0}, 则有下面的变换关系:
【Abstract 】 With the development of cryptanalysis techniques, new encryption standards are needed urgently to replace old, outdated encryption standards. This article introduces entire implementing process of AES encryption standard as a whole, and expatiates several steps of AES encryption algorithm in detail. In the end, this article analyses and evaluates algorithm security of AES. 【Key words】 AES;State;Block cipher;MixColumns() ;AddRoundKey()
S0,0
S0,1
S0,2
S0,3
S1,0
S1,1
S1,2
S1,3
S2,0
S2,1
S2,2
S2,3
S S S 0,0
0,1
0,2
S0,3
S S S 1,1
1,2
1,3
S1,0
S S S 2,2
2,3
2,0
S2,1
S3,0
S3,1
S3,2
S3,3
S S S 3,3
3,0
3,1
S3,2
图1 行变换过程 行变换和列混合相互影响,在多轮变换后,使密码信息 达到充分的混乱,提高了非线性程度。
Word:由32 比特组成的串,既可被看作单个实体,也可认为 是由4个字节组成的串。
Nb: 状态的列数,在这个标准中Nb=4。 State:密码变换的中间结果,可看成是二维的矩阵,有4行 Nb 列。 Nk: 密钥中字的个数,字长为32比特,在这个标准中,Nk=4, 6或8。 Nr: 轮函数的迭代次数,它是Nb和Nk的函数。在AES加密标准 中,Nr=10,12或14。 ⊕: 异或运算。
S'1,c
01 02 03 01 S1,c
=
S'2,c
01 01 02 03 S2,c
S'3,c
03 01 01 02 S3,c
其中:0≤c<Nb 要保证最后的乘积仍然是有限域上的幂指数不超过4的 多项式,必须对所得结果进行求模运算,模值为(x4+1)。 列混合变换基于纠错码理论,使列之间达到充分的混合。
(武汉大学电子信息学院,武汉 430072) 摘 要:随着密码分析技术的提高,迫切需要制定新的信息加密标准来取代过时的DES。文章Fra Baidu bibliotek总体上介绍了AES加密标准实现的全过程, 对AES加密算法的几个步骤进行了详细阐述,最后,对AES加密标准算法的安全性给出了一定的分析和评价。 关 键 词 :AES加密算法;状态;分组密码;列混合;密钥添加
0
b'3
1 1110001
0
b'4
1 1111000
0
b'5
0 1111100
b'6 b'7
0 0111110 0 0011111
1 1 0
(2) 行位移(ShiftRows())变换 行变换是一种线性变换,其目的就是使密码信息达到充 分的混乱,提高非线性度。行变换在状态的每行间进行,具 体就是将每一行进行循环移位,移动位数以字节为单位,将 最低位字节移到高位,高位字节移到低位,即循环右移,移 动字节数根据行数来确定,第0行不发生偏移,第一行循环 右移一个字节,第二行移两个,依次类推。图1表示了行变 换的过程。
b'i= b ⊕b ⊕b i (i+4)mod8 (i+5)mod8⊕b(i+6)mod8⊕b(i+7)mod8⊕ci ci为{01100011}或{63}((十六进制表示)的每一对应位。 用矩阵来表示,S盒中的仿射变换输出为:
b'0
1 0001111
1
b'1
1 1000111
1
b'2
1 1100011
—69—
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0=∑bixi,0≤i≤7 有限域GF(28)上的乘法取逆可用下式表示:
2 AES加密算法性能分析
AES加密算法和DES加密算法有很多的共同点,都要经 过一个S 盒、替换和移位等操作,但是,AES加密算法最终 取代DES,主要是因为:
⑴ 在DES中,密钥长度为64 bits,有效密钥空间仅为256, 这样小的密钥空间对像穷举密钥这样的攻击显得太小了。相 比之下AES有更长的密钥,密钥长度可为128bits、192bits 和 256bits三种情况,明显提高了加密的安全性,同时,对不同 机密级别的信息,可采用不同长度的密钥,执行灵活性较高。
1 分 组 密 码AES的 设 计 原 理
在密码专家对筛选出的5种算法进行攻击试验、破译试 验的基础上,根据安全性、速度性能、实现的方便实用性、 通用性和灵活性标准, Rijndael最终被选作 AES 标 准 ( 高 级 加密标准)的加密算法。AES 为 分 组 密 码 体 制 , 分 组 长 为 128比特,密钥长可以为128、192 和256比 特3种。AES 加 密 算法的数据处理单元是字节,128比特的分组信息被分成16 个字节。 AES算法中引入矩阵的概念,分组的16个字节按 顺序被复制到一个4*4的矩阵中,称为状态(state),AES的所 有变换都是基于状态的变换。AES 变换是由轮函数通过多轮 迭代实现的,根据密钥长度的不同,轮函数的迭代次数也不 一样,对应上面的3种密钥长度,迭代次数分别为10、12 、 14轮。轮函数的构成包括非线性、扩散和密钥调度几种元 素。非线性变换的目标就是通过较小较简单的非线性元素得 到大的复杂化的非线性构件。在轮函数的每一轮迭代中,包 括4步变换,分别是字节代换运算(ByteSub())、行变换
(ShiftRows())、列混合(MixColumns()) 以及轮密钥的添加 变换(AddRoundKey()),其作用就是通过重复简单的非线性 变换、混合函数变换,将字节代换运算产生的非线性扩散, 达到充分的混合,使加密后的分组信息统计特性分布更均 匀,在每轮迭代中引入不同的密钥,这样便以最简单的运算 代价得到最好的加密效果,实现加密的有效性。在AES加密 体制中,用到了一些专用术语、缩写词和运算符,为便于后 面的叙述,下面分别加以定义:
(4) 轮密钥的混合(AddRoundKey())变换 在轮密钥的混合变换中,就是将轮密钥的各字节与状态 中的各字节分别异或,实现密码和密钥的混合。轮密钥由加 密密钥通过一定的规则扩展产生,产生的轮密钥总长为 Nb (Nr+1)个字,Nr为迭代轮数,在每一轮的密钥混合变换中, 都要从轮密钥Nb(Nr+1)中按顺序依次取出 Nb个字与状态的各 字节分别异或。若再次把轮密钥和各字节异或便得其逆运 算。轮密钥的混合运算可用下面的式子表达:
A New Advanced Encryption Standard——AES
WANG Xianpei,ZHANG Aiju, ZIONG Ping, ZHANG Jun (Electron Information Institute of Wuhan University,Wuhan 430072)
b(x)=b3x3+b2x2+b1x+b0 列变换就是从状态中取出一列,表示成多项式的形式 后,用它乘以一个固定的多项式a(x),然后将所得结果进行 取模运算,模值为x4+1。在AES加密算法中,由于x4+1不是 有限域GF(28)上的不可约多项式,因此,用b(x) 乘以任意一 个4项式的运算不一定是可逆的,于是,在AES中,将a(x)设 置成一个固定的值,以确保可进行求逆运算。在AES加密算 法中,a(x)的表达式为:
⊗ : 幂指数小于4的两个多项式的乘法,其结果对x4+1进行 取模运算。
AES加密算法每一轮由4步操作构成: (1) 字节代换运算(ByteSub()) 字节代换运算是一个可逆的非线性字节代换操作,这种 变换要对分组中的每个字节进行,对字节的操作遵循一个代 换表,即S 盒。S 盒由有限域GF(28)上的乘法取逆和GF(2)上 的仿射变换两步构成。在AES加密算法中,所有的字节都可 以表示成8个二进制位的组合,如 b7b6b5b4b3b2b1b0,因此字 节可以多项式的形式,表示成有限域GF(28)上的元素,如:
第 29卷 第 3期 Vol.29 № 3
计 算 机 工 程 Computer Engineering
2003年 3月 March 2003
· 安全技术·
文章编号: 1000— 3428(2003)03 — 0069— 02
文献标识码:A
中图分类号: TP309.7
新一代数据加密标准——AES
王先培,张爱菊,熊 平,张 俊
⑵ 在DES中,还存在一些弱密钥和半弱密钥。DES的16 次加密迭代中使用不同的子密钥是确保DES强度的一种重要 措施,但实际上存在一些密钥,由它产生的16个子密钥会部 分的重合甚至完全一致。这样的密钥为弱密钥或半弱密钥, 它们的存在无疑会降低DES的强度。所以,在DES中,对初 始密钥的选取存在一定的限制。在AES中,由于密钥扩展函 数的特点,所产生的轮密钥随机性很强,对初始密钥的选取 也没有特别的限制。
[ s'0,c, s'1,c , s'2,c ,s'3,c ]= [ s0,c, s1,c , s2,c ,s3,c ]⊕[wround*Nb+c] 其中, 0≤c< Nb ,[wi]表示轮密钥中第i个字,0≤round≤ Nr 。
在轮密钥的混合变换中,对数据的操作工作量很小,同 时存储器的需求较少。
密码技术所提供的安全性来源于破解密码计算上的困难 性。计算机技术发展到今天,计算能力已经对像DES这样的 加密算法构成了威胁,比如,DES的密钥太短,有效密钥只有 56位;DES 加密算法中还存在弱密钥和半弱密钥 ;DES 加密标 准的算法存在互补对称性等,为此,急需制定新的密码标准来 取代DES 。2000年10月,美国商务部宣布Rijndael成为AES 加 密标准的算法,标志着信息技术有了新的安全工具,它的出 现将为计算机网络数据保密提供强有力的支持。
现代密码存在两类密码体制,即对称密码体制(私钥密 码体制)和非对称密码体制(公钥密码体制)。对称密码是 较传统的加密体制,鉴于其算法实现简单和加密速度快等优 点,目前仍然是主流密码体制之一。对称密码体制分为序列 密码和分组密码两类,序列密码以密钥控制密钥流发生器, 产生一随机序列,用这个随机序列和明文信息逐位异或,就 得到密文,其加密单元为比特;分组密码体制将数据流分成 固定长度的分组,然后再用密钥按照一定的算法把分组加密 成为密文,其数据加密单元为分组。
a(x)={03}x3+{01}x2+{01}x+{02}
a(x)的乘法逆多项式为:
a-1(x)={0b}x3+{0d}x2+{09}x+{0e}
列混合的算术表达式为:
—70—
s'(x)=a(x) ⊗ s(x) 其中,s(x)表示状态的列多项式。 上面的表达式用矩阵可表示为:
S'0,c
02 03 01 01 S0,c
(3) 列混合(MixColumns())变换 列混合是对状态(State)的列的一种线性变换,状态每列 有4个字节,即一个字{b0,b1,b2,b3},其中b0、b1、b2、b3都是 字节。一个字可以用有限域GF(28)上的4项多项式来表示, 在多项式中,未知数的系数分别为字中的相应字节。一个字 在有限域GF(28)上可表示成下面的4项多项式:
b-1(x)b(x) ≡1 mod m(x) 其中: m(x)=x8+x4+x3+x+1 b(x)是用多项式表示的S盒的输入,b-1(x)为乘法求逆后 的输出。
仿射变换也对字节操作, 设输入字节为{b7b6b5b4b3b2b1b0} ,经过仿射变换后的输出字节为 { b'7 b'6 b'5 b'4 b'3 b'2 b'1 b'0}, 则有下面的变换关系:
【Abstract 】 With the development of cryptanalysis techniques, new encryption standards are needed urgently to replace old, outdated encryption standards. This article introduces entire implementing process of AES encryption standard as a whole, and expatiates several steps of AES encryption algorithm in detail. In the end, this article analyses and evaluates algorithm security of AES. 【Key words】 AES;State;Block cipher;MixColumns() ;AddRoundKey()
S0,0
S0,1
S0,2
S0,3
S1,0
S1,1
S1,2
S1,3
S2,0
S2,1
S2,2
S2,3
S S S 0,0
0,1
0,2
S0,3
S S S 1,1
1,2
1,3
S1,0
S S S 2,2
2,3
2,0
S2,1
S3,0
S3,1
S3,2
S3,3
S S S 3,3
3,0
3,1
S3,2
图1 行变换过程 行变换和列混合相互影响,在多轮变换后,使密码信息 达到充分的混乱,提高了非线性程度。
Word:由32 比特组成的串,既可被看作单个实体,也可认为 是由4个字节组成的串。
Nb: 状态的列数,在这个标准中Nb=4。 State:密码变换的中间结果,可看成是二维的矩阵,有4行 Nb 列。 Nk: 密钥中字的个数,字长为32比特,在这个标准中,Nk=4, 6或8。 Nr: 轮函数的迭代次数,它是Nb和Nk的函数。在AES加密标准 中,Nr=10,12或14。 ⊕: 异或运算。
S'1,c
01 02 03 01 S1,c
=
S'2,c
01 01 02 03 S2,c
S'3,c
03 01 01 02 S3,c
其中:0≤c<Nb 要保证最后的乘积仍然是有限域上的幂指数不超过4的 多项式,必须对所得结果进行求模运算,模值为(x4+1)。 列混合变换基于纠错码理论,使列之间达到充分的混合。
(武汉大学电子信息学院,武汉 430072) 摘 要:随着密码分析技术的提高,迫切需要制定新的信息加密标准来取代过时的DES。文章Fra Baidu bibliotek总体上介绍了AES加密标准实现的全过程, 对AES加密算法的几个步骤进行了详细阐述,最后,对AES加密标准算法的安全性给出了一定的分析和评价。 关 键 词 :AES加密算法;状态;分组密码;列混合;密钥添加
0
b'3
1 1110001
0
b'4
1 1111000
0
b'5
0 1111100
b'6 b'7
0 0111110 0 0011111
1 1 0
(2) 行位移(ShiftRows())变换 行变换是一种线性变换,其目的就是使密码信息达到充 分的混乱,提高非线性度。行变换在状态的每行间进行,具 体就是将每一行进行循环移位,移动位数以字节为单位,将 最低位字节移到高位,高位字节移到低位,即循环右移,移 动字节数根据行数来确定,第0行不发生偏移,第一行循环 右移一个字节,第二行移两个,依次类推。图1表示了行变 换的过程。
b'i= b ⊕b ⊕b i (i+4)mod8 (i+5)mod8⊕b(i+6)mod8⊕b(i+7)mod8⊕ci ci为{01100011}或{63}((十六进制表示)的每一对应位。 用矩阵来表示,S盒中的仿射变换输出为:
b'0
1 0001111
1
b'1
1 1000111
1
b'2
1 1100011