通过证书签发提供高可用计算服务的方法、装置及介质
技术领域
本说明书一个或多个实施例涉及分布式计算和安全计算领域,尤其涉及在分布式系统中提供高可用计算服务的方法和装置。
背景技术
为了计算和数据传输的安全,常常使用可信执行环境TEE(Trusted ExecutionEnvironment)中的可信计算单元进行可信计算和数据处理,其中可信计算单元可以保证其中的代码执行是安全的,外界包括操作系统或驱动等都无法获取内部的运行时内存等秘密。例如,可以利用可信计算单元来运行应用程序,执行计算任务,以保证程序代码的执行安全以及与外界的隔离。
出于可信执行环境的安全需要,在用户终端与可信计算单元交换要处理的数据之前,通常首先通过协商得到一个共同的加密秘钥,该秘钥除了通信的双方,其他任何人都不可能破解。双方之间的数据发送均通过该协商得出的秘钥来进行加密,如此,我们称为,用户终端与可信计算单元建立了可信通道,可以在该可信通道上安全传输保密数据。
在许多情况下,用户终端需要与可信计算平台中的多个可信计算单元进行通信。例如,为了保证服务的高可用性,可以针对同一计算任务或计算服务提供多个副本,多个副本由多个计算单元执行。此时,用户终端可以与提供服务副本的任意计算单元通信,从其获得计算服务。在当前计算单元出现故障的情况下,用户终端可以切换到运行同一计算任务的其他计算单元。或者,某些可信计算平台还支持用户终端同时与多个计算单元通信。在以上情况下,用户终端往往需要与多个可信计算单元分别进行秘钥协商,分别单独建立可信通道。当可信计算单元数目增多,数量庞大时,用户接入或切换会变得复杂繁琐,成本高昂。
因此,希望能有改进的方案,使得用户可以安全快速地获取高可用性的计算服务。
发明内容
本说明书一个或多个实施例描述了提供高可用计算服务的方法及装置,其中通过为运行计算任务的可信计算单元和请求该计算任务的用户终端分发证书链中的对应证书,确保用户终端可以与对应的可信计算单元进行安全通信,获取计算服务。
根据第一方面,提供了一种获取证书以提供计算服务的方法,通过运行第一计算任务的第一计算单元执行,所述第一计算任务的多个副本通过多个计算单元执行,所述第一计算单元为所述多个计算单元中任意的计算单元,所述方法包括:
向可信证书生成器发送第一证书请求,所述第一证书请求包括第一认证信息,所述第一认证信息用于对第一计算单元进行可信认证,所述第一认证信息包括所述第一计算任务的第一代码哈希;
从所述可信证书生成器接收第一证书报告,所述第一证书报告包括,针对所述第一代码哈希生成的第一证书链中的第一公钥证书,以及与该第一公钥证书匹配的第一私钥,所述第一公钥证书和所述第一私钥构成第一证书对;所述第一证书链还包括与第一公钥证书对应的第一根证书;
以所述第一计算单元作为TLS服务端,将所述第一证书对设置为TLS服务端的证书对,用于向具有所述第一根证书的TLS客户端提供所述第一计算任务的计算服务。
在一个具体实施例中,所述第一计算单元实现为可信围圈Enclave。
根据第一方面的一个实施例,在向可信证书生成器发送第一认证请求之前,第一计算单元还执行:
生成第一计算单元的单元报告文件,所述单元报告文件包括所述第一代码哈希,所述第一计算单元的签名信息;
将所述单元报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
将所述认证结果文件作为所述第一认证信息包含在所述第一证书请求中。
根据第一方面的另一实施例,在向可信证书生成器发送第一认证请求之前,第一计算单元还执行:
生成第一计算单元的单元报告文件,所述单元报告文件包括所述第一代码哈希,所述第一计算单元的签名信息;
将所述单元报告文件作为所述第一认证信息包含在所述第一证书请求中。
根据第一方面的一种实施方式,在向可信证书生成器发送第一认证请求之前,第一计算单元与所述可信证书生成器进行秘钥协商,建立可信通道,所述可信通道用于发送所述第一证书请求,以及接收所述第一证书报告。
根据第二方面,提供了一种为计算单元分发证书的方法,通过可信证书生成器执行,所述方法包括:
从运行第一计算任务的第一计算单元接收第一证书请求,所述第一计算任务的多个副本通过多个计算单元执行,所述第一计算单元为所述多个计算单元中任意的计算单元;所述第一证书请求包括第一认证信息,所述第一认证信息包括所述第一计算任务的第一代码哈希;
根据所述第一认证信息对所述第一计算单元进行认证;
在认证通过的情况下,获取针对所述第一代码哈希生成的第一证书链和第一私钥,所述第一证书链包括第一根证书和对应的第一公钥证书,所述第一公钥证书与所述第一私钥相匹配,构成第一证书对;
向所述第一计算单元发送第一证书报告,其中包括所述第一证书对,使得所述第一计算单元以自身为TLS服务端,将所述第一证书对作为所述TLS 服务端的证书对。
在第二方面的一个实施例中,所述第一认证信息为经过第三方认证机构认证的认证结果文件,该认证结果文件包含该第三方认证机构的签名信息;
所述根据所述第一认证信息对所述第一计算单元进行认证包括:
校验所述签名信息,在校验成功的情况下,确定所述第一计算单元认证通过。
在第二方面的另一实施例中,所述第一认证信息为所述第一计算单元生成的单元报告文件,所述单元报告文件包括所述第一代码哈希,以及所述第一计算单元的签名信息;
所述根据所述第一认证信息对所述第一计算单元进行认证包括:
将所述单元报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
校验所述签名信息,在校验成功的情况下,确定所述第一计算单元认证通过。
根据第二方面的一种实施方式,获取针对所述第一代码哈希生成的第一证书链和第一私钥,包括:
判断是否存在已生成的、与所述第一代码哈希对应的第一证书链;
如果存在,读取已经生成的第一证书链;
如果不存在,针对所述第一代码哈希生成第一证书链。
根据第二方面的一个实施例,所述第一公钥证书包括针对所述第一代码哈希生成的第一公钥,和所述可信证书生成器签名的第一签名信息,其中所述第一公钥和所述第一私钥构成密钥对;所述第一根证书中包括针对所述第一代码哈希生成的第二公钥,以及所述可信证书生成器自签名的第二签名信息;所述第二公钥用于对所述第一签名信息和第二签名信息进行校验。
根据第二方面的另一实施例,所述第一公钥证书包括针对所述第一代码哈希生成的第一公钥,和所述可信证书生成器签名的第一签名信息,其中所述第一公钥和所述第一私钥构成密钥对;所述第一根证书包括所述第一公钥,以及所述可信证书生成器自签名的第二签名信息;所述第一公钥用于对所述第一签名信息和第二签名信息进行校验。
根据第二方面的一种实施方式,在从运行第一计算任务的第一计算单元接收第一证书请求之前,证书生成器与所述第一计算单元进行秘钥协商,建立可信通道,所述可信通道用于接收所述第一证书请求,以及发送所述第一证书报告。
根据第三方面,提供了一种获取证书以获取计算服务的方法,通过用户终端执行,所述方法包括:
向可信证书生成器发送第二证书请求,所述第二证书请求中包括,期望连接的第一计算任务的第一代码哈希;
从所述可信证书生成器接收第二证书报告,所述第二证书报告包括针对所述第一代码哈希生成的第一证书链中的第一根证书;所述第一证书链还包括与所述第一根证书相对应的第一公钥证书,所述第一公钥证书与相匹配的第一私钥构成第一证书对,被预先分发给经过认证的、运行所述第一计算任务的至少一个计算单元;
以所述用户终端为TLS客户端,将所述第一根证书设置为所述TLS客户端的可信根证书,从而与具有所述第一证书对、且作用为TLS服务端的所述至少一个计算单元通信,从其获取所述第一计算任务的计算服务。
根据第三方面的一种实施方式,在向可信证书生成器发送第二证书请求之前,用户终端还执行:
获取所述可信证书生成器的第二认证信息;
根据所述第二认证信息,对所述可信证书生成器进行认证。
进一步的,根据一个实施例,上述第二认证信息为经过第三方认证机构认证的认证结果文件,该认证结果文件包含该第三方认证机构的签名信息;
所述根据所述第二认证信息,对所述可信证书生成器进行认证包括:
校验所述签名信息,在校验成功的情况下,确定所述可信证书生成器认证通过。
根据另一实施例,所述第二认证信息为所述可信证书生成器生成的报告文件,所述报告文件包括所述可信证书生成器自身的代码哈希和签名信息;
所述根据所述第二认证信息,对所述可信证书生成器进行认证包括:
将所述报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
校验所述签名信息,在校验成功的情况下,确定所述证书生成器认证通过。
根据第三方面的一种实施方式,在将所述第一根证书设置为所述TLS客户端的可信根证书之后,所述用户终端与所述至少一个计算单元进行TLS握手,建立TLS可信通道;
通过TLS可信通道,从所述至少一个计算单元获取所述第一计算任务的计算服务。
在一个进一步的实施例中,从所述至少一个计算单元获取所述第一计算任务的计算服务包括:
根据路由服务器基于所述至少一个计算单元的负载均衡而确定的路由路径,连接到所述至少一个计算单元中的至少部分计算单元,从该至少部分计算单元获取所述第一计算任务的计算服务。
根据第四方面,提供了一种为用户终端分发证书的方法,通过可信证书生成器执行,所述方法包括:
接收用户终端发送的第二证书请求,所述第二证书请求中包括,所述用户终端期望连接的第一计算任务的第一代码哈希;
获取预先针对所述第一代码哈希生成的第一证书链和第一私钥,所述第一证书链包括第一根证书和与其对应的第一公钥证书,所述第一公钥证书与所述第一私钥构成第一证书对,被预先分发给经过认证的、运行所述第一计算任务的至少一个计算单元;
向所述用户终端发送第二证书报告,所述第二证书报告包括所述第一根证书,以使得所述用户终端以自身为TLS客户端,将所述第一根证书作为TLS 客户端的可信根证书,从而从具有所述第一证书对的TLS服务端获取所述第一计算任务的计算服务。
根据第四方面的一种实施方式,在接收用户终端发送的第二证书请求之前,还包括:响应于所述用户终端的认证请求,向所述用户终端提供第二认证信息,以供所述用户终端进行认证。
在一个进一步的实施例中,向所述用户终端提供第二认证信息包括:
生成报告文件,所述报告文件包括所述可信证书生成器自身的代码哈希和签名信息;
将所述报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
将所述认证结果文件作为所述第二认证信息提供给所述用户终端。
在另一个进一步的实施例中,向所述用户终端提供第二认证信息包括:
生成报告文件,所述报告文件包括所述可信证书生成器自身的代码哈希和签名信息;
将所述报告文件作为所述第二认证信息提供给所述用户终端。
根据第五方面,提供了一种获取证书以提供计算服务的装置,部署在运行第一计算任务的第一计算单元中,所述第一计算任务的多个副本通过多个计算单元执行,所述第一计算单元为所述多个计算单元中任意的计算单元,所述装置包括:
第一证书请求模块,配置为向可信证书生成器发送第一证书请求,所述第一证书请求包括第一认证信息,所述第一认证信息用于对第一计算单元进行可信认证,所述第一认证信息包括所述第一计算任务的第一代码哈希;
第一报告接收模块,配置为从所述可信证书生成器接收第一证书报告,所述第一证书报告包括,针对所述第一代码哈希生成的第一证书链中的第一公钥证书,以及与该第一公钥证书匹配的第一私钥,所述第一公钥证书和所述第一私钥构成第一证书对;所述第一证书链还包括与第一公钥证书对应的第一根证书;
服务端设置模块,配置为以所述第一计算单元作为TLS服务端,将所述第一证书对设置为TLS服务端的证书对,用于向具有所述第一根证书的TLS 客户端提供所述第一计算任务的计算服务。
根据第六方面,提供了一种为可信计算单元分发证书的装置,部署在可信证书生成器中,所述装置包括:
第一请求接收模块,配置为从运行第一计算任务的第一计算单元接收第一证书请求,所述第一计算任务的多个副本通过多个计算单元执行,所述第一计算单元为所述多个计算单元中任意的计算单元;所述第一证书请求包括第一认证信息,所述第一认证信息包括所述第一计算任务的第一代码哈希;
认证模块,配置为根据所述第一认证信息对所述第一计算单元进行认证;
证书链获取模块,配置为在认证通过的情况下,获取针对所述第一代码哈希生成的第一证书链和第一私钥,所述第一证书链包括第一根证书和对应的第一公钥证书,所述第一公钥证书与所述第一私钥相匹配,构成第一证书对;
第一报告发送模块,配置为向所述第一计算单元发送第一证书报告,其中包括所述第一证书对,使得所述第一计算单元以自身为TLS服务端,将所述第一证书对作为所述TLS服务端的证书对。
根据第七方面,提供了一种获取证书以获取计算服务的装置,部署在用户终端中,所述装置包括:
第二证书请求模块,配置为向可信证书生成器发送第二证书请求,所述第二证书请求中包括,期望连接的第一计算任务的第一代码哈希;
第二报告接收模块,配置为从所述可信证书生成器接收第二证书报告,所述第二证书报告包括针对所述第一代码哈希生成的第一证书链中的第一根证书;所述第一证书链还包括与所述第一根证书相对应的第一公钥证书,所述第一公钥证书与相匹配的第一私钥构成第一证书对,被预先分发给经过认证的、运行所述第一计算任务的至少一个计算单元;
客户端设置模块,配置为以所述用户终端为TLS客户端,将所述第一根证书设置为所述TLS客户端的可信根证书,从而与具有所述第一证书对、且作用为TLS服务端的所述至少一个计算单元通信,从其获取所述第一计算任务的计算服务。
根据第八方面,提供了一种为用户终端分发证书的装置,部署在可信证书生成器中,所述装置包括:
第二请求接收模块,配置为接收用户终端发送的第二证书请求,所述第二证书请求中包括,所述用户终端期望连接的第一计算任务的第一代码哈希;
证书链获取模块,配置为获取预先针对所述第一代码哈希生成的第一证书链和第一私钥,所述第一证书链包括第一根证书和与其对应的第一公钥证书,所述第一公钥证书与所述第一私钥构成第一证书对,被预先分发给经过认证的、运行所述第一计算任务的至少一个计算单元;
第二报告发送模块,配置为向所述用户终端发送第二证书报告,所述第二证书报告包括所述第一根证书,以使得所述用户终端以自身为TLS客户端,将所述第一根证书作为TLS客户端的可信根证书,从而从具有所述第一证书对的TLS服务端获取所述第一计算任务的计算服务。
根据第九方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面到第四方面的方法。
根据第十方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面到第四方面的方法。
根据本说明书实施例提供的方法和装置,通过可信证书生成器生成并分发证书,实现安全认证和校验,便于用户终端从可信计算单元获取计算服务。具体的,可信证书生成器通过代码哈希区分不同计算任务,针对一个代码哈希生成一套证书链和一个私钥,其中证书链中包括公钥证书和对应的根证书,公钥证书与私钥相匹配,构成一个证书对。然后,可信证书生成器将该证书对分发给经过认证的、运行该代码哈希对应计算任务的各个可信计算单元。另一方面,可信证书生成器将上述证书链中的根证书分发给请求该计算任务的用户终端。于是,具有根证书的用户终端,和具有对应证书对的可信计算单元,可以通过TLS协议的方式,进行安全通信。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例为可信计算单元签发证书的过程示意图;
图3示出一个示例中的数字证书的证书链和证书对;
图4示出在一个实施例中的第一证书链;
图5示出在另一实施例中的第一证书链;
图6示出在执行图2所示的过程之后各个计算单元的状态;
图7示出根据一个实施例为用户终端分发证书的过程示意图;
图8示出在执行图2和图7所示的过程之后系统的状态;
图9示出在一个实施例中提供计算服务的装置的示意性框图;
图10示出在一个实施例中为可信计算单元分发证书的装置的示意性框图;
图11示出在一个实施例中获取计算服务的装置的示意性框图;
图12示出在一个实施例中为用户终端分发证书的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。如图所示,可以通过可信执行环境TEE中的可信计算单元执行所需的计算任务。可信计算单元可以是具有一定隔离能力从而保证计算安全性的计算模块或计算设备,例如是可信的计算围圈Enclave,比如采用SGX或Trust Zone等技术而实现。例如,根据SGX技术,通过提供一系列CPU指令码,允许用户代码创建具有高访问权限的私有内存区域而形成计算围圈Enclave。其他应用程序,包括操作系统OS,BIOS系统,虚拟机系统等,均不能访问围圈Enclave中的数据,也就不能窥探和篡改其中应用程序的状态和数据。因此,通过例如围圈 Enclave的可信计算单元执行计算任务,可以保证任务代码与外界的隔离,确保任务程序的运行安全。
另一方面,为了保证计算服务的高可用性,可以为计算任务提供多个代码副本,通过多个可信计算单元执行多个副本,例如用多个围圈Enclave分别执行同一计算任务,形成多个Enclave。例如,在图1的示意中,任务1具有3个副本,分别通过可信计算单元11,12,14来执行。如此,当某个可信计算单元出现故障时,用户可以连接到其他可信计算单元来获取任务1的计算服务,从而保证服务不会中断。并且,多个可信计算单元可以根据用户流量,分担负载,从而共同对外提供计算服务。
在图1所示的情况下,当用户想要获取任务1的计算服务时,用户可以通过用户终端30,与运行任务1的可信计算单元中的任意可信计算单元通信。然而,如前所述,由于可信执行环境的安全需要,用户终端需要与各个可信计算单元建立可信通道才能进行数据的传输和交换。如果分别与各个可信计算单元进行秘钥协商,分别单独建立可信通道,显然复杂而繁琐。
为了便于用户终端与提供计算服务的可信计算单元之间建立可信连接,根据本说明书的一个实施例,采用可信证书生成器20来生成数字证书并管理数字证书,通过证书的生成和分发管理,促使用户终端连接到提供所需计算服务的可信计算单元。
具体地,可信证书生成器20基于代码哈希,区分出不同计算任务。针对某一任务,例如称为第一计算任务,可信证书生成器为其生成一套证书链和一个私钥,其中证书链中包括公钥证书和对应的根证书,公钥证书与上述私钥相匹配,构成一个证书对。然后,可信证书生成器将该证书对分发给经过认证的、运行该第一计算任务的各个可信计算单元。于是,运行同一任务副本的多个可信计算单元会获得同样的证书对。另一方面,可信证书生成器将上述证书链中的根证书分发给请求该任务,例如第一计算任务的用户终端。
接下来,可以将运行第一计算任务的各个可信计算单元作为传输层安全协议TLS服务端,将分发给可信计算单元的证书对作为TLS服务端的证书对,将请求第一计算任务的用户终端作为TLS客户端,将分发给用户终端的根证书设置为TLS客户端的可信根证书。由于上述证书对和根证书构成一套证书链,而TLS客户端只会与拥有同一证书链中对应证书对的TLS服务端握手,于是保证了,请求第一计算任务的用户终端,只会与运行第一计算任务的可信计算单元进行握手,建立可信通道,从而从其获得与第一计算任务对应的计算服务。
下面描述以上构思的具体实现方式。
图2示出根据一个实施例为可信计算单元签发证书的过程示意图。通过图2的过程,可信证书生成器向运行第一计算任务的第一计算单元签发数字证书,便于其后续提供与第一计算任务对应的计算服务。可以理解,第一计算任务可以是任何计算任务,并且,该第一计算任务具有多个代码副本,该多个副本通过多个计算单元执行,第一计算单元是该多个计算单元中任意的一个计算单元。例如,第一计算任务例如可以是图1中所示的任务1;任务1 具有3个副本,分别通过可信计算单元11,12,14来执行,第一计算单元可以是可信计算单元11,12,14中任意的一个。
下面描述签发证书的过程。
在步骤201,当第一计算任务在第一计算单元中启动时,生成第一认证信息,用于其他方对第一计算单元进行可信认证。该可信认证一般是通过远程认证RA(RemoteAttestation)实现,因此,又将生成的认证信息称为RA信息或RA报告。
在一个实施例中,第一计算单元生成本计算单元的单元报告文件作为上述第一认证信息,其中单元报告文件用于描述第一计算单元自身配置状况和运行状况。具体的,该单元报告文件至少包括,其中运行的第一计算任务的程序代码的哈希,称为第一代码哈希。可以理解,第一代码哈希可以唯一地标识出所运行的第一计算任务。可选的,该单元报告中还可以包括其中运行的第一计算任务的其他描述信息,例如名称、版本、属性信息等等。
上述单元报告文件还包括该第一计算单元的签名信息,以此保证单元报告文件的真实可靠,防止伪造和篡改。签名信息可以通过各种签名方式得到,例如哈希算法,加密算法等。在一个具体实施例中,签名信息依赖于对应第一计算单元的硬件秘钥,该硬件秘钥唯一对应于实体硬件,如此确保单元报告文件中的签名信息确实是由基于该硬件的可信计算单元产生。
在一个实施例中,上述单元报告文件还包括第一计算单元的硬件信息,例如CPU主频,内存容量等等。在一个实施例中,上述单元报告文件还包括第一计算单元的运行时环境信息,从而更全面地描述当前的运行状况。在又一实施例中,单元报告文件还可以包括其他用户自定义的数据,以根据需要描述和定义可信计算单元的其他信息。
如此,上述生成的单元报告文件可以作为第一认证信息,用于其他方对第一计算单元进行可信认证。
在一个实施例中,第一计算单元在生成上述单元报告文件后,将该单元报告文件发送至第三方认证机构进行认证,以获得认证结果文件,从而将认证结果文件作为第一认证信息。
可以理解,上述第三方认证机构是可信的、具有认证能力的权威认证机构。通常,假定各个可信计算单元在投入使用之前,会向该第三方认证机构进行注册,因此,该第三方认证结构登记有各个可信计算单元的配置状况,从而后续可以对其进行认证。
例如,在上述第一计算单元是通过Intel SGX实现的可信围圈Enclave 的情况下,该第三方认证机构即为Intel认证服务器(Attestation Service)。在第一计算单元通过其他方式实现的情况下,该第三方认证机构可以是生产、部署对应计算单元的机构或其关联机构。
在接收到第一计算单元的单元报告文件后,第三方认证机构可以基于该单元报告,对第一计算单元的安全性和可信性进行认证。具体地,第三方认证机构首先根据单元报告文件中的签名信息,认证该单元报告文件是否真实无篡改,并根据维护的各个可信计算单元预先注册的信息,判断第一计算单元是否确实可信。此外,第三方认证机构还根据单元报告文件中的第一计算任务的相关信息,验证第一计算任务是否运行在可信执行环境中,并验证第一代码哈希是否符合预期。
在对上述单元报告文件进行验证且验证通过的情况下,第三方机构可以在该单元报告文件上添加自身的签名,生成认证结果文件。也就是说,该认证结果文件中包含第三方认证机构的签名信息。
在获取到第三方认证机构返回的认证结果文件后,第一计算单元可以将该认证结果文件作为第一认证信息,作为可信计算单元的证明。
此外,在步骤202,第一计算单元与可信证书生成器进行秘钥协商,建立可信通道,又称为RA通道。
具体地,第一计算单元与可信证书生成器可以采用各种秘钥协商方式,确定出共同的秘钥或秘钥对。例如,采用DH(Diffie-Hellman)密钥交换方法,或者采用基于椭圆曲线的ECDH秘钥交换方式,等等。利用协商得到的秘钥或秘钥对,可以建立可信通道,确保通过该可信通道传输的数据只有双方可以获取。
需要理解,步骤201和步骤202可以不限于图2所示的顺序,两者可以交换顺序执行,也可以并行执行。
接着,在步骤203,利用上述RA通道,第一计算单元向可信证书生成器发送获取证书的请求,以下称为第一证书请求。该第一证书请求中包括,步骤201中得到的第一认证信息,其中包含有第一计算任务的第一代码哈希。
在接收到第一证书请求后,在步骤204,可信证书生成器首先基于上述第一认证信息,对第一计算单元进行认证。
如前所述,在一个实施例中,上述第一认证信息可以是第一计算单元生成的单元报告文件。在这样的情况下,可信证书生成器将该单元报告文件发送至上述第三方认证机构,由该第三方认证机构进行验证。在验证通过的情况下,返回认证结果文件,其中包含有该第三方认证机构的签名信息。于是,可信证书生成器进一步验证该签名信息,验证通过,则认为第一计算单元认证通过。
在另一实施例中,上述第一认证信息也可以是第一计算单元从第三方认证机构收到的认证结果文件。在这样的情况下,可信证书生成器只需要验证该认证结果文件中的签名信息。验证通过,则认为第一计算单元认证通过。
如果对第一计算单元的认证通过,那么在步骤205,可信证书生成器获取针对第一代码哈希生成的第一证书链和第一私钥,所述第一证书链包括第一根证书和对应的第一公钥证书,第一公钥证书与第一私钥相匹配,构成第一证书对。
下面对证书链和证书对进行简单的介绍。
数字证书是由证书认证机构CA(Certificate Authority)签发的、用来认证持有者身份合法性的电子文档,以防止第三方的冒充行为。一般地,数字证书中包括,持有者信息,持有者公钥,签发者信息,以及签发者的签名。由于数字证书中包含为持有者生成的公钥,因此也将这样的数字证书称为公钥证书。相应的,签发机构还会生成一个与持有者公钥对应匹配的私钥,该公钥和私钥构成非对称加密的秘钥对。此时,公钥证书与私钥构成一个证书对。
图3示出一个示例中的数字证书的证书链和证书对。假定其中的数字证书33是签发机构CA1颁发给持有者U1的公钥证书,那么证书33中包括,持有者U1信息,持有者U1公钥K1,签发者CA1信息,以及签发者CA1的签名。签发者CA1还会生成与公钥K1对应的私钥k1,于是证书33和私钥k1构成证书对。
当验证者想要验证该证书33时,可以利用签发者CA1的公钥进行验证。然而,如果验证者对于签发者CA1不够信任的话,那么就需要向上追溯,获取CA1的证书,来验证CA1是否合法可信。于是,可以向上追溯到证书32,该证书32是签发机构CA2颁发给CA1的证书,其中包括,CA1信息(此时CA1 是证书持有者),CA1公钥,签发者CA2信息,签发者CA2的签名。验证者可以利用证书32中的CA1公钥,验证证书33中的CA1签名。然而,如果验证者对于签发机构CA2仍然不够信任的话,就需要继续向上追溯,直到最终的根证书30。
根证书是根CA自己给自己颁发的证书,其中根CA一般是最高权威的CA 中心,必须给予信任。如图所示,根证书30包括,根CA信息(此时根CA既是持有者,也是签发者),根CA公钥,以及根CA自己给自己的签名信息。
如此,根证书30和各个公钥证书构成一个证书链或信任链,其中根证书由根CA签发给自己,后续的各个公钥证书由根CA以及根CA逐级授权的各级 CA签发产生。根证书是证书链的起点,证书链的层级数根据实际情况而定。
回到图2中的步骤205,可信证书生成器在确认第一计算单元认证通过后,获取针对第一计算任务的第一代码哈希生成的第一证书链和对应的第一私钥。具体地,可信证书生成器可以首先判断,是否存在已生成的、与第一代码哈希对应的第一证书链。如果存在,那么意味着,同样运行第一计算任务的其他计算单元已经请求可信证书生成器生成了对应的证书链,此时,只需要读取已经生成的第一证书链和对应的第一私钥。如果不存在,那么意味着,先前没有针对第一计算任务生成证书链,于是,针对第一计算任务的第一代码哈希生成第一证书链和第一私钥。
如前所述,第一证书链包括第一根证书和对应的第一公钥证书,第一公钥证书与第一私钥相匹配,构成第一证书对。
在不同实施例中,第一公钥证书和第一根证书可以采用多种格式,例如,采用密码学中公钥证书的标准格式X.509证书。
此外,需要理解的是,可信证书生成器会针对不同计算任务,也就是不同代码哈希,生成不同证书链,一个证书链中的根证书和公钥证书具有对应关系,不同证书链中的根证书彼此不同。
相应地,对于第一证书链来说,第一根证书是信任链起点,与第一公钥证书相对应。在不同实施例中,第一公钥证书与第一根证书以不同的方式相对应。
图4示出在一个实施例中的第一证书链。在图4中,证书41为第一公钥证书,其中包括,作为证书持有者的第一计算任务(例如任务1)信息,第一公钥K1(为任务1生成的公钥),作为签发者的证书生成器的信息,以及证书生成器签名的第一签名信息。第一私钥k1与第一公钥K1相匹配。证书40 为第一根证书,其中包括证书生成器的信息(既作为证书持有者又作为签发者),第二公钥K2(证书生成器对外的签名公钥),以及证书生成器自签名的第二签名信息。其中,第一公钥证书41中的第一签名信息和第一根证书40 中的第二签名信息,均使用第二公钥K2进行校验。并且,该第二公钥K2是针对第一计算任务的第一代码哈希生成的,如此,第一根证书40和第一公钥证书41均唯一地对应于第一代码哈希。
图5示出在另一实施例中的第一证书链。在图5中,证书51为第一公钥证书,其中包括,作为证书持有者的第一计算任务(例如任务1)信息,第一公钥K1(为任务1生成的公钥),作为签发者的证书生成器的信息,以及证书生成器签名的第一签名信息。证书50为第一根证书,其中包括证书生成器的信息(既作为证书持有者又作为签发者),第一公钥K1,以及证书生成器自签名的第二签名信息。
可以看到,图5不同于图4之处在于,在图5的第一根证书50中,同样使用为任务1生成的第一公钥K1作为证书生成器对外的签名公钥。于是,第一公钥证书51中的第一签名信息和第一根证书50中的第二签名信息,均使用第一公钥K1进行校验。如此,简化了证书链的公钥生成。并且,由于第一公钥K1针对任务1而生成,第一根证书50和第一公钥证书51均唯一地对应于第一代码哈希。
在其他例子中,第一公钥证书和第一根证书还可以相隔更多层级(如图3 中的证书33和30)而互相对应。
如此,可信证书生成器获取针对第一代码哈希生成的第一根证书,第一公钥证书和第一私钥。
接着,在步骤206,可信证书生成器通过之前建立的可信通道,即RA通道,将第一公钥证书和第一私钥构成的第一证书对发送给第一计算单元。如此,第一证书对的内容不会被其他计算单元获得。
在第一计算单元获取到第一证书对后,在步骤207,使用该证书对以TLS 安全协议的方式来加固在线服务接口,从而为后续向用户终端提供安全的计算服务提供基础。
传输层安全协议TLS(Transport Layer Security)是与上层应用层解耦合的安全协议,用于在两个通信应用程序之间提供保密性和数据完整性。应用层协议,例如HTTP/RPC协议等,能透明地运行在TLS协议之上,由TLS协议进行创建加密通道需要的协商和认证。应用层协议传送的数据在通过TLS 协议时都会被加密,从而保证通信的私密性。
具体的,TLS安全协议支持客户端和服务端通信方式,其中TLS客户端和 TLS服务端利用证书进行握手,建立加密通道,以此加固上层的网络服务,例如HTTP/RPC网络服务。
相应的,在步骤207,第一计算单元可以以自身作为TLS服务端,将接收到的第一证书对设置为TLS服务端的证书对。于是,后续可以向具有对应的第一根证书的TLS客户端提供与第一计算任务对应的计算服务。这将在后续进行详细描述。
如此,通过图2的过程,运行第一计算任务的第一计算单元从可信证书生成器获得针对第一计算任务生成的第一证书对。可以理解,其他各个计算单元均可以执行图2所示的过程,分别获得与运行的计算任务所对应的证书对。
图6示出在执行图2所示的过程之后各个计算单元的状态。如图6所示,由于可信计算单元11,12,14均执行第一计算任务1的副本,这些副本具有相同的代码哈希,因此,可信计算单元11,12,14均可以获取到针对任务1的代码哈希生成的第一证书对,其中包括第一公钥证书和第一私钥。可信计算单元13运行第二计算任务2,因此可以获得针对任务2的代码哈希生成的第二证书对,其中包括第二公钥证书和第二私钥。如此,各个计算单元可以获得与其运行的计算任务对应的证书对。
在此基础上,可信证书生成器还响应于用户终端的请求,为用户终端分发与可信计算单元对应的根证书,以便于用户终端和可信计算单元进行通信。
图7示出根据一个实施例为用户终端分发证书的过程示意图。
首先,在步骤701,用户终端向可信证书生成器发出认证请求,请求对可信证书生成器进行RA认证。
于是,在步骤702,可信证书生成器向用户终端提供自身的RA信息,称为第二认证信息,以供用户终端进行认证。
相应的,在步骤703,用户终端基于该第二认证信息,对可信证书生成器进行认证。
与可信计算单元的认证类似的,在一个实施例中,可信证书生成器生成自身的报告文件,该报告文件包括可信证书生成器自身的代码哈希和签名信息。可选的,该报告文件还包括可信证书生成器的其他配置描述信息。于是,在步骤702,可信证书生成器将该报告文件作为上述第二认证信息,发送给用户终端。
在步骤703,用户终端将上述报告文件发送给第三方认证机构。与前述类似的,第三方认证机构基于该报告文件的签名信息和代码哈希进行验证,在验证通过后,在报告文件上添加上签名,作为认证结果文件。因此,该认证结果文件包含第三方认证机构的签名信息。于是,用户终端可以对该签名信息进行验证,据此对可信证书生成器进行认证。
或者,在另一实施例中,可信证书生成器在生成上述报告文件后,将该报告文件发送至第三方认证机构,并从该第三方认证机构获得认证结果文件。在步骤702,可信证书生成器将该认证结果文件作为第二认证信息,提供给用户终端。相应的,在步骤703,用户终端仅需要对认证结果文件中的签名信息进行验证,据此实现对可信证书生成器的认证。
在对可信证书生成器认证通过后,在步骤704,用户终端向可信证书生成器发送证书请求,称为第二证书请求,该第二证书请求中包括,用户终端期望连接的第一计算任务的第一代码哈希。例如,在图1的示意图中,用户终端想要连接到任务1,则在上述证书请求中包含任务1的代码哈希。
可信证书生成器在接收到上述第二证书请求后,在步骤705,获取预先针对第一代码哈希生成的第一证书链和第一私钥,其中第一证书链包括第一根证书和与其对应的第一公钥证书,第一公钥证书与第一私钥构成第一证书对。并且,如图2所示,可信证书生成器已经预先将第一证书对分发给经过认证的、运行第一计算任务的至少一个计算单元。
然后,在步骤706,可信证书生成器向用户终端返回证书报告,其中包括上述第一证书链中的第一根证书。
在接收到上述第一根证书后,在步骤707,用户终端将自身作为TLS客户端,将接收到的第一根证书设置为TLS客户端的可信根证书。
而另一方面,如图2中步骤207所示,运行第一计算任务的计算单元在通过认证之后,会获得第一证书对,并将第一证书对作为TLS服务端的证书对。因此,在请求第一计算任务的用户终端将第一根证书设置为TLS客户端的唯一可信根证书的情况下,TLS客户端就可以,并且仅可以,与具有对应的第一证书对、且作用为TLS服务端的可信计算单元进行安全通信,也就是与运行第一计算任务的各可信计算单元通信。
具体而言,作为TLS客户端的用户终端可以首先与作为TLS服务端的可信计算单元利用证书进行TLS握手,建立TLS可信通道;然后通过该TLS可信通道,从上述可信计算单元获取与第一计算任务的对应的计算服务。
具有第一根证书的TLS客户端和具有第一证书对的TLS服务端可以通过以下过程实现握手。
首先,TLS客户端发起握手请求,TLS服务端将第一公钥证书和生成的随机数N1返回给TLS客户端。
由于TLS客户端已经将第一根证书设置为唯一可信根证书,而第一公钥证书为该第一根证书信任链中的证书,因此,TLS客户端会认为第一公钥证书可信。于是TLS客户端生成另一随机数N2,并使用第一公钥证书中的第一公钥加密该随机数N2,发送给TLS服务端。
TLS服务端利用第一证书对中的第一私钥解密出随机数N2,并根据之前的随机数N1,N2和约定的加密算法,生成用于加密后续传输数据的会话密钥。 TLS客户端在确认该会话秘钥后,双方就握手成功,利用该会话秘钥建立了 TLS可信通道。
在握手成功后,作为TLS客户端的用户终端与作为TLS服务端的可信计算单元,就可以利用上述会话秘钥加解密数据,也就是通过TLS可信通道交换数据,于是,用户终端可以从上述可信计算单元获取与第一计算任务对应的计算服务。
可以看到,在图7的过程中,用户终端只是对可信证书生成器进行了RA 认证,而没有对各个计算单元进行RA认证。但是应理解,根据图2的过程,可信证书生成器在分发证书前,会首先对计算单元进行RA认证,认证通过的情况下,才为计算单元分发证书。因此,用户终端对可信证书生成器进行RA 认证,就意味着,对可信计算单元间接地进行了RA认证。并且,综合图2和图7的过程,证书链中证书的各自分发相当于同时实现了RA认证和TLS校验,简化了安全认证的过程。
图8示出在执行图2和图7所示的过程之后系统的状态。如图8所示,各个计算单元获得与其运行的计算任务对应的证书对,例如执行第一计算任务1 的可信计算单元11,12,14均获取到针对任务1的代码哈希生成的第一证书对。另一方面,请求任务1的计算服务的用户终端也从可信证书生成器获取到第一根证书,并且该第一根证书与可信计算单元11,12,14中的第一公钥证书相对应,构成证书链。
并且,运行任务1的可信计算单元11,12,14可以作用为TLS服务端,其中第一证书对被设置为TLS服务端证书对,而请求任务1的用户终端可以作用为TLS客户端,其中第一根证书被设置为TLS客户端的唯一可信根证书。于是,请求任务1的用户终端就可以与运行任务1的可信计算单元11,12,14 通过TLS协议,进行安全通信,获取任务1对应的计算服务。
此外,如图8所示,在一个实施例中,在各个可信计算单元之前添加路由服务器,该路由服务器可以根据各个可信计算单元的负载,确定后续的路由路径,从而平衡各个可信计算单元的流量,使之达到均衡。在这样的情况下,用户终端可以经由该路由服务器,连接到可信计算单元。具体地,用户终端根据路由服务器基于计算单元的负载均衡而确定的路由路径,连接到对应的计算单元。用于负载均衡的路由服务器可以采用各种路由算法实现,在此不做限定。
回顾以上过程,在本说明书的实施例中,通过可信证书生成器生成并分发证书,实现安全认证和校验,便于用户终端从可信计算单元获取计算服务。具体的,可信证书生成器通过代码哈希区分不同计算任务,针对一个代码哈希生成一套证书链和一个私钥,其中证书链中包括公钥证书和对应的根证书,公钥证书与私钥相匹配,构成一个证书对。然后,可信证书生成器将该证书对分发给经过认证的、运行该代码哈希对应计算任务的各个可信计算单元。于是,运行同一计算任务副本的多个可信计算单元会获得同样的证书对。另一方面,可信证书生成器将上述证书链中的根证书分发给请求该计算任务的用户终端。于是,具有根证书的用户终端,和具有对应证书对的可信计算单元,可以通过TLS协议的方式,进行安全通信。
根据另一方面的实施例,提供了一种获取证书以提供计算服务的装置,该装置部署在运行第一计算任务的第一计算单元中。上述第一计算任务的多个副本通过多个计算单元执行,所述第一计算单元为所述多个计算单元中任意的计算单元。图9示出在一个实施例中提供计算服务的装置的示意性框图。如图9所示,该装置90包括:
第一证书请求模块901,配置为向可信证书生成器发送第一证书请求,所述第一证书请求包括第一认证信息,所述第一认证信息用于对第一计算单元进行可信认证,所述第一认证信息包括所述第一计算任务的第一代码哈希;
第一报告接收模块903,配置为从所述可信证书生成器接收第一证书报告,所述第一证书报告包括,针对所述第一代码哈希生成的第一证书链中的第一公钥证书,以及与该第一公钥证书匹配的第一私钥,所述第一公钥证书和所述第一私钥构成第一证书对;所述第一证书链还包括与第一公钥证书对应的第一根证书;
服务端设置模块905,配置为以所述第一计算单元作为TLS服务端,将所述第一证书对设置为TLS服务端的证书对,用于向具有所述第一根证书的TLS 客户端提供与所述第一计算任务对应的计算服务.
在一个具体实施例中,所述第一计算单元实现为可信围圈Enclave。
根据一个实施例,上述装置90还包括认证信息生成模块(未示出),用于生成上述第一认证信息。
在一个具体的实施例中,所述认证信息生成模块配置为:
生成第一计算单元的单元报告文件,所述单元报告文件包括所述第一代码哈希,所述第一计算单元的签名信息;
将所述单元报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
将所述认证结果文件作为所述第一认证信息包含在所述第一证书请求中。
在另一具体的实施例中,所述认证信息生成模块配置为:
生成第一计算单元的单元报告文件,所述单元报告文件包括所述第一代码哈希,所述第一计算单元的签名信息;
将所述单元报告文件作为所述第一认证信息包含在所述第一证书请求中。
根据一种实施方式,该装置90还包括秘钥协商模块,配置为在向可信证书生成器发送第一认证请求之前,与所述可信证书生成器进行秘钥协商,建立可信通道,所述可信通道用于发送所述第一证书请求,以及接收所述第一证书报告。
根据另一方面的实施例,提供了一种为可信计算单元分发证书的装置,部署在可信证书生成器中。该可信证书生成器可以通过任何具有计算、处理能力的设备、平台或设备集群实现。图10示出在一个实施例中为可信计算单元分发证书的装置的示意性框图。如图10所示,该装置100包括:
第一请求接收模块101,配置为从运行第一计算任务的第一计算单元接收第一证书请求,所述第一计算任务的多个副本通过多个计算单元执行,所述第一计算单元为所述多个计算单元中任意的计算单元;所述第一证书请求包括第一认证信息,所述第一认证信息包括所述第一计算任务的第一代码哈希;
认证模块103,配置为根据所述第一认证信息对所述第一计算单元进行认证;
证书链获取模块105,配置为在认证通过的情况下,获取针对所述第一代码哈希生成的第一证书链和第一私钥,所述第一证书链包括第一根证书和对应的第一公钥证书,所述第一公钥证书与所述第一私钥相匹配,构成第一证书对;
第一报告发送模块107,配置为向所述第一计算单元发送第一证书报告,其中包括所述第一证书对,使得所述第一计算单元以自身为TLS服务端,将所述第一证书对作为所述TLS服务端的证书对。
在一个实施例中,第一请求接收模块101接收的第一认证信息为经过第三方认证机构认证的认证结果文件,该认证结果文件包含该第三方认证机构的签名信息;在这样的情况下,所述认证模块103配置为:
校验所述签名信息,在校验成功的情况下,确定所述第一计算单元认证通过。
在另一实施例中,第一请求接收模块101接收的第一认证信息为所述第一计算单元生成的单元报告文件,所述单元报告文件包括所述第一代码哈希,以及所述第一计算单元的签名信息;在这样的情况下,所述认证模块103配置为:
将所述单元报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
校验所述签名信息,在校验成功的情况下,确定所述第一计算单元认证通过。
根据一种实施方式,所述证书链获取模块105配置为:
判断是否存在已生成的、与所述第一代码哈希对应的第一证书链;
如果存在,读取已经生成的第一证书链;
如果不存在,针对所述第一代码哈希生成第一证书链。
根据一个具体实施例,所述第一公钥证书包括针对所述第一代码哈希生成的第一公钥,和所述可信证书生成器签名的第一签名信息,其中所述第一公钥和所述第一私钥构成密钥对;所述第一根证书中包括针对所述第一代码哈希生成的第二公钥,以及所述可信证书生成器自签名的第二签名信息;所述第二公钥用于对所述第一签名信息和第二签名信息进行校验。
根据另一具体实施例,所述第一公钥证书包括针对所述第一代码哈希生成的第一公钥,和所述可信证书生成器签名的第一签名信息,其中所述第一公钥和所述第一私钥构成密钥对;所述第一根证书包括所述第一公钥,以及所述可信证书生成器自签名的第二签名信息;所述第一公钥用于对所述第一签名信息和第二签名信息进行校验。
根据一种实施方式,装置100还包括秘钥协商模块(未示出),用于在接收第一证书请求之前,与所述第一计算单元进行秘钥协商,建立可信通道,所述可信通道用于接收所述第一证书请求,以及发送所述第一证书报告。
根据又一方面的实施例,提供了一种获取证书以获取计算服务的装置,部署在用户终端中。该用户终端可以通过任何具有计算、处理能力的设备实现。图11示出在一个实施例中获取计算服务的装置的示意性框图。如图11 所示,该装置110包括:
第二证书请求模块111,配置为向可信证书生成器发送第二证书请求,所述第二证书请求中包括,期望连接的第一计算任务的第一代码哈希;
第二报告接收模块113,配置为从所述可信证书生成器接收第二证书报告,所述第二证书报告包括针对所述第一代码哈希生成的第一证书链中的第一根证书;所述第一证书链还包括与所述第一根证书相对应的第一公钥证书,所述第一公钥证书与相匹配的第一私钥构成第一证书对,被预先分发给经过认证的、运行所述第一计算任务的至少一个计算单元;
客户端设置模块115,配置为以所述用户终端为TLS客户端,将所述第一根证书设置为所述TLS客户端的可信根证书,从而与具有所述第一证书对、且作用为TLS服务端的所述至少一个计算单元通信,从其获取与所述第一计算任务对应的计算服务。
根据一种实施方式,上述装置110还包括认证模块(未示出),配置为:
获取所述可信证书生成器的第二认证信息;
根据所述第二认证信息,对所述可信证书生成器进行认证。
进一步的,根据一个实施例,上述第二认证信息为经过第三方认证机构认证的认证结果文件,该认证结果文件包含该第三方认证机构的签名信息;相应的,认证模块配置为:校验所述签名信息,在校验成功的情况下,确定所述可信证书生成器认证通过。
根据另一实施例,所述第二认证信息为所述可信证书生成器生成的报告文件,所述报告文件包括所述可信证书生成器自身的代码哈希和签名信息;相应的,认证模块配置为:
将所述报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
校验所述签名信息,在校验成功的情况下,确定所述证书生成器认证通过。
根据一种实施方式,上述装置110还包括通信模块(未示出),在客户端设置模块115将所述第一根证书设置为所述TLS客户端的可信根证书之后,所述通信模块用于与所述至少一个计算单元进行TLS握手,建立TLS可信通道;通过TLS可信通道,从所述至少一个计算单元获取与所述第一计算任务对应的计算服务。
在一个进一步的实施例中,所述通信模块配置为,根据路由服务器基于所述至少一个计算单元的负载均衡而确定的路由路径,连接到所述至少一个计算单元中的至少部分计算单元,从该至少部分计算单元获取与所述第一计算任务对应的计算服务。
根据另一方面的实施例,还提供了一种为用户终端分发证书的装置,部署在可信证书生成器中。该可信证书生成器可以通过任何具有计算、处理能力的设备、平台或设备集群实现。图12示出在一个实施例中为用户终端分发证书的装置的示意性框图。如图12所示,该装置120包括:
第二请求接收模块121,配置为接收用户终端发送的第二证书请求,所述第二证书请求中包括,所述用户终端期望连接的第一计算任务的第一代码哈希;
证书链获取模块123,配置为获取预先针对所述第一代码哈希生成的第一证书链和第一私钥,所述第一证书链包括第一根证书和与其对应的第一公钥证书,所述第一公钥证书与所述第一私钥构成第一证书对,被预先分发给经过认证的、运行所述第一计算任务的至少一个计算单元;
第二报告发送模块125,配置为向所述用户终端发送第二证书报告,所述第二证书报告包括所述第一根证书,以使得所述用户终端以自身为TLS客户端,将所述第一根证书作为TLS客户端的可信根证书,从而从具有所述第一证书对的TLS服务端获取与所述第一计算任务对应的计算服务。
根据一种实施方式,上述装置120还包括认证信息提供模块(未示出),在第二请求接收模块121接收用户终端发送的第二证书请求之前,该认证信息提供模块响应于所述用户终端的认证请求,向所述用户终端提供第二认证信息,以供所述用户终端进行认证。
在一个进一步的实施例中,所述认证信息提供模块配置为:
生成报告文件,所述报告文件包括所述可信证书生成器自身的代码哈希和签名信息;
将所述报告文件发送至第三方认证机构,以获得认证结果文件,所述认证结果文件包含所述第三方认证机构的签名信息;
将所述认证结果文件作为所述第二认证信息提供给所述用户终端。
在另一个进一步的实施例中,所述认证信息提供模块配置为:
生成报告文件,所述报告文件包括所述可信证书生成器自身的代码哈希和签名信息;
将所述报告文件作为所述第二认证信息提供给所述用户终端。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2 和图7所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2和图7所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。