动态组件化可信执行环境的安全芯片及其组件装载方法
文献发布时间:2023-06-19 13:26:15
技术领域
本发明属于安全芯片技术领域,特别涉及一种动态组件化可信执行环境的安全芯片及其组件装载方法。
背景技术
随着当前对安全可信的越发重视,越来越多的平台带有一个可信平台模块(Trusted Platform Module,TPM)/可信计算模块(Trusted Cryptography Module,TCM)芯片提供基础的可信服务。传统的TPM/TCM芯片提供标准的功能,而实现的需求快速变化,现有的标准难以满足。例如TPM/TCM本身具有一定的可信执行环境(Trusted ExecutionEnvironment,TEE)能力,但是不能对外提供可定制化的可信计算服务。比如需要增加新的非对称算法或者加密算法的函数,将难以标准化进入TPM/TCM可信芯片,无法在现有TPM/TCM芯片上使用。因此,现有技术中TPM/TCM芯片无法直接在可信执行环境TEE中增加可执行代码。
发明内容
本发明实施例提供一种动态组件化可信执行环境的安全芯片及其组件装载方法,解决了现有技术中TPM/TCM芯片无法直接在可信执行环境TEE中增加可执行代码的问题。
第一方面,本发明的实施例提供一种动态组件化可信执行环境的安全芯片,包括:
可信计算安全系统,为所述安全芯片提供可信执行环境;
动态组件管理器,用于获取待装载的目标组件以及对所述目标组件进行安全验证,所述目标组件为预先制作好的可执行代码,且所述目标组件为可重定位模式;
动态组件装载器,用于将所述目标组件装载到所述安全芯片中;
将所要增加到所述安全芯片中的代码编译成组件,作为目标组件;在装载所述目标组件的过程中,在所述动态组件管理器获取所述目标组件之后,所述动态组件装载器根据所述动态组件管理器获取的所述目标组件,为所述目标组件配置存储地址并保存所述目标组件;所述动态组件管理器对所述目标组件进行安全验证;所述动态组件装载器对通过所述安全验证的所述目标组件进行初始化并生成所述目标组件的符号表,将所述符号表映射到所述动态组件管理器。
进一步地,所述动态组件管理器与所述安全芯片的物理总线连接;
所述动态组件管理器通过所述物理总线获取所述目标组件。
进一步地,所述目标组件携带有第一密钥;
所述动态组件管理器对所述目标组件进行安全验证,包括:
所述动态组件管理器根据自身存储的第二密钥以及所述第一密钥,对所述目标组件进行安全验证。
进一步地,所述目标组件至少包括初始化函数和结束函数;
所述动态组件装载器对通过所述安全验证的所述目标组件进行初始化,包括:
获取所述目标组件的初始化函数;
根据所述初始化函数对所述目标组件进行初始化。
第二方面,本发明的实施例提供一种安全芯片的动态化组件装载方法,包括:
获取待装载的目标组件;
根据所述目标组件所需内存的大小为所述目标组件分配内存地址,并保存所述目标组件至所述内存地址;
对所述目标组件进行安全验证;
对通过所述安全验证的所述目标组件初始化;
生成所述目标组件的符号表,所述符号表包括所述目标组件中的函数名称、变量名称以及每个函数的内存地址;
将所述符号表映射到动态组件管理器;
其中,所述目标组件为预先制作好的可执行代码;将所要增加到所述安全芯片中的代码编译成组件,作为目标组件。
可选地,所述方法还包括:
接收用户的调用请求,所述调用请求包括所述目标组件的ID;
根据所述目标组件的ID,查找所述组件对应的符号表,确定所述调用请求对应的功能信息;
将所述功能信息发送给所述用户,并向所述用户反馈调用完成响应。
进一步地,所述目标组件携带有第一密钥;
所述对所述目标组件进行安全验证,包括:
根据所述第一密钥对所述目标组件进行校验。
进一步地,所述对所述目标组件进行初始化,包括:
获取所述目标组件的初始化函数;
根据所述初始化函数对所述目标组件进行初始化。
第三方面,本发明的实施例提供一种安全芯片的动态化组件装载装置,包括:
获取模块,用于获取待装载的目标组件;
保存模块,用于根据所述目标组件为所述目标组件分配内存地址,并保存所述目标组件至所述内存地址;
验证模块,用于对所述目标组件进行安全验证;
初始化模块,用于对通过所述安全验证的所述目标组件初始化;
生成模块,用于生成所述目标组件的符号表,所述符号表包括所述目标组件中的函数名称、变量名称以及每个函数的内存地址;
映射模块,用于将所述符号表映射到动态组件管理器;
其中,所述目标组件为预先制作好的可执行代码;将所要增加到所述安全芯片中的代码编译成组件,作为目标组件。
第四方面,本发明的实施例提供一种安全芯片的动态化组件装载设备,包括:收发机、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述计算机程序时实现如上所述的安全芯片的动态化组件装载方法的步骤。
第五方面,本发明的实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述的安全芯片的动态化组件装载方法的步骤。
本发明的上述技术方案的有益效果是:
本发明实施例的动态组件化可信执行环境的安全芯片,将函数编译成组件,作为所述安全芯片待装载的目标组件,并在所述安全芯片的固件中设置可信计算安全系统、动态组件管理器以及动态组件装载器;通过所述动态组件管理器获取到所述目标组件,所述动态组件装载器将所述目标组件装载到所述安全芯片中,对装载到安全芯片的目标组件进行安全验证,对通过验证之后的目标组件进行初始化,生成符号表后将符号表映射到所述动态组件管理器中。本发明的方案,通过在安全芯片的固件中设置可信计算安全系统、动态组件管理器以及动态组件装载器,解决了现有技术中TPM/TCM芯片无法直接在可信执行环境TEE中增加可执行代码的问题,提高了TPM/TCM芯片的通用性。
附图说明
图1表示本发明实施例的动态组件化可信执行环境的安全芯片的示意图;
图2表示本发明实施例的安全芯片的动态化组件装载方法的步骤示意图;
图3表示本发明实施例的安全芯片的动态化组件装载装置的示意图;
图4表示本发明实施例的安全芯片的动态化组件装载设备的结构框图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本发明的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本发明的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常可互换使用。
在本申请所提供的实施例中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
如图1所示,本发明的实施例提供了一种动态组件化可信执行环境的安全芯片,包括:
可信计算安全系统,为所述安全芯片提供可信执行环境;
动态组件管理器,用于获取待装载的目标组件以及对所述目标组件进行安全验证,所述目标组件为预先制作好的可执行代码,且所述目标组件为可重定位模式;
动态组件装载器,用于将所述目标组件装载到所述安全芯片中;
将所要增加到所述安全芯片中的代码编译成组件,作为目标组件;在装载所述目标组件的过程中,在所述动态组件管理器获取所述目标组件之后,所述动态组件装载器根据所述动态组件管理器获取的所述目标组件,为所述目标组件配置存储地址并保存所述目标组件;所述动态组件管理器对所述目标组件进行安全验证;所述动态组件装载器对通过所述安全验证的所述目标组件进行初始化并生成所述目标组件的符号表,将所述符号表映射到所述动态组件管理器。
需要说明的是,所述安全芯片可以为TPM/TCM芯片;所述安全芯片可以为具有固定功能的安全芯片;传统的TPM/TCM考虑到成本,资源按照仅够其功能需求来设计,主要体现在RAM和闪存资源。本发明的动态组件化可信执行环境的安全芯片的RAM,闪存都必须预留足够多的资源。可选地,RAM可以为400KB以上,而闪存可以在2MB以上,处理器可以在运行80Mhz以上。所述代码包括但不限于用户的算法和加密数据;所述目标组件为函数集。
可选地,所述符号表包括组件ID、函数名称以及变量参数列表。
本发明实施例的动态组件化可信执行环境的安全芯片,将函数编译成组件,作为所述安全芯片待装载的目标组件,并在所述安全芯片的固件中设置可信计算安全系统、动态组件管理器以及动态组件装载器;通过所述动态组件管理器获取到所述目标组件,所述动态组件装载器将所述目标组件装载到所述安全芯片中,对装载到安全芯片的目标组件进行安全验证,对通过验证之后的目标组件进行初始化,生成符号表后将符号表映射到所述动态组件管理器中。本发明的方案,通过在安全芯片的固件中设置可信计算安全系统、动态组件管理器以及动态组件装载器,解决了现有技术中TPM/TCM芯片无法直接在可信执行环境TEE中增加可执行代码的问题,提高了TPM/TCM芯片的通用性。
可选地,所述动态组件管理器与所述安全芯片的物理总线连接;
所述动态组件管理器通过所述物理总线获取所述目标组件。
具体地,所述目标组件以字节流或者命令流的方式被所述动态组件管理器获取,即所述动态组件管理器对外接设备提供装载和卸载组件的接口,在所述目标组件加载完成后,生成的符号表被映射在所述动态组件管理器,所以所述动态组件管理器对所述安全芯片内部提供函数地址查找的功能。
可选地,所述目标组件携带有第一密钥;
所述动态组件管理器对所述目标组件进行安全验证,包括:
所述动态组件管理器根据自身存储的第二密钥以及所述第一密钥,对所述目标组件进行安全验证。
具体地,在制作所述目标组件时,可以对其进行私钥签名,所述动态组件管理器获取到的目标组件为带有第一密钥(私钥)的组件,所述动态组件管理器根据自身存储的第二密钥(可以为公钥)对所述目标组件进行安全验证。
本发明实施例的动态组件化可信执行环境的安全芯片,通过对存入动态组件加载器的组件的安全验证,满足安全芯片对组件装载灵活性的要求的同时,保证了组件装载器的安全性。
可选地,所述目标组件至少包括初始化函数和结束函数;
所述动态组件装载器对通过所述安全验证的所述目标组件进行初始化,包括:
获取所述目标组件的初始化函数;
根据所述初始化函数对所述目标组件进行初始化。
具体地,所述安全组件至少包括两个函数:初始化函数dmod_init和结束函数dmod_exit。当目标组件被所述动态组件加载器加载时会调用初始化函数dmod_init函数,组件被卸载时调用结束函数dmod_exit清理组件的相关信息。
需要说明的是,所述初始化函数可以为空的函数。如图2所示,本发明的实施例提供了一种安全芯片的动态化组件装载方法,包括:
步骤201,获取待装载的目标组件;
步骤202,根据所述目标组件所需内存的大小为所述目标组件分配内存地址,并保存所述目标组件至所述内存地址;
步骤203,对所述目标组件进行安全验证;
步骤204,对通过所述安全验证的所述目标组件初始化;
步骤205,生成所述目标组件的符号表,所述符号表包括所述目标组件中的函数名称、变量名称以及每个函数的内存地址;
步骤206,将所述符号表映射到动态组件管理器;
其中,所述目标组件为预先制作好的可执行代码;将所要增加到所述安全芯片中的代码编译成组件,作为目标组件。
需要说明的是,本发明实施例的安全芯片的动态化组件装载方法,在加载所述目标组件的过程中,所述安全芯片处于运行状态,不需要将所述安全芯片剥离承载其的设备。
本发明实施例的安全芯片的动态化组件装载方法,通过动态组件管理器获取到所述目标组件,动态组件装载器将所述目标组件装载到所述安全芯片中,对装载到安全芯片的目标组件进行安全验证,对通过验证之后的目标组件进行初始化,生成符号表后将符号表映射到动态组件管理器中。本发明的方案,能够满足安全芯片对组件装载灵活性的要求。解决了现有技术中TPM/TCM芯片无法直接在可信执行环境TEE中增加可执行代码的问题,提高了TPM/TCM芯片的通用性。
可选地,所述方法还包括:
接收用户的调用请求,所述调用请求包括所述目标组件的ID;
根据所述目标组件的ID,查找所述组件对应的符号表,确定所述调用请求对应的功能信息;
将所述功能信息发送给所述用户,并向所述用户反馈调用完成响应。
具体地,所述调用功能信息可以包括调用的函数以及所述函数对应的变量参数列表。
本发明一实施例中,将所述目标组件装载完成后,目标组件可以被外接设备调用:外接设备通过所述物理总线连接,动态组件管理器首先通过组件ID查找所述目标组件对应的符号表,并通过函数名找到对应的内存地址,进而完成外接设备的调用请求;当完成组件的调用后,返回外接设备一个响应(例如,返回值:rc,响应字节数组:byte_buf)。
可选地,所述获取待装载的目标组件,包括:
获取所述动态组件管理器通过物理总线获得的目标组件。
具体地,所述目标组件以字节流或者命令流的方式被所述动态组件管理器获取,即所述动态组件管理器对外接设备提供装载和卸载组件的接口,在所述目标组件加载完成后,生成的符号表被映射在所述动态组件管理器,所以所述动态组件管理器对所述安全芯片内部提供函数地址查找的功能。
可选地,所述目标组件携带有第一密钥;
所述对所述目标组件进行安全验证,包括:
根据所述第一密钥对所述目标组件进行校验。
具体地,在制作所述目标组件时,可以对其进行私钥签名,所述动态组件管理器获取到的目标组件为带有第一密钥(私钥)的组件,所述动态组件管理器根据自身存储的第二密钥(可以为公钥)对所述目标组件进行安全验证。
本发明实施例的动态组件化可信执行环境的安全芯片,通过对存入动态组件加载器的组件的安全验证,满足安全芯片对组件装载灵活性的要求的同时,保证了组件装载器的安全性。
可选地,所述对所述目标组件进行初始化,包括:
获取所述目标组件的初始化函数;
根据所述初始化函数对所述目标组件进行初始化。
具体地,所述安全组件至少包括两个函数:初始化函数dmod_init和结束函数dmod_exit。当目标组件被所述动态组件加载器加载时会调用初始化函数dmod_init函数,组件被卸载时调用结束函数dmod_exit清理组件的相关信息。
需要说明的是,所述初始化函数可以为空的函数。
如图3所示,本发明的实施例提供了一种安全芯片的动态化组件装载装置300,包括:
获取模块301,用于获取待装载的目标组件;
保存模块302,用于根据所述目标组件为所述目标组件分配内存地址,并保存所述目标组件至所述内存地址;
验证模块303,用于对所述目标组件进行安全验证;
初始化模块304,用于对通过所述安全验证的所述目标组件初始化;
生成模块305,用于生成所述目标组件的符号表,所述符号表包括所述目标组件中的函数名称、变量名称以及每个函数的内存地址;
映射模块306,用于将所述符号表映射到动态组件管理器;
其中,所述目标组件为预先制作好的可执行代码;将所要增加到所述安全芯片中的代码编译成组件,作为目标组件。
可选地,所述获取模块还用于获取所述动态组件管理器通过物理总线获得的目标组件。
具体地,所述目标组件以字节流或者命令流的方式被所述动态组件管理器获取,即所述动态组件管理器对外接设备提供装载和卸载组件的接口,在所述目标组件加载完成后,生成的符号表被映射在所述动态组件管理器,所以所述动态组件管理器对所述安全芯片内部提供函数地址查找的功能。
可选地,所述验证模块还用于根据所述目标组件携带的第一密钥对所述目标组件进行校验。
具体地,在制作所述目标组件时,可以对其进行私钥签名,所述动态组件管理器获取到的目标组件为带有第一密钥(私钥)的组件,所述动态组件管理器根据自身存储的第二密钥(公钥)对所述目标组件进行安全验证。
可选地,所述初始化模块还用于获取所述目标组件的初始化函数;
根据所述初始化函数对所述目标组件进行初始化。
具体地,所述安全组件至少包括两个函数:初始化函数dmod_init和结束函数dmod_exit。当目标组件被所述动态组件加载器加载时会调用初始化函数dmod_init函数,组件被卸载时调用结束函数dmod_exit清理组件的相关信息。
需要说明的是,所述初始化函数可以为空的函数。
本发明实施例的安全芯片的动态化组件装载装置,能够满足安全芯片对组件装载灵活性的要求。解决了现有技术中TPM/TCM芯片无法直接在可信执行环境TEE中增加可执行代码的问题,提高了TPM/TCM芯片的通用性。
为了更好的实现上述目的,如图4所示,本发明还提供了一种安全芯片的动态化组件装载设备,包括:处理器400;以及通过总线接口与所述处理器400相连接的存储器420,所述存储器420用于存储所述处理器400在执行操作时所使用的程序和数据,处理器400调用并执行所述存储器420中所存储的程序和数据。
其中,收发机410与总线接口连接,用于在处理器400的控制下接收和发送数据;
收发机410用于:获取待装载的目标组件以及对所述目标组件进行安全验证,所述目标组件为函数集合,且所述目标组件为可重定位模式。
处理器400用于:将所述目标组件装载到所述安全芯片中
处理器400用于读取存储器420中的程序执行以下步骤:在装载所述目标组件的过程中,在所述动态组件管理器获取所述目标组件之后,所述动态组件装载器根据所述动态组件管理器获取的所述目标组件,为所述目标组件配置存储地址并保存所述目标组件;所述动态组件管理器对所述目标组件进行安全验证;所述动态组件装载器对通过所述安全验证的所述目标组件进行初始化并生成所述目标组件的符号表,将所述符号表映射到所述动态组件管理器。
其中,在图4中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器400代表的一个或多个处理器和存储器420代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机410可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。针对不同的终端,用户接口430还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。处理器400负责管理总线架构和通常的处理,存储器420可以存储处理器400在执行操作时所使用的数据。
可选的,所述收发机410,还用于:
控制所述动态组件管理器通过所述物理总线获取所述目标组件。
可选的,所述处理器400还用于:
所述动态组件管理器根据自身存储的第二密钥以及所述目标组件携带的第一密钥,对所述目标组件进行安全验证。
可选的,所述处理器400还用于:
获取所述目标组件的初始化函数;
根据所述初始化函数对所述目标组件进行初始化。
本发明实施例的安全芯片的动态化组件装载设备,能够满足安全芯片对组件装载灵活性的要求。解决了现有技术中TPM/TCM芯片无法直接在可信执行环境TEE中增加可执行代码的问题,提高了TPM/TCM芯片的通用性。
另外,本发明具体实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的安全芯片的动态化组件装载方法的步骤。且能达到相同的技术效果,为避免重复,这里不再赘述。
此外,需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行,某些步骤可以并行或彼此独立地执行。对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
- 动态组件化可信执行环境的安全芯片及其组件装载方法
- 一种基于可信执行环境的安全内存动态管理系统及方法