密码学基础回顾:对称加密与非对称加密、哈希函数、数字签名原理、密钥管理基础
各位同学,欢迎来到第二章。在正式进入 TEE 签名验签之前,咱们得先把密码学这块地基夯实了。我见过不少项目,TEE 环境搭得漂漂亮亮,结果密钥管理一塌糊涂,最后安全防线形同虚设。说白了,密码学基础不牢,上层建筑再花哨也没用。
这一章我会带着大家快速过一遍核心概念。别担心,我不会堆公式,咱们用工程师的视角来拆解。
2.1 对称加密:一把钥匙开一把锁
对称加密,顾名思义,加密和解密用的是同一把密钥。就像你家的门锁,用同一把钥匙锁门和开门。
核心特点:
- 速度快:适合加密大量数据。我在项目中处理过 GB 级别的日志加密,对称加密几乎是唯一选择。
- 密钥分发难:这是它最大的痛点。怎么把密钥安全地交给对方?你想想看,如果通过网络传输密钥,那密钥本身就可能被截获。
常见算法:
| 算法 | 密钥长度 | 典型应用场景 |
|---|---|---|
| AES | 128 / 192 / 256 位 | 文件加密、TLS 传输、磁盘加密 |
| SM4 | 128 位 | 国密标准,国内商用系统常用 |
| ChaCha20 | 256 位 | 移动端、嵌入式设备(性能优势明显) |
2.2 非对称加密:公钥私钥,各司其职
非对称加密引入了一对密钥:公钥和私钥。公钥可以公开,私钥必须保密。这解决了对称加密的密钥分发难题。
两种核心用法:
- 加密:用公钥加密,只有对应的私钥能解密。适合别人给你发密文。
- 签名:用私钥签名,别人用公钥验证。适合证明“这东西是我发的”。
常见算法:
| 算法 | 密钥长度 | 签名/验签性能 |
|---|---|---|
| RSA | 2048 / 4096 位 | 验签快,签名慢 |
| ECDSA | 256 / 384 位 | 签名快,密钥短,性能均衡 |
| SM2 | 256 位 | 国密标准,基于椭圆曲线 |
| Ed25519 | 256 位 | 签名极快,安全性高,现代首选 |
2.3 哈希函数:数据的数字指纹
哈希函数能把任意长度的数据,映射成一个固定长度的摘要。它有几个关键特性:
- 单向性:从摘要反推原始数据,理论上不可能。
- 抗碰撞性:很难找到两个不同的输入,产生相同的输出。
- 雪崩效应:输入改一个比特,输出会面目全非。
常见算法:
| 算法 | 输出长度 | 安全性状态 |
|---|---|---|
| SHA-256 | 256 位 | 安全,广泛使用 |
| SHA-3 | 可配置 | 新一代标准,抗量子攻击潜力 |
| SM3 | 256 位 | 国密标准,等效于 SHA-256 |
| MD5 | 128 位 | 已破解,仅用于校验,不可用于安全场景 |
核心作用: 在数字签名中,我们不会直接对原始消息签名(太慢),而是先对消息做哈希,再对哈希值签名。这样既保证了效率,又保证了完整性。
2.4 数字签名原理:签名与验签的完整流程
数字签名是哈希函数和非对称加密的完美结合。它的核心目标是:身份认证 + 数据完整性 + 不可否认性。
签名流程(发送方):
- 对原始消息做哈希,得到摘要。
- 用发送方的私钥对摘要加密,生成签名。
- 将原始消息和签名一起发送给接收方。
验签流程(接收方):
- 收到消息和签名后,对原始消息做同样的哈希,得到摘要 A。
- 用发送方的公钥对签名解密,得到摘要 B。
- 比较摘要 A 和摘要 B。如果一致,验签通过。
为什么会这样?因为只有持有私钥的人才能生成正确的签名。公钥是公开的,谁都可以验签,但伪造不了签名。
2.5 密钥管理基础:安全的核心命脉
密钥管理是密码学里最容易被忽视、但也是最致命的一环。算法再强,密钥泄露了,一切归零。
密钥生命周期:
- 生成:必须在可信环境中生成。在 TEE 中,我们通常用硬件随机数生成器。
- 存储:私钥必须加密存储,最好由硬件安全模块(HSM)或 TEE 保护。
- 分发:公钥可以通过证书链分发,私钥永远不分发。
- 使用:限制使用次数和场景,避免滥用。
- 轮换:定期更换密钥,降低单点泄露的风险。
- 销毁:密钥不再使用时,必须安全擦除,不能留痕迹。
2.6 对称 vs 非对称:如何选择?
| 对比维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个(共享密钥) | 2 个(公钥 + 私钥) |
| 性能 | 快(适合大数据量) | 慢(适合小数据量) |
| 密钥分发 | 困难 | 容易(公钥可公开) |
| 典型用途 | 数据加密、传输加密 | 数字签名、密钥交换 |
| 安全性依赖 | 密钥保密 | 私钥保密 + 公钥可信 |
在实际系统中,两者通常是配合使用的。比如 TLS 握手时,先用非对称加密协商出一个对称密钥,然后用对称加密传输数据。这就是所谓的混合加密。在 TEE 场景下,我们也会用类似思路:用非对称签名做身份认证,用对称加密保护 Enclave 内部数据。
总结一下: 对称加密管效率,非对称加密管安全分发,哈希函数管完整性,数字签名管身份认证。密钥管理管好这一切的根基。把这几个点吃透了,后面讲 TEE 签名验签方案时,你就能理解为什么每一步要这么设计。