文档详情

应用密码学第5讲课件.ppt

发布:2017-03-06约5.5千字共24页下载文档
文本预览下载声明
应用密码学 第五讲 AES算法 复习 DES算法 分组长度 密钥长度 f函数 S盒 轮变换 密钥调度 本节内容 AES (高级数据加密标准) 算法描述 密码分析 RC6算法(自学) RC5算法描述 RC6算法描述 AES算法 1997年9月12日,为了替代即将退役的DES,美国国家标准与技术研究所(NIST)在《联邦纪事》上发表了征集AES算法的公告。1999年3月22日,公布了5个候选算法:MARS, RC6, Rijndael, SERPENT, Twofish。2000年10月2日,由比利时密码学家Joan Daemen和Vincent Rijmen提交的Rijndael算法被确定为AES。以下称Rijndael算法为AES算法。2001年11月26日被采纳为一个标准。 AES算法描述 Rijndael分组加密算法的前身是Square分组加密算法,轮变换结构与其基本相同。为了应征AES候选算法,对Square分组加密算法进行了改进。由原来的密钥和分组长均为128比特改为分组和密钥长均可变,可以满足不同的加密需求。 具体参数如下: ①分组长度、密钥长度和加密层数均可变。 ②分组长度和密钥长度支持128、192、256比特。 ③分组和密钥长度可以独立改变,并由此决定加密层数。 为了后面论述方便,进行如下定义: (一) 设计准则 Rijndael加密算法按照如下原则进行设计: ⒈抗所有已知的攻击 ⒉在多个平台上速度要快和编码紧凑 ⒊设计简单 (二) 状态、密钥与轮数 定义:状态(State):中间密码结果称为状态 Nb = 明文分组的4-字节字数(32比特) Nk = 密钥的4-字节字数(32比特) Nr = 加密的轮数 明文分组(密钥)长度为128比特时,Nb=Nk = 4 明文分组(密钥)长度为196比特时,Nb=Nk = 6 明文分组(密钥)长度为256比特时,Nb=Nk = 8 现以Nb= 6和Nk=4为例进行图示说明。 分组长度、密钥长度都可以在128bit、192比特和256比特间变化,但是不同的组合需要不同的加密轮数。 分组长度与轮数的关系: AES的总体描述: ①给定一个明文x,将State初始化为x,并进行AddRoundKey操作,将RoundKey与State异或。 ②对前Nr-1轮中的每一轮,用S盒进行一次代换操作,称为SubBytes;对State作一个置换ShiftRows,再对State作一次操作MixColumns,然后进行RoundKey操作。 ③依次进行SubBytes,ShiftRows和AddRoundKey操作。 ④将State定义为明文。 加密开始时,首先将State定义明文字节x0,x1,…x15 SuBytes算法 External FieldInv, BinaryToField, FieldToBinary z ?BinaryToField(a7a6a5a4a3a2a1a0) if z?0 then z ? FieldInv(z) (a7a6a5a4a3a2a1a0) ? FieldToBinary(z) (c7c6c5c4c3c2c1c0) ? //在下面的循环中,所有下标都要经过模8约简 for i ? 0 to 7 do bi ? (ai+ai+4+ai+5+ai+6+ai+7+ci) mod 2 return (b7b6b5b4b3b2b1b0) FieldInv:表示求一个域元素的乘法逆 BinaryToField:把一个字节变成一个域元素 FieldToBinary:把一个域元素变成一个字节 下面我们计算 b0=a0+a4+a5+a6+a7+c0 mod 2 =0+0+0+1+1+1 mod 2 =1 b1=a1+a5+a6+a7+a0+c1 mod 2 =1+0+1+1+0+1 mod 2 =0 …. 结果是: (b7b6b5b4b3b2b1b0)= 以16进制表示就是ED。 上面的结果可以通过查S盒代换表来验证。行号5,列号3,对应ED。 行变换 第0行保持不变,第1~3行分别右循环移动移动C1~C3字节。 其中C1~C3的大小与Nb大小有
显示全部
相似文档