1. 密码学基础概念:对称加密与非对称加密的区别、哈希函数的作用、数字签名的基本原理
密码学是现代安全通信的基石。理解对称加密、非对称加密、哈希函数和数字签名这四大核心概念,是构建安全系统、避免常见陷阱的第一步。本章将深入剖析它们的原理、区别与典型应用场景。
1.1 对称加密 vs. 非对称加密
加密算法根据密钥的使用方式分为对称加密和非对称加密两大类。它们的核心区别在于加密和解密是否使用同一个密钥。
| 对比维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个密钥(加密=解密) | 2 个密钥(公钥+私钥) |
| 密钥管理 | 密钥分发困难,需安全通道 | 公钥公开,私钥保密,管理简单 |
| 计算性能 | 快(适合大数据量) | 慢(适合小数据量) |
| 典型算法 | AES, SM4, ChaCha20 | RSA, ECC, SM2 |
| 主要用途 | 数据加密传输、存储加密 | 密钥交换、数字签名、身份认证 |
避坑提示: 不要试图用非对称加密加密大文件。非对称加密速度慢且密文膨胀,正确做法是使用对称加密加密数据,再用非对称加密加密对称密钥(混合加密)。
下图直观展示了两种加密模式的流程差异:
1.2 哈希函数的作用
哈希函数(Hash Function)是一种将任意长度输入映射为固定长度输出的单向函数。它不是加密,而是数据指纹技术。
- 单向性: 从哈希值无法反推出原始数据。
- 抗碰撞性: 极难找到两个不同输入产生相同哈希值。
- 雪崩效应: 输入微小变化,输出哈希值完全不同。
- 固定输出长度: 无论输入多大,输出长度固定(如 SHA-256 输出 256 位)。
| 应用场景 | 说明 | 典型算法 |
|---|---|---|
| 数据完整性校验 | 下载文件后比对哈希值,确认未被篡改 | SHA-256, SM3 |
| 密码存储 | 存储密码的哈希值而非明文,防止泄露 | bcrypt, scrypt, Argon2 |
| 数字签名 | 先对消息哈希,再对哈希值签名,提高效率 | SHA-256 + RSA |
| 消息认证码(HMAC) | 结合密钥与哈希,验证消息完整性与来源 | HMAC-SHA256 |
避坑警告: 不要使用 MD5 或 SHA-1 做安全校验。MD5 和 SHA-1 已被证明存在碰撞攻击,攻击者可构造两个不同文件产生相同哈希值。生产环境应使用 SHA-256 或更高强度的哈希算法。
1.3 数字签名的基本原理
数字签名是非对称加密与哈希函数的结合应用,用于解决身份认证、数据完整性和不可否认性问题。
数字签名包含两个核心过程:
- 签名过程(发送方): 对消息哈希,用私钥加密哈希值,生成签名。
- 验签过程(接收方): 用发送方公钥解密签名得到哈希值,与本地计算的消息哈希值比对。
关键理解: 数字签名不是对消息加密,而是对消息的哈希值加密。这样做既保证了效率(哈希值很小),又保证了完整性(哈希值变化代表消息被篡改)。私钥签名、公钥验签,这是非对称加密的经典应用。
1.4 核心概念关系总结
四种技术在实际安全通信中协同工作,形成完整的保护体系:
| 安全目标 | 实现技术 | 典型应用 |
|---|---|---|
| 机密性 | 对称加密 + 非对称加密(混合加密) | TLS/SSL 握手、HTTPS |
| 完整性 | 哈希函数 | 文件校验、区块链 |
| 身份认证 | 数字签名(非对称加密 + 哈希) | 数字证书、代码签名 |
| 不可否认性 | 数字签名 | 电子合同、审计日志 |
避坑总结:
- 对称加密密钥必须安全分发,不要用明文传输密钥。
- 非对称加密不要用于加密大文件,性能开销巨大。
- 哈希函数不要使用 MD5/SHA-1,优先选择 SHA-256 或 SM3。
- 数字签名必须保护私钥安全,私钥泄露等于身份被盗用。