摘要
随着移动互联网的发展,手机不再是传统意义上语音通话的工具。特别是随着全触屏智能手机的诞生,手机已成为人们生活中必不可少的工具。Android 系统是开放性的平台,无数优秀的开发者研发出各种各样的应用,极大的方便了人们的生活,但随着技术的发展盗版,重打包现象层数不穷。这不但威胁着用户的隐私信息,也使得开发者的知识产权受到侵害,最终将成为移动信息技术发展的障碍。
本文在对当前主要加固方法和文档自动识别技术研究分析的基础上,提出一种基于关键词的自动高效的 APP 安全加固方法。该方法将自动地识别 APP 说明文档中的关键词,再由关键词来确定 APP 加固的安全需求,从而给出一高效的组合安全加固方案,进而实现对 APP 的具体安全加固。
本文主要工作如下:
(1) 针对 APP 遭受的不同攻击,分析其对应的加固技术,在保证 APP 运行效率的前提下,以加固后 APP 安全性高为目标,对加固技术进行筛选归纳,给出能覆盖主要攻击的加固技术最小集。
(2) APP 的说明文档中包含着丰富的信息,其中的关键词能反映出该 APP 的加固需求,本文则将关键词作为纽带,连接攻击与对应的加固技术,提出一种基于 APP 说明文档关键词提取的 Android 软件加固方法。该方法主要包括关键词的提取和加固方案的确定。
(3) 通过对常见关键词提取算法的研究,采用候选词权重排序和最小均方误差(LMS)训练自学习的方法,实现适合对 APP 说明文档关键词的提取算法。在预先建立的关键词与加固技术关联基础上,通过关键词确定任一 APP 的加固方案。
(4) 然后,使用 Java 语言在 Eclipse 开发平台上编程实现关键词提取算法,其中包括 N-最短路径分词,候选词权重计算和排序,以及 LMS 自学习训练几个关键算法。最后介绍对 APP 具体加固的实现过程。
(5) 最后从 APP 的安全性、性能开销等方面对系统进行测试分析。实验结果表明,该系统能在增加可接受范围内的空间和时间开销的情况下,达到了有效保护 APP 的目的。
关键词:安卓应用;文档识别;关键词;权重排序;安全加固
ABSTRACT
With the development of mobile Internet, mobile phone is no longer the traditional means of voice calls. Especially with the advent of all touch screen smart phones, mobile phones have become an indispensable tool in people's lives. Android system is an open platform, countless outstanding developers to develop a wide range of applications, a great convenience to people's lives, but with the development of technology piracy, the phenomenon is not poor packaging. This is not only a threat to the user's privacy information, but also makes the developer's intellectual property rights infringement, will eventually become an obstacle to the development of mobile information technology.
This paper is based on the analysis of current main reinforcement methods and automatic document recognition technology, an automatic and efficient method of safety reinforcement based on keyword is proposed. The method will automatically identify the keywords in the APP specification document, and then determine the security requirements of the APP reinforcement by the keyword, thus giving an efficient combination of security reinforcement scheme, and then to achieve the specific security of the APP reinforcement.
The main work of this paper is as follows:
(1) According to the different attacks suffered by APP, the corresponding reinforcement technology is analyzed. Under the premise of ensuring the efficiency of APP operation, the reinforcement technology is summarized and the main attack is given. The minimum set of reinforcement techniques.
(2) APP's documentation contains a wealth of information, which can reflect the reinforcement requirements of the APP, this article will be keywords as a link, the connection attack and the corresponding reinforcement technology, put forward a document based on APP Keyword extraction Android software reinforcement method. The method mainly includes the extraction of key words and the determination of reinforcement scheme.
(3) Through the study of the common keyword extraction algorithm, the candidate word weighting and the least mean square error (LMS) training self-learning method are used to realize the algorithm of extracting the keywords of APP. On the basis of pre-established keyword and reinforcement technology, the reinforcement scheme of any APP is determined by keyword.
(4) Then, we use the Java language to implement the keyword extraction algorithm on the Eclipse development platform, including the N-shortest path word segmentation, the candidate word weight calculation and sorting, and the LMS self-learning training algorithm. Finally, the implementation of specific reinforcement of APP is introduced. (5) Finally, from the APP's security, performance overhead and other aspects of the system testing and analysis. Experimental results show that the system can increase the acceptable range of space and time overhead, to achieve the purpose of effective protection of APP.
Key words: Android applications; document recognition; keywords; weight sorting; security reinforcement
Android 是建立在 Linux 内核基础上的操作系统,是为智能手机、智能电视等移动设备量身打造的操作系统[1]。Android 具有可移植性和开放性的特点,且允许手机厂商根据自身需要对 Android 系统进行改良,从 2008 年 9 月 Google 发布 Android 1.0 版本到 2016 年 5 月发布 Android 7.0 版本,在短短 8 年的时间内,Android 以其强大的优势迅速占领市场。根据 Strategy Analytics 公司近期对智能手机市场占有率的调查显示[2],在 2016 年上半年,Android 操作系统占智能手机的市场份额的 85%,领先于微软的 Windows Phone 和苹果的 iOS。伴随Android 市场的不断繁荣,大量开发者投身其中,使得基于 Android 系统的 APP数量快速增长。AppFigures 平台发布的最新数据显示[3],截止目前,Android 应用软件的总数已达 180 万个。
随着互联网+模式的兴起,Android 软件已经成为人们日常生活的重要组成部分,成为推动科技发展的重要载体,也因此成为攻击者恶意攻击的目标。目前,国内存在大量的 Android 软件市场,软件市场管理不规范和审核不透明的现象频发,导致盗版 APP、恶意 APP 猖獗,普通用户难以区分软件是否为恶意软件。若用户安装到恶意软件,轻则会被广告等垃圾信息骚扰,重则会导致账号被盗、流量损失、恶意扣费等安全危害。
在 2016 年下半年 360 加固保发布了最新的 Android 软件盗版调研报告,报告显示,10305 款正版 APP 对应的盗版数量高达 954986 个,其中软件类盗版占比 83%、游戏类占比 17%,平均起来每个正版的 APP 有 92.7 个盗版,其中软件类APP 平均每个对应 100.6 个盗版和 1.9 个盗版签名,游戏类 APP 平均每个对应66.4 个盗版和 1.1 个盗版签名[4]。对 APP 进行加固,能较好的提高应用软件的安全性,防范来自恶意攻击者的威胁,能够有效保护开发者和用户的合法权益。
自 Google 公司推出 Android 系统,其开源性吸引了很多安全研究人员的关注。各种基于 Android 平台和软件的安全技术、原理被研究人员提出,有些技术是为了提高应用软件的安全性,有些技术是为了增强 Android 系统的安全性,随着加固技术的发展,Android 软件的安全性也在不断上升。当前,针对 Android系统和软件安全性的研究越来越受到科研人员的重视,其安全保护方法主要从以下几个方面入手:
2012 年 J.H.Noh 在 Android 保护系统设计一文中设计一个基于非对称密码机制的应用保护方法[5]。在该研究中,应用的安全性由非对称加密技术来保证。用户首先在应用市场进行注册,系统会将用户的公钥存储起来,当用户在该应用软件市场下载 APP 时,系统会使用用户的公钥对 APP 进行加密,然后把加密后的APP 供用户下载;当 APP 下载后,用户若想安装,必须首先用本人的私钥对 APP进行解密。但该系统存在明显的设计缺陷,若用户将 APP 解密后就可以自行发布应用,此时 APP 若被恶意的用户下载将直接导致 APP 泄露,并且从该系统下载APP 要解密之后才能用,操作繁琐,同时应用商店的设计也相对复杂,很难适应高速发展的应用市场。
2012 年 P. Schulz 在 Android 源代码防护一文中提出一种基于代码混淆的加固方法[6],该方法主要对字符串和 Dex 文件进行混淆。对字符串混淆使用可逆加密的形式实现,在用到该字符串时再进行解密。在 Dex 中嵌入无关指令进行混淆,混淆后将 Dex 反编译后无法得出肉眼可识别的源码。虽然该方法对保护源码有一定的效果,但依然存在很多不足之处。破解者可使用 Dex 文件格式修改工具删除混淆时嵌入的无关指令,即可将 Dex 文件反编译出可阅读的源码。
2014 年 C.Ren,K.Chen 和 P.Liu 提出了一种基于动态软件水印技术的加固方法[7],该技术能够实时地在手机上检测 APP 是否被重打包。该技术比传统水印技术的强大之处在于,它在不隐藏自身的前提下,依然有很强的抗攻击能力。在不依靠机密的水印识别器的前提下,APP 自身就可验证和恢复软件水印。该技术实现时需 APP 本身的代码配合,若破解者把软件水印代码删除,将使得 APP 本身因缺失代码而无法正常安装和运行。若攻击者采用动态攻击的方式破解 APP,因软件水印代码将源代码覆盖,若无法将所有水印块都移出,则 APP 依然无法绕开重打包的检测。虽然本技术能很好检测重打包攻击,但它主要在 APP 的编译阶段起作用,同时对 APP 自身源码的保护力尚待加强。
2014 年 T.Petsas 和 G.Voyatzis 在 Android 动态调试防御一文中给出一种Android 软件对自己运行环境进行检测的方法[8]。该方法根据指令的执行结果分析当前 APP 所处的运行环境。该方法能有效的识别出 Android 集成开发工具Eclipse 内嵌的 QEMU 虚拟机,但对当前比较流行的 X86Android 模拟器,检测效果较差。
2015 年史成洁在 Android 平台应用软件保护技术的研究与实现中提出对 Dex加壳的加固方法[9]。该方法首先用白盒加密技术对 Dex 加密,然后在运行时程序解密 Dex 并将其动态加载入内存,并且提出基于 ptrace 的反调试技术抵御动态调试攻击。该方法能抵御攻击者对 APP 本身的恶意纂改,但也存在缺陷,攻击者能够采用修改源码的方式,绕过反调试检测,从而轻松地获得原始 Dex 文件。
2016 年文伟平、张汉、曹向磊在基于 Android 可执行文件重组的混淆加固方法一文中提出采用混淆源码中方法名和变量名的形式实现混淆,在对 APP 运行效率影响不大的情况下,成功完成了对 Dex 文件的加固保护[10]x。但该方案仅能抵御静态攻击如逆向分析等,无法对动态调试攻击进行防御。若想进一步提高安全加固效果,则应该综合其他加固技术共同实现对 APP 的加固。
中文文本处理器
最短路劲分词器
碎片化加壳实现框架图
APP 加固前后体积变化
APP 加固前后启动时间变化
目录
第一章 绪论
1.1 研究背景
1.2 研究现状
1.3 研究目标及章节安排
第二章 攻击及其 APP 加固技术的分析
2.1 Android 系统介绍
2.1.1 Android 系统架构
2.1.2 Android 系统的安全机制
2.2 APP 面临的安全威胁
2.3 APP 安全加固技术分析
2.3.1 安全加固技术
2.3.2 加固技术最小集的确定
2.4 本章小结
第三章 APP 加固方法的分析
3.1 现有加固方法的分析
3.1.1 加固方法
3.1.2 加固方法的分析
3.2 基于 APP 说明文档关键词提取的安全加固方法
3.2.1 文档关键词性质分析
3.2.2 APP 说明文档关键词与攻击及加固需求的关系
3.2.3 关键词与加固技术对应表的建立
3.2.4 基于关键词的加固方法及分析
3.3 本章小结
第四章 APP 安全加固系统的设计
4.1 系统整体架构设计
4.1.1 系统整体架构
4.1.2 系统工作流程
4.2 关键词提取算法设计
4.2.1 关键词提取分析
4.2.2 提取算法的设计
4.2.3 分词预处理
4.2.4 关键词提取
4.3 安全加固系统的详细设计
4.3.1 APP 加固技术及强度的确定
4.3.2 APP 加固流程详细设计
4.4 本章小结
第五章 APP 安全加固系统的实现
5.1 关键词提取算法的实现
5.1.1 分词的实现
5.1.2 词表过滤的实现
5.1.3 候选词权重计算的实现
5.1.4 最小均方误差(LMS)训练法的实现
5.2 由关键词确定安全加固方案实例
5.2.1 关键词提取及算法验证
5.2.2 安全加固方案的确定
5.3 安全加固方案的实现
5.4 本章小结
第六章 系统测试与分析
6.1 系统测试准备
6.1.1 系统测试环境
6.1.2 测试项目
6.2 加固性能对比测试
6.2.1 运行正确性测试
6.2.2 抗破解能力测试
6.2.3 加固前后大小和执行效率测试
6.2.4 综合评价
6.3 本章小结
第七章 总结与展望
7.1 总结
7.2 展望
参考文献
致谢
(如您需要查看本篇毕业设计全文,请您联系客服索取)