谨以此论文献给所有支持和帮助我的人
----王鹏程
Android 智能手机信息安全研究
学位论文答辩日期: 指导教师签字: 答辩委员会成员签字:
独 创 声 明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的
研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其
他 人 已 经 发 表 或 撰 写 过 的 研 究 成 果 , 也 不 包 含 未 获 得 (注:如没有其他需要特别声明的,本栏可空)或其他教育机构的学位或证书使
用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。
学位论文作者签名: 签字日期: 年 月 日 --------------------------------------------------------------------- 学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,并同意以下 事项:
1、学校有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许 论文被查阅和借阅。
2、学校可以将学位论文的全部或部分内容编入有关数据库进行检索,可以
采用影印、缩印或扫描等复制手段保存、汇编学位论文。同时授权清华大学“中 国学术期刊(光盘版)电子杂志社”用于出版和编入CNKI《中国知识资源总库》 , 授权中国科学技术信息研究所将本学位论文收录到《中国学位论文全文数据库》。 (保密的学位论文在解密后适用本授权书)
学位论文作者签名: 导师签字:
签字日期: 年 月 日 签字日期: 年 月 日 I
Android 智能手机信息安全研究 摘 要
智能手机相对于传统的手机拥有更丰富的功能和更强的数据处理能力,而近 年来发展迅速的Android系统具有开源,可移植性强等优点,因此,越来越多的 智能手机采用Android系统作为手机操作系统。随着Android智能手机的普及和 人们安全意识的提高,Android智能手机的安全性也越来越受到人们的重视。手 机中包含了大量的用户私密信息,并与用户的经济利益直接相关,因此如何保护 Android智能手机的信息安全,是一个非常重要的课题。
为了更有效的解决Android智能手机存在的信息安全问题, 本文从以下几个 方面开展研究工作。
(1)本文首先通过对 Android 系统以及 Android 系统安全机制的研究,分 析并提出了Android系统安全机制存在的不足。其次,对现有的Android智能手 机的安全防御措施进行分析,现有的措施主要通过静态比较和动态分析的方式实 现对恶意程序的检测和监控,但这两种方式都存在不同程度的缺陷。
(2)结合现有的 Android 智能手机安全防御的手段,提出了手机安全区的
概念,通过增加一个安全硬件分区并对这个分区进行软件加密的方式,保护用户 私密信息。对于安全分区中数据的操作请求必须首先进行安全审核,审核通过后 由该分区中的可信任程序执行对数据的操作,其余非安全分区没有权限对安全分 区中的数据进行直接操作。
(3)为了保证安全分区的正常加载,提出了在开机和进行系统升级的时候 验证Bootloader的方式来保护Bootloader不会被轻易破解和替换, 并相应的提 出在启动和升级 Bootloader 时用于校验的启动值和启动密钥,通过这两个值保 证手机的Bootloader不会被轻易破解,同时安全区也可以正常加载。
(4)针对现在比较普遍的手机固件升级问题,提出一种安全的升级方案,
保证手机的升级安全。即通过验证用于升级的文件,监控升级的过程,检测升级 的完整性,以及升级过程中和升级成功以后对用户的提示,可以有效的保证手机 升级的安全。
关键字:Android,安全区,Bootloader,升级 II
Research for information security based on Android smart phones Abstract
Compared with traditional mobile phone, smart phone has much more rich functionality and strong ability in data processing, besides, Android has been developing rapidly in recent years, it is an open source system, has strong portability advantages, therefore, more and more intelligent mobile phone use Android system as
their mobile phone operating system. With the popularity of Android smart phone, and improvement of people's security consciousness, the security of Android smart
phone get more and more of people’s attention. People’s mobile phone contains a
large number of user’s private information, and is directly related to user’s economic interests, so how to protect the information security of Android smart phone, is a very important topic.
In order to solve the problem about information security of Android smart phones more effectively, this paper carry out the research work from the following
several aspects.
(1) This article research the Android system and Android system's own security
mechanism first, based on that analysis and put forward the problems existed in
security mechanism of Android operating system. Secondly, analyze the existing security measures Android smart phone used for protect itself, and the existing
measures mainly realized by two approach to detection and monitoring malware, they are static comparison and dynamic analysis, but these two approach also have there own defects.
(2) Combined with the ways Android smart phone used for security defense we already know, puts forward the concept of security zone for smart phone, by adding a
security hardware partition and use some software encrypt this special partition, to
protect user's private information. For the data contained in this safe partition, the
action request for these data which not in safe partition must through security audit III
first, if the request can be approval, the operation of the data must be execution by the
trusted program in the safe partition, other than the program in safe partition,
the
others will not have the permission to manipulate the data in safe partition directly. (3) To make sure the safety partition can be loaded normally, this paper come up
with the way to protect the Bootloader boot up correctly, validate the Bootloader
before boot up or before system upgrade, to make sure the Bootloader not be
unlocked or replace easily, accordingly, figure out the idea for verification measures Bootloader while launch and upgrade using boot up key and secure boot up key, to
ensure that mobile phone is not be unlocked easily by these two key, and safe
partition can also be loaded normally.
(4) According to problem more and more common within mobile phone’s firmware upgrade because more and more people want to upgrade their phone, to assure the safety of progress while upgrade phone, put forward a safer way to upgrade.
Test the upgrade file will used for upgrade at the first, then integrity monitor the
upgrade process, show the upgrade process to customers, and give some tips to them after upgrade success, make sure the safety of mobile phone’s upgrade effectively. Key words: Android, Secure Zone, Bootloader, Update IV 目录
1. 绪论 ................................................... 1 1.1引言......................................................... 1
1.2课题的研究背景及研究意义..................................... 1 1.3国内外的研究现状............................................. 2 1.4本文研究的内容............................................... 3 1.5本文的框架结构............................................... 4
2. 手机信息安全的概念及 Android 平台研究 .................. 5 2.1手机信息安全的概念及重要性................................... 5 2.1.1 介绍手机信息安全的概念................................. 5 2.1.2 手机信息安全的重要性................................... 5 2.1.3 手机信息安全的分类..................................... 6 2.2 Android系统介绍............................................. 6
2.3 Android系统的安全机制研究.................................. 11 2.3.1 基于Linux文件系统权限特性............................ 11 2.3.2 基于应用层资源访问的权限特性.......................... 12 2.4 本章小结 ................................................... 14
3. Android 平台的手机信息安全的需求分析以及现有的恶意代码攻 击防御手段............................................... 15
3.1 Android平台的手机信息安全的需求分析........................ 15 3.2 Android智能手机可能受到的攻击方式.......................... 16
3.3 针对Android系统现有的恶意代码检测和防御技术研究 ........... 17 3.4 本章小结 ................................................... 19
4. Android 智能手机增加安全分区及分区保护措施 ............ 20 4.1 权限控制的重要性和必要性 ................................... 20 4.2 对加密技术的应用 ........................................... 21 4.3 安全分区的概念 ............................................. 21 4.4 通信中文件的加密保护 ....................................... 23 4.5 对Bootloader的保护 ........................................ 26 4.6 本章小结 ................................................... 31
5. 一种基于 Android 智能手机的安全升级策略 ............... 33 5.1 升级操作的安全 ............................................. 33 5.2 升级内容的安全 ............................................. 34 5.3 升级过程的安全 ............................................. 36 5.4 升级过程的提示 ............................................. 38 5.5 本章小结 ................................................... 40 6. 总结与展望............................................ 41 V
参考文献:............................................... 43 致 谢 ................................................. 45 个人简历、在学期间发表的学术论文与研究成果 .............. 46 Android智能手机信息安全研究 1
1. 绪论 1.1 引言
移动智能终端与人们关系非常密切,现在大部分人都有一部手机,很多人
同时使用好几部手机。而 Android 智能手机则是近年来发展非常迅速的移动终 端产品,随着智能手机软件和硬件性能不断提升,价格不断下调,越来越多的 手机开发商采用 Android 系统作为智能手机的操作系统,越来越多的用户也选 择使用 Android 智能手机,Android 智能手机的用户数量早在 2011 年第一季度 就已经超过了诺基亚的塞班系统,成为全球第一,近几年,Android智能手机的 市场占有率也越来越大,由此可见, Android智能手机具有非常良好的发展前景。 由于 Google 公司的巨大的市场影响力,Android 智能手机在其安全性上的增强 ,必然会在业界造成巨大影响。 1.2 课题的研究背景及研究意义
智能手机与传统的PC平台不同,这表现在大部分移动智能终端是用户随身 携带的,并且实时在线。不仅如此,终端中还储存了大量涉及到用户隐私的数 据,特别是用户的通讯录,短信息,通话记录等信息。另外,智能手机的许多 功能和服务是涉及用户资费的,例如用户的网络流量,手机通话等,与用户的 经济利益直接相关。
科技的发展有时候也是一把双刃剑,手机的功能越来越强大,在给人们带
来更便利和更丰富的信息服务以及良好用户体验的同时,随之而来的是更加严 重的安全保密隐患,用户的手机一旦被植入病毒或者恶意软件,就可能会造成 用户私密信息的泄露,一些吸费软件可能会自动打电话或者发短信,在用户不 知情的情况下定制一些用户用不到的付费增值业务,造成用户的手机话费剧增 ,手机的安全问题日益严重,给手机用户带来了很多困扰。
Android智能手机是一个完整的嵌入式系统, 随着使用Android智能手机的
用户越来越多,Android智能手机存在的安全隐患也越来越多的被发现,这些漏
洞不断地被不法分子所利用,造成 Android 智能手机的安全问题越来越严重。Android智能手机信息安全研究 2
如何保证 Android 智能手机的数据安全,系统安全,如何从硬件和软件等方面 提高Android智能手机的安全性,具有非常重要的研究意义。 1.3 国内外的研究现状
现在市场上已经有一些针对 Android 智能手机安全问题的软件产品出现。
现在市场上的安全产品大多是利用 Android 平台的特性,主要通过静态分析和 动态分析两个方面来保证手机信息安全[1] 。
如果采用静态分析的方式,大部分是对已知恶意代码进行签名或者特征匹 配检测,通过提取恶意软件特征码等办法实现对恶意软件的查杀[2] 。如果采用动
态分析的方式,往往是通过软件监控手机的操作来发现危险操作,如扣费短信 的发送,用户定义的黑名单和白名单,手机网络流量等等,可以使用在沙箱中模 拟程序运行并检测程序操作的方式对程序进行监控的动态监测办法[1] 。在实际的
使用中,对这些防御功能的详细实现总结如下:
(1)手机安全检查功能,主要是通过安装手机杀毒软件,通过特征码比较等 方式实现对手机中恶意软件的查杀。
(2)手机用户的隐私安全,主要通过设置手机的开机密码等方式保护手机中
的数据,另外利用 Android 自身的安全机制,通过黑白名单的管理,实现对骚 扰电话和短信的过滤,从而保证用户不被广告等垃圾短信打扰。
(3)为防止手机中的数据丢失,自动对手机中的数据进行备份;在手机丢失 的情况下远程锁定,控制手机或删除手机中的数据。
为方式密码泄露,可以使用人脸识别技术实现了一种手机防盗系统,使用 人脸识别对手机进行解锁来防止信息泄露[3] 。 亦或者使用智能卡保护手机信息安
全的办法,其主要思想是增加一种加密和交互机制保护数据通信的安全[4] 。
随着 Android 智能手机的普及,手机安全类产品也层出不穷,但是这些产 品所采用的检测技术和模式都是类似的,其功能设计主要是针对已知的安全威 胁进行的,所以这些都不是完善的解决Android智能手机安全问题的解决方案。 鉴于Android系统及手机平台的特殊性,还有很多问题需要解决。
(1)针对Android系统中的共享数据,特别是短信和通讯录,它们并不是任
何应用的私有数据,因此不会被应用所保护。这也就意味着所有的应用都可以Android智能手机信息安全研究 3
申请权限对短信和通讯录的数据进行读取,这就大大增加了用户信息泄露的可 能性,所以如何更好的保护这些重要的共享数据,是保护用户私密信息的关键。 (2)Android 平台上有非常丰富的应用,同样不安全的应用软件也非常泛滥
,特别是一些从非可靠途径下载的应用程序很有可能就含有恶意代码,如何规 范应用市场,查找和识别不安全的应用,是一个长期的工作。
(3)用户的安全意识较薄弱,随意下载软件,对手机进行ROOT,或者是随意 的“刷机”行为,也会给安全埋下隐患。因此,在提升系统的安全机制的同时 ,也需要提升用户的安全意识。 1.4 本文研究的内容
本文从课题的研究背景和研究意义出发,首先解释了手机信息安全的概念
,以及手机信息安全的重要性。并将现在发现的手机信息安全问题进行分类, 通过总结现有的手机信息安全问题的种类,对于手机信息安全问题有一个系统 的了解,并为以后的研究打好基础。
同时,通过对Android系统架构及Android应用程序的研究, 分析了Android 的组织结构以及 Android 自身所具有的安全防御措施,指出 Android 可能存在 的一些安全隐患。针对基于 Android 智能手机的发展趋势和现在所面临的安全 问题,详细阐述了现在第三方所能提供的主流的 Android 智能手机安全防御措 施,并分析了这些措施的优缺点。
其次,本文通过对以往 Android 智能手机安全防范措施的研究,结合现有 的软件分析的方法,在此基础上提出一种通过增加安全分区的方式保护用户隐 私数据的方案。这个安全分区的作用是将手机中用户的私密数据进行加密和存 储,并将应用程序对这些文件的操作意图进行分析,跟踪和限制。为了保证安 全分区的功能可以正常实现,提出通过加密Bootloader,开机验证Bootloader 等方式来保证Bootloader不被破解,既能保证安全分区能正常的加载,另外可 以增加手机被破解的难度,让手机不能很容易的被破解。
最后,针对现在很多用户喜欢“刷机” ,但是容易将手机升级成“板砖”的 问题,提出一种安全的手机升级过程,保证出厂的手机可以正常,便捷的升级
官方升级版本。这种方法同样适用于当用户的手机遇到系统崩溃等问题时,可Android智能手机信息安全研究 4
以对手机进行升级,恢复。 1.5 本文的框架结构
第一章,绪论,通过对当前 Android 智能手机的发展形式进行分析,提出
对 Android 智能手机信息安全这个课题进行研究的重要性和必要性,以及本文 针对该课题所做的工作。
第二章,分析Android平台,以及平台自有的防御方式。
第三章,介绍了基于 Android 平台智能手机的手机防盗系统的需求分析以 及现有的恶意代码攻击防御手段。
第四章,在现在已有的动态和静态检测方法基础上,介绍了 Android 智能 手机增加安全分区的概念,并提出一种保护Bootloader不被破解的方法,以达 到安全分区功能正常实现的目的。
第五章,介绍一种基于Android智能手机的系统升级策略。 第六章,总结与展望。 Android智能手机信息安全研究 5
2. 手机信息安全的概念及Android 平台研究 2.1 手机信息安全的概念及重要性 2.1.1 介绍手机信息安全的概念
手机信息安全包括手机的软件和硬件安全,手机可以连续、正常、可靠地运 行,手机信息服务不会中断,同时手机系统中的数据也需要受到保护,不会因为
恶意的或者偶然的原因而遭到泄露、更改和破坏。
手机信息安全主要包括机密性,完整性,可用性。机密性是指手机中的数据
不会在用户未授权的情况下被第三方得到, 因为手机中的数据大部分都是用户的 私有信息,必须保证用户的私有信息不会被泄露。完整性是指手机的系统和手机 中的数据都是完整的,系统未被破坏,数据没有被篡改或者删除。可用性是指手 机时刻处于可使用的状态,保证通讯的顺畅。 2.1.2 手机信息安全的重要性
手机信息安全直接与用户的隐私和经济利益直接相关,因此,保护手机的信 息安全是非常重要的,主要表现在以下几个方面: (1)防止用户手机里的机密信息丢失[5]
手机中的通讯录,通话记录等属于用户的私有信息,另外,由于现在手机的
内部存储比较大,并且可以支持外置的 SD 卡等设备,用户可能会将一些需要处 理的重要文件等也储存在手机中,一旦丢失可能会给用户带来很大的损失。 (2)防止手机强行消费,以防止手机用户的话费剧增[5]
手机的移动通信业务都是和用户的经济利益有直接关系的,如果手机被强制 消费则会造成用户的经济损失。
(3)防止破坏手机系统或者硬件系统[5]
有些恶意代码会删除用户储存器中的内容,破坏手机系统,将手机系统的关 键文件删除,造成手机的软件系统崩溃。更有甚者,可能会由于过压或者过流等 原因导致硬件的损坏。 Android智能手机信息安全研究 6
2.1.3 手机信息安全的分类
根据本文的研究内容,手机的信息安全包括以下几个方面: (1)手机数据安全
保护手机中的数据不被泄露,恶意篡改或者删除,保证手机中数据的机密性 和完整性。
(2)智能手机系统安全
手机系统是智能手机的灵魂,必须保护手机系统可以正常运行,防止通过手 机漏洞对手机进行破解。 (3)手机升级安全
为了有更好的用户体验,智能手机可能需要在出厂后进行再次升级,当手机 的固件需要升级的时候,可以有效的保护手机的升级安全,防止手机被升级成“ 板砖”。
2.2 Android 系统介绍
Android 系统与 Windows mobile 操作系统和 Symbian 操作系统类似,不同 的是,Android 是开放源码的。Android 是基于 Linux 开发的,主要用于便携终 端设备的操作系统,该系统由Google和OHA(Open Handset Alliance,又名开 放手持设备联盟)共同开发和领导。
Android 平台是由 Linux 部分和 Java 部分组成,从它的架构和工作原理可 以看出,Android是目前可移植性最强的手机操作系统。由于Android完全开源 ,并且 Google 投入了大量的人力和物力对其进行升级和维护,第三方的研发人
员也可以基于Android平台进行二次开发, 将Android改造成具有自己独特风格 的操作平台。正是因为Android平台具有成本低,使用方便,可移植性高等便利 性,所以越来越多的手机开发厂商开始使用Android系统作为智能手机的操作系 统。
Android 系统采用了分层式的架构设计,下图是 Android 系统架构图。
Android的四层结构从底层到上层分别是Linux核心层,系统运行库层,应用程 序架构层和应用程序层[6]
。 Android智能手机信息安全研究 7
应用程序
联系人 浏览器 首页 游戏 。。。 应用程序框架
活动管理器 系统界面 电话管理器 资源管理器
消息管理器 窗口管理器 内容提供商 位置管理器 程序管理器 XMPP服务 函数库 Android运行环境 Linux内核
外观处理器 页面浏览器 网络协议 2d绘图引擎 数据库 3d绘图引擎 C函数库 媒体函数库 字形处理 核心函数库 Dalvik虚拟机
显示驱动 键盘驱动 内存驱动 电源管理 摄像头驱动 通讯驱动 声卡驱动 网络驱动 图 2-1 Android 分层架构
Linux内核层:Android使用Linux2.6内核构建核心系统服务,如设备驱动
,进程管理,内存管理,网络协议栈等都是基于Linux内核实现的。Linux内核 同时还是上层应用与底层硬件之间的中间层,负责上下层之间的交互,从而实现 对硬件寄存器的控制和硬件接口的操作。内核层的主要功能有:进程调度程序, 进程间的通信,进程地址空间的内存管理,中断服务程序,网络协议等。 Android系统中增加了一些原本Linux中没有的驱动程序,用于辅助操作系 统[7] 。
如下表所示: Android智能手机信息安全研究 8
表2-1 Android 相比 Linux 增加的驱动
Ashmem 匿名共享内存,通过这种内核机制,可以为用户 空间程序提供分配内存的机制
Logger 为用户层程序提供轻量级的Log支持,这个驱动 可以作为一个调试工具来使用
Binder 为用户层驱动提供了进程间通信支持,Android 整个系统的运行依赖Binder驱动
Android Power Management 电源管理模块
Low Memory Killer 在缺少内存的情况下,杀死进程 Android PMEM 物理内存驱动
Android系统的本地库及其运行环境:本地库是供Android系统不同的组件
调用的函数库,主要包括C和C++库,本地库可以通过应用程序框架的实现,让 应用程序开发者更为方便的进行开发。运行环境主要是由Dalvik虚拟机和Java 库组成,其作用是为应用程序的提供运行环境。
应用程序框架层:应用框架层包括4个组件,资源管理器,控件,内容提供 器,活动管理器。
应用程序层:Android 的应用程序运行在 Dalvik 虚拟机上,这些应用程序
既包括Android系统自带的应用程序,例如浏览器,短信,日历等,也包括用户 自己下载安装的应用程序。
Android为了更好的支撑应用,系统本身包含一套服务和系统,主要包括: 强大的和可扩展的视图,内容提供,资源管理器,Notification 管理器和 Activity管理器,如下表所示: 表 2-2 Android 的系统和服务 强大的和可扩展的视 图
用于构建应用,包括列表,网格,文本框,按钮,甚 至内嵌的Web浏览器
内容提供 用于应用间的数据提供和数据共享
资源管理器 提供非代码的资源支持,包括本地字符串,图像文件 和布局文件
Notification管理器 用于应用程序在状态栏显示告警信息
Activity管理器 用于管理应用的生命周期,以及提供通用的导航辅助 Android智能手机信息安全研究 9
用户打开一个Android应用程序时,系统中会相应的创建一个新的独立进程
,而系统中之前正在运行的进程就会被暂停并转移至后台。如果系统中的内存不 足,系统可能会将终止这些被暂停的应用程序,为新打开的应用程序释放内存以 保证其正常运行。
对于Android应用程序的开发工作主要有Framework和Application两个部
分,其中 Framework 主要提供标准的 API,供上层应用调用。Android 应用由各 式各样的组件构成,以下是比较常见的两种。 AndroidManifest.xml:
AndroidManifest.xml是控制文件,控制文件中包含有软件的信息,这些信
息用于指示如何使用该组件,并且软件正常运行所需的权限也包含在这个文件 中。每个应用程序都必须包含一个AndroidManifest.xml文件,且在这个应用程 序的根目录下,文件名不能修改。 Activities:
Activity是Android应用中用于构造用户可见的UI界面的基本类。在应用
中,通常情况下,一个界面就是通过一个Activity实现的, 或者是通过Activity 的扩展类实现的。在 Activity 中,可以创建多种控件,有的对用户可见,有的 提供给用户交互操作,界面操作大多是从一个 Activity 切换进入到另一个 Activity。
下图所示是一个完整的Activity的生命周期。 Android智能手机信息安全研究 10
图2-2 Activity 的完整生命周期
Android系统中的应用程序其实就是一个压缩包,在APK中会包含这个应用 程序正常完成所需要的所有的权限要求,在用户安装应用程序的时候我们也可以Android智能手机信息安全研究 11
看到系统给我们的提示,标识这个程序需要的权限,如果用户认为这个程序运行 所需要的权限较多,有些关于私密信息的操作,可以拒绝安装,但是用户没有办 法限制这些权限的申请,要么授予软件所申请的所有权限,要么不安装软件。如 果选择安装程序,只要应用程序所申请的权限是当前用户可以满足的,系统就会 根据权限申请自动赋予应用程序相应权限。应用程序在后续的使用过程中,如果 需要某种权限,系统会自动的检测该应用是否有权限进行这个操作。 2.3 Android 系统的安全机制研究 2.3.1 基于 Linux 文件系统权限特性
当一个应用程序以文件的形式存放在系统中时,文件系统通过对该文件设置 读、写和执行权限方式对文件进行保护,对于该文件的权限可以通过在当前文件 夹下的命令行中输入 ll 或 ls -l 来查看,这样的权限机制是通过 Linux 系统来 实现的,这也就是为什么说该文件会被Linux 系统保护的原因。然而,一旦该应 用文件被运行以后,这个应用程序所具有的权限就可能与之前我们所看到的权限 不同,之所以会出现这样的情况,其原因是应用程序在执行以后,其所拥有的权 限是由Android系统特有的权限管理机制来分配的,这个权限和Linux系统所提 供的文件管理权限是两套独立的安全机制。准确的来说,Android系统的文件管 理是在对Linux系统进行继承以后实现的,但是它们的确是针对不同的问题进行 设计的。
Linux系统中提出了用户和用户组的概念,用户是指任何一个可以登录到系
统的账号,而组是指一个或多个用户的集合,Linux 使用 UID(User ID) ,GID (Group ID)来区分用户和用户组。由上文中我们知道,Android系统中的每一 个应用程序被打开时都会相应的创建一个新的进程,而在Linux系统中,会通过 UID,GID,GIDS 来区分不同的进程,从而对进程的一些私有数据和私有内存进 行保护,进程之间共享的程序代码和系统函数库则不会被限制。Android正是利 用了Linux系统的这个安全特性,为系统中运行的每个应用分配不同的UID,用 来隔离不同的应用。而通过用户组的方式,可以同时为某一类用户定义权限,方 便控制和管理。 Android智能手机信息安全研究 12
2.3.2 基于应用层资源访问的权限特性
在系统底层,Android系统利用Linux系统的安全机制来作为其安全防线,
在上层应用部分,Android 结合本身架构特点,使用 Permission 和 Uri 的机制 作为其安全机制。
(1)APK应用程序的文件签名[7]
APK的签名是指应用程序在安装时,系统通过安装包中的证书和签名算法对
安装包的签名进行验证。 安装包中的证书并不能用于决定这个应用是不是合法的
,这种签名机制的作用只是用于保证应用程序的同源性。即应用程序在进行升级 的时候,系统会对新程序进行签名的匹配检测,如果新旧程序中的签名不一致, 则说明这两个程序的来源是不同的,系统将不允许这次升级操作的完成。不仅如 此,程序的签名还跟Android系统的权限控制有关,不同的签名对应着不同的权 限,如果签名不正确,相应的系统权限也就无法获得。这就为程序的后续开发和 升级工作提供了方便,并能对程序开发者提供一定的保护。 (2)基于Linux进程的安全机制[7]
每一个安装在 Android 系统中的应用程序,在安装时都会分配一个唯一的
UID,这个 UID 会对应于 Linux 系统中应用程序运行的进程,不同的 UID 对应不 同的进程,而进程之间的隔离是由Linux实现,从而可以保证上层应用程序之间 的隔离,即应用程序之间默认是不能相互访问的。
同时,Android会使用程序的UID作为标签,为程序分配存储数据,这同样 是基于Linux的文件系统权限机制。同时,在Linux中子进程对父进程只能继承 而不能超越的特点也会相应的应用到Android 应用程序中。这也就意味着,任何 一个应用程序如果启动了子程序,那么这个子程序的权限就不可能超越原程序的 权限。举一个特殊的例子,比如某个应用有权限访问某个文件,但如果这个应用 不是自己发起,而是由另外一个应用调用的,那该应用的对该文件的访问权限就 可能被限制。
(3)自主访问控制[7]
Android系统中的每一个进程都属于一个用户,而由于用户组的存在,这个
进程又可能同时属于一个或多个用户组,因此,为了防止混乱,系统中每个文件
都有一个与之对应的访问权限控制列表,该列表记录了可以访问该文件的权限,Android智能手机信息安全研究 13
其作用是限定用户或组的进程对其进行访问。当有一个进程要访问这个文件时, 系统会首先检查文件的访问权限控制列表,判断当前提出访问请求的程序是否具 有对文件的访问权限,如果没有相应的权限,那么访问的操作将被终止,反之, 则可以正常访问。
自主访问控制有一个明显的缺陷,那就是系统中存在一个拥有最高权限的用 户,即root用户,也就是说,如果一个程序具有root权限,那么这个程序将可 以对任何文件执行任何操作而不会受任何自主访问控制机制的约束。 现在手机系 统越来越复杂,因此系统中会不可避免的会存在一些漏洞,针对这些漏洞,一些 恶意软件可以对系统进行破解,进而获取 root 权限,其肆意窃取或破坏系统数 据的操作将不会受到任何限制。
Google 在对 Android 系统进行版本升级的时候,也随之增加了一些安全机 制。例如Google针对应用市场推出服务Bouncer,Bouncer将对新上架的应用、 已上架应用和开发者账户进行扫描,以探查是否有恶意行为的存在。Google 将 在云端的虚拟Android设备上运行所有软件,并且与已知的恶意行为进行对比。 另外,Google 会分析新的开发者账号,以防止恶意软件开发者的再次出现。但 是这种方法只能保证用户从 Google 的应用市场下载的软件,但如果用户从其他 途径下载的应用,这种方法就无能为力了。
谷歌Android4.0系统中为了防止缓冲区溢出而增加了ASLR(Address space
layout randomization)技术。它通过随机化共享库映射和栈等线性区布局,确
保系统和应用程序的代码每次被加载时不会出现在存储的同一个位置, 从而防止 攻击者定位攻击存储区的代码位置,可以达到阻止溢出攻击的目的。 Android4.2 增加了一项可以比较快速的检测出用户安装的第三方应用中是 否包含有恶意代码的系统级服务。
如果谷歌的服务器认为某个APK没有问题,用户的安装过程可以正常进行; 而如果谷歌服务器认为你正在安装的APK文件有害,它就会阻止你安装这款应用 ;如果谷歌服务器认为你正在安装的应用可能存在风险,系统会对用户发出提醒 ,将安装的选择权交还给用户。
同时,Android4.2 还增加了防吸费特性。如果一款应用在后台偷偷想要发
出短信,Android4.2 系统会向用户进行提醒,然后由用户来选择是否发出这条Android智能手机信息安全研究 14 短信[8] 。
2.4 本章小结
本章节首先对Android系统的分层架构,每层的组成及功能进行分析,其中
包括 Android 系统沿用了 Linux 的部分以及 Android 所特有的部分,并介绍了 Android下应用程序的特征以及APK的结构等。
通过对 Android 系统安全体系的研究,分析了 Android 如何继承和使用了 Linux系统的安全机制,以及在此基础上增加的Android自身的安全机制,并通 过分析指出Android系统安全机制中存在的一些缺陷。最后阐述了Android版本 升级所带来的一些新的安全机制,Android为系统安全做了很多工作,但是这些 依旧并不能非常全面的保护用户的信息安全。 Android智能手机信息安全研究 15
3. Android 平台的手机信息安全的需求分析以及现有的恶 意代码攻击防御手段
3.1 Android 平台的手机信息安全的需求分析
Android平台智能手机的信息安全主要包含两方面的内容,一方面是手机数 据安全,另一方面是手机系统安全。
通过上一章对Android系统的分析我们可以知道,Android系统经过了良好
的设计,通过继承Linux和自身增加的一系列安全措施来保证系统的安全,但是 Android系统同样还存在不少的安全隐患,主要包括以下几个方面: (1)基于平台安全特性分析不够[9]
Android 平台在安全机制是由 Linux 和 Android 本身的安全机制组成,
Android在继承了其底层Linux操作系统的安全机制的基础上,又根据系统的特 点加入了签名机制和权限审核机制等安全措施, 但是对Android平台可能存在的 安全威胁以及平台安全漏洞的分析不够。 (2)特征信息利用不够[9]
这里的特征信息是指通过分析得到的病毒或者恶意软件与正常软件之间存
在的差异信息。利用这些差异信息,我们可以通过比较区分病毒和正常应用程序。 病毒和正常应用程序是存在区别的,病毒之间也可能存在一些冲突,我们需要分
析和提取这些信息,并在实际检测中加以利用。
如果能在Android智能手机中充分利用潜在的特征信息,在系统安全方面将
能取得很好的效果。例如,一个用于播放视频的程序向系统申请了访问通讯录的 权限,我们可以根据这种冲突来推断该应用申请访问通讯录的行为是可疑的,从 而分析这个程序是否已经被感染。再比如动态角度,恶意程序会在后台收集用户 的信息并发送出去,而正常应用则不会有这样的操作,因此,通过对程序后台操 作的监控和分析,一旦发现有应用在后台进行类似操作,我们就可以认为该应用 是可疑的。
(3)行为监控的审计不够[9]
行为监测是指针对恶意行为的特征,对系统中程序的行为进行监控检测的一Android智能手机信息安全研究 16
种方法。与正常的程序不同,大部分的恶意行为是在用户没有发现或者是没有授 权的情况下进行的。行为监控技术通常是通过回调函数,底层函数的拦截调用等 方法实现,并通过一定的行为模式分析进行识别,控制。 3.2 Android 智能手机可能受到的攻击方式
针对其存在的安全隐患,结合现今对移动设备的攻击方式,我们对Android
移动设备的攻击行为包括以下几种方式:基于硬件的攻击,基于Linux内核的攻 击,基于系统核心程序的攻击和基于应用程序的攻击。 (1)基于硬件的攻击[10]
。Android 作为移动设备的操作系统,始终不能脱离
硬件设备而存在。近年来,针对硬件的安全漏洞进行攻击的手段也开始逐渐成为 研究热点。硬件具有通用性且拥有系统最高权限,在产品的使用过程中难以升级 和维护,因此基于硬件的攻击更加难以防御,其危害更大。 (2)基于 Linux 内核的攻击[10]
。Linux 内核的安全性并不是特别强。而实际
上,Linux每年都有近百个漏洞被CVE收录,黑客可以通过攻击内核漏洞,可以 进行提权的操作,进而可以获得系统最高的 root 权限,这也是很多手机 root 工具实现的方式。由于Linux内核具有很高的配置性,而移动设备的硬件资源十 分有限,为了降低内存资源的消耗,往往会禁用一些选项,这其中就可能包括安 全配置选项。
(3)基于系统核心进程的攻击[10]
。系统核心程序包括系统本地库,Dalvik
Java虚拟机和基础的Java类库。系统库主要包括底层函数和复杂函数计算等, 被系统进程或 Dalvik 通过 JNI 调用。这些函数是使用 C/C++编写的,因此缺少 类似java的强制类型安全机制。同时,如果Dalvik进程在通过JNI调用系统函 数是一旦发生错误,就会导致 Dalvik 进程崩溃,从而导致系统内存空间被侵占 或恶意代码被执行。由于核心程序能获得较高权限,且为开源代码,所以更多攻 击者更加倾向于对系统核心进程进行攻击。 (4)基于应用程序的攻击[10]
。应用程序主要是用户自行安装的应用程序。用
户会根据自己的喜好安装应用程序,这些程序的种类和来源多样,所以无法验证 其可靠性,这就使得针对应用程序的攻击变成了最容易实现的攻击手段。在安装
过程中,用户无法辨识恶意程序或是根本没有这种安全意识,而往往选择直接安Android智能手机信息安全研究 17
装应用程序,忽略相关的权限申请要求和安全提示,直接给予其所申明的所有权 限,这将大大弱化应用程序的权限控制。
经过对恶意软件的分析,我们可以了解恶意软件对手机系统的攻击主要包含 以下几种方式:
(1)访问用户的私密信息,并未经用户允许开启手机的网络通信设备,如 GPS网络,蓝牙等,将这些信息直接发送给不法分子。
(2)通过发送定制短信或者电话,或者使用网络自动下载安装用户不需要 的软件,造成用户的话费激增。
(3)开机自启动某些软件,并可能对手机中的文件进行修改和删除等,破 坏手机文件系统,导致手机系统崩溃。
3.3 针对 Android 系统现有的恶意代码检测和防御技术研究
为了有效的防御恶意代码的侵害,首要的工作就是界定恶意代码,检测出恶 意代码,现阶段对恶意代码的检测技术主要是通过基于签名比较和基于行为分析 两种方式实现的。
(1)基于签名的恶意代码静态检测技术[11]
类似于 PC 上的软件签名机制,在手机平台上同样可以使用签名机制作为恶 意软件的防护措施。
利用签名机制,可以通过对已知的恶意软件进行分析,从而提取出该恶意软 件的签名,这个签名就可以作为恶意软件的特征码。在进行软件检测时,将软件 的签名与已知的恶意软件的签名进行比较,如果签名相同,也就意味着被检测软 件中含有恶意软件的特征码,那么这个软件就是危险的。这种通过签名比较的做 法优点是简单,高效,但是缺点是对未知的恶意软件没有检测能力,不仅如此, 如果恶意软件对其本身的特征码进行一定的变换或者伪装,用这种方法也不能做 出正确的判断。
(2)基于行为的恶意代码动态检测技术[11]
基于行为的恶意软件动态检测技术,一般是通过沙箱或者虚拟机等工具,通 过在这些模拟的环境中运行被检测的程序,并对程序的运行进行监控和对程序的
行为进行分析,从而判断该程序是否具有恶意性。动态行为检测方法因为在模拟Android智能手机信息安全研究 18
的环境中对程序进行了的实际运行,因此对程序的判断精确度较高。但是这种方 法的缺点也比较明显,那就是对资源要求较高,建立一个模拟的环境来试运行一 个程序,并对其行为进行分析,需要耗费大量的资源和时间。如何自动模拟运行 待检测程序,并通过分析该程序的行为对其恶意性进行判断,也是动态监测需要 解决的问题。
针对恶意代码的可以采用以下的方式进行防御。 (1)控制权限
恶意代码首先必须具有一定的权限才能达到其恶意操作的目的,同样,如果
一段恶意代码要感染或者破坏其他目标, 那么必须首先要拿到操作该目标的权限
,否则,操作系统将不会允许其执行该操作。
由此可以得出,恶意代码达到其恶意目的的先决条件就是拿到相应的权限。 如果能够有效的控制程序的权限,只授予其完成正常工作的最小权限,那么即使 程序中含有恶意代码,该恶意代码的操作请求也不会被允许。因此,如何限制程 序的权限是该方法的基本思路。 (2)安全域分割
将系统中的程序定义为主体,将系统中保存的文件等信息定义为客体,并根 据系统中程序的重要性等因素对其进行分类,对每一类组成部分定义一个安全级 别,指定相应的安全策略与之对应。这样可以形成一个权限的梯度,而核心域中 的安全等级则是最高的。
不过这种办法只能对恶意软件进行单方向的限制,并且对同一级别的安全域 中存在的恶意软件没有防御措施,因此,要构建一个星型的域结构,所有的域围 绕一个核心域工作,并且这些域中的程序不能进入核心域,只要恶意软件不进入 核心域就是安全的。
另外常用的几种安全防御技术包括认证技术和加密技术[8] 。
认证技术:包括安全套层SSL协议和安全电子交易SET协议。
加密技术:使用AES等对称加密算法,或者使用RSA等非对称加密算法对数 据进行加密,同时可以对加密方法进行一定的简化或者修改,以适应 Android
智能手机的计算能力与存储能力相对较弱的情况。 Android智能手机信息安全研究 19
3.4 本章小结
本章主要分析了除了Android系统自身的安全机制以外,现在比较常用的安
全机制,主要是通过静态比较和动态分析的方式实现对恶意软件的检测,通过权 限控制和安全域分割的方式实现对恶意软件的限制。同时可以使用认证技术,加
密技术,安全防护技术实现对Android手机的无线网络安全的保护和安全加固。 Android智能手机信息安全研究 20
4. Android 智能手机增加安全分区及分区保护措施 4.1 权限控制的重要性和必要性
为了更好的保护系统安全,Android智能终端操作系统限制了用户的权限, 在正常情况下,用户和非系统应用程序只拥有权限等级较低的 user 权限。在 Android系统中,由于用户的权限较低,而用户安装的软件的权限是通过用户的 权限进行分配的,因此用户安装的软件不可能获得更高的权限。但是有一些功能 强大的应用程序为了更大的发挥手机的性能,需要有 root 权限来进行一些涉及 系统底层的操作。为了使软件获得root权限,首先需要用户获得root权限,或 者是直接使用root用户,正是出于这样的需要,市面上才有一些专门的一键root 工具,这个过程也就是我们所说的对手机进行root。
通过对/system/extras/su/su.c 中的源码进行分析,我们发现,普通用户
在提出切换成root用户的请求之后,su首先对提出该切换申请的用户进行了判
断,如果当前用户的 UID 既不是 AID_ROOT 也不是 AID_SHELL,也就是说,当前 的用户既不是 root 也不是 shell,那么该请求就不会被允许,这样就能达到过 滤请求的目的。
在 root 时,普遍的做法是使用修改后的 su 程序代替系统原有的 su,修改
后的su将不进行权限判断,就可以使所有程序都能切换成root,因此用户安装 的程序就有权限执行所有涉及到底层的操作。但是这里还有一个问题,必须有 root 权限才可以替换 su 的程序,因此就需要先想办法获得 root 权限。常用的 办法是,利用某个已知但未修复的系统漏洞,通过运行针对这个漏洞的exploit 程序进行提权,从而获得root的权限,然后替换系统原有的su,这样在下次使 用的时候就可以不进行root操作就可以直接获得root权限。
对手机进行 root 以后,用户和应用程序就可以有权限进行更多的操作,但
与此同时,由于系统的权限机制被打破,用户安装的程序将都能获得root权限。 而用户既无法确保自己安装的软件中是否含有恶意代码,也不能保证第三方开发 者发布的系统升级固件中是否已经被植入恶意软件,不仅如此,第三方开发者发 布的系统固件中往往比官方发布的版本中有更多的安全漏洞,并且可能本身已经Android智能手机信息安全研究 21
植入了恶意代码。更糟糕的是,一旦手机 root 以后,万一在这个手机中安装了 恶意软件,恶意软件就会获得root权限,那么其破坏力和威胁性又会大大增大。 4.2 对加密技术的应用
基于指令系统的加密方法的概念是, 通过制定的一些简单的变化规则对现在 可执行文件中的指令集合进行分组加密,如果想要执行文件,必须先通过合法用 户的身份验证,再使用指定的变化规则对指令集进行反方向操作后才可以运行。 同时结合现有的静态和动态的安全监测机制,对这些操作进行安全分析,以过滤 不安全的操作,减少可能造成的危害。
通过研究发现,很多恶意代码的攻击是指向性的,即当恶意程序开始运行的 时候,就会直接读取通讯录等用户私有信息,或者是通过发送短信息等方式定制 一些付费的业务。这正是利用了Android下的通讯录,短信等存放的位置是固定 的,且这两个文件的访问权限也是开放的。如果要保护好用户的这些私有信息, 就必须对这些文件的文件名进行替换或者是对文件进行加密。往往单纯的替换文 件名的效果并不是十分明显,比较稳妥的办法就是将文件进行加密,在读取的时 候通过一个特别的进程进行解密,这样可以比较有效的防止这两个文件被恶意程 序直接读取。
4.3 安全分区的概念
以往我们提到的权限控制往往都是指软件系统的权限控制,这样的权限控制 方式比较普遍和容易实现,除此之外,还有一种更为直接有效的权限控制方法, 那就是采用硬件的权限控制。因为硬件是软件执行的载体,所以直接在硬件的层 面上划分出权限的等级,进行权限控制,可以达到比较理想的结果。
所谓的安全分区,就是在系统中存在一个可被信任的区域,即这个区域内的 文件和操作都是可以被系统信任的,且这些操作是预先定义好的,不会在后续的 使用中被添加。
具体的做法是,首先在硬件电路中增加一个单独的存贮芯片,这一部分存储 空间作为信任分区,可以对这个分区中的内容进行加密保护,采用特殊加密算法 或者使用一个单独的加解密芯片。另外可以对这个分区中的数据进行的操作也由Android智能手机信息安全研究 22
一些专有的函数来完成,这些函数通过函数接口或进程间通信接收到安全分区以 外的程序发来的数据操作请求,然后结合现在已有的静态和动态的检测方式构建
的安全系统,对这些请求进行判断,如果该请求是由正常程序发来的合理请求, 则操作被允许,专有函数会根据申请的内容直接完成对数据的操作,并将结果反 馈给发出申请的程序,或者将读取到的数据反馈给请求函数。如果安全系统认为 这个操作是不合法的,则该操作将被拒绝。也就是说,如果分区中存储的是用户 的通讯录,短信息等数据,在分区中运行的程序有正常的权限来读取通信录,短 信息等内容,但是分区以外的程序将不能直接读取通信录和短信息,而是需要通 过一个特别的进程来发送读取数据的请求。这也就意味着,当安全分区运行的时 候,安全分区所保护的内容不会直接被访问到,相当于对一些敏感文件增加了一 层保护壳,任何需要读取这些敏感信息的申请都会先经过这层保护壳的审核,如 果通过审核,会有专有的函数对信息进行操作,或者是返回读取的数据。 其余的分区就是普通分区,其中包括了用户自己安装的程序,以及可能存在 的手机第三方的应用,这些程序被认为是“不安全”的程序。普通分区中的内容 在运行的时候只有最低的运行权限,这个分区中程序对系统的操作或者是对通讯 录读取的操作请求会有一个特别的进程接口向安全分区发送请求,而请求是否被 允许,则需要通过之前定义的规则或者是用户的确认,只有通过了确认,才可以 获得读取信息的权限,另外,对系统操作的操作例如挂载分区和擦除系统数据等 ,其权限默认情况下是不会被允许的。这样做的目的就是将用户的私密数据和用 户安装的程序进行隔离,对用户安装的程序的安全权限限制到最低,限制程序中 可能存在的恶意代码对程序的攻击。 Android智能手机信息安全研究 23
行为安全分析 通过
安全程序进行 所请求的操作 Bootloader启动 加载Kernel 非可信任程序 运行
敏感信息操作 请求 处理结果 发送请求 返回数据 拒绝请求 是 否
启动安全分区
图 4-1 安全区的实现流程 实现该功能的要点工作:
为了实现该安全分区功能,首先需要制定默认安全规则或者用户的介入,即 需要判断出什么情况下操作是可以进行的,什么情况下操作申请应该被拒绝。这 方面的工作可以结合现在比较流行的静态和动态的检测方法,对申请操作的程序 进行分析,并结合用户的操作习惯等信息,或者通过云端服务器对该申请操作进
行审核。
另外就是保证可信任分区的安全机制能正常运行,不会被跳过,因此还需要 确保Bootloader的正常运行,因为安全分区是通过Bootloader来加载的,所以 必须保证 Bootloader 的正确性,从而可以确保这一套安全机制可以完整的执行 起来。
4.4 通信中文件的加密保护
在安全区中的文件是受到保护的,当文件被读取后,在数据或者文件的传输
过程中,最好不要使用明文传输的方式,以防止在传输过程中数据被截获,这样Android智能手机信息安全研究 24
就不能起到保护文件的作用。比较稳妥的办法是在传输过程中对传输的数据进行 加密,或者直接传输加密过的数据。鉴于之前的分析我们知道,每个程序都是运 行在一个相对独立的空间中,程序自己内部的数据是受到保护的,所以我们可以 在程序内部进行数据的加解密操作,相比较而言,直接传输加密数据的工作量小 一些,也更安全。
对于加密方式的选择,比较安全的方式是采用非对称加密,即数据读取方先 通过加密算法生成一对加密的密钥,一个公钥(public key)和一个对应的私钥 (private key),数据读取方将读取请求及公钥同时发送给数据存储方,也就是 这里所指的安全区中的数据,数据存储方使用接收到的公钥通过加密算法对数据 进行加密后,反馈给数据读取方,数据读取方得到加密的数据后再使用对应的私 钥对数据进行解密就可以得到源数据。 生成公钥和私钥
可信任程序 安全区中的数据 使用公钥加密数据 使用私钥解密数据 得到源数据 发送公钥 返回加密数据
图4-2 使用非对称加密实现数据安全通讯
在Android系统中,比较简单的实现非对称加密的方法是使用 openssl,在
很多版本中openssl是系统默认安装的程序,即使没有安装,直接拷贝几个库文
件到系统中,配置一下环境变量就可以直接使用了, 以下是一个简单的验证过程。 首先,我们需要使用指令生成一对密钥keypair,并将其中的公钥导入到文 件key.pub中,实际操作如下图所示。 Android智能手机信息安全研究 25
图4-3 生成非对称加密的密钥
生成了密钥以后,我们可以看一下这个公钥和私钥的内容是什么,公钥是要 发送给对方用于加密数据,私钥用于自己解密使用,如下图所示。
图4-4 密钥的内容
现在模拟一下数据存储方,假设我们有一个文件 data.txt,文件内容是我 们输入进去的“Hello World!”,数据存储方在接收到用于加密的公钥 key.pub
后,使用指令将data.txt加密,生成加密后的文件file.enc,使用cat指令读Android智能手机信息安全研究 26
一下加密后的文件,我们可以看到,读出来的内容是乱码,如下图所示。
图4-5使用公钥加密以及加密后的内容
数据接收方在收到加密的 file.enc 后,使用私钥进行解密,得到解密后的 文件decrypt.txt,读一下可以看到源数据“Hello World!”,如下图所示。
图 4-6 使用私钥解密后的内容
由此可以看出,使用openssl可以安全方便的实现数据的加解密,在实际使
用的时候,我们可以提前将要用的指令写入脚本中,在程序中直接调用相关的脚 本即可,因为在用户的实际使用过程中并不会有频繁处理私密数据的操作,并且 这些操作首先要经过现有黑白名单及权限审核等操作,因此,经实际验证,使用 这种方法并不会对系统响应速度有太大的影响。 4.5 对 Bootloader 的保护
首先需要了解的是 Bootloader 的启动过程,系统加电后,先执行一段汇编 代码,进行相应的内部硬件初始化(寄存器,内存等),将第二阶段 C 代码复制 到RAM地址bloc_abs_base,然后跳转到第二阶段开始执行,在第二阶段中,从 汇编代码跳转到 C 语言编写的 main()函数中,继续如下工作,外围硬件初始化 (串口,USB等),加载flash中的kernel等。并根据用户的选择,启动kernel 或者进行其他的操作。
为了保证Bootloader未被破坏,我们需要在每次开机时,启动Bootloader
之前,验证 Bootloader 的正确性,以防止上一次在开机状态下用户或者某些软Android智能手机信息安全研究 27
件对 Bootloader 分区进行了擦除或者重写的操作。因为这样的操作不仅会使安 全分区的功能不能被正常加载,更有可能因为系统的某些参数初始化错误,造成 更为严重的问题。因此系统启动以后,首先启动的不是 Bootloader,而是一个 称之为 Miniloader 的启动代码,这段代码集成在一个不可擦除的 rom 中,在每 次启动常规Bootloader之前运行, 其作用就是验证要启动的Bootloader的正确 性。
如何才能做到正确的验证 Bootloader 的正确性呢?首先,我们需要一个启 动值,这个启动值存放在一个特定的地址中,并且与 Bootloader 密切相关,准 确的来说,就是根据当前使用的 Bootloader 计算得到的。这个值可以简单的使 用Bootloader的crc或者是hash值来代替,并没有特别的算法要求,只是用来 当做校验 Bootloader 的正确性,下文中将全部使用启动值代替。当我们在工厂 第一次升级整个系统的时候,在升级Bootloader的过程中会计算出Bootloader
的启动值,并将这个值存放在一个特殊的 RAM 地址中。每次启动 Bootloader 之 前,我们会再次计算要启动的 Bootloader 的启动值,并从 RAM 的指定位置中将 原有的启动值读取出来,对这两个值进行比较,如果两个值相同,说明 Bootloader 没有被修改,启动操作被允许。如果这两个值不相同,则说明 Bootloader已经被非法改变,则不允许启动。每次系统正常升级Bootloader以
后,需要计算出升级的 Bootloader 的启动值,并将这个值更新到 RAM 中的指定
位置,否则下次系统将不能启动。 Android智能手机信息安全研究 28 RAM中的启动值 Miniloader
计算Bootloader启 动值
校验Bootloader 正确 错误
Bootloader启动 加载安全分区 加载Kernel (普通分区)
提示错误,并进入升 级模式准备升级
图 4-7 校验 Bootloader 的过程
当然,这种做法也是有缺陷的,从理论上来讲,这种做法能保证系统在下次 启动之前,Bootloader 没有被替换,但是其前提是用户或者是第三方的升级软 件在非法升级了 Bootloader 以后没有更新 RAM 指定位置中的启动值,但是如果 用户下载了一个第三方的 Bootloader 并且升级以后更新了系统中的启动值,那 么在当前的机制下,新下载的 Bootloader 依旧是可以被启动的,所以这样做并 不是一个保险的做法。因此,我们需要在这里再增加一个安全机制,还需要增加 一个升级密钥,这个密钥可以和 Miniloader 一样存储在 ROM 中,或者存放在另 外一个不会擦除的区域中,默认情况下只能被写入一次,并且增加写保护,无法 被用户读取和修改。为了增加安全性这个升级密钥可以每台手机不一样,比较简 单的方式就是使用手机的CPU ID,这个ID是全球唯一的,根据一种简单算法将 这个ID转换成升级密钥存贮在手机中。
这个升级密钥的作用就是用来加密要升级的 Bootloader 镜像,在系统启动
Bootloader 的时候使用这个升级密钥对 Bootloader 进行解密,并且在升级Android智能手机信息安全研究 29
Bootloader 的时候验证这个要升级的镜像是否是经过了正确升级密钥的加密。 根据前文已经提到过,系统启动Bootloader的时候,会将Bootloader的启动值 计算出来存储到 RAM 的指定地址中。我们继续沿用这个功能,并且在编译出 Bootloader 镜像的以后,先使用升级密钥对镜像进行加密,然后计算出加密镜 像的启动值,并将加密后的 Bootloader 的启动值使用这个升级密钥通过一种算 法进行加密,加密后的值作为校验值存放到一个文件中,我们将这个文件称之为 校验文件。系统在升级 Bootloader 的时候,会首先从这个校验文件中读取出校 验值,然后将加密后的Bootloader读取到内存中,计算出这个Bootloader的启 动值,读取并使用手机中存储的升级密钥对这个启动值进行加密,当然,这里所 使用的算法和之前的算法是一样的,从而也会得到一个数值,如果计算到的数值 和之前从文件中得到的校验值相同,则说明要升级的 Bootloader 使用的升级密 钥和手机中存储的升级密钥是相同的。正是因为除了手机厂商以外,用户或者第 三方很难知道手机的升级密钥,所以通过手机密钥加密以后就能在很大程度上保
证Bootloader不会被替换,同时,虽然Bootloader的数据被加密,但是系统运 行的时候可以通过手机中的升级密钥进行解密后运行,而不法分子拿到这个加密 的Bootloader却也无法对其进行破解。
同样的道理,在Bootloader加载Kernel之前也可以采用同样的方式来实现 对Kernel的校验,只需要在Bootloader中增加相应的代码即可。
如下图所示,编译出 Bootloader 后对镜像进行加密,并生成升级校验文件 的过程。 Android智能手机信息安全研究 30
使用升级密钥 加密 编译出
Bootloader镜像 得到加密镜像 计算启动值并 写入校验文件 得到校验文件
图4-8 编译 Bootloader 并生成校验文件
由此我们看出,这个过程其实是很简单的,只需要在编译脚本中添加相关的 语句即可实现该功能。
如下图所示,在升级Bootloader时,首先要根据Bootloader的镜像和手机
中已经存储的启动密钥计算出 Bootloader 的校验值,并使用这个校验值与校验 文件中的校验值进行比较,如果相同就意味着启动密钥是相同的,可以正常升级。智能手机信息安全研究 31
计算Bootloader 升级值 校验数据
将Bootloader读 取到内存中 读取升级密钥 并使用密钥加 密升级值 校验文件 读取校验数据 校验数据 校验 相同 不同
写入分区,升 级成功
升级失败,释 放内存
Android 图4-9 升级过程中 Bootloader 的校验 4.6 本章小结
本章首先分析了对应用程序进行权限限制以及对系统数据的操作进行限制
对于保障系统安全的重要性。同时提出了一种基于软件加密和硬件分区的安全区 的概念,该安全区是将硬件分区,将重要的数据储存在安全的硬件分区中,并将 该分区进行加密。
所有对于这个分区中的数据进行操作的申请都将被审查,如果审查通过,会 由分区中的可被信任的程序对数据进行操作,安全分区以外的程序不能对该分区
中的数据进行直接的操作,这部分功能可以通过指令加密技术实现。 Android智能手机信息安全研究 32
为了保护手机不会被轻易的破解,并且保证手机的安全分区功能可以顺利的 加载,提出了加密 Bootloader,并在每次开机和升级的时候验证 Bootloader 的 方式保护 Bootloader,这种方式通过增加一个启动值以及启动密钥的方式,验 证Bootloader是正常的加密的,从而可以保护Bootloader的有效性。 使用同样的方法也可以实现对Kernel的验证,只是需要将验证Bootloader
的功能进行一个扩展, 将这部分代码移植到Bootloader中用于验证Kernel并稍 加修改即可实现,这里将不再赘述。 Android智能手机信息安全研究 33
5. 一种基于 Android 智能手机的安全升级策略
随着智能手机的迅速发展,Android智能手机的市场占有率不断扩大,越来
越多的用户使用Android智能手机,很多智能手机爱好者和发烧友也对手机系统 升级情有独钟,他们总是希望体验最新版本的 Android系统,与此同时,一个比 较严重的问题也摆在用户面前,即怎样才能避免把手机刷成“板砖”,本章将从 手机开发者的角度提出一种手机安全升级的办法,可以有效的保障用户的刷机安 全。
现在很多手机进行固件升级的时候,需要在电脑上安装一个官方的客户端, 并且需要连接网络。在升级前,需要将手机进行一定的操作使其进入下载模式, 打开 PC 客户端然后将手机通过 USB 与电脑连接,并且要求在升级的过程中不能 断开手机与电脑的连接,同时网络不能被中断,因为升级所需要的升级包是客户 端会从网络上下载的,在下载升级文件到本地后会开始对手机的升级过程,三星 ,摩托罗拉等品牌的手机都有类似的升级方式。
这种升级方式的好处是可以在一定程度上确保升级的安全,因为整个升级的 过程都有官方客户端的参与,客户端可以保证升级内容以及升级过程的完整和安 全,但是其缺点也非常明显,那就是对升级的条件要求比较高,而且需要用户的 操作也比较多。如果在升级过程中手机意外断开连接或者是网络连接失败,就会 导致手机不能正常升级和使用,不仅如此,用户一旦有错误的操作也会影响升级 的过程。所以比较理想的升级方式是,过程简单方便,不需要用户有过多参与的 升级方式,而且有多重保护措施确保升级的正确性和完整性,下文将提出一种升 级方法供大家参考。
这里,我们不采用在线下载升级包的方法,而是事前将升级包下载到 TF 卡 中,以防止出现网络不稳定的情况。手机升级的程序也是预先保存在手机中,而 不是需要用户单独下载客户端,尽可能的减少用户的操作。 5.1 升级操作的安全
用户升级操作的步骤要设计的简单,尽量减少用户的工作量,如果步骤很复
杂,可能会因为用户忘记了其中的一步而导致升级的失败。用户需要将装有升级Android智能手机信息安全研究 34
文件的 TF 卡插入到手机中,我们选择在关机情况下通过组合键的方式进入升级 模式,例如,可以在关机情况下,使用同时按下音量键和电源键一定时间的方式 进入升级模式。只需要在开机条件的判断增加这样一个分支,一旦在开机过程中 检测到所有的按键被按下就可以自动进入升级模式,当然,如果手机没有实体按 键,则需要使用其他的办法进入升级模式,但是设计的理念就是操作要简单,方 便用户使用。
进入升级模式后,手机自动检测是否有升级文件,如果检测到升级文件将自 动进入升级,如果没有找到升级文件则会给用户相应提示。开始升级操作之后, 在升级完成以前不需要用户做任何的操作,手机可以自动完成升级。在升级完成 之后反馈给用户升级的结果,并自动重启或者提示用户重启等。 5.2 升级内容的安全
在升级的时候,需要使用官方发布的升级包,手机应该可以识别出使用的升 级包是不是官方的版本,即要求升级包中有相应的版本标识位。如果使用的升级 包不是官方的版本,手机将会提示用户升级的风险,如果用户还是选择升级,则 会有选择的进行升级。所谓有选择的升级是指,不能升级手机 Bootloader 和 Kernel 的内容,尤其要注意的是不能升级 Bootloader,因为如果升级包是非官 方的版本,升级后的 Bootloader 可能不能正常使用,一旦升级了不能使用的 Bootloader,那么手机就100%会成“板砖”,因此,在官方发布的升级包中,产 品标识非常重要。
对于非官方的版本,不升级Bootloader 和Kernel可以保证手机下载了错误
的升级版后还可以进行再一次升级来进行补救,同时还可以有效的界定产品质量 问题和用户操作问题导致的产品不能正常使用。如果是官方的版本,则可以升级 Bootloader 和 Kernel,但是系统中原有的 Bootloader 和 Kernel 会在手机中做 一个备份,做强制恢复使用。
需要升级的内容可能是由多个镜像文件组成,最好将要升级的镜像制作成一 个压缩包,在防止拷贝遗漏的同时还能减少校验的次数,提高升级的效率。升级 包可以使用一种或几种对称加密的方式进行加密,手机升级时会对升级包进行校
验,如果校验失败,则不升级该升级包,与此同时,升级包中的每一个镜像也有Android智能手机信息安全研究 35
自己的校验值,例如比较简单的CRC校验,升级包的结构可以参照下图所示。 升级包结构 Bootloader 校验文件 。。。 Kernel
产品,版本标识 下载配置文件 升级包验证文件
图 5-1 软件升级包的结构
升级包结构:表明了该升级包是由哪些镜像组成,旨在指示出每一个镜像在 升级包中的起止地址等信息。
产品,版本标识:标示这次发布的版本号,用以区分手机中已有的版本。在 版本管理中,可以允许手机升级新版本,或者在一定的版本范围内升级比手机旧 的版本。同时,可以通过这个版本标识来界定硬件版本,因为随着生产,可能会 对硬件有比较大的改动,这个时候适用于旧版硬件的软件在新版硬件上可能就无 法正常使用了,因此使用这个版本号可以有效的区分硬件版本,防止软件升级后 造成不能使用的情况。例如,如果现在系统中的版本为 1.1x,在升级前,系统 检测到要升级的版本是 1.2x,那么手机就会自动开始升级的过程,但如果系统 检测到要升级的版本是 2.1x,这表明要升级的软件适用于更高一级的硬件版本 ,这个时候,手机将不会进行升级,并对用户做出一定的提示。如果手机中的版 本和升级包中要升级的版本是一样的,系统也会提示用户,并由用户选择是否进 行升级,如果用户选择升级,该升级操作就相当于恢复出厂设置。
下载配置文件:该配置文件中包含有这一次发布的升级包中哪些镜像是需要 升级的,哪些镜像不需要升级,对于需要升级的镜像,在配置文件中还包含有该 镜像的CRC校验值,用以在升级的过程中校验升级包中的文件和实际下载到内存 中的文件是否相同。 Android智能手机信息安全研究 36
Bootloader = kernel_crc System = 。。。
sys_crc = bl_crc = Kernel =
图 5-2 下载配置文件的结构
如上图所示,在下载配置文件中会将所有可能会下载的分区列举出来,如果 有分区需要下载只需要在对应的分区名后边标注为1,同时将该分区对应镜像的 CRC校验值计算出来填写上即可。
升级包的校验码:用来校验整个升级包是否正确的校验码,用于验证这个升 级包是否正确。由于整个升级包可能比较大,可能手机无法申请足够大的内存空 间将整个升级包都下载到内存中,因此在校验升级包时,可以采用读取几个位置 的数据,然后对读取的数据进行计算的方式。例如,可以使用升级包的首字节, 以及之后每隔一定的大小选取一个字节,最终计算出一个校验值作为这个压缩包 的最后一个字节的方式作为验证这个压缩包是否完整。 5.3 升级过程的安全
在手机升级过程中,如果出现手机电池电量不能支撑手机完成升级的情况, 同样会导致升级的失败,为了防止这种情况出现,需要在进入升级模式之前检测 手机电池的电量,如果电量少于一定的值,需要提示用户电池电量过低,将不能 进行手机,或者是提醒用户插上充电器并在升级过程中不要断开充电器,之后再 进入升级模式。但是由于充电线路可能会因为种种原因在充电时断开,所以我们 比较倾向于使用电池中的电量进行升级。 Android智能手机信息安全研究
37
图5-3 电池电量低的提示界面
手机进入升级模式以后,将自动开始升级的过程,在这个过程中不需要用户
做多余的操作,但是也必须要保证用户不会进行误操作从而打断升级的过程。 Android智能手机信息安全研究 38
图5-4 升级过程及升级成功后的提醒 5.4 升级过程的提示
使用一个进度条显示下载的整个过程,例如可以将进度条进行等分,根据升 级包的大小和等分的份数确定出每一小格对应的大小,每升级一定的大小后,进 度条将前进一格的距离,由于手机使用T卡文件系统读取文件的速度和将内容写 入到手机分区的时间基本是固定的,所以这样可以使进度条在升级的过程中匀速 的前进,不仅可以让用户直观的感受到升级的过程,也有比较好的视觉效果。 用户通过组合键进入下载模式或是上一次下载被中断重新进入下载模式,这 时候 Bootloader 启动,检查手机电池电量是否可以满足升级的要求,检查 TF 卡中是否有需要升级的升级包,如果升级条件都满足,则读取 T卡中的升级包, 并完成对升级包的校验,主要对升级包进行解密,读取升级包中的升级版本号,
与手机中的型号等进行对比,确认是可用的官方升级包。根据升级包中的结构表Android智能手机信息安全研究 39
,分块读取分区镜像,根据配置文件中镜像的CRC值对镜像进行校验并判断镜像 与分区的大小,直到整个升级包中的镜像全部校验完成后,然后开始将镜像内容 写入到手机中。完成以上步骤后,提示用户升级完成,否则将提示用户相应的错 误,下图是完整的升级流程。 进入升级模式 提示用户升级完成 满足 正确 失败 不满足 不正确
提示用户没有镜像或是电 池电量不足,升级失败 手机正常开机
提示用户升级包错误,不 能使用 读取升级包 将内容写入分 区
检查升级 条件 完成
校验升级 包
检查下载 完成标识
图 5-5 完整的升级流程
同时,在手机进入到升级模式以后,我们会将CPU的某一个标示位由0置为 1,表示现在手机处于升级状态,当手机正常完成升级后,将这个标示位重新置
回 0,。这样可以防止升级过程意外中止,手机关机,导致手机没有正常完成升Android智能手机信息安全研究 40
级的过程,下次无法正常开机等问题。手机开机时检测到该标示位为1后,会自 动完成之前的升级操作。 5.5 本章小结
本章所提出了一种离线升级方式,通过验证升级文件,保证所升级的内容是 正确的;通过监督升级过程,保证升级的完整性;通过增加过程中和升级完成后 对用户的提醒,保证用户的操作不会干扰升级过程。这种方式比较简单实用,而 且具有比较高的安全性。 Android智能手机信息安全研究 41
6. 总结与展望
本文分析和总结了Android智能手机存在的信息安全问题,并指出Android
智能手机信息安全问题的重要性。以解决Android智能手机的信息安全问题为目 的分析了Android系统的架构和Android系统自身的安全体系,以及现阶段基于 Android系统的一些主流的安全防御措施。 在此基础上, 进行了一些针对Android 智能手机的安全研究,其中包括:
通过硬件存储的分离,相当于重新挂载一个新的硬件分区,也就是安全区, 将用户的一些私密信息存储到该安全区中,并通过软件加密的方式来保护安全区 中的数据。增加可信任程序的概念,对于涉及这些安全区中数据的操作目的必须 经过检测和审查,之后通过安全区中的可信任程序完成对数据的操作。 为了保证手机能正常启动,不会轻易被破解,并且能够正常的加载安全区, 提出了用于验证 Bootloader 的启动值概念,这个启动值用于验证 Bootloader 是否是正确的,没有被替换的,通过每次开机之前对 Bootloader 的验证实现该 功能。为了保证 Bootloader 升级的正确性,增加一个启动密钥,该密钥的作用 就是用于加密Bootloader,并在升级时验证要升级的Bootloader和系统中已有 的 Bootloader 是否是经过相同的启动密钥加密的,从而可以保证 Bootloader 在升级的过程中不会被恶意替换掉,防止系统被破解。
提出一种简单易行的手机离线升级方式, 用户可以使用离线的固件升级文件 ,在升级过程中通过验证升级文件,监控完整的升级过程,并给用户一定的提示 ,使用户安全便捷的完成手机的升级操作。
随着手机的硬件功能越来越强劲,Android智能手机的系统不断升级,在可
以完成更多的操作的同时也越来越复杂,不可避免的就会面临更多的安全问题。 本文提出了一些保障Android智能手机信息安全的方法,但是也并不完善。未来 Android智能手机的安全防御措施可能会向以下方向进一步发展:
(1)修复系统漏洞,并进一步加强权限管理。Android 系统本身就有很多
漏洞,但是现在并没有像windows系统一样会不断的发布系统漏洞补丁,只是在 系统版本升级的时候才会有一些修补漏洞的措施,因此,一旦 Android系统的一
些漏洞被发现,就可能会长时间的被黑客所利用。另外,Android系统的权限管Android智能手机信息安全研究 42
理是相对比较弱的,特别是对于root权限的管理,现在市面上有很多一键root 工具,就是针对 Android 智能手机的 root 权限提升,用户轻轻松松就可以实现 手机的破解,获得root权限,由此可见,加强权限管理,特别是root权限的管 理势在必行。
(2)电话本,短信等隐私信息的保护。由于手机的特殊性,在手机中会有
大量的用户私密信息存在,而在Android机制下,这些共享信息可以被所有的应 用程序申请权限访问,因此,用户信息泄漏的威胁会更大。手机平台不同于 PC ,应该更注重保护用户的隐私数据安全。
(3)由于 Android 智能手机硬件和软件的发展,手机的数据处理能力越来 越强,可以支持更多的恶意软件检测手段,将手机安全性进一步提高。 安全的道路是没有尽头的,希望本文能起到抛砖引玉的作用,让 Android 智能手机的信息安全有进一步的提高。 Android智能手机信息安全研究 43
参考文献:
[1] 李寅. 基于 Android 平台的恶意代码行为分析研究:[硕士学位论文]. 成都:电子科技 大学,2012年 3月. 14~19
[2] 左玲. 基于 Android 恶意软件检测系统的设计与实现:[硕士学位论文]. 成都:电子科 技大学,2012 年 3月. 20~26
[3] 凡里维. Android 平台手机防盗系统的设计与实现:[硕士学位论文]. 大连:大连理工 大学,2012年6月. 42~54
[4] 张敬文. 手机安全终端的设计与实现:[硕士学位论文]. 北京:北京邮电大学,2008 年7月. 12~26
[5] 宋杰,党李成. Android OS手机平台的安全机制分析和应用研究, 计算机技术与发展 第 20期, 2010年6 月. 152~154
[6] 马越. Android 的框架和应用:[硕士学位论文]. 北京:中国地质大学,2008 年 5 月. 11~17
[7] 李佳. Android 平台恶意软件检测评估技术研究:[硕士学位论文]. 北京:北京邮电大 学,2012 年1月. 7~15
[8] 腾讯数码. Android 4.2 系统全面解析.腾讯数码,2012年 10月.
[9] 刘泽衡. 基于 Android 智能手机的安全检测系统的研究与实现:[硕士学位论文]. 哈尔 滨:哈尔滨工业大学,2011 年 6月. 2~6
[10] 符易阳,周丹平. Android 安全机制分析, 第 26 次全国计算机安全学术交流会论文集,
2011 年第9期. 23~26
[11] 路程. Android平台恶意软件检测系统的设计与实现:[硕士学位论文]. 北京:北京邮 电大学,2012 年 1 月. 7~10
[12] Enck W, OngTang M, and McDaniel P. Understanding Adnroid Security[J]. IEEE Security and Privacy, 2009-7. 1~10
[13] Burns J. Developing Secure Moble Applications for Android[R]. Technical Report,
iSEC, 2008. 1~7
[14] KatysovasT.Afirstlook atGoogleAndroid[M] Free University of Bohano,2008:12—26. 2~6 [15] MeierR.ProfessionalAndroidApplication[M] wiIey John& Sons,Incorporated,2008. 2~3 [16] 陈平辉. 智能手机终端安全机制的研究与实践:[硕士学位论文]. 北京:北京邮电大 学,2010 年1月. 19~25
[17] 高焕堂. Google Android 应用框架原理与程序设36 技[M].台北,2008:318-322. 1~7 [18] 杨建强. 手机恶意软件潜在威胁研究, 计算机时代 第10 期, 2011年 10月. 2~4
[19] Faisal Askari,Dennis Bailey. An App to Simplify Security for Android Mobile Phone Users, INFS 612 Principles and Practices of Communication Networks, 2011 年 7 月. 2~4
[20] 廖明华,郑力明. Android安全机制分析与解决方案初探, 科学技术与工程 第 11 卷 第Android智能手机信息安全研究 44
26期, 2011年9月. 1~3
[21] 梁洪亮. 恶意软件及分析, 保密科学技术, 2010年11月. 1~3
[22] 童振飞,杨庚. Android平台恶意软件的静态行为检测, 江苏电信, 2011年2 月. 2~5 [23] 乜聚虎,周学海. Android安全加固技术, 计算机系统应用, 2011年第 20卷. 1~3
[24] 刘昌平,王光卫. Andrroid手机的轻量级访问控制, 计算机应用研究, 2010 年7 月. 1~4 [25] 周忠军,苏红旗. Android 智能手机入侵检测系统设计, 科技资讯, 2012 年 第 18 期. 1~3
[26] 彭国军,邵玉如. 移动智能终端安全威胁分析与防护研究, 技术研究, 2012 年第一期. 2~3
[27] Haseman,Chris. Android Esseenttials.Springer-Verlag.New York Inc,2008. 1~3 [28] Frank Ableson. Unlocking Android[M]. Manning Publications, 2009.04. 2~4
[29] J.F. DiMarzio. Android A Programmer’s Guide[M]. McGraw-Hill Osbome Media, 2008.07. 1~4
[30] 卢军. 内核分析与操作系统设计[M]. 清华大学出版社, 2004. 22~35
[31] 李宗恒,李俭伟. 主要智能手机操作系统发展现状及前景展望. 终端移动, 2009. 12~15
[32] 温敏,艾丽蓉,王志国. Android智能手机系统中文件实时监控的研究与实现. 科学技术 与工程, Vol.9No.7.2009. 1716~1719
[33] 段玉龙,李舟军,张钟斌. 基于沙盒与仿真技术的可执行程序恶意代码检测. 计算机科 学, Vol.35No.11.2008. 36~38
[34] 李舒亮,习军. 基于 Linux 的数据安全传输的研究. 微计算机信息, 2008. 17~21
Android智能手机信息安全研究 45
致 谢
这篇论文是在导师殷波老师的悉心指导下完成的。殷老师治学严谨,为人
和善,平易近人,在研究生期间,殷老师在学业,工作和生活上给了我大量的 支持和帮助,每次和老师交流都能感受到老师严谨认真的学术研究态度以及发 自内心的对学生的无私关怀,在此向殷老师致以深深的谢意。
在这里我还要特别感谢养育我的父母,感谢你们对我的养育之恩,以及一
直以来对我的关心和支持,还有支持我的同事和朋友们,你们的帮助和鼓励给 了我不断前进的精神动力。
最后,向所有关心和帮助过我的人表示衷心的感谢! Android智能手机信息安全研究 46
个人简历、在学期间发表的学术论文与研究成果 个人简历
1986 年 11 月 2 日出生于山东省胶州市(县)。
2005年9月考入西安电子科技大学大学电子工程学院电子信息工程专 业,2009 年 7 月本科毕业并获得工学学士学位。
2011年5月考入中国海洋大学信息学院计算机技术专业攻读在职研究 生学位至今。 发表的学术论文
[1] 王鹏程. Android系统安全机制研究, 电子制作, 2013年, 227 期:96
因篇幅问题不能全部显示,请点此查看更多更全内容