3. 存储密钥威胁模型:物理攻击、侧信道、提权与社工
做安全方案,先得搞清楚敌人是谁,怎么下手。光知道SM4算法多难破解没用——密钥存哪儿、怎么被偷,才是命门。
我习惯把密钥的威胁先归个类。说白了,就是四个方向:物理攻击、侧信道攻击、软件提权、社会工程学。这四路敌人打法完全不同,防护也得对症下药。
3.1 物理攻击——真刀真枪拆你硬件
物理攻击,就是直接动手拆芯片。我有个客户,产品放在户外机柜里,结果被人把外壳撬开,用探针搭在SPI Flash引脚上读出了密钥。嗯,当时Flash里明文存的SM4主密钥。
- 开盖攻击:用酸腐蚀芯片封装,露出裸片,然后用微探针或聚焦离子束(FIB)修改电路、读取存储单元。
- 探针攻击:直接接触总线、寄存器或存储单元,窃取运行时的密钥值。
- JTAG/SWD调试:通过未锁死的调试接口读取内存或寄存器。
- 总线侦听:在存储器和CPU之间的总线上挂物理探针,捕获传输的密钥。
一句话避坑: 芯片封装级防护(顶层金属网格、主动屏蔽层)是物理攻击的底线,但成本高。如果产品价值低,至少做到密钥不在明文中传输,且Flash加密存储。
3.2 侧信道攻击——看不见的信号泄露
侧信道攻击,不打你也不拆你,就“听”你芯片运行时的功耗、电磁、时间。它利用密钥参与运算时的物理特征差异来反推。我测过国内某款SM4硬件实现,功耗轨迹里藏着明显的汉明重量特征,一测一个准。
- 功耗分析:采集加密时的电流波形,做SPA、DPA。SM4的S盒查找操作,每个不同输入对应的功耗不一样。
- 电磁辐射:用近场探头贴芯片表面,捕获电磁泄露,本质和功耗分析一样。
- 时序分析:看运算时间差异。如果SM4实现里做了条件分支(比如密钥的某个比特影响循环次数),时间就会不一样。
- 缓存计时:攻击者和加密进程跑在同一CPU上时,通过缓存命中率变化推断密钥。
| 攻击类型 | 测量目标 | 需要设备 | 最难防的点 |
|---|---|---|---|
| 简单功耗分析(SPA) | 瞬时电流波形 | 示波器、小电阻 | 操作序列泄露 |
| 差分功耗分析(DPA) | 多组波形统计 | 高速示波器 | 数据依赖功耗 |
| 电磁分析(EMA) | 近场电磁泄露 | 近场探头、频谱仪 | 屏蔽不彻底 |
| 缓存计时攻击 | 加密时间 | 普通PC | 云环境多租户 |
我的经验: 掩码方案(masking)一定要做乱序和随机填充,否则DPA分分钟破掉。但掩码会占用额外硬件面积,平衡成本和安全是个工程活。
3.3 软件提权——从系统内部下手
软件提权不走硬件,靠操作系统或应用的漏洞,让普通进程拿到root权限,然后直接读密钥文件或内存。你想想,如果密钥存放在一个全局可读的文件里,提权后就能直接cat出来。
- 内核漏洞:如CVE-2021-1786,利用内核堆溢出提权。
- 权限提升竞态:利用setuid程序中的time-of-check time-of-use(TOCTOU)漏洞。
- 动态库劫持:恶意代码修改LD_PRELOAD环境变量,把正常的密钥调用函数替换掉。
- 调试接口滥用:ptrace附加到密钥守护进程,读取其寄存器或内存。
防护黄金法则: 密钥在CPU的安全区域内使用(如ARM TrustZone、Intel SGX),用户态和普通内核态都不可直接访问。密钥存储权限设为仅root(或更小范围)不够,一定要搭配最小特权+完整强制访问控制(SELinux/AppArmor)。
3.4 社会工程学——最没技术含量也最有效的攻击
前面三个好歹要懂点代码或硬件。社会工程学?骗。我认识一个安全团队,他们自己人用U盘伪装成礼品,插进内部电脑就自动运行恶意软件,拷贝了密钥数据库。这事让我印象深刻:再坚固的技术墙,也怕人开口子。
- 钓鱼邮件:诱骗运维人员执行带后门的脚本,窃取密钥。
- 内部人员:离职员工或收买的内鬼,直接复制密钥备份。
- 供应链攻击:硬件供应商在固件中留下后门,或软件库在编译时插入窃密钥的代码。
- 肩窥:盯着工程师输入密钥管理系统的密码。
我曾经踩过的坑: 公司密钥管理系统(KMS)的密码写在工位便利贴上,保洁阿姨看到了。后来全员培训+强制密钥双人授权才能导出。千万、千万别低估社会工程学的杀伤力。
3.5 四种威胁的对比与防御概览
| 威胁类别 | 攻击难度 | 常见攻击向量 | 核心防护措施 |
|---|---|---|---|
| 物理攻击 | 高(需要专业设备) | 开盖、探针、JTAG | 芯片主动屏蔽、总线加密、物理不可克隆函数 |
| 侧信道攻击 | 中高 | 功耗、电磁、时序 | 掩码、乱序执行、恒定时间实现 |
| 软件提权 | 中 | 内核漏洞、TOCTOU、调试 | 安全区域隔离、最小特权、SELinux |
| 社会工程学 | 低(与人有关) | 钓鱼、内鬼、供应链 | 安全培训、双人授权、代码审查 |
威胁模型分析不是一次性工作。我建议每个季度重新审视一次,特别是软件提权和侧信道攻击的手段更新很快。物理攻击和社会工程学则偏向基础防护的持续检查。嗯,把这四块记牢了,后面的边界隔离方案才能有的放矢。