论文部分内容阅读
虚拟计算环境通过对底层计算、存储、网络等资源进行虚拟化,提供了自底向上的层级抽象,为云计算平台的终端用户或者应用系统提供了一个灵活、高效、安全的存储和执行环境。近年来,随着国内外多起重大安全事件的发生,虚拟计算环境的安全性也逐渐成为人们所关注的焦点。虚拟计算环境本身特性所带来的安全隐患,来自不同层次的攻击面,以及不同服务模型所需要考虑的威胁模型,这些都对提供一个安全高效的虚拟计算环境带来了巨大的挑战。本文将虚拟计算环境相关的安全问题作为研究对象,首先基于虚拟计算环境中的运行环境安全,数据安全和代码执行流安全进行讨论,之后利用虚拟计算环境中的丰富计算资源和安全增强技术来提升智能终端设备的数据安全和运行时安全。具体而言,本文主要包括以下四方面的贡献:第一,针对虚拟计算环境中的运行环境安全,本文提出了一套高效的运行时安全监控机制:作为一种强隔离的虚拟机运行环境域外监控机制,虚拟机自省(VMI)技术被广泛用于包括入侵检测、病毒分析和内存取证分析等领域在内的应用场景中。然而我们发现,当前已有的虚拟机自省技术存在三个问题:第一,没有一套机制可以及时地触发虚拟机自省;第二,在虚拟机自省过程中需要暂停虚拟机,从而使得虚拟机性能下降;第三,即使暂停了虚拟机,仍然会发生一些数据读取不一致的现象。针对这些问题,我们首次提出了利用Intel最新的硬件事务性内存(HTM)特性,来搭建一个及时、同步且一致的虚拟机自省系统TxIntro。具体来说,TxIntro系统使用了HTM的强原子性来监控对虚拟机内核中关键数据结构的修改,一旦发现恶意的篡改,及时触发主动虚拟机自省工具对运行时的状态进行检查。为了避免在检查过程中发生的数据读取不一致现象,TxIntro系统会首先将相关的同步原语加入HTM的读集合中,从而非常高效地检测出并行的内核数据结构更新事件。另外,TxIntro系统开创性地提出了两项优化技术,极大地减小了虚拟机自省逻辑的读写集合,从而在Intel最新的限制性硬件事务性内存RTM上,实现了一个可用且高效的系统,在基本不引入性能损失的前提下,利用该系统检测出所有已知的内核rootkit攻击,在很大程度上保障了虚拟机运行环境的安全性。第二,针对虚拟计算环境中的数据安全,本文提出了一套细粒度的隐私保护机制:我们对CVE数据进行分析和统计,发现应用程序关键数据在外部攻击和恶意操作系统的威胁模型中很容易被泄露。而当前的方法或者粒度太粗,无法防御域内攻击,或者需要和下层的软件发生大量的交互,影响系统性能,而且很少有方法能够在同时满足细粒度和高性能的基础上将其运用在复杂软件中。针对这个问题,我们设计并实现了基于虚拟化技术的应用程序关键数据细粒度保护系统SeCage,该系统假设应用程序内部存在漏洞,甚至连操作系统也是不可信的。SeCage系统通过混合分析技术对应用程序进行自动化地解耦,将操作关键数据的关键代码从主程序中分离出来,放入一个通过Intel硬件虚拟化内存隔离出来的安全运行环境中。另外,SeCage系统还借鉴了将控制面和数据面想分割的思想,首次提出利用Intel硬件虚拟化提供的VMFUNC特性,来减少和虚拟机监控器的上下文切换,从而提升整个系统的性能和安全性。我们将该机制应用在Nginx+OpenSSL,OpenSSH和CryptoLoop内核模块中,成功阻止了heartbleed,rootkit以及相关内核内存泄露的攻击,有效地保障了应用系统数据隐私的安全性。第三,针对虚拟计算环境中的代码执行流安全,本文提出了一套精确的控制流保护机制:我们发现,当前基于控制流完整性(CFI)的应用程序保护机制无法同时满足精确性,高效性和透明性,它们或者需要进行插桩从而破坏了软件的完整性,或者设定的规则过于粗粒度从而不够安全,而且很多系统都会引入较大的性能开销。造成这些问题的一个很重要的原因在于当前的保护机制没有足够的运行时信息。为了解决这些问题,我们设计并实现了一个轻量级的透明控制流完整性保护系统FlowGuard,它首次提出了利用Intel最新的用于追踪记录运行时控制流的Processor Trace(IPT)硬件机制来进行CFI的保护。为了解决IPT解码低效的问题,FlowGuard系统会将生成的传统控制流图转换成可兼容IPT的控制流图,同时利用基于高覆盖率导向的fuzzing技术对后者进行动态训练和标记,从而提高整个控制流图的精确度。另外,FlowGuard系统在运行时采用了快速路径和慢速路径相分离的思想,在快速路径中直接用控制流图对运行时记录的控制流进行高效过滤,而在慢速路径中解码可疑的控制流记录,从而保证了细粒度的CFI检查。我们在Intel的skylake机器上实现了FlowGuard的原型系统,它有效地平衡了安全性和高效性,在引入较小性能开销的前提下,检测出当前已知的控制流劫持攻击,并将和控制流完整性相关的安全参数优化到原来的30%,同时保证了其对应用程序和部署环境的透明性,为应用系统代码执行流安全提供了强有力的保障。第四,针对智能终端设备的数据安全和运行时安全,本文提出了一套基于虚拟计算环境的手机安全增强机制:智能手机的流行使得它们成为了人们主要的存储、计算和互联的平台,这也同时让它们对安全性的需求进一步增加。本文针对智能手机中隐私数据的易失性和运行环境安全的脆弱性,基于虚拟计算环境中的丰富计算资源和安全增强技术,提出了新型的智能手机安全增强技术,设计并实现了TinMan,SplitPass和RemoteBinder系统。在手机数据安全方面,我们提出了CoR(Confidential Record)的概念,利用TinMan和SplitPass系统,保证即使在包括手机失窃在内的物理攻击威胁模型下,也能防止CoR机密数据丢失。具体来说,TinMan系统将机密数据的明文存储在可信的第三方节点,并通过污点传播(Tainting)和代码动态迁移技术,当手机端需要访问机密数据时,将相关代码动态迁移到第三方节点运行,从而保证手机端不会出现机密数据的明文信息,同时,TinMan系统通过非对称污点传播技术来对系统性能进行优化。进一步的,SplitPass系统通过实现了一套双方互不信任的密码管理器,从而保证在第三方节点不可信的场景中,也能防止密码数据的丢失。它将密码明文分割成两个部分,分别存储在手机端和第三方节点中,并且提出了SSL层的会话植入和TCP层的载荷替换技术,来维持对手机端应用程序和服务器程序的兼容性。在手机运行时环境安全方面,我们提出了RemoteBinder系统,该系统提供了一套基于安卓智能手机组件解耦技术的透明安全服务机制,将手机端的service和broadcast receiver组件进行解耦,利用安卓系统的IPC机制,将应用程序中一些可疑的组件运行在第三方节点中,由虚拟计算环境对其进行检测和监控。以上这些系统保障了手机终端设备在强威胁模型中的数据安全和运行时安全。本文所提出的三项基于体系结构扩展的安全解决方案可被考虑搭建在虚拟计算环境中的IaaS(Infrastructure-as-a-Service)和PaaS(Platform-as-a-Service)服务模式中,针对来自虚拟计算环境外部的攻击,对平台中虚拟机的运行环境安全(TxIntro系统)、应用系统的数据安全(SeCage系统)和代码执行流安全(FlowGuard系统)提供有效的保护和保障。基于虚拟计算环境智能手机安全增强方案可被考虑部署在虚拟计算环境中的CaaS(Cloud-as-a-Service)服务模式中,针对智能手机的攻击,利用虚拟计算环境中的丰富资源和安全机制,对智能手机的数据安全(TinMan系统和SplitPass系统)和运行时安全(RemoteBinder系统)提供强有力的支持和增强。同时,本文在设计这些系统时,除了考虑它们的安全性之外,对性能、兼容性和可行性都进行了较为深入的探索,从而围绕虚拟计算环境实现了一系列高可靠、高性能和高可用的安全解决方案,在云计算安全领域具有较高的应用价值和意义。