相关动态
OPTEE之静态TA的创建与调用op手机「OPTEE之静态TA的创建与调用」
2025-01-12 15:13

先简单介绍下optee:TEE是智能手机主处理器中的一块安全区域,保证代码和数据的机密性和完整性;TEE中的数据不会被REE中的程序非法访问;TEE中的 可信应用(TA)在隔离的环境中运行,其 安全性比手机主操作系统(Rich OS,比如Android)高,并且 提供比SE更丰富的功能。optee就是TEE的开源版本,企业可以将其的TEE功能移植到支持trustzone的arm芯片的各种操作系统,包括Android、Linux等其他系统。

目前我所知的OPTEE已经可以支持的设备有如下

  • HiKey 620
  • HiKey 960
  • Raspberry Pi 3
  • STM32MP1

其实还有很多厂商自己移植的,只是不对外公开。optee的官网地址为:Device specific information — OP-TEE documentation documentation

我是使用的qemu方式来验证TEE功能,TEE的理解我这里不详细介绍,网上很多资源可以看到对其的介绍,我主要是讲静态TA的创建方法和调用方法,接下来我的介绍都是在ubuntu上面搭建的optee的qemu环境上进行验证。

首先我大致说下静态TA和动态TA的区别

动态TA:动态TA就是最后编译生成的.TA文件是在REE测,用户可以在文件系统里面找到对应的.TA文件,在调用TA的时候,TEE测会加载该动态TA,然后验证TA是否合法,最后再执行TA中用户开发的代码功能。重点是需要时才会去加载,而且会验证TA合法性,并且TA是存在REE测

静态TA:静态TA最后编译的静态.TA文件是在TEE测,在系统运行的时候,静态TA会跟随系统一起加载起来在TEE测,在调用TA的时候直接进行调用使用。静态TA的重点是系统运行就会加载,我不确定是否需要验证合法性,并且TA在TEE测,用无法看到静态TA。

我们在qemu的optee_examples里面操作的全是属于动态TA的例子,动态TA的使用方法,网上太多了,大家可以按照optee_examples里面的例子自救去实验即可,我们直接讲如何创建静态TA和怎么调用静态TA。

在例子中我创建的是一个生成随机数的静态TA功能,用户在REE测调用静态TA,可以生成指定长度的随机数。

1、qemu的目录如下

 

我们需要在optee_os文件夹里面编辑静态TA,然后在optee_examples里面写调用静态TA的示例

2、新增静态TA的.c文件

 

内容如下:下面的操作就是静态TA的一个测试功能,是生成随机数,需要从REE测传入随机数的长度和生成随机数的种子。

备注一下哈,本来是可以直接调用TA测的生成随机数的函数或者rand函数,但是我试了很久都没调用起来,后来就找到了一个类似随机数生成的源码代替随机数函数。

 

3、修改sub.mk文件,将新的.c文件添加到其中

 

修改后内容如下

 

4、新增.c的头文件

 

内容如下:头文件里面包含了TA的UUID和一些其他参数

 

5、创建静态TA调用示例

在optee_examples创建一个static_test的文件夹

 

Android.mk内容如下

 

CMakeLists.txt内容如下

 

Makefile内容如下

 

host文件夹里面就两个文件:main.c和Makefile

host的main.c文件内容如下

备注:在下面代码可以看到

1)random_uuid是我最后生成随机数的数组,定义的16位,由op.params[0].tmpref.buffer传递给TA

2)sizeof(random_uuid)是随机数长度,由op.params[0].tmpref.size传递给TA

3)datanouse这个没用,只是为了传随机数种子随便定义的字符串数组,这个必须有,不然会报错,我测试出来是这样的,由op.params[1].tmpref.buffer传递给TA(TA那边不会用到这个参数

4)time(NULL)%1000这个是随机数种子,这个必须取余运算,否则TA会报内存溢出错误,猜测是time(NULL)太大了,大家自己也可以试试,由op.params[1].tmpref.size传递给TA

 

host的Makefile文件内容如下

 

6、切换到编译目录

 

然后执行命令

 

输入密码,等待编译完成,在界面输入c,回车 

然后REE测执行optee_static_test命令就会完成静态TA的调用示例,如下图所示

结尾备注

        在没有研究静态TA的时候,其实是不明白何为静态TA,何为动态TA,初学者只知道在optee_examples文件夹内创建自己的新的TA,我直到研究静态TA之前也是这样的理解程度。最后查了各种资料,包括网上资料和书本资料,最后大致明白静态TA和动态TA的调用其实是和CA那边完全没得任何关系的,optee_examples里面的CA怎么调用的TA就还是按照原来的方法调用,区别在于静态TA的源码是在core里面的,而且在代码尾部必须进行注册pseudo_ta_register,见上面的.c的源代码。

        在CA端的host里面的主函数开始调用TA时,CA会根据TA的uuid进行TA的调用,当UUID传到TA端时,TA端的内部函数会拿着这个UUID先在已经存在静态TA里面寻找对应的TA,如果找不到,才会去静态TA寻找,寻找到UUID,如果是在静态TA这边直接进行调用即可;如果在动态TA这边,就先加载动态TA,然后在执行动态TA的功能。CA-TA的调用内部流程如下图所示,该图片摘自《手机安全和可信应用开发指南 TrustZone与OP-TEE技术详解》

 从上图中可以看出,当用户调用TA的时候,先从已经创建的TA链表中查找(我的理解是之前调用过的TA就会被放在这个TA链表中,以后调用就直接调用,再也不用去静态TA或者动态TA中找了,然后再去静态TA中寻找,静态TA中找不到再去动态TA中寻找。

        好了,差不多了,之后再有新的理解看再来补充。

2021年1月20日下午5点补充

     针对main.c里面的op.paramTypes有了新的理解,之前理解的不够透彻,今天突然理解透了来记录一下。     

 

TEEC_PARAM_TYPES里面有四个参数,分别对应op.params[0],op.params[1],op.params[2],op.params[3]这个四个参数的类型。如上面代码所示

1)TEEC_MEMREF_TEMP_OUTPUT,对应op.params[0]参数,使用时就是使用tmpref.buffer和tmpref.size参数,不能调用value.a和value.b参数,否则会报内存错

2)TEEC_MEMREF_TEMP_INPUT,对应op.params[1]参数,使用时只能tmpref.buffer和tmpref.size参数,不能调用value.a和value.b参数,否则也会报内存错

3)当时我是想传随机数种子进入TA,由于没理解清楚,始终传不成功,一直报内存错误,后来理解清楚,就大致明白了op.params[N]里面有既有value也有tmpref,根据我测试结果,这两个参数是不能同时用的。如果我当时只想传随机数参数的话,只需要像下面这样设置就可以了

    以上就是本篇文章【OPTEE之静态TA的创建与调用op手机「OPTEE之静态TA的创建与调用」】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/news/13780.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://mip.xhstdz.com/ , 查看更多   
最新文章
电信卡怎么异地销户 销户流程是什么手机卡停机多久会被注销「电信卡怎么异地销户 销户流程是什么」
随着手机普及率越来越高,人们因为更工作、学习等各种原因更换手机号的频率也是越来越高,对于不用的手机号我们都需要进行销户,
梦金园去年净利同比降17.8%至1.89亿元 海外增700%
《科创板日报》3月29日讯(记者 徐赐豪)近期,黄金行情不断上涨,引发资本市场高度关注,黄金相关的企业也备受瞩目。昨晚公布其
怎么找回qq密码qq密码忘记了手机号也换了怎么办「怎么找回qq密码」
在日常的数字生活中,QQ作为我们常用的通讯工具之一,其账号安全显得尤为重要。然而,偶尔我们可能会遇到忘记密码的尴尬情况。别
大屏智能千元机 酷派5860价格欲破1100元酷派5860手机「大屏智能千元机 酷派5860价格欲破1100元」
(中关村在线手机频道行情报道)2012年3月6日,酷派5860(行货)在“ZOL商城”促销,最新报价为1181元,含发票。本款的配件为:
计步器怎么删掉手机自动计步器「计步器怎么删掉」
计步器作为现代智能设备的一部分,已经成为许多人日常健康管理的得力助手。然而,在某些情况下,用户可能需要删除计步器中的数据
三星今天上午宣布Note7爆炸原因 已导致损失超10亿美元手机爆炸「三星今天上午宣布Note7爆炸原因 已导致损失超10亿美元」
2016年8月, Galaxy Note 7智能手机在上市后,“引爆”了全球对于手机市场安全问题的关注,上百起电池燃烧事故让三星频繁陷入舆
CBA八强出炉!下半区比上半区惨烈,9-12最终排名确定!
在附加赛全部结束之后,八强的对阵已经全部出来了。其中上半区:广厦-青岛、辽宁-新疆。广厦和青岛的比赛,大家肯定都看好广厦。
财知道 | 爆卖上百万件!巴掌大的小东西,是年轻人的“到此一游”
或是四四方方、圆圆造型,或是形态各异,一块硬板刻着各式内容,再配上一块方寸大小的磁力贴片,曾被人吐槽“又土又贵”的冰箱贴
Z趋势:4G高速时代 机会与挑战并存4g手机价格「Z趋势:4G高速时代 机会与挑战并存」
2013年12月4日下午,工业和信息化部向中国联通、中国电信、中国移动正式发放了第四代移动通信业务牌照(即4G牌照),三家均获得T
华为手机工程模式怎么进入(华为手机工程模式怎么进入桌面)手机工程模式「华为手机工程模式怎么进入(华为手机工程模式怎么进入桌面)」
华为手机工程模式怎么进入相信很多小伙伴还不知道,现在让我们一起来看看吧!华为手机工程模式怎么进入(华为手机工程模式怎么进入