考研复习 Day 40 | 密码学--第四章 分组密码(中)

注:以下内容参考《新编密码学》范九伦 张雪锋 侯红霞 编著


4.3 高级数据加密标准------AES

随着DES被成功破解,美国国家标准技术研究所(NIST)于1997年发起征集DES替代算法------高级加密标准(AES)的活动。征集要求如下:

  1. 对称分组加密,可变密钥长度(128、192或256位),分组长度128位。

  2. 比三重DES更快,至少与三重DES一样安全。

  3. 可公开且全球免费使用。

  4. 至少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₁x+b₀

  • 多项式加法 :对应系数模2加(即异或)。
    例4.3 :23⊕64=47。

  • 多项式乘法 :模不可约多项式m(x)=x⁸+x⁴+x³+x+1。
    例4.4:23×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₁x+a₀。乘法模M(x)=x⁴+1,结果可表示为矩阵乘法。

4.3.2 AES的描述

AES是迭代分组密码,分组长度和密钥长度均可独立指定为128、192或256位,对应轮数为10、12、14。AES不使用Feistel结构,而是采用"替换---列混合---密钥加"的轮结构。

AES-128加密流程(分组128位,10轮):

  1. 初始密钥加(AddRoundkey)。

  2. 前9轮:字节代换(ByteSubs)→ 行移位(ShiftRows)→ 列混合(MixColumns)→ 密钥加。

  3. 第10轮:字节代换 → 行移位 → 密钥加(无列混合)。

  4. 输出密文。

内部函数

  • ByteSubs(S-盒):对State每个字节进行非线性替换,定义为y=Ax^(−1)+b,等价于查表4-9。该变换可逆。

等价于下图给出的AES算法中"S-盒"对x进行代换的结果

一个简单的验证如下:

  • ShiftRows:State矩阵第0行不变,第1行左移1字节,第2行左移2字节,第3行左移3字节。可逆。
  • MixColumns:对State的每一列左乘固定矩阵C(模x⁴+1):

    可逆,因为C(x)与x⁴+1互素。

  • AddRoundkey:State与轮密钥逐字节异或。

加密示例(十六进制输入):


经过S-盒、行移位、列混合、密钥加等操作,第一轮后128位中有76位发生改变,充分体现了雪崩效应。

4.3.3 AES的密钥生成

以128位种子密钥为例,给出产生11个轮密钥的方法。初始密钥 key 按照字节划分为 key0、key1、...、key15,因为密钥编排算法是以字为基础的(每个字包含32位),所以每一个轮密钥由4个字组成,11个轮密钥共包含 44 个字,表示为 w0,w1,......w43,轮密钥生成过程中,首先将密钥按矩阵的列进行分组,然后添加40个新列来进行扩充。如果前4个列(即由密钥给定的那些列)为 w0、x1、w2、w3,那么新列以递归的方式产生。具体算法步骤如下:。

步骤

1、初始化函数RConi(i=1,...,10):

2、对于i=0到3:

对于i=4到43:

其中:

  • RotWord:循环左移1字节

  • SubWord:对每个字节应用S-盒

  • RConi:轮常数(如RCon1=01000000, RCon2=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-19):

  • 64位明文分为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-11):

  • w:字长(16/32/64),分组长度为2w

  • r:轮数(0~255)

  • b:密钥字节数(0~255)

记为RC5-w/r/b,如RC5-32/12/16。

基本运算:异或⊕、模2^w加法+、循环移位(移位位数依赖于数据)。

子密钥生成

  • 生成t=2r+2个子密钥,存入数组S。

  • 初始化常数Pw,Qw(表4-12),然后与密钥L混合生成最终S。

加密(两个w位寄存器A、B):

A=A+S0,B=B+Si

for i = 1 to r:

A=((A⊕B)≪B)+S2i,B=((B⊕A)≪A)+S2i+1

解密为逆过程。

特点

  • 算法简单,适合软硬件实现。

  • 移位位数依赖于数据,增强非线性。

  • 能抵抗线性和差分密码分析。


注:以上内容的理解和计算,如果有任何错误,希望各位读者和大佬指出改正,非常感谢!!!

相关推荐
小马哥crazymxm5 小时前
Arxiv论文周选 (2026-W24)
论文阅读·人工智能·考研
如君愿7 小时前
考研复习 Day 52 | 密码学--第九章 密钥管理(下)
密码学·课后习题
酉鬼女又兒1 天前
零基础入门计算机网络网际层核心:IP数据报发送与转发完整流程、静态路由配置方法、路由环路成因与解决方案及历年考研经典例题深度解析
网络·tcp/ip·计算机网络·考研·职场和发展
酉鬼女又兒1 天前
零基础入门IPv4地址:从基本概念、分类编址、子网划分到无分类编址与应用规划全解
网络·网络协议·计算机网络·考研·职场和发展·分类·智能路由器
killerbasd2 天前
总结 6.13
考研
下午写HelloWorld3 天前
可信执行环境(Trusted Execution Environment, TEE)技术解析与应用2026
密码学·数据安全·可信计算技术·tee·隐私保护·可信执行环境
终端域名3 天前
密码学哈希函数:区块链 “不可篡改” 的核心数字指纹技术
区块链·密码学·哈希算法
国际学术会议-杨老师3 天前
2026年量子算法、密码学与数据分析国际会议(QACDA 2026)
数据分析·密码学·量子计算
05候补工程师3 天前
【408考研复习】数据结构核心笔记:字符串模式匹配与内部排序算法全解析
数据结构·经验分享·笔记·考研·算法·排序算法
乘~风4 天前
408考研-计组-1.2计算机系统层次结构笔记+1.3计算机性能指标
笔记·考研·408