密码学基础回顾:对称加密与非对称加密、哈希函数与数字签名、密钥与证书的关系

说实话,很多做密钥管理的人,最后栽跟头都是因为密码学基础不牢。你想想看,连加密算法怎么工作的都没搞明白,怎么设计安全的密钥生命周期?

这一节,我用实战视角带你过一遍核心概念。不会堆数学公式,咱们就讲清楚「它是什么、用来干嘛、坑在哪」。

对称加密:快,但密钥怎么分?

对称加密,说白了就是加密和解密用同一把钥匙。就像你家大门,一把钥匙既能锁也能开。

常见的算法有 AES、SM4、3DES。我个人习惯,新项目一律用 AES-256-GCM,既加密又带认证,防篡改。

核心特点:
  • 速度快,适合加密大量数据
  • 密钥长度短(128/192/256 位)
  • 最大痛点:密钥分发困难

我在项目中遇到过最典型的场景:两个微服务之间要加密通信。用对称加密,你得先把密钥安全地送到对方手里。怎么送?走网络怕被截获,刻光盘又太慢。这就是对称加密的「密钥分发问题」。

避坑指南: 我曾经见过一个团队,直接用 AES 密钥做 API 鉴权,密钥硬编码在代码里。结果代码泄露,整个系统被脱裤。记住:对称密钥必须定期轮换,绝不能写死在源码中。

非对称加密:慢,但解决了分发问题

非对称加密,有一对钥匙:公钥和私钥。公钥可以公开,私钥自己藏好。你用我的公钥加密,只有我能用私钥解密。

这就解决了密钥分发问题——你不需要提前把密钥给我,直接把公钥扔到网上就行。

特性 对称加密 非对称加密
密钥数量 1 个 2 个(公钥+私钥)
速度 快(MB/s 级别) 慢(KB/s 级别)
典型算法 AES, SM4, ChaCha20 RSA, ECC, SM2
主要用途 数据加密 密钥交换、数字签名

实际项目中,没人会用非对称加密去加密大文件。太慢了。正确的做法是「混合加密」:用非对称加密传输对称密钥,再用对称密钥加密数据。HTTPS 就是这么干的。

我的建议: 新项目优先选 ECC(椭圆曲线),同等安全强度下,ECC 的密钥比 RSA 短得多,性能也更好。比如 256 位 ECC 约等于 3072 位 RSA。

哈希函数:单向的指纹

哈希函数,输入任意长度数据,输出固定长度的摘要。关键特性:不可逆。你没法从摘要反推出原文。

常用算法:SHA-256、SM3、BLAKE2。MD5 和 SHA-1 已经不安全了,别再用。

哈希的典型用途:

  • 密码存储: 存哈希值,不存明文密码
  • 数据完整性: 下载文件后比对哈希,看有没有被篡改
  • 消息认证: 结合密钥做 HMAC
我曾经踩过的坑: 有个项目直接用 SHA-256 哈希存用户密码。攻击者拿到哈希库后,用彩虹表一查,一半密码都还原出来了。记住:存密码要用 bcrypt、scrypt 或 Argon2 这种慢哈希算法,还要加盐。

数字签名:证明是你干的

数字签名 = 哈希 + 非对称加密。流程很简单:

  1. 对消息做哈希,得到摘要
  2. 用私钥加密摘要,生成签名
  3. 对方用公钥解密签名,比对哈希值

它能保证三件事:

  • 身份认证: 确实是私钥持有者签的
  • 完整性: 消息没被篡改
  • 不可否认性: 签了就不能赖账

我参与过一个电子合同平台,每份合同都要做数字签名。当时有个细节差点出问题:签名时用的哈希算法必须和证书里的算法一致,否则验签会失败。

密钥与证书的关系

很多人搞不清密钥和证书的区别。我打个比方:

  • 密钥: 就是你的身份证号码(私钥)和公开信息(公钥)
  • 证书: 就是你的身份证,上面有你的照片、姓名、有效期,还有公安局的盖章(CA 签名)

证书把公钥和身份绑定在一起。CA(证书颁发机构)用自己的私钥给你的公钥签名,别人拿到你的证书,用 CA 的公钥验签,就知道这个公钥确实属于你。

证书链结构:
  • 根证书(自签名,信任锚点)
  • 中间证书(由根 CA 签发)
  • 终端证书(你的服务器证书)

嗯,这里要注意:私钥和证书必须分开存储。证书可以公开,私钥必须加密保存。我见过有人把私钥和证书放在同一个文件里,还上传到 GitHub……那画面太美我不敢看。

知识体系总览

下面这张图,把本章的核心关系画清楚了。建议你保存下来,后面学密钥管理时随时回来对照。

密码学基础核心关系图 对称加密 AES / SM4 非对称加密 RSA / ECC / SM2 哈希函数 SHA-256 / SM3 混合加密 数字签名 数字签名 = 哈希 + 非对称加密 密钥对(公钥+私钥) 数字证书(X.509) CA 签名绑定 证书链结构 根证书(自签名) → 中间证书 → 终端证书 信任锚点 → 逐级签发 → 最终实体

这张图把四个核心概念串起来了。对称加密和非对称加密互补使用,哈希函数为数字签名提供基础,密钥对通过证书实现身份绑定。后面讲密钥生命周期时,你会反复用到这些知识。

一句话总结: 对称加密管速度,非对称加密管分发,哈希函数管完整性,数字签名管身份,证书管信任。把这五样搞明白,密钥管理你就入门了。