4、密码学基础回顾:对称加密(AES)、非对称加密(RSA、ECC)、哈希函数、分组密码模式,以及侧信道攻击的密码学目标

侧信道攻击(Side-Channel Attack, SCA)的核心并非直接攻破数学算法,而是利用密码算法在物理实现过程中泄露的功耗、电磁辐射、时间延迟等侧信道信息,来恢复密钥或敏感数据。因此,理解密码学基础是开展侧信道攻击与防护的前提。本章将系统回顾对称加密(AES)、非对称加密(RSA、ECC)、哈希函数、分组密码模式,并明确侧信道攻击所针对的密码学目标,为后续的功耗分析、电磁注入等实战操作奠定理论基础。

密码学基础与侧信道攻击目标映射 对称加密 (AES) • 密钥:128/192/256 bit • 操作:SubBytes/ShiftRows/ MixColumns/AddRoundKey • 侧信道目标:轮密钥 非对称加密 (RSA/ECC) • RSA: 大整数分解难题 • ECC: 椭圆曲线离散对数 • 侧信道目标:私钥 d / k • 典型攻击:SPA/DPA 哈希函数 (SHA-256) • 单向性、抗碰撞性 • 填充、压缩函数、Merkle • 侧信道目标:中间状态 • 攻击:长度扩展/功耗 分组密码模式 (ECB/CBC/CTR/GCM) ECB: 相同明文→相同密文,泄露模式 CBC: 需要IV,串行加密,错误传播 CTR: 计数器并行,可随机访问 GCM: 认证加密,CTR+GHASH 侧信道攻击目标 • 密钥恢复 (Key Recovery) • 中间状态提取 (Intermediate) 功耗分析 (SPA/DPA) 电磁辐射 / 时间侧信道 故障注入 (Fault Attack) 时钟毛刺 / 电压毛刺 最终目标:恢复密钥 / 伪造签名 / 绕过认证

4.1 对称加密:AES 算法结构与侧信道切入点

核心原理:AES(Advanced Encryption Standard)是当前最广泛使用的对称分组密码,分组长度为128位,支持128/192/256位密钥。其轮函数由四个可逆变换组成:SubBytes(S盒非线性替换)、ShiftRows(行移位)、MixColumns(列混合)和AddRoundKey(轮密钥异或)。AES-128共执行10轮,每轮使用由主密钥经密钥扩展算法生成的轮密钥。

侧信道攻击切入点:攻击者最常利用的是第一轮和最后一轮的AddRoundKey操作。在第一轮中,明文已知,S盒输出与密钥直接相关;在最后一轮中,密文已知,逆S盒输入与轮密钥相关。通过采集设备在加密过程中的功耗轨迹,建立功耗模型(如汉明重量模型),即可通过统计相关性分析(DPA)或模板攻击恢复轮密钥。

AES 轮操作 数学描述 侧信道泄露点 攻击方法
SubBytes y = S-box(x) S盒输出值的汉明重量 DPA/CPA 选择函数
AddRoundKey y = x ⊕ k 异或后中间值的功耗 模板攻击
MixColumns 矩阵乘法 (GF(2^8)) 列混合后字节的功耗 高阶DPA

实战场景:假设目标设备为智能卡,内部运行AES-128加密。攻击者使用数字示波器以100MS/s采样率采集加密过程中的功耗轨迹。已知明文为0x000102030405060708090A0B0C0D0E0F,采集1000条轨迹后,针对第一轮SubBytes输出建立汉明重量模型,计算与功耗轨迹的皮尔逊相关系数。当相关系数峰值出现在某个密钥字节假设值上时,即可确定该字节密钥。重复16次,完整恢复128位密钥。

常见误区:初学者常误以为AES的数学强度高,侧信道攻击无法奏效。实际上,侧信道攻击不针对算法本身,而是针对物理实现。即使AES在数学上不可破解,其硬件实现中的功耗泄露仍可被利用。此外,仅关注第一轮攻击而忽略最后一轮攻击,可能因噪声过大导致攻击失败。

4.2 非对称加密:RSA 与 ECC 的侧信道脆弱性

核心原理:RSA基于大整数分解难题,私钥操作(解密/签名)涉及模幂运算:m = c^d mod n。ECC基于椭圆曲线离散对数问题,私钥操作涉及标量乘法:Q = k·P。两者在数学上均被认为是安全的,但其实现中的分支操作、乘法运算次数与密钥位值直接相关,导致侧信道泄露。

判断方法与操作流程:

  1. SPA(简单功耗分析):观察单条功耗轨迹,识别RSA模幂运算中“平方-乘”序列。若乘操作与密钥位1对应,则功耗轨迹直接泄露密钥位。
  2. DPA(差分功耗分析):针对ECC标量乘法,采集多条轨迹,按中间值(如点加/点倍结果)分类,通过差分统计恢复密钥位。
  3. 计时攻击:测量不同密文下的解密时间,利用模约减的时序差异推断密钥。
算法 数学难题 典型密钥长度 侧信道泄露点 防护对策
RSA 大整数分解 2048/3072 bit 模幂运算的平方-乘序列 蒙哥马利阶梯、盲化
ECC 椭圆曲线离散对数 256/384 bit 标量乘法的点加/点倍 随机化投影坐标、伪操作

经验提醒:在评估非对称算法安全性时,务必检查实现是否采用了恒定时间算法。例如,RSA的二进制模幂算法中,若使用“if (bit == 1) 执行乘操作”,则密钥位直接暴露在功耗轨迹中。推荐使用蒙哥马利阶梯算法,使每次迭代都执行相同的操作序列。

4.3 哈希函数:SHA-256 与侧信道风险

核心原理:SHA-256将任意长度消息填充至512位块,通过64轮压缩函数处理。压缩函数包含逻辑函数(Ch、Maj)、循环移位和模加操作。哈希函数本身不涉及密钥,但在HMAC、密钥派生等场景中,密钥参与哈希运算,导致侧信道泄露。

案例拆解:在HMAC-SHA-256中,密钥与消息拼接后进入哈希运算。攻击者采集设备计算HMAC时的功耗轨迹,针对第一轮压缩函数中的模加操作建立功耗模型。由于密钥与消息异或后作为初始哈希值,功耗泄露可被用于恢复密钥。实际攻击中,攻击者利用模板攻击,在已知消息的情况下,仅需约1000条轨迹即可恢复128位密钥。

常见误区:许多开发者认为哈希函数是“单向”的,因此侧信道攻击无效。但在HMAC、基于哈希的签名(如Ed25519)中,密钥参与运算,侧信道攻击可提取密钥。此外,SHA-256的填充操作(长度扩展攻击)也可能被利用,但这是算法层面的问题,与侧信道无关。

4.4 分组密码模式:ECB/CBC/CTR/GCM 的安全属性

核心原理:分组密码模式定义了如何将固定长度的分组密码应用于任意长度消息。ECB模式独立加密每个分组,相同明文产生相同密文,泄露数据模式;CBC模式引入IV,加密串行化,错误传播;CTR模式将计数器加密后与明文异或,支持并行处理;GCM模式结合CTR加密与GHASH认证,提供机密性和完整性。

侧信道攻击视角:模式选择影响侧信道攻击的难度。CBC模式中,攻击者可控制IV,从而控制第一分组的输入,便于DPA攻击;CTR模式中,攻击者可控制计数器值,同样便于选择明文攻击。GCM模式中,GHASH运算涉及密钥相关的乘法,可能泄露认证密钥。

模式 加密方式 并行性 错误传播 侧信道攻击难度
ECB 分组独立 高 无 低(模式泄露)
CBC 链式异或 低 有 中(IV可控)
CTR 计数器异或 高 无 中(计数器可控)
GCM CTR+GHASH 高 无 高(认证密钥泄露)

实战场景:某物联网设备使用CBC模式加密传感器数据,IV为固定值0x00000000000000000000000000000000。攻击者利用固定IV的弱点,选择不同明文进行加密,采集功耗轨迹。由于IV固定,第一分组的输入完全由明文控制,攻击者可通过DPA攻击恢复AES密钥。修复方案:使用随机IV,并在每次加密前更新。

4.5 侧信道攻击的密码学目标与攻击模型

核心原理:侧信道攻击的最终目标是恢复密码算法中的秘密参数(密钥、随机数、中间状态)。攻击模型分为非侵入式(功耗、电磁)、侵入式(探针)和半侵入式(故障注入)。攻击者能力假设包括:已知明文/密文、可控输入、可观测物理泄露。

操作流程:

  • 步骤1:确定攻击目标(如AES轮密钥、RSA私钥、ECC标量)。
  • 步骤2:选择攻击方法(SPA/DPA/模板/故障)。
  • 步骤3:采集物理泄露(功耗轨迹、电磁辐射)。
  • 步骤4:建立功耗模型(汉明重量、汉明距离)。
  • 步骤5:统计分析(相关系数、互信息、似然比)。
  • 步骤6:验证密钥正确性(解密测试)。

经验提醒:在评估系统安全性时,应明确攻击者的能力边界。例如,若攻击者无法控制明文(如固定协议数据),则选择明文攻击不可行,可考虑选择密文攻击或已知明文攻击。此外,防护措施(掩码、隐藏、恒定时间)应针对具体攻击路径设计,而非盲目堆砌。

常见误区:部分开发者认为侧信道攻击需要昂贵设备,实际上,使用普通示波器和电阻采样即可完成SPA/DPA攻击。此外,故障注入攻击(如时钟毛刺)可绕过软件防护,直接导致密钥泄露或认证绕过。安全评估应覆盖物理攻击面,而非仅关注算法强度。