密码学 - 第3章 分组密码
第3章:分组密码
分组密码的设计原则
基本原理
- 分组密码将消息进行等长分组(如每组消息长度为n比特),然后用同一个密钥对每个分组进行加密。分组密码与流密码都属于对称密码体制,但它们有很大差异:分组密码每次加密一个消息块,而流密码是逐比特加密。
设计原则
- 混淆:使密钥和密文之间的依赖关系尽可能模糊。
- 扩散:为了隐藏明文的统计特性,将一位明文的影响扩散到多位密文中。
- 乘积密码:将若干加密操作串联起来,对数据进行重复迭代操作。大多数分组密码都是乘积密码,由轮迭代组合而成。
结构
- 迭代结构
- Feistel网络:将明文平均分为左半部分L0和右半部分R0,经过多轮迭代完成整个操作过程。
- SP(substitution-permutation)网络:包含代替(S盒)和置换(P盒)两部分,典型代表为AES。
数据加密标准(DES)
DES设计思想
- DES是第一个公开的、完全说明细节的商业级现代算法,被世界公认。它由IBM公司在1971年完成Lucifer密码(64比特分组,128比特密钥)的基础上改进而成。1977年1月15日被批准为联邦标准,并设计推出DES芯片。
DES的工作模式
- 初始置换(IP):将64位明文的位置按照固定表进行置换,得到乱序的64位明文组。
- 16轮迭代运算:每轮运算包含左移、子密钥异或、S盒代替、P盒置换四个步骤。
- 逆初始置换(IP-1):初始置换的逆过程,确保加密和解密可以使用同一个算法。
- 子密钥生成:由初始密钥通过PC-1、循环左移位、PC-2三步生成。
具体步骤
- 初始置换IP
- 16轮迭代运算:每轮运算分为左移位、子密钥异或、S盒代替、P盒置换。
- 逆初始置换IP-1
DES的软件实现
- DES算法可以在软件和硬件中实现,软件实现主要用于数据加密和密钥管理。它的算法过程包括初始置换、16轮迭代运算和逆初始置换三个主要部分。
高级数据加密标准(AES)
背景
- AES是为了替代DES而提出的,主要由于DES密钥较短,难以抵抗现有的攻击。1997年,美国NIST向全球密码学界发出征集21世纪高级加密标准(AES)算法的公告,并成立了AES标准工作研究室。
算法描述
- 明文分组固定:128比特
- 密钥长度可变:128、192、256比特
- 算法中间结果称为状态,状态可以用以字节为元素的矩阵阵列表示。
- 变换步骤:
- 字节代替:利用S盒进行非线性代换。
- 行移位:对状态矩阵的各行进行循环左移。
- 列混合:将状态矩阵的每一列混淆。
- 轮密钥加:状态矩阵与子密钥矩阵的对应字节逐比特异或。
- 子密钥生成:从初始密钥生成子密钥的过程,使用扩展密钥算法。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Moyuan"s website!
