考研复习 Day 40 | 密码学--第四章 分组密码(中)
注以下内容参考《新编密码学》范九伦 张雪锋 侯红霞 编著4.3 高级数据加密标准——AES随着DES被成功破解美国国家标准技术研究所NIST于1997年发起征集DES替代算法——高级加密标准AES的活动。征集要求如下对称分组加密可变密钥长度128、192或256位分组长度128位。比三重DES更快至少与三重DES一样安全。可公开且全球免费使用。至少30年内安全。1998年NIST从15个候选算法中选出5个MARS、RC6、Rijndael、Serpent、Twofish。2000年10月2日Rijndael读作“rain-doll”胜出成为AES。该算法由比利时密码学家Daemen和Rijmen提出。AES可用ASIC或FPGA硬件实现后者更灵活。4.3.1 AES数学基础AES将1字节视为有限域GF(2⁸)中的元素对应的多项式为b₇x⁷b₆x⁶b₅x⁵b₄x⁴b₃x³b₂x²b₁xb₀多项式加法对应系数模2加即异或。例4.323⊕6447。多项式乘法模不可约多项式m(x)x⁸x⁴x³x1。例4.423×64的计算过程。x乘法定义为x⋅B(x)若b₇0则左移一位若b₇1则左移一位后再异或00011011。记02⋅B(x)xtime(B(x))。系数在GF(2⁸)上的多项式4字节向量表示为a(x)a₃x³a₂x²a₁xa₀。乘法模M(x)x⁴1结果可表示为矩阵乘法。4.3.2 AES的描述AES是迭代分组密码分组长度和密钥长度均可独立指定为128、192或256位对应轮数为10、12、14。AES不使用Feistel结构而是采用“替换—列混合—密钥加”的轮结构。AES-128加密流程分组128位10轮初始密钥加AddRoundkey。前9轮字节代换ByteSubs→ 行移位ShiftRows→ 列混合MixColumns→ 密钥加。第10轮字节代换 → 行移位 → 密钥加无列混合。输出密文。内部函数ByteSubsS-盒对State每个字节进行非线性替换定义为yAx^(−1)b等价于查表4-9。该变换可逆。等价于下图给出的AES算法中“S-盒”对x进行代换的结果一个简单的验证如下ShiftRowsState矩阵第0行不变第1行左移1字节第2行左移2字节第3行左移3字节。可逆。MixColumns对State的每一列左乘固定矩阵C模x⁴1可逆因为C(x)与x⁴1互素。AddRoundkeyState与轮密钥逐字节异或。加密示例十六进制输入经过S-盒、行移位、列混合、密钥加等操作第一轮后128位中有76位发生改变充分体现了雪崩效应。4.3.3 AES的密钥生成以128位种子密钥为例给出产生11个轮密钥的方法。初始密钥 key 按照字节划分为 key[0]、key[1]、…、key[15]因为密钥编排算法是以字为基础的(每个字包含32位),所以每一个轮密钥由4个字组成11个轮密钥共包含 44 个字表示为 w[0],w[1],……w[43]轮密钥生成过程中首先将密钥按矩阵的列进行分组然后添加40个新列来进行扩充。如果前4个列(即由密钥给定的那些列)为 w[0]、x[1]、w[2]、w[3],那么新列以递归的方式产生。具体算法步骤如下:。步骤1、初始化函数RCon[i](i1…10)2、对于i0到3对于i4到43其中RotWord循环左移1字节SubWord对每个字节应用S-盒RCon[i]轮常数如RCon[1]01000000, RCon[2]02000000, …示例4.3.4 AES的安全性分析AES无弱密钥能抵御差分分析、线性分析、相关密钥攻击等已知攻击。目前最有效的攻击仍是穷举搜索。已有攻击方法如不可能差分、平方攻击、冲突攻击可破解6-7轮AES-128/192但无法破解完整10轮AES-128。4.4 IDEA算法国际数据加密标准IDEA由来学嘉博士和James Massey于1990年提出1992年完善。IDEA内置于PGP中。参数分组长度64位密钥长度128位轮数8轮特点不使用Feistel结构。使用三种不兼容的运算异或⊕、模2¹⁶加法、模2¹⁶1乘法⊙。MA盒乘加结构提供扩散可抵抗差分分析和线性分析。加密流程图4-1964位明文分为4个16位子分组X₁,X₂,X₃,X₄。每轮使用6个16位子密钥执行一系列⊕、、⊙运算。每轮结束时交换中间两个子分组最后一轮除外。8轮后进行最终输出变换4个子密钥得到密文。子密钥生成128位初始密钥分成8个16位子密钥作为第1轮的Z₁(1)至Z₆(1)和第2轮的Z₁(2),Z₂(2)。循环左移25位后继续生成后续子密钥共需52个子密钥。4.5 RC5算法RC5由Ron Rivest提出是一种参数可变的分组密码。参数表4-11w字长16/32/64分组长度为2wr轮数0~255b密钥字节数0~255记为RC5-w/r/b如RC5-32/12/16。基本运算异或⊕、模2^w加法、循环移位移位位数依赖于数据。子密钥生成生成t2r2个子密钥存入数组S。初始化常数Pw,Qw表4-12然后与密钥L混合生成最终S。加密两个w位寄存器A、BAAS[0],BBS[i]for i 1 to r:A((A⊕B)≪B)S[2i],B((B⊕A)≪A)S[2i1]解密为逆过程。特点算法简单适合软硬件实现。移位位数依赖于数据增强非线性。能抵抗线性和差分密码分析。注以上内容的理解和计算如果有任何错误希望各位读者和大佬指出改正非常感谢