李 焰
移动设备访问规则应用(ARA)安全性改进方案
李 焰1,2
1.深圳大学计算机软件学院,广东 深圳 518000 2.国民技术股份有限公司,广东 深圳 518057
在2015年SmartCard API从版本2.4.0开始支持由全球平台(GlobalPlatform GP)规范制定的访问规则应用(Access Rule Applet,ARA)标准。该标准分为单应用访问规则和多应用访问规则。基于多应用访问规则,结合RSA签名及验签技术,提出了一种安全性改进方案以及应用示例。
ARA;访问控制;RSA;APDU
在安全元件(SE)中定义的ARA架构中,移动设备对SE[1-2]应用程序的访问,由在SE上安装的ARA中定义的访问控制规则控制。其中分为访问通道主控制应用(ARA-M)和多个访问通道从控制应用(ARA-C)[3]。主要完成工作步骤如下:
(1)在SE中预先安装有ARA-M和多个ARA-C。
(2)通过Android签名机制给移动客户端签名。
(3)往ARA-M/ARA-C应用中添加移动客户端签名HASH的访问规则。
(4)当移动客户端需要访问SE中的应用时,连接SE的中间件程序就会先验证移动客户端的完整性,然后再访问SE中的访问通道主/从控制应用程序,查看该移动客户端是否拥有访问SE中该应用的权限。如果有权限,则允许访问;反之,则拒绝访问。
多应用访问规则的ARA系统包括ARA-M和ARA-C两个部分。规则分别存放在ARA-M和ARA-C中。ARA-M和ARA-C中的规则相互之间是完全独立的状态,ARA-C中的规则是由各自的应用发行商来维护管理的。这时就会出现规则发生冲突的情况。在目前的ARA系统中,对于冲突处理机制,采用的优先级不是基于它在获取规则时的读取到的顺序,而是基于以下三个基本原则,优先级顺序从高到低排列如下:
(1)具体规则优先级,即越具体化的规则优先级越高。
(2)与最终实体证书相关联的规则具有优先级,即拥有HASH的规则比没有HASH的规则优先级更高。
(3)严格的规则优先级,即拒绝访问的规则比允许访问的规则优先级更高。
从ARA的冲突处理机制中可以看出,为了更严格的控制,拒绝访问的规则要比允许访问的规则优先级别更高,这样一来就会存在一个安全漏洞。这个漏洞有可能会出现某个恶意者拥有了对其中一个ARA-C的控制管理权限,然后恶意者就可以在这个ARA-C中添加其他发行商的移动客户端无法正常访问SE的规则[4]。恶意者需要3个步骤来实现对受害者的拒绝访问攻击:
(1)在恶意者的ARA-C中增加一条ARA-M的访问规则。
(2)在拥有了ARA-M的访问权限后,读取ARA-M的全部规则。
(3)在读取到的规则中寻找受害者的HASH和要访问的AID值,然后在ARA-C中增加受害者的HASH拒绝访问Applet的规则,以最终达到受害者无法访问Applet的目的。
依据ARA的规范定义,我们可以具体实行以下3个步骤:
1.2.1 增加ARA-M的访问规则
由于ARA-M的AID是固定的,而恶意者证书的HASH值是已知的,因此可以通过增加规则的方式增加对ARA-M的访问权限。根据GP规范指定格式,我们组建增加ARA-M的访问规则的APDU指令如图1所示:
图1 访问ARA-M的访问规则的APDU指令
1.2.2 读取全部规则
在拥有了对ARA-M的访问权限后,恶意者就可以从ARA-M处获取全部规则,经过整理后如图2所示:
图2 全部规则的整理数据
从中我们可以看到,恶意者访问ARA-M的规则也被读取出来了。
1.2.3 添加拒绝访问的规则
首先我们选取一个受害者的HASH和他要访问的AID。我们选取HASH “93E47761236EF0121C44875711 273C65BC8C7A70”、AID“535558494E2E4D46”作为这次的测试对象。以下我们将增加拒绝访问的规则到ARA-C中,如图3所示:
图3 拒绝访问规则的APDU指令
添加拒绝访问的规则后,我们再通过GAT DATA[Specific]指令读取访问规则,可以看出ARA-M根据优先级顺序只返回了访问权限被拒绝的规则,如图4所示:
图4 获取指定规则的返回数据
从前面的内容我们可以看出ARA系统为了安全考虑,在规则出现冲突的情况下,优先使用拒绝的规则控制,但这同样也给了恶意者有机可乘的漏洞。在实际运用中拒绝访问的规则和APDU过滤的规则基本使用不到,相反还会产生安全漏洞。针对这个漏洞,本文提出了一个改进方案。改进方案的思路主要是使用RSA的签名验签机制来控制访问权限。
由应用发行商将自己的公钥保存到自己的ARA-C中,在需要验证移动客户端的访问权限时,通过访问规则执行者(ACE)传入应用发行商用自己的私钥签名的数据和签名前的原数据传入ARA。ARA通过保存的公钥对传入的数据进行验证,ACE以验证的结果来确定其是否拥有访问权限。
执行顺序如下:
(1)移动设备客户端应用程序通过传输层的API来请求打开通信通道。
(2)这个请求被转发到移动设备上的ACE模块。
(3)ACE模块使用新增加的verifyRule 指令传递给ARA-M,查找对应的规则并验证。如果验证通过,则客户端应用程序有权限访问SE中指定的应用,并进行后续的操作。如果验证不通过,则拒绝访问。
(4)访问权限被授予,则控制执行模块打开通道到SE,并执行所有必要的操作。
(5)APDU命令传输过程。
ARA_M应用必须实现ARAMShareble接口。ARA-C通过调用ARAMShareble接口方法来改变ARA-M中的freshTag和传递ARA-C的规则到ARA-M中,ARAMShareble接口定义如图5所示(提供的是源码):
图5 ARAMShareble接口类
(1)功能描述。该函数用于在ARA-M对指定的访问规则进行验证。通过此函数首先使用ARA-M的超级规则进行验证,验证成功后就直接返回。如果验证失败,就通过传入的AID查找规则。如果查不到,就返回0x6A83的错误码;查到后,使用对应的公钥对数据进行签名验证。当验证成功就返回0x9000成功码;如果验证失败就返回0x6982的错误码。
(2)参数说明。rule用于存放规则的对象,包括ARA-C的AID、rsaPubKey以及关联的AID。
(3)返回值。0x9000表示验证成功,0x6A83表示没有查找到对应规则,0x6982表示验证失败。
(4)异常信息包括以下几种:Security Exception,Index Out Of Bounds Exception,Array Index Out Of Bounds Exception。
在移动支付越来越普及的今天,移动客户端与SE之间的访问安全控制重要性日益凸显。本文根据 GP组织制定的ARA标准,提出了一套安全性改进方案,并针对此方案列出了实现方式和实例代码。
[1]李琳.移动支付标准体系分析[EB/OL].http://m.mpaypass.com.cn/news/201507/17103436.html,2015.
[2]陈小梅.移动支付体系的安全风险分析与研究[D].北京:北京邮电大学,2014.
[3]Anwar W,Lindskog D, Zavarsky P, et al. Redesi- gning secure element access control for NFC enabled android smartphones using mobile trusted computing[C].international conference on information society,2013.
[4]黄健,黄健文,刘兆元,等.Android客户端访问控制技术研究[EB/OL].http://www.xzbu.com/8/view- 5903207.htm
Security Improvement Scheme for Mobile Device Access Rule Application
Li Yan1,2
1.School of Computer Software, Shenzhen University, Guangdong Shenzhen 518000 2. Nationz Technologies Stock Corporation, Guangdong Shenzhen 518000
In 2015, SmartCard API began to support global norms formulated by the platform access rules using standard from version 2.4.0.The standard is divided into single application access rules and application access rules.The access rules based on multi application, combined with the RSA signature and signature verification technology, proposes an improved security scheme and Application example.
ARA; Access control; RSA; APDU
TP393.08
A
1009-6434(2017)12-0015-03
李焰(1979—),男,工程师,现就读于广东深圳大学,研究方向为软件工程,现在从事通信智能卡和手机终端,安全访问控制研究工作。