边信道攻击:side channel attack,简称SCA,也称为侧信道攻击。不一样于通常的攻击形式,这是一种对加密电子设备在运行过程当中的时间消耗、功率消耗或电磁辐射之类的侧信道信息进行利用,从而获取密码信息的方法。这类攻击的有效性远高于传统针对密码算法进行数学分析或暴力破解的方法,给加密设备带来了严重的威胁。html
缓存攻击,经过获取对缓存的访问权而获取缓存内的一些敏感信息,例如攻击者获取云端主机物理主机的访问权而获取存储器的访问权;算法
计时攻击,经过设备运算的用时来推断出所使用的运算操做,或者经过对比运算的时间推定数据位于哪一个存储设备,或者利用通讯的时间差进行数据窃取;数组
基于功耗监控的旁路攻击,同一设备不一样的硬件电路单元的运做功耗也是不同的,所以一个程序运行时的功耗会随着程序使用哪种硬件电路单元而变更,据此推断出数据输出位于哪个硬件单元,进而窃取数据;浏览器
电磁攻击,设备运算时会泄漏电磁辐射,通过得当分析的话可解析出这些泄漏的电磁辐射中包含的信息(好比文本、声音、图像等),这种攻击方式除了用于密码学攻击之外也被用于非密码学攻击等窃听行为,如TEMPEST攻击(例如范·埃克窃听、辐射监测);缓存
声学密码分析,经过捕捉设备在运算时泄漏的声学信号捉取信息(与功率分析相似);安全
差异错误分析,隐密数据在程序运行发生错误并输出错误信息时被发现;服务器
数据残留,可以使理应被删除的敏感数据被读取出来(例如冷启动攻击);架构
软件初始化错误攻击,现时较为少见,Row hammer是该类攻击方式的一个实例,在这种攻击实现中,被禁止访问的存储器位置旁边的存储器空间若是被频繁访问将会有状态保留丢失的风险;ide
光学方式,即隐密数据被一些视觉光学仪器(如高清晰度相机、高清晰度摄影机等设备)捕捉。布局
这种攻击对最新型号的英特尔CPU有效,如Core i7,需运行在支持HTML5的浏览器上。带有恶意JS的网页在受害者电脑上执行后,会收集与之并行的其它进程的信息,有了这个信息,攻击者能够绘制内存对按下按键和鼠标移动的反应状况,进而重塑用户使用情景。(哥伦比亚大学)
经过智能手机从运行PGP程序的计算机中“听译”密钥。这项最新的密钥提取攻击技术,可以准确地捕捉计算机CPU解码加密信息时的高频声音,并提取密钥。(同时提出GnuPG来应对这种攻击)
从采购供应链下手,将特制难以检测的恶意软件植入电脑,该软件会强制计算机的内存总线成为天线,经过蜂窝频率将数据无线传输到手机上。攻击者将接受和处理信号的软件嵌入在手机的固件基带中,这种软件能够经过社会工程攻击、恶意App或者直接物理接触目标电话来安装。
电脑CPU运算时形成“地”电势的波动,用手触碰笔记本电脑的外壳,接着再测量释放到皮肤上的电势,而后用复杂的软件进行分析,最终获得计算机正在处理的数据。例如:当加密软件使用密钥解密时,监测这种波动就可获得密钥。(GnuPG能够应对这种攻击)
步骤1. Prime: 攻击者用预先准备的数据填充特定多个cache 组;
步骤2. Trigger: 等待目标虚拟机响应服务请求,将cache数据更新;
步骤3. Probe: 从新读取Prime 阶段填充的数据,测量并记录各个cache 组读取时间。
Flush-Reload方法是prime-probe方法的变种,基于共享内存实现,是一种跨内核、跨虚拟机的Cache 探测方法。在Flush 阶段,攻击者将监控的内存块从cache中驱逐出去,而后在Trigger阶段等待目标用户访问共享内存。在Reload阶段,攻击者从新加载监控的共享内存块。若是在等待的期间,目标虚拟机访问过的内存块不须要从新加载,时间将会较短,由于这些数据已经被缓存在cache中。根据加载时间长短,可断定目标虚拟机访问过的数据。
步骤1. Flush:将共享内存中特定位置映射的cache数据驱逐;
步骤2. Trigger:等待目标虚拟机响应服务请求,更新Cache;
步骤3. Reload:从新加载Flush阶段驱逐的内存块,测量并记录cache组的重载时间。
Evict+Reload和Flasu+Reload的攻击流程基本一致,只是,经过驱逐(eviction)的方式,即从从Cache中移出一个行从而为新数据腾出空间的过程,用于替代Flush+Reload中的Flush指令缺失的状况。
与Flush-Reload不一样的是,Flush-Flush攻击是基于clflush指令执行时间的长短来实施攻击的。若是数据没在Cache中则clflush指令执行时间会比较短,反之如有数据在cache中则执行时间会比较长。与其它Cache攻击不一样,Flush Flush侧信道攻击技术在整个攻击过程当中是不须要对内存进行存取的,所以该攻击技术更加隐蔽。然而根据做者的经验,因为有无数据状况下Cache被flush的时间差异其实并不是特别明显,所以在攻击过程当中数据判断的精度并不高。
步骤1:经过flush清空Cache原始数据;
步骤2:等待目标进程运行,更新Cache,并刷新共享缓存行,测量刷新时间;
步骤3:根据测量时间判断原始数据是否被缓存。
该方法攻击原理如图所示:
乱序执行能够简单的分为三个阶段,以下图所示:
每一个阶段执行的操做以下:
1. 获取指令,解码后存放到执行缓冲区(保留站); 2. 乱序执行指令,结果保存在一个结果序列中; 3. 退休期,从新排列结果序列及安全检查(如地址访问的权限检查),提交结果到寄存器。
1 ; rcx = kernel address, rbx = probe array 2 xor rax, rax 3 retry: 4 mov al, byte [rcx] //step 1 5 shl rax, 0xc //rax*4096 6 jz retry 7 mov rbx, qword [rbx + rax]
结合Meltdown利用的代码片断来看,Meltdown漏洞的利用过程有4步:
1. 指令获取解码; 2. 乱序执行3条指令,line 5和line 7要等line 4中的读取内存地址的内容完成后才开始执行,line 7会将要访问的rbx数组元素所在的页加载到CPU Cache中; 3. 对2的结果进行从新排列,对line 四、line五、line7这3条指令进行安全检测,发现访问违例,会丢弃当前执行的全部结果,恢复CPU状态到乱序执行以前的状态,可是并不会恢复CPU Cache的状态; 4. 经过缓存测信道攻击,能够知道哪个数组元素被访问过,也即对应的内存页存放在中,从而推测出内核地址的内容。
与Meltdown相似,Spectre的原理是,当CPU发现分支预测错误时会丢弃分支执行的结果,恢复CPU的状态,可是不会恢复CPU Cache的状态,利用这一点能够突破进程间的访问限制,从而获取其余进程的数据。
if (x < array1_size) { y = array2[array1[x] * 4096]; // do something detectable when // speculatively executed }
具体攻击过程能够分为三个阶段:
1. 训练CPU的分支预测单元使其在运行利用代码时会进行特定的预测执行; 2. 预测执行使得CPU将要访问的地址的内容读取到CPU Cache中; 3. 经过缓存测信道攻击,能够知道哪个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出地址的内容。
熔断攻击和幽灵攻击提出以后,前后出现了一系列利用计算机硬件设计时遗留下来的缺陷进行攻击的方法。
Foreshadow是针对Intel处理器SGX技术的攻击,它使攻击者可以窃取存储在我的计算机或第三方云中的敏感信息。Foreshadow有两种版本,一种是旨在从SGX安全区提取数据的原始攻击,另外一种是影响虚拟机(VM),虚拟机管理程序(VMM),操做系统(OS)内核内存和系统管理模式(SMM)内存的下一代版本。
从较高层次来讲,SGX是现代Intel CPU的一项新功能,即便整个系统都在攻击者的控制之下,它也可使计算机保护用户的数据。 虽然之前认为SGX能够抵抗推测性执行攻击(例如Meltdown和Spectre),但Foreshadow演示了如何利用推测性执行来读取SGX保护的内存的内容以及提取机器的专用证实密钥。更糟的是,因为SGX的隐私功能,一份证实报告没法与其签名人的身份联系在一块儿。 所以,仅需使用一台受损的SGX计算机便可破坏对整个SGX生态系统的信任。
在Meltdown,Spectre和Foreshadow以后,做者发现了现代处理器中的更多关键漏洞。 ZombieLoad攻击容许在计算机访问敏感数据和密钥时窃取它们。尽管程序一般只能看到本身的数据,可是恶意程序能够利用内部CPU缓冲区来掌握当前由其余正在运行的程序处理的机密。这些秘密能够是用户级别的秘密,例如浏览器历史记录,网站内容,用户密钥和密码,也能够是系统级别的秘密,例如磁盘加密密钥。
更新:ZombieLoad的新变体能够对耐MDS的CPU进行攻击。在2019年11月14日,做者提出了ZombieLoad的新变体,能够对CPU进行攻击,其中包括针对芯片中MDS的硬件缓解措施。使用Variant 2(TAA),数据仍然能够在诸如Cascade Lake之类的微体系结构上泄漏,而其余MDS攻击(如RIDL或Fallout)是不可能的。此外,做者代表,结合微码更新做为基于MDS攻击的对策,基于软件的缓解措施是不够的。
RIDL显示,攻击者能够利用MDS漏洞在实际环境中发起攻击并泄漏敏感数据。经过分析对CPU流水线的影响,做者开发了各类实用的漏洞利用方法,它们从不一样的内部CPU缓冲区(例如,行填充缓冲区和加载端口)泄漏运行中的数据,这些缓冲区在CPU从内存加载或存储数据时使用。实验代表,RIDL能够在搭载最新英特尔CPU的计算机上运行非特权代码,不管是使用共享的云计算资源,仍是在恶意网站或广告上使用JavaScript,均可以跨越任何安全边界从同一台计算机上运行的其余程序窃取数据: 其余应用程序,操做系统内核,其余VM(例如在云中),甚至是安全(SGX)区域。
Fallout代表攻击者能够从存储缓冲区泄漏数据,每次CPU流水线须要存储任何数据时都会使用该存储缓冲区。更糟糕的是,没有特权的攻击者随后能够从CPU的存储缓冲区中选择泄漏的数据。实验证实,Fallout可用于打破内核地址空间布局随机化(KASLR),以及泄漏由操做系统内核写入内存的敏感数据。具备讽刺意味的是,与较早的硬件相比,英特尔在最新的Coffee Lake Refresh i9 CPU中采用的最新硬件对策可防止Meltdown崩溃,可是,这使他们更容易受到Fallout的影响。
熔断攻击和幽灵攻击的主要提出者,他们的最新工做将发表在2020年的S&P(security&privacy)会议上,题为“RAMBleed: Reading Bits in Memory Without Accessing Them”。
Rowhammer是DRAM单元中的一个存在的问题,它可以使无特权的攻击者翻转存储模块上相邻行中的位值。先前的工做已经将此方法用于跨安全边界的各种型错误攻击,攻击者在其中翻转难以访问的位,一般会致使特权升级。虽然攻击者已经能够经过常规的写操做来修改其私有内存,可是,人们广泛认为,攻击者本身的私有内存中的位翻转不会带来安全隐患。经过采用Rowhammer做为读取边信道,做者证实了这种假设是不正确的。更具体地说,做者展现了无特权的攻击者如何利用Rowhammer引发的位翻转和附近行中的位之间的数据依赖性来推断这些位,包括属于其余进程和内核的值。所以,这项工做的主要贡献是代表,Rowhammer不只威胁到完整性,并且也威胁到机密性。此外,与须要持续进行位翻转的Rowhammer写端通道相反,即便ECC存储器检测并纠正了每一个位翻转,做者的读取通道也能够成功。与之前的Rowhammer攻击不一样,RAMBleed攻击不须要使用大页面,而且能够在默认配置下在Ubuntu Linux上运行。
清华大学魏少军、刘雷波团队提出一种基于动态可重构计算处理器实时监控的至强®内核硬件安全加强服务器CPU芯片。
随着计算机和半导体技术的发展,CPU 芯片已经成为高度复杂的芯片,其设计、制造、封装及测试等过程涉及到全球化的产业分工,要对全部环节实施有效监管几乎不可能。此外,要在组成 CPU 的数十亿到上百亿颗晶体管中发现仅由数十颗晶体管就能够组成的恶意硬件也是不可能完成的任务。而人为疏忽或技术限制而形成的硬件漏洞,更是难寻踪影,防不胜防。传统的经过检查 CPU 芯片的设计源码、网表、版图、管芯来查找恶意硬件和硬件漏洞的方法就如同大海捞针,彻底不可行。2016 年,清华大学魏少军团队提出了基于高安全、高灵活可重构芯片架构的“CPU 硬件安全动态监测管控技术”。 该技术经过动态、实时监控 CPU 运行过程当中的“合法行为”来发现“非法行为”,从根本上克服了传统的 CPU 安全隐患、技术漏洞难以被监测和发现的困难。硬件木马、硬件漏洞(如“熔断”、“幽灵”)、硬件后门以及恶意利用硬件前门的行为,都能被该技术迅速发现并根据须要进行管控。
对边信道攻击的学术研究起于1996-1999年,传统的密码分析技术每每基于数学算法,效果很不理想,边信道攻击是一种不依赖于软件环境的攻击方法,它主要依靠一些物理信号现来判断电路中正在处理的数据,这种攻击方式比传统的方法更致命,更重要的一点,基于软件的漏洞利用能够经过升级、打补丁等方式进行修复,若是要对基于硬件信号进行利用的漏洞进行修复,就变得十分困难。
早在1998年,有关利用Cache命中率进行密钥分析的思路就已经被提出来。在过去十年,利用旁道技术对x86 CPU实施的Cache攻击已经被证实是一项极其强大的攻击方法。2017年,随着幽灵攻击(meltdown)和熔断攻击(spectre)的提出,利用旁信道技术针对CPU进行攻击的研究受到愈来愈多的人关注。
伴随着中美贸易战的持续进行,发展中国本身的芯片产业变得尤其重要。若是要发展好本身的芯片产业,除了在芯片核心技术上进行研究,还必需要保证芯片安全性,若是在芯片已经投入生产而且应用在国内大量厂商、政务机关以后,才被发现存在漏洞,这对芯片生产公司而言,这是一场巨大的灾难。在芯片投入生产前尽量多地考虑安全问题,才能避免重复Intel目前的这种困境。
虽然清华大学魏少军团队提出的基于高安全、高灵活可重构芯片架构的“CPU 硬件安全动态监测管控技术”已经投入生产,可是,针对芯片安全的研究仍然还有很大的空间和潜力。
津逮®CPU:http://www.montage-tech.com/cn/Jintide_CPU/index.html