2025年让CPU消耗成为密码学安全的X光机报告_第1页
2025年让CPU消耗成为密码学安全的X光机报告_第2页
2025年让CPU消耗成为密码学安全的X光机报告_第3页
2025年让CPU消耗成为密码学安全的X光机报告_第4页
2025年让CPU消耗成为密码学安全的X光机报告_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

让CPU消耗成为密

全的

X

机目录①一些需要提前了解的知识②

最初目的与成果③一个大胆的想法以及付出的行动④

想法不太灵

,验证一下吧!⑤不死心

,寻求更优秀的方案⑥

搞事情

,是吧~~~⑦

再次踏上征程⑧

躺平吧

,你没那种命!!!①一些需要提前了解的知识侧信道攻击的原理侧信道攻击不是破解密码算法本身,而是通过观测实现算法时泄露出来的“物理或运行痕迹”比如时间、功耗、电磁波、缓存行为、声学或热量等,从这些信号中恢复秘密。简单陈述:就是利用加密算法加解密时,使用密钥在某一段时间,某一段代码产生了某种信号的波动,这种波动与这个密钥每个字节的大小有相关性。通过统计来找到这种相关性,从而破解密码。举例:•时间(Timing):操作执行时间随数据/密钥不同而变化。•功耗/电磁(Power/

EM):加密设备执行指令时的瞬时功耗或辐射与内部数据相关。•缓存/微架构(Cache/

Micro-arch):共享CPU缓存、分支预测等硬件状态泄露访存/控制流信息。•处理器计数器/性能计数器(PMU):指令计数、分支错失等性能事件。•声学/振动/热(Acoustic/Vibration/Thermal)

:CPU、键盘、机器运转产生的声音或温度模式。•电源线耦合/TEMPEST类(侧面电磁泄露)。常见攻击方法•观测/采集:对目标设备大量/精确采样(时间序列、功耗曲线、缓存命中/未命中)。•预处理:去噪、对齐、分段、选择感兴趣点(POI)。•泄露模型与统计分析:建立泄露模型(如某比特的汉明重量、某字节的S-box输出),然后用统计方法估计密钥。•SPA(Simple

PowerAnalysis):直接从单次或少量曲线中目测或简单分析得出信息。•DPA(Differential

PowerAnalysis):对大量曲线做统计差分以放大与密钥相关的微小差异。•CPA(Correlation

PowerAnalysis):使用Pearson相关等把预测的泄露量(基于猜测密钥)与测量数据进行相关性检验。•模板攻击/机器学习:事先建立“指纹(模板)”,或用ML/DL模型分类/回归以恢复密钥。中间值u设计选择函数f

P

Kguess

要计算的量,它是把已知输入与密钥候选映射到会被泄露的“可观测实体”。例:在AES

中,中间值常见的是S-box的输出(例如第一轮S-box输出),或加密过程某次内存索引值;在

RSA

中,中间值可以是临时的乘积或私钥位决定的乘法/平方操作的操作标志。u要点:选择的中间值必须直接或间接影响物理泄露(寄存器值、总线数据、分支决策、内存访问地址等)。泄露模型泄露模型描述“中间值如何在物理侧信号中体现”。常见模型:•Identity:假设器件功耗或测量值直接等于中间值或其函数•Hamming

Weight:g

v

=

HW

v

=二进制表示中

1的个数。•Hamming

Distance:g

vt一1

vt

=

HW

vt一1

vt

表示从上一个中间值到当前值翻转的比特数。•LeastSignificant

Bit:只关注某一位(例如最低位),适合当某位决定分支或某些器件对位敏感时。•Distance-to-Transition:L

α0

+

α1HW

v

+

α2HW

v

u

+

,或用回归学习权重。•黑箱模型(机器学习、模板):使用训练集直接学出v

↦trace的分布/特征这里和中间值其实是一样的定义。常见目标操作示例:AES

S-box输出(一个字节):

v

=

SBOX

Pbyte

kbyte

。这是CPA/DPA

中经典逐字节攻击的选择函数。AES

的寄存器写入/T-table访问索引:v=index

=

Pbyte

kbyte(若查表直接使用索引作为地址访问)。目标操作目标操作等价于我们在实施攻击时“要盯住的那一步骤或信号来源

”。把它形式化为选择函数

v

=fPkguess

。把三者放在一起:

CPA攻击的标准流程举例选择目标操作与选择函数

v

=

f

P

Kguess

。对每条采集到的traceTi

t,在对应时间点或窗口t0取观测值xi

=

Ti

t0

(或窗口上的某种统计特征)。对每个密钥候选k计算假设中间值vi,k

=fPi

k,然后通过泄露模型得到假设泄露hi,k

=

gvik对每个k计算

Pearson相关系数:密钥候选的相关性最大者被选为真实子密钥。②最初目的与成果故事的开始,总是非常简单的,只是一个想脱离硬件

做一个线上的模拟平台,让侧信道教学研究变得简单。算法:AES、

SM4、

RSA、

ECC、

SM2、

Dilithium

,轨迹生成:模拟使用算法中一段中间值函数产生更容易匹配攻击代码。模拟轨迹构建流程:第一步:生成基础功耗轨迹第二步:生成算法操作时间线第三步:叠加操作功耗到基础轨迹第一步:生成基础功耗轨迹目的:创建代表芯片静态功耗的基线方法:

-生成长度为N(通常1000-2500点)

的常数数组

,值为基础功耗(如50mW)-根据

enable_noise开关决定是否添加高斯白噪声

-噪声标准差通常为2.0mW

,模拟芯片的固有噪声数学模型:基础功耗轨迹定义为:Pbase(t)

=

P0+N(0,σ2),t

=

1,2,

,L其中:

-P0

为基础功耗常数(单位:

mW)

-N(0,σ2)

为均值为0、标准差为σ的高斯白噪声

-L

为轨迹长度(采样点数)

-当enable_noise=False

,σ=

0物理意义:这一步模拟芯片在空闲或执行简单操作时的功耗基线。即使没有加密操作

,芯片也有基础功耗(漏电流、时钟树功耗等)第二步:生成算法操作时间线目的

:构建加密操作的时间映射表方法:分析加密算法的操作流程(S-box

、模幂运算

、点加等)

-

为每个关键操作分配时间点和功耗增量

-建立操作时间线:

[(时间点,操作类型,功耗增量),

...]操作类型

:决定持续时间和衰减模式(NONLINEAR

LINEAR

、ARITHMETIC等)

-功耗增量:基于数据相关的泄露模型计算数学模型

:操作时间线表示为操作集合:O

=

{(ti,opi,

1ti

为第i

个操作的时间点(采样点索引)opi

{NONLINEAR,LINEAR,ARITHMETIC,

…}

为操作类型Δpi

为该操作的功耗增量(单位:mW)M

为总操作数物理意义:加密操作会产生额外的功耗峰值

。不同操作(

如S-boxvsXOR)

的功耗特征不同

,这些差异构成了侧信道泄露的基础。第三步:叠加操作功耗到基础轨迹目的:将算法操作的功耗峰值添加到基础轨迹方法:

-遍历操作时间线中的每个操作

-在对应时间点添加功耗峰值

-应用指数衰减模型:功耗在几个时钟周期内逐渐衰减

-衰减速度取决于操作类型(非线性操作衰减慢,线性操作衰减快)数学模型:总功耗轨迹定义为:ptotal(t)

=

pbase(t)

+

Δ

pi.

D(t

ti,

opi)

.

1t≥ti非线性操作(NONLINEAR):λ

=

3.0,持续时间

d

=

8

个采样点;线性操作(LINEAR):λ

=

2.0,持续时间

d

=

5

个采样点;算术操作(ARITHMETIC):λ

=

4.0,持续时间

d

=

12

个采样点

-1t≥ti

为指示函数,确保操作只在其起始时间后生效物理意义:真实硬件中,功耗峰值不是瞬间消失的。由于电路的电容和电感效应,功耗会在几个时钟周期内逐渐衰减回基线。其中衰减函数D(τ,

op)

定义为:D(τ,

op)

=

{eif

0

τ

<

dop

otherwise一τ/λop0AESpsbox

=

α

.HW(S[X])

.HD(X,

S[X])

+Y

.

HW(X)SM4psbox

=

α

.HW(S[X])

.HD(X,

S[X])

+Y

.

HW(X)RSApRSA_byte(i)

=

psquare

.

fHW

(vi,

ki)

+

1HW(ki)>4

.

pmultiply

.

fHW

(mi,

ki)ECCpECC_byte(i)

=

ppoint_op(j).fcoord(Qi)SM2pSM2_byte(i)

=

ppoint_op(j).fcoord(Qi)DilithiumpDili_byte(i)

=

pNTT

.

fNTT

(vi,

ki)

+

1HW(ki)>4

.

ppoly

.fpoly(mi,ki)仿真算法的中间值模型噪声相关的选项

-芯片类型系统支持多种芯片类型,每种类型都有不同的功耗和噪声特性:通用芯片(Generic):基础8位/16位MCU,功耗较低,噪声较小STM32系列:标准ARMCortex-M芯片,中等功耗和噪声水平ARMCortex系列:高性能ARM处理器,功耗和噪声较高FPGA:现场可编程门阵列,噪声最大(约为标准芯片的1.5倍)ASIC:专用集成电路,功耗和噪声最小(约为标准芯片的0.6倍)安全元件(Secure

Element):专用安全芯片,噪声最低(约为标准芯片的0.4倍)不同芯片类型的选择直接影响噪声幅度。例如,

FPGA由于其动态可配置性,会产生更多的开关噪声和串扰;而专用安全芯片经过优化设计,泄露最小。噪声相关的选项-工艺节点工艺节点是影响功耗泄露的关键因素:老工艺(180nm,90nm):

晶体管尺寸大

,漏电流小

,静态功耗低

噪声相对较小中等工艺(65nm,40nm)

:平衡的功耗和性能特性先进工艺(28nm,

14nm,7nm):

晶体管尺寸小

,漏电流显著增加

,动态功耗高

噪声大幅提升随着工艺节点的缩小

,漏电流噪声呈指数级增长

。7nm工艺的漏电噪声可以达到180nm工艺的3倍以上

。这是因为亚阈值漏电和栅极漏电在先进工艺中变得更加显著。噪声相关的选项-工作参数时钟频率:低频(1-10

MHz):

功耗低,开关噪声小中频(10-100

MHz):标准工作频率,中等噪声高频(100-500

MHz):

功耗高,开关噪声和串扰显著增加时钟频率与开关噪声成线性关系,频率每提高一倍,开关噪声幅度增加约50%。工作电压:低电压(1.2V):

功耗低,但对电源噪声更敏感标准电压(3.3V):传统工作电压高电压(5V):

功耗高,噪声幅度大功耗与电压的平方成正比,因此电压变化对噪声的影响非常显著。噪声相关的选项-架构设计流水线级数:简单架构(1-3级):

噪声较小

,功耗波动平缓中等复杂度(3-5级):标准噪声水平复杂架构(5级以上):流水线冒险和停顿导致功耗波动增大缓存大小:小缓存(8-32

KB):访存噪声较小大缓存(64-256

KB):缓存命中/未命中导致功耗差异明显架构复杂度越高

,功耗的随机性越强

,这会增加攻击难度但也引入了更多的噪声分量。噪声相关的选项-防护措施掩码(Masking):

随机化中间值,降低泄露相关性随机化(Randomization):

随机化操作顺序或时间时钟门控(ClockGating)

:选择性关闭时钟,降低动态功耗电源门控(PowerGating)

:切断空闲模块电源,降低漏电动态调频调压(DVFS)

:动态调整频率和电压,增加功耗随机性每启用一种防护措施,系统会相应降低约20%的有效泄露信号,同时可能增加一定的随机噪声。数据预处理攻击算法支持针对加密算法的攻击模式选定加密算法产生对应加密芯片对芯片进行配置产生噪声源产生模拟轨迹添加仿真噪声轨迹图像绘制数据预处理攻击分析一条仿真流水线③一个大胆的想法以及付出的行动使用CPU使用率代替能耗轨迹1.实现完整的加密算法2.在加密操作时直接进行CPU使用率的采样3.使用CPU轨迹进行破解一个CPA攻击AES的例子,使用两种曲线一种原始曲线,一种平均轨迹④想法不太灵,验证一下吧!名称备注hw_sbox_outputS-box输出的汉明权重hw_xor_input输入异或密钥的汉明权重hw_after_addroundkeyAddRoundKey后的汉明权重(与模型2相同,但概念上不同)hd_plaintext_sbox汉明距离模型sbox_output_valueS-box输出值本身lsb_sbox_outputS-box输出的LSBmsb_sbox_outputS-box输出的MSBbit_i_sbox_outputS-box输出的第i位hw_parity汉明权重的奇偶性lsb_xor_inputXOR输入的LSB使用各种计算中间值评估与CPU使用率的相关性⑤不死心,寻求更优秀的方案1.编写5种加密算法的固件2.使用QEMU模拟,使用仿真SPI作为通讯方式3.在触发解密端进行CPU能耗的采集⑥搞事情,是吧~~~QEMU的问题1:

SPI状态标志位不自动更新•SPI数据寄存器(SPI->DR)写入后,状态寄存器(SPI->SR)的标志位不会自动更新•

主要受影响的标志位:•RXNE(接收缓冲区非空):永远不会自动置位•TXE(发送缓冲区空):可能始终保持置位或永远不置位•BSY(总线忙):不会在传输期间正确设置/清除QEMU的问题1解决方案让gdb来监视DR地址,然后外部来设置标志;但是一个问题是gdb会首先停止程序运行,然后执行脚本。开销会非常大,对轨迹采集有很大影响。换解决方案为UART

+stdioqemu-system-arm

-machinenetduinoplus2

-kernelfirmware.elf\-serialstdio

-monitortelnet::55555,server,nowaitQEMU的Semihosting实现中:SYS_WRITEC:输出到QEMU的stdout工作SYS_READC:

它期望从真实键盘读取

,不支持管道

,文件重定向也就是说我们只能从固件输出

,但是不能做输入。最终解决方案1.

使用UART

+stdio模式2.

使用脚本接收参数

生成一个h头文件,包含了密钥,明文

以及算法相关配置3.

编译固件4.固件运行后在加密前后输出开始标记

与结束标记5.

外部监控程序循环读取标记来开启

与结束采集程序⑦再次踏上征程中间值泄露与CPU使用率的相关性对5种加密算法,27种模式组合进行了测试实验。分别取10,25

,100

,500条轨迹随着traces数量从10增加到500,中间值泄露与CPU使用率之间的相关性急剧下降:•10条traces:出现多个强相关性(Pearson系数

>0.5)•AES-128sbox_output:

0.5461•ECC-P256

hw_coordinate:

0.6559

(最高,p=0.039)•

SM2

point_add_x:0.5603•

SM2

modular_op:0.5019•25条traces:相关性明显减弱,主要为中等或弱相关•SM2scalar_mult_step:

0.4387

(p=0.036)•AES-128

hw_round_key_xor:0.3122•100条traces:几乎全部变为极弱相关

,最高仅SM2

point_add_x:0.2404•500条traces:所有模型均为极弱相关

,最高仅AES-128

round_key_xor:0.1229⑧躺平吧,你没那种命!!!•

CPU使用率(CPUUsage)通常指:•

在一个采样周期内

,CPU处于“

非空闲”状态的时间比例。•

Linux

,这个“

非空闲状态

”包括:•

用户态(

user)执行时间•内核态(system)执行时间•

优先级较低的任务(nice)•

软中断(softirq)、硬中断(irq)•

而空闲状态(idle)包括:•

空转(idle)•

等待

I/O(iowait)•

即:成因分析-CPU

Usage的定义事件名含义对应状态CPU_CLK_UNHALTED.CORECPU核心时钟未暂停的周期数CPU在运行CPU_CLK_UNHALTED.REF参考时钟周期数时间基准INST_RETIRED.ANY已完成的指令数反映活跃程度IDLE_CYCLES

/HALT_CYCLESCPU停止(halt)或节能状态周期空闲时间BUS_CYCLES总线活跃周期系统整体负载参考成因分析-

PMU层面的原始数据来源(二)在硬件底层,

PMU提供了多种时间与活动计数器。操作系统就是通过这些计数器(或者基于它们的派生指标)来判断CPU是否“在工作”。成因分析-用

PMU计算CPU使用率(三)1.

时采样•

内核的调度器(scheduler)或计时器中断会周期性读取

PMU计数器(如每

10ms)。2.获取两个时刻的计数值在时刻t1与

t2:•CPU_CLK_UNHALT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论