optee_test(xtest & GP test)背景、分类、构建及运行

目录

一、optee_test背景

二、optee_test分类

三、optee_test构建

四、optee_test运行


一、optee_test背景

        正如OP-TEE中的其他组件一样,测试框架也起源于ST-Ericsson和STMicroelectronics。几年前,当OP-TEE被开发时,开发人员在所谓的TestFest(为了简单起见,让我们称之为OP-TEE,尽管严格来说它是不正确的,因为当时TEE解决方案还没有真正的名字,它是ST-Ericsson TEE解决方案)中从事GlobalPlatform测试。

        此时,还没有正式的测试套件,也没有准备好的合规计划,TestFests的目标是双重的,第一,确保不同的TEE供应商各自的TEE解决方案按照规范运行,第二,测试工具和规范本身是正确的。与此同时,随着这项工作的进行,有相当多的“standalone”测试用例被实现,作为GlobalPlatform测试的补充。其本质更多的是解决GlobalPlatform中缺失的部分,并测试“corner”用例、硬件和扩展特性。因此,ST-Ericsson的工程师们运行他们自己的测试以及负责GlobalPlatform合规计划的工程师提供的测试。

        当Linaro参与OP-TEE的开发时,也需要测试正在开发的代码,同时希望让成员能够使用合适的测试框架。唯一的问题是,来自GlobalPlatform的测试用例不能与任何人共享(包括Linaro),因为要访问这些用例,公司要么必须是GlobalPlatform的成员,要么必须直接从GlobalPlatform购买所需的文件。因此,来自ST的工程师立即开始将他们自己实现的测试与他们从GlobalPlatform获得的测试分开。当这项工作完成后,他们将自己开发的测试与Linaro的工程师、Linaro的成员分享。这些测试代码就是我们今天所说的“标准测试”,也是可以在GitHub上找到的OP-TEE项目optee_test。该存储库不再是Linaro及其成员私有的。

Git location:GitHub - OP-TEE/optee_test: Test suite

二、optee_test分类

        optee_test.git包含Linux中使用ARM TrustZone技术的TEE完整性测试套件的源代码。它通常被称为xtest。默认情况下,在运行git中的代码时,会有数千个测试。但是,也可以合并来自GlobalPlatform的测试(参见扩展测试(GlobalPlatform测试))。也就是说它们是互为补充的,我们通常将它们称为:

1、标准测试Standard tests):这些是optee_test中包含的测试,它们是免费和开源的。

2、扩展测试Extended tests):这些测试是由GlobalPlatform直接编写的。它们不是开源的,也不是免费提供的(它对GlobalPlatform的成员是免费的,可以直接从GlobalPlatform购买)。具体可参考《TEE GP(Global Platform)安全认证方案》和《TEE GP(Global Platform)功能认证方案》

optee_test(xtest & GP test)背景、分类、构建及运行_第1张图片

        如果在标准测试之外,还启用GP扩展测试,那么将获得更好的覆盖率。然而,对于安全性测试来说,还有很多工作要做。既有概念,也有工具,甚至还有专门从事白盒测试的公司,其目标是找到代码中的错误和潜在漏洞。例如,多年来人们通过使用Trinity(模糊测试器)在Linux内核中发现了许多错误。Trinity的主要目标并不是严格地增强安全性,而是确保Linux内核中的系统调用是健壮的。在某些情况下,崩溃(Linux内核oops)也可能成为内核漏洞利用的入口点,因此,发现和修复由Trinity等工具发现的问题仍然很重要。在安全端运行类似的测试可能会非常有用,GlobalPlatform目前也为其成员提供TEE安全测试套件

三、optee_test构建

        目前,只能将此optee_test.git中的代码构建为整个OP-TEE系统的一部分。因此,请参考build — OP-TEE documentation documentation页面上的说明,了解如何构建完整的OP-TEE。独立构建是不可能的,因为存在以下依赖:

1、Host代码(xtest)依赖于optee_client(它链接libteec、openssl库并使用各种头文件)。

2、TA依赖于optee_os构建的TA-devkit。

        xtest可以扩展/打补丁,以包含GlobalPlatform Compliance Test套件。这可以通过下载GlobalPlatform Compliance Test套件(*.7z文件)并在make调用行添加一个额外的编译器标志(GP_PACKAGE)来完成,例如:

$ make GP_PACKAGE=/tmp/TEE_Initial_Configuration-Test_Suite_v2_0_0_2-2017_06_09.7z

注意:从OP-TEE v3.11.0开始,OP-TEE进行了更新,以支持来自GlobalPlatform Compliance Test套件的TEE_Initial_Configuration-Test_Suite_v2_0_0_2-2017_06_09.7z版本。这是OP-TEE v3.11.0之后唯一受支持的版本。如果您需要运行早期版本的GlobalPlatform Compliance Test套件,那么您需要按照OP-TEE v3.9.0及更早版本的文档中的说明进行操作。

四、optee_test运行

        重要的是要理解您在设备本身上运行xtest,也就是说,这不是您在主机上运行的任何东西。

1、xtest - default

最简单的情况是运行默认配置:

$ xtest

2、xtest - all

这将运行标准xtest中的所有测试。使用-l参数可以调整要运行的测试数量。15是最大的,0是最小的。

$ xtest -l 15

3、xtest - single

要运行单个测试用例,只需指定它的数字,例如:

$ xtest 1001

4、xtest - family

要运行一个族(1xxx, 2xxx等),只需指定它的数字加上下划线。例如,这将运行1xxx家族。

$ xtest _1

5、xtest - benchmark

要运行benchmark测试,像这样运行xtest:

$ xtest -t benchmark

这里也可以为某个用例执行benchmark测试,例如:

$ xtest -t benchmark 2001

6、xtest - regression

要运行回归测试,像这样运行xtest:

$ xtest -t regression

这里也可以为某个用例执行回归测试,例如:

$ xtest -t regression 2004

7、xtest - aes-perf

这是AES的benchmark测试,像这样运行它:

$ xtest --aes-perf

如需help,可以添加-h参数$ xtest --aes-perf -h

8、xtest - sha-perf

这是SHA-xxx的benchmark测试,像这样运行它:

$ xtest --sha-perf

如需help,可以添加-h参数$ xtest --sha-perf -h

参考:

1、optee_test — OP-TEE documentation documentation

2、OP-TEE Test: Testing a Trusted Execution Environment | Blog | Linaro

3、TEE之GP(Global Platform)认证汇总_global platform tee_安全二次方security²的博客-CSDN博客

你可能感兴趣的:(OPTEE,optee_test,optee,test,xtest,GP,test,optee_test构建,optee_test运行)