SGX多线程下通用的函数调用方法、装置、设备及介质制造方法及图纸

技术编号:38596842 阅读:13 留言:0更新日期:2023-08-26 23:32
本申请公开了一种SGX多线程下通用的函数调用方法、装置、设备及存储介质,涉及安全计算领域,包括:判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。基于软件保护扩展在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,提高函数调用效率的同时保障了函数调用的安全性。时保障了函数调用的安全性。时保障了函数调用的安全性。

【技术实现步骤摘要】
SGX多线程下通用的函数调用方法、装置、设备及介质


[0001]本专利技术涉及安全计算领域,特别涉及一种SGX多线程下通用的函数调用方法、装置、设备及存储介质。

技术介绍

[0002]SGX(Software Guard Extensions,软件保护扩展)是一项TEE(Trusted Execute Environment,可信执行环境)技术,可以提供安全内存,开发者需将APP划分为不可信部分和可信部分(Enclave,受安全保护的内存),不可信部分通过访问控制进入Enclave执行敏感代码,ECALL接口是Enclave的入口,Enclave内部保存ECALL函数的代码。但是,这项技术更安全的同时付出了极大的代价,SGX中SDK(Software Development Kit,软件开发工具包)的额外开销比较大,在几千个Cycle以上,比不使用SGX技术的正常函数调用慢了差不多50倍速度以上,且在这种编程模型下,用户需要将业务分割成Host和Enclave两部分进行编程,还需要编写ecall(ocall)代码实现Host和Enclave之间的切换和信息交互,编程难度较大,对存量业务进行改造也有一定困难。
[0003]现有技术中针对上述问题的解决已经做了很多无切换调用方式的尝试,如图1所示,SCONE方案基于无锁队列的异步系统调用机制完成数据传递及同步,HotCalls方案中利用自旋锁控制完成函数调用及传递同步。另外Haven、SGXKernal、Graphene方案则通过移植一些操作系统库/函数库到enclave来达到函数调用时减少模式切换的目的,上述方案在其某些特定的应用场景下性能都有所提升,但<<SGX应用支持技术研究进展>>中也指出这种无切换调用技术在效率方面存在疑问,用额外的CPU(central processing unit,中央处理器)内核来减少模式切换未必是合理的。由于无切换调用必须由工作线程执行,因此需要额外的CPU内核,这样一来,实现的加速比随着工作量的减少而减小,在几乎空闲的工作负载的极端情况下,使用的额外CPU内核造成的资源浪费严重。因此,如何在多线程进行函数调用时更加合理地提高函数调用效率是本领域亟待解决的问题。

技术实现思路

[0004]有鉴于此,本专利技术的目的在于提供一种SGX多线程下通用的函数调用方法、装置、设备及存储介质,可以基于软件保护扩展在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,提高函数调用效率的同时保障了函数调用的安全性。其具体方案如下:
[0005]第一方面,本申请提供了一种多线程函数调用方法,包括:
[0006]判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;
[0007]确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;
[0008]根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调
用函数的函数调用。
[0009]可选的,所述根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库之后,还包括:
[0010]生成所述若干个密码动态库对应的若干个线程锁,并对所述若干个线程锁进行初始化,以便利用所述若干个线程锁使用对应的所述若干个密码动态库;所述若干个线程锁是相对独立的。
[0011]可选的,所述根据所述当前运行线程确定目标密码动态库,包括:
[0012]基于预设线程ID(Identity document,身份标识号)数据库确定所述当前运行线程的线程ID,根据所述线程ID和所述线程数利用预设密码库确定规则确定所述线程ID对应的目标密码动态库。
[0013]可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用,包括:
[0014]确定所述软件开发工具包中所述目标密码动态库对应的目标接口;
[0015]调用所述目标接口使用所述目标密码动态库对应的目标线程锁开启所述目标密码动态库,以进行函数调用。
[0016]可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用之后,还包括:
[0017]判断所述当前待调用函数进行函数调用后确定的函数结果数据是否正确返回;
[0018]当所述函数结果数据返回错误时,返回所述函数结果数据对应的错误提示信息。
[0019]可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用,包括:
[0020]同时运行所述软件开发工具包中和所述若干个密码动态库对应的若干个预设接口,以并行地进行若干个所述当前待调用函数的函数调用。
[0021]可选的,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用之后,还包括:
[0022]调用所述软件开发工具包中的预设接口结束所述若干个密码动态库,并退出所述软件保护扩展。
[0023]第二方面,本申请提供了一种多线程函数调用装置,包括:
[0024]动态库生成模块,用于判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;
[0025]线程确定模块,用于确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;
[0026]函数调用模块,用于根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。
[0027]第三方面,本申请提供了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述的多线程函数调用方法。
[0028]第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的多线程函数调用方法。
[0029]通过上述技术方案,本申请判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。基于软件保护扩展在多线程下通过多个独立的密码动态库进行函数调用,减少受安全保护的内存中的接口修改,在多进程进行函数调用时,提高了函数调用效率的同时保障了函数调用的安全性,并且通过多个独立的软件保护扩展密码动态库比直接利用软件保护扩展进行通过软件开发工具包的调用更快,由于密码动态库的处理与底层可信执行环境的处理隔离开,不需要修改可信执行环境中的接口,使用原SGX SD本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多线程函数调用方法,其特征在于,包括:判断当前处理器的线程数,并根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库;确定当前待调用函数对应的当前运行线程,根据所述当前运行线程确定目标密码动态库;根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用。2.根据权利要求1所述的多线程函数调用方法,其特征在于,所述根据所述线程数拷贝初始密码动态库,以启动软件保护扩展生成与若干个处理器线程对应的若干个密码动态库之后,还包括:生成所述若干个密码动态库对应的若干个线程锁,并对所述若干个线程锁进行初始化,以便利用所述若干个线程锁使用对应的所述若干个密码动态库;所述若干个线程锁是相对独立的。3.根据权利要求2所述的多线程函数调用方法,其特征在于,所述根据所述当前运行线程确定目标密码动态库,包括:基于预设线程ID数据库确定所述当前运行线程的线程ID,根据所述线程ID和所述线程数利用预设密码库确定规则确定所述线程ID对应的目标密码动态库。4.根据权利要求2所述的多线程函数调用方法,其特征在于,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用,包括:确定所述软件开发工具包中所述目标密码动态库对应的目标接口;调用所述目标接口使用所述目标密码动态库对应的目标线程锁开启所述目标密码动态库,以进行函数调用。5.根据权利要求1所述的多线程函数调用方法,其特征在于,所述根据所述目标密码动态库调用软件开发工具包中的预设接口进行所述当前待调用函数的函数调用之后,还包括:判断所述当前待调...

【专利技术属性】
技术研发人员:罗翀于昇陈邦道周胜平杨嘉诚
申请(专利权)人:云海链控股股份有限公司
类型:发明
国别省市:

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

1