加密算法基石:AES、RSA、ECC、SHA-256在令牌化中的角色,密钥长度选择
好,我们进入第3章。这一章很关键,说白了就是搞清楚令牌化方案里用的那些密码算法到底是什么、怎么搭。
很多刚接触HSM的朋友会问:我直接用AES加密一个敏感数据不就完了?为什么还要扯上RSA、ECC甚至SHA-256?
嗯,这里我们慢慢聊。令牌化不是简单的加密,而是一个组合流程。每种算法各司其职,缺一不可。
3.1 AES:令牌生成的核心引擎
AES,全称Advanced Encryption Standard,是现在用得最广的对称加密算法。我个人的习惯是,只要令牌化方案里没有特别要求兼容老系统,一律上AES。
它起什么作用?
- 直接生成令牌():用AES加密原始敏感数据,输出密文作为令牌
- 保护密钥:在HSM内部,AES用于加密其他密钥(Key Encryption Key,KEK)
- 高速处理:HSM内部用硬件加速AES,吞吐量极高。我记得在某个支付项目中,HSM的AES加密能力跑到每秒几十万笔
密钥长度选择
AES支持的密钥长度有128、192、256位。怎么选?
| 密钥长度 | 安全强度 | 性能 | 我推荐 |
|---|---|---|---|
| 128位 | 足够抵抗暴力破解(10^38量级) | 最快 | 一般业务系统 |
| 192位 | 更高,但通常不必 | 中等 | 偶尔用于合规 |
| 256位 | 强到量子计算机都头疼 | 稍慢(但HSM硬件下差距很小) | 我选这个——安全合规一步到位 |
一句话总结:AES-256是当前令牌化方案里的标配。
3.2 RSA vs. ECC:非对称的战场,密钥交换与签名
非对称加密在令牌化里主要做两件事:密钥交换和数字签名。RSA和ECC是两大主流,但选择上我得说两句。
RSA:老牌劲旅
- 签名:令牌生成方用私钥对令牌签名,验证方用公钥验证
- 密钥传输:用RSA公钥加密AES密钥,安全传输给HSM内部
- 兼容性:几乎所有系统和HSM都支持
ECC:后起之秀
- 更短密钥:256位ECC≈3072位RSA的安全强度
- 性能:签名快,但验证稍慢于RSA
- 我建议:在移动端、IoT场景里优先用ECC
密钥长度选择对比
| RSA长度 | ECC长度 | 安全强度 |
|---|---|---|
| 2048位 | 224位 | 112位 |
| 3072位 | 256位 | 128位 |
| 7680位 | 384位 | 192位 |
避坑指南:我曾经在一个金融项目中,客户坚持用RSA-4096,结果HSM的签名性能压不上去。后来换成ECC-384,签名速度快了不止一倍。你想想看,HSM是硬件设备,但算法选不好一样会卡脖子。
3.3 SHA-256:不只是哈希,更是完整性守护者
SHA-256是SHA-2家族的一员,输出256位哈希值。它在令牌化方案里的角色有点“不起眼”,但少了她整个系统都转不动。
- 令牌衍生:对令牌做SHA-256,再截断作为子令牌(动态令牌需要)
- 完整性校验:对令牌原始数据做哈希,一起存起来,验证时比对
- 随机数生成:HSM常用SHA-256做熵源或PRNG的种子
SHA-256没有密钥长度选择问题——输出固定256位。你只要确认实现正确即可。
警告:不要在令牌化方案里用MD5或SHA-1。即使是用于内部校验,也是自找麻烦。今年安全审计过不了,明年更不可能。
3.4 它们如何协作?一张SVG图说清楚
下面这张图概括了AES、RSA/ECC、SHA-256在令牌化流程中的协作关系。
我说这张图:原始数据进了HSM安全域,AES负责核心加密;生成的令牌如果需要防篡改,就交给RSA或ECC签名;同时SHA-256在旁边做完整性校验。三者都是独立但有串联的环节。
3.5 密钥长度选择的实战建议
我只说三点,也都是我在项目里踩过的坑:
- 对称密钥(AES):选256位。别问为什么,合规迟早要求
- 非对称密钥(RSA/ECC):
- 如果已有HSM只支持RSA,选3072位以上
- 如果支持ECC,我建议用P-256或P-384
- 不要为了图省事选RSA-2048,未来五年内可能被淘汰
- 哈希函数:SHA-256足够了。别用SHA-512,性能下降明显但安全收益在令牌化场景里几乎为零
亲自踩过的坑:我曾经在一个保险公司的令牌系统里,客户坚持用AES-128,认为“够用就行”。结果三年后监管要求上256位,整个HSM密钥体系要重做,成本翻了将近两倍。
3.6 总结
这一章其实就是三件事:AES做核心加密,RSA/ECC做数字信封和签名,SHA-256保完整性。密钥长度选得好,系统跑得稳;选得差,后面全是窟窿。
代码层面没什么可贴的,因为真正的算法调用都在HSM硬件内部。你只需要告诉HSM用AES-256、ECC-256还是RSA-3072,剩下的交给硬件。