您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[安全开发者峰会]:让CPU消耗成为密码学安全的X光机 - 发现报告

让CPU消耗成为密码学安全的X光机

AI智能总结
查看更多
让CPU消耗成为密码学安全的X光机

让C P U消 耗 成 为 密 码 学 安 全 的X光 机 目录 ①一些需要提前了解的知识②最初目的与成果③一个大胆的想法以及付出的行动④想法不太灵,验证一下吧!⑤不死心,寻求更优秀的方案⑥搞事情,是吧~~~⑦再次踏上征程⑧躺平吧,你没那种命!!! ①一些需要提前了解的知识 侧信道攻击的原理 侧信道攻击不是破解密码算法本身,而是通过观测实现算法时泄露出来的“物理或运行痕迹”比如时间、功耗、电磁波、缓存行为、声学或热量等,从这些信号中恢复秘密。 简单陈述:就是利用加密算法加解密时,使用密钥在某一段时间,某一段代码产生了某种信号的波动,这种波动与这个密钥每个字节的大小有相关性。通过统计来找到这种相关性,从而破解密码。 举例: •功耗/电磁(Power / EM):加密设备执行指令时的瞬时功耗或辐射与内部数据相关。•缓存/微架构(Cache / Micro-arch):共享CPU缓存、分支预测等硬件状态泄露访存/控制流信息。•处理器计数器/性能计数器(PMU):指令计数、分支错失等性能事件。•声学/振动/热(Acoustic / Vibration / Thermal):CPU、键盘、机器运转产生的声音或温度模式。•电源线耦合/ TEMPEST类(侧面电磁泄露)。 常见攻击方法 •观测/采集:对目标设备大量/精确采样(时间序列、功耗曲线、缓存命中/未命中)。•预处理:去噪、对齐、分段、选择感兴趣点(POI)。•泄露模型与统计分析:建立泄露模型(如某比特的汉明重量、某字节的S-box输出),然后用统计方法估计密钥。•SPA(Simple Power Analysis):直接从单次或少量曲线中目测或简单分析得出信息。•DPA(Differential Power Analysis):对大量曲线做统计差分以放大与密钥相关的微小差异。•CPA(Correlation Power Analysis):使用Pearson相关等把预测的泄露量(基于猜测密钥)与测量数据进行相关性检验。•模板攻击/机器学习:事先建立“指纹(模板)”,或用ML/DL模型分类/回归以恢复密钥。 中间值 ◆设计选择函数𝑓𝑃𝐾𝑔𝑢𝑒𝑠𝑠要计算的量,它是把已知输入与密钥候选映射到会被泄露的“可观测实体”。 例: 在AES中,中间值常见的是S-box的输出(例如第一轮S-box输出),或加密过程某次内存索引值;在RSA中,中间值可以是临时的乘积或私钥位决定的乘法/平方操作的操作标志。 ◆要点:选择的中间值必须直接或间接影响物理泄露(寄存器值、总线数据、分支决策、内存访问地址等)。 泄露模型 泄露模型描述“中间值如何在物理侧信号中体现”。常见模型: •Identity:假设器件功耗或测量值直接等于中间值或其函数•Hamming Weight:𝑔𝑣=HW𝑣=二进制表示中1的个数。•Hamming Distance:𝑔𝑣𝑡−1𝑣𝑡=HW𝑣𝑡−1⊕𝑣𝑡表示从上一个中间值到当前值翻转的比特数。•Least Significant Bit:只关注某一位(例如最低位),适合当某位决定分支或某些器件对位敏感时。•Distance-to-Transition:𝐿≈𝛼0+𝛼1HW𝑣+𝛼2HW𝑣⊕𝑢+⋯,或用回归学习权重。•黑箱模型(机器学习、模板):使用训练集直接学出𝑣↦trace的分布/特征 目标操作 目标操作等价于我们在实施攻击时“要盯住的那一步骤或信号来源”。把它形式化为选择函数𝑣=𝑓𝑃𝐾𝑔𝑢𝑒𝑠𝑠。 这里和中间值其实是一样的定义。 常见目标操作示例: AES S-box输出(一个字节):𝑣=𝑆𝐵𝑂𝑋𝑃𝑏𝑦𝑡𝑒⊕𝐾𝑏𝑦𝑡𝑒。这是CPA/DPA中经典逐字节攻击的选择函数。AES的寄存器写入/ T-table访问索引:𝑣=index=𝑃𝑏𝑦𝑡𝑒⊕𝐾𝑏𝑦𝑡𝑒(若查表直接使用索引作为地址访问)。 把三者放在一起:CPA攻击的标准流程举例 选择目标操作与选择函数𝑣=𝑓𝑃𝐾𝑔𝑢𝑒𝑠𝑠。 对每条采集到的trace𝑇𝑖𝑡,在对应时间点或窗口𝑡0取观测值𝑥𝑖=𝑇𝑖𝑡0(或窗口上的某种统计特征)。 对每个密钥候选𝑘计算假设中间值𝑣𝑖,𝑘=𝑓𝑃𝑖𝑘,然后通过泄露模型得到假设泄露ℎ𝑖,𝑘=𝑔𝑣𝑖,𝑘对每个𝑘计算Pearson相关系数: 密钥候选的相关性最大者被选为真实子密钥。 ②最初目的与成果 故事的开始,总是非常简单的,只是一个想脱离硬件做一个线上的模拟平台,让侧信道教学研究变得简单。 算法:AES、SM4、RSA、ECC、SM2、Dilithium,轨迹生成:模拟使用算法中一段中间值函数产生更容易匹配攻击代码。 模拟轨迹构建流程: 第一步:生成基础功耗轨迹第二步:生成算法操作时间线第三步:叠加操作功耗到基础轨迹 第一步:生成基础功耗轨迹 目的:创建代表芯片静态功耗的基线 方法:-生成长度为N(通常1000-2500点)的常数数组,值为基础功耗(如50mW)-根据enable_noise开关决定是否添加高斯白噪声-噪声标准差通常为2.0mW,模拟芯片的固有噪声 数学模型:基础功耗轨迹定义为: 其中:-𝑃0为基础功耗常数(单位:mW)-𝑁(0,𝜎2)为均值为0、标准差为𝜎的高斯白噪声-𝐿为轨迹长度(采样点数)-当enable_noise=False时,𝜎=0 物理意义:这一步模拟芯片在空闲或执行简单操作时的功耗基线。即使没有加密操作,芯片也有基础功耗(漏电流、时钟树功耗等)。 第二步:生成算法操作时间线 目的:构建加密操作的时间映射表 方法:分析加密算法的操作流程(S-box、模幂运算、点加等)-为每个关键操作分配时间点和功耗增量-建立操作时间线:[(时间点,操作类型,功耗增量), ...]操作类型:决定持续时间和衰减模式(NONLINEAR、LINEAR、ARITHMETIC等)-功耗增量:基于数据相 关的泄露模型计算数学模型:操作时间线表示为操作集合:𝒪={(𝑡𝑖,𝑜𝑝𝑖,Δ𝑃𝑖)}𝑀 𝑡𝑖为第𝑖个操作的时间点(采样点索引)𝑜𝑝𝑖∈{NONLINEAR,LINEAR,ARITHMETIC,…}为操作类型Δ𝑃𝑖为该操作的功耗增量(单位:mW)𝑀为总操作数 物理意义:加密操作会产生额外的功耗峰值。不同操作(如S-box vs XOR)的功耗特征不同,这些差异构成了侧信道泄露的基础。 第三步:叠加操作功耗到基础轨迹 目的:将算法操作的功耗峰值添加到基础轨迹方法:-遍历操作时间线中的每个操作-在对应时间点添加功耗峰值-应用指数衰减模型:功耗在几个时钟 周期内逐渐衰减-衰减速度取决于操作类型(非线性操作衰减慢,线性操作衰减快)数学模型:总功耗轨迹定义为: 其中衰减函数𝐷(𝜏,𝑜𝑝)定义为: 非线性操作(NONLINEAR):𝜆=3.0,持续时间𝑑=8个采样点;线性操作(LINEAR):𝜆=2.0,持续时间𝑑=5个采样点; 算术操作(ARITHMETIC):𝜆=4.0,持续时间𝑑=12个采样点-𝟙 𝑡≥𝑡𝑖为指示函数,确保操作只在其起始时间后生效 物理意义:真实硬件中,功耗峰值不是瞬间消失的。由于电路的电容和电感效应,功耗会在几个时钟周期内逐渐衰减回基线。 仿真算法的中间值模型 𝑃𝑠𝑏𝑜𝑥=𝛼⋅𝐻𝑊(𝑆[𝑥])+𝛽⋅𝐻𝐷(𝑥,𝑆[𝑥])+𝛾⋅𝐻𝑊(𝑥)AES𝑃𝑠𝑏𝑜𝑥=𝛼⋅𝐻𝑊(𝑆[𝑥])+𝛽⋅𝐻𝐷(𝑥,𝑆[𝑥])+𝛾⋅𝐻𝑊(𝑥)SM4𝑃𝑅𝑆𝐴_𝑏𝑦𝑡𝑒(𝑖)=𝑃𝑠𝑞𝑢𝑎𝑟𝑒⋅𝑓𝐻𝑊(𝑣𝑖,𝑘𝑖)+𝟙𝐻𝑊(𝑘𝑖)>4⋅𝑃𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑦⋅𝑓𝐻𝑊(𝑚𝑖,𝑘𝑖)RSA𝑃𝐸𝐶𝐶_𝑏𝑦𝑡𝑒(𝑖)=෍𝑗=15𝑃𝑝𝑜𝑖𝑛𝑡_𝑜𝑝(𝑗)⋅𝑓𝑐𝑜𝑜𝑟𝑑(𝑄𝑖)ECC𝑃SM2_𝑏𝑦𝑡𝑒(𝑖)=෍𝑗=15𝑃𝑝𝑜𝑖𝑛𝑡_𝑜𝑝(𝑗)⋅𝑓𝑐𝑜𝑜𝑟𝑑(𝑄𝑖)SM2𝑃𝐷𝑖𝑙𝑖_𝑏𝑦𝑡𝑒(𝑖)=𝑃𝑁𝑇𝑇⋅𝑓𝑁𝑇𝑇(𝑣𝑖,𝑘𝑖)+𝟙𝐻𝑊(𝑘𝑖)>4⋅𝑃𝑝𝑜𝑙𝑦⋅𝑓𝑝𝑜𝑙𝑦(𝑚𝑖,𝑘𝑖)Dilithium 噪声相关的选项-芯片类型 系统支持多种芯片类型,每种类型都有不同的功耗和噪声特性: 通用芯片(Generic):基础8位/16位MCU,功耗较低,噪声较小STM32系列:标准ARMCortex-M芯片,中等功耗和噪声水平ARMCortex系列:高性能ARM处理器,功耗和噪声较高FPGA:现场可编程门阵列,噪声最大(约为标准芯片的1.5倍)ASIC:专用集成电路,功耗和噪声最小(约为标准芯片的0.6倍)安全元件(SecureElement):专用安全芯片,噪声最低(约为标准芯片的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-32KB):访存噪声较小大缓存(64-256KB):缓存命中/未命中导致功耗差异明显 架构复杂度越高,功耗的随机性越强,这会增加攻击难度但也引入了更多的噪声分量。 噪声相关的选项–防护措施 掩码(Masking):随机化中间值,降低泄露相关性随机化(Randomization):随机化操作顺序或时间时钟门控(ClockGating):选择性关闭时钟,降低动态功耗电源门控(PowerGating):切断空闲模块电源,降低漏电动态调频调压(DVFS):动态调整频率和电压,增加功耗随机性 每启用一种防护措施,系统会相应降低约20%的有效泄露信号,同时可能增加一定的随机噪声。 数据预处理 攻击算法支持 针对加密算法的攻击模式 一条仿真流水线 ③一个大胆的想法以及付出的行动 使用CPU使用率代替能耗轨迹 1.实现完整的加密算法2.在加密操作时直接进行CPU使用率的采样3.使用CPU轨迹进行破解 一个CPA攻击AES的例子,使用两种曲线一种原始曲线,一种平均轨迹 ④想法不太灵,验证一下吧! 使用各种计算中间值评估与CPU使用率的相关性 ⑤不死心,寻求更优秀的方案 1.编