◆王 喆
Android移动终端数据安全检测方法研究
◆王 喆
(核工业计算机应用研究所 北京 100048)
移动终端数据安全一直是信息安全防护体系的薄弱点。实施数据安全检测可及时发现终端设备敏感信息存在的安全隐患,有效防范信息泄露、账号窃取及数据污染。但受移动终端软件高开放性、低准入性以及设备多样性的影响,很难形成统一的数据安全检测标准和方法。本文以目前市场占有率较高的Android移动终端数据安全为研究对象,根据敏感信息机密性、完整性、可用性原则,分析了移动终端数据存储和传输两个重要环节中的安全防护要素,并基于此研究提出了一种Android移动终端数据安全检测评价方法。
信息安全;移动应用安全;企业业务安全;数据安全
随着互联网及移动通信的汇聚融合,移动终端互联网应用已融入人类世界的各个层面。人们在享受移动办公、移动支付、网络社交及资讯、娱乐等便利的同时,也面临着更大的数据安全威胁和隐患。(1)开放平台特性造成移动终端系统本身存在诸多漏洞,为病毒、木马的侵入提供了条件。截止到2017年底,CNNVD收录Andorid系统漏洞1082个[1],抽样调查显示,每一移动终端出厂前平均包含5个未修复漏洞,高危及以上漏洞超过90%,并且数量成快速增加的趋势。(2)软件APP的准入门槛低,安全防护技术滞后,难以有效遏制恶意程序的传播扩散。目前Android平台有近300万个恶意程序,流氓行为类居多[2],其次是恶意扣费类、资费消费类,恶意程序危害巨大,可为其他恶意行为创造进入条件,是当前移动终端最大的安全隐患。③病毒、木马、钓鱼网站泛滥,移动终端成为网络攻击的新目标。据某安全公司监测数据显示,仅2017年上半年Android病毒数已超过1000万,钓鱼网站攻击事件超过3000万起。除此之外,针对移动通信过程的新攻击手段也层出不穷,CSFB(电路切换回退,4G LTE网络中的安全漏洞)、Broadpwn(wifi基带漏洞)都可能引发严重的安全事件[3]。
移动终端安全防护的重心是数据安全,数据安全检测是防范敏感信息数据防泄漏和抗污染的手段之一。然而,目前多数安全检测类产品仅提供对移动终端系统和应用的自动化检测服务,对其敏感信息数据并未做更多细致的过滤分析和保护,无法真正保证数据存储和传输安全;同时,考虑市场竞争、技术发展以及操作难度等因素,国家层面并未就移动终端数据安全检测制定单独统一的标准规范和强制合规性要求,生产企业和应用企业只能按照一些行标条款制定自己产品和应用场景的安全基线,缺乏有效的检测手段和方法。因此,在移动终端数据安全问题日益严重的今天,相应安全检测方法研究无论是技术需求还是规范标准的探索都是迫切且必要的。本文以市场占有率较高的Android移动终端数据安全为研究对象,通过分析数据静态存储和动态传输两个重要环节的安全因素,探索移动终端数据安全检测评价方法。
数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的4种方式:(1)SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态[4]。SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储五种简单的数据类型,比如其无法进行条件查询等;(2)关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的;(3)SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。面向资源有限的设备,没有服务器进程,所有数据存放在同一文件中跨平台,可自由复制;(4)一个程序可以通过实现一个Content Provider的抽象接口将自己的数据暴露出去,外界可以通过这一套标准及统一的接口和程序里的数据打交道,可以读取程序的数据,也可以删除程序的数据,当然,中间也会涉及一些权限的问题。
大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,HttpURLConnection和HttpClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPV6、以及连接池等功能。在2.3及以后的版本中,HttpURLConnection是最好的选择,它简单的API以及轻量级非常适合Android。压缩和缓存机制降低了网路使用,提高了速度、节省了电量。但是在连接管理和线程安全方面,HttpClient仍然具有很大的优势,其提供了大量的可扩展的稳定的APIs,但是在不破坏其兼容性的前提下,很难对其诸多API进行修改,升级和扩展。
加密算法在应用中可对关键信息进行保护。在代码的关键点如登陆注册等需要与后台进行交互的位置使用加密算法,在一定程度上可以保护用户信息以及关键代码的实现。但加密算法强度过于简单,或加密算法的完全缺失会暴露关键信息以及重要逻辑,威胁到用户和企业的信息安全。
(1)数据存储安全检测评价方法
数据的存储即数据本身的安全,主要是指采用现代密码算法对数据进行主动保护,如数据保密、数据完整性、双向强身份认证等[5]。如果敏感数据遭受到攻击可能导致劫持、嗅探、破解、窃取等危害,导致非法修改和刷新、个人隐私数据的非法读取访问、病毒和恶意代码的破坏,甚至移动终端被盗等。
对存储数据的检查要针对本地存储的敏感数据,并且对其采用的加密措施进行判断。Android本地数据存储有四种方式:SharedPreferences存储数据、文件存储数据、SQLite数据库存储数据、ContentProvider存储数据。每种数据的存储对应相应的目录和接口。通常需要首先查看相关目录查看相关目录(/data/data/[package_name]/Shared_Pref、/data/data/[package_name] /files、/data/data/[package_name]/database)里的数据文件,是否可以通过相关浏览工具直接打开;如果经过加密处理,分析数据读写操作处的加密和解密接口实现是否安全。因此,对于敏感的数据一定要先经过加密,并选择加密算法尽量成熟、安全系数高的算法再存储[6]。
本地通讯权限检测要评估样本是否存在超越权限的通讯或信息泄露行为。查看配置文件Mainfest.XML文件中是否有Broadcast,如果有,查看对应的avtivity中发送的是否为敏感信息,如果为敏感信息,查看是否经过加密,如果是加密后的数据,可以认为安全。如果未经加密,查看是否为sendOrderedBroadcast广播机制,有没有使用指定发送的Andro类,如果没有指定,则敏感信息容易在广播中被截获,存在安全问题因此,要信息的传递方式进行改进,对权限进行最小化处理[7]。
完整性校验检查可通过对应用进行反编译,查看是否具有反编译防护措施;反编译后回打包重签名,查看应用是否可以重打包成功;二次打包运行后,查看应用是否有运行时的校验;审计和跟踪应用逻辑,查看应用校验算法实现方式和保护机制,对起保护强度等级进行评估。因此,要对应用添加保护标志和校验代码,是反编译和二次打包后的运行失效,并对应用进行加固处理。
(2)数据传输安全检测评价方法
数据的传输安全适用各种网络协议数据传输加密(如身份认证,交易接口,数据加密等)各种网络协议,尤其在用户登陆认证,交易接口等方面[8]。数据在传输过程没有对关键数据进行加密处理,就容易面临被获取进行抓包分析、敏感信息随意被分析篡改等风险,同时,也可以通过界面劫持和键盘监听的方式截取到本地存入的数据,都会对应用的安全性造成影响。
远程数据通讯协议对数据传输过程中的协议进行检查。使用抓包工具,对于非http类型的协议建议使用Wireshark对协议进行解析,对于http/https协议使用fiddler。通过手动的方式,可以将连接在电脑上的手机通过给程序授权777读写权限,使用命令./data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap抓取数据,使用工具分析数据。获取到的数据可以进行分析和修改,判断其安全性。因此,在传输过程中敏感数据不能用明文传输,使用加密协议进行数据传输。
移动终端数据安全检测以数据的安全视角评价终端安全,既能积极指导生产企业加强对自身终端、系统、APP软件的数据安全防护,优化产品;又能帮助使用移动办公的用户企业了解数据在终端上可能存在的安全隐患,并根据自身实际应用场景确立安全基线。随着移动互联网应用的飞速发展,作为数据安全防护的组成部分,移动终端数据安全检测技术和方法须紧跟产品和技术创新,形成科学系统的体系,从而促进和推动领域内相关标准的制定和实践。
[1]中国信息安全测评中心.2017年度国家信息安全态势评估.时事出版社,2017.
[2]互联网安全中心.2017年Android恶意软件专题报告,2017.
[3]康亮.移动通信终端IOT测试技术研究.工业和信息化部电信研究院,2013.
[4]李刚.疯狂Android讲义(第3版),2017.
[5]韩芳.针对2017年度数据安全的基本分析,2017.
[6]赵旭.数据加密算法分析与改进[D].哈尔滨工业大学,2012.
[7]郭霖.第一行代码:Android(第2版),2017.
[8]孙洪涛.基于网络传输的数据信息加密方法研究[D].吉林大学,2014.