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
社会工程学 低(与人有关) 钓鱼、内鬼、供应链 安全培训、双人授权、代码审查
存储密钥威胁模型全景图 SM4 密钥存储 物理攻击 侧信道攻击 软件提权 社会工程学 开盖、探针、调试口 功耗、电磁、缓存计时 内核漏洞、竞态、调试 钓鱼、内鬼、供应链

威胁模型分析不是一次性工作。我建议每个季度重新审视一次,特别是软件提权和侧信道攻击的手段更新很快。物理攻击和社会工程学则偏向基础防护的持续检查。嗯,把这四块记牢了,后面的边界隔离方案才能有的放矢。