密码学
密码学是信息安全的基础,用来解决数据保密、身份认证、完整性校验和不可抵赖等问题。工程中常见的 HTTPS、登录认证、数字签名、区块链钱包都离不开密码学。
一、核心目标
| 目标 | 说明 |
|---|---|
| 保密性 | 数据只能被授权方读取 |
| 完整性 | 数据没有被篡改 |
| 身份认证 | 确认通信对象是谁 |
| 不可抵赖 | 操作发生后不能轻易否认 |
二、哈希函数
哈希函数把任意长度输入转换成固定长度摘要。
特点:
- 单向不可逆;
- 输入变化一点,输出变化很大;
- 相同输入得到相同输出;
- 好的哈希函数碰撞概率低。
常见用途:
- 文件完整性校验;
- 密码摘要;
- 数据指纹;
- 区块链哈希链。
注意:密码不能直接用普通哈希保存,应使用带盐的慢哈希算法。
三、对称加密
对称加密使用同一个密钥加密和解密。
优点:
- 速度快;
- 适合加密大量数据。
缺点:
- 密钥分发困难;
- 双方都必须安全保存同一个密钥。
常见算法:AES、ChaCha20。
四、非对称加密
非对称加密使用公钥和私钥。
- 公钥可以公开;
- 私钥必须保密;
- 公钥加密,私钥解密;
- 私钥签名,公钥验签。
常见算法:RSA、ECC、Ed25519。
五、数字签名
数字签名用于证明消息确实来自某个私钥持有者,并且内容没有被篡改。
流程:
六、TLS 和 HTTPS
HTTPS 使用 TLS 在 HTTP 之上提供安全通信。
它解决:
- 防窃听;
- 防篡改;
- 验证服务器身份。
大致过程:
七、工程实践原则
- 不要自己发明加密算法。
- 使用成熟库和标准协议。
- 密钥不要写进代码仓库。
- 生产环境密钥要定期轮换。
- 密码必须加盐哈希存储。
- 随机数必须使用安全随机源。
- HTTPS 证书要自动续期并监控过期时间。
总结
密码学工程常用组合:
哈希校验完整性
对称加密保护数据
非对称加密解决密钥交换和签名
TLS 保护网络通信