
- 密码学教程
- 密码学 - 首页
- 密码学 - 起源
- 密码学 - 历史
- 密码学 - 原理
- 密码学 - 应用
- 密码学 - 优点与缺点
- 密码学 - 现代
- 密码学 - 传统密码
- 密码学 - 加密的需求
- 密码学 - 双重强度加密
- 密码系统
- 密码系统
- 密码系统 - 组件
- 密码系统的攻击
- 密码系统 - 彩虹表攻击
- 密码系统 - 字典攻击
- 密码系统 - 暴力攻击
- 密码系统 - 密码分析技术
- 密码学的类型
- 密码系统 - 类型
- 公钥加密
- 现代对称密钥加密
- 密码学散列函数
- 密钥管理
- 密码系统 - 密钥生成
- 密码系统 - 密钥存储
- 密码系统 - 密钥分发
- 密码系统 - 密钥吊销
- 分组密码
- 密码系统 - 流密码
- 密码学 - 分组密码
- 密码学 - Feistel 分组密码
- 分组密码的工作模式
- 分组密码的工作模式
- 电子密码本 (ECB) 模式
- 密码分组链接 (CBC) 模式
- 密码反馈 (CFB) 模式
- 输出反馈 (OFB) 模式
- 计数器 (CTR) 模式
- 经典密码
- 密码学 - 反向密码
- 密码学 - 凯撒密码
- 密码学 - ROT13 算法
- 密码学 - 换位密码
- 密码学 - 加密换位密码
- 密码学 - 解密换位密码
- 密码学 - 乘法密码
- 密码学 - 仿射密码
- 密码学 - 简单替换密码
- 密码学 - 简单替换密码的加密
- 密码学 - 简单替换密码的解密
- 密码学 - 维吉尼亚密码
- 密码学 - 维吉尼亚密码的实现
- 现代密码
- Base64 编码和解码
- 密码学 - XOR 加密
- 替换技术
- 密码学 - 单表替换密码
- 密码学 - 单表替换密码的破解
- 密码学 - 多表替换密码
- 密码学 - Playfair 密码
- 密码学 - 希尔密码
- 多表替换密码
- 密码学 - 一次性密码本
- 一次性密码本的实现
- 密码学 - 换位技术
- 密码学 - 栅栏密码
- 密码学 - 列移位密码
- 密码学 - 密码隐写术
- 对称算法
- 密码学 - 数据加密
- 密码学 - 加密算法
- 密码学 - 数据加密标准
- 密码学 - 三重 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 密码
- 密码学 - 对称与非对称
- 密码学有用资源
- 密码学 - 快速指南
- 密码学 - 讨论
密码学 - 分组密码
分组密码和流密码是加密技术根据输入处理方式划分的两大类。分组密码通过对由 b 位组成的固定大小的输入块进行操作,生成大小相同的密文。当输入超过 b 位时,它会被分解成较小的块。分组密码使用各种操作模式来处理不同的用例。

分组大小
在选择分组大小时,即使任何大小的分组都是可能的,也要牢记以下因素:
避免极小的分组大小 - 假设分组大小为 m 位。然后有 2m 种可能的明文位组合。如果攻击者发现与某些先前发送的密文块匹配的明文块,他们可以通过创建已发送的具有该加密密钥的明文/密文配对的字典来发起一种“字典攻击”。随着分组大小的增加,攻击变得更加困难,因为需要更大的字典。
避免使用非常大的分组大小 - 非常大的分组大小使密码难以使用。这些明文在加密之前需要填充。
8 位的倍数 - 由于大多数计算机处理器以 8 的倍数处理数据,因此由于易于实现,8 的倍数是首选的分组大小。
分组密码中的填充
分组密码对固定大小的分组进行操作,例如 64 位。大多数情况下,明文的长度不是分组大小的倍数。例如,一个 150 位的明文有两个 64 位的分组和一个 22 位的分组以保持平衡。为了使最后一个分组的长度等于方案的分组大小,必须将其他数据附加到最后一个位分组。在我们的例子中,必须向剩余的 22 位添加 42 个冗余位才能创建一个完整的分组。填充是向最后一个分组添加位的过程。
当填充过多时,该过程效率低下。此外,如果填充始终使用相同的位进行,有时可能会使系统容易受到攻击。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
操作模式
分组密码模式指的是使用秘密代码进行加密和解密的各种技术。假设一条消息被加密成乱码字母块。操作模式提供方法来确保消息在传输或存储期间的安全。以下是一些常见的方法:
ECB(电子密码本) - 可以将其视为对遇到的每个保险箱使用相同的锁。每个保险箱(消息块)都使用相同的密钥进行保护,导致消息中的相同块在加密后仍然相同。
CBC(密码分组链接) - 在这里,想象一下用链条连接在一起的保险箱。每个保险箱的锁取决于前一个保险箱的锁。这创建了一个强大的链条,即使知道消息的一部分也不会泄露原始消息,因为加密是相互关联的。
密码反馈 (CFB) - 与一次加密整个消息不同,CFB 对其较小的部分进行加密。这允许对各种长度的消息进行灵活处理。
输出反馈 (OFB) - 与 CFB 类似,但 OFB 不是使用加密的消息部分,而是生成连续的随机数据流(密钥流)。此密钥流与明文混合以创建密文,类似于秘密代码的恒定流。
CTR(计数器) - 此模式将分组密码转换为流密码。它使用一个不断递增的计数器,为每个块生成一个唯一的密钥。此密钥与明文组合以创建密文。可以将其视为一个滴答作响的计数器,为消息的每个部分生成新的秘密代码。
分组密码的组件
现代分组密码包含以下组件:
D-盒 - D-盒是一种置换盒,具有与传统换位密码相同的特征。D-盒会交换位。D-盒有三种不同的类型,如下所示:
直通 D-盒 - 它从 n 个输入生成、置换并支持 n 个输出。在这里,第一个输入要输出的是置换后的第二个输入。输入的第一个字母更改为第二个,第三个更改为第四个,第四个更改为第三个。有 n! 种可能的映射 D-盒的方法。

压缩 D-盒 - 压缩 D-盒是指具有 m 个输出和 n 个输入的 D-盒,其中 m<n。许多输入被阻塞,并且不会发送到输出。当需要置换位并减少后续步骤所需的位数时,会使用压缩 D-盒。

扩展 D-盒 - 这是一个具有 n 个输入和 m 个输出的 D-盒,其中 m>n,或多个输入连接到多个输出,当需要位置换并且后续步骤的位数增加时使用。

S-盒 - 这些是替换盒,与替换密码相同。S-盒接受 n 位字作为输入,但它也可以输出 m 位字,其中 m 和 n 不完全相同。
循环移位 - 现代分组密码也包括循环移位,可以是左移或右移。在 n 位字中,每个位都向左循环移动 m 个位置,删除最左边的 m 位,将其变为最右边的位。
分组密码的加密和解密
用于加密和解密的分组密码就像将消息转换为加密消息或代码一样。以下是其工作原理 -
首先,消息被分成固定大小的块。每个块包含一定数量的字符,通常为 64 或 128 位。
然后使用分组密码技术对消息的块进行混淆。此算法使用密钥随机化块中的字符。密钥充当自定义配方,确定字符的精确混淆方式。
根据选择的运行模式,可能会采取其他操作来提高安全性或满足特殊要求,例如加密大型消息或确保唯一性。
此过程对消息的每个块重复进行,直到整个消息被加密。
结果是一系列混淆的块,构成密文。此密文表示原始通信的加密形式。
用于加密的密钥需要由某人控制,以便解密消息并显示原始文本。如果没有密钥,几乎不可能解码密文并理解原始消息。
使用分组密码的示例
让我们尝试一个名为“数字移位器”的分组密码的示例。
以下是“数字移位器”的工作步骤 -
假设我们有一个密钥,它是数字 5。
现在我们有一条需要加密的消息,例如 123456。
并使用数字移位器加密此消息 -
要加密它
我们将获取消息中的每个数字,并为其加上 5。
然后 1 将变为 6,2 将变为 7,3 将变为 8,依此类推。
因此,使用密钥为 5 的数字移位器加密后,123456 将变为 67891011。
要解密它
现在我们将获取加密消息中的每个数字,并从中减去 5。
因此,它将减去每个数字,然后 6 将变为 1,7 将变为 2,8 将变为 3,依此类推。
最后,67891011 的解密消息将再次变为 123456。
不同类型的分组密码
虽然有许多不同类型的分组密码可用,但只有少数为公众所知。由于某些分组密码的创建时间比其他分组密码晚,因此它们的使用和普及程度各不相同。最广为人知和使用的分组密码类型如下 -
DES 或数字加密标准 - 在 20 世纪 90 年代,它是一种流行的分组密码。它现在被认为是失败的分组密码的主要原因是其密钥长度较小。
三重 DES - 另一种基于多个 DES 应用的技术称为三重 DES。虽然它不如最新的、更快的可用分组密码有效,但它仍然是一种公认的分组密码。
高级加密标准 (AES) - 相对较新的高级加密标准 (AES) 分组密码基于 Rijndael 加密算法,该算法在 AES 设计竞赛中获得第一名。
IDEA - 它的块大小为 64 位,密钥大小为 128 位,是一种有效且强大的分组密码。许多程序(包括早期版本的 Pretty Good Privacy (PGP) 协议)都使用 IDEA 加密。由于版权问题,IDEA 方案的采用受到了限制。
Twofish - 此分组密码方法使用块大小为 128 位的可变长度密钥。它是 AES 的决赛入围者。它的基础是早期版本的 64 位块密码 Blowfish。
Serpent - 它是 AES 竞赛的决赛入围者,包括 128 位的块大小和 128、192 或 256 位的密钥长度。与其他分组密码相比,它的架构更安全,但速度较慢。
因此,DES 和 AES 是两种最广泛使用和最重要的分组密码。
分组密码的应用
数据加密
在传输或存储期间,分组密码通常用于加密敏感和私密数据,例如财务信息和密码。此过程将可读数据转换为混淆的加密格式。加密数据的解密需要通过私钥进行授权访问。
文件和磁盘加密
分组密码也可用于加密整个磁盘驱动器和文件,保护其数据免受攻击者的侵害。诸如 BitLocker 和 TrueCrypt 等加密程序使用分组密码来保护数据并使其在没有适当权限的情况下无法读取。
虚拟专用网络 (VPN)
VPN 使用分组密码加密通过互联网在连接设备之间发送的数据。通过这种方式,在传输过程中保护数据隐私并防止未经授权的访问。
安全套接字层 (SSL) 和传输层安全性 (TLS)
SSL 和 TLS 协议也使用分组密码加密在 Web 浏览器和服务器之间通过互联网传输的数据。诸如银行信息和登录凭据之类的机密信息。此加密可防止可能的网络攻击。
数字签名
分组密码用于数字签名技术,以确保电子文档的真实性和完整性。使用此加密技术创建的每个文档都具有唯一的签名,可用于确认其真实性并检测非法更改。
分组密码的缺点/劣势
由于以下几个原因,分组密码并非在所有情况下都是理想的选择 -
分组密码一次只能使用一定数量的数据。如果您拥有的数据量超过此数量,则会变得复杂。
对于相同的数据和密钥,它们始终生成相同的结果。如果有人识别出模式,这可能很危险。
有时,需要更多详细信息来验证分组密码。但是,这些附加内容有时会使攻击者更容易破解代码。
处理密钥时需要格外小心。如果密钥薄弱或管理不善,则类似于将前门留给黑客敞开。
分组密码可以以多种方式应用,并且每种方法都面临着特定的挑战。做出错误的决定或操作不当可能会导致问题。
随着计算机变得越来越智能,破解分组密码的秘密对它们来说变得更加容易。这意味着我们必须不断寻找新的数据保护方法。