一种基于TEE规范的安全应用中远程函数调用的方法技术

技术编号:37276986 阅读:14 留言:0更新日期:2023-04-20 23:44
本发明专利技术涉及一种基于TEE规范的安全应用中远程函数调用的方法,包括以下步骤:1)客户应用调用TEEC_InvokeCommand,安全应用备份入口函数上下文;2)安全应用执行业务逻辑并判断是否需要远程函数调用,若否则执行完成,返回调用结果;若是则封装调用参数并备份中断函数上下文,快速返回客户应用;3)客户应用解析调用参数、系统调用和封装调用结果,并调用TEEC_InvokeCommand;4)安全应用获取远程函数调用上下文,恢复调用现场,解析远程调用结果,执行步骤2)。与现有技术相比,本发明专利技术具有允许安全应用随时通过远程调用方式使用富执行环境内的功能、允许任意类型和任意方向的参数传递等优点。优点。优点。

【技术实现步骤摘要】
一种基于TEE规范的安全应用中远程函数调用的方法


[0001]本专利技术涉及一种远程函数调用的方法,尤其是涉及一种基于TEE规范的安全应用中远程函数调用的方法。

技术介绍

[0002]国际标准组织(Global Platform,GP)定义了一套标准的可信执行环境(Trusted Execution Environment,TEE)内安全应用的执行模型和与安全应用通信的接口规范。在该套模型中,安全应用(Trusted Application,TA)的使用者被称为客户应用(Client Application,CA);安全应用以类似客户端

服务端的模式向客户应用提供服务。在处理客户应用的请求的过程中,安全应用可以调用Global Platform Internal API(国际标准组织制定的网络接口规范)定义的接口,以满足具体一些业务的基础需求,比如存储功能,密钥使用,内存管理等。
[0003]Global Platform Internal API所开放的接口拥有较高的通用性。但相对于富执行环境(Rich Execution Environment,REE)所提供的接口(如POSIX API),其实现的功能是极为有限的。而随着安全应用内部的逻辑日益复杂,规范中定义的接口已经不太能够满足开发的需求。
[0004]目前安全应用的开发者一般需要手动将所需的功能从富执行环境中的实现移植到可信执行环境的安全应用中。但这种方法存在几个问题:1)对开发者的开发水平拥有相对较高的要求;2)增加了可信执行环境内的资源要求;3)部分需要移植的功能其本身对操作系统的底层特性存在要求,而目前可信执行环境内的操作系统无法满足这一要求。
[0005]同时,在一个安全应用的完整业务内,不同的业务逻辑的安全要求是存在差异的。可能存在部分业务逻辑(比如网络包的发送等)的安全要求相对较低,可以直接在富执行环境中执行。因此,对于该类型的业务逻辑,与其将其完整地移植进入可信执行环境,直接由可信执行环境内的应用调用富执行环境内的对应功能是节省资源和降低开发难度的较佳选择。
[0006]然而,目前的Global Platform接口规范使得上述方法难以实现。这是因为,该规范不允许安全应用在处理请求的过程中临时返回并调用富执行环境内的功能。因此,现有的方案通常需要对整个安全应用的业务逻辑进行细粒度的拆分,这实际上增加了整个安全方案的复杂度,并且其本身的安全性也不高。

技术实现思路

[0007]本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种基于TEE规范的安全应用中远程函数调用的方法,实现在Global Platform安全应用内随时可通过远程调用使用富执行环境内功能。
[0008]本专利技术的目的可以通过以下技术方案来实现:
[0009]一种基于TEE规范的安全应用中远程函数调用的方法,所述的方法包括以下步骤:
[0010]1)客户应用调用TEEC_InvokeCommand,安全应用备份入口函数上下文,进入步骤2);
[0011]2)安全应用执行业务逻辑并判断是否需要远程函数调用,若否,则安全应用业务逻辑执行完成,返回调用结果给客户应用;若是,则安全应用封装调用参数并备份中断函数上下文,快速从安全应用中返回客户应用,执行步骤3);
[0012]3)客户应用解析调用参数、系统调用和封装调用结果,并再次调用TEEC_InvokeCommand,执行步骤4);
[0013]4)安全应用获取远程函数调用上下文,并恢复调用现场,解析远程调用结果,执行步骤2)。
[0014]进一步地,所述的步骤1)具体为:
[0015]101)在安全应用中分配内存,创建一个远程函数跳转上下文实例;
[0016]102)将TA_InvokeCommandEntryPoint传入的会话上下文、命令ID和命令参数备份至远程函数跳转上下文实例中;
[0017]103)跳转至入口记录函数。
[0018]进一步地,所述的步骤103)具体为:
[0019]1031)、备份除了程序计数器寄存器之外的所有通用寄存器;
[0020]1032)、将链接寄存器的值压入栈中,并依次将R0、R1、R2寄存器的值赋为R1、R2、R3寄存器的值,跳转至真实的业务逻辑中;
[0021]1033)、将栈指针寄存器的值减去指定值,增加入口记录函数的栈帧尺寸;
[0022]1034)、跳转至处理真正业务逻辑的函数入口,执行步骤2)。
[0023]进一步地,所述的入口记录函数接收4个参数,包括远程函数跳转上下文实例中的入口函数上下文、远程函数跳转上下文中备份的会话上下文、远程函数跳转上下文中备份的命令ID和远程函数跳转上下文中备份的命令参数。
[0024]进一步地,所述的步骤2)具体为:
[0025]201)、获得当前的远程函数调用上下文;
[0026]202)、将需要传至富执行环境的函数的参数序列化,并将序列化后的内容拷贝至远程函数调用上下文中的远程函数调用请求参数中;
[0027]203)、调用快速中断函数,并备份中断函数上下文,从安全应用快速返回;其中,快速中断函数接受远程函数调用上下文中的中断函数上下文作为参数,采用汇编实现。
[0028]进一步地,所述的步骤203)具体为:
[0029]2031)、将除程序计数器寄存器之外的所有通用寄存器备份至中断函数上下文对应的结构体中;
[0030]2032)、通过内存拷贝将入口记录函数的下一个栈帧到快速中断函数前的所有的栈内容备份至远程函数调用上下文的栈备份空间中;
[0031]2033)、根据远程函数调用上下文中的入口函数上下文的内容设置通用寄存器的值;
[0032]2034)、将R0复制为一个预先定义的远程函数调用请求魔数,表示此次函数返回的原因为远程函数调用,其实际的业务逻辑尚未执行完成;
[0033]2035)、将链接寄存器内容赋给程序计数器寄存器,构成入口记录函数返回的位置
的跳转,并返回远程函数调用请求魔数。
[0034]进一步地,所述的步骤3)具体为:
[0035]入口记录函数返回处判断返回值,若返回值为远程函数调用请求魔数,则安全应用直接返回;在客户应用中根据安全应用的返回值和返回参数进行富执行环境功能的调用;调用完成后,客户应用将调用结果通过TEEC_InvokeCommand重新传回到安全应用中,此时TEEC_InvokeCommand的命令ID为远程函数调用恢复魔数。
[0036]进一步地,所述的步骤4)具体为:
[0037]401)、根据传入参数中获取的上下文ID获得指定的远程函数调用上下文;
[0038]402)、调用恢复上下文函数,其中恢复上下文函数接受远程函数调用上下文中的中断函数上下文作为参数,采用汇编实现;
[0039]403)、在快速中断函数返回的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于TEE规范的安全应用中远程函数调用的方法,其特征在于,所述的方法包括以下步骤:1)客户应用调用TEEC_InvokeCommand,安全应用备份入口函数上下文,进入步骤2);2)安全应用执行业务逻辑并判断是否需要远程函数调用,若否,则安全应用业务逻辑执行完成,返回调用结果给客户应用;若是,则安全应用封装调用参数并备份中断函数上下文,快速从安全应用中返回客户应用,执行步骤3);3)客户应用解析调用参数、系统调用和封装调用结果,并再次调用TEEC_InvokeCommand,执行步骤4);4)安全应用获取远程函数调用上下文,并恢复调用现场,解析远程调用结果,执行步骤2)。2.根据权利要求1所述的一种基于TEE规范的安全应用中远程函数调用的方法,其特征在于,所述的步骤1)具体为:101)在安全应用中分配内存,创建一个远程函数跳转上下文实例;102)将TA_InvokeCommandEntryPoint传入的会话上下文、命令ID和命令参数备份至远程函数跳转上下文实例中;103)跳转至入口记录函数。3.根据权利要求2所述的一种基于TEE规范的安全应用中远程函数调用的方法,其特征在于,所述的步骤103)具体为:1031)、备份除了程序计数器寄存器之外的所有通用寄存器;1032)、将链接寄存器的值压入栈中,并依次将R0、R1、R2寄存器的值赋为R1、R2、R3寄存器的值,跳转至真实的业务逻辑中;1033)、将栈指针寄存器的值减去指定值,增加入口记录函数的栈帧尺寸;1034)、跳转至处理真正业务逻辑的函数入口,执行步骤2)。4.根据权利要求2所述的一种基于TEE规范的安全应用中远程函数调用的方法,其特征在于,所述的入口记录函数接收4个参数,包括远程函数跳转上下文实例中的入口函数上下文、远程函数跳转上下文中备份的会话上下文、远程函数跳转上下文中备份的命令ID和远程函数跳转上下文中备份的命令参数。5.根据权利要求1所述的一种基于TEE规范的安全应用中远程函数调用的方法,其特征在于,所述的步骤2)具体为:201)、获得当前的远程函数调用上下文;202)、将需要传至富执行环境的函数的参数序列化,并将序列化后的内容拷贝至远程函数调用上下文中的远程函数调用请求参数中;203)、调用快速中断函数,并备份中断函数上下文,从安全应用快速返回;其中,快速中断函数接受远程函数调用上下文中的中断函数上下文作为参数,采用汇编实现。6.根据权利要求5所述的一种基于TEE规范的安全应用中远程函数调用的方法,其特征在于,所述的步骤203)具体为:2031)、将除程序计数器寄存器之外的所有通用寄存器备份至中断函数上下文对应的结构体中;2032)、通过内存拷贝将入口记录函数...

【专利技术属性】
技术研发人员:梁凉赵旭棹利文浩
申请(专利权)人:上海瓶钵信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1