隔离技术守住的是"通过正常接口的攻击",本节面对更凶残的对手:拿到芯片本身的人。攻击者可以测量它的功耗、扰动它的供电、用探针戳它的内部——物理攻击不看代码逻辑,专打实现过程中的物理泄漏。本节把三类物理威胁(侧信道、故障注入、侵入探测)与对应防护讲清,并以 CK770 功耗侧信道的评估与加固做实战演示。读完你应当能为一个产品划定物理安全等级,并按"攻击成本梯度"配置防护,而不是无脑堆料。
物理攻击的分类依据是"动没动芯片"。侧信道攻击:芯片一动不动地正常工作,攻击者只观测它的物理副产物——功耗曲线、电磁辐射、执行时间。密码运算处理不同数据时耗电不同,这条物理规律把"理论上不可破"的算法打回现实:统计学方法从几千条功耗曲线里捞出密钥的比特信息,史称功耗分析。故障注入:用电压毛刺、时钟毛刺、激光脉冲在运算关键时刻"打错一拍",让芯片跳过校验、输出错误但可分析的结果——著名的例子是让签名运算出错一次,两次错误签名的数学差值能倒推出私钥。侵入攻击:开封、微探针读取、修改内部连线,成本最高但威力最大。
三类攻击的成本梯度相差两三个数量级,这决定了防护配置的基本逻辑:防护等级对齐攻击成本与资产价值的比值。传感数据值不了太多钱,防到侧信道与低成本故障注入即可;支付与身份类资产,侵入级防护才上桌。安全工程在这里与商业判断合流——堆满所有防护的产品,要么贵到卖不动,要么慢到没法用。
| 威胁类别 | 攻击手段 | 防护对策 | 对策的代价 |
|---|---|---|---|
| 侧信道 | 功耗分析、电磁嗅探、时间差 | 恒定时间实现、数据无关功耗(掩码与均衡)、随机化时序 | 性能下降数成,设计复杂度大增 |
| 故障注入 | 电压毛刺、时钟毛刺、光注入 | 关键运算双通道冗余比对、供电时钟监测、状态机锁定 | 面积与延迟翻倍,验证负担加重 |
| 侵入探测 | 开封、微探针、聚焦离子束 | 有源金属屏蔽网、布局扁平化、传感器阵列(电压温度光) | 封装与成本上升,屏蔽网要持续供电 |
| 平台级 | 拆解复用、调试口滥用 | 一次性可编程熔丝锁定、调试鉴别、部件配对认证 | 运营与供应链复杂度上升 |
表里有一列值得单独强调:对策的代价。物理防护几乎每一项都在性能、面积、功耗上开账单——恒定时间实现要求运算时间与数据无关,查表优化的性能红利全部作废;双通道冗余让面积接近翻倍;有源屏蔽网永久消耗静态功耗,7.1 节的待机科目要为它留行。安全决策的实质是拿这些账单去对资产价值,这也呼应 1.2 节的立项方法论:一切防护都要过"值不值"那道闸。
背景:安全评审为 CK770 定的物理等级要求"抵御中低成本侧信道"。初版实现里,签名运算的功耗曲线与所处理数据的汉明重量明显相关——教科书级的侧信道泄漏特征。评审判定:不加固,等级不达标。
操作。 加固分三步,每步都先测量后动手。第一步建立基线:采集板级功耗轨迹一万条,用相关功耗分析的教科书流程测试,确认初版实现的确在若干关键中间值上泄漏——泄漏点定位到模乘运算的数据相关分支。第二步分级加固:对泄漏最重的模乘改恒定时间实现(去掉数据相关的分支与查表,改用固定模式的 Montgomery 阶梯);对密钥加载引入掩码——密钥在运算中被拆成两份随机份额分别处理,功耗曲线上的相关特征被随机性打散;对外层再加时序随机化(插入随机延迟),打散轨迹的对齐。第三步回归测量:加固后重复一万条轨迹的分析,泄漏指标降到基线的百分之一以下,达到等级要求。
结果。 防护达标,账单也如期而至:恒定时间实现让签名慢了约四成,掩码让电路面积增加约百分之六,随机延迟让单次服务时延方差变大。三笔账都进了台账:签名慢四成被 7.2 节的批量门控调用摊薄(安全服务挪到深睡前的批量窗口执行),面积与功耗的新增科目在 7.1 节预算表里补登——安全、性能、功耗三本账在同一个评审周期里完成了对齐。
解读。 案例的方法论核心是**"先测量后动手、边加固边回归":侧信道防护不测量就加固,等于蒙眼开药——泄漏点可能在别处,加固了寂寞。测量驱动的循环(基线、加固、回归)与 5.1 节覆盖率驱动的循环同构,安全工程与验证工程的骨子里都是"证据驱动"。另一个值得记的点是防护的位置在科目间腾挪**:这次加固的时延代价被功耗章的批量调度消化、面积代价被预算表补登——跨章节的联动治理在全册反复出现,这里是它最后一次登台。
变式。若攻击者预算升级(威胁模型上探到故障注入),恒定时间与掩码之外还要加双通道冗余:关键运算两份实现并行跑、结果异同比对,单点注入难以同时骗过两份;若产品形态是封闭封装的可穿戴,物理接触难度本身抬高了攻击成本,防护等级可以相应下调半档——威胁模型跟着产品形态走,防护跟着威胁模型走,这条传导链是本节真正要带走的东西。
电磁侧信道的防治还能借到版图设计一臂之力:把密码运算的数据通路在布局上均衡展开(各比特的走线环境对称),电磁泄漏的空间分布就更接近"数据无关";把敏感运算远离芯片边缘与电源引脚,泄漏信号抵达外部探针前先经过更多衰减。这些手段与 6.1 节的布图评审在同一张图上完成——安全约束与物理约束合流的又一个落点,也再次说明 SoC 里没有"纯软件的安全问题"。
常规密码实现快,靠的是"看数据走捷径":数据是什么值就跳过哪段运算、查哪张表。恒定时间实现把这些捷径全部封死——无论密钥比特是零是一,执行的指令序列、访存地址模式完全一致。捷径没了,速度自然回到"全走大路"的水平,慢三到五成是常态。理解了这层因果关系,就明白恒定时间不是某种昂贵的附加电路,而是主动放弃数据依赖优化的纪律——它的成本发生在性能预算里,而不是面积账上。
随机化对抗的不是单条曲线的信噪比,而是曲线之间的对齐。统计攻击的前提是把几千条功耗轨迹按时间对齐后做平均——特征在固定位置叠加放大,无关噪声相互抵消。给每次运算插入随机长度的延迟,等于把每条轨迹的关键特征挪到不同位置,平均时特征不再叠加,而是被自己人抵消。所以它和掩码是互补的两种打法:掩码压低特征本身的幅度,随机化破坏统计对齐的前提,双管齐下的效果远好于单打。
有,而且它是唯一能让防护成绩单"对账"的手段。自建防护与攻击者视角之间隔着一条经验鸿沟:设计者知道防了什么,攻击者专找没想到的。渗透测试的价值不在复测已防住的路径,而在用真实的攻击工具链(功耗采集套件、毛刺注入台、故障相机)把"防住的"变成"验证过防住的",把"没想到的"暴露成新科目。CK770 的渗透测试就曾在防护齐备的前提下,从调试口的供电毛刺敏感性上找到一条低危新路径——补丁很小,价值在于它证明了这个流程能把盲区变成清单。渗透测试不是考试,是照妖镜,按版本定期照比一次通过重要得多。
物理攻防布防完毕,安全三节到齐。最后一节走完交付的最后一公里:固件、启动链的现场调试与软件栈适配——CK770 台账的收官之页。