从编程角度分析Aadroid手机的数据安全
2015-01-01史杨
史 杨
(郧阳师范高等专科学校 湖北 442000)
0 引言
Android系统手机一般存放着用户个人的许多隐私数据,比如手机号码、QQ、微信聊天记录、通讯录、短信及支付宝交易密码等等。这些数据都是用户非常有价值的隐私,一旦泄密将造成不可估量的后果。然而在现实中,这些数据的存储并没有我们想象中的那么安全,本文将从程序开发的角度来分析Android系统手机的安全性。
1 Android系统手机外存储安全
在Android系统手机中,内存一般在10G左右,经常不能满足用户的需求,所以大多数的手机在购买后都会加一个30G左右大小的SD卡,用于存储照片、视频及其它外部文件。而一些国内较早版本的 IM软件,直接把聊天记录保存在手机的外部SD卡中,但是在Android系统中的外部存储的安全隐患最大,任何软件只需要在AndroidManifest.xm1中声明如下一行权限,即可读写外部存储设备。
其它软件只要拥有内存卡读写权限,就可以访问它的内容,若即时聊天软件的聊天记录存放在SD卡中的话,就给了一些恶意软件留下了可乘之机,从而造成用户数据的悄无声息的泄密。
所以在Android系统程序开发中,可以适当的采用外部存储来保存数据,但是若涉及到用户隐私的,即使加密了的数据,最好也不要放到外部存储设备上,通过上面分析,只要是Android程序开发员掌握了软件数据的解密方法,可以简单的获取用户的隐私。
2 Android系统手机内存储安全
Android系统的内部存储是所有软件存放私有数据的位置,在 Android系统安装包中提供了 openFi1eInput()和openFi1eOuput()方法来读写程序的私有数据目录。如一段常见的存储内部数据的代码1片段如下:
openFi1eOutput()方法的MODE_PRIVATE参数指定了文件创建的模式,表明该文件是不能被其他程序访问的,Android系统内部存储的访问是通过Linux文件访问权限机制控制的。
若我们在程序开发时,将 MODE_PRIVATE参数更改为MODE_WORLD_READABLE,则文件允许其他用户进行读操作。当内部存储文件可以被访问时,程序开发者可以通过以下代码2片段来获取该数据的内容。
从上面程序代码我们可以知道,createPackageContext()方法允许创建其他程序包的上下文,即 Context对象,通过这个对象,程序可以启动其他程序的Activity,并且访问其它程序的私有数据。经过Context.CONTEXT_IGNORE_SECURITY指定程序忽略创建Conetxt时的安全异常,将会始终创建Context对象,由于程序赋予了相应的权限,程序不会发生异常。
所以我们在程序代码 1片段中,即使把参数设置为MODE_PRIVATE,恶意程序依然能够通过其他途径获取高一级的访问权限,从而通过系统漏洞来提升访问权限,进一步来访问软件的内部存储的隐私数据。
3 结束语
通过对Android系统外部存储数据和内部存储数据安全来看,无论我们采用什么样的存储方式,恶意程序都可以通过修改访问权限,或者提升访问权限来获取Android系统的漏洞,从而获取用户的私密数据,所以对于程序开发者来说,务必要对存储在内外部的数据进行加密,提升Android系统手机的数据安全。
[1]吴倩,赵晨啸,郭莹.Android安全机制解析与应用实践.北京:机械工业出版社.2013.
[2]肖梓航.再谈Android软件的安全开发.程序员.2013.