一种云环境中Flush‑Reload缓存侧信道攻击防御方法和装置与流程

文档序号:13532567阅读:531来源:国知局
一种云环境中Flush‑Reload缓存侧信道攻击防御方法和装置与流程
本发明属于系统安全
技术领域
,涉及一种cpu高速缓存(cache)攻击的防御方法,特别涉及一种针对flush-reload缓存侧信道攻击的防御方法和装置。
背景技术
:云计算是一种商用的计算模型,它将计算任务分布在大量物理机环境构成的资源池上,使用户能够按需获取计算力、存储空间和信息服务,这种资源池就被称为云。云计算可以看做一个计算网络,其由一组硬件主机作为服务器,然后通过通信网络进行相互连接,从而给其他用户提供各种各样的服务,它是一种根据需求通过互联网按照实际使用量计费的it资源与应用交付方式。无论是运行着帮助数百万移动用户共享照片的应用,抑或是支持企业内部的关键性业务,云环境都能够快速提供灵活且成本低廉的it资源。云计算提供的服务类型主要有三种,基础设施即服务(iaas)、平台即服务(paas)和软件即服务(saas)。作为云计算的底层核心技术,虚拟化(virtualization)是一种资源管理技术,虚拟化技术可以将计算机中的各种实体资源,例如cpu、网络、内存及存储等,予以抽象,进而转换成虚拟化资源并向用户呈现出来,打破实体结构间互相不可切割的障碍。虚拟化资源不受物理资源架设方式、物理组合和地域划分的限制,这种特性使得用户可以通过比原本的物理组合更好的方式来应用这些资源。在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件。一般所指的虚拟化资源包括计算能力和存储能力。近年来,随着云计算技术的发展,云计算安全问题越来越引起人们重视。云服务供应商为了有效利用物理资源,常将不同租户的实例(实例是指云服务供应商提供给用户的服务单位,如一个虚拟机,一个容器等)分配到同一台物理机器上,这种现象称之为实例的同驻。同驻问题是由美国加州大学圣迭戈分校的ristenpart等人(t.ristenpart,e.tromer,h.shacham,ands.savage.hey,you,getoffofmycloud:exploringinformationleakageinthird-partycomputeclouds.inproceedingsofthe16thacmconferenceoncomputerandcommunicationssecurity,pages199–212.acm,2009.)在2009年首次提出的。文章同时指出在同驻的情况下,恶意租户可以利用共享的物理资源(如cpu、内存、存储和网络等)进行同驻攻击,如窃取受害用户的私密数据或者利用拒绝服务攻击达到破坏受害用户系统可用性等恶意目的。侧信道攻击是现在常用的针对物理层的攻击方法,其基于一些非常规的信道来获取泄露的隐秘信息,绕过复杂的信息保护机制,窃取机密信息。例如机器的功率、电源风扇的频率、加载不同信息所使用的时间长短和运算时产生的热效应等,这些都属于侧信道。flush-reload攻击是一种缓存侧信道攻击,通常基于共享的缓存(如x86架构中的最后一级缓存)来实现。它可以用于窃取用户的粗粒度信息(如用户的输入的内容),或细粒度信息(如项目数量、网页密码重置的链接和私钥的解密等)。flush-reload攻击首次由bangerter等人(d.gullasch,e.bangerter,ands.krenn,“cachegames–bringingaccess-basedcacheattacksonaestopractice,”in2011ieeesymposiumonsecurityandprivacy,pp.490–505,ieee,2011.)提出,用于监控目标用户在使用aes算法时s-boxes的内存状态。后来yuvalyarom等人(y.yaromandk.falkner,“flush+reload:ahighresolution,lownoise,l3cacheside-channelattack,”in23rdusenixsecuritysymposium(usenixsecurity14),pp.719–732,2014.)提出在x86架构下,针对共享的第三级缓存的flush-reload攻击,并表明该技术可以在多核环境和虚拟化环境中使用。随后该攻击被不断扩展和应用到更多的架构上。flush-reload攻击的实现基于进程间共享内存。攻击进程首先会驱逐(flush)掉要监控的内存,一段时间以后再次访问(reload)同一内存,如果目标进程在这期间访问了相同内存则会发生缓存命中,否则则会发生缓存缺失。攻击进程通过监控其与目标进程间的共享内存状态来推测目标进程的敏感信息。内存共享的现象在云上是很常见的,这给flush-reload攻击带来便利。flush-reload侧信道攻击严重威胁着云平台的安全,提出一种有效的针对flush-reload缓存攻击的防御方法是很有必要的。技术实现要素:针对flush-reload缓存侧信道攻击,本发明提出了一种有效的防御方法。由于flush-reload攻击需要通过缓存信道恢复信息,所以信道中噪声的大小就直接决定了攻击的效果,本发明主要是通过不断在flush-reload攻击所利用的高速缓存信道引入噪声来干扰攻击实例,有效地保护用户隐私信息。本发明采用的技术方案如下:一种针对flush-reload缓存侧信道攻击的防御方法,其步骤包括:1)选取要保护的安全敏感模块;2)防护进程和目标进程共用cpu缓存;3)防护进程和目标进程共享安全敏感模块的内存;4)当目标进程运行某一安全敏感模块时,防护进程同时以一定策略混淆共享的该安全敏感模块的内存,对缓存状态进行干扰,从而防御flush-reload缓存侧信道攻击。这里的安全敏感模块主要指攻击者所感兴趣的、涉及用户敏感信息的模块,例如加解密软件、libcrypt.so、openssl、随机数产生模块等。防护进程指本发明中用来防御flush-reload攻击的进程,目标进程指攻击者感兴趣的或有缓存攻击防御安全需求的用户进程。缓存攻击的前提是攻击进程和目标进程要共用缓存,即运行在同一cpu上。因此本发明中缓存攻击防护的前提需要防护进程和目标进程运行在同一cpu上。这一点可以通过绑定防护进程到特定的cpu上运行来实现。防护进程和目标进程共享安全敏感模块的内存的模式有很多。例如,当两者在同一操作系统内部时,防护进程可以直接映射目标进程的相应可执行文件或函数库(mmap);当两者运行在云上不同虚拟机中时(如iaas云),如果底层虚拟化架构开启页面共享机制,不同虚拟机中含有相同内容的页面就会合并,这样也会达到内存共享;当两者运行在不同容器中时(如paas云),不同容器会共享宿主机操作系统的内核和函数库部分内存;当两者运行在不同容器中时(如paas云),从同一镜像启动的容器会共享镜像部分的内存。为了保证进程的效率不受到过多影响,本发明采用缓存加载的方式来干扰缓存,即按照一定的规律访问共享的安全敏感模块的内存。由于缓存加载的最小单位是一个缓存行(cacheline),一般为64b,因此对共享内存的访问是每隔一个缓存行的大小来进行的。对共享安全敏感模块的加载迭代次数会对进程效率产生不同影响。通过大量的实验结果,本发明选择的合适的迭代次数为5000~20000次,进一步优选为5000次。本发明还提供一种flush-reload缓存侧信道攻击防御装置,其包括:安全敏感模块选取单元,用于确定需要保护的安全敏感模块;防护实例部署单元,用于启动一个防护实例并将其绑定到目标实例所在的cpu上运行,以使防护实例中的防护进程和目标实例中的目标进程共用缓存;内存共享单元,用于启动防护实例内的防护进程,并使防护进程和目标进程共享安全敏感模块的内存;缓存干扰单元,用于当目标进程运行安全敏感模块时,使防护进程以一定策略混淆共享的该安全敏感模块的内存,以对缓存状态进行干扰,从而防御flush-reload缓存侧信道攻击。本发明还提供一种服务器,其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上面所述方法中各步骤的指令。本发明还提供一种存储计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时,实现上面所述方法的步骤。本发明的有益效果是:由于近几年云计算的快速发展,云环境下的用户越来越多。为了提高资源的利用率,云计算提供商不可避免地需要面临多个用户共享相同的物理机造成的同驻安全威胁。而同驻之后,恶意的使用者就可以利用侧信道攻击窃取用户信息或破坏用户的系统功能,因此对用户信息的保护和对侧信道攻击的防御也就必不可少。传统的虚拟资源的隔离只能在软件层对不同用户进行隔离,而这种保护用户信息的策略对基于物理层信息泄露的侧信道攻击完全不起效果。而本发明针对flush-reload缓存侧信道攻击,提出了一种有效的防御方法。通过实验证明该方法能有效地降低flush-reload攻击效果,保护用户隐私信息,同时引入较小的性能开销。附图说明图1为本发明的flush-reload缓存侧信道攻击防御方法流程示意图。图2为本发明的flush-reload缓存侧信道攻击防御装置的组成单元示意图。具体实施方式本发明的防御方案一般作为云服务商提供给用户的安全产品,当用户有需求的时候,可以通过购买该安全服务,来保护实例不受flush-reload缓存侧信道攻击。以下将被保护的实例称为目标实例,其内运行目标进程;将用来运行防护进程的实例称为防护实例;将实施攻击的实例称为攻击实例,其内运行攻击进程。下面结合附图对本发明实施例中的技术方案进行清楚、详细地描述。本发明方法的流程如图1所示。首先,云服务商确定用户需要保护的安全敏感模块。模块的选取可以由云服务商提供参考,也可以由用户提出。然后,云服务商在目标实例运行的服务器上启动一个防护实例,并将其绑定到目标实例所在cpu上运行,以达到共享缓存的效果。之后,云服务商启动防护实例内的防护进程,该防护进程需要和目标进程共享特定内存,即共享安全敏感模块的内存。之后,防护进程在安全敏感模块被调用的时候,通过不断的载入安全敏感模块的内存块,对攻击者造成干扰。如果攻击者实例执行reload操作前,防护进程先载入了相同的内存块,此时reload的结果就包含了大量的噪声,导致信息失真,起到干扰效果。最后,当目标实例中的安全敏感模块停止运行时,防护进程将停止对相应的安全敏感模块的干扰。下面给出具体的实施例。可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本实施例是在docker虚拟化环境下使用该防御方法。为了具体说明防御方法的有效性,这里给出详细的测试环境和测试方法。本实施例中使用的物理机为delloptiplex,处理器为4核的intel(r)core(tm)i5-3470(单个处理器),主频3.20ghz,内存10g。虚拟环境为docher-1.9.1,宿主机系统ubuntu14.04。制作已安装了gnupg-4.1.12加密软件的镜像文件,其中gnupg-4.1.12加密软件作为被保护的安全敏感模块。从制作好的相同镜像文件启动三个容器,一个容器运行gnupg-4.1.12加密程序,作为目标实例;一个容器运行flush-reload侧信道攻击进程,作为攻击实例;另一个容器启动flush-reload侧信道攻击防护进程,作为防护实例。由于物理机只有一个处理器,所有实例共享同一组缓存。本实施例在无防护进程和有防护进程运行的情况下分别执行flush-reload侧信道攻击,记录攻击结果,作对照分析。这里目标进程执行一个gnupg的rsa解密过程,攻击进程对rsa密钥进行提取。gnupg采用square-and-multiply定理(d.m.gordon,asurveyoffastexponentiationmethods,"journalofalgorithms,vol.27,no.1,pp.129-146,1998.)来计算rsa的模幂运算。本发明中用s,m,r分别代表解密过程中的平方、乘法和模运算函数。flush-reload攻击进程先提取目标进程在解密过程中的函数调用序列,然后进一步推算出密钥(如,s-r-m-r代表密钥中的比特位为1,s-r代表比特位0)。函数调用序列的准确检测是后续恢复密钥的关键。为了说明本发明的防御有效性,选择多分类支持向量机(svm)来量化实验效果。在攻击进程的每一轮攻击中对s,m,r函数中的指令分别进行访问,记录访问时间以及真正运行的函数,如(t1,t2,t3,r)。x代表三个函数都没被调用。在实验中,支持向量机使用80000条攻击结果作为训练集,采用4000条攻击结果作为测试集。在有防护和无防护的情况下,分别训练模型并对测试集做预测,测试结果如表1(无防护)和表2(有防护)所示。表1.无防护情况下支持向量机的分类准确率结果表2.有防护情况下支持向量机的分类准确率结果通过表1和表2可见,在无防护的情况下,flush-reload侧信道攻击结果的精确度平均可以达到90%以上((0.972+0.818+1+0.965)/4=0.939),据y.zhang等人(y.zhangandm.k.reiter,“retrofittingcommodityoperatingsystemstomitigatecachesidechannelsinthecloud,”inproceedingsofthe2013acmsigsacconferenceoncomputer&communicationssecurity,pp.827–838,acm,2013.12)提出的恢复方法,90%的精确度已经足以恢复私钥信息。当启用防护后,flush-reload侧信道攻击结果被混淆,防御方法引入了足够多的噪声,使得攻击者很难从攻击结果中恢复私钥信息。同时,测试了防御方法对系统性能的影响,时间基准以gpg程序对4g加密文件进行解密所需时间进行了归一化,每次测试都重复了20次取平均值。测试结果如表3所示。表3.防御方法运行开销测试测试对象运行开销(overhead)gpg1gpg-protect-50001.014gpg-protect-100001.018gpg-protect-200001.017表3中的“-5000”,“-10000”,“-20000”表示安全敏感模块在防御过程中被防护实例分别重复载入5000,10000和20000次。测试结果表明,本发明的防御方法对gpg程序的性能影响小于2%。综上所述,本发明能够在虚拟化环境下,有效地防御flush-reload侧信道攻击,保护用户的隐私信息,同时只引入很小性能开销。本发明的另一实施例,在基于虚拟机的虚拟化环境下进行,虚拟化层开启了页面共享机制。同样,云服务商首先需要确定用户需要保护的安全敏感模块。然后,云服务商在目标实例(虚拟机)运行的服务器上启动一个防护实例(虚拟机),并将其绑定到目标实例所在cpu上运行,以达到共享缓存的效果。之后,云服务商启动防护实例内的防护进程,该防护进程需要和目标进程共享特定内存,即共享安全敏感模块的内存。为了达到页面共享,防护实例需要等待足够的时间,让虚拟机的页面合并。之后,防护进程在安全敏感模块被调用的时候,通过不断的载入安全敏感模块的内存块,对攻击者造成干扰。最后,当目标实例中的安全敏感模块停止运行时,防护进程将停止对相应的安全敏感模块的干扰。本发明的另一实施例,将防护进程和目标进程运行在同一操作系统内部。同样,在确定需要保护的安全敏感模块之后,防护进程启动并绑定到目标进程所在cpu上运行,以达到共享缓存的效果。之后,防护进程映射需要保护的安全敏感模块到自己的地址空间,在安全敏感模块被调用的时候,通过不断的载入安全敏感模块的内存块,对攻击者造成干扰。最后,当目标进程停止调用安全敏感模块时,防护进程将停止对相应的安全敏感模块的干扰。本发明的另一实施例,提供一种flush-reload缓存侧信道攻击防御装置,如图2所示,其包括:安全敏感模块选取单元,用于确定需要保护的安全敏感模块;防护实例部署单元,用于启动一个防护实例并将其绑定到目标实例所在的cpu上运行,以使防护实例中的防护进程和目标实例中的目标进程共用缓存;内存共享单元,用于启动防护实例内的防护进程,并使防护进程和目标进程共享安全敏感模块的内存;缓存干扰单元,用于当目标进程运行安全敏感模块时,使防护进程以一定策略混淆共享的该安全敏感模块的内存,以对缓存状态进行干扰,从而防御flush-reload缓存侧信道攻击。本发明的另一实施例,提供一种服务器,其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上面所述方法中各步骤的指令。本发明的另一实施例,提供一种存储计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时,实现上面所述方法的步骤。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1