基于安卓系统的移动应用程序安全加固系统的设计

时间:2022-10-29 10:41:24

基于安卓系统的移动应用程序安全加固系统的设计

摘要: 随着时代的发展,互联网移动技术不断进步,智能移动终端也在日益普及,与之密不可分的移动应用的数量也得到了前所未有的增长。由于安卓系统低成本、开放性等特点,大量的开发者进入并且开发出了各式各样的移动应用程序。但其带来的问题也接踵而至:盗版、重打包等等。这类隐患不仅损害了开发者的利益,也威胁到了用户的财产、隐私、信息等方面的安全问题,更是不利于互联网的可持续发展。因此,设计基于安卓系统的移动应用程序安全加固系统则显得尤为必要。

关键词:安卓系统 移动应用程序 安全隐患 加固系统

中图分类号:TP311.5 文献标识码:A 文章编号:1007-9416(2016)06-0201-01

1 前言

根据调查,目前市场上的智能操作系统主要有 IOS、Android、Windows Phone等。其中,由于安卓系统有着开放性较高等多个优势,从而被广大开发商所青睐,占有最大的市场份额。但是也因为安卓系统兼具兼具开放性与灵活性,基于安卓系统开发的病毒、木马、恶意软件等应用程序层出不穷,从而导致用户隐私被非法窃取、财产被恶意转移、电脑系统被破坏等问题的产生。另一方面,由于安卓系统程序应用的缺乏严格的软件审核机制,并且相关法律规定的监管也不到位,导致安卓系统的移动应用程序安全受到了极大的威胁。

2 安卓系统应用安全加固方案设计

2.1 加固方式归纳

通过制定访问控制规则与框架,以修改安卓系统内核方式实现对应用程序实施强制访问控制;基于UPX加壳技术的代码混淆机制,降低反编译后代码可读;通过安全加载机制,将核心代码转为代码,从而提升应用整体破解难度;配合平台通信,在应用内集成安全组件,将敏感信息隔离于服务端,防止因代码泄露带来的信息风险[1]。

2.2 设计原则

为了向开发者提供易于理解和操作的安卓系统应用安全加固方案,保护移动应用程序不受破坏,避免用户利益受损,遵守以下设计原则:降低开发者额外操作同时,保证原应用功能可以正常运行;防止病毒或恶意应用利用本系统隐藏自身代码,逃避代码检测;提升应用破解门滥,使得应用能够有效防止逆向工程导致的安全风险;提供灵活的保护方案组合,兼顾性能指标与用户体[2]。

2.3 软件安全加固加固基本功能

2.3.1 防软件盗版

为了防止软件盗版等问题,有两类方案:一种是在应用程序中添加数字签名或数字水印来证明程序使用者的合法性,另一种是进行网络交互,通过与数据库中存储的校验值进行比较,来证实应用的合法性。

2.3.2 防隐秘数据窃取

对于移动终端应用中的隐私信息进行加密保护,防止攻击者盗取用户信息谋利,一般采用标准加密算法,因为常规的非对称加密算法效率过低,一般使用小型对称密码,需要对密码算法进行改造,定制化处理以确保其安全性[3]。

2.3.3 防动态调试反编译反汇编

攻击者想要对程序进行深层次的攻击必须要获得程序的源码,针对代码容易被反编译的问题,我们决定通过使用代码混淆进行隐私保护。对于代码交叉编译生成的可执行文件,进行加载器的安全加载,在加载器中实现完整性校验等函数,实现对动态调试,反编译等攻击手段的防御。

2.4 软件安全加固核心技术

2.4.1 白盒加密算法

由于移动终端处理性能有所限制,而传统的非对称加密算法的处理速度不够快,不适合应用的使用,因此须使用对称加密算法――白盒加密算法。具体是指用算法的白盒加密方案,可以做到每一台主机有一个定制的解密盒,即使一个终端被破解,其他终端不会收到影响,仍然能够正常使用,有利于提高安卓系统应用的安全性。

2.4.2 调试技术

针对Java代码,一般进行代码混淆处理,新的代码版本虽然与原始代码行为方式相同,但是更加复杂,难以理解。另外为了增强安卓应用的安全性,在安全加固系统中使用安全加载器加载原有文件中的文件,将核心代码写入生成的代码中,然后在实现反反汇编,反动态调试等功能。

2.4.3 安全加载技术

壳属于软件保护技术中的一种,主要针对反编译和篡改行为。经过加壳处理后,应用程序的手保护程度会提高,还可以在一定程度上实现对动态调试的抵抗[4]。

2.5 加固保护方案

2.5.1 dex文件加固

对于安卓系统移动应用程序中的文件,用代码混淆的方式对其实现加固,对应用中原来dex头部文件进行混淆,原有的dex头部只有70个字节,我们现在将安卓系统应用的dex文件加到文件的dex头部后,经过如此混淆后,反编译器就无法进行正常的反编译了。执行的过程中会通过一个加载器,先把这1000个字节解出来,然后再执行剩余的dex文件,将应用正常调用起来。

2.5.2 bin文件加固

对于APK文件中的可执行bin文件我们进行的是安全加载的方式,首先将源文件中的bin重命名为corebin,然后将我们的安全加载器命名为原来bin文件的名字,如此一来,当classes.dex文件对bin文件进行调用的时候,就会首先调用我们的加载器,然后我们再通过加载器去调用corebin,这样我们能在加载器中实现对软件的保护功能,同时还能实现对corebin的安全加载[5]。

3 结语

随着各类移动终端设备的研发制造以及移动应用程序的开发和普及,愈来愈多的开发者和用户进入了移动互联网这一大环境,既带来了不断前进的动力,与此同时也产生了一定的风险和威胁。目前看来系统基本能够对安卓移动应用程序进行安全加固,实现第一步的保护目的,在承受范围内的性能代价下,有效降低安卓移动应用程序流通于应用市场后被破解及损害的风险。

参考文献

[1]史成洁.Android平台应用软件保护技术的研究与实现[D].北京邮电大学,2015.

[2]张译恬.面向安卓系统的移动应用程序安全加固系统的设计与实现[D].北京邮电大学,2015.

[3]张源.安卓平台安全性增强关键技术的研究[D].复旦大学,2014.

[4]董航.移动应用程序检测与防护技术研究[D].北京邮电大学,2014.

[5]王覃思.Android平台安全支撑系统的设计与实现[D].北京邮电大学,2013.

[6]秘锡辰.Android应用软件安全加固技术研究[D].北京交通大学,2013.

上一篇:MongoDB数据库中自动分片技术应用研究 下一篇:通信传输中OTN技术的应用实践解析