3、抗侧信道设计:功耗均衡技术、掩码技术、双轨逻辑设计

侧信道攻击,说白了就是攻击者不跟你正面硬刚算法,而是偷偷观察你的芯片在干活时的「小动作」。比如功耗波动、电磁辐射、甚至运算时间。我早年做一款金融加密狗时,就遇到过这种情况——算法本身固若金汤,结果功耗曲线一采集,密钥直接暴露了。嗯,那感觉就像你锁好了门,结果窗户没关。

所以这一章,我们来聊聊怎么堵上这些「窗户」。核心思路就三个:功耗均衡掩码技术双轨逻辑设计。它们各自解决不同层面的问题,但目标一致——让攻击者从物理观测中什么都读不出来。

3.1 功耗均衡技术

功耗均衡,顾名思义,就是让芯片在执行不同操作时,消耗的功率尽量一致。你想想看,如果做加法时功耗大,做减法时功耗小,攻击者一看曲线就知道你在干嘛。

我个人习惯把功耗均衡分成两个层次:

  • 算法级均衡:在软件层面,让每个操作周期都执行相同数量的翻转。比如在AES的S盒查找时,不管输入是什么,都强制做固定次数的寄存器翻转。
  • 电路级均衡:在硬件层面,使用互补逻辑或恒定电流源,让每条指令的功耗曲线几乎重合。

我在项目中遇到过一种情况:用软件做功耗均衡时,发现虽然平均功耗一致了,但高频成分还是有差异。后来加了硬件滤波才搞定。这里有个小技巧——不要只盯着均值,还要看方差

核心要点:功耗均衡不是让功耗变低,而是让功耗变「平」。攻击者最怕的不是高功耗,而是有规律的波动。

3.2 掩码技术

掩码技术,说白了就是给数据「化妆」。让真实数据在运算过程中,始终被一个随机数掩盖着。攻击者看到的功耗曲线,其实是「数据+随机数」的混合体,根本分不清哪个是哪个。

我常用的掩码方案有两种:

掩码类型 原理 适用场景
布尔掩码 将数据与随机数做异或运算 AES、DES等对称算法
算术掩码 将数据与随机数做加减运算 RSA、ECC等公钥算法

这里有个坑,我曾经踩过——掩码的随机数生成器如果不够随机,等于白搭。有一次我用了一个伪随机数发生器,周期太短,攻击者采集了几千条曲线就找到了规律。后来我换成了硬件真随机数发生器,问题才解决。

注意:掩码技术需要配合「重掩码」操作。如果同一个掩码用太久,攻击者可以通过统计方法把掩码剥离掉。我建议每个运算周期都刷新一次掩码。

举个简单的代码示例,布尔掩码在AES S盒中的应用思路:

// 伪代码:带掩码的S盒查找
uint8_t masked_sbox(uint8_t data, uint8_t mask) {
    uint8_t masked_data = data ^ mask;          // 输入加掩
    uint8_t masked_result = sbox[masked_data];  // 查表(注意:表也需要掩码化)
    uint8_t result = masked_result ^ mask;      // 去掩
    return result;
}

嗯,这里要注意——上面的代码只是演示思路。实际工程中,S盒本身也要预先做掩码处理,否则查表时的功耗还是会泄露信息。

3.3 双轨逻辑设计

双轨逻辑,是硬件层面的「防侧信道大招」。它的思路很简单:每个信号都用两根线来表示,一根是原信号,一根是它的反信号。这样不管数据是0还是1,每次翻转都有一根线从0变1,另一根从1变0,总功耗几乎恒定。

我最早接触双轨逻辑是在做智能卡芯片时。那会儿有个客户要求必须通过CC EAL6+认证,普通CMOS逻辑根本过不了侧信道测试。后来我们换用了双轨预充电逻辑(DPL),功耗曲线才变得像一条直线。

双轨逻辑的常见实现方式:

  • 双轨预充电逻辑(DPL):每个时钟周期先预充电,再求值。预充电阶段所有线都拉到高电平,求值阶段根据数据决定哪根线放电。
  • 双轨动态差分逻辑(DDDL):比DPL更激进,直接使用差分信号对,功耗均衡效果更好,但面积和功耗也更大。

个人经验:双轨逻辑的代价是面积翻倍、功耗翻倍。我建议只在关键路径(如密钥寄存器、S盒)上使用,没必要全芯片铺开。否则成本扛不住。

我曾经在一个项目中,为了追求极致安全,把整个数据通路都改成了双轨逻辑。结果流片回来,芯片面积大了两倍,功耗高了1.8倍,性能还降了30%。后来被老板骂了一顿……嗯,从那以后我学会了「按需加固」。

3.4 三种技术的协同使用

这三种技术不是互斥的,而是互补的。我个人习惯的搭配方案是:

  1. 软件层:用掩码技术保护数据,用算法级功耗均衡保护操作流。
  2. 硬件层:在关键寄存器上使用双轨逻辑,在普通逻辑上使用电路级功耗均衡。
  3. 系统层:配合随机时钟、噪声注入等辅助手段,进一步增加攻击难度。

你想想看,攻击者要同时破解掩码、绕过功耗均衡、还要应对双轨逻辑,这难度直接指数级上升。说白了,安全加固就是一场「成本与收益」的博弈——你让攻击者的成本远高于收益,他就放弃了。

总结一句话:功耗均衡让曲线变平,掩码让数据变乱,双轨逻辑让硬件变「哑」。三者结合,侧信道攻击基本没戏。

好了,这一章就聊到这儿。下一章我们会讲「主动屏蔽与电磁防护」,到时候再聊聊怎么对付那些更「暴力」的物理攻击手段。