随着物联网技术的迅猛发展,其安全问题受到了很多研究者的关注.一方面,海量异构的智能设备承载着核心功能,容易成为攻击者的直接目标;另一方面,智能终端设备收集到的数据在云、边、端等处理过程中存在数据泄漏等安全问题.侧信道攻击利用物联网环境中共享的物理资源,构建隐蔽信道获取时间、功耗、电压、声音等侧信息,从智能终端设备或云平台中提取敏感信息,目标对象包括智能手机[1]、智能手表[2]、智能灯[3]、电动汽车[4]等实体设备,对物联网终端设备及应用环境造成了严重危害.
侧信道攻击与传统直接获取访问敏感数据权限的攻击不同,它通过分析所监控的某些特定资源从系统中获取敏感信息.而物联网设备容易遭受侧信道攻击的原因主要有2个:1)大量的用户共享系统资源,且多个应用程序运行在同一台物联网设备中,利用共享资源获取信息的侧信道攻击一旦危害一个用户或应用程序,其他用户或应用程序立即面临威胁;2)物联网设备的大量部署,为物理访问这些设备提供了更多机会,使得攻击者获取更多的侧信道信息.虽然目前提出的一些隔离技术(虚拟机、沙箱、特权分级等)可以防止非授权访问,但这种隔离仅仅是逻辑上的隔离,物理资源仍是共享的,因此无法防御侧信道攻击.根据监控的资源类型,侧信道攻击通过构建不同的侧信道获取侧信息并实施攻击行为.Ronen等人[3]将差分能量分析和相关性能量分析相结合,利用功率消耗构建侧信道,成功提取Philips用来加密和授权新固件的全局AES-CCM密钥,实现对物联网设备Philips Hue智能灯的远距离复位和控制.Islam等人[5-7]分别利用热力、电压、声音构建侧信道来提取云环境中良性租户的运行时功率使用信息,确定攻击时间,实现对共享电力设施的有效攻击.Zhang等人[8]提出在iOS系统中构建计时侧信道破坏文件系统,利用侧信道攻击成功提取用户信息,包括识别访问的网站以及检测安装的应用程序等.Genkin等人[9]通过计算机内置网络摄像头或麦克风等设备收集噪声,构建声音侧信道,通过对信号进行分析,可以实时检测屏幕上的文本内容以及使用虚拟键盘输入的内容等信息.此外,电磁侧信道攻击[4,10-12]、温度侧信道攻击[13]、光子侧信道攻击[14]、缓存侧信道攻击[15-16]等在终端设备或云平台中也得到了广泛应用.侧信道攻击通过监控某些资源,结合已知条件推断出一些敏感数据,其攻击效果显著,且由于不在系统中留下任何痕迹,很难被检测.
大量物联网设备及云平台中的用户信息等敏感数据都依赖于密码库的可靠性进行保护,而侧信道攻击在提出之初就是一种针对密码实现的物理攻击方法,因此很容易对物联网终端设备实施攻击.在众多侧信道攻击中,访问驱动下的Cache侧信道攻击利用Cache资源共享,通过监控用户程序对Cache的访问行为,结合已知信息可推断目标设备和云平台目标虚拟机中的加密密钥,同时也可以获取用户密码、浏览器访问记录等敏感数据.对不同架构下的设备安全和云安全环境造成了严重威胁.因此,本文主要针对访问驱动下的Cache侧信道攻击进行研究.
本文的主要贡献有3个方面:
1) 重点研究了访问驱动下的Cache侧信道攻击技术,通过理论分析和实例验证的方式,对比分析了“清除+重载”、“填充+探测”和“刷新+重载”3种攻击的攻击原理、攻击过程和攻击效果,详细阐述了不同攻击的适用场景以及可能存在的问题;
2) 提出了Cache侧信道攻击在攻击LLC和处理噪声方面的挑战,并给出相应的解决措施;
3) 结合可信应用环境广泛应用于数据存储和保护等现状,讨论了对部署隔离机制的终端设备和可信云安全环境实施攻击等未来研究方向.
CPU Cache(1)无特殊说明,后文中Cache均指CPU Cache是一个缓冲CPU频繁使用的数据的小容量存储器,它利用数据访问的局部性原理(最近被访问的数据容易被再次访问)避免数据再次访问主存时带来的高延迟.由于Cache可在不同进程间共享,因此可在CPU Cache中实施Cache侧信道攻击.该攻击通过监控指定程序的Cache访问行为,推断出该程序的敏感信息,其核心是利用Cache命中和未命中的时间差实施攻击行为.算法1是一个RSA平方乘求幂算法,通过侧信道攻击可以获取算法中的敏感数据.在计算过程中,对于每个位,执行一次squ()和mod()函数,当该位值为1时,执行一次mul()和mod()函数.因此,第3行函数squ()的执行次数可表示二进制指数e的位数,第6行函数mul()是否执行表示该位的值是否为1.通过观察这2个函数地址的Cache访问行为、比较地址访问的时间,可以判断函数是否执行,进而推断出指数e所有位上的值.
Cache侧信道攻击包含1个目标进程和1个间谍进程,目标进程即被攻击的进程,间谍进程指在Cache中探测关键位置的恶意进程.通过探测,攻击者可以推断目标进程的Cache行为信息.最近几年,Cache侧信道攻击越来越复杂,凭借可以绕过监督模式执行保护(supervisor mode execution protection, SMEP)以及地址空间布局随机化(address space layout randomization, ASLR)[17]的特点,逐步由攻击AES[18-21],RSA[22],DSA[23]等加密算法到获取击键信息[24]等,而且其攻击对象包括台式机[25]、移动设备[24]以及云平台[15-16,26-27]等.根据攻击者获取信息的方式及粒度,可以将Cache侧信道攻击分为3类[28]:1)时序驱动攻击.攻击者通过观察某一次计算运行的整体时间来推测目标程序的Cache命中和未命中的数量.2)踪迹驱动攻击.攻击者在目标进程运行时,通过观察到大概的Cache行为来推测哪些内存访问产生了Cache命中.3)访问驱动攻击.攻击者判定目标进程运行时访问指定Cache组的情况,进而推测出目标进程所访问的敏感数据.在这3类攻击中,访问驱动攻击的攻击粒度更细,且在实际应用中更为广泛.该攻击一般分为清除、等待、分析3个步骤[29].根据不同的攻击场景,清除和分析方法有所不同,攻击方式也变化多样.第2~4节分别针对访问驱动下的“清除+重载(Evict+Reload)”、“填充+探测(Prime+Probe)”、“刷新+重载(Flush+Reload)”这3种Cache侧信道攻击进行详细阐述.
Evict+Reload攻击是一种典型的访问驱动下的Cache侧信道攻击,主要针对L1-Cache获取敏感信息.该攻击的原理是,攻击者利用Cache组相联的特点,把指定Cache组中的所有内存行进行清除和检查,由于间谍进程和目标进程共享Cache,间谍进程可以探查到该Cache组中哪一行被目标进程重新加载,进一步推测出运行目标进程的内核中私有Cache中的数据.
Evict+Reload攻击分为3个步骤:1)间谍进程利用冲突地址填满Cache组中所有行,将目标进程访问的探查地址从该组中清除;2)间谍进程等待目标进程访问该Cache组;3)间谍程序访问探查地址并测量访问时间.通过访问时间,确定目标进程在等待阶段是否访问了该探查地址.
图1是一个在6路组相联Cache中实施Evict+Reload攻击的示例[29].在时刻T0,目标进程将探查地址加载到Cache的某一行中;在清除阶段(T1),间谍进程利用冲突地址清除该组中包括探查地址在内的所有的行;在等待阶段(T2),间谍进程等待目标进程访问探查地址;在分析阶段(T3),间谍进程访问探查地址并测量访问时间.此时,由于目标进程在时刻T2访问了探查地址,间谍进程再次访问时会产生一个命中.而在下一个循环(T4,T5,T6)中,目标进程在时刻T5没有访问探查地址,所以当间谍进程在时刻T6访问探查地址时,会产生一个未命中,此时访问的时间相比于命中时较长.通过访问时间,间谍进程很容易确定目标进程是否访问了该探查地址,进而推断出敏感数据.例如,给出一串0和1构成的位,当值为“1”时,数值加1,否则查看下一位.那么间谍进程只需获知在每次循环中,目标进程是否访问了“加1”这个操作的探查地址,即可推断出该串位的具体数值.
Fig.1 Example of Evict+Reload
图1 Evict+Reload攻击示例
Gruss等人[30]在提出Cache模板攻击时,实施并验证了Evict+Reload攻击.他们利用物理地址的低18位实施攻击,清除率接近于100%,而且对按键n的探查地址进行检测,平均检测率为90%,假阳率为5%.证明了在攻击者可以访问共享Cache行的情况下,实施的Evict+Reload攻击难以被完全防御.
Prime+Probe攻击由Osvik等人[31]首次提出,该攻击的特点是不需要攻击者和受害者内存共享.其攻击原理与Evict+Reload攻击相似,都是利用Cache命中和未命中的时间差,确定目标程序的Cache访问行为.但由于Prime+Probe攻击不依赖于间谍程序和目标程序共享内存,因此,不同于Evict+Reload攻击中比较访问探测地址的时间差,该攻击的攻击者只能测量比较间谍进程访问指定Cache组的时间差.
利用Cache访问特性,攻击分为3个步骤:1)填充阶段,攻击者通过访问自己内存空间中部分区域,将特定的Cache组中的所有行进行填充;2)目标访问阶段,攻击者等待目标程序访问该Cache组中的内存行,从而清除第一阶段填充的对应Cache行;3)探查阶段,攻击者再次访问该Cache组中的所有行,并测量访问时间.如果该内存行已被目标程序从Cache中清除,则访问时间较长;反之,则所有填充的行仍存储在Cache中,那么访问时间较短.通过该攻击,攻击者确定目标程序是否访问指定的Cache组,从而推测敏感数据.
假设一个m路、n组相联的Cache,容量为c,Cache中每行大小为b,则n=c/(m×b).目前市场上大部分的L1指令Cache大小为32 KB,每组有8行,且每行占据64 B,因此,L1指令Cache有32 KB/(8×64 B)=64组.在一个4 KB的页面中,按照Cache行大小进行分块,可以分成64(4 KB/64 B)块,而偏移量相同的块会映射到同一个Cache组中.当对L1指令Cache实施Prime+Probe攻击时,在填充阶段,首先分配足量的连续内存页面,使其大小总量与L1指令Cache相同;其次把每个页面分成64个与Cache行大小相等的块;然后通过执行指令把每个页面的第i个数据块映射到第i个Cache组中,使得特定组中的所有行都被填充.
在探查阶段,如图2所示,通过执行rdtsc指令测量访问第i个Cache组所用的时间.其中,cpuid指令防止指令重序或者乱序执行.每个mov指令读取该Cache组中的一行,每个内存行存储指向下一行的指针,寄存器%eax存储测量的时间.通过比较这2个阶段中的访问时间,确定受害者进程是否在等待阶段访问了L1指令Cache中指定的组.
Fig. 2 Code of probing an 8-way cache
图2 探查一个8路组Cache的代码
此外,利用Prime+Probe攻击在探查时也填充了相关的Cache组的特点,有一个改进之处是在重复执行探查时,只需在每2个探查之间执行预设的等待即可完成Prime+Probe攻击,而不用额外地执行填充操作,提高了攻击效率.
Osvik等人[31]利用该攻击检测Cache在AES加密后的状态,找到执行加密时访问的Cache组,从而提取密钥.在已知虚拟地址到物理地址映射关系的情况下,在Athlon 64上可以在300次加密后获取全部的128 b AES密钥,在Pentium 4E上需要执行16 000次加密获取全部密钥;在不知任何地址映射的情况下,在Althon上执行8 000次加密后,可以获取全部密钥.
Fig. 3 Timing of Flush+Reload
图3 Flush+Reload攻击的时序过程
Flush+Reload攻击是Prime+Probe攻击的一种变形,该攻击可以从包括L3在内的各级Cache中清除内存行,实施条件依赖于间谍程序和目标程序之间共享内存页面[32].在Intel处理器中,用户线程可以使用clflush指令刷新可读和可执行的页面,这就使得攻击者可以通过刷新与目标程序共享的页面来实施攻击.由于clflush指令可以从整个Cache层次架构中清除指定的内存行,攻击者使用clflush指令频繁地刷新目标内存位置,通过测量重新加载该内存行的时间,确定目标程序是否同时将该内存行缓存到Cache中.
Flush+Reload攻击由3个步骤组成:1)被监控的内存行从Cache中刷新;2)间谍程序等待目标程序访问该内存行;3)间谍程序重新加载被刷新的内存行并测量加载时间.
如图3(a)所示,如果受害者在步骤2没有访问被刷新的内存行,那么该内存行不会把内存缓存到Cache中,因此在步骤3被重新加载的时间较长;图3(b)表示受害者在步骤2访问被刷新的内存行,此时该内存行会缓存到Cache中,因此在步骤3被重新加载的时间较短.通过测量重新加载时间即可判断该内存行是否在等待时间被目标程序访问.
在Flush+Reload攻击中,攻击者无法确定受害者访问的具体时间,只能设置一个等待时间进行等待并测量,等待时间的设置对攻击的成功率有着重要的影响.若时间设置较短,如图3(c)所示,受害者访问的时间可能与攻击者重新加载的时间重叠,且是在攻击者开始进行重新加载后受害者才开始访问该内存行.此时,受害者访问该数据时会直接使用攻击者已重新加载的数据,而不会再从内存中读取.所以,攻击者认为受害者在等待阶段并没有访问该内存行,从而检测错误.若时间设置较长,如图3(d)所示,受害者访问的时间与攻击者重新加载的时间也可能发生重叠,但此时是受害者先访问被刷新的内存行,且在访问未结束时,攻击者开始重新加载该内存行.由于受害者已经访问该内存行,攻击者无需从内存中再访问该内存行,且重新加载与受害者访问同时结束,此时重新加载的时间比从内存中加载该内存行的时间短,但比从Cache中装载的时间长.虽然延长等待时间可以降低由于时间重叠导致的检测错误率,但同时也降低了攻击粒度.一种解决方案就是对访问频率高的内存块(如循环体)进行刷新和重新加载,如图3(e)所示,在等待时间内尽可能多地让受害者访问内存行,虽然不能在每次访问后都能检测到,但可以降低未检测率.
由于Flush+Reload攻击使得攻击者可以确定哪些具体的指令被执行以及哪些具体的数据被受害者访问,因此被广泛应用于加密算法的破解中.例如利用运行在不同内核的虚拟机共享物理资源这一特性,对目标虚拟机实施Flush+Reload攻击获取敏感数据.Irazoqui等人[33]对该攻击进行了修改,并对目标虚拟机中运行的OpenSSL 1.0.1中的AES算法上进行了攻击验证.与之前攻击不同,该攻击只监视一个内存行,且在加密之前执行刷新,在加密后执行重新加载,避免攻击者中断受害者进程.通过这些修改,改进的Flush+Reload攻击更加隐蔽,且攻击速度更快,只需几秒到几分钟的时间可获取AES全部密钥.除此之外,利用Flush+Reload攻击也可以提取击键信息,Oren等人[25]证实了在Intel平台上利用该攻击获知受害者访问的网页以及鼠标使用痕迹.
近年来,随着Cache侧信道攻击的不断完善,其攻击复杂度越来越高,且各攻击模型的优缺点和适用场景也更加明显.Evict+Reload攻击主要还是在L1-Cache中实施,利用攻击者和受害者共享内存,间谍进程能够获得所需的Cache行,通过攻击准确判断指定Cache行的访问行为,攻击效率较高.Prime+Probe攻击不再依赖于攻击者和受害者共享内存,因此间谍进程无法获得具体的Cache行,而是通过比较访问指定Cache组中所有行的时间判断目标进程Cache访问行为.虽然攻击粒度没有Evict+Reload攻击细,但该攻击已逐步发展为针对LLC的攻击,更符合实际应用.相比于前2种攻击,Flush+Reload攻击速度更快,而且可以直接在LLC中实施,但该攻击除了需要间谍进程和目标进程之间共享内存外,更依赖于clflush指令刷新Cache,因此,只能作用于支持clflush指令的环境中,同时,由于刷新指令执行周期很短,需要更精准的时钟计数器提高分辨率,对噪声处理的要求也更高.
从攻击范围的角度比较,如表1所示,“清除+重载”攻击目前仍针对低级Cache实施,且主要应用于获取击键信息;“刷新+重载”攻击因为需要clflush指令和内存共享,实施条件相对苛刻,刚开始只能在Intel处理器中实施,经过不断发展,在ARM中也可以变型实施;“填充+探测”攻击由最初的针对低级Cache发展为高级Cache,且不需要内存共享,因此攻击范围最广.
Table 1 Comparison of Attack Range of Three Cache Side Channel Attacks
表1 3种Cache侧信道攻击的攻击范围比较
Attack TargetEvict+ReloadPrime+ProbeFlush+ReloadData Cache√[19,28,31] Instruction Cache√[22]√[23,34]LLC√[15,25,33,35]√[30,36-37]ARM√[24]√[24]√[24,38]AMD√[39]AES√[33,39-40]√[36,41]RSA√[32,35]√[37,42-43]Keystrokes√[24,30]√[44]√[24,30,44]Cloud Platform√[33,39]√[16,41]TrustZone√[24]SGX√[32,40,45]√[45]
Note: “√” indicates that the attack is performed on this target.
从防御的角度比较,如表2所示,由于“填充+探测”攻击的应用最为广泛,针对这一攻击提出的防御方法较多.“清除+重载”攻击一般不用于LLC攻击中,威胁相对较小,而针对“刷新+重载”攻击提出的防御方案一般都是在Intel处理器中.虽然这些防御方案可以在一定程度上缓解Cache侧信道攻击,但受限于性能、处理器平台等因素,并不能完全消除Cache侧信道攻击,利用Intel TSX(transactional synchronization extension)技术可以检测中断异常,但目前的攻击已经可以不触发AEX(asynchronous enclave exit),Intel CAT(cache allocation technology)技术可以保护密码算法,但无法防御来自隔离容器外部的攻击.
Table 2 Defense Schemes Proposed for Cache Side Channel Attacks
表2 针对Cache侧信道攻击提出的防御方案
Defense SchemeEvict+ReloadPrime+ProbeFlush+ReloadKeyDrown[44]√√ReplayConfusion[46]√Chiappetta[47]√Liu[48]√CATalyst[49]√√HomeAlone[50]√STEALTHMEM[51]√√ScatterCache[52]√
Note: “√” indicates that the attack is defeated by this defense.
Fig. 4 Virtual address composition of regular page (4 KB,top) and huge page (256 KB,bottom) in an Intel x86 processor
图4 Intel x86处理器普通页面(4 KB)和大页面(256 KB)虚拟地址组成
当前访问驱动下的Cache侧信道攻击主要还是在低级Cache中实施,例如Evict+Reload和Prime+Probe攻击都用于监视L1-Cache行为.主要原因有2点:大多数情况下,攻击者仅能获取虚拟地址,容量小的Cache,由于对应的组索引位以及Cache行偏移量较少,通过虚拟地址即可获得,符合攻击的实际情况;容量小的Cache更容易实现对所有的行进行填充和探查.但是,在很多实际场景中,攻击者和受害者并不是处于同一个内核中,例如运行在同一个物理机上的不同虚拟机会运行在不同内核上.因此,该类攻击逐渐转移到内核共享的LLC上.但在LLC上实施这类攻击比在L1-Cache上困难很多,主要面临2个挑战:1)LLC比L1-Cache容量大很多,正常的虚拟地址的页面偏移量难以完全包含LLC的组索引位;2)现代Intel处理器,从“沙桥”微架构(Sandy Bridge microarchitecture)开始,为提高LLC性能引入了切片技术,即每个内核对应一个切片,每个切片的功能与一个Cache相似,在这种情况下,即使组索引位已知,也无法确定映射到哪一个切片的Cache组中,从而无法完成对应组的填充和探查工作.
为解决第1个挑战,目前基本上采用调整页面大小的方法[33,35,46].默认的页面大小是4 KB,则虚拟地址的低12位表示页面偏移量,现代处理器中Cache行大小通常为64 B,则行内偏移量需6 b,其余6 b为组索引位,最多索引64个Cache组,无法满足LLC组索引要求.因此,增加页面大小成为一种解决方案.如图4所示,在3级Cache架构的Intel x86处理器中,若L1-Cache,L2-Cache,L3-Cache分别有64,512,4096组,设置页面大小为256 KB,则页面偏移量需18 b,其中低0~5位表示Cache行内偏移量,6~11位为L1-Cache的组索引位,6~14位为L2-Cache的组索引位,6~17位为L3-Cache(LLC)的组索引位.因此,当页面大小为256 KB或者更大时,LLC的组索引位完全包含在虚拟地址的页面偏移量中,不用地址转换即可索引对应的组.
为解决第2个挑战,目前已提出一些解决方案.Irazoqui等人[33]发现Intel i5-650处理器上LLC分为2个切片,且数据将进入哪个切片由虚拟地址的第(l+1)位决定,其中l为组索引和行内偏移量需要的位数.第(l+1)位为0,数据存储在第0切片,第(l+1)位为1,数据存储在第1切片,通过(l+1)位判断内存行映射到哪一切片中的哪一个Cache组中.但是,该方法不具有通用性.Liu等人[35]利用Cache访问冲突原理设计了一个巧妙的方法,实现在LLC中实施Prime+Probe攻击.首先,把具有相同的组索引位的内存行作为候选者,建立1个冲突集,初始为空,通过迭代的方式,如果候选者与冲突集中的内存行不发生冲突,则加入冲突集中,每个切片中要进行填充的Cache组称为清除组,冲突集是所有切片中清除组的集合;其次,从冲突集中划分出对应每个切片的清除组.具体是遍历所有未进入冲突集的候选者,把冲突集中的每条内存行依次除去,如果该候选者与除去的内存行映射到同一个切片的清除组中,此时该候选者与冲突集不再发生冲突(候选者缓存到被除去的内存行所在的Cache组中),则重新加载该候选者的时间较短;如果该候选者与除去的内存行没有映射到同一个切片的清除组中,此时该候选者与冲突集继续发生冲突(该候选者映射到的Cache组已满),则重新加载该候选者的时间较长.通过时间差,可以把与该候选者在同一清除组的所有内存行找出,从而划分出每个切片的清除组.通过该方法,即使在切片号由Hash函数产生的情况下依然可以在LLC上实施Prime+Probe攻击,且攻击效果显著,对于旧版本的GnuPG,几秒钟即可破解密钥,在新的版本中,也仅需要12~27 min.
访问驱动下的Cache侧信道攻击针对不同的场景,提出了各种攻击方式.虽然这些攻击应用广泛,且因为不留下痕迹难以被检测,但因为软硬件因素,攻击实施的过程中都不可避免地存在噪声问题,影响了攻击效果.对噪声进行处理,成为当前实施该攻击的一大挑战.噪声产生的根源主要有2方面:
1) 硬件方面.①TLB未命中.TLB是很小的组关联Cache,用于将虚拟地址转换到物理地址.在Evict+Reload和Prime+Probe攻击的探测阶段,第1个Cache组总会未命中,此时需要从内存中取数据,产生异常.通常的解决方法是,丢弃第1个Cache组的探测结果消除异常.②预测执行.现代处理器通常使用分支预测技术,指令会乱序执行,影响探测结果.为防止该噪声产生,目前基本使用cpuid和mfence指令迫使指令顺序执行.
2) 软件方面.①上下文切换.管理程序上下文切换会污染Cache,导致Cache未命中,从而产生噪声.②rdtsc指令调用.在探查和重新加载阶段,当使用rdtsc指令计时时,由于该指令调用的时间是本地调用的5~20倍,因此测量时间精度有所降低,从而产生噪声.③其他进程的干扰.在物理机器上,不仅仅是间谍进程和目标进程这2个进程在运行,其他进程也会在该系统中不断运行并执行内存存取.因此,攻击者观察到的Cache行为,可能是目标进程访问Cache导致,也可能是相邻目标域的其他进程运行时访问Cache导致,从而产生噪声.
访问驱动下的Cache侧信道攻击应用十分广泛,例如2018年初曝出的“熔断”和“幽灵”2个漏洞均利用了该攻击[53-54]以及2019年出现的“熔断2.0”版本,涉及范围广,包括各处理器芯片、操作系统、云服务提供商等都受到较大影响,且由于该攻击难以通过软件技术被检测,硬件防御会导致严重的性能下降,因此难以提出有效的软硬件防御方案.目前很多学者针对该攻击进行了深入地研究,促进了该攻击模型的进一步完善.综合该攻击在实际应用中的扩展性高、粒度细、强度大以及隐蔽性强等特点,提出可针对4个方面开展研究:
1) 针对其他Cache层次结构特性实施攻击.现代Cache层次结构逐渐成为非包含性、独占性,因此利用Cache包含性特点进行监控Cache访问行为的跨核侧信道攻击无法高效实施.目前提出的利用ARM处理器中Cache一致性协议[24]以及逆向Intel处理器中目录[55]的方法可以成功实施攻击,但受到攻击平台的限制无法通用.因此,如何对其他特性的Cache架构实施跨核攻击,成为值得研究的问题.
2) 构建混合信道攻击物联网设备.目前针对物联网设备的侧信道攻击往往仅关注1个侧信道信息,单一的侧信道攻击只能针对1个攻击面,相比之下,混合侧信道攻击通过多个攻击面的共同作用放大差异,能够获得更高的精度和准确度.虽然已有研究人员提出在传感器中注入少量特殊噪声以降低攻击的成功率[56],但在实际场景中,物联网设备往往“不经意间”同时泄露功耗、电磁、内存使用等信息,且设备的大量部署更容易通过物理方式获取这些信息.利用物联网这一特性,将Cache侧信道与多种侧信道结合,构建混合隐蔽信道,提高对物联网设备进行侧信道攻击的效果,是未来值得研究的一个方向.
3) 加强对云平台攻击.在万物互联时代下,云、端、边都存储了大量的敏感信息,虽然Cache侧信道攻击已在云环境中成功实现,但实施该攻击需要提前判断同驻情况,这成为防御该攻击的一个突破点.因此,变换攻击方式,加强云平台攻击成为重点研究方向.
4) 打破可信执行环境的隔离机制.可信执行环境提供的隔离机制(如ARM TrustZone,Intel SGX)可以将隐私数据和代码隔离在一个可信环境中,阻止其他程序对其访问[57-62].目前TrustZone技术已大范围部署在嵌入式设备中,且SGX技术也用于构建可信云安全环境,以及加强边缘计算平台的安全性[63],增加了该攻击实施在物联网设备和云平台上的难度,而且现在也已经提出利用这种隔离机制缓解侧信道攻击的方案[64-66].如何打破这种隔离机制,实施Cache侧信道攻击,成为该攻击的一个研究趋势.
利用计算机运行时物理硬件“不经意间”泄露的信息,侧信道攻击无需获取数据访问权限即可窃取重要数据,因此被广泛应用于破解密码算法等场景中.本文研究了访问驱动下的Cache侧信道攻击,重点阐述了“清除+重载”攻击、“填充+探测”攻击和“刷新+重载”攻击这3种攻击方式的原理和过程,对比分析了不同攻击方式的访问行为、攻击范围和对应的防御方案,并通过攻击结果讨论了该攻击粒度细、范围广和隐蔽性高的特点以及各自攻击方式的适用场景.同时,结合攻击过程中存在的问题,提出了Cache侧信道攻击在攻击LLC和处理噪声上面临的挑战,并根据实际应用情况,对该攻击未来的发展趋势进行更深层次的探讨.在物联网时代下,打破Cache侧信道攻击原有的桎梏,加强对隔离机制保护下物联网设备和云平台的攻击,成为该攻击新的攻破点.
[1] Li Mengyuan, Meng Yan, Liu Junyi, et al. When CSI meets public WiFi: Inferring your mobile phone password via WiFi signals[C] //Proc of the 2016 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2016: 1068-1079
[2] Wang He, Lai T T, Choudhury R R. Mole: Motion leaks through smartwatch sensors[C] //Proc of the 21st Annual Int Conf on Mobile Computing and Networking. New York: ACM, 2015: 155-166
[3] Ronen E, O’Flynn C, Shamir A, et al. IoT goes nuclear: Creating a ZigBee chain reaction[C] //Proc of the 2017 IEEE Symp on Security & Privacy. Los Alamitos, CA: IEEE Computer Society, 2017: 195-212
[4] Baker R, Martinovic I. Losing the car keys: Wireless PHY-Layer insecurity in {EV} charging[C] //Proc of the 28th USENIX Security Symp. Berkeley, CA: USENIX Association, 2019: 407-424
[5] Islam M A, Ren Shaolei, Wierman A. Exploiting a thermal side channel for power attacks in multi-tenant data centers[C] //Proc of the 2017 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2017: 1079-1094
[6] Islam M A, Ren Shaolei. Ohm’s law in data centers: A voltage side channel for timing power attacks[C] //Proc of the 2018 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2018: 146-162
[7] Islam M A, Yang Luting, Ranganath K, et al. Why some like it loud: Timing power attacks in multi-tenant data centers using an acoustic side channel[C/OL] //Proc of the ACM on Measurement and Analysis of Computing Systems. New York: ACM, 2018 [2019-06-10]. https://doi.org/10.1145/3179410
[8] Zhang Xiaokuan, Wang Xueqiang, Bai Xiaolong, et al. OS-level side channels without procfs: Exploring cross-app information leakage on iOS[C/OL] //Proc of the Network and Distributed System Security Symp. 2018[2019-06-10]. https://www.ndss-symposium.org/wp-content/uploads/2018/02/ndss2018_05B-4_Zhang_paper.pdf
[9] Genkin D, Pattani M, Schuster R, et al. Synesthesia: Detecting screen content via remote acoustic side channels[C] //Proc of the 2019 IEEE Symp on Security & Privacy. Los Alamitos, CA: IEEE Computer Society, 2019: 853-869
[10] Genkin D, Pachmanov L, Pipman I, et al. Stealing keys from PCs using a radio: Cheap electromagnetic attacks on windowed exponentiation[C] //Proc of the Int Workshop on Cryptographic Hardware and Embedded Systems. Berlin: Springer, 2015: 207-228
[11] Genkin D, Pachmanov L, Pipman I, et al. ECDH key-extraction via low-bandwidth electromagnetic attacks on PCs[G] //LNCS 9610: Proc of the Cryptographers’ Track at the RSA Conf. Berlin: Springer, 2016: 219-235
[12] Halderman J A, Schoen S D, Heninger N, et al. Lest we remember: Cold boot attacks on encryption keys[J]. Communications of the ACM, 2009: 52(5): 91-98
[13] Genkin D, Pachmanov L, Pipman I, et al. ECDSA key extraction from mobile devices via nonintrusive physical side channels[C] //Proc of the 2016 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2016: 1626-1638
[14] Tajik S, Dietz E, Frohmann S, et al. Physical characterization of arbiter PUFs[C] //Proc of the Int Workshop on Cryptographic Hardware and Embedded Systems. Berlin: Springer, 2014: 493-509
[15] Ristenpart T, Tromer E, Shacham H, et al. Hey, you, get off of my cloud: Exploring information leakage in third-party compute clouds[C] //Proc of the 16th ACM Conf on Computer and Communications Security. New York: ACM, 2009: 199-212
[16] Zhang Yinqian, Juels A, Reiter M K, et al. Cross-tenant side-channel attacks in PaaS clouds[C] //Proc of the 2014 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2014: 990-1003
[17] Gruss D, Fogh A, Lipp M, et al. Prefetch side-channel attacks: Bypassing SMAP and kernel ASLR[C] //Proc of the 2016 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2016: 368-379
[18] Deng Gaoming, Zhao Qiang, Zhang Peng, et al. Cache hit side channel attack based on AES[J]. Computer Engineering, 2008, 34(13): 113-114
[19] Tromer E, Osvik D A, Shamir A. Efficient cache attacks on AES, and countermeasures[J]. Journal of Cryptology, 2010, 23(1): 37-71
[20] Gullasch D, Bangerter E, Krenn S. Cache games—Bringing access-based cache attacks on AES to practice[C] //Proc of the 2011 IEEE Symp on Security & Privacy. Los Alamitos, CA: IEEE Computer Society, 2011: 490-505
[21] Weiß M, Heinz B, Stumpf F. A cache timing attack on AES in virtualization environments[C] //Proc of the Int Conf on Financial Cryptography and Data Security. Berlin: Springer, 2012: 314-328
[22] Aciiçmez O. Yet another microarchitectural attack∷Exploiting i-cache[C] //Proc of the 2007 ACM Workshop on Computer Security Architecture. New York: ACM, 2007: 11-18
[23] Brumley B B, Grabher P. New results on instruction cache attacks[C] //Proc of the Int Conf on Cryptographic Hardware and Embedded Systems. Berlin: Springer, 2010: 110-124
[24] Lipp M, Gruss D, Spreitzer R, et al. ARMageddon: Last-level cache attacks on mobile devices[J]. Mundo Electrónico, 2015, 6(1): 60-65
[25] Oren Y, Kemerlis V P, Sethumadhavan S, et al. The spy in the sandbox: Practical cache attacks in JavaScript and their implications[C] //Proc of the 2015 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2015: 1406-1418
[26] Liang Xin, Gui Xiaolin, Dai Huijun, et al. Cross-VM cache side channel attacks in cloud: A survey[J]. Chinese Journal of Computers, 2017, 40(2): 317-336 (in Chinese)
(梁鑫, 桂小林, 戴慧珺,等. 云环境中跨虚拟机的Cache侧信道攻击技术研究[J]. 计算机学报, 2017, 40(2): 317-336)
[27] He Peicong, Huang Ruwei, Chen Ningjiang, et al. Research progress on side-channel attacks in cloud environment[J]. Application Research of Computers, 2018, 35(4): 969-973 (in Chinese)
(何佩聪, 黄汝维, 陈宁江,等. 云环境中的侧通道攻击研究进展[J]. 计算机应用研究, 2018, 35(4): 969-973)
[28] Neve M, Seifert J P. Advances on access-driven cache attacks on AES[G] //LNCS 4356: Proc of the Int Workshop on Selected Areas in Cryptography. Berlin: Springer, 2006: 147-162
[29] Yan Mengjia, Gopireddy B, Shull T, et al. Secure hierarchy-aware cache replacement policy (SHARP): Defending against cache-based side channel attacks[C] //Proc of the 44th Annual Int Symp on Computer Architecture. Piscataway, NJ: IEEE, 2017: 347-360
[30] Gruss D, Spreitzer R, Mangard S. Cache template attacks: Automating attacks on inclusive last-level caches[C] //Proc of the 24th USENIX Conf on Security Symp. Berkeley, CA: USENIX Association, 2015: 897-912
[31] Osvik D A, Shamir A, Tromer E. Cache attacks and countermeasures: The case of AES[G] //LNCS 3860: Proc of the Cryptographers’ Track at the RSA Conf. Berlin: Springer, 2006: 1-20
[32] Schwarz M, Weiser S, Gruss D, et al. Malware guard extension: Using SGX to conceal cache attacks[G] //LNCS 10327: Proc of the Int Conf on Detection of Intrusions and Malware, and Vulnerability Assessment. Berlin: Springer, 2017: 3-24
[33] Irazoqui G, Eisenbarth T, Sunar B. S$A: A shared cache attack that works across cores and defies VM sandboxing--and its application to AES[C] //Proc of the 2015 IEEE Symp on Security & Privacy. Los Alamitos, CA: IEEE Computer Security, 2015: 591-604
[34] Zhang Yinqian, Juels A, Reiter M K, et al. Cross-VM side channels and their use to extract private keys[C] //Proc of the 2012 ACM Conf on Computer and Communications Security. New York: ACM, 2012: 305-316
[35] Liu Fangfei, Yarom Y, Ge Qian, et al. Last-level cache side-channel attacks are practical[C] //Proc of the 2015 IEEE Symp on Security & Privacy. Los Alamitos, CA: IEEE Computer Security, 2015: 605-622
[36] Irazoqui G, Inci M S, Eisenbarth T, et al. Wait a minute! A fast, cross-VM attack on AES[C] //Proc of the Int Workshop on Recent Advances in Intrusion Detection. Berlin: Springer, 2014: 299-319
[37] Yarom Y, Falkner K. FLUSH+RELOAD: A high resolution, low noise, L3 cache side-channel attack[C] //Proc of the 23rd USENIX Conf on Security Symp. Berkeley, CA: USENIX Association, 2014: 719-732
[38] Zhang Xiaokuan, Xiao Yuan, Zhang Yinqian. Return-oriented flush-reload side channels on ARM and their implications for Android devices[C] //Proc of the 2016 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2016: 858-870
[39] Irazoqui G, Eisenbarth T, Sunar B. Cross processor cache attacks[C] //Proc of the 11th ACM on Asia Conf on Computer and Communications Security. New York: ACM, 2016: 353-364
[40] Schinzel S, Schinzel S. Cache attacks on Intel SGX[C/OL] //Proc of the 10th European Workshop on Systems Security. New York: ACM, 2017 [2019-06-12]. https://doi.org/10.1145/3065913.3065915
[41] Gü
B, Inci M S, Irazoqui G, et al. A faster and more realistic Flush+Reload attack on AES[C] //Proc of the Int Workshop on Constructive Side-Channel Analysis and Secure Design. Berlin: Springer, 2015: 111-126
[42] Gruss D, Maurice C, Wagner K, et al. Flush+Flush: A fast and stealthy cache attack[G] //LNCS 9721: Proc of the Int Conf on Detection of Intrusions and Malware, and Vulnerability Assessment. Berlin: Springer, 2016: 279-299
[43] Gras B, Razavi K, Bos H, et al. Translation leak-aside buffer: Defeating cache side-channel protections with TLB attacks[C] //Proc of the 27th USENIX Conf on Security Symp. Berkeley, CA: USENIX Association, 2018: 955-972
[44] Schwarz M, Lipp M, Gruss D, et al. KeyDrown: Eliminating software-based keystroke timing side-channel attacks[C/OL] //Proc of the Network and Distributed System Security Symp. 2018 [2019-06-12]. https://www.ndss-symposium.org/wpcontent/uploads/2018/02/ndss2018_04B-1_Schwarz_paper.pdf
[45] Bulck J V, Minkin M, Weisse O, et al. Foreshadow: Extracting the keys to the Intel SGX kingdom with transient out-of-order execution[C] //Proc of the 27th USENIX Conf on Security Symp. Berkeley, CA: USENIX Association, 2018: 991-1008
[46] Yan Mengjia, Shalabi Y, Torrellas J. ReplayConfusion: Detecting cache-based covert channel attacks using record and replay[C] //Proc of the 49th Annual IEEE/ACM Int Symp on Microarchitecture. Piscataway, NJ: IEEE, 2016: 1-14
[47] Chiappetta M, Savas E, Yilmaz C. Real time detection of cache-based side-channel attacks using hardware performance counters[J]. Applied Soft Computing, 2016, 49: 1162-1174
[48] Liu Fangfei, Lee R B. Random fill cache architecture[C] //Proc of the 48th Annual IEEE/ACM Int Symp on Microarchitecture. Piscataway, NJ: IEEE, 2015: 203-215
[49] Liu Fangfei, Ge Qian, Yarom Y, et al. CATalyst: Defeating last-level cache side channel attacks in cloud computing[C] //Proc of the 2016 IEEE Int Symp on High Performance Computer Architecture. Piscataway, NJ: IEEE, 2016: 406-418
[50] Zhang Yinqian, Juels A, Oprea A, et al. HomeAlone: Co-residency detection in the cloud via side-channel analysis[C] //Proc of the 2011 IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2011: 313-328
[51] Kim T, Peinado M, Mainar-Ruiz G. STEALTHMEM: System-level protection against cache-based side channel attacks in the cloud[C] //Proc of the 21st USENIX Conf on Security Symp. Berkeley, CA: USENIX Association, 2012: 189-204
[52] Werner M, Unterluggauer T, Giner L, et al. Scattercache: Thwarting cache attacks via cache set randomization[C] //Proc of the 28th USENIX Conf on Security Symp. Berkeley, CA: USENIX Association, 2019: 675-692
[53] Lipp M, Schwarz M, Gruss D, et al. Meltdown: Reading kernel memory from user space[C] //Proc of the 27th USENIX Conf on Security Symp. Berkeley, CA: USENIX Association, 2018: 973-990
[54] Kocher P, Horn J, Fogh A, et al. Spectre attacks: Exploiting speculative execution[C] //Proc of the 2019 IEEE Symp on Security & Privacy. Los Alamitos, CA: IEEE Computer Society, 2019: 1-19
[55] Yan Mengjia, Sprabery R, Gopireddy B, et al. Attack directories, not caches: Side channel attacks in a non-inclusive world[C] //Proc of the IEEE Symp on Security & Privacy. Los Alamitos, CA: IEEE Computer Society, 2019: 888-904
[56] Tang Benxiao, Wang Lina, Wang Run, et al. A defensive method against Android physical sensor-based side-channel attack based on differential privacy[J]. Journal of Computer Research and Development, 2018, 55(7): 1371-1392 (in Chinese)
(唐奔宵, 王丽娜, 汪润, 等. 基于差分隐私的Android物理传感器侧信道防御方法[J]. 计算机研究与发展, 2018, 55(7): 1371-1392)
[57] Chang Rui, Jiang Liehui, Chen Wenzhi, et al. A trustenclave-based architecture for ensuring run-time security in embedded terminals[J]. Tsinghua Science and Technology, 2017, 22(5): 447-457
[58] Chang Rui, Jiang Liehui, Chen Wenzhi, et al. Mipe: A practical memory integrity protection method in a trusted execution environment[J]. Cluster Computing, 2017, 20(2): 1075-1087
[59] Chang Rui, Jiang Liehui, Chen Wenzhi, et al. Towards a multilayered permission-based access control for extending Android security[J]. Concurrency & Computation Practice & Experience, 2018, 30(5): e4180
[60] Chang Rui, Jiang Liehui, Xie Yaobin, et al. Implementing a hardware-assisted memory management mechanism for arm platforms using the B method[J]. Concurrency & Computation Practice & Experience, 2019, 31(21): e4659
[61] Jain P, Desai S, Kim S, et al. OpenSGX: An open platform for SGX research[C/OL] //Proc of the Network and Distributed System Security Symp. 2016[2019-06-13]. https://www.ndss-symposium.org/wp-content/uploads/2017/09/opensgx-open-platform-sgx-research.pdf
[62] Shen Youren, Chen Yu, Chen Kang, et al. To isolate, or to share? That is a question for Intel SGX[C/OL] //Proc of the 9th Asia-Pacific Workshop on Systems. New York: ACM, 2018 [2019-06-13]. https://doi.org/10.1145/3265723.3265727
[63] Ning Zhenyu, Zhang Fengwei, Shi Weisong, et al. A study of using TEE on edge computing[J]. Journal of Computer Research and Development, 2019, 56(7): 1441-1453 (in Chinese)
(宁振宇, 张锋巍, 施巍松. 基于边缘计算的可信执行环境研究[J]. 计算机研究与发展, 2019, 56(7): 1441-1453)
[64] Chen Sanchuan, Zhang Xiaokuan, Reiter M K, et al. Detecting privileged side-channel attacks in shielded execution with Déjà Vu[C] //Proc of the 2017 ACM on Asia Conf on Computer and Communications Security. New York: ACM, 2017: 7-18
[65] Sasy S, Gorbunov S, Fletcher C W. ZeroTrace: Oblivious memory primitives from Intel SGX[C/OL] //Proc of the Network and Distributed System Security Symp. 2018[2019-06-13]. https://www.ndss-symposium.org/wp-content/uploads/2018/02/ndss2018_02B-4_Sasy_paper.pdf
[66] Ahmad A, Kim K, Sarfaraz M I, et al. OBLIVIATE: A data oblivious filesystem for Intel SGX[C/OL] //Proc of the Network and Distributed System Security Symp. 2018[2019-06-13]. https://www.ndss-symposium.org/wp-content/uploads/2018/02/ndss2018_06A-2_Ahmad_paper.pdf