AES的数学基础
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
AES产生过程
1997年4月15日,美国ANSI发起征集AES(advanced encryption standard)的活动,并为此成立了AES工作 小组。此次活动的目的是确定一个非保密的、可以公开 技术细节的、全球免费使用的分组密码算法,以作为新 的数据加密标准。 1997年9月12日,美国联邦登记处公布了正式征集AES候 选算法的通告。 对AES的基本要求是: 比三重DES快、 至少与三重DES一样安全、 数据分组长度为128比特、密钥长度为128/192/256比 特。
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
背景资料:DES
1968~1974,IBM研制 1976 被定为联邦标准 并命名为DES(Data Encryption Standard) 1981、1987、1993 分别被NIST再次认证
计算机科学与技术学院 计算机科学与技术学院
8 8)上的多项式运算 字运算:系数在GF(2 信息安全技术
字:4个字节构成的向量 。 4个字节构成的向量可以表示为系数在GF(28)上的 次数小于4的多项式。
信息安全技术
• 密钥长度问题
DES的安全强度
• 56-bit 密钥有256 = 72,057,584,037,927,936 ≈ 7.2亿亿 之多 • 技术进步使穷举搜索成为可能
– 1997年1月28日,RSA公司发起破译RC4、RC5、MD2、 MD5,以及DES的活动,破译DES奖励10000美金。明 文是:Strong cryptography makes the world a safer place. 结果仅搜索了24.6%的密钥空间便得到结果,耗 时96天。 – 1998年在一台专用机上(EFF)只要几天时间即可 – 1999年在超级计算机上只要22小时!
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
加法运算
在多项式表示中,GF(28)上两个元素的和仍然 是一个次数不超过7的多项式,其系数等于两个 元素对应系数的模2加(比特异或)。 由于每个元素的加法逆元等于自己,所以减法 和加法相同。
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
计算机科学与技术学院 计算机科学与技术学院
3 3)的多项式表示 有限域GF(2 信息安全技术
GF(23): {000,001,010,011,100,101,110,111}
计算机科学与技术学院 计算机科学与技术学院
3 3)的本原多项式的根表示 有限域GF(2 信息安全技术
α定义为本原多项式 m(x)=x3+x+1的根,即 α3+ α +1=0 和α3 =α +1
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
练习
计算GF(28)上的两个元素10010010和01100010的 乘积。
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
0 0 100 125 101 150 102 126 43 175 44 127 204 151 83 68 103 1 0 4 194 47 143 221 110 121 88 215 12 187 178 57 17 74 2 25 224 29 138 219 253 72 10 168 117 246 62 135 132 146 237 3 1 14 181 5 189 48 195 21 80 122 111 90 144 60 217 222 4 50 52 249 33 54 191 163 155 244 235 23 251 97 65 35 197 5 2 141 185 15 208 6 182 159 234 22 196 96 190 162 32 49
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
AES产生过程
1998年8月12日,在首届AES候选会议(first AES candidate conference)上公布了AES的15个 候选算法,任由全世界各机构和个人攻击和评论。 1999年3月,在第2届AES候选会议(second AES candidate conference)上经过对全球各密码机构 和个人对候选算法分析结果的讨论,从15个候选 算法中选出了5个。 这5个是RC6、Rijndael、SERPENT、Twofish 和MARS 2000年10月2日,NIST宣布Rijndael作为新的 AES。至此,经过3年多的讨论,Rijndael终于脱 颖而出。
7 255 164 38 204 215 127 240 236 194 192 126 175 9 145 140 253
8 26 247 106 79 98 129 11 47 93 91 130 23466 152 29 113 231 237 157 37 45 227 138 36
信息安全技术
例题
例题. 计算GF(28)上的两个元素10010001和 00100010的乘积。 答案:10000100
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
x乘法
GF(28)上还定义了一个运算,称之为x乘法, 其定义为
x·b(x)= b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0 x(mod m(x))
GF(23): {0, α0, α1, α2, α3, α4, α5, α6}
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
8) 有限域GF(28
有限域GF(28)表示特征为2的具有28元素的有限域。 这里表示成系数在{0,1}中的多项式的集合: {b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0} 这样任意的8位二进制数就和有限域中的一个多 项式建立了一一对应的关系。
8 8)上的运算 字节运算:有限域GF(2 信息安全技术
1.有限域GF(23) 2.有限域GF(28) 3.有限域GF(28)的加法运算 4.有限域GF(28)的乘法运算
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
3) 有限域GF(23
GF(23)表示域中有23个元素,除0之外的7个元素由 本原多项式构造。 假定其本原多项式为: m(x)=x3+x+1
乘法运算
要计算GF(28)上的乘法,必须先确定一个GF(2) 上的8次不可约多项式; GF(28)上两个元素的乘积就是这两个多项式的 模乘(以这个8次不可约多项式为模)。 在Rijndael密码中,这个8次不可约多项式确定 为 m(x)= x8+x4+x3+x+1 它的十六进制表示为‘11B’。
计算机科学与技术学院 计算机科学与技术学院
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
AES设计思想
Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击。 ② 在多个平台上速度快,编码紧凑。 ③ 设计简单。
计算机科学与技术学院 计算机科学与技术学院
信息安全技术 字节远算 字运算
AES算法的数学基础
计算机科学与技术学院 计算机科学与技术学院
0 1 2 3 4 5 6 7 8 9 a b c d e f
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
AES alogtable
0 1 2 3 4 5 6 7 8 9 a b c d e f
0 1 95 229 83 76 131 181 254 251 195 159 155 252 69 18 57
a 114 6 217 104 241 179 39 147 50 44 188 111 119 62 133 108
b 150 10 112 184 8 206 105 174 86 116 223 177 153 66 148 180
计算机科学与技术学院 计算机科学与技术学院
c 161 30 144 211 24 73 187 233 250 156 122 200 176 198 167 199
信息安全技术
AES算法的数学基础
主讲人:裴士辉 e_mail: shihui_pei @
计算机科学与技术学院 计算机科学与技术学院
信息安全技术
背景资料:DES
1973年NBS国家标准局 (NIST国家标准与技术研究所) 算法要求: ①算法公开,安全性依赖于密钥而不是算法 ②算法应能测试和验证 ③不同的设备可以相互通信
4 17 216 55 20 224 107 16 135 210 71 172 232 165 121 41 132
5 51 115 89 60 59 189 48 146 109 201 239 35 244 139 123 151
6 85 149 235 68 77 220 80 173 183 64 42 101 7 134 141 162
d 248 34 171 110 40 219 214 32 21 191 142 67 203 81 242 82
e 19 102 230 178 120 118 97 96 63 218 137 197 70 243 13 246
f 53 170 49 205 136 154 163 160 65 117 128 84 202 14 23 1
1 3 225 52 245 212 158 196 25 22 94 186 182 31 207 54 75
2 5 56 92 4 103 185 87 43 58 226 213 193 33 74 90 221
数据结构算法:AES算法的数学基础
1.GF(2)域上的多项式 在有限域GF(28)中的元素操作运算可采⽤⼏种不同的⽅法来表⽰,AES算法主要选择传统的多项式表⽰法进⾏的。
因为不同的表⽰对GF(28)的运算复杂度是有影响的。
⼀个由b7b6b5b4b3b2b1b0组成的字节b可表⽰成系数为[0, 1]的⼆进制多项式 b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0 例如:⼗六进制数“6B”对应的⼆进数为01101011,作为⼀个字节对应于多项式为: x6 + x5 + x3 + x + 1 1.1.多项式加法 在GF(28)上的加法定义为⼆进制多项式的加法,其系数满⾜模2加(即异或)。
例如:“6B”和“71”的和为:6B + 71 = 1A,或采⽤多项式记法: (x6 + x5 + x3 + x + 1) + (x6 + x5 + x4 +1) = x4 + x3 + x 显然,多项式加法与以字节为单位的⽐特异或结果是⼀致的。
1.2.多项式的乘法 在GF(28)上的乘法(⽤符节“.”表⽰)定义为⼆进制多项式的乘积以8次不可约多项式为模的积,此8次不可约多项式为: m(x) = x8 + x4 + x3 + x + 1 ⼗六进制为“11B”,⼆进制表⽰为100011011,此乘法在GF(28)上满⾜结合律,且有⼀个本原元(“01”),例如: (x6 + x5 + x3 + x + 1)·(x6 + x5 + x4 + 1) = x12 + x8 + x6 + x5 + x4 + x + 1(mod m(x)) = x7 + x6 + x + 1 或者:6B·71 = C3 显⽽易见,模的结果是⼀个低于8阶的多项式,与加法不同的是,乘法并不是在字节上的简单运算。
1.3.函数xtime() 函数xtime()定义为GF(28)上的x·b(x),若b7 = 0,则字节b左移⼀位;若b7 = 1,则字节b左移⼀位,再异或“1B”。
aes加密原理
aes加密原理AES(AdvancedEncryptionStandard)是一种对称加密算法,由美国国家标准技术研究所(NIST)发布。
AES加密算法是2001年美国国家标准技术研究所(NIST)颁布的一种数据加密标准,取代了DES(Data Encryption Standard)加密标准。
AES被广泛地应用在电子数据传输安全领域,特别是在银行、金融领域中得到了广泛的应用。
AES加密算法是一种分组密码,采用对称加密方式,即加密和解密使用相同的密钥。
AES加密算法可以使用128位(16字节)、192位(24字节)或256位(32字节)密钥。
它采用128位(16字节)分组来处理输入的明文数据,并将其分成4 * 4的字节矩阵。
AES加密算法基于一种叫做“置换-混淆”的基本原理,它在处理加密数据时,先将明文置换(变换),然后进行混淆(也就是扩散),最后再进行置换(变换)。
AES加密算法的安全性有很多方面的体现,它采用128位(16字节)、192位(24字节)或256位(32字节)密钥,有效提高了安全性。
AES加密算法是一种块加密方案,将明文以比较小的块进行处理,采用“替换置换”工作模式,使用S-box对明文进行替换,利用置换矩阵对明文进行筛选,大大增加了破解难度。
此外,AES使用相同的密钥对数据进行加解密,其算法设计上、系统实现都非常简单,它传输的安全性、安全可控性也更强。
AES加密安全性可靠,在电子数据传输安全领域有着广泛的应用,也被广泛应用于金融领域,但同时也存在一些安全隐患。
主要表现在,AES加密算法安全性受到各种攻击的影响,包括侦测攻击、中间人攻击和量子计算机攻击等。
侦测攻击是指在加密通信时,窃取到的信息及控制信息,从而进行攻击的一种技术;中间人攻击是指发起攻击的第三方拦截消息,窃取双方之间的明文,从而实现访问的一种攻击;量子计算机攻击是指利用量子计算机技术,破坏AES加密算法的安全性,实施访问的一种攻击方式。
密码学第6章 AES
有限域GF(28)
重复多次使用x乘,并根据分配律将中间 结果相加, 任 意 乘 法 都 可 以 用 xtime实 现 。 例 如 计 算 57 13=fe 57 01 01010111 00000001 01010111 57 57 02 01010111 00000010 xtime(57) 10101110 ae 57 04 01010111 00000100 xtime(ae) 01000111 47 57 08 01010111 00001000 xtime(47) 10001110 8e 57 10 01010111 00010000 xtime(8e) 00000111 07 57 20 01010111 00100000 xtime(07) 00001110 0e 57 40 01010111 01000000 xtime(0e) 00011100 1c 57 80 01010111 10000000 xtime(1c) 00111000 38
小于8的多项式表示;也可以用数字表示 加法:多项式对应项系数模2加 乘法:多项式乘法再模m(x)
系数在GF(28)中的多项式
字:系数在GF(28)中并且次数小于4的多项式
设ai,bi GF(28), 一个字可表示为 a(x)a3x3 a2x2 a1xa0 b(x)b3x3 b2x2 b1xb0
= (b3 x 4 b2 x 3 b1 x 2 b0 x ) m o d ( x 4 1) = b2 x 3 b1 x 2 b0 x b3 对 G F(28 )上 的 多 项 式 的 x乘 等 价 于 按 字 节 循 环 左 移 !
AES的输入输出和中间状态
AES加密算法原理
AES加密算法原理AES(Advanced Encryption Standard)是一种对称加密算法,它是美国国家标准和技术研究院(NIST)于2001年发布的,用于替代早期的DES算法。
AES算法的原理基于三个基本操作:字节替换(SubBytes)、行移位(ShiftRows)和列混淆(MixColumns),以及轮密钥加(AddRoundKey)操作。
这些操作在多个轮次中重复应用,以达到高层次的安全性。
首先,AES算法将输入数据按照一定的规则划分为4x4的状态矩阵作为初始状态。
矩阵中的每个元素是一个字节,共有16个字节。
接下来,对初始状态进行一系列的变换操作。
首先,通过字节替换操作(SubBytes),将矩阵中的每个字节替换为相应的S盒中的值。
这个S 盒是一个预定义的变换表,通过替换操作混淆数据。
然后,通过行移位操作(ShiftRows),对矩阵的每一行进行循环移位。
第一行保持不变,第二行向左循环移动一个字节,第三行向左循环移动两个字节,第四行向左循环移动三个字节。
这个操作使得数据分布在整个状态矩阵中,增加了非线性性。
接着,通过列混淆操作(MixColumns),对矩阵的每一列进行线性变换。
这个操作通过乘以一个固定的矩阵,将矩阵的每一列映射为新的列。
这个操作进一步混淆了数据,增加了算法的安全性。
最后,通过轮密钥加操作(AddRoundKey),将一个轮次密钥与状态矩阵进行按位异或运算。
轮密钥是由主密钥派生的子密钥,每个字节与矩阵中的相应位置进行异或运算,进一步改变了矩阵的值。
重复以上四个步骤若干轮次(轮数取决于密钥的长度),直到达到最后一轮。
最后一轮没有列混淆操作,仅包括字节替换、行移位和轮密钥加操作。
AES算法的安全性基于其多轮次的结构以及字节替换、行移位和列混淆等操作的非线性特性。
这些操作的组合使得AES算法对各种攻击方法具有较高的安全性,使得破解AES加密过程变得困难。
总体而言,AES算法的原理是通过一系列的字节替换、行移位、列混淆和轮密钥加操作,对输入数据进行多轮次的变换,从而实现数据的加密过程。
第7讲AES算法描述
第7讲AES算法描述
AES算法,即Advanced Encryption Standard,中文名为“高级加密
标准”,是目前使用最广泛的对称加密算法。
AES算法是一种使用更大的
密钥替代 DES 的密码体系,它是美国联邦政府采用的一种区块加密标准,也是国际通用的密码体系。
AES算法以块操作式加密技术为基础,它使用128、192、256比特的
长度的密钥对数据进行加密,并且对每个块采用不同的加密方式,使用的
加密方法是基于Rijndael块操作算法,该算法具有更强的安全性,比
DES或其他对称加密算法安全性更强,且速度更快。
AES算法将秘钥分为4个级别,每个级别128比特,一共有10个轮,每次轮数更新,使用不同的密钥。
AES采用行变换和列变换的加密算法,
它在加密的过程中会将明文也就是原文按照4*4的矩阵大小进行分割,分
割完成之后使用相应的密钥进行加密,每个明文块在加密前需要进行行变
换和列变换,以达到混淆加密的效果。
经过密钥的增强以及对明文的变换,使得AES更具有安全性,抵抗更强的攻击,同时,AES算法采用的是128
位的密钥,密钥长度更长,安全性更强。
AES算法在加密的过程中,也会将密钥进行变换,每次变换的密钥长
度为128位,这样能够更好的保证AES的安全性,密码破解也就难于实现。
AES算法的数学理论基础分析
AES算法的数学理论基础分析AES(高级加密标准)算法是一种对称加密算法,它是目前最广泛使用的加密算法之一、它基于复杂的数学运算和理论,确保了在合理的时间内无法破解加密的数据。
以下是对AES算法的数学理论基础进行的分析。
1. 替代(Substitution): AES算法的第一步是通过S盒进行字节替代。
S盒是一个固定的字节替换表,由非线性变换构成。
通过将输入字节映射到S盒中的对应字节,混淆了输入数据的字节分布。
这种替代运算是通过复杂的代数方程实现的,并经过深入的数学分析和推导,确保了S 盒的性质具有良好的扩散和混淆性。
2. 置换(Permutation): 在替代步骤之后,AES还进行了行和列的置换。
行置换通过以特定的位移移动每一行中的字节,对输入数据进行重新排列。
列置换则涉及将每一列的字节与固定矩阵进行线性变换。
这些行和列置换操作旨在增加密码算法的扩散性和复杂性,通过混淆和扩散确保了密钥和明文之间的高度关联性。
3. 扩展(Expansion): AES算法使用了密钥扩展机制,根据输入密钥生成多个轮密钥,用于每一轮的轮函数。
轮密钥的生成涉及线性变换和非线性变换,通过使用密钥扩展算法生成的轮密钥能够尽可能地隐藏原始密钥的信息,并为每一轮提供不同的子密钥。
4. 混合(MixColumns): AES算法的一部分是MixColumns操作,它是一个字节级别的线性变换。
通过与固定多项式的有限域乘法进行混合,MixColumns操作改变了每个列的字节,并增加了密码算法的复杂性和扩散效果。
5. 轮函数(Round Function): AES算法的核心是轮函数,它应用于每一轮的加密和解密过程中。
轮函数包含了替代、置换、混合和轮密钥添加的组合操作。
通过反复使用轮函数,AES算法对数据进行多次迭代,从而增加了加密的复杂性和安全性。
以上是对AES算法的数学理论基础进行的分析。
AES算法通过结合替代、置换、扩展、混合和轮函数等操作,确保加密数据的安全性和隐私性。
AES算法的数学理论基础分析
AES算法的数学理论基础分析AES (Advanced Encryption Standard)是一种对称加密算法,它基于数学理论和算法设计来保证数据安全性。
下面将详细分析AES算法的数学理论基础。
1. 替代置换:AES使用了替代置换(S-Box)和逆替代置换(S-Box)。
这是通过有限域上的矩阵运算实现的。
有限域是一个特殊的数学结构,它定义了一组有限元素的运算规则。
在AES中,有限域GF(2^8)被用于字节代换(S-Box)和逆字节代换(S-Box)。
这些置换操作是AES算法中不可或缺的数学基础。
2.混淆操作:AES使用了混淆操作来提高数据的扩散性。
混淆操作包括行移位操作和列混淆操作。
行移位操作将每个字节进行循环位移,列混淆操作使用矩阵乘法来对每一列进行混淆。
这些操作通过使数据在变换后更加随机地分布在整个加密数据块中,增强了AES算法的安全性。
3.密钥扩展:AES使用密钥扩展算法来生成轮密钥。
密钥扩展算法使用有限域上的矩阵运算和置换操作来根据初始密钥生成一系列轮密钥。
这些轮密钥用于对加密数据块进行轮数次的加密和解密操作。
密钥扩展算法的设计基于置换运算和有限域上的数学原理。
4. 线性和非线性运算:AES算法中的运算涉及到线性和非线性操作。
线性运算包括矩阵乘法和位运算等,这些运算是在有限域上定义的。
非线性运算包括字节代换(S-Box)和逆字节代换(S-Box),这些运算通过表格查找实现非线性变换。
通过结合线性和非线性运算,AES实现了强大的加密变换。
5.约束条件和安全性证明:AES算法的设计考虑了多个约束条件和安全性要求。
AES的安全性要求包括对不同类型的攻击(如差分攻击、线性攻击、相关攻击等)的抵抗能力。
AES算法的设计者通过数学证明和分析,证明了算法在满足这些要求时的安全性。
这些证明基于密码学的数学理论和概率论等相关领域的理论。
综上所述,AES算法的数学理论基础包括有限域理论、矩阵运算、置换操作、线性和非线性运算等。
AES算法详解
AES算法详解AES算法简介 AES的全称是Advanced Encryption Standard,意思是⾼级加密标准。
AES密码分组⼤⼩和密钥⼤⼩可以为128位、192位和256位。
然⽽AES只要求分组⼤⼩为128位。
本⽂只对分组⼤⼩128位,密钥长度也为128位的Rijndael算法进⾏分析。
密钥长度为192位和256位的处理⽅式和128位的处理⽅式类似,只不过密钥长度每增加64位,算法的循环次数就增加2轮,128位循环10轮、192位循环12轮、256位循环14轮。
AES算法使⽤逻辑就是:发送⽅将要发送的明⽂数据X使⽤秘钥K进⾏AES加密后会得到密⽂Y,将密⽂进⾏⽹络传输,接受⽅在收到密⽂Y后使⽤秘钥K进⾏AES解密后技能得到明⽂X,这样即使密⽂Y在⽹络上传输时被截获了,没有秘钥也难以破解其真实意思。
AES算法相关数学知识 在AES算法中的MixColumn层中会⽤到伽罗⽡域中的乘法运算,⽽伽罗⽡域的运算涉及⼀些数学知识如下:素域: 有限域有时也称伽罗⽡域,它指的是由有限个元素组成的集合,在这个集合内可以执⾏加、减、乘和逆运算。
⽽在密码编码学中,我们只研究拥有有限个元素的域,也就是有限域。
域中包含元素的个数称为域的阶。
只有当m是⼀个素数幂时,即m=p n(其中n为正整数是p的次数,p为素数),阶为m的域才存在。
p称为这个有限域的特征。
也就是说,有限域中元素的个数可以是11(p=11是⼀个素数,n=1)、可以是81(p=3是⼀个素数,n=4)、也可以是256(p=2是⼀个素数,n=8).....但有限域的中不可能拥有12个元素,因为12=2·2·3,因此12也不是⼀个素数幂。
有限域中最直观的例⼦就是阶为素数的域,即n=1的域。
的元素可以⽤整数0、1、...、p-1l来表⽰。
域的两种操作就是模整数加法和整数乘法模p。
加上p是⼀个素数,整数环Z表⽰为GF(p),也成为拥有素数个元素的素数域或者伽罗⽡域。
简述aes基本原理
AES基本原理AES(Advanced Encryption Standard)是一种对称加密算法,用于保护敏感数据的机密性。
它是目前最常用的加密算法之一,被广泛应用于各种领域,包括网络通信、金融交易和数据存储等。
1. 对称加密算法简介对称加密算法是一种使用相同的密钥进行加密和解密的算法。
在加密过程中,明文通过一个数学函数(即加密算法)和一个秘钥进行变换,生成密文。
而在解密过程中,通过相同的数学函数和相同的秘钥对密文进行变换,得到原始明文。
对称加密算法具有高效性能和较低的计算成本,因此被广泛应用。
然而,由于加解密使用相同的秘钥,秘钥管理成为一个重要问题。
2. AES历史背景在1997年之前,美国政府一直采用DES(Data Encryption Standard)作为标准对称加密算法。
然而,在计算能力不断提升的情况下,DES逐渐暴露出安全性不足的问题。
为了替代DES,并提供更高级别的安全性能,美国国家标准技术研究所(NIST)在1997年发起了一个公开的竞赛,邀请全球加密专家参与设计新的加密算法。
由比利时密码学家Joan Daemen和Vincent Rijmen设计的Rijndael算法被选为AES。
2001年,AES正式成为美国政府采用的标准对称加密算法,并逐渐在全球范围内得到广泛应用。
3. AES基本原理AES是一种分组密码(block cipher),它将明文和密钥都划分为固定长度的块,并通过多轮迭代来实现加密和解密过程。
AES算法支持128位、192位和256位三种不同长度的秘钥。
3.1 初始轮AES算法开始时会对输入的明文进行一次初始处理。
将明文划分为若干个固定长度(128位)的块。
将每个块与一个固定长度(128位)的秘钥进行异或运算。
3.2 轮函数在每一轮中,AES算法使用一个称为”轮函数”(round function)的操作来处理上一轮输出或初始输入。
该操作包括四个步骤:字节代换、行移位、列混淆和轮秘钥加。
AES加密算法的原理详解
AES加密算法的原理详解AES(Advanced Encryption Standard,高级加密标准)是一种对称密钥加密算法,由美国国家标准与技术研究院(NIST)通过全球范围的评选过程确定为对称密钥加密的标准。
1.输入:AES接受一个128位的明文输入块(分组)。
如果明文不够128位,需要进行填充,填充规则可以是PKCS或者其他标准。
2.初始密钥扩展:AES使用一个初始密钥,该初始密钥以128位为基础,根据输入的密钥长度(可以是128位、192位或256位)生成相关的轮密钥。
3.轮密钥加:将初始明文块与第一个轮密钥进行异或运算。
4. 轮变换(SubBytes变换、ShiftRows变换、MixColumns变换和AddRoundKey变换):AES将经过轮密钥加的明文输入进行一系列的变换操作。
- SubBytes变换:将明文输入块中的每个字节替换为S-盒中对应的字节值,S-盒由一个有限域上的代数运算表构成。
- ShiftRows变换:对明文输入块的每一行进行循环左移,第一行不变,第二行左移一位,第三行左移两位,第四行左移三位。
- MixColumns变换:对明文输入块的每一列进行混淆,使用固定的矩阵乘法进行计算。
- AddRoundKey变换:将混淆后的明文输入块与对应轮密钥进行异或运算。
5. 轮重复:AES重复10轮(对于128位密钥)或14轮(对于192位和256位密钥),每一轮都包括轮密钥加、SubBytes变换、ShiftRows 变换、MixColumns变换和AddRoundKey变换。
6. 最后一轮:最后一轮的MixColumns变换不再执行,而是进行轮密钥加、SubBytes变换、ShiftRows变换和AddRoundKey变换。
7.输出:经过重复轮变换后,最后一轮的输出就是加密后的密文。
AES的优点和特点如下:-安全性:AES是一种非常安全的加密算法,由于其设计中包含了多轮重复的变换操作,使得破解AES算法变得非常困难。
