在密码学中，**分组加密**（英語：），又称**分块加密**或**块密码**，是一种对称密钥算法。它将明文分成多个等长的模块（block），使用确定的算法和对称密钥对每组分别加密解密。分组加密是极其重要的加密协议组成，其中典型的如AES和3DES作为美国政府核定的标准加密算法，应用领域从电子邮件加密到银行交易转帐，非常广泛。

现代分组加密建立在迭代的思想上产生密文。其思想由克劳德·香农在他1949年的重要论文《保密系统的通信理论》（Communication Theory of Secrecy Systems）中提出，作为一种通过简单操作如替代和排列等以有效改善保密性的方法。 迭代产生的密文在每一轮加密中使用不同的**子密钥**，而子密钥生成自原始密钥。

DES加密在1977年由前美国国家标准局（今"美国国家标准与技术研究所"）颁布，是现代分组加密设计的基础思想。它同样也影响了密码分析的学术进展。

简述
--

分组加密包含两个成对的算法：加密算法*E*和解密算法*D*，两者互为反函数。每个算法有两个输入：长度为*n*位的组，和长度为*k*位的密钥；两组输入均生成*n*位输出。将两个算法看作函数，*K*表示长度为*k*的密钥（密钥长度），*P*表示长度为*n*的分组，*P*也被表示为明文，*C*表示密文，则满足：

E\_K(P) = C \; ; \quad E\_K^{-1}(C)=P
E\_K(P) := E(K,P): \{0,1\}^k \times \{0,1\}^n \rightarrow \{0,1\}^n,
对于任意密钥*K*，*EK(P)*是输入的组的一个置换函数，且可逆地落在{0,1}*n*区间。*E*的反函数（解密算法）定义为：

E\_K^{-1}(C) := D\_K(C) = D(K,C): \{0,1\}^k \times \{0,1\}^n \rightarrow \{0,1\}^n,
例如，一个分组加密算法使用一段 128 位的分组作为明文，相应输出 128 位的密文；而其转换则受加密算法中第二个输入的控制，也就是密钥*k*。解密算法类似，使用 128 位的密文和对应的密钥，得到原 128 位的明文。

* 每一个密钥实际上是选择了*n*位输入排列的(2^n)!种组合中的一种。

大多数的分组密码在在加密算法中会重复使用某一函数进行多轮运算，典型的轮数在4-32次之间，每一轮的函数*R*使用不同的子密钥*Ki*，由原密钥生成，作为输入：

M\_i = R\_{K\_i}(M\_{i-1})
其中M\_{0}是最初的明文，M\_{i}是第*i*轮加密后的密文。

历史
--

Lucifer（英语：）一般被认为是第一个现代分组密码，由IBM在1970年代基于霍斯特·費斯妥（）的工作完成。它的一个修改版本是数据加密标准，被美国政府纳入联邦资料处理标准，并于1976年正式发布，至今仍被广泛应用。

当时设计DES密码的最初目的是为了抵抗某些美国国家安全局（）和IBM知道的密码分析方法，直到1980年代末期，这种被称为差分密码分析的方法才被毕汉姆（）和萨莫尔（）独立重新发现。線性密碼分析（英语：）是另一种方法，在松井充（英语：）发布这种实验性的密码分析方法之前还并不知道。DES作为早期的分组密码，最早成为密码标准，由于在最初DES并未公布其实现细节，其S盒设计被怀疑包含后门，因此学界对其进行了大量的研究，提高了学界对分组密码的了解，客观上促进了密码学及密码分析的发展，引领了很多密码学和密码分析的研究。另一种分组密码标准高级加密标准（AES）被美国国家标准与技术研究院（NIST）采纳，即将逐渐取代DES目前的位置。

优缺点
---

设计原则
----

混淆與擴散（confusion and diffusion）是影响密码安全的主要因素。扩散的目的是让明文中的单个数字影响密文中的多个数字，从而使明文的统计特征在密文中消失，相当于明文的统计结构被扩散。例如，最简单的方法让明文中的一个数字影响密文中的*k*个数字，可以用：

c\_n = \sum^k\_{i=1}m\_{n+i}
扰乱是指让密钥与密文的统计信息之间的关系变得复杂，从而增加通过统计方法进行攻击的难度。扰乱可以通过各种代换算法实现。

设计安全的分组加密算法，需要考虑对现有密码分析方法的抵抗，如差分分析、线性分析等，还需要考虑密码安全强度的稳定性。此外，用软件实现的分组加密要保证每个组的长度适合软件编程（如8、16、32……），尽量避免位置换操作，以及使用加法、乘法、移位等处理器提供的标准指令；从硬件实现的角度，加密和解密要在同一个器件上都可以实现，即加密解密硬件实现的相似性。

工作模式
----

条目：分组密码工作模式

参考文献
----

1. ↑  Shannon, Claude.  (PDF). Bell System Technical Journal. 1949, **28** (4): 656–715  [2013-09-24]. （原始内容 (PDF)存档于2007-06-05）.
2. ↑  Matt Bishop.  First Edition. Addison-Wesley Professional. 2004. ISBN 0321247442 （英语）.  引文格式1维护：冗余文本 (link)
3. ↑  Eli Biham and Adi Shamir.. Journal of Cryptology. 1991, **4** (1). doi:10.1007/BF00630563 （英语）.
4. ↑  Mitsuru Matsui.. CRYPTO. 1994. doi:10.1007/3-540-48658-5\_1.
5. ↑  C.E. Shannon.. Bell System Technology Journal. 1949, **28**: 656-715 （英语）.
6. ↑  黄皓.  (PDF). 《计算机系统信息安全》课程讲义. 南京大学. 2010年9月28日  [2011-07-29]. （原始内容存档 (PDF)于2018-10-07） （中文）.
7. ↑  冯登国，吴文玲，张文涛.  第二版. 清华大学出版社. 2009年. ISBN 9787302204602 （中文）.

参见
--

* icon密码学主题

* 密码学
* 流密码


|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
分组密码 |
| --- |
|  |
| 常见加密算法 | 
* AES
* Blowfish
* DES（内部细节 · 3DES）
* Serpent
* Twofish

 |
|  |
| 次常见加密算法 | 
* Camellia
* CAST-128（英语：）
* IDEA
* RC2（英语：）
* RC5
* SEED（英语：）
* Skipjack（英语：）
* TEA
* XTEA

 |
|  |
| 其他加密算法 | 
* 3-Way（英语：）
* ABC（英语：）
* Akelarre（英语：）
* Anubis（英语：）
* ARIA（英语：）
* BaseKing（英语：）
* BassOmatic（英语：）
* BATON（英语：）
* BEAR and LION（英语：）
* CAST-256（英语：）
* CIKS-1（英语：）
* CIPHERUNICORN-A（英语：）
* CIPHERUNICORN-E（英语：）
* CLEFIA（英语：）
* CMEA（英语：）
* Cobra（英语：）
* COCONUT98（英语：）
* Crab（英语：）
* Cryptomeria/C2（英语：）
* CRYPTON（英语：）
* CS-Cipher（英语：）
* DEAL（英语：）
* DES-X（英语：）
* DFC（英语：）
* E2（英语：）
* FEAL（英语：）
* FEA-M（英语：）
* FROG（英语：）
* G-DES（英语：）
* GOST（英语：）
* Grand Cru（英语：）
* Hasty Pudding cipher（英语：）
* Hierocrypt（英语：）
* ICE（英语：）
* IDEA NXT（英语：）
* Intel Cascade Cipher（英语：）
* Iraqi（英语：）
* KASUMI（英语：）
* KeeLoq（英语：）
* KHAZAD（英语：）
* Khufu and Khafre（英语：）
* KN-Cipher（英语：）
* Ladder-DES（英语：）
* Libelle（英语：）
* LOKI97（英语：）
* LOKI89/91（英语：）
* Lucifer（英语：）
* M6（英语：）
* M8（英语：）
* MacGuffin（英语：）
* Madryga（英语：）
* MAGENTA（英语：）
* MARS（英语：）
* Mercy（英语：）
* MESH（英语：）
* MISTY1（英语：）
* MMB（英语：）
* MULTI2（英语：）
* MultiSwap（英语：）
* New Data Seal（英语：）
* NewDES（英语：）
* Nimbus（英语：）
* NOEKEON（英语：）
* NUSH（英语：）
* Q（英语：）
* RC6
* REDOC（英语：）
* Red Pike（英语：）
* S-1（英语：）
* SAFER（英语：）
* SAVILLE（英语：）
* SC2000（英语：）
* SHACAL（英语：）
* SHARK
* SM4
* Speck
* Spectr-H64（英语：）
* Square（英语：）
* SXAL/MBAL（英语：）
* Threefish（英语：）
* Treyfer（英语：）
* UES（英语：）
* Xenon（英语：）
* xmx（英语：）
* XXTEA
* Zodiac（英语：）

 |
|  |
| 密码设计 | 
* Feistel网络
* 密钥调度（英语：）
* 乘积密码
* S盒
* P盒
* 代换-置换网络
* 混淆與擴散
* 雪崩效应
* 密钥白化
* 密钥长度
* 块大小

 |
|  |
| 攻击（密码分析） | 
* 穷举攻击/蛮力攻击（EFF DES破解机）
* 中途相遇攻击（Biclique攻击（英语：） · 三子集中途相遇攻击（英语：））
* 线性密码分析（英语：）（堆积引理（英语：））
* 差分密码分析（不可能差分密码分析（英语：））
* 截断差分分析（英语：）
* 高阶差分分析（英语：）
* 差分-线性攻击（英语：）
* 区分攻击（英语：）（已知密钥区分攻击（英语：））
* 积分密码分析（英语：）
* 回力镖攻击（英语：）
* 模*n*密码分析（英语：）
* 相关密钥攻击（英语：）
* 滑动攻击（英语：）
* 回旋密码分析（英语：）
* 計時攻擊（英语：）
* XSL攻击（英语：）
* 插值攻擊
* Partitioning（英语：）
* 戴维斯攻击（英语：）
* 回弹攻击（英语：）
* 弱密钥（英语：）
* 肯德尔等级相关系数（英语：）
* 卡方检验
* 时间、内存、数据取舍攻击（英语：）

 |
|  |
| 密码标准 | 
* 高级加密标准（AES）评选过程
* CRYPTREC（英语：）
* NESSIE（英语：）

 |
|  |
| 工作方式 | 
* 初始向量
* 工作模式
* 填充

 |

 |

|  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

|  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
密码学 |
| --- |
|  |
| 
* 密码学历史
* 密码分析
* 密碼學主題列表

 |
|  |
| 
* 對稱密鑰加密
* 分组密码
* 流密码
* 公开密钥加密
* 密碼雜湊函數
* 訊息鑑別碼
* 随机数
* 隐写术

 |
|  |
| 
* 分类 分类
* 主题 主题
* 专题 专题

 |

 |

 |