1. 引言

在本文中,我们将介绍密码学的基本概念。首先,我们会讲解密码学的设计原则,包括其基本构成要素和加密算法的分类。随后,我们将回顾密码学从古典阶段发展到现代阶段的过程。

2. 密码学的基本要素

Cryptography(密码学)是研究安全通信技术的学科,其核心在于设计和分析防止第三方读取私密信息的协议。一个使用密码学的系统被称为密码系统(Cryptosystem)。

  • Cryptanalysis(密码分析) 是研究如何削弱或破解密码系统的学科。
  • Cryptology(密码学) 有时也指密码学与密码分析的统称。

在深入学习前,我们需要了解几个关键术语。

2.1. 密码算法(Cipher)

虽然密码学是一个更广泛的领域,但我们通常将其视为加密与解密信息的科学。加密和解密广泛用于保护传输中和静止状态的数据。

Cryptography EncDec

  • 未加密的数据称为明文(Plaintext)
  • 加密后的数据称为密文(Ciphertext)
  • 密码算法(Cipher) 是用于执行加密和解密的算法,通常依赖于一个称为密钥(Key)的信息来完成操作。

2.2. 哈希函数(Hash Function)

密码学不仅仅包括加密和解密。另一个重要概念是哈希函数(Hash Function)。它是一种数学函数,将可变长度的输入映射为固定长度的输出。

Cryptography Hash Function

哈希函数应具备以下特性:

✅ 输入难以从输出反推
✅ 不同输入不应产生相同输出(抗碰撞)

它广泛用于密码验证、签名生成与验证、文件与消息完整性验证等场景。

2.3. 伪随机数生成器(PRNG)

伪随机数生成器(Pseudorandom Number Generator, PRNG) 是一种生成近似随机序列的算法。PRNG 的输出序列由一个初始值(Seed)决定。

Cryptography PRNG

一个典型的 PRNG 包括:

  • 初始化函数
  • 状态(State)
  • 状态转移函数
  • 输出函数

PRNG 生成的序列应具有良好的统计特性,通过统计模式检测测试。

3. 密码学设计原则

设计密码算法和原语是一个需要广泛审查的严谨过程。因此,拥有简单明了的设计原则非常重要。我们不会深入探讨所有原则,但会介绍密码系统的目标和算法设计应具备的特性。

3.1. 密码系统的目标

一个密码系统可以帮助我们实现多个安全目标:

保密性(Confidentiality):防止未经授权的信息泄露
完整性(Integrity):确保接收方收到的信息与发送方发送的一致
不可否认性(Non-repudiation):通信双方不能否认已处理的信息
身份认证(Authentication):验证通信方身份
可用性(Availability):信息应随时对授权用户可用

⚠️ 注意:并非所有密码系统都能实现上述所有目标。有些系统可能有其他目标,甚至与这些目标冲突。

3.2. 密码算法的特性

安全的密码算法应具备以下两个核心特性(由 Claude Shannon 提出):

  • 混淆(Confusion):隐藏密文与密钥之间的关系,使从密文推导出密钥变得困难。
  • 扩散(Diffusion):隐藏明文与密文之间的统计关系,使得明文中的微小变化导致密文发生显著变化。

这些特性有助于抵御密码分析攻击。有些算法仅使用混淆,而有些同时使用混淆和扩散,安全性更高。

4. 密码算法的分类

密码算法通常根据其工作原理进行分类。现代密码算法主要有以下两种分类方式:

4.1. 按密钥使用方式分类

  • 对称密钥算法(Symmetric-key Cipher)

    又称私钥加密,使用相同的密钥进行加密和解密。优点是密钥较短、速度快,但需要预先共享密钥。

    Cryptography Symmetric Cipher

  • 非对称密钥算法(Asymmetric-key Cipher)

    又称公钥加密,使用一对密钥:公钥加密,私钥解密。公钥可公开,但私钥必须保密。缺点是运算较慢,不适合批量加密。

    Cryptography Asymmetric Cipher

4.2. 按处理方式分类

  • 流密码(Stream Cipher)

    对明文逐字节加密,使用伪随机密钥流(Keystream)与明文异或生成密文。速度快、硬件复杂度低,但仅使用混淆,容易受到流密码攻击。

    Cryptography Stream Cipher

  • 块密码(Block Cipher)

    对固定长度的数据块进行加密,通常通过多轮操作实现混淆和扩散。常见的块密码有 DES、AES 等。

    Cryptography Block Cipher

5. 密码学的起源

最早的密码学应用可追溯到公元前 1900 年的埃及。历史上曾广泛使用置换密码(Transposition Cipher)和替换密码(Substitution Cipher)。其中,替换密码因简单而更受欢迎。

  • 单字母替换密码(Monoalphabetic Cipher):如 Caesar 密码,每个字母替换为固定位置的另一个字母。
  • 多字母替换密码(Polyalphabetic Cipher):使用多个替换表,提高了抗频率分析能力。

历史上还出现了多种辅助加密设备,如古希腊的 Scytale 和二战时期的 Enigma 机器。

Cryptography Enigma Cipher

荷兰密码学家 Auguste Kerckhoffs 提出:“即使系统的所有细节被公开,只要密钥保密,系统就应是安全的。”这一原则后来被 Shannon 表述为“敌人知道系统”。

6. 现代密码学的发展

二战后,密码学逐渐从军事用途扩展到商业领域。这一时期见证了流密码、块密码和非对称密码的快速发展。

6.1. 流密码的发展

现代流密码大多受 One-time Pad(一次性密码本)启发,使用较短密钥生成伪随机密钥流。例如:

  • RC4:Ron Rivest 于 1987 年设计,广泛用于 SSL/TLS。
  • A5/1:用于 GSM 加密。
  • Salsa20 和 ChaCha:由 Daniel J. Bernstein 设计,现代更安全的流密码。

6.2. 对称块密码的发展

  • DES(Data Encryption Standard):1976 年成为标准,基于 Feistel 网络结构,16 轮处理。

    Cryptography DES Cipher

  • AES(Advanced Encryption Standard):2000 年取代 DES,基于替换-置换网络(Substitution-Permutation Network),支持 10~14 轮加密。

    Cryptography AES Cipher

此外还有 Blowfish、Twofish 等算法。

6.3. 非对称块密码的发展

对称算法存在密钥分发问题,因此 1976 年 Diffie 和 Hellman 提出了非对称加密概念。

  • Diffie-Hellman 密钥交换:首次实现安全地在不安全信道上交换密钥。
  • RSA:基于大整数分解难题,广泛用于加密和数字签名。
  • ECC(椭圆曲线加密):1985 年提出,提供更短密钥下的更强安全性。

6.4. 块密码操作模式的发展

块密码需配合操作模式使用,以适应变长数据:

  • ECB(电子密码本):最简单但最弱,相同明文块生成相同密文。
  • CBC(密码分组链接):当前密文依赖前一密文块,增强了安全性。
  • CTR(计数器):并行化强,适合现代高性能加密。
  • GCM(伽罗瓦/计数器模式):提供加密和认证,广泛用于 TLS。

6.5. 哈希函数的发展

哈希函数用于完整性校验和数字签名。常见算法包括:

  • MD5:1991 年设计,128 位输出,但已被破解。
  • SHA 系列:NIST 标准,从 SHA-0 到 SHA-3,SHA-3 基于 Keccak 算法。

6.6. 伪随机数生成器的发展

  • 线性同余生成器(LCG):早期常用,但周期短。
  • Mersenne Twister:1997 年提出,周期长,质量高。
  • CSPRNG(加密安全 PRNG):如 Dual_EC_DRBG,用于加密用途。

7. 密码学的应用

密码学在现代应用中无处不在,以下是一些典型应用场景。

7.1. 数字签名(Digital Signature)

使用哈希函数和非对称加密技术验证消息的完整性和来源。

Cryptography Digital Signature

  • DSA(数字签名算法):NIST 标准,后被 EdDSA 取代。
  • ECDSA:基于椭圆曲线的签名算法。

7.2. 数字证书(Digital Certificate)

证明公钥归属的电子文档,通常遵循 X.509 标准。

Cryptography PKI

  • PKI(公钥基础设施):管理证书生命周期的体系结构。
  • 包含角色:RA(注册机构)、CA(证书机构)、VA(验证机构)。

7.3. 安全网络通信

现代网络通信依赖加密协议保障数据安全,如:

  • TLS(传输层安全协议)

    Cryptography TLS Handshake

    • 使用非对称加密协商会话密钥
    • 后续通信使用对称加密
    • 运行于 OSI 应用层,广泛用于 HTTPS、邮件等

8. 总结

密码学是一门历史悠久、不断演进的学科。从古埃及的石刻密码到现代的 AES、RSA 和 ECC,技术不断进步,应用场景也日益广泛。尽管我们仅介绍了基础内容,但密码学远不止于此。值得注意的是,任何密码算法的安全性都是相对的、时间性的。

未来,我们仍将继续看到密码学领域的创新与发展。


原始标题:Introduction to Cryptography