分组密码
分组密码的基本方案如下所示 -
分组密码采用明文位块并生成密文位块,通常大小相同。块的大小在给定方案中是固定的。块大小的选择并不直接影响加密方案的强度。密码的强度取决于密钥长度。
块大小
尽管任何大小的块都是可接受的,但是在选择块的大小时要记住以下方面。
避免非常小的块大小- 假设块大小为 m 位。那么可能的明文比特组合就是 2 m。如果攻击者发现与某些先前发送的密文块相对应的明文块,则攻击者可以通过建立使用该加密密钥发送的明文/密文对的字典来发起一种“字典攻击”。较大的块大小使攻击变得更加困难,因为字典需要更大。
不要有非常大的块大小- 如果块大小非常大,密码的运行效率就会降低。此类明文在加密之前需要进行填充。
8 位的倍数- 优选的块大小是 8 的倍数,因为它很容易实现,因为大多数计算机处理器以 8 位的倍数处理数据。
分组密码中的填充
分组密码处理固定大小的块(例如 64 位)。明文的长度大多不是块大小的倍数。例如,150 位明文提供两个 64 位块,每个块以及第三个平衡 22 位块。最后一个比特块需要用冗余信息填充,以便最终块的长度等于该方案的块大小。在我们的示例中,剩余的 22 位需要添加额外的 42 个冗余位才能提供完整的块。向最后一个块添加位的过程称为填充。
过多的填充会导致系统效率低下。此外,如果填充始终使用相同的位来完成,则填充有时可能会导致系统不安全。
分组密码方案
有大量的分组密码方案正在使用中。其中许多是众所周知的。下面列出了最流行和最著名的分组密码。
数字加密标准 (DES) - 20 世纪 90 年代流行的分组密码。它现在被认为是一种“损坏的”分组密码,主要是因为它的密钥尺寸很小。
Triple DES - 这是基于重复 DES 应用的变体方案。它仍然是一种受人尊敬的分组密码,但与可用的新的更快的分组密码相比效率较低。
高级加密标准 (AES) - 这是一种相对较新的分组密码,基于赢得 AES 设计竞赛的加密算法Rijndael 。
IDEA - 它是一种足够强大的分组密码,块大小为 64,密钥大小为 128 位。许多应用程序使用 IDEA 加密,包括早期版本的 Pretty Good Privacy (PGP) 协议。由于专利问题,IDEA方案的使用受到限制。
Twofish - 这种分组密码方案使用 128 位的块大小和可变长度的密钥。它是 AES 决赛入围者之一。它基于早期的块密码 Blowfish,块大小为 64 位。
Serpent - 一种分组密码,块大小为 128 位,密钥长度为 128、192 或 256 位,也是 AES 竞赛决赛入围者。与其他分组密码相比,它速度较慢,但设计更安全。
在接下来的部分中,我们将首先讨论分组密码模型,然后讨论 DES 和 AES,这两种最有影响力的现代分组密码。