- 密码学教程
- 密码学 - 首页
- 密码学 - 起源
- 密码学 - 历史
- 密码学 - 原理
- 密码学 - 应用
- 密码学 - 优点与缺点
- 密码学 - 现代
- 密码学 - 传统密码
- 密码学 - 加密需求
- 密码学 - 双重强度加密
- 密码系统
- 密码系统
- 密码系统 - 组件
- 密码系统攻击
- 密码系统 - 彩虹表攻击
- 密码系统 - 字典攻击
- 密码系统 - 暴力破解攻击
- 密码系统 - 密码分析技术
- 密码学类型
- 密码系统 - 类型
- 公钥加密
- 现代对称密钥加密
- 密码学哈希函数
- 密钥管理
- 密码系统 - 密钥生成
- 密码系统 - 密钥存储
- 密码系统 - 密钥分发
- 密码系统 - 密钥吊销
- 分组密码
- 密码系统 - 流密码
- 密码学 - 分组密码
- 密码学 - Feistel分组密码
- 分组密码操作模式
- 分组密码操作模式
- 电子密码本(ECB)模式
- 密码分组链接(CBC)模式
- 密码反馈(CFB)模式
- 输出反馈(OFB)模式
- 计数器(CTR)模式
- 经典密码
- 密码学 - 反向密码
- 密码学 - 凯撒密码
- 密码学 - ROT13算法
- 密码学 - 换位密码
- 密码学 - 加密换位密码
- 密码学 - 解密换位密码
- 密码学 - 乘法密码
- 密码学 - 仿射密码
- 密码学 - 简单替换密码
- 密码学 - 简单替换密码加密
- 密码学 - 简单替换密码解密
- 密码学 - 维吉尼亚密码
- 密码学 - 实现维吉尼亚密码
- 现代密码
- Base64编码和解码
- 密码学 - XOR加密
- 替换技术
- 密码学 - 单表替换密码
- 密码学 - 破解单表替换密码
- 密码学 - 多表替换密码
- 密码学 - Playfair密码
- 密码学 - Hill密码
- 多表替换密码
- 密码学 - 一次性密码本
- 一次性密码本的实现
- 密码学 - 换位技术
- 密码学 - 栅栏密码
- 密码学 - 列移位密码
- 密码学 - 隐写术
- 对称算法
- 密码学 - 数据加密
- 密码学 - 加密算法
- 密码学 - 数据加密标准
- 密码学 - 三重DES
- 密码学 - 双重DES
- 高级加密标准
- 密码学 - AES结构
- 密码学 - AES变换函数
- 密码学 - 字节替换变换
- 密码学 - 行移位变换
- 密码学 - 列混合变换
- 密码学 - 轮密钥加变换
- 密码学 - AES密钥扩展算法
- 密码学 - Blowfish算法
- 密码学 - SHA算法
- 密码学 - RC4算法
- 密码学 - Camellia加密算法
- 密码学 - ChaCha20加密算法
- 密码学 - CAST5加密算法
- 密码学 - SEED加密算法
- 密码学 - SM4加密算法
- IDEA - 国际数据加密算法
- 公钥(非对称)密码学算法
- 密码学 - RSA算法
- 密码学 - RSA加密
- 密码学 - RSA解密
- 密码学 - 创建RSA密钥
- 密码学 - 破解RSA密码
- 密码学 - ECDSA算法
- 密码学 - DSA算法
- 密码学 - Diffie-Hellman算法
- 密码学中的数据完整性
- 密码学中的数据完整性
- 消息认证
- 密码学数字签名
- 公钥基础设施
- 散列
- MD5(消息摘要算法5)
- SHA-1(安全散列算法1)
- SHA-256(安全散列算法256位)
- SHA-512(安全散列算法512位)
- SHA-3(安全散列算法3)
- 散列密码
- Bcrypt散列模块
- 现代密码学
- 量子密码学
- 后量子密码学
- 密码学协议
- 密码学 - SSL/TLS协议
- 密码学 - SSH协议
- 密码学 - IPsec协议
- 密码学 - PGP协议
- 图像和文件加密
- 密码学 - 图像
- 密码学 - 文件
- 隐写术 - 图像
- 文件加密和解密
- 密码学 - 文件加密
- 密码学 - 文件解密
- 物联网中的密码学
- 物联网安全挑战、威胁和攻击
- 物联网安全的加密技术
- 物联网设备的通信协议
- 常用密码学技术
- 自定义构建密码学算法(混合密码学)
- 云密码学
- 量子密码学
- 密码学中的图像隐写术
- DNA密码学
- 密码学中的一次性密码(OTP)算法
- 区别
- 密码学 - MD5与SHA1
- 密码学 - RSA与DSA
- 密码学 - RSA与Diffie-Hellman
- 密码学与密码学
- 密码学 - 密码学与密码分析
- 密码学 - 经典与量子
- 密码学与隐写术
- 密码学与加密
- 密码学与网络安全
- 密码学 - 流密码与分组密码
- 密码学 - AES与DES密码
- 密码学 - 对称与非对称
- 密码学有用资源
- 密码学 - 快速指南
- 密码学 - 讨论
密码学 - AES密钥扩展算法
为了用于AES加密,可以使用AES(高级加密标准)密钥扩展技术将单个初始密钥扩展为一系列轮密钥。这些轮密钥在AES加密和解密的每一轮中都是必需的。
AES密钥扩展方法接收一个四字(16字节)密钥并返回一个包含44个字(176字节)的线性数组。这足以提供初始的轮密钥加步骤以及密码的十轮中的每一轮的四字轮密钥。
算法如何工作?
简单来说,AES密钥扩展算法的工作原理如下:
- 初始密钥 - 算法使用初始密钥。此密钥的长度可以从128位到256位不等,具体取决于所需的安全性级别。
- 轮常数 - 该方法使用一组轮常数,这些常数是在密钥扩展过程中使用的预定义值。
- 字大小 - 密钥将单词划分为单独的块。一个字通常包含32位。例如,从128位密钥创建四个32位字。
- 密钥调度 - “密钥调度”是指使用密钥扩展过程生成的一组轮密钥。此调度表中包含初始轮密钥以及从中派生的其他轮密钥。
- 扩展轮 - 算法在每一轮扩展中执行多项任务,例如:
- RotWord - 此函数旋转单词中的字节。
- SubWord - 使用预定的S盒应用替换操作。
- Rcon - 使用轮常数对单词进行异或运算。
- 轮密钥 - 在所有扩展轮之后仍然存在的轮密钥的顺序定义了密钥调度。每个轮密钥都用于AES加密或解密的相应轮中。
总的来说,密钥扩展方法通过确保AES加密和解密的每一轮都有一个唯一的轮密钥来提高安全性并防止密码攻击。
数学表示
让我们表示:
- K是第一个密钥,其长度为N位。
- 密钥的字数(Nk)是其总字数(例如,128位密钥为4,192位密钥为6,256位密钥为8)。
- Nr,AES轮标识符,对于AES-128为10,对于AES-192为12,对于AES-256为14。
密钥扩展过程
- 步骤1:首先创建轮密钥。在单词数组W中建立第一个单词K。迭代生成(Nr + 1)个轮密钥:
for i = N_k to (4 * (N_r + 1) - 1): if i mod N_k == 0: temp = RotWord(W[i-1]) ^ SubWord(W[i-1]) ^ Rcon(i / N_k) else: temp = W[i-1] ^ W[i-N_k] W[i] = temp
- 步骤2:完成轮密钥:循环结束后,数组W包含所有轮密钥。
符号
- RotWord(w) - 以循环方式旋转单词w的字节。
- SubWord(w) - 使用AES S盒替换单词w中的每个字节。
- Rcon(i) - 生成当前第i轮的轮常数,或Rcon。
计算轮常数Rcon
可以通过计算Rcon(i)=(RC[i],0,0,0)找到第i轮的轮常数,其中RC[i]是轮常数数组的第i个元素。
此表示提供了关于如何将原始密钥转换为用于AES加密和解密的一组轮密钥的数学描述。
AES密钥扩展示例
现在我们将讨论AES(高级加密标准)密钥扩展算法的一个示例。对于此示例,我们将使用AES-128,因此我们的初始密钥将为128位(16字节)。
第一个密钥可以被认为是一组字节:
2b 7e 15 16 28 ae d2 a6 ab f7 97 66 76 15 13 1
此密钥长128位。
让我们看看密钥扩展过程的每个步骤:
初始密钥
2b 7e 15 16 28 ae d2 a6 ab f7 97 66 76 15 13 1
扩展轮
我们首先将第一个密钥添加到我们的轮密钥列表中。然后,我们迭代生成更多轮密钥,直到达到总共11个。
第1轮
在RotWord、SubWord和XOR运算中,我们使用轮常数:
RotWord: 7e 15 16 2b SubWord: 63 cb e7 8c Rcon: 01 00 00 00 Round 1 Key: 63 cb e7 8c 09 cf 4f 3c 3b a9 82 fb 11 13 d8 2c
第2轮
前一轮密钥中的单词向后异或四个位置:
Round 2 Key: a0 fa fe 17 88 54 2c b1 23 a3 39 39 2a 6c 76 05
后续轮
以这种方式生成轮密钥,直到生成总共11个密钥。
最终轮密钥
Round 0 (Initial Key): 2b 7e 15 16 28 ae d2 a6 ab f7 97 66 76 15 13 1 Round 1: 63 cb e7 8c 09 cf 4f 3c 3b a9 82 fb 11 13 d8 2c Round 2: a0 fa fe 17 88 54 2c b1 23 a3 39 39 2a 6c 76 05 ... Round 10: 3d 47 0e 52 77 37 2e 10 1f 7e 0e 20 6a 51 7f a7
在此示例中,使用AES密钥扩展技术将原始密钥扩展为多个轮密钥。每个轮密钥都是使用轮常数以及XOR、RotWord和SubWord等运算从前一个轮密钥创建的。然后,这些轮密钥用于AES加密的每一轮中,以提高安全性并防止密码攻击。
总结
AES密钥扩展方法创建初始密钥和一组轮密钥,这些密钥是AES加密和解密所必需的。它使用轮常数在诸如RotWord、SubWord和XOR之类的运算中。安全性得到了提高,因为每个轮密钥都确保了每轮加密都有一个唯一的密钥。该过程增强了安全性并通过AES加密防止密码攻击。