第一章 绪论
1.1研究背景与意义
随着移动互联网的迅速发展,智能手机已普遍存在于人们的日常生活中。由于Android 系统的开源性,越来越多的厂商投入到 Android 设备的生产中[1],这些厂商根据自身的硬件对 Android 系统进行定制,这使得 Android 系统不断优化升级,用户体验也越来越好,而 Android 应用开发的从业者也越来越多,因此更多的精品 Android应用被开发出来,Android 应用市场越来越丰富,使用 Android 系统的用户也因此变得越来越多,在移动智能设备中,主要分为苹果的 IOS 系统与谷歌的 Android 系统,而 Android 系统的市场占有率是最大的,而这也使得对 Android 研究成为现今的一个研究热点。
现今,人们除了使用手机的通话与短信功能外,大部分的用户都有自己的微信与支付宝,都会在手机上发红包与转账付款,这些操作都会涉及到用户的敏感数据。由于 Android 系统开放性的特点,它的源码是公开的,任何人都可以在谷歌的官网上下载 Android 系统与 Android 内核的源代码。恶意软件的开发人员通过研究 Android 系统的代码,挖掘其中的漏洞[2],然后利用这些漏洞制造出恶意软件。当这些恶意软件运行在用户手机上以后,不单单可以获取到用户手机的敏感信息[3],还有可能偷窃到用户的支付账号与密码,威胁到用户的财产安全,因此越来越多的人关注 Android 系统的安全性问题。
Android 系统自带了对软件权限控制的功能,但是一般的用户没有这些权限的概念,这就让一些恶意软件有机可乘,当用户默认允许这些应用软件的所有权限以后[4],获得了用户手机控制权的这些软件就可以控制用户手机的所有的功能,随意的获取用户的信息,控制手机的各种行为,这样存储在手机中的用户信息就会被这些软件全部窃取到。
因此,本文将运用虚拟化的技术,利用虚拟化带来的隔离性来解决 Android 上的存在的安全问题,对现有的虚拟化技术与方案进行研究与分析,提出能够在 Android系统中实现的多系统虚拟化方案。虚拟化技术可以提供一个与外界隔离的独立空间,将应用置于虚拟系统环境中运行,可以保证其无法破坏到宿主机系统,也无法获取到宿主机的信息,这样就可以有效的防止了恶意程序对于 Android 系统的威胁,保证用户数据的安全性。
.........................
1.2 国内外研究现状
在传统的 PC 设备中,对多系统虚拟化的研究已经比较完备,由于移动设备平台的特殊性,在移动平台上实现虚拟化不但要考虑系统功能的完整性还要考虑虚拟化的消耗的性能问题与硬件多样的的问题,一般的虚拟化方案在移动平台上都难以实现。本文详细介绍了几个可用的移动平台的虚拟化技术与一些对移动平台的研究。
1.2.1 国外研究现状
国外对移动平台的虚拟化研究起步较早,研究比较深入,已经有一些嵌入式设备的虚拟化方案,而这些研究成果中比较值得本文关注的有下面的一些:Xen-ARM 开源平台[5],NOVA[7]与 Cells[8]系统。
(1) Xen-ARM 开源平台
Xen 是由剑桥大学计算机实验室开发的一个开源项目,其目的是为了在一个计算机中运行多个满特征的操作系统[8]。一般移动设备的处理器都是ARM架构,Xen-ARM是 Android 系统虚拟化中的一个解决方案。Xen 的实现主要由下面的三个组建构成:Xen Hypervisor,Domain 0 与 Domain U。其中 Xen Hypervisor 运行在硬件设备和软件之间,负责为运行在硬件设备上的虚拟机分配 CPU 与内存资源。Xen Hypervisor 不单单是硬件设备的抽象接口,同时也可以控制虚拟机的执行,让各个虚拟机之间共享硬件设备,但是 Xen Hypervisor 不会处理网络,外部存储设备与 I/O 等通用设备硬件。在 Xen环境中,每一个虚拟机成为一个 Domain。而 Domain 0 则是一个特殊的虚拟机,它是一个经过修改的 Linux 内核,是运行在 Xen Hypervisor 上的特殊的虚拟机,拥有网络,外部存储设备与 I/O 等通用设备硬件的访问权限,并且可以与其他的运行在Xen Hypervisor[10]之上的其他虚拟机进行交互,在整个虚拟化方案中担任管理员角色,负责管理网络与 I/O 设备。Domain U 则是客户虚拟机,没有直接访问物理硬件的权限。通过与 Domain 0 和 Xen Hypervisor 的通信获取硬件资源。
.........................
第二章 虚拟化理论与关键技术
2.1虚拟化技术研究
虚拟化技术[16]是一种资源管理技术,它将网络、内存及计算资源等进行抽象然后转换呈现出来,打破了实体结构中不可分割的局限,将资源比原本更好的组织性形态进行分配。通过虚拟化技术构建出来的多系统环境,可以显著的提高计算机的工作效率,总的来讲虚拟化技术是将底层的资源进行分配,给上层提供特定的运行环境。操作系统的虚拟化主要可以分为下面四种方案[17],分别是全虚拟化、半虚拟化、硬件辅助虚拟化和操作系统的虚拟化。
2.1.1全虚拟化
全虚拟化的虚拟化方案是将底层的硬件进行完全模拟,这些硬件包括了 CPU 指令集、I/O 操作、中断和内存管理[18],整个方案的架构如图 2.1 所示。
在图 2.1 中可以将全虚拟化分为两个部分,其中宿主系统与硬件运行在 Ring0 状态中,VMM(Virtual Machine Monitor)监视管理器与虚拟机(Guest OS)运行在 Ring3状态中。Intel 在设计 CPU 特权级别[19]的时候,分为了 Ring0、Ring1、Ring2 与 Ring3四个级别,数字越低级别越高,目前 PC 中使用最多的两个操作系统是 Windows 与Linux,这个两个操作系统都只用了 X86 架构 CPU 中的两个权级,Ring0 与 Ring3,操作系统的内核运行在 Ring0 特权级中,而普通的用户程序运行在 Ring3 特权级中,因此,通常会把 Ring0 称为核心态,而 Ring3 称为用户态。在全虚拟化的架构图中,虚拟机运行在 VMM 模拟的硬件环境中,而 VMM 则要对虚拟机的所有硬件请求进行分析,然后在宿主系统中执行,由于 VMM 的存在,上层的虚拟机可以运行大部分类型的操作系统,不受底层硬件所限制,同时上层的虚拟机认为自己是独占所有的硬件资源,这跟运行在单台物理机上的效果是一样的,因此不需要对虚拟机的操作系统做任何的修改,当虚拟机要执行某些特权指令的时候,因为在用户态运行的虚拟机发出的特权指令代码是不能直接运行在核心态的,所以 VMM 就需要将这些这些特权指令进行二进制翻译,这个过程其实就是 VMM 对虚拟机要执行的特权二进制代码,翻译成运行在核心态的特权指令二进制代码或者利用用户态的非特权指令模拟该特权指令。由上面的分析可知,这种虚拟化技术的优点是不需要对虚拟机做任何的修改,易于部署,但是所有的特权指令都由 VMM 来进行模拟或者翻译,并且 VMM 还需要对虚拟机进行管理,该方案的虚拟化的消耗大部分都来自于 VMM 对指令的转换与模拟。
............................
2.2 LXC 容器技术的研究
2.2.1 LXC 容器技术概述
LXC(Linux container)[28]是一种利用容器技术实现的操作系统级虚拟化技术.它利用单个 Linux 内核运行多个隔离的 Linux 系统(容器),来自于 Sourceforge 网站上的一个开源项目,与普通的操作系统级的虚拟方案类似,LXC 的实现不需要动态翻译操作指令,通过内核提供的功能实现数据的隔离。
LXC 工具提供了用户空间的软件包,用于创建和管理容器。提供的常见的工具集如表 2.1 所示。
LXC 的实现依赖 Linux 内核中 Cgroups 与 Namespaces 特性,而 Cgroups 与Namespaces 这两个内核特性都已经加入到内核主线当中,对于任何的 Linux 系统,只需要开启相关的内核特性就可以使用 LXC 的功能。
............................
第三章 Android 多系统虚拟化环境研究 ..................... 153.1 问题分析 ............................. 15
3.2Android 虚拟化分析 ............................... 16
第四章 Android 系统虚拟化实现方案 ....................................... 23
4.1多系统虚拟化架构 ........................................ 23
4.2Android 通信系统的虚拟化 ................................ 25
第五章 虚拟化环境的测试与分析 ........................................ 37
5.1系统测试环境 .................................... 37
5.2功能测试 ................................... 38
第五章 虚拟化环境的测试与分析
5.1系统测试环境
为了方便系统的实现,本文选择了 Galaxy Nexus 手机作为本系统的实验平台。该手机是由三星代工的谷歌手机。因为该手机的品牌为谷歌的,而谷歌开源旗下所有Android 设备的内核,系统与驱动的源代码,因此可以在官网上下载到该手机的相关源代码。本系统测试的手机硬件参数如表 5.1 所示。
实验机的内核代号为 OMAP,CPU 架构的代号为 maguro,该手机 CPU 是由德州仪器生产,双核主频为 1.2GHz 的。首先需要从谷歌的官网上,利用 git 工具下载 OMAP分 支 的 内 核 源 代 码 。 获 取 到 源 代 码 以 后 , 选 择 的 git 版 本 分 支 为android-omap-tuna-3.0-jb-mr2。这个分支编译出来的内核版本是 3.0.72,对应的 Android系统的版本是 4.3,使用的 LXC 工具版本是 2.0.7。考虑到本系统所使用的测试机的CPU 为 1.2GHz 的双核 CPU,内存只有 694MB。因此计划在实验机中同时运行两个Android 系统,分别是宿主系统与一个容器系统。
.........................
第六章 结束语
随着现在移动互联网的兴起,人们在智能手机设备中使用的时间已经大大超过了普通的桌面 PC 的使用时间。这些移动智能手机拥有购物,娱乐,学习,通信等各种各样的功能,各式各样的应用也层出不穷,随着科技的发展不断的升级,运算能力变得越来越强,功能也越来越多。这些移动智能设备中,有一大部分是使用的 Android作为系统的。针对 Android 系统中存在的安全性问题,将虚拟化技术引入 Android 系统中,这样既可以利用虚拟化带了的隔离性解决用户隐私数据被窃取的问题,也可以通过虚拟化充分利用硬件设备资源。本文设计并实现了基于 LXC 的多系统虚拟化的实现方案,这个方案中通过共享内核的虚拟化方式大大降低了虚拟化的性能消耗问题,
同时该方案主要是对用户层的 Android 系统代码进行修改,不涉及硬件的修改,减少不同Android硬件中的移植工作,可移植性较好。本文的主要工作有下面的几个方面。
(1)对当前智能移动设备的虚拟化技术进行研究,分析这些技术的实现原理,为本文的虚拟化方案提供思路。对不同类型虚拟化方方案进行研究,分析每种虚拟化方案的实现细节与优劣,对 LXC 容器技术进行研究,分析其实现的原理。
(2)针对 Android 系统的特点进行虚拟化实现的分析,分析不同的虚拟化难度与可行性,本文提出了基于 LXC 的多系统虚拟化方案,该方案通过使用 LXC 工具在Android系统中构建出互相隔离的内核容器环境,这些容器共享同一个Android内核,通过 Linux 内核特性实现软硬件资源的控制隔离,然后在这些互相独立的容器环境中,启动 Android 系统,实现多系统的虚拟化。
(3)本文对 Android 系统中的通信,输入与显示系统的工作原理进行详细的分析,提出相应子系统的的虚拟化方案,解决多系统同时运行时的冲突问题,实现了硬件资源的复用。
(4)对本文提出的方案在真实的移动设备中实现并进行功能与性能的测试,从多个维度对设备进行测试,验证本方案的可行性。
参考文献(略)