掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理设备和方法

文献发布时间:2023-06-19 09:54:18


一种数据处理设备和方法

技术领域

本说明书涉及计算机设备领域,特别涉及一种数据处理设备和方法。

背景技术

可信执行环境(Trusted Execution Environment,TEE)可以是在设备内存中实现的安全区域,可以确保加载到其中的代码和数据的安全性、机密性和完整性。然而,当设备TEE的应用程序和设备其他程序共享资源(如共享中央处理器等硬件资源)会造成TEE侧信道,降低TEE的安全性。

因此,希望提供一种数据处理设备和方法,降低可信执行环境侧信道。

发明内容

本说明书的一个方面提供一种数据处理设备,包括:TEE板卡,用于实现可信执行环境,其中,所述TEE板卡包括第一内存与能够提供可信执行环境指令的第一中央处理器;以及主机,与TEE板卡具有信号连接,用于将至少部分数据处理操作部署到TEE板卡的可信执行环境中,以便至少部分数据处理操作在可信执行环境中执行。

本说明书的另一个方面提供一种数据处理方法,所述方法由用于实现可信执行环境的TEE板卡执行,所述TEE板卡包括第一内存与能够提供可信执行环境指令的第一中央处理器;所述方法包括:与主机通信,将来自主机的数据处理操作部署到可信执行环境中,以便所述数据处理操作在可信执行环境中执行。

本说明书的另一个方面提供一种TEE板卡,包括第一内存与能够提供可信执行环境指令的第一中央处理器,以便实现可信执行环境以及在所述可信执行环境中执行由主机部署的数据处理操作。

附图说明

本说明书将以示例性实施例的方式进一步描述,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:

图1是根据本说明书的一些实施例所示的数据处理设备示意图;

图2是根据本说明书的一些实施例所示的示例性的板卡的示意图;

图3是根据本说明书的一些实施例所示的示例性的主机的示意图;

图4是根据本说明书的一些实施例所示的将数据处理操作部署到可信执行环境中的方法的示例性流程图;

图5是根据本说明书的一些实施例所示的在可信执行环境中执行数据处理操作的方法的示例性流程图。

具体实施方式

为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。

应当理解,本说明书中所使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。

如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。

本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。

可信执行环境(Trusted Execution Environment,TEE)是设备中的安全区域,可以确保加载到环境中的代码和数据的安全性、机密性和完整性,从而保证具有可信执行环境的设备获取的核验结果的可信性。示例性的可信执行环境可以包括基于Software GuardExtensions (SGX)、Secure Encrypted Virtualization (SEV)或TrustZone等技术的可信执行环境。以Intel®公司的SGX为例,当程序在可信执行环境中执行时会受到Enclave保护,外界是无法篡改位于Enclave中的数据或影响该程序的执行过程。

然而,设备中位于TEE的应用程序和设备上其他程序共享资源时会造成TEE侧信道,降低TEE的安全性。其中,侧信道(Side Channel)是指在标准通信信道之外,泄漏信息的途径。侧信道泄露的信息即侧信息(Side Channel Information)。TEE侧信息可以反应TEE中程序的运行状态,因此,攻击者可以从TEE外部(即设备中TEE以外的区域)获取TEE侧信息来推测TEE中的机密数据和/或处理逻辑。

例如,TEE中的应用程序和设备其他程序共享软件资源,则可以从共享的页表中获取TEE中程序的内存访问地址模式,从而推测出TEE中程序的执行路径,导致可能推测出TEE中的机密数据和/或处理逻辑。又例如,TEE中的应用程序和设备其他程序共享硬件资源,如中央处理器(Central Processing Unit,CPU)和内存,则可以从共享的内存和CPU中观察CPU的高速缓存(cache)命中情况从而推断出TEE中的机密数据和/或处理逻辑。

为了减少部署在设备中的TEE存在侧信道,可以将TEE部署在设备外,实现分离式TEE。

本说明书的数据处理设备基于通用CPU部署分离式TEE,即将可信执行环境在与设备(此时可称为主机)分离的其他设备上实现,减少可信执行环境中的应用程序与主机中的应用程序共享的软硬件资源,可以在有效减少侧信道的同时,以较低的成本提供与通用CPU相仿的数据处理性能。

图1是根据本说明书的一些实施例所示的数据处理设备示意图。

如图1所示,数据处理设备100包括:TEE板卡110和主机120。

TEE板卡110是用于实现可信执行环境的印制电路板。在一些实施例中,TEE板卡110包括第一内存111与第一中央处理器112。

第一中央处理器112是TEE板卡中的数据处理的核心单元。具体地,第一中央处理器的数据处理可以包括读取指令、对指令译码和执行指令等。在一些实施例中,第一中央处理器可以为TEE提供可信执行环境指令。

可信执行环境指令是带有可信标识的第一中央处理器指令集合中的指令。例如,可信执行环境指令可以是SGX扩展指令集中的指令。在一些实施例中,可信执行环境指令基于可信标识,可以访问TEE板卡中的第一内存。

第一内存111是TEE板卡中的非持久性存储单元。在一些实施例中,第一内存可以包括但不限于:随机存取存储器(Random Access Memory,RAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)和静态随机存取存储器(Static Random AccessMemory,SRAM)等中的一种或多种的组合。

主机120可以是独立能够实现数据处理的任意设备。在一些实施例中,主机执行的数据处理操作可能需要安全保护,如需要将至少部分数据处理操作部署到可信执行环境中执行。关于主机的详细描述可以参见图3,在此不再赘述。

在一些实施例中,主机120与TEE板卡110具有信号连接。如两者通过硬件接口实现物理连接,同时基于预设的通信协议实现数据交互。在一些实施例中,硬件接口可以是PCI接口、PCI-E接口、USB接口、SATA(Serial ATA)接口或RS-232接口等。

在一些实施例中,主机120可以将所述至少部分数据处理操作部署到TEE板卡的可信执行环境中,以便至少部分数据处理操作在可信执行环境中执行。其中,至少部分数据处理操作可能涉及需要保密的数据。

示例性地,丙请求主机核验甲提供的数据的真实性,主机可以基于乙提供的数据对甲提供的数据进行真实性核验,其中,乙提供的数据需要保密,主机120可以将“基于乙提供的数据对甲提供的数据进行真实性核验”的操作部署到TEE板卡的可信执行环境中,并在可信执行环境中执行该操作,从而确保乙提供的数据不被泄露,同时确保核验过程的真实性和安全性。

其中,关于将至少部分数据处理操作部署到TEE板卡的可信执行环境中的相关描述可以参见图4,关于至少部分数据处理操作在可信执行环境中执行的详细描述可以参见图5,在此不再赘述。

图2是根据本说明书的一些实施例所示的示例性的板卡的示意图。

在一些实施例中,TEE板卡还包括第一操作系统以及第一TEE软件开发工具包。

如图2所示,TEE板卡110包括第一内存111、第一中央处理器112、第一操作系统113、第一存储介质114和第一TEE软件开发工具包115。

其中,关于第一内存111和第一中央处理器112的相关描述可以参见图1,在此不再赘述。

第一存储介质114是TEE板卡中的持久性存储单元。在一些实施例中,第一存储介质可以包括但不限于:只读存储器(Read-only memory,ROM)、可编程只读存储器(Programmable read-only memory,PROM)、电可改写只读存储器(Electricallyalterable read only memory,EAROM)、可擦可编程只读存储器(Erasable programmableread only memory,EPROM)和电可擦可编程只读存储器(Electrically erasableprogrammable read only memory,EEPROM)等中的一种或多种的组合。

在一些实施例中,第一内存111可以保存从第一存储介质114读取的数据,提供给第一中央处理器112使用,也可以将第一中央处理器112的执行结果保存到第一存储介质114中。

第一操作系统113是TEE板卡中管理硬件与软件资源的计算机程序。在一些实施例中,第一操作系统113可以处理TEE板卡中的基本事务。例如,管理与配置第一内存、决定系统资源供需的优先次序等。在一些实施例中,第二操作系统可以包括但不限于iOS™、Android™、Windows Phone™等中的一种或多种的组合。

在一些实施例中,第一操作系统113中的硬件驱动程序至少用于与主机通信,以及调用第一中央处理器提供的可信执行环境指令。

在一些实施例中,硬件驱动程序可以用于响应于主机的创建请求,调用第一中央处理器提供的可信执行环境指令在第一内存中创建一个或多个可信执行环境,将来自主机的用于实现至少部分处理操作的应用程序加载到可信执行环境中,并向主机返回可信执行环境的标识。关于硬件驱动程序调用可信执行环境指令的详细描述可以参见图4及其相关描述,在此不再赘述。

在一些实施例中,硬件驱动程序还可以用于响应于主机的应用程序调用请求,调用位于相应可信执行环境中的目标应用程序,使得目标应用程序在可信执行环境中执行并获得执行结果,并向主机返回执行结果。

在一些实施例中,应用程序调用请求可以包括可信执行环境的标识、目标应用程序的标识以及输入参数。

在一些实施例中,目标应用程序能够生成可信执行环境完整性证明,执行结果可以包括可信执行环境完整性证明。

关于硬件驱动程序调用目标应用程序的详细描述可以参见图5及其相关描述,在此不再赘述。

第一TEE软件开发工具包115是用于支持位于可信执行环境中的应用程序执行的开发工具或组件的集合。TEE软件开发工具包可以高效实现应用程序的开发、编译以及执行等,其可以看作是支持前述各种功能的组件的集合。例如, TEE软件开发工具包可以提供开发、编译以及执行环境,供开发人员编写应用程序源代码,对应用程序进行编译,得到可执行文件,以及执行可执行文件。又例如, TEE软件开发工具包能够提供通过中央处理器提供的可信执行环境指令实现的多种数据运算或处理功能的API(Application ProgrammingInterface,应用程序接口),供开发人员在编写应用程序时中使用,以及当应用程序执行时,基于程序中的调用相关API的程序指令调用可信执行环境指令,以实现该程序指令的功能。在一些实施例中,第一TEE软件开发工具包可以是全功能的TEE软件开发工具包,即具有该工具包的全部功能组件,在一些实施例中,第一TEE软件开发工具包可以仅包括该工具包的部分功能组件,如仅包括其中与执行相关的功能组件,以及与可信执行环境指令相关的API,以支持位于可信执行环境中的应用程序执行。其中,位于可信执行环境中的应用程序是用于实现可信执行环境中的至少部分数据处理操作的代码。例如,实现“基于乙提供的数据对甲提供的数据进行真实性核验”的操作的代码。

在一些实施例中,在目标应用程序的执行过程中,第一TEE软件开发工具包用于向该目标应用程序提供执行环境,以及基于目标应用程序中的程序指令调用第一中央处理器提供的可信执行环境指令,以实现程序指令的功能。关于第一TEE软件开发工具包实现程序指令的功能的详细描述可以参见图5及其相关描述。

在一些实施例中,TEE板卡可以基于SGX技术或SEV技术实现可信执行环境。

以SGX技术为例,SGX(Software Guard Extensions)技术是基于一组指令,将需要保密的数据放入到TEE中的一项Intel®技术,旨在保护用户选择的需要保密的数据不被泄露或修改。基于SGX技术实现分离式可信执行环境的TEE板卡中,TEE板卡的软件栈为Intel®的SGX平台软件(Platform Software,PSW),包括:第一操作系统113、第一操作系统113中的硬件驱动:Intel®的SGX驱动程序,以及第一TEE软件开发工具包115:Intel®的SGXSDK。基于SGX技术实现可信执行环境的详细描述可以参见图4和图5,在此不再赘述。

图3是根据本说明书的一些实施例所示的示例性的主机的示意图。

如图3所示,主机120可以包括第二内存121、第二中央处理器122、第二操作系统123以及第二存储介质124。在一些实施例中,主机120还可以部署有第二TEE软件开发工具包125。

第二存储介质124是主机中的持久性存储单元。在一些实施例中,第二存储介质可以包括但不限于:只读存储器(Read-only memory,ROM)、可编程只读存储器(Programmableread-only memory,PROM)、电可改写只读存储器(Electrically alterable read onlymemory,EAROM)、可擦可编程只读存储器(Erasable programmable read only memory,EPROM)和电可擦可编程只读存储器(Electrically erasable programmable read onlymemory,EEPROM)等中的一种或多种的组合。

第二中央处理器122是主机中的数据处理的核心单元。在一些实施例中,第二中央处理器122可以执行非保密数据处理操作。继续沿用前述示例,主机基于丙的请求可以通知甲和乙向TEE板卡提供数据。

第二内存121是主机中的非持久性存储单元。在一些实施例中,第二内存可以包括但不限于:随机存取存储器(Random Access Memory,RAM)、动态随机存取存储器(DynamicRandom Access Memory,DRAM)和静态随机存取存储器(Static Random Access Memory,SRAM)等中的一种或多种的组合。

第二操作系统123是主机中管理硬件与软件资源的计算机程序。在一些实施例中,第二操作系统123可以处理主机中的基本事务。例如,管理与配置第二内存、决定系统资源供需的优先次序、操作网络与管理文件系统等。在一些实施例中,第二操作系统可以包括但不限于iOS™、Android™、Windows Phone™等中的一种或多种的组合。

在一些实施例中,第二操作系统中包括硬件驱动程序。在一些实施例中,第二操作系统123和一个或以上应用程序可以通过硬件驱动程序从第二存储介质124加载到第二内存121中以便由第二中央处理器122执行。

在一些实施例中,第二操作系统中的硬件驱动程序至少用于与TEE板卡110通信。

在一些实施例中,第二操作系统的硬件驱动程序用于向TEE板卡发送创建请求以请求在TEE板卡中创建可信执行环境并将用于实现至少部分数据处理操作的应用程序部署到可信执行环境中,以及用于接收TEE板卡返回的可信执行环境的标识。关于第二操作系统的硬件驱动程序向TEE板卡发送创建请求的详细描述可以参见图4及其相关描述,在此不再赘述。

在一些实施例中,第二操作系统的硬件驱动程序用于将所述应用程序调用请求发送给所述TEE板卡,以及接收所述TEE板卡返回的执行结果。关于第二操作系统的硬件驱动程序将应用程序调用请求发送给TEE板卡,以及接收TEE板卡返回的执行结果的详细描述可以参见图5及其相关描述,在此不再赘述。

第二TEE软件开发工具包125是用于支持实现数据处理操作的应用程序执行的开发工具的集合,关于第二TEE软件开发工具包的更多内容可以参见图2中关于TEE软件开发工具包的说明。在一些实施例中,第二TEE软件开发工具包可以是完全功能的TEE软件开发工具,也可以仅包含完整TEE软件开发工具包中实现应用程序开发、编译、执行功能的组件,可以不包含涉及可信执行环境指令的API。

用于支持实现数据处理操作的应用程序执行可以是指支持实现数据处理操作的代码的开发、编译与执行。如前所述,主机需要完成的数据处理操作中可能存在至少部分数据处理操作涉及需要保密的数据。在一些实施例中,用户可以基于数据处理操作中是否存在需要保密的数据,将其分为非保密数据处理操作和一个或多个保密数据处理操作,通过第二TEE软件开发工具包125完成相应数据处理操作的代码编写。其中,非保密数据处理操作的代码中可以有与一个或多个保密数据处理操作的代码对应的调用接口(如函数接口)。第二TEE软件开发工具包125进一步可以将非保密数据处理操作相关的代码和一个或多个保密数据处理操作相关的代码分别编译为可执行的非保密应用程序和一个或多个可执行的保密应用程序。

例如,第二TEE软件开发工具包125可以将非保密数据处理操作“主机基于丙的请求可以通知乙向TEE板卡提供数据”编译为非保密应用程序,将保密数据处理操作“基于乙提供的数据对甲提供的数据进行真实性核验”编译为保密应用程序。

在一些实施例中,第二TEE软件开发工具包125可以提供执行环境,以实现非保密应用程序执行,在实现数据处理操作的应用程序(如非保密应用程序)的执行过程中,第二TEE软件开发工具包125还用于向第二操作系统的硬件驱动程序发送应用程序调用请求,以便至少部分数据处理操作(如保密数据处理操作)在可信执行环境中完成。关于第二TEE软件开发工具包发送应用程序调用请求的详细描述可以参见图5及其相关描述,在此不再赘述。

在一些实施例中,主机可以将所述至少部分数据处理操作部署到TEE板卡的可信执行环境中实现。在一些实施例中,主机可以向TEE板卡发起创建请求,进而将实现所述至少部分数据处理操作的应用程序部署到TEE板卡的可信执行环境中。其中,应用程序可以是经过编译的可执行应用程序,也可以是未经过编译的,此时可由TEE板卡的第一TEE软件开发工具包进行编译。

图4是根据本说明书的一些实施例所示的将数据处理操作部署到可信执行环境中的方法的示例性流程图。

如图4所示,方法400包括:

步骤410,接收主机的创建请求。

可以理解,为了将来自主机的数据处理操作部署到可信执行环境中,需要先创建可信执行环境。

主机的创建请求即主机创建可信执行环境的请求。

在一些实施例中,创建请求中可以包含用于实现至少部分数据处理操作的应用程序。

在一些实施例中,TEE板卡可以通过与主机的信号连接接收主机的创建请求。关于TEE板卡与主机的信号连接的详细描述可以参见图1,在此不再赘述。

在一些实施例中,主机120的第二操作系统123的硬件驱动程序可以向TEE板卡发送创建请求。

具体地,主机中的非保密应用程序可以通过调用第二TEE软件开发工具包125中的创建请求函数,发起创建请求;第二TEE软件开发工具包125可以将创建请求发送给第二操作系统123中的硬件驱动程序;第二操作系统123中的硬件驱动程序可以通过与TEE板卡的信号连接(例如,PCI-E接口),向TEE板卡110发送创建请求。

进一步地,TEE板卡110可以通过与主机的信号连接(例如,PCI-E接口)从主机120的第二操作系统123中的硬件驱动程序接收创建请求。

在一些实施例中,主机120可以对创建请求利用第一密钥加密。其中,加密可以包括对称加密和非对称加密中的一种或多种的组合。

对称加密是指加密密钥和解密密钥相同的加密技术。在一些实施例中,对称加密可以包括但不限于:数据加密标准(DES,Data Encryption Standard)、三次数据加密标准(3DES,Triple DES)、高级加密标准(Advanced Encryption Standard,AES)、RC2算法、RC4算法、RC5和Blowfish加密算法等。

非对称加密是指加密密码和解密密码不同的加密技术。在一些实施例中,非对称加密可以包括但不限于:RSA算法、数字签名算法(Digital Signature Algorithm,DSA)、椭圆曲线签名算法(Elliptic curve Cryptography and Digital Signature Algorithm ,ECDSA)等。在一些实施例中,加密技术还可以是其他方式,本申请实施例不作限制。

在一些实施例中,TEE板卡110可以基于与第一密钥匹配的第二密钥对创建请求解密。其中,第二密钥与第一密钥可以相同,也可以不同。

步骤420,调用第一中央处理器提供的可信执行环境指令在第一内存中创建一个或多个可信执行环境。

如前所述,可信执行环境指令是带有可信标识的第一中央处理器指令集合。在一些实施例中,在第一中央处理器的制作过程中,可信执行环境指令可以预先存储在第一中央处理器中。

可以理解,可信环境指令中可以包括多个指令。以基于SGX技术的可信执行环境指令【SGX扩展指令集】为例,SGX扩展指令集可以包括创建可信执行环境的指令(ECREATE)、销毁可信执行环境的指令(EREMOVE)、进入可信执行环境的指令(EENTER)和退出可信执行环境的指令(EEXIT)等。

在一些实施例中,在第一内存中创建一个或多个可信执行环境的可信执行环境指令可以是创建可信执行环境的指令。例如,SGX扩展指令集中的ECREATE指令。

在一些实施例中,TEE板卡110中的第一中央处理器112可以直接从第二操作系统123中的硬件驱动程序接收创建请求。进一步地,第一中央处理器112可以直接调用其提供的“创建可信执行环境的指令”的可信执行环境指令,访问第一内存111。

如前所述,可信执行环境指令基于可信标识,可以访问TEE板卡中的第一内存。在一些实施例中,第一内存111基于可信执行环境指令的可信标识,可以允许可信执行环境指令在第一内存111中创建一个或多个可信执行环境。

具体地,可信执行环境指令可以在第一内存中划分一个或多个区域作为一个或多个可信执行环境的内存资源。如图1所示,可信执行环境指令在第一内存111中划分了两个区域分别作为两个可信执行环境的内存资源。

在一些实施例中,在第一内存中划分的可信执行环境的内存资源大小可以是可信执行环境指令中固定的大小,也可以是创建请求中用户指定的参数。

在一些实施例中,TEE板卡110可以具有第一操作系统,第一操作系统中的硬件驱动程序可以通过从第二操作系统123中的硬件驱动程序接收创建请求,并调用第一中央处理器的可信执行环境指令在第一内存中创建一个或多个可信执行环境。

可以理解,第一中央处理器112直接调用其提供的可信执行环境指令,可能包含大量的执行逻辑,从而导致技术成本高和执行性能差。第一TEE软件开发工具包115可以将大量运算逻辑直接封装为执行模块,通过使用第一TEE软件开发工具包115中已有的执行模块来调用可信执行环境指令,可以节约技术成本和提高执行效率。

如图4所示,TEE板卡110中还可以包括第一TEE软件开发工具包115。在一些实施例中,TEE板卡110可以基于第一TEE软件开发工具包115创建一个或多个可信执行环境。

具体地,第一操作系统113中的硬件驱动程序先从第二操作系统123中的硬件驱动程序接收创建请求,然后将创建请求传输给第一TEE软件开发工具包115,第一TEE软件开发工具包115通过所述硬件驱动程序调用第一中央处理器112提供的可信执行环境指令。进一步地,可信执行环境指令可以在第一内存中划分一个或多个区域作为一个或多个可信执行环境的内存资源。

步骤430,将来自主机的用于实现数据处理操作的应用程序加载到可信执行环境中。

如前所述,创建请求中可以包含用于实现至少部分数据处理操作的应用程序。在一些实施例中,TEE板卡110的第一中央处理器112或第一操作系统113接收主机的创建请求后,可以将其中的用于实现至少部分数据处理操作的应用程序存储在第一内存111(如可行执行环境)中。在一些实施例中,第一内存中存储应用程序的区域和划分为可信环境的内存资源的区域可以相同。

在一些实施例中,第一内存中存储应用程序的区域和划分为可信环境的内存资源的区域可以不同。第一中央处理器112可以将第一内存111中的应用程序读取到可信执行环境中。如图4所示,第一中央处理器112可以将第一内存111中的实线框区域中的X保密应用程序读取到可信执行环境A(TEE-A)中去。

如前所述,基于主机的非保密应用程序发起的创建请求,可以在第一内存中创建一个或多个可信执行环境。在一些实施例中,可以将第一内存111中的一个或多个保密应用程序读取到不同的可信执行环境中,也可以将第一内存111中的一个或多个保密应用程序读取到一个可信执行环境中,本实施例不作限制。

在一些实施例中,TEE板卡还包括用于存储数据的第一存储介质114。在一些实施例中,TEE板卡可以将应用程序存储在第一存储介质114中,以便基于相同的应用程序处理其他数据。

关于第一存储介质114的详细描述可以参见图1,在此不再赘述。

步骤440,向主机返回可信执行环境的标识。

可信执行环境的标识是用于表示可信执行环境的符号。可以理解,每一个可信执行环境都可以用对应的标识来表示。其中,标识可以是数字(如1、2)、字母(如a、b)或其他符号。

继续以图1为例,可信执行环境指令在第一内存111中创建的两个可信执行环境的标识可以分别为TEE-A和可信执行环境TEE-B。TEE板卡110可以向主机返回创建两个可信实现环境的标识TEE-A和TEE-B。

在一些实施例中,TEE板卡可以通过与主机的信号连接向主机返回可信执行环境的标识。关于TEE板卡与主机的信号连接的详细描述可以参见图1,在此不再赘述。例如,当TEE板卡不具有第一操作系统与第一TEE软件开发工具包时,TEE板卡的第一中央处理器可以将可信执行环境的标识返回给主机;或者当TEE板卡具有第一操作系统但不具有第一TEE软件开发工具包时,TEE板卡中第一操作系统的硬件驱动程序将可信执行环境的标识返回给主机,又或者当TEE板卡具有第一操作系统与第一TEE软件开发工具包时,第一TEE软件开发工具包可以通过第一操作系统的硬件驱动程序将可信执行环境的标识返回给主机。

图5是根据本说明书的一些实施例所示的在可信执行环境中执行数据处理操作的方法示例性流程图。

如图5所示,方法500可以包括:

步骤510,接收主机的应用程序调用请求。

主机的应用程序调用请求即主机调用可信执行环境中应用程序的执行结果的请求。

在一些实施例中,应用程序调用请求中可以包括可信执行环境的标识、目标应用程序的标识以及输入参数。

如前所述,可信执行环境的标识是用于表示可信执行环境的符号。关于可信执行环境的标识的详细描述可以参见步骤440,在此不再赘述。

目标应用程序是主机中的非保密应用程序要调用的TEE板卡中的保密应用程序。

目标应用程序的标识是用于表示目标应用程序的符号。每一个应用程序都可以用对应的标识来表示。在一些实施例中,目标应用程序的标识可以是目标应用程序的函数名。例如,基于保密数据处理操作“基于乙提供的数据对甲提供的数据进行真实性核验”编译的保密应用程序的标识可以为X,X即为用于实现“基于乙提供的数据对甲提供的数据进行真实性核验”的函数名。

可以理解,基于可信执行环境的标识和目标应用程序的标识可以确定主机要调用的保密应用程序。如图5所示,基于可信执行环境的标识“TEE-A”和目标应用程序的标识“X”,可以确定主机中的非保密应用程序要调用加载到可信执行环境TEE-A中的X保密应用程序。

输入参数是目标应用程序要处理的数据。在一些实施例中,输入参数中至少包括需要保密的数据。例如,乙提供的数据。在一些实施例中,输入参数中也可以包括不需要保密的数据。例如,甲提供的数据。

在一些实施例中,主机120可以对应用程序调用请求利用第三密钥加密。在一些实施例中,主机120也可以仅对输入参数中需要保密的数据加密。在一些实施例中,TEE板卡110可以基于与第三密钥匹配的第四密钥对应用程序调用请求或需要保密的输入参数解密。其中,关于加密解密的详细描述可以参见步骤410,在此不再赘述。

在一些实施例中,主机120的第二操作系统123的硬件驱动程序可以向TEE板卡发送应用程序调用请求。

具体地,主机中的非保密应用程序通过调用第二TEE软件开发工具包125中的应用程序调用函数,发起应用程序调用请求;第二TEE软件开发工具包125可以将应用程序调用请求发送给第二操作系统123中的硬件驱动程序;第二操作系统123中的硬件驱动程序可以通过与TEE板卡的信号连接(例如,PCI-E接口),向TEE板卡110发送应用程序调用请求。

以SGX技术为例,第二TEE软件开发工具包为SGX SDK,主机中的非保密应用程序通过调用SGX SDK中的应用程序调用函数【ECALL函数】,发起应用程序调用请求;SGX SDK可以将应用程序调用请求发送给第二操作系统123中的硬件驱动程序;第二操作系统123中的硬件驱动程序可以通过与TEE板卡的信号连接(例如,PCI-E接口),向TEE板卡110发送应用程序调用请求。

进一步地,TEE板卡110可以通过与主机的信号连接(例如,PCI-E接口)从主机120的第二操作系统123中的硬件驱动程序接收程序调用请求。关于TEE板卡接收主机程序调用请求的详细描述可以参见图4中关于TEE板卡接收主机创建请求的说明,在此不再赘述。

步骤520,调用位于相应可信执行环境中的目标应用程序,使得目标应用程序在可信执行环境中执行并获得执行结果。

在一些实施例中,TEE板卡110中的第一中央处理器112可以直接从第二操作系统123中的硬件驱动程序接收应用程序调用请求。进一步地,第一中央处理器112可以直接调用可信执行环境的内存资源中的目标应用程序,使得目标应用程序在可信执行环境中执行。

在一些实施例中,TEE板卡110可以具有第一操作系统,第一操作系统中的硬件驱动程序可以通过从第二操作系统123中的硬件驱动程序接收应用程序调用请求,并调用可信执行环境的内存资源中的目标应用程序,使得目标应用程序在可信执行环境中执行。

与调用可信执行环境指令类似地,在一些实施例中,TEE板卡110可以基于第一TEE软件开发工具包115调用位于相应可信执行环境中的目标应用程序。

具体地,第一操作系统113中的硬件驱动程序先从第二操作系统123中的硬件驱动程序接收应用程序调用请求;然后将应用程序调用请求传输给第一TEE软件开发工具包115,第一TEE软件开发工具包115基于应用程序调用请求中可信执行环境的标识,通过所述硬件驱动程序调用第一中央处理器112提供的可信执行环境指令“进入可信执行环境的指令”(例如,基于SGX技术中的EENTER指令);再基于应用程序调用请求中的目标应用程序的标识,执行目标应用程序。

在一些实施例中,第一操作系统113中的硬件驱动程序可以在执行目标应用程序之前,将输入参数加载到可信执行环境中。在一些实施例中,第一操作系统113中的硬件驱动程序也可以先将输入参数存储在第一内存111中,在目标应用程序执行过程中,再从第一内存中调取。

在一些实施例中,TEE板卡还可以基于第一TEE软件开发工具包115执行应用程序。

具体地,在应用程序的执行过程中,第一TEE软件开发工具包可以基于应用程序中的程序指令通过所述硬件驱动程序调用第一中央处理器提供的可信执行环境指令,以实现所述程序指令的功能。

继续沿用上述示例,X应用程序中的程序指令包括:指令K【计算甲提供的数据和乙提供的数据的差率】和指令L【判断差率是否小于5%,是则核验结果为真实,否则核验结果为不真实】,则第一TEE软件开发工具包可以基于指令K在第一TEE软件开发工具包中对应的应用程序接口k,通过硬件驱动程序调用第一中央处理器提供的对应可信执行环境指令,以实现指令K的功能;进一步地,第一TEE软件开发工具包可以基于指令L在第一TEE软件开发工具包中对应的应用程序接口l,通过硬件驱动程序调用第一中央处理器提供的对应可信执行环境指令,以实现指令L的功能。

在一些实施例中,当应用程序中的所有程序指令执行完毕后,TEE板卡的可信执行环境中可以获取目标应用程序的执行结果。继续沿用上述示例,X保密应用程序的执行结果为“核验结果真实”。

步骤530,向主机返回执行结果。

在一些实施例中,TEE板卡可以通过与主机的信号连接向主机返回执行结果。关于TEE板卡与主机的信号连接的详细描述可以参见图1,在此不再赘述。例如,当TEE板卡不具有第一操作系统与第一TEE软件开发工具包时,TEE板卡的第一中央处理器可以将执行结果返回给主机;或者当TEE板卡具有第一操作系统但不具有第一TEE软件开发工具包时,TEE板卡中第一操作系统的硬件驱动程序将执行结果返回给主机,又或者当TEE板卡具有第一操作系统与第一TEE软件开发工具包时,第一TEE软件开发工具包可以通过第一操作系统的硬件驱动程序将执行结果返回给主机。

在一些实施例中,TEE板卡也可以通过非保密应用程序调用请求向主机返回执行结果。

在一些实施例中, TEE板卡中的保密应用程序也可以调用主机中的非保密应用程序。在一些实施例中,保密应用程序可以通过非保密应用程序调用请求调用主机中的非保密程序。非保密应用程序调用请求即TEE板卡调用主机中非保密应用程序的执行结果的请求。

在一些实施例中,非保密应用程序调用请求中可以包括目标非保密应用程序的标识和保密应用程序的执行结果。具体地,TEE板卡中的保密应用程序通过调用第一TEE软件开发工具包115中的非保密应用程序调用函数,发起非保密应用程序调用请求;第一TEE软件开发工具包115可以将非保密应用程序调用请求发送给第一操作系统113中的硬件驱动程序;第一操作系统113中的硬件驱动程序可以通过与主机的信号连接(例如,PCI-E接口),向主机发送非保密应用程序调用。以SGX技术为例,第一TEE软件开发工具包为SGX SDK,TEE板卡中的保密应用程序通过调用SGX SDK中的非保密应用程序调用函数【OCALL函数】,发起非保密应用程序调用请求;SGX SDK可以将非保密应用程序调用请求发送给第一操作系统113中的硬件驱动程序;第一操作系统113中的硬件驱动程序可以通过与主机的信号连接(例如,PCI-E接口),向主机120发送非保密应用程序调用请求。

示例性地,丙请求主机基于甲提供的数据提供成本预测和利润预测,其中,乙提供的数据和利润预测的算法需要保密。主机可以将非保密数据处理操作“成本预测”编译为C非保密应用程序;将保密数据处理操作“基于乙提供的数据对甲提供的数据进行真实性核验”以及“利润预测”的操作分别编译为X保密应用程序和D保密应用程序部署到TEE板卡的执行环境中。TEE板卡被主机调用执行X保密应用程序,获取了执行结果“核验结果真实”后,X保密应用程序可以通过向主机发送非保密应用程序调用请求来调用C非保密应用程序,其中,非保密应用程序请求中可以包括:目标非保密应用程序的标识“C”和执行结果“核验结果真实”。进一步地,主机中的C非保密应用程序基于“核验结果真实”的执行结果,利用甲提供的数据获取C非保密应用程序的执行结果“预测的成本值”,并返回给TEE板卡。

进一步地,主机可以通过与主机的信号连接向TEE板卡返回执行结果,也可以通过将执行结果“预测的成本值”作为调用D保密程序的应用程序调用请求中的输入参数发送给TEE板卡。

在一些实施例中,执行结果还可以包括可信执行环境完整性证明。

可信执行环境完整性证明是向第三方提供的能够反映当前可信执行环境的可信性和签名的凭证。在一些实施例中,可信执行环境完整性证明可以包括可信执行环境的身份信息和属性、硬件等安全相关信息和以上内容的签名。

在一些实施例中,目标应用程序能够生成可信执行环境完整性证明。

在一些实施例中,TEE板卡110中的第一中央处理器112可以直接从第二操作系统123中的硬件驱动程序接收可信执行环境完整性证明请求。进一步地,第一中央处理器112可以直接调用可信执行环境的内存资源中的目标应用程序,使得目标应用程序在可信执行环境中生成可信执行环境完整性证明。

在一些实施例中,也可以通过第一TEE软件开发工具包生成可信执行环境完整性证明。在一些实施例中,基于从主机接收的可信执行环境完整性证明请求,第一TEE软件开发工具包可以基于目标应用程序中的可信执行环境完整性证明生成指令,调用第一中央处理器提供的可信执行环境指令,以实现所述生成可信执行环境完整性证明。

在一些实施例中,当TEE软件开发工具包对源代码进行编译时,会在可执行文件中自行增加可信执行环境完整性证明生成指令。如,主机的第二TEE软件开发工具包在编译保密数据处理操作的相关代码时,可以增加可信执行环境完整性证明生成指令到可执行的保密应用程序中。

具体地,第一TEE软件开发工具包可以基于可信执行环境完整性证明生成指令在第一TEE软件开发工具包中对应的应用程序接口v,调用第一中央处理器提供的对应可信执行环境指令,以实现所述生成可信执行环境完整性证明。

以SGX技术为例,目标应用程序可以利用Intel®提供的签名和验证服务证明设备包括可信执行环境。以可信计算平台模块(Trusted Platform Module,TPM)技术为例,目标应用程序可以通过TPM记录系统,基于TEE环境的完整性度量值、TPM密钥和证书产生完整性度量报告。

在一些实施例中,TEE板卡还包括用于存储数据的第一存储介质114。在一些实施例中,TEE板卡还可以将执行结果存储在第一存储介质114中,以便主机的其他应用程序调取执行结果。

关于第一存储介质114的详细描述可以参见图1,在此不再赘述。

本说明书实施例可能带来的有益效果包括但不限于:(1)将可信执行环境部署在主机之外,使得分离式TEE可以避免和主机共享软件资源和/或硬件资源,从而有效减少侧信道,提高了可信执行环境的安全性和保密性;(2)基于通用CPU实现分离式TEE的部署,可以利用已有的TEE构建方案,例如,内存加密和远程验证方案,节约了本设备的技术成本;(3)通用CPU提供的TEE的安全性已经经过充分验证,从而提高了本设备的适应范围;(4)通用CPU实现分离式TEE可以兼容通用CPU支持的TEE应用程序,提高了设备的通用性。

需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。

上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。

同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。

此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。

计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。

本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。

此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。

同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。

针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。

最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。

相关技术
  • 数据处理设备、数据处理方法、程序转换处理设备和程序转换处理方法、程序转换处理设备、数据处理设备、程序转换处理方法和数据处理方法、数据处理设备、数据处理方法、程序分析处理设备和程序分析处理方法、数据处理设备、历史保存设备、数据处理方法和程序、以及编译处理设备
  • 数据处理设备、数据处理方法、终端单元、和数据处理设备的发送方法
技术分类

06120112347460