移动终端可信执行环境自动化安全测试方法研究

2019-11-27 02:03路晔绵翟旭朱红伟李煜光詹鹏翼国炜宁华
移动通信 2019年10期
关键词:移动终端自动化

路晔绵 翟旭 朱红伟 李煜光 詹鹏翼 国炜 宁华

【摘  要】对TEE系统安全测试方法进行了研究,提出了一种自动化测试方法,以评估市场上现有TEE系统的安全性。与现有测试方法相比,本文所提方法将测试用例逻辑与被测系统具体实现进行分离,具有适配便捷、可扩展性强的优势。本文实现了原型系统,并对OP-TEE进行了安全测试,展示了测试结果。

【关键词】移动终端;可信执行环境;安全测试;自动化

1   引言

随着移动互联网的快速发展,移动智能终端在我国迅速普及,智能手机承担了各种与用户切身利益相关的敏感功能,其安全性也面临着前所未有的挑战,普通的移动智能终端系统已无法满足人们对于安全性的需求。从ARM架构的TrustZone[1]技术应用开始,独立于Rich OS运行的可信执行环境(Trusted Execution Environment, TEE)逐渐成为了人们广泛认可的移动终端安全增强方案。

TEE通过混合使用软硬件技术,在移动终端设备及系统中隔离出安全执行环境。TEE可提供对该环境内部数据和代码的安全保护,为运行在其内部的可信应用(Trusted Application, TA)提供隔离保护、安全存储、密码算法等安全服务。目前TEE技术已在移动支付、数字版权保护、生物识别等多种应用场景得到广泛运用。

近年来,TEE系统安全问题层出不穷。2015年6月,研究人员利用手机厂商在实现TrustZone时存在的软件漏洞,绕过了TrustZone提供的隔离防护,可在安全区域执行任意代码,并获取安全区域存储的指纹等敏感信息[2]。2016年美国的安全研究团队利用某品牌手机中TrustZone的漏洞,篡改TrustZone里的指纹验证模块,使得任意指纹及皮肤接触都可解锁手机[3]。这些安全事件促使产品开发者、行业监管方和产业需求方不得不重新审视TEE系统的安全性。一旦TEE系统实现中存在安全问题,那么依托于TEE技术的应用场景所声称的安全保证都将成为空谈。因此对TEE系统进行安全测试具有十分重要的意义。

本文提出了一种TEE系统自动化安全测试方法,用于分析TEE产品的安全性,该方法采用自动化测试设计降低测试过程对测试人员的依赖性,采用测试用例逻辑与具体实现相分离的设计,提供测试系统的适配便捷性。本文方法为TEE系统安全测试工作提供了有益的尝试。

2   国内外研究现状

本文的测试方法涉及TEE系统安全测试及自动化测试两个方面的研究,需要借鉴及结合两个领域现有的研究成果进行设计。

2.1  TEE系统安全测试方法研究

全球平台国际标准组织Global Platform[4]在TEE实现及安全评测方面制定了一系列规范,与之相对应的,国内也出台了一系列关于TEE产品的安全要求[5-9]及评估标准[10]。这些标准规定了TEE系统在设计和实现时应当考虑的安全因素,但对于具体安全测试应如何实施却缺乏可操作性的指导意见。目前各个评测实验室都在摸索自己的TEE系统安全测试方法。

现有的TEE系统安全测试方法大致分为两类,一类是通过模糊测试技术检测TEE系统中是否存在某些已知或未知漏洞[11],该类测试方法通常并不是针对功能性进行测试,而是检查系统和应用处理错误的能力,因此无法有效评估TEE系统是否实现了其设计中声称的安全功能。另一类测试方法是针对TEE系统的具体设计,构建测试用例测试其实际运行过程中的安全性。该类方法是解决本文关注问题的首选方法,然而现有方法实现一般需要测试人员深入参与测试流程每一个环节的具体操作,对测试人员要求较高。而且测试用例实现与被测TEE系统具体实现紧密相关,针对不同产品进行测试时需要将测试用例代码重新编写,适配便捷性较差。如何设计对测试人员依赖性较低且适配便捷的测试方法,成为当前TEE系统安全测试面临的问题之一。

2.2  自动化测试框架研究

使用自动化测试框架是降低测试方法对人员依赖性的有效方法之一,常用的软件自动化测试框架大致可分为四类[12]:数据驱动测试框架、测试脚本模块化框架、测试库构架框架和关键字驱动测试框架。四个框架提供了测试方案中不同程度的封装和分离,其中数据驱动测试框架仅将测试数据从测试脚本中分离出来;测试脚本模块化框架将被测系统或应用的功能首先封装成小的脚本,然后采用分级的方式使用不同的小脚本实现一个特定的测试用例;测试库构架框架将被测系统或应用分成过程和函数,并封装为库文件,然后用测试用例脚本直接调用这些库文件;关键字驱动测试框架独立于被测系统或应用,被测系统或应用的功能特性被写在表格和每个测试的详细指引里,测试框架通过解析表格执行测试用例。四种自动化测试框架各有优劣,实际中多采用多种框架的组合进行自动化测试系统的设计[13-15]。

针对TEE系统安全测试而言,由于不同TEE系统的具体实现不同,因此在设计相应的自动化测试方法时必须考虑其在不同被测TEE系统上的适配便捷性问题。在自动化测试方法中,封装和分离的层次越高,其在不同被测对象之间的适配越便捷,因此需要在借鉴现有自动化测试框架基本思想的基础上,结合TEE产品的具体特性,设计深度封装和分离的自动化测试方法。

3   TEE自动化测试方法设计

3.1  方法设计思路

为了解决现有TEE系统安全测试方法中的问题,自动化测试方法应达到以下目标:

(1)测试方法所用框架应与被测TEE系统相互独立,以简化適配过程;

(2)测试用例逻辑编写方法应易于测试人员使用;

(3)测试用例应易于扩展。

为了达到以上目标,本文借鉴关键字驱动测试框架,将测试框架与被测TEE系统进行深层次分离,提出了一种可扩展性强、适配便捷的自动化测试方法,方法包含以下两部分内容。

(1)方法中的测试用例运行逻辑由测试人员在测试配置文件中进行描述,由关键字指出测试用例中需调用的函数及其参数,由测试系统自动分析执行,测试人员可通过修改测试配置文件,方便快捷地修改测试用例逻辑或扩展新的测试用例。

(2)不同TEE系统的具体API及功能调用以测试配置文件中描述的函数名称进行统一封装,使测试用例逻辑可独立于被测TEE系统,从而可在不需大量修改的情况下适配不同TEE系统的测试,简化测试系统的适配过程。

3.2  方法总体架构

本文提出的移动终端TEE自动化安全测试方法系统架构如图1所示。

系统架构分为两部分内容,分别运行于测试用电脑和被测设备上。其中,测试系统SyTT(System for TEE Test)运行于测试用电脑上,通过解析测试配置文件,自动化执行各个测试用例并输出测试结果。被测TEE系统运行于被测设备上,支持测试系统SyTT测试,TEE系统提供的API及常见功能需要通过测试CA和测试TA的封装,以SyTT测试配置文件中确定的函数名称,向测试系统提供被测TEE系统功能的调用。

3.3  方法详细功能设计

(1)测试系统SyTT

测试系统SyTT包括控制脚本、测试配置文件、通用功能模块和原始测试结果四部分。

1)测试配置文件

测试配置文件主要用于保存每个测试用例的操作步骤,测试人员可根据每个测试用例的操作步骤在测试配置文件中添加步骤信息。测试配置文件中可包含多个测试用例信息,每个测试用例中包含多个按顺序列出的操作步骤,每个步骤包含需要调用的功能模块、具体函数名称及参数信息,具体内容以json格式进行编写,便于控制脚本解析。

除了测试用例信息外,测试配置文件中还保存了安全存储文件保存路径等与被测TEE系统具体实现相关的一些信息,以供测试用例运行时使用。该部分信息在测试系统SyTT针对不同TEE系统进行适配时需要根据具体情况进行修改。

2)通用功能模块

通用功能模块主要实现测试系统SyTT与被测设备的直接交互,大多与TEE系统特有的功能无关,例如通过adb命令将被测设备重启等。

3)控制脚本

控制脚本是测试系统SyTT的核心模块,其主要功能为解析测试人员编写的测试配置文件,获取每个测试用例列出的操作步骤,根据操作步骤信息,调用测试CA或通用功能模块中的相应函数进行测试,记录运行结果和异常信息并将其作为原始测试结果。

4)原始测试结果

原始测试结果为记录有每个测试用例运行结果及运行异常信息的文件,可供测试人员查看、分析具体测试用例的运行情况,以判断被测TEE系统是否通过当前测试用例的测试。

(2)被测设备

1)测试CA

测试CA负责解析测试系统SyTT中控制脚本传递的参数,将其传递给测试TA,并将测试TA运行结果及被测TEE系统返回的异常信息返回给测试控制脚本。

2)测试TA

测试TA负责解析测试CA传递的参数,调用TEE系统提供的API实现相应功能,并将运行结果返回给测试CA。

测试CA和测试TA的功能与测试用例的具体运行逻辑无关,仅将被测TEE系统提供的API和常用功能的调用以测试系统SyTT要求的函数名称及参数格式进行统一封装,以完成测试系统SyTT在不同TEE系统上的适配。

通过测试CA和测试TA的封装,测试系统SyTT可通过统一的接口调用被测TEE系统上的函数和功能,使得设计具体测试用例运行逻辑的测试人员无需知晓被测TEE系统的具体API名称,即可完成测试用例的逻辑设计及结果判断,因此可以方便地针对不同的TEE系统进行适配。

4   原型系统实现

原型系统中测试系统SyTT的代码采用Python语言开发实现,方便在搭载有不同操作系统的测试用电脑上移植。

测试CA和测试TA根据被测TEE系统的实际情况进行开发,多数采用C语言进行开发实现。在具体测试中,测试CA和测试TA可由被测TEE系统开发者开发实现,或由开发人员根据被测TEE系统提供的API进行开发实现。

5   实验及结果分析

本文选取OP-TEE[16]系统作为实验对象,测试CA和测试TA由测试人员使用C语言开发实现。

OP-TEE是一个开源的TEE系统,其实现严格遵循了GlobalPlatform针对TEE的规范要求,是TEE系统开发者参考、学习的重要资源,因此对其安全性进行测试有着重要的价值和意义。

5.1  实验环境

被测TEE系统版本:OP-TEE 2.6.0[17];

被测设备型号:hikey 620;

测试用电脑操作系统:ubuntu 16.04;

Python版本:Python 3.7。

5.2  测试项目及测试结果

原型系统中选取了三大类共八小项测试用例对OP-TEE系统的安全性进行测试。测试人员在被测电脑上运行控制脚本,执行完毕后得到原始测试结果,通过分析原始测试结果,与测试人员预期的运行结果进行对比,即可判断得到對应测试用例的测试结果。

测试结果显示,OP-TEE 2.6.0在安全存储防回滚设计方面存在问题,可能导致用户数据被回滚,重要资产被替换,导致目标安全服务功能异常。

6   结束语

移動终端安全问题备受关注,TEE已成为移动终端提升系统安全性的重要技术之一,近年来,TEE系统安全问题层出不穷,使得TEE系统的安全测试成为迫切需求。现有的测试方法过多依赖于测试人员与待测设备的频繁交互,操作较为困难且适配便捷性较差。本文提出了一种自动化的测试方法,通过控制脚本解析测试配置文件的方式,自动化运行测试配置文件中列明的测试用例,通过这种方式,测试人员可随时通过在测试配置文件中增加测试用例信息以扩展测试能力。此外,本文测试方法将测试用例逻辑与被测TEE系统的具体实现分离,使得测试系统在针对不同TEE系统进行适配时,只需修改少量信息即可,有效简化了适配过程。

本文实现了上述方法的原型系统,并对OP-TEE 2.6.0三个方面的安全性进行了测试,测试流程完全自动化,无需人工干预。测试结果显示,OP-TEE在安全存储方面的实现中依然存在一些安全问题,可能导致用户重要资产被替换等安全隐患。鉴于TEE系统在移动终端安全性方面的重要地位,TEE系统开发者在具体产品的设计和实现过程中,应当充分考虑安全性因素,以便有效地为移动终端的安全运行保驾护航。

参考文献:

[1] Arm. TrustZone[EB/OL]. [2019-03-19]. http://www.arm.com/products/security-on-arm/trustzone.

[2] 网易手机. 指纹识别并不安全 指纹数据可以被窃取[EB/OL]. [2019-03-19]. http://mobile.163.com/15/0704/06/ATLKNV7R0011179O.html.

[3] 央广网. TrustZone不再安全白帽黑客任意指纹解锁华为p9 Lite[EB/OL]. [2019-03-19]. http://tech.cnr.cn/techgd/20161024/t20161024_523217096.shtml.

[4] GlobalPlatform. GlobalPlatform HomePage[EB/OL]. [2019-03-19]. http://www.globalplatform.org/.

[5] 国炜,潘娟,史德年,等. 移动终端可信环境技术要求 第1部分:总体[Z]. 2015.

[6] 国炜,潘娟,史德年,等. 移动终端可信环境技术要求 第2部分:可信执行环境[Z]. 2015.

[7] 国炜,潘娟,史德年,等. 移动终端可信环境技术要求 第3部分:安全存储[Z]. 2015.

[8] 国炜,潘娟,史德年,等. 移动终端可信环境技术要求 第4部分:安全操作系统[Z]. 2015.

[9] 国炜,潘娟,史德年,等. 移动终端可信环境技术要求 第5部分:与输入输出部分的安全交互[Z]. 2016.

[10] 国炜,樊俊锋,焦四辈,等. 移动终端安全环境安全评估内容和方法[Z]. 2017.

[11] 詹鹏翼,路晔绵,詹维骁,等. 模糊测试技术在可信执行环境安全评测中的应用[J]. 移动通信, 2017,41(21): 1-5.

[12] MIKE KELLY. Choosing a Test Automation Framework[Z]. 2003.

[13] 周娟,蒋外文. 基于Web的自动化测试框架[J]. 计算机工程, 2009,35(18): 65-66.

[14] 常征. 功能测试中自动化测试框架的分析与应用[D]. 北京: 北京林业大学, 2007.

[15] 夏晶. 基于QTP的功能自动化测试框架的研究与应用[D]. 武汉: 武汉科技大学, 2010.

[16] GitHub. OP-TEE/optee_os[EB/OL]. [2019-03-19]. https://github.com/OP-TEE/optee_os.

[17] GitHub. OP-TEE 2.6.0[EB/OL]. [2019-03-19]. https://github.com/OP-TEE/optee_os/releases/tag/2.6.0.

猜你喜欢
移动终端自动化
基于移动终端平台的编辑学习和交流方法
国内移动数字出版发展现状及对策研究
基于移动终端的高校移动学习体系构建研究
移动终端云计算应用分析
手机APP在学生信息化管理中的应用探索
AGV小车在白酒行业自动化立体仓库中的应用
配电室无人职守集控站在京博石化的运用
配电线路运行资料管理自动化的探讨