对称分组加密算法原理
本文只关注一个核心任务 —— 如何把 64 位的明文,用 64 位的密钥,加密成 64 位的密文,并执行解密,需要理解这个过程。
DES已经很少使用了,主要是想学习它的Feistel network (费斯妥网络)。
其实,了解这些加密的流程没啥用,这些是无用的信息。我认为要理解每个步骤背后的数学原理,数学观点上证明它这个步骤是安全的,这个才是通用的、有用的知识。
一些基础概念
对称加密
双方拥有同一个密钥,加密、解密是同一个密钥完成,该秘钥不对第三方公开。
分组密码
分组密码是将明文分成固定长度的组,每一组都采用同一密钥和算法进行加密,输出也是固定长度的密文。
分组长度
DES 加密算法中,明文和密文为 64 位分组。密钥的长度为 64 位,但是密钥的每个第八位设置为奇偶校验位,因此密钥的实际长度为56位。
步骤拆分
DES 加密流程大致分为 4 个步骤:
(1)初始置换
(2)生成子密钥
(3)迭代过程
(4)逆置换
分了那么多步骤,其实就是为了达成如下效果:
- 用一个公开的、可逆但计算上难以逆推的复杂算法,把明文经过密钥控制的非线性变换打乱;
- 算法即使公开,没有正确密钥也很难从密文反推出原文。
\[\boxed{\text{公开算法}+\text{秘密密钥}\rightarrow\text{巨大密钥空间}+\text{计算困难的逆过程}}
\]
浙公网安备 33010602011771号