1、12345678GF(28)上的乘法运算9GF(28)上的乘法运算10111213GF(2n)上的求逆运算14用生成元表示GF(2n)上的元素15用生成元表示GF(2n)上的元素16用生成元表示GF(2n)上的元素17用生成元表示GF(2n)上的元素Chapter 5 高级加密标准高级加密标准 19 Advanced Encryption Standard (AES) 2001年由美国国家标准技术局(年由美国国家标准技术局(NIST)发布)发布 对称分组密码算法,用以取代对称分组密码算法,用以取代DES 205.1 高级加密标准的评估准则高级加密标准的评估准则 5.1.1 高级加密标准的起源高
2、级加密标准的起源1997年4月15日,NIST发起征集高级加密标准的活动,活动目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,作为新的数据加密标准。1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。作为进入AES候选过程的一个条件,开发者承诺放弃被选中算法的知识产权。对AES的基本要求是:比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。1998年8月12日,在首届AES会议上指定了15个候选算法。1999年3月22日第二次AES会议上,将候选名单减少为5 个, 这5 个算法是RC6,Rijn
3、dael,SERPENT,Twofish和MARS。2000年4月13日,第三次AES会议上,对这5个候选算法的各种分析结果进行了讨论。2000年10月2日,NIST宣布了获胜者Rijndael算法,2001年11月出版了最终标准FIPS PUB197。 215.2 AES密码密码AES的特性的特性所有的已知攻击具有免疫性所有的已知攻击具有免疫性在各种平台上执行速度快,代码紧凑在各种平台上执行速度快,代码紧凑设计简单设计简单22 235.2 AES密码密码AES的参数的参数AES-128AES-192AES-256密钥长度密钥长度(字(字/字节字节/位)位)4/16/1286/24/1928/
4、32/256明文分组长度明文分组长度(字(字/字节字节/位)位)4/16/1284/16/1284/16/128轮数轮数101214每轮的密钥长度每轮的密钥长度(字(字/字节字节/位)位)4/16/1284/16/1284/16/128扩展密钥长度扩展密钥长度(字(字/字节)字节)44/17652/20860/240 245.2 AES密码密码数据结构数据结构以字节为单位的方阵描述:输入分组以字节为单位的方阵描述:输入分组in、中间数组、中间数组State、输出、密钥、输出、密钥排列顺序:方阵中从上到下,从左到右排列顺序:方阵中从上到下,从左到右2526272022-1-20 285.2 AE
5、S密码密码数据结构数据结构:状态、密钥、输出的矩阵表示状态、密钥、输出的矩阵表示 29AES-128加解加解密过程密过程 305.2 AES密码密码AES算法结构算法结构2022-1-20 3132字节代替字节代替 332022-1-20 34S-盒盒代替表(代替表(S-盒)是盒)是可逆的可逆的,是一个,是一个1616的矩阵。的矩阵。 35363738 39 405.2.1 字节代换(字节代换(Substitute Bytes )变换)变换例子例子4142行移位行移位2022-1-20 435.2.2 行移位行移位(shift Row)变换变换效果:原来同列的字节分散到每一列效果:原来同列的字
6、节分散到每一列2022-1-20 44n例子例子45列混淆列混淆2022-1-20 465.2.3 列混淆列混淆(Mix Column)变换变换正向和逆向变换正向和逆向变换代替操作,将状态的列看作有限域代替操作,将状态的列看作有限域GF(28)上的)上的4维向量并被维向量并被有限域有限域GF(28)上的一个固定可逆方阵)上的一个固定可逆方阵A乘乘 乘法是乘法是GF(28)定义中定义的,素多项式为:定义中定义的,素多项式为: m(x) =x8+x4+x3+x+147482022-1-20 492022-1-20 50n例子例子5152轮密钥加轮密钥加2022-1-20 535.2.4 轮密钥加(
7、轮密钥加(Add Round Key)变换)变换一个简单地按位异或的操作一个简单地按位异或的操作 2022-1-20 545.2.5 AES的密钥扩展的密钥扩展 轮密钥是通过密钥调度算法从密钥中产生,包括两个组轮密钥是通过密钥调度算法从密钥中产生,包括两个组成部分:密钥扩展和轮密钥选取。基本原理如下:成部分:密钥扩展和轮密钥选取。基本原理如下: 所有轮密钥比特的总数等于分组长度乘轮数加1。(如128比特的分组长度和10轮迭代,共需要1408比特的密钥)。 将密钥扩展成一个扩展密钥。 轮密钥按下述方式从扩展密钥中选取:第一个轮密钥由开始Nb个字组成,第二个轮密钥由接下来的Nb个字组成,如此继续下
8、去。2022-1-20 555.2.5 AES的密钥扩展的密钥扩展 密钥扩展密钥扩展 扩展过程2022-1-20 56g(w3)g(w7)g(w39)2022-1-20 575.2.5 AES的密钥扩展的密钥扩展 函数函数g RotWord执行一字节循环左移执行一字节循环左移b0,b1,b2,b3 b1,b2,b3,b0 SubWord执行使用执行使用S-盒实行字节替换盒实行字节替换 前两步的结果前两步的结果XOR与轮常数与轮常数Rconj2022-1-20 58j12345678910RCj01020408102040801B365.2.5 AES的密钥扩展的密钥扩展n轮常量轮常量2022-1-20 595.2.5 AES的密钥扩展的密钥扩展n例子例子2022-1-20 605.2.6 对应的逆运算对应的逆运算61F(2n)比特串计算方法加法:异或乘法:异或、移位001、010100、111求乘法逆元利用生成元AES分组长度、密钥长度、扩展密钥长度、迭代轮数字节代替行移位列混淆密钥扩展算法