一、侧信道攻击概述

各位同学,今天咱们来聊聊侧信道攻击。说实话,我第一次接触这个概念是在做智能卡安全评估的时候。当时我盯着示波器上的波形,突然意识到——原来密码算法在执行过程中,会像人一样「泄露」自己的秘密。

1.1 什么是侧信道攻击

侧信道攻击,说白了就是不走寻常路。传统的攻击方式,比如暴力破解、数学分析,都是盯着算法本身下手。但侧信道攻击不一样——它利用的是设备在执行密码运算时产生的物理泄露。

你想想看,一个芯片在计算加密时,它的功耗会变化、会发热、会发出微弱的电磁波,甚至运算时间都会有细微差异。这些「边边角角」的信息,就是侧信道。

核心定义:侧信道攻击(Side-Channel Attack, SCA)是一种利用密码系统实现过程中泄露的物理信息来破解密钥的攻击方法,而非攻击算法本身的数学弱点。

我记得有一次做项目评估,客户说他们的算法是AES-256,理论上牢不可破。我笑了笑,拿出示波器夹在电源线上,不到十分钟就把密钥还原出来了。客户当时的表情,嗯,很精彩。

1.2 侧信道攻击的分类

侧信道攻击按照泄露的物理载体,主要分为以下几类。我按实际项目中遇到的频率来排个序:

攻击类型 物理载体 攻击难度 我遇到的频率
时序攻击 执行时间 ★★★★
功耗攻击 电流/电压 ★★★★★
电磁攻击 电磁辐射 中高 ★★★
声学攻击 声音信号 ★★

时序攻击(Timing Attack)

这是最直观的一种。不同的输入数据会导致不同的执行时间。比如,在RSA解密中,如果密钥位是1就做乘法,是0就跳过——那时间差异就暴露了密钥。

我曾经测试过一个嵌入式设备的RSA实现,它的模幂运算用了「平方-乘」算法。我只需要发送几千次不同的密文,统计响应时间,就能把私钥一位一位地抠出来。嗯,这里要注意:时序攻击不需要昂贵的设备,一台普通电脑加网络延迟测量就够了。

避坑指南:我曾经见过一个团队,他们花了大量精力做功耗防护,却忘了时序攻击。结果攻击者用最简单的网络延迟测量就攻破了。记住:时序攻击是侧信道里最容易被忽视的「隐形杀手」。

功耗攻击(Power Analysis Attack)

功耗攻击是侧信道里的「重头戏」。芯片在执行不同指令时,消耗的电流是不一样的。简单功耗分析(SPA)直接看波形,差分功耗分析(DPA)则用统计方法。

我做过一个实验:在智能卡上跑DES算法,用示波器采集电源线上的电压波动。当算法处理到密钥的某一位时,波形上会出现明显的特征。你想想看,密钥就在那里,像心电图一样清晰。

// 一个简化的功耗采集伪代码
for each plaintext P:
    send_to_card(P)
    capture_power_trace()
    store_trace(trace, P)

// DPA核心:按密钥假设分组
for each key_guess K:
    for each trace:
        calculate_intermediate_value(P, K)
        if bit == 1: group1.append(trace)
        else: group2.append(trace)
    diff = mean(group1) - mean(group2)
    if diff has spikes: K is correct!

电磁攻击(Electromagnetic Attack)

电磁攻击是功耗攻击的「升级版」。它不需要接触设备,用电磁探头靠近芯片就能采集到辐射信号。而且,电磁攻击可以聚焦到芯片的特定区域,比如只采集ALU附近的辐射。

我记得有一次在实验室里,我们用电磁探头扫描一个手机安全芯片。探头离芯片只有2毫米,采集到的信号比电源线上的还要清晰。为什么?因为电源线上的噪声太多,而电磁信号更「干净」。

注意:电磁攻击的防护比功耗攻击难得多。你可以加滤波电容来平滑功耗,但电磁辐射是「无孔不入」的。屏蔽罩、布局优化、甚至芯片级的防护都需要考虑。

声学攻击(Acoustic Attack)

这个听起来有点科幻,但确实存在。芯片上的电容在充放电时会发出微弱的「滋滋」声,不同频率的声音对应不同的运算。我记得2013年有篇论文,用手机麦克风就成功破解了RSA密钥。

不过说实话,声学攻击在实际项目中很少见。它对环境要求太高——需要安静的实验室、高灵敏度麦克风、而且容易被背景噪声干扰。我个人觉得,声学攻击更多是学术上的「炫技」,实战价值有限。

1.3 攻击模型与威胁建模

做侧信道攻击,首先要搞清楚「攻击者能接触到什么」。我一般把攻击模型分为三个层次:

  • 黑盒模型:攻击者只能观察输入输出,无法接触设备内部。比如远程时序攻击。
  • 灰盒模型:攻击者可以物理接触设备,但无法拆解。比如用示波器采集功耗。
  • 白盒模型:攻击者可以完全控制设备,甚至能修改固件。比如逆向工程+侧信道。

威胁建模的时候,我习惯问自己三个问题:

  1. 攻击者的物理接触程度如何?(能摸到设备吗?能拆开吗?)
  2. 攻击者的设备预算有多少?(几千块的示波器?还是几十万的电磁扫描台?)
  3. 攻击者的时间窗口有多长?(几秒钟?还是可以长期监控?)

这三个问题决定了你的防护策略。比如,如果攻击者只能远程访问,那重点防时序攻击就够了。但如果攻击者能拿到设备,那功耗和电磁防护都得跟上。

我的经验:很多团队在做安全设计时,只考虑了「理论上的攻击者」,却忽略了「实际中的攻击者」。我曾经见过一个产品,号称通过了所有标准安全认证,结果被一个高中生用几百块的示波器就攻破了。为什么?因为认证测试用的是理想环境,而实际攻击者会用各种「脏」手段。

好了,侧信道攻击的概览就到这里。记住一句话:密码算法是安全的,但密码实现不是。接下来的章节,我们会深入每个攻击类型的具体技术细节。

侧信道攻击知识体系 侧信道攻击 时序攻击 功耗攻击 电磁攻击 声学攻击 攻击模型:黑盒 / 灰盒 / 白盒 威胁建模:接触程度 / 设备预算 / 时间窗口 攻击类型 攻击模型 威胁建模