摘要:
最近几年来,随着智能手机的普及和移动互联网技术的发展,手机成了人们日常生活中不可缺少的一部分.在众多的智能手机操作系统里面,Android系统以其开源,自由,免费等特点占有着很大的市场占有率.随着Android系统的流行和个人开发者的日渐增多,针对Android平台的安全攻击手段也层出不穷,增加了造成经济损失和隐私泄露的风险.因此,如何在Android平台上编写出安全的应用已成为当今Android开发者需要学习的方向.本文首先对Android系统的架构以及安全机制进行研究,详细分析了Android应用软件的安全威胁,并对Android软件关键技术进行分析.其次,本文提出了一种完备的多重校验方式.将应用安装后计算得到的签名的摘要,与网络上获取到的签名摘要以及预存在程序内部的签名摘要做多重校验,并且校验动作放到动态链接库以及Java层等不同位置并对动态链接库进行运行时自解密;当任一位置的对比不通过,就禁止应用执行,并且提示用户到正规来源获取应用.另外,提出一种应用关键位置动态监控技术.基本思想是利用Inotify对应用关键位置进行监控,比如支付类应用中常有的手势登录密码,如果仅仅保存在本地,那么即便使用安全加密算法对其进行加密,也容易被攻击者篡改.因为如果攻击者通过逆向分析获取了计算密码的加密算法,那么在高权限条件下就可以轻松地利用这个密码算法计算自己的新密码的密文,通过手动或是自己开发的注入工具对原来的密码进行替换.使用轮询方法对关键位置进行监控可以有效地防止这种入侵,并且在假设动态链接库中的算法比Java层的代码更具有安全性的条件下,可以进一步提升这种轮询方法被劫持的可能性.最后,设计了一系列模拟攻击实验对方案进行验证和评估.实验结果表明,本方案具有较好的防护效果,可以较为有效的防止重打包,逆向分析等攻击.
展开