密码学导论

什么是密码学

密码学(Cryptography)是研究如何保护信息安全的学科。其名称来源于希腊语:kryptós(隐藏)+ gráphein(书写)。

密码学的核心目标是在不安全的环境中实现安全通信。它不仅仅是"加密",而是涵盖了一整套保护信息安全的方法和技术。

基本术语

  • 明文(Plaintext):原始的、未加密的信息
  • 密文(Ciphertext):加密后的、不可读的信息
  • 密钥(Key):控制加密和解密过程的秘密参数
  • 加密(Encryption, E):将明文转换为密文的过程,c = Ek(m)
  • 解密(Decryption, D):将密文恢复为明文的过程,m = Dk(c)
  • 密码算法(Cipher):加密和解密所用的数学函数

密码学的四大目标

  1. 机密性(Confidentiality):确保只有授权方能获取信息内容。这是最直观的目标。
  2. 完整性(Integrity):确保信息在传输或存储过程中未被篡改。通过哈希函数、MAC 实现。
  3. 认证性(Authentication):验证通信方的身份。包括实体认证和消息认证。
  4. 不可否认性(Non-repudiation):发送方无法否认自己发送过某条消息。通过数字签名实现。

密码系统分类

按密钥管理方式

  • 对称密码(Symmetric Cryptography):加密和解密使用同一个密钥。如 AES、DES。优点是速度快,缺点是密钥分发困难。
  • 非对称密码(Asymmetric Cryptography):使用一对密钥——公钥和私钥。公钥加密,私钥解密(或反之)。如 RSA、ECC。解决了密钥分发问题,但速度较慢。

按处理方式

  • 分组密码(Block Cipher):将数据分成固定大小的块逐块加密。如 AES(块大小 128 位)。
  • 流密码(Stream Cipher):逐比特或逐字节加密。如 ChaCha20、RC4。

Kerckhoffs 原则

1883 年由 Auguste Kerckhoffs 提出:密码系统的安全性应仅依赖于密钥的保密性,而不依赖于算法的保密性。

这意味着:

  • 即使攻击者完全了解算法,只要不知道密钥就无法破解
  • 算法应当公开,接受学术界审查
  • "security through obscurity"(靠隐藏算法来保障安全)是危险的做法

密码分析基础

密码分析(Cryptanalysis)是研究如何破解密码系统的学科。根据攻击者拥有的信息,攻击模型从弱到强分为:

攻击类型攻击者拥有的信息
唯密文攻击(COA)仅密文
已知明文攻击(KPA)若干明文-密文对
选择明文攻击(CPA)可选择明文并获得对应密文
选择密文攻击(CCA)可选择密文并获得对应明文
自适应选择密文攻击(CCA2)在CCA基础上可反复选择,是实际最强攻击模型

现代密码算法应至少能抵抗选择密文攻击(CCA 安全)。

攻击复杂度

评估密码安全性的维度:

  • 数据复杂度:所需明文/密文对的数量
  • 时间复杂度:计算所需的处理器时间
  • 存储复杂度:所需的存储空间

当前标准:一个安全的算法,破解的计算量应超过 2128 次操作。