当前位置:文档之家› 应用程序的运行控制方法及设备的制作方法

应用程序的运行控制方法及设备的制作方法

本技术提供了一种应用程序的运行控制方法及装置。

方法包括获得基于至少一个第一系统调用以及至少一个第二系统调用编写的预设编程语言的标准库的源码,第一系统调用为SGX不支持的系统调用,第二系统调用为SGX支持的系统调用;根据至少一个第一系统调用,获得至少一个第三系统调用,所述第三系统调用是第一系统调用经过修改后得到的SGX支持的系统调用;根据至少一个第二系统调用以及至少一个第三系统调用,得到SGX支持的动态链接库;根据SGX支持的动态链接库,控制应用程序在SGX的安全内存上运行。

本技术避免了对软件源码的大量重复修改,实现不增加开发成本的同时,软件可以运行在SGX的安全内存上,保护了软件的机密性和完整性,增强了软件的运行安全。

权利要求书1.一种应用程序的运行控制方法,其特征在于,包括:获得预设编程语言的标准库的源码,所述预设编程语言的标准库的源码是基于软件防护扩展SGX不支持的至少一个第一系统调用以及所述SGX支持的至少一个第二系统调用编写的;根据所述SGX不支持的至少一个第一系统调用,获得所述SGX支持的至少一个第三系统调用;根据所述至少一个第二系统调用以及所述至少一个第三系统调用,得到所述SGX支持的动态链接库;根据所述SGX支持的动态链接库,控制应用程序在所述SGX的安全内存上运行。

2.根据权利要求1所述的应用程序的运行控制方法,其特征在于,根据所述SGX不支持的至少一个第一系统调用,获得所述SGX支持的至少一个第三系统调用,包括:将所述SGX不支持的至少一个第一系统调用进行分类,得到多种类型的系统调用;将所述多种类型的系统调用按照SGX的软件开发工具包SDK重新实现,得到所述SGX支持的至少一个第三系统调用。

3.根据权利要求1所述的应用程序的运行控制方法,其特征在于,根据所述至少一个第二系统调用以及所述至少一个第三系统调用,得到所述SGX支持的动态链接库,包括:将所述预设编程语言的标准库的源码中的至少一个所述第一系统调用重定向为至少一个所述第三系统调用,根据至少一个所述第二系统调用以及至少一个所述第三系统调用,获得SGX 支持的动态链接库的源码;对SGX支持的动态链接库的源码进行编译,得到所述SGX支持的动态链接库。

4.根据权利要求1所述的应用程序的运行控制方法,其特征在于,根据所述SGX支持的动态链接库,控制应用程序在所述SGX的安全内存上运行,包括:根据所述SGX支持的动态链接库和所述SGX的安全内存,建立所述应用程序运行的隔离环境;控制所述应用程序在所述隔离环境中的所述SGX的安全内存中运行。

5.根据权利要求4所述的应用程序的运行控制方法,其特征在于,根据所述SGX支持的动态链接库和所述SGX的安全内存,建立所述应用程序运行的隔离环境,包括:根据所述SGX支持的动态链接库以及配置文件,生成所述应用程序的依赖文件列表;对所述依赖文件和所述应用程序进行完整性度量,并将生成的基准度量值写入所述依赖文件列表;创建所述SGX的安全内存;加载所述SGX支持的动态链接库至所述SGX的安全内存,得到所述应用程序运行的隔离环境。

6.根据权利要求5所述的应用程序的运行控制方法,其特征在于,对所述依赖文件和所述应用程序进行完整性度量,并将生成的基准度量值写入所述依赖文件列表,包括:对所述依赖文件进行哈希运算,生成第一哈希值;将所述第一哈希值作为完整性度量的所述基准度量值,并将所述第一哈希值写入所述依赖文件列表。

7.根据权利要求5或6所述的应用程序的运行控制方法,其特征在于,控制所述应用程序在所述隔离环境中的所述SGX的安全内存中运行,包括:加载所述应用程序和所述依赖文件列表;对所述应用程序和所述依赖文件列表中的所述依赖文件进行校验;校验通过后,在所述隔离环境中的所述SGX的安全内存中,为所述应用程序分配运行所需的内存空间;控制所述应用程序在分配的所述内存空间中运行。

8.根据权利要求7所述的应用程序的运行控制方法,其特征在于,对所述应用程序和所述依赖文件列表中的所述依赖文件进行校验,包括:对所述应用程序和所述依赖文件进行哈希运算,生成第二哈希值;将所述第二哈希值与所述依赖文件列表中的所述基准度量值进行比较,若所述第二哈希值与基准哈希值匹配,则校验通过。

9.根据权利要求7所述的应用程序的运行控制方法,其特征在于,在所述隔离环境中的所述SGX的安全内存中,为所述应用程序分配运行所需的内存空间,包括:通过解析所述应用程序的文件,获取所述应用程序的文件格式;根据所述应用程序的文件格式,识别所述应用程序的数据段和代码段;在所述SGX的安全内存中,为所述应用程序的数据和代码分配运行所需的内存空间。

10.一种应用程序的运行控制装置,其特征在于,包括:第一获取模块,用于获得预设编程语言的标准库的源码,所述预设编程语言的标准库的源码中包括软件防护扩展SGX不支持的至少一个第一系统调用以及所述SGX支持的至少一个第二系统调用;第二获取模块,用于根据所述SGX不支持的至少一个第一系统调用,获得所述SGX支持的至少一个第三系统调用;第三获取模块,用于根据所述至少一个第二系统调用以及所述至少一个第三系统调用,得到所述SGX支持的动态链接库;控制模块,用于根据所述SGX支持的动态链接库,控制应用程序在所述SGX的安全内存上运行。

11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至9中任一项所述的应用程序的运行控制方法的步骤。

技术说明书一种应用程序的运行控制方法及装置技术领域本技术涉及信息安全技术领域,尤其涉及一种应用程序的运行控制方法及装置。

背景技术软件安全是信息安全领域的重要内容,也是软件开发者面临的严峻挑战。

传统的安全手段很难保障软件运行过程中的内存安全。

软件防护扩展(Software GuardExtensions,简称SGX)是英特尔体系(IA)的一个扩展,用于增强软件的安全性,可保护软件的敏感代码和数据的机密性和完整性。

但SGX并不支持所有的系统调用,比如不支持部分I/O读写、多线程、多进程等系统调用。

如果采用SGX保护软件运行过程中的内存安全,使软件可以运行在SGX的安全内存上,以保护软件的机密性和完整性,就必须要修改软件源码,使得软件的开发成本增加。

技术内容本技术提供一种应用程序的运行控制方法及装置,解决了在采用SGX保护软件运行过程中的内存安全时,需要修改软件源码,使得软件的开发成本增加的问题。

依据本技术的一方面,提供一种应用程序的运行控制方法,包括:获得预设编程语言的标准库的源码,所述预设编程语言的标准库的源码是基于软件防护扩展SGX不支持的至少一个第一系统调用以及所述SGX支持的至少一个第二系统调用编写的;根据所述SGX不支持的至少一个第一系统调用,获得所述SGX支持的至少一个第三系统调用;根据所述至少一个第二系统调用以及所述至少一个第三系统调用,得到所述SGX支持的动态链接库;根据所述SGX支持的动态链接库,控制应用程序在所述SGX的安全内存上运行。

可选的,根据所述SGX不支持的至少一个第一系统调用,获得所述SGX支持的至少一个第三系统调用,包括:将所述SGX不支持的至少一个第一系统调用进行分类,得到多种类型的系统调用;将所述多种类型的系统调用按照SGX的软件开发工具包SDK重新实现,得到所述SGX支持的至少一个第三系统调用。

可选的,根据所述至少一个第二系统调用以及所述至少一个第三系统调用,得到所述SGX支持的动态链接库,包括:将所述预设编程语言的标准库的源码中的至少一个所述第一系统调用重定向为至少一个所述第三系统调用,根据至少一个所述第二系统调用以及至少一个所述第三系统调用,获得SGX 支持的动态链接库的源码;对SGX支持的动态链接库的源码进行编译,得到所述SGX支持的动态链接库。

可选的,根据所述SGX支持的动态链接库,控制应用程序在所述SGX的安全内存上运行,包括:根据所述SGX支持的动态链接库和所述SGX的安全内存,建立所述应用程序运行的隔离环境;控制所述应用程序在所述隔离环境中的所述SGX的安全内存中运行。

可选的,根据所述SGX支持的动态链接库和所述SGX的安全内存,建立所述应用程序运行的隔离环境,包括:根据所述SGX支持的动态链接库以及配置文件,生成所述应用程序的依赖文件列表;对所述依赖文件和所述应用程序进行完整性度量,并将生成的基准度量值写入所述依赖文件列表;创建所述SGX的安全内存;加载所述SGX支持的动态链接库至所述SGX的安全内存,得到所述应用程序运行的隔离环境。

可选的,对所述依赖文件和所述应用程序进行完整性度量,并将生成的基准度量值写入所述依赖文件列表,包括:对所述依赖文件进行哈希运算,生成第一哈希值;将所述第一哈希值作为完整性度量的所述基准度量值,并将所述第一哈希值写入所述依赖文件列表。

可选的,控制所述应用程序在所述隔离环境中的所述SGX的安全内存中运行,包括:加载所述应用程序和所述依赖文件列表;对所述应用程序和所述依赖文件列表中的所述依赖文件进行校验;校验通过后,在所述隔离环境中的所述SGX的安全内存中,为所述应用程序分配运行所需的内存空间;控制所述应用程序在分配的所述内存空间中运行。

可选的,对所述应用程序和所述依赖文件列表中的所述依赖文件进行校验,包括:对所述应用程序和所述依赖文件进行哈希运算,生成第二哈希值;将所述第二哈希值与所述依赖文件列表中的所述基准度量值进行比较,若所述第二哈希值与基准哈希值匹配,则校验通过。

可选的,在所述隔离环境中的所述SGX的安全内存中,为所述应用程序分配运行所需的内存空间,包括:通过解析所述应用程序的文件,获取所述应用程序的文件格式;根据所述应用程序的文件格式,识别所述应用程序的数据段和代码段;在所述SGX的安全内存中,为所述应用程序的数据和代码分配运行所需的内存空间。

依据本技术的又一方面,提供一种应用程序的运行控制装置,包括:第一获取模块,用于获得预设编程语言的标准库的源码,所述预设编程语言的标准库的源码中包括软件防护扩展SGX不支持的至少一个第一系统调用以及所述SGX支持的至少一个第二系统调用;第二获取模块,用于根据所述SGX不支持的至少一个第一系统调用,获得所述SGX支持的至少一个第三系统调用;第三获取模块,用于根据所述至少一个第二系统调用以及所述至少一个第三系统调用,得到所述SGX支持的动态链接库;控制模块,用于根据所述SGX支持的动态链接库,控制应用程序在所述SGX的安全内存上运行。

依据本技术的又一方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如上所述的应用程序的运行控制方法的步骤。

本技术的上述技术方案的有益效果是:上述方案,通过修改预设编程语言的标准库的源码,将预设编程语言的标准库的源码中的SGX不支持的至少一个第一系统调用修改为SGX支持的至少一个第三系统调用,获得SGX支持的动态链接库。

相关主题