文章总结: 这篇文章介绍了阎文斌在SDC2025上的演讲,探讨使用CPU使用率作为侧信道攻击信号源的可行性。通过QEMU仿真STM32微控制器,将CPU消耗映射为功耗轨迹,对AES、SM4、RSA等多种密码算法进行测试。实验结果表明,CPU使用率不能作为有效的侧信道攻击信号源,因为它反映的是时间片占用比例而非电流瞬时变化。尽管核心假设被证伪,但研究提供了清晰的科研边界,并开发了一套软件侧信道仿真平台,为未来研究方向如CPU微架构特征分析等奠定了基础。
综合评分: 88
文章分类: 漏洞分析,二进制安全,安全工具,IoT安全
SDC2025 议题回顾 | 仿真驱动的侧信道攻击新范式:让CPU消耗成为密码学安全的X光机
SDC2025
看雪学苑
2025年11月5日 18:07
上海
议题回顾
在传统侧信道攻击研究中,昂贵的硬件设备和复杂的实验环境往往成为研究者的”拦路虎”。
本议题将展示一种革命性的研究方法:通过QEMU仿真STM32微控制器,将CPU消耗巧妙映射为功耗轨迹,实现对AES、SM4、RSA、ECC、SM2以及后量子密码算法 dilithium 等主流密码算法的侧信道攻击。
一起来回顾下 阎文斌在 SDC2025上发表的议题演讲:《仿真驱动的侧信道攻击新范式:让CPU消耗成为密码学安全的X光机》
演讲嘉宾:阎文斌
看雪论坛编程版主(论坛ID:玩命),专业领域:密码学、侧信道攻击、软件保护、移动安全。
*以下为整理后的速记
大家好,我是阎文斌。今天要和大家分享的议题是《让CPU消耗成为密码学安全的X光机》。这个标题并不是我自己起的,是朋友帮我想的。我一看就特别喜欢,因为它非常贴切地表达了我这次实验探索的核心思想。
这是我第二次在看雪社区做分享。上一次是在十五年前,那时的会议还叫“中国软件开发峰会”。今天再次站在这里,既是一次回归,也是一次新的尝试。
这次我想分享的,是我在过去两周里做的一个探索性实验:——我们能否用CPU的使用率这个普通到不能再普通的指标,来实现一种新的侧信道攻击?
换句话说,能不能让“CPU消耗”成为洞察密码算法安全性的“X光机”?
一、初衷:从构建模拟平台到一个“大胆的想法”
最初,我的目标非常现实:构建一个线上侧信道攻击仿真教学平台。
我们知道,传统侧信道攻击依赖硬件,需要昂贵的探针与采集设备,比如示波器、功耗探针、电磁线圈等。这使得入门门槛极高,很多人只能在论文里看别人做实验。
所以我想:能不能先在纯软件的世界里,高度还原出功耗攻击的过程?
于是我们设计了一个完整的模拟流水线,主要分三步:
1.生成基础功耗:模拟芯片空闲时的功耗状态,基础功耗加上高斯噪声;
2.生成算法操作功耗:模拟加密算法在执行关键步骤(比如AES的S盒查询)时的功耗波动。我们涵盖了常见算法:AES、SM4、RSA、ECC、SM2,甚至后量子算法Dilithium;
3.叠加与逼真化:把这些波动叠加回基础功耗中,并考虑各种现实因素,例如:
这套模拟系统不仅可以生成功耗轨迹,还能直接运行SPA、DPA、CPA、模板攻击等算法,形成了一套完整的教学与实验平台。
一开始,我只是希望学生和研究者可以在这个平台上复现经典攻击,理解原理。
但就在这个阶段,一个“疯狂”的想法出现了:
“既然我们能在仿真中重现功耗,那能不能再进一步?
能不能直接利用真实CPU的使用率——也就是操作系统层面统计的CPU占用比例,去代替物理功耗信号?
如果这能行,那侧信道攻击的成本几乎为零!”
这是一个有点异想天开的想法,但科研的很多突破往往就诞生于这种“大胆假设”。
于是我决定——试一试。
二、行动:让想法落地的两周实验
我用了两周时间,全力投入实验。从最初验证到最后分析,大致经历了三个阶段。
第一回合:简单验证
我首先在常规平台上运行AES、SM4、RSA等算法,用脚本实时采样CPU使用率,把这些轨迹输入CPA分析算法,尝试看是否能得到密钥的泄露。
结果非常令人沮丧。
无论是原始数据,还是经过平滑、平均、去噪处理后的结果,攻击效果几乎为零。看上去CPU使用率这个指标,与加密操作之间完全没有相关性。
第二回合:深入排查
我怀疑问题出在环境噪声太大。于是我决定去掉解释执行层带来的干扰,直接把五种算法编译成STM32固件,然后在QEMU虚拟硬件中运行,以获得一个更纯净、更可控的实验环境。
但新问题很快出现了:QEMU的硬件仿真并不完美。
例如SPI通信的状态标志位不会自动更新,导致实验逻辑无法顺利进行。
我们尝试过用GDB监控内存、手动修改标志位,但那样代价太高,严重影响采样速度。
最后我选择了折中方案:使用UART + Stdio输出机制。
通过外部脚本生成头文件,编译固件,然后用脚本实时监控串口标记,触发CPU使用率采集。
尽管整个过程极其繁琐,但最终我得到了第一批较干净的实验数据。
结果呢?
依然令人失望——CPU使用率与加密内部状态之间的相关性几乎不存在。
第三回合:系统性分析
我决定彻底做一遍全面实验。
对五种加密算法(AES、SM4、RSA、ECC、Dilithium)的27种模式组合,我分别采集了10、25、100、500条轨迹。然后对比各算法在不同采样规模下的Pearson相关系数。
结果非常有意思:
◆小样本“假象”:当只有10条轨迹时,一些算法(特别是ECC-P256)似乎表现出强相关(高达0.65)。这让我一度以为方向正确;
◆大样本“真相”:当轨迹增至500条后,所有算法的相关性都掉到0.12以下,属于统计学上的“极弱相关”。
换句话说,小样本带来的强相关完全是统计幻觉。随着样本量增大,虚假的规律自动消散。
三、结论:为什么这条路走不通?
最终,实验给出了一个非常明确的结论:
用CPU使用率作为侧信道信号源,在当前架构下行不通。
原因其实很本质——侧信道攻击关注的是**“电流的瞬时变化”,而CPU使用率反映的只是“时间片的占用比例”。
在真实的功耗分析中,信号来自晶体管级的物理现象:每个比特在0和1之间翻转时,晶体管的导通状态发生变化,产生不同的瞬时电流。而不同数据会导致电流曲线细微变化,从而泄露密钥。
而CPU使用率,是操作系统统计出来的一个高层指标,它衡量的是“CPU这段时间有多忙”,但它并不关心CPU到底在做什么。
对操作系统而言,ADD、XOR、MUL指令都是“忙”;而侧信道攻击需要知道“在哪个比特上忙”。
也就是说,功耗信号反映的是操作的内容,而CPU使用率只能反映操作的强度。
后者已经是一个被抽象、平滑化、丢失细节的统计结果,关键特征早已被掩盖。
#
四、收获与展望:科研不止结果
虽然这个核心假设被证伪了,但整个过程仍然极具价值。
在科研中,一个清晰的负面结果,往往比模糊的正结果更重要——它为后来者划定了边界。
这次实验带来了三方面的成果:
1.一套完善的软件侧信道仿真平台。
它不仅能教学,还能帮助研究人员在没有硬件条件下模拟功耗泄露。
2.一套完整的数据与分析框架。
基于Python与QEMU的采集工具链已经开源,任何人都可以复现实验。
3.一个清晰的科研边界:
我们知道了CPU使用率不可行,但也启发了新的思考——那有没有别的可观测指标?
于是我计划在后续尝试几个新方向:
◆回归真实硬件:通过实际功耗采集设备重新验证,建立对比模型;
◆挖掘CPU微架构特征:CPU使用率不行,那性能监控单元(PMU)事件呢?例如缓存命中率、分支预测失败次数、特定指令计数等,也许能捕捉到细粒度的泄露;
◆算法平坦化分析:去除循环与条件分支,固定指令路径,探索在这种条件下的“消耗指纹”;
◆时序攻击重研究:基于时间测量的经典攻击方式,仍可能与CPU微事件结合产生新的突破。
这些方向未必都能成功,但每一条都值得尝试。
基于QEMU仿真侧信道环境的开源地址: https://gitee.com/ga4ss/s31-bsim.git
#
五、结语:科研的意义在路上
到最后,我常常会问自己:这两周的实验虽然结论是否定的,那它的意义是什么?
我认为——科研的价值不在于结果是否惊艳,而在于探索的过程是否让边界更清晰。
这次实验让我更深刻地理解了侧信道攻击的本质,也留下了一套可复现、可教学的工具。
最后,我想用一句话作为结尾:
“什么是路?
路就是从没路的地方踏出来的,从荆棘丛中走出来的那一条。”
科研也是如此。我们大胆假设,小心求证。
即使结果是一条死胡同,但在开路的过程中,我们留下的脚印、工具、数据,都会为后来者照亮方向。
PPT下载及视频回放
峰会议题PPT及回放视频已上传至【看雪2025 SDC】:https://www.kanxue.com/book-section_list-219.htm
【已购票的参会人员可免费获取】:我方已通过短信将“兑换码”发至手机
兑换方式:
-打开链接https://www.kanxue.com/book-section_list-219.htm
-点击购买课程
-填入兑换码
-提交订单
﹀
﹀
﹀
球分享
球点赞
球在看
点击阅读原文查看更多
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:看雪学苑 SDC2025《SDC2025 议题回顾 | 仿真驱动的侧信道攻击新范式:让CPU消耗成为密码学安全的X光机》