什么是密码学
密码学(Cryptography)是研究如何保护信息安全的学科。其名称来源于希腊语:kryptós(隐藏)+ gráphein(书写)。
密码学的核心目标是在不安全的环境中实现安全通信。它不仅仅是"加密",而是涵盖了一整套保护信息安全的方法和技术。
基本术语
- 明文(Plaintext):原始的、未加密的信息
- 密文(Ciphertext):加密后的、不可读的信息
- 密钥(Key):控制加密和解密过程的秘密参数
- 加密(Encryption, E):将明文转换为密文的过程,c = Ek(m)
- 解密(Decryption, D):将密文恢复为明文的过程,m = Dk(c)
- 密码算法(Cipher):加密和解密所用的数学函数
密码学的四大目标
- 机密性(Confidentiality):确保只有授权方能获取信息内容。这是最直观的目标。
- 完整性(Integrity):确保信息在传输或存储过程中未被篡改。通过哈希函数、MAC 实现。
- 认证性(Authentication):验证通信方的身份。包括实体认证和消息认证。
- 不可否认性(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 次操作。