1. 密码学基础概念:对称加密与非对称加密的区别、哈希函数的作用、数字签名的基本原理

密码学是现代安全通信的基石。理解对称加密、非对称加密、哈希函数和数字签名这四大核心概念,是构建安全系统、避免常见陷阱的第一步。本章将深入剖析它们的原理、区别与典型应用场景。

1.1 对称加密 vs. 非对称加密

加密算法根据密钥的使用方式分为对称加密和非对称加密两大类。它们的核心区别在于加密和解密是否使用同一个密钥。

对比维度 对称加密 非对称加密
密钥数量 1 个密钥(加密=解密) 2 个密钥(公钥+私钥)
密钥管理 密钥分发困难,需安全通道 公钥公开,私钥保密,管理简单
计算性能 快(适合大数据量) 慢(适合小数据量)
典型算法 AES, SM4, ChaCha20 RSA, ECC, SM2
主要用途 数据加密传输、存储加密 密钥交换、数字签名、身份认证
避坑提示: 不要试图用非对称加密加密大文件。非对称加密速度慢且密文膨胀,正确做法是使用对称加密加密数据,再用非对称加密加密对称密钥(混合加密)。

下图直观展示了两种加密模式的流程差异:

对称加密 vs. 非对称加密流程对比 对称加密 明文 密文 同一密钥 密文 明文 非对称加密 明文 密文 公钥 私钥 密文 明文 密钥必须通过安全通道分发 n 个参与者需 n(n-1)/2 个密钥 公钥公开,私钥保密 n 个参与者仅需 2n 个密钥

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. 签名过程(发送方): 对消息哈希,用私钥加密哈希值,生成签名。
  2. 验签过程(接收方): 用发送方公钥解密签名得到哈希值,与本地计算的消息哈希值比对。
数字签名流程 发送方(签名) 消息 哈希函数 摘要 私钥加密 签名 接收方(验签) 消息 哈希函数 摘要1 签名 公钥解密 摘要2 比对摘要1 与 摘要2 一致 → 签名有效 不一致 → 签名无效
关键理解: 数字签名不是对消息加密,而是对消息的哈希值加密。这样做既保证了效率(哈希值很小),又保证了完整性(哈希值变化代表消息被篡改)。私钥签名、公钥验签,这是非对称加密的经典应用。

1.4 核心概念关系总结

四种技术在实际安全通信中协同工作,形成完整的保护体系:

安全目标 实现技术 典型应用
机密性 对称加密 + 非对称加密(混合加密) TLS/SSL 握手、HTTPS
完整性 哈希函数 文件校验、区块链
身份认证 数字签名(非对称加密 + 哈希) 数字证书、代码签名
不可否认性 数字签名 电子合同、审计日志
避坑总结:
  • 对称加密密钥必须安全分发,不要用明文传输密钥。
  • 非对称加密不要用于加密大文件,性能开销巨大。
  • 哈希函数不要使用 MD5/SHA-1,优先选择 SHA-256 或 SM3。
  • 数字签名必须保护私钥安全,私钥泄露等于身份被盗用。