2、加密基础回顾:对称加密与非对称加密、哈希函数与数字签名、密钥管理基础概念

好,咱们进入正题。这一节我打算带大家快速过一遍加密技术的基础。别觉得枯燥,这些概念在 SOC2 审计里可是高频考点。我自己做合规项目时,发现很多团队出问题,根源就是对基础理解不透。

对称加密:又快又简单,但有个大麻烦

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

常见的算法有 AES、DES、3DES。现在业界主流是 AES-256,我建议你也用这个。DES 太老了,3DES 效率低,基本可以告别了。

核心特点:

  • 速度快,适合加密大量数据
  • 密钥长度相对较短(AES-256 也就 256 位)
  • 最大的痛点:密钥分发问题

我在项目中遇到过一家公司,他们用 AES 加密数据库里的用户信息,这本身没问题。但密钥就硬编码在配置文件里,所有开发人员都能看到。你想想看,这跟没加密有什么区别?

避坑指南:我曾经见过一个团队,为了省事,把对称密钥通过邮件发给合作伙伴。结果邮件被截获,数据全部泄露。记住,对称加密的密钥分发必须走安全通道,比如后面要讲的非对称加密来协商。

非对称加密:安全但慢,适合做“钥匙交换”

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

RSA 和 ECC(椭圆曲线)是主流。RSA 用得多,但 ECC 在同等安全强度下密钥更短,性能更好。我个人习惯,新项目优先考虑 ECC。

特性 对称加密 非对称加密
密钥数量 1 个 2 个(公钥 + 私钥)
速度 快 慢(慢 100-1000 倍)
典型用途 加密大量数据 密钥交换、数字签名
常见算法 AES, ChaCha20 RSA, ECDSA, Ed25519

实际项目中,我们很少直接用非对称加密去加密文件。太慢了。正确的做法是:用非对称加密交换对称密钥,然后用对称加密去加密实际数据。这叫“混合加密”,HTTPS 就是这么干的。

哈希函数:不是加密,但比加密还常用

哈希函数很多人误以为是加密,其实不是。它是单向的:你把任意长度的数据丢进去,它吐出一个固定长度的“指纹”。而且你没法从指纹反推出原始数据。

SHA-256 是目前最常用的。MD5 和 SHA-1 已经不安全了,别再用。

我的经验:在 SOC2 审计中,哈希最常见的用途是验证数据完整性。比如你备份了一份日志,跑一下 SHA-256,记下哈希值。等恢复时再算一次,如果哈希对不上,说明数据被篡改了。我帮客户做审计时,经常建议他们把哈希校验纳入日常监控脚本。

哈希还有个重要特性:抗碰撞。就是说,很难找到两个不同的输入,产生相同的哈希值。嗯,这里要注意,MD5 已经被攻破了,可以人为制造碰撞。所以审计时如果看到还在用 MD5,基本会开一个 finding。

数字签名:证明“你是谁”和“你没改过”

数字签名 = 哈希 + 非对称加密。流程是这样的:

  1. 对消息做哈希,得到摘要
  2. 用你的私钥加密这个摘要,生成签名
  3. 别人用你的公钥解密签名,得到摘要 A
  4. 别人对收到的消息做哈希,得到摘要 B
  5. 如果 A == B,说明消息是你发的,而且没被改过

为什么需要这个?你想想看,光有哈希,别人改了数据重新算个哈希,你根本发现不了。但有了数字签名,没有你的私钥,别人伪造不了签名。

我记得有一次做渗透测试,发现某系统的更新包没有数字签名。攻击者完全可以替换成恶意版本,用户一更新就中招。这就是典型的“完整性”缺失。

密钥管理:加密的命门

加密算法再强,密钥泄露了,一切归零。SOC2 对密钥管理有明确要求,我总结几个关键点:

  • 密钥生命周期:生成、分发、使用、轮换、销毁,每个环节都要有记录
  • 密钥存储:别放代码里,别放配置文件里。用硬件安全模块(HSM)或云厂商的密钥管理服务(KMS)
  • 密钥轮换:定期换密钥。我建议对称密钥每 90 天轮换一次,非对称密钥每 1-2 年
  • 访问控制:谁可以访问密钥?要有严格的权限审批流程

避坑指南:我曾经遇到一个客户,他们把密钥存在 Git 仓库里,还以为是加密的。结果攻击者拿到了仓库权限,直接解密了所有数据。记住,密钥管理不是技术问题,是流程问题。没有流程,再好的技术也白搭。

好,基础就回顾到这里。这些概念在后面的章节会反复用到。尤其是密钥管理,SOC2 审计里 80% 的加密相关问题都出在这里。下一节我们聊聊 SOC2 到底要求你加密哪些数据。