4、密码算法引擎:对称算法、非对称算法、哈希算法的硬件加速器选型
各位做安全芯片的朋友,咱们今天聊聊密码算法引擎的选型。说实话,这是整个安全芯片的“心脏”。你算法引擎选得不好,后面所有安全机制都是空中楼阁。我这些年评估过的芯片不下几十款,踩过的坑也不少,今天把核心经验分享出来。
4.1 对称算法加速器:AES-128/256
对称算法这块,AES是绝对的主流。128和256位密钥长度,基本覆盖了EMV、PCI、FIPS等所有主流安全标准。我个人习惯,先看芯片是否支持硬件AES引擎,而不是靠CPU软跑。
核心指标:
- 吞吐率:至少1Gbps以上,否则在高速交易场景下会成为瓶颈
- 密钥存储:是否支持硬件密钥寄存器,防止密钥被软件窃取
- 模式支持:ECB、CBC、CTR、GCM等常见模式是否齐全
我在项目中遇到过一款芯片,AES引擎标称能跑2Gbps,但实际测试发现,它只支持ECB模式硬件加速,CBC模式要靠软件模拟。你想想看,这跟没加速有什么区别?所以选型时一定要确认所有常用模式都走硬件。
避坑指南:我曾经因为没仔细看datasheet,选了一款AES引擎不支持DMA的芯片。结果每次加密都要CPU搬运数据,性能直接腰斩。记住,硬件加速器必须配合DMA使用,否则就是半残废。
4.2 非对称算法加速器:RSA/ECC/SM2
非对称算法是安全芯片的“重武器”。RSA、ECC、SM2这三驾马车,选型时各有门道。
4.2.1 RSA加速器
RSA虽然老了,但在金融领域依然坚挺。关键看密钥长度支持:1024、2048、4096位。我个人建议,至少支持2048位,4096位最好有,虽然慢但合规需要。
嗯,这里要注意:RSA硬件加速器通常用蒙哥马利模乘器实现。好的芯片会提供可配置的模乘器位数,比如支持512-4096位动态配置。我见过一些芯片只固定支持2048位,遇到4096位场景直接罢工。
4.2.2 ECC加速器
ECC现在越来越重要,尤其是EMVCo 3.0以后。选型时关注三点:
- 曲线支持:P-256、P-384、Curve25519等是否齐全
- 标量乘法:是否硬件实现,这直接影响签名/验签速度
- 侧信道防护:是否有硬件级别的抗SPA/DPA设计
警告:我曾经测试过一款ECC加速器,标称支持P-256,但实际跑签名时发现,私钥在运算过程中会被泄露到总线。这种芯片绝对不能用于金融支付场景。选型时一定要确认芯片是否有硬件隔离机制。
4.2.3 SM2加速器
国密SM2,现在国内金融芯片的标配。说实话,很多国外芯片对SM2支持很敷衍。我建议选型时:
- 确认SM2是否走独立硬件引擎,而不是用ECC引擎“兼容”
- 检查SM2签名速度是否达到1000次/秒以上
- 验证SM2密钥对生成是否硬件随机数参与
4.3 哈希算法加速器:SHA-256/SM3
哈希算法看似简单,但选型不当同样会出问题。SHA-256和SM3是当前主流。
| 算法 | 硬件加速器要求 | 典型吞吐率 | 我的建议 |
|---|---|---|---|
| SHA-256 | 支持多消息并行处理 | ≥500Mbps | 必须硬件实现,软件跑太慢 |
| SM3 | 独立硬件引擎 | ≥300Mbps | 确认与SHA-256不共用寄存器 |
为什么强调不共用寄存器?我在项目中遇到过一款芯片,SHA-256和SM3共用一组工作寄存器。切换算法时需要软件清空寄存器,结果清空操作本身就有侧信道风险。说白了,硬件设计上省成本,最后坑的是安全。
选型核心原则:所有密码算法引擎必须满足以下三点:
- 硬件独立实现,不依赖CPU模拟
- 支持DMA传输,减少CPU干预
- 具备侧信道防护能力(至少功耗均衡)
4.4 知识体系总览
下面这张图,是我自己总结的密码算法引擎选型框架。你选芯片时,拿这张图对照着看,基本不会漏项。
这张图把三大类算法的选型要点都串起来了。你选芯片时,先看对称算法是否支持所有模式,再看非对称算法是否有独立引擎和侧信道防护,最后确认哈希算法是否硬件实现。顺序别搞反了,我见过有人先看哈希再看非对称,结果非对称引擎不支持SM2,前面全白干。
个人经验:我评估芯片时,会先跑一个“三合一”压力测试:同时启动AES加密、ECC签名、SHA-256哈希,看芯片会不会死锁或性能骤降。很多芯片单跑没问题,一并发就露馅。这个测试方法,我建议你也试试。
好了,密码算法引擎的选型就聊到这儿。记住,硬件加速器不是“有就行”,而是要“好用、安全、合规”。下次你拿到芯片datasheet,对照着今天讲的框架,一条条过,基本不会出大错。
公众号:蓝海资料掘金营,微信deep3321