第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三步生成。

具体步骤

  1. 初始置换IP
  2. 16轮迭代运算:每轮运算分为左移位、子密钥异或、S盒代替、P盒置换。
  3. 逆初始置换IP-1

DES的软件实现

  • DES算法可以在软件和硬件中实现,软件实现主要用于数据加密和密钥管理。它的算法过程包括初始置换、16轮迭代运算和逆初始置换三个主要部分。
高级数据加密标准(AES)

背景

  • AES是为了替代DES而提出的,主要由于DES密钥较短,难以抵抗现有的攻击。1997年,美国NIST向全球密码学界发出征集21世纪高级加密标准(AES)算法的公告,并成立了AES标准工作研究室。

算法描述

  • 明文分组固定:128比特
  • 密钥长度可变:128、192、256比特
  • 算法中间结果称为状态,状态可以用以字节为元素的矩阵阵列表示。
  • 变换步骤:
    • 字节代替:利用S盒进行非线性代换。
    • 行移位:对状态矩阵的各行进行循环左移。
    • 列混合:将状态矩阵的每一列混淆。
    • 轮密钥加:状态矩阵与子密钥矩阵的对应字节逐比特异或。
  • 子密钥生成:从初始密钥生成子密钥的过程,使用扩展密钥算法。