具体实施方式
将参考以下讨论的细节描述本发明的各种实施方式和方面,并且附图将示出各种实施方式。下面的描述和附图可说明本发明,而并不构成对本发明的限制。描述了许多具体细节以提供对本发明的各种实施方式的透彻理解。然而,在某些实例下,为了提供本发明的实施方式的简洁讨论,没有描述公知的或常规的细节。
在说明书中提及“一个实施方式”或“实施方式”意味着结合该实施方式描述的特定特征、结构或特性可包括在本发明的至少一个实施方式中。在说明书的各个地方出现的短语“在一个实施方式中”不一定都指同一实施方式。
根据本发明的第一方面,数据处理系统使用主机系统的安全模块(例如,可信平台模块(TPM))来执行安全引导。系统确认操作系统(OS)和包括与数据处理(DP)加速器相关联的加速器驱动器的一个或多个驱动器由可信源提供。系统启动OS内的加速器驱动器。该系统建立与主机系统的一个或多个处理器相关联的可信执行环境(TEE)。该系统启动TEE内的应用和运行时间库,其中应用经由运行时间库和加速器驱动器与DP加速器进行通信。
根据第二方面,系统通过总线在主机系统和数据处理(DP)加速器之间建立安全连接(具有一个或多个安全通道),该安全连接包括:一个或多个命令信道和/或数据信道。在一个实施方式中,一个或多个命令信道可能是不安全的。该系统通过命令信道将第一指令从主机系统传输到DP加速器,该第一指令请求DP加速器执行数据准备操作。该系统响应于第一指令通过数据信道从DP加速器接收用于从主机系统的第一内存位置读取第一数据的第一请求。响应于该请求,系统通过数据信道将从主机系统的第一内存位置检索到的第一数据传输到DP加速器,其中第一数据被用来计算或配置操作。系统通过命令信道将第二指令从主机系统传输到DP加速器,第二指令请求DP加速器执行计算或配置操作。
在一个实施方式中,系统通过总线在主机系统和数据处理(DP)加速器之间建立安全连接,该安全连接包括:一个或多个命令信道和/或数据信道。命令信道可能是不安全的。在DP加速器处,系统通过命令信道从主机系统接收第一指令,第一指令请求DP加速器执行数据准备操作。响应于第一指令,系统通过数据信道将第一请求从DP加速器传输到主机系统,以从主机系统的第一内存位置读取第一数据。系统通过数据信道从主机系统接收第一数据,其中第一数据是由主机系统从主机系统的第一内存位置检索到的。系统通过命令信道从主机系统接收第二指令,该第二指令请求DP加速器执行计算或配置操作。系统至少基于第一数据执行计算或配置操作。
根据第三方面,系统在主机系统的主机信道管理器(HCM)处接收来自应用的使用数据处理(DP)加速器建立安全信道的请求,其中DP加速器通过总线联接到主机系统。响应于该请求,系统基于与HCM相关联的第一密钥对的第一私钥和与DP加速器相关联的第二密钥对的第二公钥来生成用于安全信道的第一会话密钥。响应于与将被发送到DP加速器的应用相关联的第一数据,系统使用第一会话密钥对第一数据进行加密。然后,系统通过总线经由安全信道将加密的第一数据传输到DP加速器。
在一个实施方式中,系统在数据处理(DP)加速器的加速器信道管理器(ACM)处接收来自主机系统的主机信道管理器(HCM)的应用的请求,以在主机系统和DP加速器之间建立安全信道,其中DP加速器通过总线联接到主机系统。响应于该请求,系统生成用于安全信道的第二会话密钥,并基于与DP加速器相关联的第二密钥对的第二私钥和与HCM相关联的第一密钥对的第一公钥来加密第二会话密钥,之后将加密的第二会话密钥发送到HCM。响应于将要被发送到主机系统的第一数据,系统使用第二会话密钥对第一数据进行加密。然后,系统经由安全信道将加密的第一数据传输到主机系统的HCM。
根据第四方面,响应于从数据处理(DP)加速器接收临时公钥(PK_d),系统在主机系统处生成第一随机数(nc),其中DP加速器通过总线联接到主机系统。系统从主机系统向DP加速器传输创建会话密钥的请求,该请求包括:主机公钥(PK_O)和第一随机数。系统从DP加速器接收第二随机数(ns),其中使用主机公钥和与临时公钥对应的临时私钥(SK_d)对第二随机数进行加密。系统基于第一随机数和第二随机数生成第一会话密钥,该第一会话密钥被用来对主机系统和DP加速器之间的后续数据交换进行加密或解密。
在一个实施方式中,响应于从主机系统接收请求,系统在数据处理(DP)加速器处生成临时私钥和临时公钥,其中DP加速器通过总线联接到主机系统。系统使用与DP加速器相关联的加速器私有根密钥来加密临时公钥。系统将未加密形式的临时公钥和加密的临时公钥传输到主机系统,以允许主机系统确认临时公钥。系统从主机系统接收第一随机数,其中第一随机数是在已确认临时公钥之后由主机系统生成的。该系统基于第一随机数和第二随机数生成会话密钥,其中第二随机数已经在DP加速器处本地生成。
根据第五方面,系统使用主机系统的安全模块(例如,可信平台模块(TPM))来执行安全引导。该系统建立与主机系统的一个或多个处理器相关联的可信执行环境(TEE)。该系统启动TEE内的内存管理器,其中内存管理器配置为管理通过总线联接到主机系统的数据处理(DP)加速器的内存资源,包括维护DP加速器的全局内存的内存使用信息。响应于从在TEE内运行的应用接收用于访问DP加速器的内存位置的请求,该系统基于内存使用信息来允许或拒绝该请求。
根据第六方面,DP加速器包括:一个或多个执行单元(EU),配置为响应于从通过总线联接的主机系统接收指令来执行数据处理操作。DP加速器包括:安全单元(SU),配置为建立并维护与主机系统的安全信道,以交换与数据处理操作相关联的命令和数据。DP加速器包括:联接到安全单元以向安全单元提供时间戳服务的时间单元(TU),其中时间单元包括:时钟发生器,以本地生成时钟信号,而不必从外部源导出时钟信号。TU包括:联接到时钟发生器以基于时钟信号产生时间戳的时间戳发生器,以及向时钟发生器和时间戳发生器供电的电源。
在一个实施方式中,TU还包括:计数器,联接到时钟发生器以基于从时钟发生器产生的时钟信号对计数值进行计数;以及永久存储器,以存储计数值,其中计数值被时间戳发生器用来产生时间戳。在另一个实施方式中,计数器响应于每个时钟信号递增计数值,并且其中永久存储器包括32位变量。然而,永久存储器可包括任何大小的变量,例如,8位、16位、64位等。
在一个实施方式中,时间单元还包括:联接到时钟发生器以提供精确脉冲信号的本地振荡器。在一个实施方式中,电源包括:电池,以提供电力而不必从外部电源汲取电力。在一个实施方式中,生成时钟信号而不必与外部时钟源进行通信。在一个实施方式中,时间单元还包括:配置为校准时钟发生器的时钟校准器。
在一个实施方式中,时间戳被安全单元用来对用于加密DP加速器和主机系统之间的交换数据的会话密钥加时间戳。在另一个实施方式中,时间戳被用来对DP加速器的信息交换加时间戳,并且该时间戳可被用于确定信息交换的新鲜度。在另一个实施方式中,会话密钥的时间戳被用来确定会话密钥是否已经过期。
根据第七方面,DP加速器包括:一个或多个执行单元(EU),配置为响应于从通过总线联接的主机系统接收指令来执行数据处理操作。DP加速器包括:联接到安全单元以提供时间戳服务的时间单元(TU)。DP加速器包括:安全单元(SU),配置为建立并维护与主机系统的安全信道,以交换与数据处理操作相关联的命令和数据,其中安全单元包括:安全存储区域,以存储与DP加速器相关联的私有根密钥,其中私有根密钥被用于认证。SU包括:随机数生成器,用于生成随机数;以及加密引擎,用于使用基于随机数导出的会话密钥对通过总线与主机系统交换的数据执行加密操作。
在一个实施方式中,在制造DP加速器期间,私有根密钥被预先配置并存储在安全存储区中。在一个实施方式中,安全单元将从主机系统接收建立与DP加速器的安全连接的请求,并且响应于该请求,基于由随机数生成器生成的随机数生成会话密钥,其中会话密钥被用来对通过安全连接与主机系统交换的数据进行加密或解密。
在另一个实施方式中,随机数生成器基于种子值生成随机数。在另一个实施方式中,时间戳还用于确定会话密钥是否已经过期,在其中将生成新的会话密钥。
在另一个实施方式中,在基于随机数生成会话密钥时,安全单元将生成具有临时私钥和临时公钥的临时密钥对,将临时公钥和已签名的临时公钥传输到主机,其中已签名的临时公钥由私有根密钥进行签署,以允许主机系统认证DP加速器,从主机系统接收第一随机数,以及基于在DP加速器处本地生成的第一随机数和第二随机数来生成第一会话密钥。在另一个实施方式中,安全单元还配置为传输由私有根密钥(例如,DP加速器的私有根密钥)进行签名并由与主机系统相关联的公钥加密的第一随机数和第二随机数。
在另一个实施方式中,主机系统配置为使用与主机系统的私有根密钥和私有密钥相对应的公有根密钥(例如,DP加速器的公有根密钥)来对加密的第一随机数和第二现进行解密,以恢复第一随机数和第二随机数。在另一个实施方式中,主机系统配置为基于恢复的第一随机数和第二随机数生成第二会话密钥,其中第二会话密钥被主机系统用于加密和解密。
在一个实施方式中,时间单元包括:时钟发生器,用于本地生成时钟信号而不必从外部源导出时钟信号;时间戳发生器,联接到时钟发生器以基于时钟信号生成时间戳;以及电源,用于向时钟发生器和时间戳发生器供电而不必从外部电源汲取电力。
根据第八方面,系统在主机系统的可信执行环境(TEE)内执行的运行时间库处接收来自应用的请求,以调用预定函数来执行预定操作。响应于该请求,系统标识与该预定函数相关联的内核对象。系统使用与用于对内核对象的可执行映像进行签名的私钥相对应的公钥来确认内核对象的可执行映像。响应于成功地确认内核对象的可执行映像,系统通过总线将确认的内核对象的可执行映像传输到数据处理(DP)加速器,以由DP加速器执行以执行预定操作。
根据第九方面,系统在主机系统处通过总线从数据处理(DP)加速器接收公有证明密钥(PK_ATT)或签名的PK_ATT。系统使用与DP加速器相关联的公有根密钥(PK_RK)来确认PK_ATT。响应于成功确认PK_ATT,系统将内核标识符(ID)传输给DP加速器,以请求对存储在DP加速器中的内核对象进行证明。响应于从DP加速器接收与内核对象相对应的内核摘要或签名的内核摘要,系统使用PK_ATT来确认内核摘要。系统将确认结果发送到DP加速器,供DP加速器基于确认结果访问内核对象。
在一个实施方式中,响应于从主机系统接收证明请求,系统在数据处理(DP)加速器处生成具有公有证明密钥(PK_ATT)和私有证明密钥(SK_ATT)的证明密钥对。系统将PK_ATT或签名的PK_ATT从DP加速器传输到主机系统,其中DP加速器通过总线联接到主机系统。系统从主机系统接收标识内核对象的内核标识符(ID),其中响应于成功确认PK_ATT而接收内核ID。该系统响应于内核ID通过对内核对象的可执行映像进行哈希运算来生成内核摘要。系统将内核摘要或签名的内核摘要传输到主机系统,以允许主机系统在访问将要在DP加速器内执行的内核对象之前确认和证明内核对象。
根据第十方面,系统在主机系统处从数据处理(DP)加速器接收唯一地标识DP加速器的加速器标识符(ID),其中主机系统通过总线联接到DP加速器。系统通过网络将加速器ID传输至预定可信服务器。系统通过网络从预定可信服务器接收证书,该证书认证DP加速器。可选地,系统例如通过确认可信服务器的证书链来确认证书与可信服务器相关联。系统从证书中提取公有根密钥(PK_RK),该PK_RK对应于与DP加速器相关联的私有根密钥(SK_RK)。该系统使用PK_RK建立与DP加速器的安全信道,以在主机系统和DP加速器之间安全地交换数据。
图1是示出根据一些实施方式的用于确保主机和数据处理(DP)加速器之间的通信的系统配置的示例的框图。参照图1,系统配置100包括但不限于:通过网络103通信地联接到DP服务器104的一个或多个客户端装置101-102。客户端装置101-102可以是任何类型的客户端装置,诸如,个人计算机(例如,台式计算机、膝上型计算机和平板计算机)、“瘦”客户端、个人数字助理(PDA)、支持Web的设备、智能手表或移动电话(例如,智能手机)等。或者,客户端装置101-102可以是其它服务器。网络103可以是任何类型的网络,诸如,局域网(LAN)、广域网(WAN)(诸如,因特网),或其组合(有线或无线)。
服务器(例如,主机)104可以是任何种类的服务器或服务器群集,诸如,Web或云服务器、应用服务器、后端服务器或其组合。服务器104还包括:接口(未示出),以允许诸如客户端装置101-102的客户端访问由服务器104提供的资源或服务(诸如,由DP加速器经由服务器104提供的资源和服务)。例如,服务器104可以是向客户端提供各种云服务的云服务器或数据中心的服务器,例如,云存储、云计算服务、机器学习训练服务、数据挖掘服务等。服务器104可配置为云上的软件即服务(SaaS)或平台即服务(PaaS)系统的一部分,该云可以是私有云、公有云或混合云。该接口可包括:Web接口、应用编程接口(API)和/或命令行接口(CLI)。
例如,客户端(在本示例中,即,客户端装置101的用户应用(例如,Web浏览器、应用))可以向服务器104发送或传输用于执行的指令(例如,人工智能(AI)训练、推理指令等),并且由服务器104通过网络103经由接口接收该指令。响应于该指令,服务器104与DP加速器105-107进行通信,以完成指令的执行。在一些实施方式中,指令是机器学习类型的指令,其中作为专用机器或处理器的DP加速器可以比由服务器104执行指令快许多倍地执行指令。因此,服务器104可以以分布式方式控制/管理一个或多个DP加速器的执行作业。然后,服务器104向客户端装置101-102返回执行结果。DP加速器或AI加速器可包括:一个或多个专用处理器,诸如,可从百度公司获得的百度人工智能(AI)芯片组,或者,DP加速器可以是来自NVIDIA、英特尔或一些其它AI芯片组提供商的AI芯片组。
根据一个实施方式,可确认访问DP加速器105-107中的任何一个并且由DP服务器104(也称为主机)托管的应用中的每一个是由可信源或供应商提供的。每个应用可在由主机104的中央处理单元(CPU)专门配置和执行的可信执行环境(TEE)内启动和执行。当应用配置为访问DP加速器105-107中的任何一个时,将在主机104和DP加速器105-107中相应的一个之间建立安全连接,从而保护主机104和DP加速器105-107中每一个之间交换的数据免受恶意软件的攻击。
图2是示出根据一些实施方式的用于确保主机系统和数据处理(DP)加速器之间的通信的多层保护解决方案的示例的框图。在一个实施方式中,系统200在对DP加速器进行硬件修改或不进行硬件修改的情况下提供用于主机和DP加速器之间的安全通信的保护方案。参照图2,主机机器或服务器104可被描述为具有一个或多个层的被保护免受入侵的系统,诸如,用户应用203、运行时间库205、驱动器209、操作系统211和硬件213(例如,安全模块(可信平台模块(TPM))/中央处理单元(CPU))。主机机器104通常是CPU系统,其可控制和管理主机系统或DP加速器105-107上的执行作业。为了确保DP加速器和主机机器之间的通信信道,可能需要不同的组件来保护易于受到数据入侵或攻击的主机系统的不同层。例如,可信执行环境(TEE)可保护用户应用层和运行时间库层免受数据入侵。
参照图2,根据一些实施方式,系统200包括:主机系统104和DP加速器105-107。DP加速器包括:可执行AI密集型计算任务的Baidu AI芯片组或任何其它AI芯片组,诸如,NVIDIA图形处理单元(GPU)。在一个实施方式中,主机系统104将具有一个或多个配备有安全模块(诸如,可信平台模块(TPM))的CPU 213的硬件包括在主机机器104内。TPM是端点装置上的专用芯片,其存储专用于主机系统的用于硬件认证的加密密钥(例如,RSA加密密钥)。每个TPM芯片可包含被称为签注密钥(EK)或签注凭证(EC)的一个或多个RSA密钥对(例如,公钥和私钥对),即,根密钥。密钥对被维护在TPM芯片内部并且不能被软件访问。然后,在执行固件和软件的关键部分之前,可以由EK或EC对固件和软件的关键部分进行哈希运算,以保护系统免于未授权的固件和软件修改。因此,主机机器上的TPM芯片可用作安全引导的信任根。
TPM芯片还确保驱动器209和操作系统(OS)211在工作内核空间中与DP加速器进行通信。这里,驱动器209由DP加速器供应商提供,并可用作用户应用的驱动器以控制主机和DP加速器之间的通信信道。因为TPM芯片和安全引导保护其内核空间中的OS和驱动器,所以TPM还有效地保护驱动器209和操作系统211。
由于DP加速器105-107的通信信道可被OS和驱动器专有地占用,因此,通信信道也通过TPM芯片来确保。
在一个实施方式中,主机机器104包括:可信执行环境(TEE)201,其被TPM/CPU 213强制为安全的。TEE是安全环境。TEE可保证加载在TEE内的代码和数据在保密性和完整性方面受到保护。TEE的示例可以是英特尔软件防护扩展(SGX),或AMD安全加密虚拟化(SEV)。英特尔SGX和/或AMD SEV可包括:一组中央处理单元(CPU)指令代码,其允许用户级代码分配CPU的内存的私有区域,该私有区域被保护以免受以较高特权级别运行的进程的影响。这里,TEE 201可保护用户应用203和运行时间库205,其中用户应用203和运行时间库205可分别由终端用户和DP加速器供应商提供。这里,运行时间库205可将API调用转换为用于DP加速器的执行、配置和/或控制的命令。在一个实施方式中,运行时间库205提供一组预定的(例如,预定义的)内核,以供用户应用执行。
在另一个实施方式中,主机机器104包括:存储一个或多个安全应用207,其使用内存安全语言(诸如,Rust和GoLang等)来实现。在内存安全Linux版本(例如,MesaLockLinux)上运行的这些内存安全应用可进一步保护系统200免受数据机密性和完整性攻击。然而,操作系统可以是任何Linux发行版本、UNIX、Windows OS或Mac OS。
在一个实施方式中,可以如下建立系统:将内存安全Linux发行版本安装到配备有TPM安全引导的系统(诸如,图2的主机系统104)上。该安装可以在制造或准备阶段期间离线执行。该安装还可确保使用内存安全编程语言对主机系统的用户空间的应用进行编程。确保在主机系统104上运行的其它应用是内存安全应用可进一步减轻对主机系统104的潜在机密性和完整性攻击。
在安装之后,系统然后可通过基于TPM的安全引导来启动。TPM安全引导确保了在提供加速器服务的内核空间中仅启动签名的/认证的操作系统和加速器驱动器。在一个实施方式中,可通过超管理器加载操作系统。注意,超管理器或虚拟机管理器是创建和运行虚拟机的计算机软件、固件或硬件。注意,内核空间是标识内核(即,用于执行的一组预定的(例如,预定义的)函数)以向用户应用提供功能和服务的描述性区域或范围。在系统的完整性受到损害的情况下,TPM安全引导可能无法引导,并且取而代之的是关闭系统。
在安全引导之后,运行时间库205运行并创建TEE 201,TEE 201将运行时间库205放置于与CPU 213相关联的可信内存空间中。接下来,在TEE201中启动用户应用203。在一个实施方式中,用户应用203和运行时间库205被静态链接并一起启动。在另一个实施方式中,首先在TEE中启动运行时间库205,然后在TEE 201中动态加载用户应用205。在另一个实施方式中,首先在TEE中启动用户应用205,然后在TEE 201中动态加载运行时间205。注意,静态链接的库是在编译时链接到应用的库。动态加载可通过动态链接器执行。动态链接器加载并链接共享库,用于在运行时运行用户应用。这里,TEE 201内的用户应用203和运行时间库205在运行时彼此可见,例如,所有过程数据彼此可见。然而,对TEE的外部访问被拒绝。
在另一个实施方式中,用户应用只能从由运行时间库205预定的一组内核中调用内核。在另一个实施方式中,使用无边信道算法对用户应用203和运行时间库205进行强化,以防御诸如基于高速缓存的边信道攻击的边信道攻击。边信道攻击是基于从计算机系统的实施中获得的信息的任何攻击,而不是在所实施的算法本身中的弱点(例如,加密分析和软件缺陷)。边信道攻击的示例包括:高速缓存攻击,它是基于攻击者在虚拟化环境或云环境中监测共享物理系统的高速缓存的能力的攻击。强化可包括:高速缓存掩蔽、由算法生成的将要被放置在高速缓存上的输出。接下来,当用户应用结束执行时,用户应用终止其执行并从TEE退出。
总之,系统200为DP加速器提供多层保护(诸如,诸如机器学习模型、训练数据和推理输出的数据的通信)以免丢失数据加密信息和完整性。系统200可包括:基于TPM的安全引导保护层、TEE保护层以及内核验证/确认层。此外,系统200可通过确保使用内存安全编程语言实现主机机器上的其它应用来提供内存安全用户空间,该内存安全编程语言可通过消除潜在的内存破坏/漏洞来进一步消除攻击。此外,系统200可包括:使用无边信道算法来防御边信道攻击(例如,基于高速缓存的边信道攻击)的应用。
图3是示出根据一个实施方式的方法的示例的流程图。过程300可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程300可以由主机系统(例如,图1的主机系统104)执行。参照图3,在框301处,处理逻辑使用诸如主机系统的可信平台模块(TPM)的安全模块来执行安全引导。在框302处,处理逻辑确认与数据处理(DP)加速器相关联的操作系统(OS)和加速器驱动器由可信源提供。在框303处,处理逻辑启动OS内的加速器驱动器。在框304处,处理逻辑生成与主机系统的CPU相关联的可信执行环境(TEE)。在框305处,处理逻辑启动TEE内的应用和运行时间库,其中应用经由运行时间库和加速器驱动器与DP加速器进行通信。
在一个实施方式中,应用和运行时间库被静态地链接并一起启动。在另一个实施方式中,运行时间库在TEE中启动,并且在运行时间库启动之后,应用被动态加载用于启动。在一个实施方式中,处理逻辑还启动主机机器上的其它应用,这些应用是内存安全应用。在另一个实施方式中,内存安全应用由一种或多种内存安全编程语言实现。在一个实施方式中,运行时间库提供将由应用启动的一组预定的内核,以由DP加速器运行任务。在一个实施方式中,处理逻辑还使用无边信道算法强化在TEE中运行的应用和运行时间库,以防御基于高速缓存的边信道攻击。
图4是示出根据一个实施方式的具有I/O管理器的主机的示例的框图。系统400可代表图2的系统200,以提供用于主机和DP加速器之间的安全通信的保护方案。参照图4,在一个实施方式中,主机系统104的TEE 201包括:I/O管理器401。在一个实施方式中,DP加速器405-407分别包括I/O接口415-417,该I/O接口阻止、禁止或拒绝主机直接访问DP加速器的内存,而I/O管理器401允许DP加速器仅访问主机系统104的某些内存块。
传统的DP加速器具有I/O接口,该I/O接口给予主机机器对DP加速器的整个全局内存的访问许可。实际上,恶意应用可能滥用该许可以窃取或改变DP加速器的全局内存中的内存缓冲器。为了解决该技术问题,本公开的实施方式实现了禁止对DP加速器的内存系统进行访问的通信协议。例如,主机机器只能通过命令信道与DP加速器进行通信以发出命令,而DP加速器可通过数据信道进行通信,以通过主机机器的I/O管理器向主机机器写入数据或从主机机器读取数据。I/O管理器因此可进一步表征DP加速器对数据的存取,且可允许DP加速器仅访问主机系统的有限内存范围。
为了说明的目的,由DP执行的示例性操作可以是加法操作,例如:1+2=3。在这种情况下,可对DP加速器的内存地址进行访问的主机系统可以远程地发布多个数据准备指令,以在实施加法操作之前将数据加载到DP加速器的内存缓冲器中。
然而,不能对DP加速器进行内存访问的主机系统将无法引用加速器的内存地址并且必须发布用于数据准备操作的一组不同的处理器指令。然后,由DP加速器发出后续指令以从主机机器读取数据以获得数据(例如,用于加法指令的操作数)。这里,DP加速器的内存地址对于主机系统是不可见的。
图5是进一步示出根据一些实施方式的与DP加速器进行通信的I/O管理器的示例的框图。系统500可以是图4的系统400的详细视图。参照图5,在一个实施方式中,I/O管理器401包括:命令生成器501、映射内存503以及访问控制列表(ACL)模块505。I/O管理器401可以通信地联接到驱动器209,并且驱动器209可包括:ACL映射507(例如,IO MMU)。命令生成器501可生成将要向DP加速器发出的命令。映射内存503可包括:映射到每个DP加速器的主机服务器104的多个内存区域。映射内存503可以是主机服务器104的内存(例如,作为图4的硬件213的一部分)。ACL模块505可根据对应DP加速器的逻辑表来控制(例如,允许或拒绝)对主机服务器104的对应映射内存区域的访问。ACL映射507可包含将内存503的不同内存区域映射到DP加速器的映射表,如图6所示。这里,图6示出了根据一个实施方式,DP加速器1被映射到多于一个区域(例如,区域1…11),并且DP加速器2被映射到区域12。例如,每一个DP加速器可被映射到许多内存区域。
例如,在一个实施方式中,不允许DP加速器直接访问主机服务器的内存位置(例如,映射内存503)。然而,如果ACL映射507包含映射到要访问的内存区域的DP加速器的条目,则DP加速器可访问主机服务器的内存区域(通过ACL模块505)。在一个实施方式中,当DP加速器被添加到主机系统104时(例如,主机系统104发现新的DP加速器被连接),ACL模块505向DP加速器分配标识符,将条目插入到对应于DP加速器的ACL映射507上,和/或为DP加速器保留或分配来自内存503的可用内存块,例如,主机服务器104的内存(作为图4的硬件213的一部分)。在一个实施方式中,ACL模块505可向DP加速器发送通知,以向DP加速器通知可用内存块。在一个实施方式中,DP加速器标识符可以是生成的GUID/UUID(通用唯一标识符)、MAC地址、与DP加速器相关联的IP地址,或其组合。在一些实施方式中,主机系统联接到多个DP加速器。在一个实施方式中,当从主机系统104移除DP加速器(例如,主机系统104发现现有的DP加速器不再连接到主机服务器104)时,ACL模块可从对应于DP加速器的ACL映射507中移除条目和/或从对应于DP加速器的内存503中释放内存块。
参照图5,在一个实施方式中,DP加速器405的I/O接口415包括:诸如控制寄存器511和命令解码器513的模块。控制寄存器511可控制执行单元517和/或全局内存515的行为。命令解码器513可对DP加速器405接收到的命令进行解码。在一个实施方式中,DP加速器405可发出随后的命令(例如,读/写命令),以从IO管理器401获取数据和向IO管理器401传送数据,以完成所请求的命令。
图7是示出根据一个实施方式的主机和DP加速器之间的示例性通信的框图。操作700可以由主机服务器104和/或DP加速器405执行。参照图7,在操作701中,主机服务器104向DP加速器405发送数据准备命令请求(例如,执行数据准备操作的数据准备指令),以由DP加速器经由命令信道进行处理。在操作702中,DP加速器405对所请求的命令进行解码,以将命令的类型确定为数据准备操作命令。
如果确定需要来自主机服务器104的数据来完成所请求的命令,则在操作703中,DP加速器405从主机存储器请求数据的读取访问(例如,读取操作),其中数据可驻留在主机系统的第一内存位置(例如,图5的映射内存503)中。在操作704中,响应于接收读取访问请求,主机服务器104标识正在请求的DP加速器和主机服务器104上的内存区域(例如,第一内存位置),并查询ACL映射以确定DP加速器是否具有对所请求的内存区域的访问许可。
例如,主机服务器104可通过与DP加速器相关联的标识符来查询用于DP加速器的ACL映射。如果存在查询结果条目,则主机服务器104将根据结果条目确定所请求的内存位置是否位于内存区域内。如果是,则DP加速器405具有读取/写入访问许可。如果确定DP加速器具有对内存区域的读取访问许可,则在操作705中,主机服务器104经由数据信道返回所请求的数据。如果确定DP加速器没有读取访问许可,则主机服务器104可然后向DP加速器405发送读取失败的通知。
在操作706中,主机服务器104发送DP命令或计算或配置命令或DP指令。在操作707中,DP加速器405处理DP命令或DP操作。在操作708中,当所请求的命令完成时,DP加速器405将完成结果存储在DP加速器405的全局内存(例如,图5的全局内存515)中。DP加速器405随后经由数据信道将完成结果作为写入请求发送到主机服务器104。在操作709中,主机服务器104标识DP加速器和请求写入访问的内存区域(例如,第二内存位置),并查询ACL映射以确定DP加速器405是否具有对所请求的内存区域的写入访问许可。
如果确定DP加速器具有写入访问许可,则在操作710中,主机服务器104将结果存储在所请求的内存位置中。在操作711中,主机服务器104随后可在成功接收到结果时发送确认。注意,DP/计算命令是指用于将要由DP加速器处理的数据处理操作的命令。配置命令是指用于配置DP加速器的命令。数据准备命令是指用于数据准备操作的命令,例如,用于从主机服务器获取数据,诸如用于DP命令的操作数。
图8A和8B是示出根据一些实施方式的示例性方法的流程图。过程800和820可以由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程800可以由图4的主机系统(例如,I/O管理器401)执行,以及过程820可以由图4的DP加速器(例如,I/O接口415)执行。参照图8A,在框801处,处理逻辑通过总线在主机系统和数据处理(DP)加速器之间建立安全连接,该安全连接包括:一个或多个数据信道。在另一个实施方式中,安全连接包括:一个或多个命令信道。在框802处,处理逻辑通过一个命令信道将第一指令从主机系统传输到DP加速器,该第一指令请求DP加速器执行数据准备操作。在框803处,处理逻辑响应于第一指令而通过一个数据通道从DP加速器接收来自主机系统的第一内存位置的用于读取第一数据的第一请求。在框804处,响应于该第一请求,处理逻辑通过数据信道将从主机系统的第一内存位置检索到的第一数据传输到DP加速器,其中第一数据被用于计算或配置操作。在框805处,处理逻辑通过命令信道将第二指令从主机系统传输到DP加速器,该第二指令请求DP加速器执行计算或配置操作。
在一个实施方式中,响应于确定DP加速器有权从第一内存位置读取,处理逻辑还检查第一请求以确定DP加速器是否有权从主机系统的第一内存位置读取并允许DP加速器从第一内存位置读取。在一个实施方式中,不允许DP加速器直接访问主机系统的第一内存位置。在一个实施方式中,DP加速器是联接到主机系统的多个DP加速器中的一个。
在一个实施方式中,处理逻辑还通过数据信道从DP加速器接收写入第二数据的第二请求,其中第二数据将被写入到主机系统的第二内存位置。响应于第二请求,处理逻辑将第二数据存储在主机系统的第二内存位置。在另一实施方式中,处理逻辑还检查第二请求,以确定DP加速器有权写入到主机系统的第二内存位置。响应于确定DP加速器有权写入到第二内存位置,处理逻辑允许DP加速器写入到第二内存位置。在另一实施方式中,第二数据代表响应于指令的计算或配置操作的结果的至少一部分。
参照图8B,在一个实施方式中,在框821处,处理逻辑通过总线在主机系统和数据处理(DP)加速器之间建立安全连接,该安全连接包括:一个或多个命令信道和/或一个或多个数据信道。在框822处,处理逻辑在DP加速器处通过一个命令信道从主机系统接收第一指令,该第一指令请求DP加速器执行数据准备操作。在框823处,响应于第一指令,处理逻辑通过一个数据信道将第一请求从DP加速器传输到主机系统,以从主机系统的第一内存位置读取第一数据。在框824,处理逻辑通过数据信道从主机系统接收第一数据,其中,第一数据是由主机系统从主机系统的第一内存位置检索的。在框825,处理逻辑通过命令信道从主机系统接收第二指令,该第二指令请求DP加速器执行计算或配置操作。在框826,处理逻辑基于至少第一数据执行计算或配置操作。
在一个实施方式中,主机系统将要检查第一请求以确定DP加速器是否有权从主机系统的第一内存位置读取,并且其中主机系统将响应于确定DP加速器有权从第一内存位置读取而允许DP加速器从第一内存位置读取。在另一实施方式中,不允许DP加速器直接访问主机系统的第一内存位置。在另一个实施方式中,DP加速器是联接到主机系统的多个DP加速器中的一个。
在另一个实施方式中,处理逻辑还通过数据信道将第二请求从DP加速器传输到主机系统,以将第二数据写入到主机系统的第二内存位置,其中第二数据代表计算或配置操作的结果的至少一部分。在另一实施方式中,主机系统将要检查第二请求以确定DP加速器是否有权写入到主机系统的第二内存位置,并且其中主机系统将响应于确定DP加速器有权写入到第二内存位置而允许DP加速器写入到第二内存位置。
图9是示出根据一个实施方式的具有主机信道管理器的主机的示例的框图。系统900可代表图2的系统200,以提供保护方案来确保主机和一个或多个DP加速器之间的信息交换信道。参照图9,在一个实施方式中,主机系统104包括:运行时间库205,运行时间库205包括:主机信道管理器(HCM)901。相应地,DP加速器405-407分别包括加速器信道管理器(ACM)915-917。HCM和ACM支持生成加密密钥,以在主机系统104和DP加速器405-407之间建立基于非对称(例如,RSA)和/或对称(例如,AES)加密的信息交换信道。这里,DP加速器405-407可以是图2的DP加速器205-207。
图10是示出根据一些实施方式的通信地联接到一个或多个加速器信道管理器(ACM)的主机信道管理器(HCM)的示例的框图。系统1000可以是图9的系统900的详细视图。参照图10,在一个实施方式中,HCM 901包括:认证模块1001、终止模块1003、密钥管理器1005、密钥存储器1007以及加密引擎1009。认证模块1001可认证在主机服务器104上运行的用户应用,用于允许访问或使用DP加速器的资源。终止模块1003可终止连接(例如,与将终止的连接相关联的信道)。密钥管理器1005可管理(例如,创建或销毁)非对称密钥对或对称密钥,用于对用于不同安全数据交换信道的一个或一个数据包进行加密/解密。这里,每个用户应用(作为图9的用户应用203的一部分)可以以一对多的关系对应于或映射到不同安全数据交换信道,并且每个数据交换信道可对应于DP加速器。根据一个实施方式,图11可示出使用信道/会话密钥映射到信道的用户应用的示例。这里,应用1映射到信道会话密钥1-11,其中每个会话密钥用于对应于DP加速器(例如,11DP加速器)的安全信道;应用2映射到信道会话密钥12,并且密钥12对应于特定的DP加速器。密钥存储器1007可存储加密非对称密钥对或对称密钥。加密引擎1009可对通过任何安全信道交换的数据的数据包进行加密或解密。注意,这些模块中的一些可以集成到更少的模块中。
参照图10,在一个实施方式中,DP加速器405包括:ACM 915和安全单元(SU)1020。安全单元1020可包括:密钥管理器1025、密钥存储器1027以及加密引擎1029。密钥管理器1025可管理(例如,生成、安全保管和/或销毁)非对称密钥对或对称密钥。密钥存储器1027可存储加密非对称密钥对或对称密钥。加密引擎1029可对数据交换的密钥信息或数据包进行加密或解密。在一些实施方式中,ACM 915和SU 1020是集成模块。
图12A-图12B是示出根据一个实施方式的在主机和DP加速器之间的安全信息交换的示例的框图。示例1200可以由图10的系统1000执行。参照图10和图12A-图12B,在一个实施方式中,在DP加速器(诸如,DP加速器405)和请求DP加速器资源的应用(托管在主机服务器104上)之间将发生的任何数据通信之前,需要在主机服务器104和DP加速器之间设置或建立安全信息交换信道。信息交换信道设置可以由主机服务器104的用户应用发起。例如,用户应用(诸如,图9的应用203的用户应用)可以请求HCM 901设置安全数据交换信道。认证模块1001可接收请求并认证用户应用是可信应用。在一个实施方式中,认证模块1001确认用户应用或客户端访问用户应用的许可,例如,确认用户应用或客户端是否具有使用来自所请求的DP加速器的资源的许可。如果允许,则可借助于会话密钥通过安全信道在用户应用和DP加速器之间交换信息,以对信息交换进行加密和解密。
在一个实施方式中,为了创建会话密钥,HCM 901生成与应用和/或信道相关联的第一公钥/私钥对,或者第一公钥/私钥对可以是与HCM 901相关联的密钥对。第一公钥/私钥对可以被存储在密钥存储器1007中,并且第一公钥被发送到DP加速器405(或ACM 915)(例如,操作1201)。ACM 915然后生成用于会话的唯一会话密钥(例如,第二会话密钥)(例如,操作1202),其中会话密钥可用于对传递到主机服务器104和传递自主机服务器104的数据包进行加密/解密(例如,操作1205-1216)。在一个实施方式中,会话密钥是基于哈希函数(诸如,循环冗余校验、校验和,或加密哈希函数,或随机哈希/数字生成器)导出(或生成)的对称密钥。
在一个实施方式中,当ACM 915接收第一公钥时,ACM 915为信道生成第二公钥/私钥对,其中第二公钥/私钥对的第二私钥和第一公钥用于对会话密钥或会话密钥的组成部分进行加密。在另一实施方式中,第二公钥/私钥对是与DP加速器405相关联的密钥对。在一个实施方式中,第一公钥、第二公钥、第二私钥和/或会话密钥可存储在密钥存储器1027中。然后,会话密钥(或其组成部分)可以由第一公钥加密,并且加密的会话密钥可以由第二私钥进一步加密(例如,双重加密),并且双重加密的会话密钥信息与第二公钥一起可被发送到HCM 901(例如,操作1203)。
HCM 901的密钥管理器1005然后可基于第二公钥和第一私钥对加密的会话密钥进行解密(例如,操作1204),以导出会话密钥(例如,生成第一会话密钥)。此后,从DP加速器传送到主机服务器104的数据,或者反之亦然(例如,操作1205-1216),可使用对称会话密钥对用于通信的数据进行加密和解密。例如,数据被加密然后由发送者在信息交换信道上发送。接收到的数据将被接收机解密。这里,主机服务器104和DP加速器405可读取这些数据包,因为主机服务器104和DP加速器405具有相同的对称会话密钥以对数据包进行加密和解密。
在一个实施方式中,主机服务器104(例如,HCM 901)不能直接访问DP加速器405的内存缓冲器(例如,ACM 915),但是DP加速器可以访问主机服务器104的内存缓冲器。因此,操作1205-1211是从主机服务器104向DP加速器405发送加密数据包的操作,而操作1212-1216是从DP加速器405向主机服务器104发送加密数据包的操作。这里,操作1206-1210类似于图7的操作701-705,用于主机服务器104向DP加速器405提供数据包。
最后,当应用发送信号通知会话完成时,应用可请求HCM 901终止会话。然后,终止模块1003可请求密钥管理器1005破坏与会话(作为操作1215的一部分)相关联的会话密钥(例如,第一会话密钥),并向DP加速器405的ACM 915发送终止通知(例如,操作1216),以请求密钥管理器1025破坏与会话相关联的对称会话密钥(例如,第二会话密钥)。尽管示出HCM901仅与ACM 915通信,但是,HCM 901可与对应于多个DC加速器的多个ACM进行通信,以同时建立多个数据交换连接。
图13A和图13B是示出根据一些实施方式的示例性方法的流程图。过程1300和1320可由包括软件、硬件或其组合的处理逻辑来执行。例如,过程1300可以由图9的主机系统(例如,HCM 901)执行,并且过程1320可以由图9的DP加速器(例如,ACM 915)执行。参照图13A,在框1301处,处理逻辑在主机系统的主机信道管理器(HCM)处接收来自应用的使用数据处理(DP)加速器建立安全信道的请求,其中DP加速器通过总线联接到主机系统。在框1302处,响应于该请求,处理逻辑基于与HCM相关联的第一密钥对的第一私钥和与DP加速器相关联的第二密钥对的第二公钥来生成用于安全信道的第一会话密钥。在框1303处,响应于与将要发送到DP加速器的应用相关联的第一数据,处理逻辑使用第一会话密钥对第一数据进行加密。在框1304处,处理逻辑通过总线经由安全信道将加密的第一数据传输到DP加速器。
在一个实施方式中,响应于该请求,处理逻辑还将与HCM相关联的第一密钥对的第一公钥传输到DP加速器。然后,响应于传输第一公钥,处理逻辑从DP加速器的加速器信道管理器(ACM)接收与DP加速器相关联的第二密钥对的第二公钥。在另一个实施方式中,ACM配置为导出第二会话密钥,并且基于第二密钥对的第一公钥和第二私钥对第二会话密钥进行加密,之后将加密的第二会话密钥发送到HCM,其中第一会话密钥和第二会话密钥是相同的对称密钥。在另一个实施方式中,ACM配置为使用第二会话密钥对加密的第一数据进行解密以恢复第一数据。
在一个实施方式中,处理逻辑还从DP加速器的ACM接收加密的第二数据,其中,使用第二会话密钥对第二数据进行加密。然后,处理逻辑使用第一会话密钥对加密的第二数据进行解密,以恢复第二数据。在一个实施方式中,响应于该请求,处理逻辑还检查应用的应用标识符(ID),以确定该应用是否有权访问DP加速器,其中只有当该应用有权访问DP加速器时才生成第一会话密钥。在一个实施方式中,处理逻辑还从应用接收终止安全信道的请求。响应于该请求,处理逻辑向ACM传输指令,指示ACM通过销毁第二会话密钥来终止安全连接。然后,处理逻辑通过HCM来销毁第一会话密钥。
参照图13B,在一个实施方式中,在框1321处,处理逻辑在数据处理(DP)加速器的加速器信道管理器(ACM)处接收来自主机系统的主机信道管理器(HCM)的应用的请求,以在主机系统和DP加速器之间建立安全信道,其中DP加速器通过总线联接到主机系统。在框1322处,响应于该请求,处理逻辑生成用于安全信道的第二会话密钥,并且将加密的第二会话密钥信息发送到HCM之前,基于与DP加速器相关联的第二密钥对的第二私钥和与HCM相关联的第一密钥对的第一公钥对第二会话密钥的信息进行加密。在框1323处,响应于要将第一数据发送到主机系统,处理逻辑使用第二会话密钥对第一数据进行加密。在框1324处,处理逻辑经由安全信道将加密的第一数据传输到主机系统的HCM。
在一个实施方式中,响应于该请求,处理逻辑还将与DP加速器相关联的第二密钥对的第二公钥传输到主机系统的HCM,并从HCM接收与HCM相关联的第一密钥对的第一公钥。在另一实施方式中,HCM配置为基于与HCM相关联的第一密钥对的第一私钥和与DP加速器相关联的第二密钥对的第二公钥来导出第一会话密钥。在另一个实施方式中,HCM配置为使用第一会话密钥对加密的第一数据进行解密以恢复第一数据。
在另一个实施方式中,处理逻辑还从主机系统的HCM接收加密的第二数据,其中使用第一会话密钥对第二数据进行加密。然后,处理逻辑使用第二会话密钥对加密的第二数据进行解密以恢复第二数据,其中第一会话密钥和第二会话密钥是相同的对称密钥。在一个实施方式中,处理逻辑还从主机系统的HCM接收终止安全信道的请求,并且响应于该请求,处理逻辑通过ACM破坏第一会话密钥。
图14是示出根据一个实施方式的用于在主机信道管理器(HCM)和加速器信道管理器(ACM)之间建立安全信息交换信道的示例性系统的框图。系统1400可以是图9的系统900的详细视图。参照图14,在一个实施方式中,HCM 901包括:密钥PK_O 1401、SK_O 1403以及PK_RK(s)1411。密钥PK_O 1401和SK_O 1403分别是与HCM 901和/或主机服务器104的应用/运行时间相关联的非对称加密密钥对的公钥和私钥,并且密钥PK_RK 1411是与DP加速器405和/或其它DP加速器的ACM 915相关联的一个或多个公钥。HCM 901还可包括:密钥管理器1005。DP加速器405可包括联接到ACM 915的安全单元1020,其中安全单元1020可包括:密钥PK_RK 1413和SK_RK 1415,它们分别是与ACM 915和/或DP加速器405相关联的非对称加密密钥对的公钥和私钥。ACM 915还包括:密钥管理器1025。密钥管理器1005和1025可以使用对称算法(例如,AES)和/或非对称算法(例如,Diffie-Hellman密钥交换协议、RSA等)来生成加密/解密密钥。
图15是示出根据一个实施方式的在主机和DP加速器之间导出会话密钥的示例性信息交换的框图。示例1550包括:用于导出会话密钥的多个操作,其可以由图14的系统1400执行。参照图14和图15,在一个实施方式中,在操作1551处,HCM 901向ACM 915发送命令“CMD_get公钥”以发起导出会话密钥的过程。在操作1552处,在接收到请求命令时,ACM 915生成用于导出会话密钥的临时(或导出的)公钥/私钥对(例如,PK_d和SK_d)。ACM 915使用与DP加速器相关联的私有根密钥(例如,SK_RK)对临时公钥PK_d进行加密。在操作1553处,加密的临时公钥的副本和临时公钥的副本由ACM 915发送到HCM 901。在操作1554处,HCM901接收副本并使用PK_RK(这里,PK_RK可以由HCM 901先前接收并存储为图14的HCM 901的PK_RK(s)1411)对加密的临时公钥进行解密,并且将解密的临时公钥与在操作1553处接收的临时公钥PK_d的副本进行比较。如果解密的密钥与临时公钥匹配,则HCM 901已确认该消息来自预期方。注意,PK_RK(s)1411可包含用于多个DP加速器405-407的多个公钥。
在操作1555处,HCM 901生成第一随机数(nc)。在操作1556处,HCM 901向ACM 915发送命令"CM_generate会话密钥"、与HCM相关联的公钥(例如,PK_O)、以及随机数nc。在操作1557处,在接收到“CM_generate会话密钥”命令时,ACM 915生成第二随机数(ns)。在操作1558处,ACM 915基于第一随机数nc和第二随机数ns导出会话密钥。在一个实施方式中,会话密钥由与随机数ns级联的随机数nc的哈希函数导出。在另一个实施方式中,会话密钥由基于ns加nc的值的哈希函数导出。然后,会话密钥被用于对在ACM 915和HCM 901之间交换的数据进行加密和解密。
在操作1559处,ACM 915用临时私钥(例如,SK_d)和与HCM相关联的公钥(例如,PK_O)对随机数nc和ns进行双重加密。ACM 915然后将双重加密的随机数nc和ns发送到HCM901。在操作1560处,HCM 901基于HCM关联私钥(例如,SK_O)和临时公钥(例如,PK_d)对双重加密的随机数nc和ns进行解密。在操作1561处,HCM 901通过确认随机数nc实际上与HCM901最初生成的随机数nc的副本相同来确认会话密钥的新鲜度。如果是,则在操作1562处,HCM 901基于第一随机数和第二随机数(例如,nc和ns)导出会话密钥。在一个实施方式中,会话密钥由与随机数ns级联的随机数nc的哈希函数导出。在另一个实施方式中,会话密钥由基于ns加nc的值的哈希函数导出。然后,会话密钥被用于对在HCM 901和ACM 915之间交换的数据进行加密和解密。注意,尽管会话密钥被描述为基于对称加密算法的加密密钥,但是会话密钥也可以是公钥/私钥对。
图16A和图16B是示出根据一些实施方式的示例性方法的流程图。过程1600和1620可以由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程1600可以由图14的主机服务器(例如,HCM 901)执行,并且过程1620可以由图14的DP加速器(例如,ACM 915)执行。参照图16A,在框1601处,响应于从数据处理(DP)加速器接收临时公钥(PK_d),处理逻辑在主机系统处生成第一随机数(nc),其中DP加速器通过总线联接到主机系统。在框1602处,处理逻辑将创建会话密钥的请求从主机系统传输到DP加速器,该请求包括:主机公钥(PK_O)和第一随机数。在框1603处,处理逻辑从DP加速器接收第二随机数(ns),其中使用主机公钥和对应于临时公钥的临时私钥(SK_d)来对第二随机数进行加密。在框1604处,处理逻辑基于第一随机数和第二随机数生成第一会话密钥,该第一会话密钥用于对主机系统和DP加速器之间的后续数据交换进行加密或解密。
在一个实施方式中,处理逻辑还将请求从主机系统发送到DP加速器,以请求DP加速器生成具有临时公钥和临时私钥的导出的或临时密钥对,其中DP加速器响应于该请求创建临时密钥对。依据DP加速器的实现,临时密钥可以在预定时间段(诸如,几天、几周或甚至几个月)内使用一次或几次。在另一个实施方式中,来自DP加速器的临时公钥是第一临时公钥,并且处理逻辑还接收加密的第二临时公钥,该加密的第二临时公钥已经由DP加速器使用加速器私有根密钥(SK_RK)进行加密。在另一个实施方式中,处理逻辑还使用与加速器私有根密钥相对应的加速器公有根密钥(PK_RK)对加密的第二临时公钥进行解密,以恢复第二临时公钥。然后,处理逻辑确认第一临时公钥和第二临时公钥是否相同,其中当第一临时公钥和第二临时公钥相同时产生第一随机数。
在一个实施方式中,从DP加速器接收第二随机数包括:接收已经使用对应于临时公钥的临时私钥进行加密的第一随机数和第二随机数。在另一实施方式中,处理逻辑还使用主机系统处的第一临时公钥或第二临时公钥对加密的第一随机数和第二随机数进行解密,以恢复第一随机数和第二随机数。在另一实施方式中,由临时私钥加密的第一随机数和第二随机数还由DP加速器使用主机公钥进行加密。在另一个实施方式中,处理逻辑还使用对应于主机公钥的主机私钥对加密的第一随机数和第二随机数进行解密,以恢复第一随机数和第二随机数。
参照图16B,在一个实施方式中,在框1621处,响应于从主机系统接收请求,处理逻辑在数据处理(DP)加速器处生成临时私钥和临时公钥,其中DP加速器通过总线联接到主机系统。在框1622处,处理逻辑使用与DP加速器相关联的加速器私有根密钥来对临时公钥进行加密。在框1623处,处理逻辑将未加密形式的临时公钥和加密的临时公钥传输到主机系统,以允许主机系统确认临时公钥。在框1624处,处理逻辑从主机系统接收第一随机数,其中在已经确认临时公钥之后由主机系统生成第一随机数。在框1625处,处理逻辑基于第一随机数和第二随机数生成会话密钥,其中第二随机数已经在DP加速器处本地生成。
在一个实施方式中,处理逻辑还使用临时私钥对第一随机数和第二随机数进行加密,以生成加密的第一随机数和第二随机数。然后,处理逻辑将加密的第一随机数和第二随机数传输到主机系统,以使主机系统能够创建相应的主机会话密钥。在另一个实施方式中,处理逻辑还在传输加密的第一随机数和第二随机数之前,使用与主机系统相关联的主机公钥来对加密的第一随机数和第二随机数进行加密。在另一个实施方式中,主机系统配置为使用与主机系统相关联的主机私钥和临时公钥来对加密的第一随机数和第二随机数进行解密,以恢复第一随机数和第二随机数。在另一个实施方式中,主机系统配置为确认第一随机数的新鲜度,其中只有在预定时间段内生成第一随机数时才生成主机会话密钥。
DP加速器的内存缓冲器可包含运行DP加速器所需的程序,向程序输入数据,以及从程序输出结果。DP加速器的不安全的内存缓冲器可导致在整个主机服务器-DP加速器系统体系结构中的折衷。如上所述,通过不允许主机服务器访问这些DP加速器,可以保护DP加速器的内存缓冲器。然而,对于主机服务器不能访问DP加速器的内存缓冲器的情况,主机服务器可以保留DP加速器的内存使用信息。内存使用信息可被保持在可信执行环境(TEE)中,该可信执行环境可以确保数据的保密性和完整性。
图17是示出根据一个实施方式的具有安全内存管理器(MM)以保护DP加速器的内存缓冲器的主机的示例的框图。系统1700可代表图9的系统900,以提供主机服务器104上的安全内存管理器来管理DP加速器的内存。参照图17,在一个实施方式中,主机服务器104包括:运行时间库205,运行时间库205包括:MM 1701。相应地,DP加速器405可包括:内存1703和内存单元(MU)1705,而DP加速器407可包括:内存1707和MU 1709。内存管理器可管理DP加速器的内存。内存1703和1707可以是DP加速器的全局内存。全局内存可以是加速器中的组件,用于存储信息,诸如,要在DP加速器上执行的程序代码,对程序代码的输入和来自程序执行的输出结果。MU 1705和1709可分别与MM 1701通信和协调关于DP加速器的内存1703和1707的内存布局和内存使用。
图18是示出根据一些实施方式的内存管理器(MM)的示例的框图。参照图18,内存管理器1701可包括:内存分配器1801,内存释放器1803以及内存使用注册表1811。内存分配器1801可从DP加速器的全局内存(例如,DP加速器405的内存1703)分配内存块。内存释放器1803可以从DP加速器的全局内存释放内存块。内存使用注册表1811可以记录与主机服务器的DP加速器相关联的内存块的内存布局和使用信息。在一个实施方式中,每个表(作为注册表1811的一部分)可以与DP加速器相关,并且该表可具有用于多个用户应用的多个条目。例如,用户应用可具有用于保留DP加速器的两个内存块的两个条目。然后,可将注册表用作为DP加速器分配或释放内存块的引用。内存使用注册表1811可包括:一个或多个内存管理表。内存管理表是由计算机操作系统中的系统用来存储用户应用与物理地址和/或虚拟地址之间的映射的数据结构。用于DP加速器的示例性内存使用注册表可具有诸如应用ID、起始地址和大小的字段,其中应用ID表示哪个用户应用已经被分配了内存块,并且起始地址和大小表示内存块的地址和大小。在一些实施方式中,注册表可包括附加字段,诸如,指示是否已经分配了相应的内存块、物理地址是否被映射到虚拟地址内存,读取或写入访问等的标志。注意,可能存在许多内存使用注册表,每个注册表对应每个DP加速器。
参照图17-18,对于一个示例,远程客户端可发出命令以在主机服务器104上运行特定应用(作为用户应用203的一部分)。应用可通过调用运行时间库205提供的API来请求使用来自DP加速器405-407的资源。资源可以是内存资源或处理器资源。对于内存资源示例,在接收到请求时,运行时间库205可启动MM 1701的实例。然后,运行时间库205可通过实例的内存分配器1801命令DP加速器405从DP加速器405的内存1703分配指定大小的内存块以执行应用。
在一个实施方式中,在请求资源块之前,MM 1701可查询内存使用注册表1811以确定资源块是否已经被分配。MM 1701然后响应于确定尚未分配第一内存块,向DP加速器405发送分配命令,以将全局内存的第一内存块分配给应用。在另一实施方式中,MM 1701响应于确定请求内存块已被分配而拒绝第一请求。
MU 1705接收命令并执行内存分配。在一个实施方式中,MU 1705可遍历内存1703以找到具有待分配的请求内存块大小的连续内存块。这里,MU 1705还可为用于MU 1705的DP加速器405保留类似的内存使用注册表(例如,内存使用数据结构)以遍历用于DP加速器405的内存1703。在另一实施方式中,MM 1701将分配命令和内存使用注册表的副本发送到DP加速器405。这样,MU 1705知道已经分配的内存。然后,MU 1705可基于内存使用信息来分配内存块,并将新分配的内存块的新内存使用信息返回到MM 1701。MM1701然后将对应于请求内存块的应用的应用标识符、起始地址以及所分配的内存块的大小记录到内存使用注册表1811上。在内存分配之后,如果在TEE内运行的应用试图访问DP加速器405-407的内存位置,则MM 1701可以搜索注册表1811并确认内存位置是否被分配给该应用。如果是,则允许应用访问内存位置。否则,拒绝应用对内存位置的访问。注意,一旦分配了内存块,随后就不能分配内存块,直到其空闲为止。
在另一个实施方式中,当MU 1705在分配内存块时返回内存使用信息时,为了避免通过通信信道传输物理地址,MU 1705可替代地向MU 1701返回虚拟内存地址。这里,MU1705可包括:物理内存地址到虚拟内存地址映射表。映射表可将虚拟内存地址映射到DP加速器405的内存1703的物理内存地址。这样,MU 1705仅公开了虚拟内存地址,从而在通信信道上不公开内存1703的物理地址。
在一个实施方式中,当用户应用的执行完成时或当客户端发出完成命令时,用户应用可以向DP加速器405发送用于与用户应用相关联的内存块的内存释放命令。在另一个实施方式中,注册表的副本也被发送到DP加速器405。在一个实施方式中,在发送内存释放命令之前,MM 1701基于存储在内存使用数据结构中的内存使用信息来确定内存块是否已被分配给应用。如果是,则发送释放命令。否则,不发送释放命令(例如,可以拒绝释放请求)。
MU 1705接收释放命令并执行内存释放。在一个实施方式中,MU 1705遍历存储器1703以定位内存块以复位内存块的内存缓冲器。然后,MU 1705向MM 1701返回状态完成和/或新的内存使用信息。MM1701然后根据状态完成和/或新的内存使用信息来更新(例如,删除条目)内存使用注册表1811。
图19是示出根据一个实施方式的方法的示例的流程图。过程1900可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程1900可由主机系统执行,诸如,图17的主机104。参照图19,在框1901处,处理逻辑使用诸如主机系统的可信平台模块(TPM)的安全模块来执行安全引导。在框1902处,处理逻辑建立与主机系统的一个或多个处理器相关联的可信执行环境(TEE)。在框1903处,处理逻辑启动TEE内的内存管理器,其中内存管理器配置为管理通过总线联接到主机系统的数据处理(DP)加速器的内存资源,包括维护DP加速器的全局内存的内存使用信息。在框1904处,响应于从在TEE内运行的应用接收到用于访问DP加速器的内存位置的请求,处理逻辑基于内存使用信息来允许或拒绝该请求。
在一个实施方式中,内存管理器被实现为与DP加速器相关联的运行时间库的一部分,其在主机系统的TEE内执行。在一个实施方式中,维护DP加速器的全局内存的内存使用信息包括:维护内存使用数据结构以记录DP加速器的全局内存的内存块的内存分配。在另一个实施方式中,内存使用数据结构包括多个条目,每个条目记录已经分配的DP加速器的全局内存的内存块。在另一实施方式中,每个条目存储相应内存块的起始内存地址、相应内存块的大小以及指示相应内存块是否已被分配的标志。
在另一个实施方式中,处理逻辑还从应用接收第一请求,以从DP加速器的全局内存分配第一内存块。响应于第一请求,处理逻辑基于存储在内存使用数据结构中的内存使用信息来确定第一内存块是否已被分配,而不必询问DP加速器。然后,处理逻辑响应于确定第一内存块尚未被分配,将全局内存的第一内存块分配给应用。
在另一实施方式中,响应于确定第一内存块已被分配,处理逻辑进一步拒绝第一请求。在另一实施方式中,处理逻辑还从应用接收用于从DP加速器的全局内存释放第二内存块的第二请求。响应于第二请求,处理逻辑基于存储在内存使用数据结构中的内存使用信息来确定第二内存块是否已被分配给应用。处理逻辑响应于确定第二内存块已被分配给应用而将第二内存块从全局内存释放,否则拒绝第二请求。
图20是示出根据一个实施方式的通信地联接到DP加速器的主机的示例的框图。系统2000可代表图9的系统900,除了系统2000可以为DP加速器405-407提供信任服务和时间戳生成服务的根。参照图20,在一个实施方式中,DP加速器405包括:安全单元1020和时间单元2003。安全单元1020可使用多个加密方案向DP加速器的其它模块/单元提供信任服务的根,而时间单元2003可产生用于认证加密密钥的时间戳以支持不同的加密方案。注意,时间单元2003可以是独立单元或者可以与安全单元1020集成在一起。
在一个实施方式中,安全单元1020需要安全时间源来跟踪何时加密密钥已被认证或何时会话密钥已过期。将来自外部源的时钟信号用于安全单元1020可能是不安全的。例如,可以调整外部源的时钟的时钟频率,或者可以篡改时钟的电源以延长会话密钥超过预期时间。
图21是示出根据一个实施方式的时间单元的示例的框图。参照图21,时间单元2003可具有用于安全时钟信号的独立时钟生成和独立电源。时间单元2003可包括:时钟发生器2101、本地振荡器2103、计数器2105、电源2107、时钟校准器2109和时间戳发生器2111。时钟发生器2101可在本地产生时钟信号,而不必从外部源导出时钟信号。本地振荡器2103可联接到时钟发生器2101以提供精确的脉冲信号。例如,本地振荡器2103可包括:晶体振荡器,其可提供具有大于某个阈值(例如,每微秒1次计数)的精度的脉冲信号。计数器2105可联接到时钟产生器2101以基于从时钟产生器2101生成的时钟信号来计数一个或多个计数值。电源2107可向时钟发生器2101和时间戳发生器2111提供电力。时钟校准器2109可校准时钟发生器2101。时间戳生成器2111可联接到时钟生成器以基于时钟信号生成时间戳。
例如,电源2107可以通过电池(例如,硬币电池)提供稳定和持久的电力。这里,该硬币电池将位于安全单元1020外部的板上。在其它实施方式中,电源2107的电路位于安全单元1020的外部。本地振荡器2103可包括:高性能晶体振荡器。计数器可包括:非易失性存储器中的一个或多个可变计数器(例如,8位、16位、32位或64位等可变计数器)。非易失性存储器或内存是一种即使在关闭电源时也能够保持保存的数据的内存。与易失性存储器不同,非易失性存储器不需要周期性地刷新其内存数据。在一个实施方式中,非易失性存储器可包括:第一计数器,其可针对本地振荡器2103的每一单个信号脉冲递增1。第一计数器可计数到某个值,并且该值可由外部源或时钟校准器2109改变,以调整该值来表示时钟信号的微秒信号。然后可由第二计数器累加微秒以生成第二信号。第三计数器、第四计数器等可用于累积分钟、小时、日、月信号等。然后,时钟发生器2101可基于累加的信号生成时钟。基于时钟信号,时间戳生成器可生成时间戳。然后可以为各种目的格式化时间戳。一些示例性时间戳格式可以是:yyyy-MM-dd HH:mm:ss.SSS、yyyyMMdd.HHmmssSSS和yyyy/MM/dd HH:mm:ss。在一个实施方式中,转换器可将时间戳从一种格式转换为另一种格式。在另一实施方式中,时钟校准器2109在DP加速器的制造阶段初始校准时钟生成信号以匹配外部源(例如,原子时钟)。
接下来,诸如DP加速器的安全单元1020的安全单元可请求时间单元2003在每个需要的基础上生成时间戳。然后,安全单元1020可以使用时间戳来对密钥认证、密钥生成和/或密钥过期进行时间戳。例如,如果基于与生成会话密钥的时间相关联的时间戳,确定会话密钥过期,则可终止与会话密钥相关联的信道会话。随后,如果会话密钥配置为自动更新或者通过用户应用获得更新授权,则可生成新的会话密钥。
图22是示出根据一个实施方式的安全单元的示例的框图。安全单元1020可由DP加速器用来建立和维护与主机服务器/系统的安全信道,以交换命令和数据。参照图22,安全单元1020可包括:密钥管理器1025、加密引擎1029、密钥存储器1027(其可包括签名密钥(EK)2209)、易失性存储器2207、非易失性存储器2205、处理器2203和随机数生成器2201。随机数生成器2201可生成随机数,诸如,随机数。在一个实施方式中,随机数生成器2201可基于种子输入(例如,时间戳)生成随机数。加密引擎1029可执行加密操作,例如加密和解密。非易失性存储器2205和易失性存储器2207可以是用于安全单元1020的存储区域。密钥存储器1027可以是安全单元1020的密钥存储区域,其可以安全地保持唯一的签名凭证(EC)或签名密钥(EK)2209。这里,EC或EK是指在制造时随机生成并嵌入在安全单元1020中的公有/私有加密根密钥对(例如,PK_RK和SK_RK)的公有密钥(例如,PK_RK)。对应于EK的私有根密钥(例如,SK_RK)也可被嵌入到非易失性存储器2205中,然而,私有根密钥决不会被释放到安全单元1020之外。示例性密钥对可以是2048位RSA加密密钥对。
在制造/测试阶段期间,可内部测试并配置DP加速器,并且可生成EK2209并嵌入安全单元1020。在一个实施方式中,可将EK 2209上载到可信认证服务器上,在那里可对公钥或EK进行签名,并且可使用EK的签名的证书来确认EK是真实的。这里,认证服务器可以是政府签注服务器、第三方可信认证服务器或本地服务器。
在部署阶段期间,在DP加速器通电之后,可从安全单元1020读取EK 2209,并且可在本地或通过认证服务器将EK 2209确认为真实的。一旦EK确认成功,DP加速器将被视为真实的。经确认的EK以及安全单元1020内部的私有根密钥然后可用于导出其它加密密钥,诸如如上所述的信道会话密钥,或临时公钥/私钥对(例如,PK_d和SK_d)等。
运行时间内核或内核(或内核对象)是指用于支持DP加速器操作的数学函数或计算函数。内核可以是由用户应用调用的数学函数。对于一些实施方式,可将内核从主机服务器或其它服务器上载到DP加速器,以由DP加速器执行。示例性内核可以是矩阵乘法内核,其支持将由DP加速器执行的矩阵乘法运算。注意,可以有数百个内核,每个内核专用于支持将由DP加速器执行的不同的数学函数或计算函数。跟踪内核的源、哪些内核被上载到DP加速器以及哪些内核被修改可能是具有挑战性的。因此,需要内核验证(或确认)以及内核证明协议或方案来确保内核的真实源和完整性。
图23是示出根据一个实施方式的通信地联接到DP加速器以验证内核对象的主机服务器的示例的框图。系统2300可以是图9的系统900。参照图23,在一个实施方式中,主机服务器104包括:TEE 201,TEE 201包括:用户应用203和运行时间库205。运行时间库205可包括:内核确认器模块2301和内核证书存储2303。内核证书存储2303可存储由内核标识符列出的内核的证书(或仅仅是公钥的列表),其中证书可由可信认证机构(CA)或本地可信服务器进行签名。内核确认器模块2301可基于来自内核证书存储2303的内核证书信息来确认签名的内核对象。
主机服务器104可通信地联接到永久存储装置(例如,存储盘)2305和DP加速器405-407。注意,永久存储装置2305可以是主机服务器104的一部分,或者可以是远程存储单元。永久存储装置2305可包括:内核对象2307。因为内核对象2307可能来自远程源,所以对内核对象进行签名确保对象来自可信源。内核对象可以指包括内核的二进制文件的对象。在一个实施方式中,内核对象2307的每个内核对象包括:内核的可执行映像和相应的签名。此外,内核的可执行映像可被加密。注意,签名是使用对应于内核对象的公有/私有内核密钥对的私钥签名的内核的哈希运算。可使用与用于对内核进行签名的私钥相对应的公钥来确认签名。例如,可以从内核对象的内核证书获得公钥。在一些实施方式中,当内核开发者最初生成内核时,内核对象被签名(使用内核开发者的私钥)。然后,经签名的内核可包括:用于确认(或验证)的相应内核证书(例如,公钥),以确保内核是真实的。
图24是示出根据一个实施方式的示例性内核对象确认协议的流程图。内核对象确认是指在将内核对象2307引入主机服务器104的TEE 201和/或DP加速器405之前确认内核对象2307是否是真实的。实例2400可以由图23的系统2300执行。在一个实施方式中,在确认之前,用户应用203(或运行时间库205)从可信认证机构或可信签名者的证书获得公钥(例如,PK_i、PK_j、…、PK_n)的列表,其中对应的私钥(例如,SK_i、SK_j、…、SK_n)是用于对内核对象2307的内核开发者的私钥进行签名。在一个实施方式中,当用户应用203(或运行时间库205)调用将要由DP加速器405(或任何其它DP加速器)执行的内核(由内核标识符标识)时,用户应用203(或运行时间库205)确定内核是否已经被更新到DP加速器405上。如果没有,则主机服务器104根据一个实施方式执行操作2400以在将内核上载到DP加速器405之前确认该内核。注意,如果调用一个内核会调用其它内核,则运行时间库205可调用内核链。
在操作2401中,用户应用203(或运行时间库205)(作为TEE 201的一部分)基于内核标识符(ID)请求将内核(作为内核对象2307的一部分)加载到OS 211上。在一个实施方式中,内核ID可以是全局唯一标识符(例如,GUID或UUID)。在一个实施方式中,内核对象包括:内核(例如,可执行映像)、内核ID以及内核的签名。签名可以是内核的加密哈希值。在另一实施方式中,内核对象包括加密内核(例如,加密可执行映像)。在操作2402中,OS 211通过内核ID从永久存储器2305检索内核对象。在操作2403中,OS 211将内核对象发送回主机服务器104的TEE201。在操作2404中,内核确认器模块2301从对应于内核ID的内核证书存储2303检索内核证书,并确认内核对象是否是真实的。在一个实施方式中,确认内核包括:将公钥应用到内核对象的签名以解密签名来生成期望的哈希值。内核确认器模块2301然后生成内核的哈希值,并比较以确定预期的哈希值与生成的哈希值的差异。如果没有差异,则签名是有效的。如果签名有效,则内核的完整性被确认,并且内核对象被认为是真实的并由可信开发者提供。在另一个实施方式中,确认内核包括:如果内核被加密,则将公钥应用到内核的加密的可执行映像以解密和获得内核。
在操作2405中,如果核(例如,可执行映像)被确认为可信的,则在操作2406中,由主机服务器104的TEE 201将内核对象发送到DP加速器405。此后,可由DP加速器405的一个或多个执行单元执行所调用的内核。
图25是示出根据一个实施方式的方法的示例的流程图。过程2500可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程2500可由主机系统(诸如图23的主机104)执行。参照图25,在框2501处,处理逻辑在主机系统的可信执行环境(TEE)内执行的运行时间库处接收来自应用的请求,以调用预定函数来执行预定操作。在框2502处,响应于该请求,处理逻辑标识与预定函数相关联的内核对象。在框2503处,处理逻辑使用与用于对内核对象的可执行映像进行签名的私钥相对应的公钥来确认内核对象的可执行映像。在框2504处,响应于成功确认内核对象的可执行映像,处理逻辑通过总线将内核对象的已确认的可执行映像传输到数据处理(DP)加速器,以由DP加速器执行以执行预定操作。
在一个实施方式中,运行时间库配置为通过使用与私钥相对应的公钥解密内核对象的签名来确认内核对象,其中内核对象将以未加密的形式被传输到DP加速器。在另一实施方式中,处理逻辑还通过使用预定哈希函数对内核对象的可执行映像进行哈希运算来确认内核对象的完整性。
在一个实施方式中,内核对象被存储在永久存储装置的非安全位置中。在另一个实施方式中,内核对象是存储在永久存储装置中的许多内核对象中的一个,其中运行时间库维护分别与内核对象相关联的用于确认内核对象的公钥的列表。
在一个实施方式中,DP加速器包括:一个或多个执行单元,其配置为执行内核对象的可执行映像以以分布式方式代表应用。在一个实施方式中,公钥是从可信服务器获得的,并且公钥是由内核对象的提供者提供的,并且其中内核对象包括:由提供者使用私钥签署的签名。
图26是示出根据一个实施方式的通信地联接到用于内核证明的DP加速器的主机服务器的示例的框图。内核证明包括:确认已经上载到DP加速器上的内核的完整性,以确保内核在传输中没有被某第三方修改。内核的完整性可通过确认内核的签名来确认。系统2600可以是图9的系统900。参照图26,在一个实施方式中,主机服务器104包括:TEE 201,TEE 201包括:用户应用203、运行时间库205、证明模块2601以及内核摘要存储2603。内核摘要存储2603可存储对应于已经上载到不同DP加速器上的内核的多个内核摘要。在一个实施方式中,内核摘要是指内核的非加密哈希值,或内核的任何类型的函数(例如,校验和、CRC等)。内核摘要存储2603还可存储内核摘要的内核ID、DP加速器ID的映射。映射可标识哪些内核已经被上载到哪些DP加速器。基于来自内核摘要存储2603的内核摘要信息,证明模块2601可基于来自内核摘要存储2603的内核摘要信息来证明内核。
参照图26,DP加速器405可包括:安全单元1020、证明单元2605、执行单元2607以及存储装置2609。存储装置2609可包括:内核对象2611。证明单元2605可经由证明协议与证明模块2601进行通信。存储装置2609可以是存储内核对象2611的一个或多个存储装置。内核对象2611可包括:先前上载到DP加速器405的一个或多个内核(以及相应的内核ID)。执行单元2607可执行来自内核对象2611的一个或多个调用的内核。
在一个实施方式中,用户应用203(或运行时间库205)可通过生成内核摘要以查询所生成的内核摘要是否在来自内核摘要存储2603的内核摘要信息中找到来确定内核对象是否已经被更新到DP加速器405上,以确定内核是否已经驻留在DP加速器上。或者,可查询内核ID以确定内核是否已驻留在DP加速器上。如果找到,则开始证明,否则用户应用203(或运行时间库205)确认内核对象(如上所述)并为内核生成将存储在内核摘要存储2603中的内核摘要。然后,用户应用203(或运行时间库205)将内核二进制文件的副本上载到DP加速器上。在随后的执行会话中,响应于内核的调用,可以由用户应用(或运行时间库)证明内核。
图27是示出根据一个实施方式的示例性证明协议的流程图。在一个实施方式中,可以在图26的主机服务器104的证明模块2601与DP加速器405的证明单元2605之间执行示例2700。参照图27,在操作2701中,主机服务器104向DP加速器405请求证明密钥。在操作2702中,响应于该请求,DP加速器405生成公有/私有证明密钥对(例如,PK_ATT、SK_ATT),并使用与DP加速器405相关联的私有根密钥(例如,SK_RK)来对PK_ATT进行签名。
在操作2703中,DP加速器405向主机服务器104发送回具有PK_ATT和签名的(PK_ATT)的消息。在操作2704中,主机服务器104接收消息,使用与DP加速器405相关联的公有根密钥(例如,PK_RK)对签名的PK_ATT进行解密,并将接收的PK_ATT与解密的PK_ATT进行比较以确认签名的PK_ATT。在一个实施方式中,主机系统先前已从DP加速器或通过网络从可信服务器接收到与DP加速器相关联的PK_RK。如果接收到的PK_ATT与解密后的PK_ATT相匹配,则主机服务器104已确认该PK_ATT确实是由DP加速器405生成的。注意,可在操作2705之前的任何时间执行操作2701-2704以进行证明。换句话说,可在预定的时间段(例如,一周)使用相同的证明密钥,并且证明密钥与任何被证明的内核都不相关,例如,证明密钥可被用于许多内核。
在操作2705中,主机服务器104将命令“CMD_DO_ATTESTATION”连同内核的内核ID一起发送到DP加速器405以请求引用。在操作2706中,响应于接收该命令请求,DP加速器405测量内核的内核完整性。在一个实施方式中,内核的可执行映像(作为内核对象2611的一部分)被哈希运算以生成内核摘要。然后,内核摘要连同时间戳一起用SK_ATT进行签名。这里,时间戳可由诸如图20的时间单元2003的时间单元生成。
在操作2707中,DP加速器405将具有签名的内核摘要的消息连同时间戳一起发送到主机服务器104。在操作2708中,响应于接收该消息,主机服务器104使用PK_ATT对签名的内核摘要连通时间戳一起进行解密。然后,主机服务器104检查时间戳以确认消息没有经过超过预定时间段(例如,一天)。主机服务器104然后确认内核摘要属于先前上载到DP加速器的内核。在一个实施方式中,主机服务器104从内核摘要存储器2603的内核摘要信息查询接收内核摘要。如果找到与DP加速器405的DP加速器ID匹配的条目,则内核证明是成功的。否则,证明失败。在操作2709中,主机服务器104可将证明或确认结果发送到DP加速器405。基于该结果,允许或拒绝由DP加速器405的执行单元执行内核。
图28A和图28B是示出根据一些实施方式的示例性方法的流程图。过程2800和2820可以由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程2800可以由主机服务器104执行,并且过程2820可以由图26的DP加速器405执行。参照图28A,在框2801处,处理逻辑在主机系统处通过总线从数据处理(DP)加速器接收公有证明密钥(PK_ATT)或签名的PK_ATT。在框2802处,处理逻辑使用与DP加速器相关联的公有根密钥(PK_RK)来确认PK_ATT。在框2803处,响应于成功确认PK_ATT,处理逻辑将内核标识符(ID)传输到DP加速器以请求对存储在DP加速器中的内核对象进行证明。在框2804处,响应于从DP加速器接收内核摘要或对应于内核对象的签名的内核摘要,处理逻辑使用PK_ATT来确认内核摘要。在框2805处,处理逻辑将确认结果发送到DP加速器,以供DP加速器基于确认结果访问内核对象。
在一个实施方式中,处理逻辑还将对证明的请求传输到DP加速器,其中DP加速器响应于对证明的请求生成具有PK_ATT和私有证明密钥(SK_ATT)的证明密钥对。然后,处理逻辑从DP加速器接收使用DP加速器的私有根密钥(SK_RK)签名的加密PK_ATT。在另一个实施方式中,处理逻辑还在主机系统处使用与DP加速器相关联的公有根密钥(PK_RK)对加密的PK_ATT进行解密,并且确认从DP加速器接收的PK_ATT与解密的PK_ATT相同。在一个实施方式中,与DP加速器相关联的公有根密钥(PK_RK)可以由服务器104通过网络从可信服务器接收。
在一个实施方式中,通过由DP加速器哈希运算内核对象的可执行映像来生成内核摘要。在另一个实施方式中,使用对应于PK_ATT的私有证明密钥(SK_ATT)来对内核摘要进行签名。在另一个实施方式中,内核摘要连通在某个时间点生成的时间戳一起被签名,其中时间戳被主机系统用来确认内核摘要是在预定时间段内生成的。在一个实施方式中,主机系统通过网络从预定的可信服务器接收与DP加速器相关联的PK_RK。
参照图28B,在框2821中,响应于从主机系统接收证明请求,处理逻辑在数据处理(DP)加速器处生成具有公有证明密钥(PK_ATT)和私有证明密钥(SK_ATT)的证明密钥对。在框2822处,处理逻辑将PK_ATT或经签名的PK_ATT从DP加速器传输到主机系统,其中DP加速器通过总线联接到主机系统。在框2823处,处理逻辑从主机系统接收标识内核对象的内核标识符(ID),其中响应于成功确认PK_ATT而接收内核ID。在框2824处,响应于内核ID,处理逻辑通过对内核对象的可执行映像进行哈希运算生成内核摘要。在框2825处,处理逻辑将内核摘要或经签名的内核摘要传输到主机系统,以允许主机系统在访问将在DP加速器内执行的内核对象之前确认并证明内核对象。
在一个实施方式中,处理逻辑还使用与DP加速器相关联的私有根密钥(SK_RK)来对PK_ATT进行签名,并将签名的PK_ATT发送到主机系统,以允许主机系统确认PK_ATT来自DP加速器。在另一个实施方式中,主机系统配置为使用对应于SK_RK的公有根密钥(PK_RK)对签名的PK_ATT进行解密,并通过将从DP加速器接收的PK_ATT与解密的PK_ATT进行比较来确认PK_ATT。
在一个实施方式中,处理逻辑还使用SK_ATT对内核摘要进行签名,并将签名的内核摘要发送到主机系统,以允许主机系统确认内核摘要是由DP加速器发送的。在另一个实施方式中,主机系统配置为使用PK_ATT对签名的内核摘要进行解密,并通过将从DP加速器接收的内核摘要和解密的内核摘要进行比较来确认内核摘要。在另一个实施方式中,处理逻辑还生成时间戳,并对内核摘要连同时间戳一起进行签名,其中时间戳被主机系统用来确认内核摘要的新鲜度。
通信地联接到主机服务器的DP加速器可被进一步验证为主机服务器预期的DP加速器。该保证可通过第三方可信服务器和/或认证机构来实现。
图29是示出根据一个实施方式的通信地联接到可信服务器和DP加速器的主机服务器的示例的框图。DP加速器验证是指从可信服务器确认DP加速器的证书。可信服务器可以是第三方认证机构或本地服务器。系统2900可以是图9的系统900。参照图29,在一个实施方式中,主机服务器104包括:TEE 201,TEE 201包括:密钥确认模块2901和PK_RK(s)2903。PK_RK(s)2903可存储与DP加速器相关联的公钥。密钥确认模块2901可经由可信服务器(诸如,可信服务器2921)来确认DP加速器的公钥。可信服务器2921可包括:DP加速器证书2923。
参照图29,DP加速器可包括:安全单元1020,安全单元1020可包括:密钥确认单元2905和存储器2913。存储器2913可包括:SK_RK 2907、加速器ID(例如,序列号和/或UUID)2909以及版本号2911。版本号可表示DP加速器405的固件版本,并且可根据DP加速器405的固件版本来更新版本号。密钥确认单元2905可与密钥确认模块(诸如,主机服务器104的密钥确认模块2901)通信,以向主机服务器104提供关于DP加速器的信息(例如,加速器ID2909和/或版本号2911)。
作为初步的问题,在一个实施方式中,主机服务器104可已经具有与DP加速器405相关联的PK_RK的副本。然而,当DP加速器405最初被引入主机服务器104时,或者当DP加速器405被重新引入时,DP加速器405的PK_RK可能需要针对主机服务器104进行验证或重新验证。
图30是示出根据一个实施方式的示例性DP加速器验证协议的流程图。协议3000可以是确认DP加速器405的PK_RK的示例性实施方式。参照图29-图30,协议3000可以在主机服务器104的密钥确认模块2901和DP加速器405的密钥确认单元2905之间执行。
参照图30,在操作3001中,主机服务器104向加速器405请求加速器ID。在操作3002中,响应于该请求,DP加速器405将加速器ID 2909返回到主机服务器104(例如,DP加速器的序列号或UUID)。在操作3003中,主机服务器104将接收到的加速器ID发送到可信服务器2921。这里,可信服务器2921可以是认证机构、第三方可信服务器或具有关于DP加速器405的证书信息的本地可信服务器。在操作3004中,响应于该请求,可信服务器2921将与DP加速器405的加速器ID相关联的证书发送到主机服务器104。
在操作3005中,主机服务器104从与加速器ID相关联的证书中提取证书信息(例如,公钥PK_RK),并将证书信息连同加速器ID一起存储在本地存储器中,例如PK_RK(s)2903。在一个实施方式中,可针对用于DP加速器405的现有PK_RK(例如,作为PK_RK(s)2903的一部分的现有PK_RK)来确认先前已获得的DP加速器405的所提取的PK_RK。可选地,可通过确认可信服务器2921的证书链来确认证书信息。证书链是证书的有序列表,其使得接收方能够确认发送方和可信服务器(例如,认证机构)是否是可靠的。在操作3006中,基于确认和/或证书信息(例如,PK_RK),主机服务器104然后请求与DP加速器405建立安全连接(例如,一个或多个安全信道)。
注意,此后,主机服务器104可使用PK_RK来解密由DP加速器405发送的安全消息,其中安全消息由SK_RK加密。这些消息可包括:与证明密钥对(例如,PK_ATT、SK_ATT)相关联的确认消息,以确认公有证明密钥的签名来证明存储在DP加速器中的内核对象,如上所述。该消息还可包括:用于临时公钥/私钥对(例如,PK_d、SK_d)的确认消息,以及用于DP加速器405的会话密钥,如上所述。在一些实施方式中,随机生成的数字连同图29的版本号2911一起可用于生成证明密钥对和临时公钥/私钥对。在这种情况下,如果例如由于固件升级而更新版本号2911,则会话的证明密钥对和临时公钥/私钥对将过期。
DP加速器还可基于加速器的版本号(图29的版本号2911)和/或由随机数生成器生成的随机数来生成公有/私有证明密钥对(例如,PK_ATT、SK_ATT)。类似地,还可基于加速器的版本号(图29的版本号2911)和/或由随机数生成器生成的随机数来生成临时公钥/私钥对(例如,PK_d、SK_d,其中SK_d被用于建立与主机系统和DP加速器之间的通信会话相关联的会话密钥)。
图31是示出根据一个实施方式的方法的示例的流程图。过程3100可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程3100可由主机系统(诸如,图29的主机104)执行。参照图31,在框3101处,处理逻辑在主机系统处从DP加速器接收唯一地标识DP加速器的加速器ID,其中主机系统通过总线联接到DP加速器。在框3102处,处理逻辑通过网络将加速器ID传输到预定的可信服务器。在框3103处,处理逻辑通过网络从预定的可信服务器接收证书,其中该证书包括:与DP加速器相关联的公钥(PK_RK)。在框3104处,可选地,在一个实施方式中,处理逻辑例如通过确认可信服务器的证书链来确认证书与预定可信服务器相关联。在框3105处,过程逻辑从证书中提取公有根密钥(PK_RK),并使用先前由DP加速器发送的PK_RK来确认所提取的PK_RK,以认证DP加速器确实是其所声称的DP加速器。在框3106处,处理逻辑基于确认使用PK_RK建立与DP加速器的安全信道,以在主机系统与DP加速器之间安全地交换数据的。
在一个实施方式中,DP加速器包括:一个或多个执行单元,用于代表托管在主机系统内的应用执行数据处理操作。在一个实施方式中,预定的可信服务器与应用的提供者相关联。在一个实施方式中,预定的可信服务器与DP加速器的提供者相关联。在一个实施方式中,还利用PK_RK确认为DP加速器生成的签名。
在另一实施方式中,主机系统利用PK_RK来建立与主机系统和DP加速器之间的通信会话相关联的会话密钥。在另一个实施方式中,主机系统利用PK_RK来确认公有证明密钥的签名,以证明存储在DP加速器中的内核对象。
注意,可以用软件、硬件或其组合来实施如上所述和所示的一些组件或全部组件。例如,这种组件可被实施为安装并存储在永久存储装置中的软件,该永久存储装置可以由处理器(未示出)在存储器中加载并执行,以执行在整个本申请中描述的过程或操作。或者,这种组件可被实施为被编程或嵌入到专用硬件(诸如集成电路(例如,专用IC或ASIC)、数字信号处理器(DSP)或现场可编程门阵列(FPGA))中的可执行代码,可经由相应驱动器和/或操作系统从应用访问该可执行代码。此外,这种组件可被实施为处理器或处理器核心中的特定硬件逻辑,作为可由软件组件经由一个或多个特定指令访问的指令集的一部分。
图32是示出可与本发明的一个实施方式一起使用的数据处理系统的示例的框图。例如,系统1500可代表执行上述任意过程或方法的上述任意数据处理系统,例如,如上所述的客户端装置或服务器(例如,客户端101-102和服务器104,如上所述)。
系统1500可包括许多不同的组件。这些组件可被实施为集成电路(IC)、其部分、分立电子装置,或适于诸如计算机系统的主板或插入卡的电路板的其它模块,或以其它方式并入到计算机系统的机箱内的组件。
还要注意,系统1500旨在示出计算机系统的许多组件的高级视图。然而,应当理解,在某些实施中可存在附加组件,并且此外,所示组件的不同排列可出现在其它实施中。系统1500可代表桌面、膝上型计算机、平板电脑、服务器、移动电话、媒体播放器、个人数字助理(PDA)、Smartwatch、个人通信器、游戏装置、网络路由器或集线器、无线接入点(AP)或中继器、机顶盒或其组合。此外,虽然仅示出了单个机器或系统,但是术语“机器”或“系统”也应被理解为包括单独地或共同地执行一组(或多组)指令以执行本文所讨论的任何一个或多个方法的机器或系统的任何集合。
在一个实施方式中,系统1500包括:处理器1501、内存1503以及经由总线或互连1510的装置1505-1508。处理器1501可代表其中包括单个处理器内核或多个处理器内核的单个处理器或多个处理器。处理器1501可代表一个或多个通用处理器,诸如,微处理器、中央处理单元(CPU)等。更具体地,处理器1501可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集组合的处理器。处理器1501也可以是一个或多个专用处理器,诸如,专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、加密处理器、协处理器、嵌入式处理器或能够处理指令的任何其它类型的逻辑。
处理器1501可以是低功率多核处理器插座(诸如,超低电压处理器),处理器1501可充当主处理单元和中心集线器,用于与系统的各个组件进行通信。这种处理器可被实施为片上系统(SoC)。处理器1501被配置为执行用于执行本文所论述的操作和步骤的指令。系统1500还可包括:与可选图形子系统1504通信的图形接口,可选图形子系统1504可包括:显示控制器、图形处理器和/或显示装置。
处理器1501可与内存1503进行通信,在一个实施方式中,内存1503可经由多个内存装置实施以提供给定量的系统内存。内存1503可包括:一个或多个易失性存储(或内存)装置,诸如随机存取内存(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它类型的存储装置。内存1503可存储包括由处理器1501或任何其它装置执行的指令序列的信息。例如,各种操作系统、装置驱动器、固件(例如,输入输出基本系统或BIOS)和/或应用的可执行代码和/或数据可被加载到内存1503中并由处理器1501执行。操作系统可以是任何类型的操作系统,例如,
的
操作系统、Apple的Mac
的
或其他实时或嵌入式操作系统,诸如,VxWorks。
系统1500还可包括诸如装置1505-1508的IO装置,包括:网络接口装置1505、可选的输入装置1506以及其它可选的IO装置1507。网络接口装置1505可包括:无线收发器和/或网络接口卡(NIC)。无线收发器可以是WiFi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(GPS)收发器)或其它射频(RF)收发器,或其组合。NIC可以是Ethernet卡。
输入装置1506可包括:鼠标、触摸板、触敏屏其可以与显示装置1504集成)、诸如触笔的指向装置,和/或键盘(例如,作为触敏屏的一部分显示的物理键盘或虚拟键盘)。例如,输入装置1506可包括:联接到触摸屏的触摸屏控制器。触摸屏和触摸屏控制器可以例如使用多种触敏技术中的任一种来检测其接触以及移动或断开,多种触敏技术包括但不限于:电容的、电阻的、红外的和表面声波技术,以及用于确定与触摸屏接触的一个或多个接触点的其它接近传感器阵列或其它元件。
IO装置1507可包括:音频装置。音频装置可包括:扬声器和/或麦克风,以促进语音启用功能,诸如,语音标识、语音复制、数字记录和/或电话功能。其它IO装置1507还可包括:通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如,PCI-PCI桥)、传感器(例如,诸如加速度计、陀螺仪、磁力计、光传感器、罗盘、接近传感器等的运动传感器),或其组合。装置1507还可包括:成像处理子系统(例如,摄像头),该子系统可包括:光学传感器(诸如,电荷耦合装置(CCD)或互补金属氧化物半导体(CMOS)光学传感器),用于促进相机功能(诸如,记录照片和视频剪辑)。某些传感器可经由传感器集线器(未示出)联接到互连1510,而其它设备(诸如,键盘或热传感器)可由嵌入式控制器(未示出)控制,这取决于系统1500的具体配置或设计。
为了提供诸如数据、应用、一个或多个操作系统等信息的永久存储,大容量存储器(未示出)也可联接到处理器1501。在各种实施方式中,为了能够实现更薄和更轻的系统设计以及提高系统响应性,可经由固态装置(SSD)来实现这种大容量存储。然而,在其它实施方式中,大容量存储器可主要使用硬盘驱动器(HDD)和少量的SSD存储器来实现,以充当SSD高速缓存,以在断电事件期间启用上下文状态和其它此类信息的非易失性存储,从而在系统活动重新启动时可发生快速上电。闪存装置也可以例如经由串行外围接口(SPI)联接到处理器1501。该闪存装置可提供系统软件的非易失性存储,包括:基本输入/输出软件(BIOS)以及系统的其它固件。
存储装置1508可包括:计算机可访问存储介质1509(也称为机器可读存储介质或计算机可读介质),其上存储了一组或多组指令或软件(例如,模块、单元和/或逻辑1528),实施了本文描述的任何一个或多个方法或功能。处理模块/单元/逻辑1528可代表上述任何组件,例如,图2的主机服务器104、图2的运行时间库205、图4的DP加速器405、图4的IO管理器401或IO接口415、图9和图14的HCM 901或ACM 915,以及图17的MM 1701、图20的安全单元1020和时间单元2003,如上所述。处理模块/单元/逻辑1528还可以在数据处理系统1500执行期间完全或至少部分地驻留在内存1503内和/或驻留在处理器1501内,内存1503和处理器1501还构成机器可访问存储介质。处理模块/单元/逻辑1528还可以经由网络接口装置1505通过网络传输或接收。
计算机可读存储介质1509还可用于永久地存储上述的一些软件功能。虽然在示例性实施方式中示出计算机可读存储介质1509是单个介质,但是术语“计算机可读存储介质”应当被认为包括:存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应被认为包括:能够存储或编码由机器执行的指令集并且使机器执行本发明的任何一个或多个方法的任何介质。因此,术语“计算机可读存储介质”应被认为包括但不限于:固态内存、光和磁介质,或任何其它非暂时性机器可读介质。
本文描述的处理模块/单元/逻辑1528、组件和其它特征可被实施为分立的硬件组件或者集成在硬件组件(诸如,ASICS、FPGA、DSP或类似装置)的功能中。此外,处理模块/单元/逻辑1528可被实施为硬件装置内的固件或功能电路。此外,处理模块/单元/逻辑1528可在硬件装置和软件组件的任意组合中实施。
注意,虽然使用数据处理系统的各种组件示出了系统1500,但系统1500并不旨在代表互连组件的任何特定架构或方式;因为这些细节与本发明的实施方式没有密切关系。还将理解,网络计算机、手持计算机、移动电话、服务器和/或具有较少组件或可能更多组件的其它数据处理系统也可与本发明的实施方式一起使用。
前面详细描述的一些部分已经根据对计算机内存内的数据位的操作的算法和符号表示来呈现。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其他技术人员的方式。这里,算法通常被构想成是导致期望结果的自洽操作序列。这些操作是那些需要对物理量进行物理操纵的操作。
然而,应该记住,所有这些术语和类似的术语将与适当的物理量相关联,并且仅仅是适于这些量的方便的标记。除非从上面的讨论中明确地另有说明,应当理解,在整个说明书中,利用诸如下面的权利要求书中所述的术语的讨论是指计算机系统或类似的电子计算装置的动作和过程,所述计算机系统或类似的电子计算装置操纵并将表示为计算机系统的寄存器和内存中的物理(电子)量的数据转换为类似地表示为计算机系统内存或寄存器或其它这样的信息存储、传输或显示装置内的物理量的其它数据。
图中所示的技术可使用在一个或多个电子装置上存储和执行的代码和数据来实施。这种电子装置使用计算机可读介质,诸如,非暂时性计算机可读存储介质(例如,磁盘、光盘、随机存取内存、只读内存、闪存装置、相变内存)和暂时性计算机可读传输介质(例如,电、光、声或其它形式的传播信号-例如,载波、红外信号、数字信号)。
在前面的图中描绘的过程或方法可以由包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,体现在非暂时性计算机可读介质上)或两者的组合的处理逻辑来执行。尽管上面根据一些顺序操作描述了过程或方法,但是应当理解,所描述的一些操作可以以不同的顺序执行。此外,一些操作可以并行地执行,而不是顺序地执行。
在前面的说明书中,已经参考本发明的特定示例性实施方式描述了本发明的实施方式。显然,可以对其进行各种修改,而不脱离如所附权利要求书中所阐述的本发明的更宽的精神和范围。因此,说明书和附图被认为是说明性的,而不是限制性的。