一种基于笔记本麦克风收音的
远程侧信道分析方法
撰文 | 唐容川
编辑 | 刘梦迪
在视频会议已经广泛普及的今天,我们电脑的麦克风,也能成为一种攻击者获取我们自己电脑上机密信息的侧信道攻击手段。
普遍印象里,侧信道攻击需要物理上能够接近设备乃至在目标设备上运行目标代码作为前提,而本文提出了一种完全“被动”的远程侧信道攻击方式。这种攻击不需要物理上接近设备,也不需要对目标设备有任何控制权限,只需要攻击目标在参加视频会议时开启麦克风,攻击者就可以通过麦克风捕捉到的电磁侧信道泄露,进而获取被攻击者电脑正在浏览的网页、加密程序运行过程中的密钥、乃至游戏状态等隐私信息。
笔记本麦克风如何泄露你的信息?
如图1所示,在笔记本中主板上常见的一种状态是,笔记本内置的麦克风与声卡之间有连线,而连线距离CPU相当近,这也就意味着只要笔记本处于收音状态,那么因CPU计算过程产生的 电磁信号就会对麦克风的收音产生干扰,换而言之,CPU运行过程中产生的电磁信号所蕴含的信息,就被麦克风记录下来了。
这就是本篇文章攻击的前提:即CPU运行泄露出的信息能被麦克风记录下来。而麦克风记录下来的信息又会被如实通过视频会议等方式如实传递给攻击者。因此,攻击者不需要对设备有任何操作,只需要被动等待,就能够获取所需的信息,进而对目标设备上的隐私信息进行恢复。
图1 CPU运行的产生的电磁信息泄露示意图
可行性验证
为了验证通过笔记本内置麦克风手机CPU电磁泄露的这一思想的可行性。如图2所示,作者做了简单的实验进行证明,首先作者编制了一个简单的测试程序,该程序只会执行0.8s的整数乘法循环以及0.4s的睡眠。在图2声谱图中可以看到,不同的指令使得CPU的负载状况不同,在这些声谱图中,CPU的负载状况变化信息可以被声音信号收集,显示出周期性的变化。
根据该实验,作者初步证明了通过麦克风收集电磁泄露这一想法的可行性。
图2 用麦克风收集CPU运行信息的可行性验证
真实实验
据此,作者提出的攻击场景如下:当被攻击者在执行敏感操作的时候,例如浏览网站、加密签名、游戏渲染时。如果此时被攻击者同时挂着视频通话软件导致麦克风处于开启状态,那么攻击者如果也在同一个视频会议里,那么攻击者就可以自由获取攻击者的麦克风信息,从而进行远程攻击来分析被攻击者此时浏览的网页类型、加密签名的密钥、以及游戏渲染状态等私密信息。
1、网页识别
首先,作者假定被攻击者在外挂视频会议,麦克风开启时正在浏览网页(注意,作者实验中选择的网页均为动态网页,即网页并非完全静止,而是有数量统计、倒计时等动态组件,因此动态网页才会使CPU有负荷,进而产生电磁辐射)麦克风设置,此时通过麦克风收集到的信息,识别被攻击者浏览的网页是什么,如图3所示。
作者使用宏碁S3笔记本电脑,并以循环的方式打开了每个网站。每次访问时,作者使用Selenen的浏览器控制自动化来启动一个指向固定网站地址的火狐窗口,让它打开约40秒,然后关闭它。然后在打开下一页之前允许了5秒钟的睡眠时间。在攻击者的一端,我们记录了被攻击者在打开页面期间输入的音频。并将此作为输入,预处理后放入神经网络中进行分类。从图3中可以看到,不同的网页会有不同的声谱图,因此可以利用神经网络进行判别。
图3 不同网页对应收集到的声谱图
作者选取了Alexa’s top-30评选出的最受欢迎的三十个网页中的14个具有动态元素的网页进行分类,成功率如图4所示,可以看出,绝大多数网址都可以成功进行分类。
图4 神经网络分类情况
作者还特意提到,实际攻击场景中由于麦克风一定会记录各种环境噪音,所以噪音对攻击成功率的影响也需要被进一步进行系统性评估,为此作者专门设计了加入环境音的实验。作者使用电视节目《The Office》第一季和第二季的剧集作为环境背景音,研究了背景音大小对于攻击成功率的影响。如图5所示,α为背景音在背景音和泄露信号中的所占权重。从图中可以看到,只有占比超过0.9后成功率才会收到明显影响,所以这进一步说明了该攻击方法的鲁棒性。
图5 背景音占比对攻击成功率的影响
2、ECDSA密钥恢复
为了进一步探究该方法的实际攻击能力,作者尝试利用收集到的音频破解被攻击者电脑进行ECDSA加密时的密钥,作者在攻击者的对话一侧录制了音频,对应于在宏碁目标目标上签名的2万条不同的信息。我们以循环的方式重复签名所有20,000条消息麦克风设置,直到每条消息被签名91次。
作者提到由于不同的前置0的数量会导致Libgcrypt的签名操作运行时间不同,所以可以泄露出签名操作的具体位置。
图6 Libgcrypt的签名操作运行时长
与不同nonce长度的关系
如图7所示,作者成功通过声谱图构造波形图,并找到签名位置,进而对其进行侧信道攻击并恢复标量k。
图7 左为声谱图 右为经过基带滤波和AM解调的波形图
3、用侧信道方式打开一种另类的CS游戏透视挂
CS是最著名和最具商业成功的在线第一人称射击游戏之一,在CS中,每个游戏会话都有一个3D虚拟环境(地图),每个玩家都控制一个位于它上面的类似人的化身,其目的是“杀死”其他化身。CS模拟了一个近距离的战斗场景,玩家可以通过使用地图的布局来获得战术优势,比如使用无生命的物体(如墙壁和汽车)来躲避和设置埋伏。CS在分布式客户机-服务器模型中工作:任何人都可以运行一个服务器节点,并在线发布它,以便其他玩家加入。为了互相竞争,玩家必须连接到同一个服务器。服务器和客户端之间的游戏状态同步如下:每个客户端定期将其化身的位置和视角发送到服务器。客户端还可以从服务器上获得关于中所有现有对象的更新,即他们的视野,这是地图上的一个锥状区域。然后使用这些信息在客户端上本地呈现玩家的视图。
这也就意味着本地玩家在CPU所接受到的锥形区域内有敌人存在时,尽管显示屏上有障碍物遮挡而导致看不见敌人,但实际上CPU依然会对现有对象进行更新。也就是说会导致CPU的状态不同于锥形视野中无人的情况,如图8所示。此时攻击者就可以利用声谱图的不同判断墙后是否有人。
图8 CS中锥形视野中有无敌人与攻击者获得的信号关系图
总结
本文提出了一种远程侧信道攻击方法,利用了如今广泛被大家使用的视频会议这一场景,通过被攻击者的麦克风收集其笔记本电脑运行过程中产生的电磁信息进行攻击,并通过恢复网页类型、恢复ECDSA密钥、游戏开挂这三种方式,进行了充分实验,证明了该攻击方法的有效性。
参考资料
[1] Genkin D, Nissan N, Schuster R, et al. Lend Me Your Ear: Passive Remote Physical Side Channels on {PCs}[C]//31st USENIX Security Symposium (USENIX Security 22). 2022: 4437-4454.