请求处理方法、编译方法和可信计算系统技术方案

技术编号:35839728 阅读:17 留言:0更新日期:2022-12-03 14:11
本说明书提供一种基于可信安全区的请求处理方法、编译方法和可信计算系统,可信安全区包括第一安全等级的内存段与第二安全等级的内存段,第一安全等级的内存段包括用户数据段与用户程序段,第二安全等级的内存段包括备份数据段与重置程序段,第一安全等级的合法访问范围包括第一安全等级的内存段中的至少一部分内存地址;所述请求处理方法包括:响应于任务请求,执行重置程序段中的可信安全区重置函数,将备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间;执行用户程序段中由用户源程序编译得到的用户目标程序,用户源程序中的内存访问指令被编译为对应访存地址属于第一安全等级的合法访问范围的安全内存访问指令。范围的安全内存访问指令。范围的安全内存访问指令。

【技术实现步骤摘要】
请求处理方法、编译方法和可信计算系统


[0001]本说明书实施例属于计算机
,尤其涉及一种基于可信安全区的请求处理方法、编译方法和可信计算系统。

技术介绍

[0002]可信执行环境(TEE,Trusted Execution Environment)是CPU内的一个安全区域,它运行在一个独立的环境中且与操作系统并行运行。在硬件信任根和快速内存加密引擎的帮助下,TEE可以为数据处理提供一个隔离的内存区域,称为enclave(可信安全区),enclave能够确保其中的程序和数据不受包括操作系统等特权软件在内的任何其他软件的攻击,并通过内存加密、远程证明等机制确保运行在enclave内的程序的机密性和完整性。
[0003]在利用enclave作为可信计算的任务执行框架的场景下,enclave中运行有由用户编写并加载进enclave的用户程序作为可信计算任务的执行组件,每次enclave接收到相应的任务请求,都会对enclave进行重启后调用该用户程序执行任务请求对应的可信计算任务。在相关技术中,通常使用传统的热启动或冷启动来重启enclave。
[0004]虽然外部程序难以对enclave进行攻击,但由用户编写并加载进enclave内的用户程序却突破了enclave的防线,可以从内部进行攻击。因此,如果对enclave执行会持续复用一些重启前组件的热启动,虽然可以提高重启enclave的效率,但可能会复用一些已经遭受攻击的组件从而导致enclave依然处于被攻击的状态,具有极大的安全隐患,特别是当热启动组件本身被攻击时,将使得enclave无法脱离被攻击的状态从而被攻击者完全掌控;而如果对enclave执行重新初始化所有组件的冷启动,则虽然可以避免热启动带来的安全隐患,但却带来了较大的时延,而对于大部分任务请求需要快速响应的可信计算服务场景来说,较长的冷启动时间严重影响了可信计算任务的执行效率。

技术实现思路

[0005]本专利技术的目的在于提供一种基于可信安全区的请求处理方法、编译方法和可信计算系统。
[0006]根据本说明书一个或多个实施例的第一方面,提出了一种基于可信安全区的请求处理方法,所述可信安全区包括第一安全等级的内存段与第二安全等级的内存段,其中,第一安全等级的内存段包括用户数据段与用户程序段,第二安全等级的内存段包括备份数据段与重置程序段,第一安全等级的合法访问范围包括第一安全等级的内存段中的至少一部分内存地址;所述方法包括:响应于任务请求,执行所述重置程序段中的可信安全区重置函数,将所述备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间,所述内存备份包括用于覆盖至所述用户数据段的用户数据段备份;在所述可信安全区重置函数执行完成后,执行所述用户程序段中由用户源程序编译得到的用户目标程序;其中,所述用户源程序中的内存访问指令被编译为所述用户目标
程序中相应的安全内存访问指令,所述安全内存访问指令对应的访存地址属于第一安全等级的合法访问范围。
[0007]根据本说明书一个或多个实施例的第二方面,提出了一种编译方法,包括:获取用于在可信安全区中执行的用户源程序,所述可信安全区包括第一安全等级的内存段与第二安全等级的内存段,其中,第一安全等级的内存段包括用户数据段与用户程序段,第二安全等级的内存段包括备份数据段与重置程序段,第一安全等级的合法访问范围包括第一安全等级的内存段中的至少一部分内存地址,所述用户程序段中的安全内存访问指令对应的访存地址属于第一安全等级的合法访问范围;将所述用户源程序编译为用户目标程序,以使得所述用户源程序中的内存访问指令转换为所述用户目标程序中相应的安全内存访问指令;将所述用户目标程序加载至所述用户程序段,以由所述可信安全区响应于任务请求进行重置后执行所述用户程序段中的所述用户目标程序;其中,对所述可信安全区进行重置包括:执行所述重置程序段中的可信安全区重置函数,将所述备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间,所述内存备份包括用于覆盖至所述用户数据段的用户数据段备份。
[0008]根据本说明书一个或多个实施例的第三方面,提出了一种基于可信安全区的请求处理装置,所述可信安全区包括第一安全等级的内存段与第二安全等级的内存段,其中,第一安全等级的内存段包括用户数据段与用户程序段,第二安全等级的内存段包括备份数据段与重置程序段,第一安全等级的合法访问范围包括第一安全等级的内存段中的至少一部分内存地址;所述装置包括:重置单元,用于响应于任务请求,执行所述重置程序段中的可信安全区重置函数,将所述备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间,所述内存备份包括用于覆盖至所述用户数据段的用户数据段备份;用户目标程序执行单元,用于在所述可信安全区重置函数执行完成后,执行所述用户程序段中由用户源程序编译得到的用户目标程序;其中,所述用户源程序中的内存访问指令被编译为所述用户目标程序中相应的安全内存访问指令,所述安全内存访问指令对应的访存地址属于第一安全等级的合法访问范围。
[0009]根据本说明书一个或多个实施例的第四方面,提出了一种编译装置,包括:用户源程序获取单元,获取用于在可信安全区中执行的用户源程序,所述可信安全区包括第一安全等级的内存段与第二安全等级的内存段,其中,第一安全等级的内存段包括用户数据段与用户程序段,第二安全等级的内存段包括备份数据段与重置程序段,第一安全等级的合法访问范围包括第一安全等级的内存段中的至少一部分内存地址,所述用户程序段中的安全内存访问指令对应的访存地址属于第一安全等级的合法访问范围;编译单元,用于将所述用户源程序编译为用户目标程序,以使得所述用户源程序中的内存访问指令转换为所述用户目标程序中相应的安全内存访问指令;用户目标程序加载单元,用于将所述用户目标程序加载至所述用户程序段,以由所述可信安全区响应于任务请求进行重置后执行所述用户程序段中的所述用户目标程序;其中,对所述可信安全区进行重置包括:执行所述重置程序段中的可信安全区重置函数,将所述备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间,
所述内存备份包括用于覆盖至所述用户数据段的用户数据段备份。
[0010]根据本说明书一个或多个实施例的第五方面,提出了一种可信计算系统,包括一个前端可信安全区与至少一个后端可信安全区,其中:所述前端可信安全区用于接收客户端发送的任务请求,并将该任务请求转发至对应的后端可信安全区,以及将该后端可信安全区返回的针对该任务请求的执行结果发送至所述客户端;任一后端可信安全区用于在接收到所述前端可信安全区发送的任务请求的情况下执行如第一方面中任一项所述的方法,并将执行用户目标程序所生成的执行结果返回至所述前端可信安全区。
[0011]根据本说明书一个或多个实施例的第六方面,提出了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如第一方面与第二方面中任一项所述的方法。...

【技术保护点】

【技术特征摘要】
1.一种基于可信安全区的请求处理方法,所述可信安全区包括第一安全等级的内存段与第二安全等级的内存段,其中,第一安全等级的内存段包括用户数据段与用户程序段,第二安全等级的内存段包括备份数据段与重置程序段,第一安全等级的合法访问范围包括第一安全等级的内存段中的至少一部分内存地址;所述方法包括:响应于任务请求,执行所述重置程序段中的可信安全区重置函数,将所述备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间,所述内存备份包括用于覆盖至所述用户数据段的用户数据段备份;在所述可信安全区重置函数执行完成后,执行所述用户程序段中由用户源程序编译得到的用户目标程序;其中,所述用户源程序中的内存访问指令被编译为所述用户目标程序中相应的安全内存访问指令,所述安全内存访问指令对应的访存地址属于第一安全等级的合法访问范围。2.根据权利要求1所述的方法,所述将所述备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间,包括:启用用户权限硬件指令,并通过所述用户权限硬件指令为第一安全等级的合法访问范围对应的内存空间重新分配内存访问权限;将所述备份数据段中存储的内存备份覆盖至第一安全等级的合法访问范围对应的内存空间,并在完成后禁用所述用户权限硬件指令。3.根据权利要求1所述的方法,所述内存备份还包括用于覆盖至所述用户程序段的用户程序段备份。4.根据权利要求1所述的方法,还包括:响应于所述任务请求,将执行所述用户目标程序所生成的所述任务请求对应的执行结果返回至所述任务请求的发起方。5.根据权利要求1所述的方法,还包括:响应于备份请求或者在所述可信安全区完成冷启动的情况下,执行所述重置程序段中的可信安全区备份函数,将第一安全等级的合法访问范围中的数据作为所述内存备份存储至所述备份数据段。6.根据权利要求1所述的方法,所述可信安全区被划分为若干个首尾连接的内存块,同一安全内存访问指令包含于同一内存块中,所述可信安全区中的安全跳转点与任一内存块的起始地址对齐,所述可信安全区中的安全跳转点包括循环起始地址、条件分支起始地址与非敏感函数的函数起始地址;所述可信安全区中的程序包括所述用户目标程序与由系统源程序编译得到的系统目标程序,所述系统目标程序处于第二安全等级及其以上安全等级的内存段中,所述系统目标程序包括所述可信安全区重置函数;所述用户源程序中的地址跳转指令被编译为所述用户目标程序中相应的安全地址跳转指令,和/或所述系统源程序中的地址跳转指令被编译为所述系统目标程序中相应的安全地址跳转指令,其中,任一安全地址跳转指令对应的跳转地址为用于编译为所述任一安全地址跳转指令的地址跳转指令对应的原始跳转地址所处内存块的起始地址。7.根据权利要求6所述的方法,所述系统目标程序中的任一敏感函数在其占用的内存块中的函数起始地址与该内存块的起始地址之间插入有停机指令,所述停机指令在执行时
用于触发系统停机。8.根据权利要求7所述的方法,在所述任一敏感函数占用有至少两个内存块的情况下,所述至少两个内存块中的所述任一敏感函数通过标签跳转指令进行连接。9.根据权利要求6所述的方法,任一内存块的起始地址与相应的安全检测函数的函数起始地址对齐,任一内存块中的安全检测函数在执行时用于:确定跳转至所述任一内存块中的安全检测函数的安全地址跳转指令所处的跳转点内存段的安全等级;在确定用于编译为该安全地址跳转指令的地址跳转指令对应的原始跳转地址或所述任一内存块的起始地址不属于所述跳转点内存段的安全等级的合法访问范围的情况下,触发系统停机;在确定该原始跳转地址或所述任一内存块的起始地址属于所述跳转点内存段的安全等级的合法访问范围的情况下,顺序执行下一个指令或跳转至该原始跳转地址。10.根据权利要求1所述的方法,所述可信安全区还包括第三安全等级的内存段,第三安全等级的内存段包括密钥数据段与证明程序段,所述方法还包括:响应于程序证明请求,执行所述证明程序段中的嵌套证明函数,基于所述密钥数据段中存储的嵌套证明私钥对待证明数据进行签名以生成可信程序证明,所述待证明数据包括所述用户程序段和/或重置程序段中的数据;将所述可信程序证明提供至所述程序证明请求的发起方,并接收在所述发起方确认所述可信程序证明验证通过的情况下发送的所述任务请求。11.根据权利要求10所述的方法,所述嵌套证明私钥由密钥管理服务器在确认所述可信安全区通过远程认证服务器的远程认证的情况下分配至所述可信安全区中的所述密钥数据段。12.根据权利要求1或10所述的方法,所述可信安全区包括不同安全等级的内存段,所述不同安全等级至少包括第一安全等级与第二安全等级,其中,任一安全等级的合法访问范围包括所述任一安全等级的内存段中的至少一部分内存地址以及低于所述任一安全等级的内存段;所述可信安全区中的程序包括所述用户目标程序与由系统源程序编译得到的系统目标程序,所述系统目标程序处于第二安全等级及其以上安全等级的内存段中,所述系统目标程序包括所述可信安全区重置函数;所述系统源程序中的内存访问指令被编译为所述系统目标程序中相应的安全内存访问指令,其中,所述任一安全等级的内存段中的安全内存访问指令对应的访存地址属于所述任一安全等级的合法访问范围。13.根据权利要求12所述的方法,低安全等级的内存段的内存地址高于高安全等级的内存段,任一安全等级的合法访问范围为高于所述任一安全等级的边界地址的地址范围,所述任一安全等级的边界地址属于所述任一安全等级的内存段,所述任一安全等级的内存段中的任一安全内存访问指令在执行时用于:将用于编译为所述任一安全内存访问指令的内存访问指令对应的原始访问地址与边界寄存器中存储的边界地址相减,并将得到的差值存储至偏移寄存器,所述边界寄存器中存储的边界地址为所述任一安全等级的边界地址;将所述偏移寄存器中存储的所述差值取绝对值后与所述边界寄存器中存储的所述边
界地址相加得到的加数作为所述任一安全内存访问指令对应的访存地址,并基于该访问地址访问内存。14.根据权利要求13所...

【专利技术属性】
技术研发人员:张殷乾陈国兴闫守孟徐品深
申请(专利权)人:南方科技大学
类型:发明
国别省市:

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

1