一种基于Android系统的安全域可信应用方法

2018-10-09 03:00王文张彩友王志强
电子设计工程 2018年18期
关键词:智能卡口令校验

王文,张彩友,王志强

(国网浙江省电力有限公司信息通信分公司浙江杭州310012)

电力系统的安全性关系到国计民生、社会稳定,电力智能终端已普遍应用到日常生活当中,为消费者提供便利的互动服务,然而,由于移动网络和智能终端本身的开放性,电网运行状态和折本信息很可能被读取篡改[3]。一旦电网崩溃,不仅会造成经济损失,甚至会危害人身安全及社会稳定。因此研究电力智能终端的安全问题显得尤为重要。

Android系统作为当前应用最广泛的操作系统之一,被充分应用到电力移动终端中。目前针对Android系统的移动终端应用的安全性方案当前主要有两种[4]:在此称之为“开源”和“节流”。“开源”指的是出一类专门用于工作用的安全手机,这类手机上只允许打电话、发短信以及使用工作用的手机软件(Application,APP),即从源头确保手机应用是安全的;“节流”方法提供一类半定制手机,同时配套提供一个或者一批网址来下载和升级APP应用。这两种方法都能在一定程度上确保用户手机上安装的应用是安全的,但是都存在明显的问题。“开源”的方法虽然能够保证用户手机上的APP都是安全的,但同时也让用户的体验感变得极差,很多用户将这类手机拿到手之后,直接就束之高阁,很少甚至基本不使用;“节流”的方法由于不能杜绝用户下载其他应用,因此一旦用户不小心在工作区域下载并安装了其他的第三方应用,依旧会存在安全隐患。

1 安全域可信应用方法

1.1 安全域划分

安全域是在同一逻辑区域内,安全保护需求和保护策略相同或相似要素的集合,区域间相互信任,相同的安全域有相同的安全策略[5]。具体安全域的划分应根据不同行业、不同用户和不同需求,结合行业的自身特点和实际来进行。最终的目的是达到对业务系统的全方位防护,满足安全保障的实际需求[6-8]。一个典型的安全域划分方案是将系统的IT要素集合分为用户域、计算域、网络域、支撑域四类基本安全域[6],如图 1所示。

图1 安全域基本构成

在4个基本安全域内,不同IT要素承载的数据流、数据处理活动、分布的位置、提供的功能和服务都可能存在差异,因此,它们所面临的安全威胁的种类和能力存在差别,其安全需求也会有所不同。在实际应用中会根据业务需要和安全需要将基本安全域进行更细致的划分。

Android手机属于用户域的组成部分,为了便于实施安全防护,我们为Android手机进一步划分一个应用工作的区域,在该区域内,所有的应用都应该是可行的,如何控制在该区域内安装的应用都是可信应用,避免不安全的应用进入安全域是本文研究的重点。

1.2 可信应用方案

为了避免不安全的应用进入安全域,造成用户隐私泄露,财产损失等危害。目前,市面上出现了两种解决方案,一种是专门出一个工作用的安全Android手机,手机上只允许打电话、发短信和使用工作APP;该方案让用户体验极差,很多用户直接将这类手机拿到手之后,就束之高阁,很少使用。第二种是提供一个半定制手机,提供一个或者一批网址来下载和升级APP应用;该方案中,由于不能杜绝用户下载其他应用,若用户不小心在工作区域下载并安装了其他第三方应用,会有安全隐患。

图3是用户下载并安装可信应用的流程图,用户可在智能手机中登入应用商店,根据自身所需要的功能选择分类并下载自己需要的APP。安装过程中分类证书会对APP进行校验,校验不通过则终止安装,从而避免用户安装不安全的应用APP。

图2 将可信应用植入安全应用商店服务端

图3 下载并安装应用

2 可信应用方案关键技术

2.1 APP安全测试

国内外的学者们已经对移动终端APP的安全检测做了大量分析和研究,如S.Gunalakshmii[9]等设计的基于支持向量机(SVM)的行为检测系统,Fabio等[10]设计的结合静态分析和动态分析的恶意软件检测技术,文献[11]采用反编译工具baksmali和数据流分析方法检测程序是否存在越权操作[11],文献[12]提出了一个基于进程代数和系统调用(BDPA)的软件行为检测模型[12]。总的看来,APP的安全性问题主要来源于几个方面:APP本身结构设计的缺陷、APP源代码设计漏洞、使用的协议不安全、SDK缺陷等[13]。针对APP安全性的测试主要分为3种策略:

1)APP代码检测

该方法是采用JD-GUI、ApkTool、Dex2jar、Smali2dex等代码分析工具对APP代码进行反编译,生成Java源代码文件、XML页面文件等,然后对这些文件进行静态扫描,搜索关键词找出具有安全隐患的代码。

2)APP渗透测试

渗透测试是模拟黑客对APP进行安全攻击,这种检测方法能够直观地反映出APP的薄弱环节。

3)APP漏洞扫描

漏洞扫描是借助漏洞扫描器对APP的安全性进行全方位的检测,漏洞扫描器采用数据跟踪分析、漏洞验证、拒绝服务攻击等手段对APP代码安全、签名安全、业务逻辑安全、数据安全、环境安全等各个方面进行全方面的检测。

为了高效、更好地做好安全性测试,除了选择合适的测试方案之外,还要能充分利用软件安全测试工具。常用的安全测试工具包括:X-Ray工具、Safe.ijiami、Droze工具、Intent Sniffer工具。X-Ray允许用户扫描其Android设备,查看设备上是否有影响设备安全的漏洞。目前X-Ray支持对以下漏洞进行检测 :ASHMEM(CVE-2011-1149)、Exploid(CVE-2009-1185)、Gingerbreak(CVE-2011-1823)、Levitator(CVE-2011-1352)、Mempodroid(CVE-2012-0056) 、Wunderbar(CVE-2009-2692) 、ZergRush(CVE-2011-3874)、Zimperlich(Zygote setuid)。Safe.ijiami是爱加密公司的产品,它通过模拟黑客的攻击行为对APP的安全性进行检测。Drozer是一个由MWR安全团队维护开源的软件,该软件是针对Android平台的安全审计和攻击框架。安全人员可以通过drozer自身提供的一些模块完成一些基础的安全测试功能。Intent Sniffer工具实现监控运行时路由的广播Intent,能够针对那些基于应用反射和动态审查安装程序的Intent来动态升级扫描的Action和Category。

2.2 身份认证技术

身份认证是所有安全机制的基础,服务器端和客户端之间的身份认证是基于一种证据,通过这个证据来证明双方的身份。根据证据形式的不同,相应地存在以下几种身份认证技术[14]:

1)口令认证

口令认证又分为静态口令认证和动态口令认证。静态口令认证又可以称为密码认证,口令是用户自己设定的,只要正确输入口令,就可以通过身份认证,这种认证方式简单且成本低、速度快,但是很难抵抗穷举攻击,安全隐患较大。动态口令是让用户的密码不断变化,它采用动态令牌生成动态密码,只有合法用户才持有动态令牌,令牌中的密码生成芯片会根据时间和使用次数计算出当前密码,用户只需要输入当前的密码就可以实现身份认证。这种方式相较于静态口令安全性提高了很多,即使黑客截获了密码,也不能冒充合法用户。

2)智能卡认证

智能卡[15]是一种内置集成电路芯片,内部存储于用户身份信息相关的数据。智能卡是不能复制的,由专门的厂家和设备生产,只有合法的用户才拥有智能卡。进行身份认证时,通过读卡器读取卡上的信息来验证用户的身份。智能卡中的信息是静态的,很容易被黑客通过扫描或监听技术截取信息,因此也存在一定的安全隐患。

3)USB Key认证

USB Key[16]身份认证是由智能卡技术发展而来,USB Key是一种USB接口硬件设备,内置智能卡芯片或者单片机用来存储用户的秘钥和数字证书,采用内置的密码算法对用户身份进行认证。

2.3 安装校验技术

APP安装过程中可以通过多种方式对其进行校验,这里仅对其中一种校验方法进行介绍,具体校验流程如图4所示:

图4 APP安装校验步骤

1)将证书进行base64编码,并将编码后的字符串保存在程序中;

2)将证书签名(MD5或SHA1值)进行对称算法加密(如:DES),然后将加密后的结果和对称算法密钥放在一起,再使用证书的私钥对其加密,将加密后的结果保存在一个xxx.conf文件中;

3)客户端启动时,通过解码(1)中的字符串得到证书的公钥,然后使用公钥解码xxx.conf文件,得到对称算法的key;然后使用key解码被加密的签名字符串;

4)客户端通过运行环境获取安装包的证书签名,并将其与配置文件中的签名进行比较,如果想等即为合法签名,否则安装包已经使用了其它非法的证书进行了签名。

3 可信应用方案性能测试

为了评估本文所提出方案的性能,本文采用按键精灵脚本测试方法,通过不断地关闭启用移动软件来对应用正常运行的概率进行测试。按键精灵是一款模拟键盘动作的软件,通过导入测试脚本,可以代替双手自动执行一系列键盘动作。本文在按键精灵中导入测试脚本并设置为重复运行,使其能够自动操作,不断关闭并启用移动软件。按键精灵作为一款广泛应用的软件,经过不断地改革换代,其性能已非常成熟,具有足够的安全保障,是移动APP安全测试的首选工具。

文中选取了8个具有代表性的应用软件进行测试,分别是Call+双卡绑定、Call Log、双域、安全图库、联系人快传、安全相机、设备安保,经过市场统计这八款应用对于所有的智能手机用户都是必不可少的,并且相较于其他的软件使用次数非常频繁,一旦被黑客置入恶意功能或者非法监听篡改数据,后果将不堪设想,一方面用户的图库信息,重要联系人数据可能会泄露甚至丢失;另一方面,攻击者可以直接对客户端进行安全攻击。

表1是8个软件的通过率测试结果,表格中Feature Name是安全应用名称,TC Count是测试次数,即关闭启用移动软件的次数,Excecuted代表有效测试次数,Pass代表通过次数,即应用正常运行的次数,block表示返回空值,NA是无效测试次数,fail是测试失败次数,Pass Rate是安全应用的通过率,计算如下:

表1 应用软件通过率测试数据

测试中,通过设置按键精灵软件不断开启并关闭应用软件,观察应用正常运行的次数,每开启闭合一次即代表一次测试。为了使测试结果更具普遍性和可信度,我们总共进行了1577次测试,并重点对安全相机和Contacts这两款重要应用进行了553和459次测试。从表格中可以看出,参与测试的八款应用软件通过率都在90%以上,平均通过率达到93.95%,Call Log、联系人快传、设备安保三个应用的通过率甚至达到100%。应用的通过率普遍较高。可以看出本文提出的安全域可信应用方案具能够很好地减少安全隐患,确保手机应用的安全性,且实现方法简单易行,具有良好的应用前景。

4 结束语

文中提出了一种基于Android系统的安全域可信应用方法,联合了“开源”和“节流”两种策略,将安全市场APP与应用的framework层深度结合,定义了一个如同专用手机一样安全的系统使用环境。提高了移动应用终端的安全性,避免不安全的应用进入安全域。同时,该方法也可以应用到电力移动终端中,满足电力系统的高安全性要求。

猜你喜欢
智能卡口令校验
高矮胖瘦
东方磁卡李晓东:进击的智能卡研发巨子
口 令
炉温均匀性校验在铸锻企业的应用
基于STC89 单片机的非接触智能卡读写机设计
好玩的“反口令”游戏
SNMP服务弱口令安全漏洞防范
临沂机顶盒智能卡升级方案介绍
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法