AES,Advanced Encryption Standard,高级加密标准,本质上是一个精简版的Rijndael(主要砍掉了192、256 bits的块大小,只能用128-bit块分组)。具体的历史就不说了,这段话里两个超链接都有描述。
AES对称密码算法的内部结构有很强的数学结构,要想了解AES算法,首先要了解一些必需的数学背景知识。
当然,像矩阵乘法什么的本文就不会讲了,毕竟大学里的公共基础课程之一。本文的重点不是讨论数学,所以本篇将侧重于数学理论在AES中的应用,而不会关注于定理公式的推导证明。这也不是专业的密码学教材,不会涉及AES的安全性证明、已知攻击等。
伽罗瓦域
AES算法涉及的最核心的数学知识就是伽罗瓦域。但在此之前先介绍群(Group)的概念。
群指的是元素集合和内任意两个元素的联合操作的集合。
群具有以下特征:
1. 群操作 # 是封闭的。即对所有,恒成立。
2. 群操作是可结合的。即对所有,恒成立。
3. 存在一个元素,对于所有都有。此元素被称为中性元(或单位元)。
4. 对于每一个,都存在一个元素使得,这个称为的逆元。
5. 如果在满足以上特征的基础上,对于所有的都有,则称此群为阿贝尔群(或交换群)。
例如连续整数集合
与操作加法模
组成了一个群:中性元为0,每个元素的逆元都存在:1 + (m-1) = 0 mod m 2 + (m-2) = 0 mod m ............
但连续整数集合
与操作乘法模
不一定能组成一个群,因为不一定每一个元素都存在逆元。
要使一个结构能同时支持加减乘除四种基本运算,我们需要一个域(Field):
域是具有以下特征的元素的集合:
1.中所有的元素形成一个加法交换群,对应的群操作为,中性元为。
2.中除了以外的所有元素构成一个乘法交换群,对应的群操作为,中性元为