攻破物理隔离网络 — 侧信道攻击之能量分析攻击
前言
对于物理隔离下的计算机设备或是网络,其保密性和安全性非常高,传统的黑客手段如web渗透等实施起来的难度很大。对于这种保密等级下的设备,一般来说,社会工程学攻击有时候会更加容易实施。在这里我将记录另一种攻击物理隔离网下的攻击手段。这些攻击方法属于做侧信道攻击、旁路攻击等,但有区别于其他侧信道攻击的更加明显的一些特征,国际上一部分学者和黑客将其称作Air-Gap Attack,中文似乎没有统一的名称,这里我称作攻破物理隔离网络的无线方法。
引用《能量分析攻击》一书的文字:“这一研究需要多方面的知识,包括密码学、统计学、测量技术和微电子学” “跟踪这些工作并把握这些文献要旨之间的关系已经非常困难”。在中文互联网上,对这种攻击技术的博客、文档等非常之少,有的也仅仅是概括性的描述,或是国内外学者成功实施攻击的新闻等,缺少系统性的总结。在此我将通过几篇博文来总结相关的概念和技术,以及一些我个人成功复现的东西以便交流。其内容涉及广泛,寥寥数语不足以描述,只希望能在中文互联网上增添一点相关文字,以供更多的爱好者和研究者一起交流。在后面,还会分享一些从1985年以来有趣的攻击方法。这些攻击方法并不是对想要发起恶意攻击的黑客来分享,仅仅是技术上的交流。(这些攻击手段的实施成本相比很高,部署难度也很大,我实在是想不出在普通的个人、办公场所等情景下发起这种攻击的目的)
对于攻击物理隔离网的成功案例,最有名的应该是“震网”病毒攻击伊朗的核设施,此外还有不少通过打印机、USB、光驱等方式的攻击,出名的如“冲击钻”(HammerDrill)、“USBee”等项目。
从能量分析攻击开始说起
对于计算机设备,如果黑客想要窃取其内部的数据或是造成破坏等,可以通过web渗透攻击、逆向分析等等手段。但是对于使用物理隔离的计算机设备或网络,传统的黑客攻击手段便基本无法成功实施。物理隔离是指通过物理手段隔离要保护的计算机设备。可以是将计算机设备放在一间由绝对信任的人员保护的房间,计算机设备隔绝一切接入互联网的功能,例如切断网线、WiFi、蓝牙等等,只能执行离线计算等功能。对于这样的防护措施,想要攻破难度非常之大。当然,世界上没有不能攻破的系统,当被保护的对象的价值足够大时,想要实施攻击的一方可以不计成本的进行攻击。对于如何攻破物理隔离网下设备,自1985年起第一篇非保密性质的TEMPEST攻击的论文被发表以来(对于TEMPEST攻击将在以后的博文里更新),越来越多的成功攻击实例被发表,其攻击效果之大引起很多相关学者和黑客的注意,包括一些无线电爱好者也参与其中。
当然,计算机是电子计算机,工作时总需要供电,那么就会有电源、连接线等。假设一种情景:我们如果能够使用示波器等设备测量物理隔离网下的计算机设备的电源,采集电源的电压、电流等信号,是否可以分析出一些信息呢?
Paul Kocher曾使用一台示波器尝试这么做了,并很快发现了一些能量痕迹的分布。(Paul Kocher是一位著名的安全研究人员,也是“幽灵”熔断漏洞的发现者, 他的个人主页)通过采集分析芯片执行加密算法时的电压,可以做到识别算法特征,从而逆向分析出明文信息等。
举个实例,测量这种能量的方法有给电源串联一个电阻,测量这个电阻的电压变化,或者是测量芯片的直接联系的一些部件。在《能量分析攻击》一书中,给出的示例是:使用一个8051兼容微控制器来执行AES算法,使用RS-232接口接收PC的明文数据,在8051微控制器的电源接地导线上串联一个1Ω的电阻,使用示波器测量记录这个电阻上的电压降。通过观察电压降,可以看出电压降的变化会随着微控制器的能量消耗而变化,并且这种变化与芯片进行计算的过程和数据有强相关关系。(在书中,给出了约4.1毫秒内的电压变化,能够明显看到9个负尖峰,对应着AES10轮加密过程)这种能量分析方法是最为简单的方法,称为简单能量分析(Simple Power Analysis, SPA)攻击。根据不同情况下的硬件和算法,通过肉眼观察01比特的能量痕迹特征从而进行数据恢复、窃取明文等。之所以SPA能够奏效,是因为对于不同的计算操作和不同的数据,各个电压尖峰形状不同,因此可以做到采集、分析、识别、对应从而仅依赖一条能量痕迹就可以做到SPA攻击。
除了简单能量攻击,对于更加复杂的硬件、算法、数据的情况下,使用差分能量分析(DPA)攻击有时会更有效。简单来说,以电路的功耗特性为基础,利用功耗与内部密钥的关系,将大量采样到的包含该内部密钥运算的功耗波形数据根据所猜测的密钥进行划分,使得所划分的两部分具有不同的功耗特性。最后,对两部分的功耗数据相减得到功耗差分曲线,如果猜测正确,差分曲线将出现明显的尖峰。
那么,我们可以认为:密码设备的瞬时能量消耗依赖于设备所处理的数据和设备所执行的操作。 基于这一点,就建立起计算机设备在运行时,会有极其微弱能量消耗变化,这种能量变化通过一些手段是足以分析出保密信息的概念。这一点在后面的博文中会多次涉及。(这种极其微弱的能量变化是日常生活中几乎无法被观察到,甚至于当我最开始研究这方面的时候总会怀疑是否真的存在足以破解信息的能量变化,总会觉得自己像个民科一样…)
对于如何抵抗SPA攻击和DPA攻击现在已经有了不少对策,总的来说可分为(1)隐藏.对于隐藏技术,基本思想是消除能量消耗的数据依赖性,可以随机化算法执行过程,或是改变设备的能量消耗特征。但是, 实际上数据依赖性无法完全被消除,总会残存一部分痕迹。(2)掩码. 对于掩码技术,基本思想是随机化加密设备所处理的中间值。目的是使得加密设备处理数据的中间值时所需的能量消耗与实际处理中间值的能量消耗相互独立,使得黑客难以直接通过能量消耗追溯明文。
上面的介绍仅仅是能量分析攻击技术的冰山一角,目的是引入计算机设备工作时所消耗的能量会暴露其内部信息的事实。基于此,(1)我们可以通过分析计算机设备的能量消耗特征,来做到逆向分析明文,窃取保密信息等;(2)如果掌握了某种计算机设备能量消耗的特征,甚至可以通过主动控制这种能量消耗,向外界发送特定的信号,来做到隐蔽通信的目的。(3)再暴力一些,通过对核心的计算芯片等设备,我们对其发射特定的能量,可以做到干扰、屏蔽的功能;甚至如果使用非常精密的设备,可以做到精准时刻发射干扰,从而做到另外一种攻击方法,叫做电磁错误注入攻击。我个人对这方面的关注很少,只认识浙大的一个师兄在做这方面的安全研究~
对于能量分析攻击还有非常多的背景知识,在这里就不继续展开了,如果感兴趣的话比较推荐《能量分析攻击》一书,其中再深入的内容是分析COMS电路、FPGA等硬件层面,和使用概率论的知识对采集到的能量痕迹进行分析,需要微电子背景知识和概率论背景知识。对于这本书还有一个[官方网站] (http://dpabook.iaik.tugraz.at/),上面有关于SPA和DPA的数据集可以尝试。
这方面的研究在相当长的一段时间里没有被发现,原因是这个研究领域不属于任何学科的研究范畴。在过去的一段时间间隔里,密码学研究者关于的是加密强度,工程师们关注硬件和软件产品,在这个交叉的学科空白里关注的人十分少。好在现在能够看到一些学者和工程师致力于这方面的研究和工作,微电子领域的从业者也非常重视这方面的旁路攻击防护。
这个系列的关注点(原本是一个系列…由于一些原因我隐藏了后续的文章…有机会再公开吧)
对于这个系列的博文,我将会关注能量分析攻击、TEMPEST瞬变电磁脉冲发射监视技术攻击、TEMPEST瞬变电磁发射射频信号、USB瞬变电磁发射射频信号、电磁错误注入攻击、以及国内外对此有过研究工作发表的学者们和他们的有趣工作等等。跨度包括各个方面,我个人的学习理解也有限,如有错误,请多包涵~~~
非常欢迎在博客下面留言,或者添加我的vx: sxysund 一起交流~