HASH GAME - Online Skill Game GET 300
在第一方面,本公开提供了用于在主机系统与数据处理加速器之间进行证明的计算机实施的方法,该方法包括:在所述主机系统处通过总线从数据处理(dp)加速器接收公共证明密钥(pk_att)或签署的pk_att;使用与所述dp加速器相关联的公共根密钥(pk_rk)确认所述pk_att;响应于成功确认所述pk_att,将内核标识符(id)传输到所述dp加速器,以请求证明存储在所述dp加速器中的内核对象;响应于从所述dp加速器接收与所述内核对象对应的内核摘要或签署的内核摘要,使用所述pk_att确认内核摘要;以及将确认结果发送给所述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加速器中执行的所述内核对象之前确认并证明所述内核对象。
根据本发明的第一方面,数据处理系统使用主机系统的安全模块(例如,可信平台模块(tpm))来执行安全引导。系统确认操作系统(os)和包括与数据处理(dp)加速器相关联的加速器驱动器的一个或多个驱动器由可信源提供。系统启动os内的加速器驱动器。该系统建立与主机系统的一个或多个处理器相关联的可信执行环境(tee)。该系统启动tee内的应用和运行时间库,其中应用经由运行时间库和加速器驱动器与dp加速器进行通信。
根据第二方面,系统通过总线在主机系统和数据处理(dp)加速器之间建立安全连接(具有一个或多个安全通道),该安全连接包括:一个或多个命令信道和/或数据信道。在一个实施方式中,一个或多个命令信道可能是不安全的。该系统通过命令信道将第一指令从主机系统传输到dp加速器,该第一指令请求dp加速器执行数据准备操作。该系统响应于第一指令通过数据信道从dp加速器接收用于从主机系统的第一内存位置读取第一数据的第一请求。响应于该请求,系统通过数据信道将从主机系统的第一内存位置检索到的第一数据传输到dp加速器,其中第一数据被用来计算或配置操作。系统通过命令信道将第二指令从主机系统传输到dp加速器,第二指令请求dp加速器执行计算或配置操作。
在一个实施方式中,系统通过总线在主机系统和数据处理(dp)加速器之间建立安全连接,该安全连接包括:一个或多个命令信道和/或数据信道。命令信道可能是不安全的。在dp加速器处,系统通过命令信道从主机系统接收第一指令,第一指令请求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包括:联接到时钟发生器以基于时钟信号产生时间戳的时间戳发生器,以及向时钟发生器和时间戳发生器供电的电源。
根据第七方面,dp加速器包括:一个或多个执行单元(eu),配置为响应于从通过总线联接的主机系统接收指令来执行数据处理操作。dp加速器包括:联接到安全单元以提供时间戳服务的时间单元(tu)。dp加速器包括:安全单元(su),配置为建立并维护与主机系统的安全信道,以交换与数据处理操作相关联的命令和数据,其中安全单元包括:安全存储区域,以存储与dp加速器相关联的私有根密钥,其中私有根密钥被用于认证。su包括:随机数生成器,用于生成随机数;以及加密引擎,用于使用基于随机数导出的会话密钥对通过总线与主机系统交换的数据执行加密操作。
在另一个实施方式中,在基于随机数生成会话密钥时,安全单元将生成具有临时私钥和临时公钥的临时密钥对,将临时公钥和已签名的临时公钥传输到主机,其中已签名的临时公钥由私有根密钥进行签署,以允许主机系统认证dp加速器,从主机系统接收第一随机数,以及基于在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)和/或命令行接口
例如,客户端(在本示例中,即,客户端装置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芯片可用作安全引导的信任根。
在一个实施方式中,主机机器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提供一组预定的(例如,预定义的)内核,以供用户应用执行。
在安装之后,系统然后可通过基于tpm的安全引导来启动。tpm安全引导确保了在提供加速器服务的内核空间中仅启动签名的/认证的操作系统和加速器驱动器。在一个实施方式中,可通过超管理器加载操作系统。注意,超管理器或虚拟机管理器是创建和运行虚拟机的计算机软件、固件或硬件。注意,内核空间是标识内核(即,用于执行的一组预定的(例如,预定义的)函数)以向用户应用提供功能和服务的描述性区域或范围。在系统的完整性受到损害的情况下,tpm安全引导可能无法引导,并且取而代之的是关闭系统。
在安全引导之后,运行时间库205运行并创建tee 201,tee 201将运行时间库205放置于与cpu 213相关联的可信内存空间中。接下来,在tee 201中启动用户应用203。在一个实施方式中,用户应用203和运行时间库205被静态链接并一起启动。在另一个实施方式中,首先在tee中启动运行时间205,然后在tee 201中动态加载用户应用205。在另一个实施方式中,首先在tee中启动用户应用205,然后在tee 201中动态加载运行时间205。注意,静态链接的库是在编译时链接到应用的库。动态加载可通过动态链接器执行。动态链接器加载并链接共享库,用于在运行时运行用户应用。这里,tee 201内的用户应用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加速器仅访问主机系统的有限内存范围。
图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
例如,在一个实施方式中,不允许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中释放内存块。
例如,主机服务器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是否具有对所请求的内存区域的写入访问许可。
图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加速器执行计算或配置操作。
参照图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相关联的密钥对。第一公钥/私钥对可以被存储在密钥存储器1007中,并且第一公钥被发送到dp加速器405(或acm 915)(例如,操作1201)。acm 915然后生成用于会话的唯一会话密钥(例如,第二会线),其中会话密钥可用于对传递到主机服务器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(例如,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终止会线破坏与会线的一部分)相关联的会话密钥(例如,第一会话密钥),并向dp加速器405的acm 915发送终止通知(例如,操作1216),以请求密钥管理器1025破坏与会话相关联的对称会话密钥(例如,第二会话密钥)。尽管示出hcm 901仅与acm 915通信,但是,hcm 901可与对应于多个dc加速器的多个acm进行通信,以同时建立多个数据交换连接。
图13a和图13b是示出根据一些实施方式的示例性方法的流程图。过程1300和1320可由包括软件、硬件或其组合的处理逻辑来执行。例如,过程1300可以由图9的主机系统(例如,hcm 901)执行,并且过程1320可以由图9的dp加速器(例如,acm 915)执行。参照图13a,在框1301处,处理逻辑在主机系统的主机信道管理器(hcm)处接收来自应用的使用数据处理(dp)加速器建立安全信道的请求,其中dp加速器通过总线处,响应于该请求,处理逻辑基于与hcm相关联的第一密钥对的第一私钥和与dp加速器相关联的第二密钥对的第二公钥来生成用于安全信道的第一会线处,响应于与将要发送到dp加速器的应用相关联的第一数据,处理逻辑使用第一会话密钥对第一数据进行加密。在框1304处,处理逻辑通过总线经由安全信道将加密的第一数据传输到dp加速器。
在一个实施方式中,响应于该请求,处理逻辑还将与hcm相关联的第一密钥对的第一公钥传输到dp加速器。然后,响应于传输第一公钥,处理逻辑从dp加速器的加速器信道管理器(acm)接收与dp加速器相关联的第二密钥对的第二公钥。在另一个实施方式中,acm配置为导出第二会话密钥,并且基于第二密钥对的第一公钥和第二私钥对第二会话密钥进行加密,之后将加密的第二会话密钥发送到hcm,其中第一会话密钥和第二会话密钥是相同的对称密钥。在另一个实施方式中,acm配置为使用第二会话密钥对加密的第一数据进行解密以恢复第一数据。
在一个实施方式中,处理逻辑还从dp加速器的acm接收加密的第二数据,其中,使用第二会话密钥对第二数据进行加密。然后,处理逻辑使用第一会话密钥对加密的第二数据进行解密,以恢复第二数据。在一个实施方式中,响应于该请求,处理逻辑还检查应用的应用标识符(id),以确定该应用是否有权访问dp加速器,其中只有当该应用有权访问dp加速器时才生成第一会话密钥。在一个实施方式中,处理逻辑还从应用接收终止安全信道的请求。响应于该请求,处理逻辑向acm传输指令,指示acm通过销毁第二会话密钥来终止安全连接。然后,处理逻辑通过hcm来销毁第一会线b,在一个实施方式中,在框1321处,处理逻辑在数据处理(dp)加速器的加速器信道管理器(acm)处接收来自主机系统的主机信道管理器(hcm)的应用的请求,以在主机系统和dp加速器之间建立安全信道,其中dp加速器通过总线处,响应于该请求,处理逻辑生成用于安全信道的第二会话密钥,并且将加密的第二会
在另一个实施方式中,处理逻辑还从主机系统的hcm接收加密的第二数据,其中使用第一会话密钥对第二数据进行加密。然后,处理逻辑使用第二会话密钥对加密的第二数据进行解密以恢复第二数据,其中第一会话密钥和第二会话密钥是相同的对称密钥。在一个实施方式中,处理逻辑还从主机系统的hcm接收终止安全信道的请求,并且响应于该请求,处理逻辑通过acm破坏第一会线是示出根据一个实施方式的用于在主机信道管理器(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公钥”以发起导出会线处,在接收到请求命令时,acm 915生成用于导出会话密钥的临时(或导出的)公钥/私钥对(例如,pk_d和sk_d)。acm 915使用与dp加速器相关联的私有根密钥(例如,sk_rk)对临时公钥pk_d进行加密。在操作1553处,加密的临时公钥的副本和临时公钥的副本由acm 915发送到hcm 901。在操作1554处,hcm 901接收副本并使用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的多个公钥。
在操作1559处,acm 915用临时私钥(例如,sk_d)和与hcm相关联的公钥(例如,pk_o)对随机数nc和ns进行双重加密。acm 915然后将双重加密的随机数nc和ns发送到hcm 901。在操作1560处,hcm 901基于hcm关联私钥(例如,sk_o)和临时公钥(例如,pk_d)对双重加密的随机数nc和ns进行解密。在操作1561处,hcm 901通过确认随机数nc实际上与hcm 901最初生成的随机数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加速器通过总线处,处理逻辑将创建会话密钥的请求从主机系统传输到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加速器通过总线处,处理逻辑使用与dp加速器相关联的加速器私有根密钥来对临时公钥进行加密。在框1623处,处理逻辑将未加密形式的临时公钥和加密的临时公钥传输到主机系统,以允许主机系统确认临时公钥。在框1624处,处理逻辑从主机系统接收第一随机数,其中在已经确认临时公钥之后由主机系统生成第一随机数。在框1625处,处理逻辑基于第一随机数和第二随机数生成会话密钥,其中第二随机数已经在dp加速器处本地生成。
在一个实施方式中,处理逻辑还使用临时私钥对第一随机数和第二随机数进行加密,以生成加密的第一随机数和第二随机数。然后,处理逻辑将加密的第一随机数和第二随机数传输到主机系统,以使主机系统能够创建相应的主机会话密钥。在另一个实施方式中,处理逻辑还在传输加密的第一随机数和第二随机数之前,使用与主机系统相关联的主机公钥来对加密的第一随机数和第二随机数进行加密。在另一个实施方式中,主机系统配置为使用与主机系统相关联的主机私钥和临时公钥来对加密的第一随机数和第二随机数进行解密,以恢复第一随机数和第二随机数。在另一个实施方式中,主机系统配置为确认第一随机数的新鲜度,其中只有在预定时间段内生成第一随机数时才生成主机会线]
dp加速器的内存缓冲器可包含运行dp加速器所需的程序,向程序输入数据,以及从程序输出结果。dp加速器的不安全的内存缓冲器可导致在整个主机服务器-dp加速器系统体系结构中的折衷。如上所述,通过不允许主机服务器访问这些pd加速器,可以保护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分配指定大小的内存块以执行应用。
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并确认内存位置是否被分配给该应用。如果是,则允许应用访问内存位置。否则,拒绝应用对内存位置的访问。注意,一旦分配了内存块,随后就不能分配内存块,直到其空闲为止。
在一个实施方式中,当用户应用的执行完成时或当客户端发出完成命令时,用户应用可以向dp加速器405发送用于与用户应用相关联的内存块的内存释放命令。在另一个实施方式中,注册表的副本也被发送到dp加速器405。在一个实施方式中,在发送内存释放命令之前,mm 1701基于存储在内存使用数据结构中的内存使用信息来确定内存块是否已被分配给应用。如果是,则发送释放命令。否则,不发送释放命令(例如,可以拒绝释放请求)。
图19是示出根据一个实施方式的方法的示例的流程图。过程1900可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程1900可由主机系统执行,诸如,图17的主机104。参照图19,在框1901处,处理逻辑使用诸如主机系统的可信平台模块(tpm)的安全模块来执行安全引导。在框1902处,处理逻辑建立与主机系统的一个或多个处理器相关联的可信执行环境(tee)。在框1903处,处理逻辑启动tee内的内存管理器,其中内存管理器配置为管理通过总线联接到主机系统的数据处理(dp)加速器的内存资源,包括维护dp加速器的全局内存的内存使用信息。在框1904处,响应于从在tee内运行的应用接收到用于访问dp加速器的内存位置的请求,处理逻辑基于内存使用信息来允许或拒绝该请求。
在一个实施方式中,内存管理器被实现为与dp加速器相关联的运行时间库的一部分,其在主机系统的tee内执行。在一个实施方式中,维护dp加速器的全局内存的内存使用信息包括:维护内存使用数据结构以记录dp加速器的全局内存的内存块的内存分配。在另一个实施方式中,内存使用数据结构包括多个条目,每个条目记录已经分配的dp加速器的全局内存的内存块。在另一实施方式中,每个条目存储相应内存块的起始内存地址、相应内存块的大小以及指示相应内存块是否已被分配的标志。
图20是示出根据一个实施方式的通信地联接到dp加速器的主机的示例的框图。系统2000可代表图9的系统900,除了系统2000可以为dp加速器405-407提供信任服务和时间戳生成服务的根。参照图20,在一个实施方式中,dp加速器405包括:安全单元1020和时间单元2003。安全单元1020可使用多个加密方案向dp加速器的其它模块/单元提供信任服务的根,而时间单元2003可产生用于认证加密密钥的时间戳以支持不同的加密方案。注意,时间单元2003可以是独立单元或者可以与安全单元1020集成在一起。
时钟发生器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可以使用时间戳来对密钥认证、密钥生成和/或密钥过期进行时间戳。例如,如果基于与生成会话密钥的时间相关联的时间戳,确定会话密钥过期,则可终止与会话密钥相关联的信道会话。随后,如果会话密钥配置为自动更新或者通过用户应用获得更新授权,则可生成新的会线是示出根据一个实施方式的安全单元的示例的框图。安全单元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加速器操作的数学函数或计算函数。内核可以是由用户应用调用的数学函数。对于一些实施方式,可将内核从主机服务器或其它服务器上载到dp加速器,以由dp加速器执行。示例性内核可以是矩阵乘法内核,其支持将由dp加速器执行的矩阵乘法运算。注意,可以有数百个内核,每个内核专用于支持将由dp加速器执行的不同的数学函数或计算函数。跟踪内核的源、哪些内核被上载到dp加速器以及哪些内核被修改可能是具有挑战性的。因此,需要内核验证(或确认)以及内核证明协议或方案来确保内核的线是示出根据一个实施方式的通信地联接到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的每个内核对象包括:内核的可执行映像和相应的签名。此外,内核的可执行映像可被加密。注意,签名是使用对应于内核对象的公有/私有内核密钥对的私钥签名的内核的哈希运算。可使用与用于对内核进行签名的私钥相对应的公钥来确认签名。例如,可以从内核对象的内核证书获得公钥)。在一些实施方式中,当内核开发者最初生成内核时,内核对象被签名(使用内核开发者的私钥)。然后,经签名的内核可包括:用于确认(或验证)的相应内核证书(例如,公钥),以确保内核是线是示出根据一个实施方式的示例性内核对象确认协议的流程图。内核对象确认是指在将内核对象2307引入主机服务器104的tee 201和/或dp加速器405之前确认内核对象2307是否是线执行。在一个实施方式中,在确认之前,用户应用203(或运行时间库205)从可信认证机构或可信签名者的证书获得公钥(例如,pk_i、pk_j、
在操作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然后生成内核的哈希值,并比较以确定预期的哈希值与生成的哈希值的差异。如果没有差异,则签名是有效的。如果签名有效,则内核的完整性被确认,并且内核对象被认为是真实的并由可信开发者提供。在另一个实施方式中,确认内核包括:如果内核被加密,则将公钥应用到内核的加密的可执行映像以解密和获得内核。
图25是示出根据一个实施方式的方法的示例的流程图。过程2500可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程2500可由主机系统(诸如图23的主机104)执行。参照图25,在框2501处,处理逻辑在主机系统的可信执行环境(tee)内执行的运行时间库处接收来自应用的请求,以调用预定函数来执行预定操作。在框2502处,响应于该请求,处理逻辑标识与预定函数相关联的内核对象。在框2503处,处理逻辑使用与用于对内核对象的可执行映像进行签名的私钥相对应的公钥来确认内核对象的可执行映像。在框2504处,响应于成功确认内核对象的可执行映像,处理逻辑通过总线将内核对象的已确认的可执行映像传输到数据处理(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的证明模块261与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以进行证明。换句话说,可在预定的时间段(例如,一周)使用相同的证明密钥,并且证明密钥与任何被证明的内核都不相关,例如,证明密钥可被用于许多内核。
在操作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通过网络从可信服务器接收。
参照图28b,在框2821中,响应于从主机系统接收证明请求,处理逻辑在数据处理(dp)加速器处生成具有公有证明密钥(pk_att)和私有证明密钥(sk_att)的证明密钥对。在框2822处,处理逻辑将pk_att或经签名的pk_att从dp加速器传输到主机系统,其中dp加速器通过总线处,处理逻辑从主机系统接收标识内核对象的内核标识符(id),其中响应于成功确认pk_att而接收内核id。在框2824处,响应于内核id,处理逻辑通过对内核对象的可执行映像进行哈希运算生成内核摘要。在框2825处,处理逻辑将内核摘要或经签名的内核摘要传输到主机系统,以允许主机系统在访问将在dp加速器内执行的内核对象之前确认并证明内核对象。
在一个实施方式中,处理逻辑还使用sk_att对内核摘要进行签名,并将签名的内核摘要发送到主机系统,以允许主机系统确认内核摘要是由dp加速器发送的。在另一个实施方式中,主机系统配置为使用pk_att对签名的内核摘要进行解密,并通过将从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加速器的信息(例如,加速器id 2909和/或版本号2911)。
参照图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。
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加速器之间的通信会话相关联的会线是示出根据一个实施方式的方法的示例的流程图。过程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加速器之间安全地交换数据的。
还要注意,系统1500旨在示出计算机系统的许多组件的高级视图。然而,应当理解,在某些实施中可存在附加组件,并且此外,所示组件的不同排列可出现在其它实施中。系统1500可代表桌面、膝上型计算机、平板电脑、服务器、移动电话、媒体播放器、个人数字助理(pda)、smartwatch、个人通信器、游戏装置、网络路由器或集线器、无线接入点(ap)或中继器、机顶盒或其组合。此外,虽然仅示出了单个机器或系统,但是术语“机器”或“系统”也应被理解为包括单独地或共同地执行一组(或多组)指令以执行本文所讨论的任何一个或多个方法的机器或系统的任何集合。
在一个实施方式中,系统1500包括:处理器1501、内存1503以及经由总线可代表其中包括单个处理器内核或多个处理器内核的单个处理器或多个处理器。处理器1501可代表一个或多个通用处理器,诸如,微处理器、中央处理单元(cpu)等。更具体地,处理器1501可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器,或实施其它指令集的处理器,或实施指令集组合的处理器。处理器1501也可以是一个或多个专用处理器,诸如,专用集成电路(asic)、蜂窝或基带处理器、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器、图形处理器、网络处理器、通信处理器、加密处理器、协处理器、嵌入式处理器或能够处理指令的任何其它类型的逻辑。
处理器1501可与内存1503进行通信,在一个实施方式中,内存1503可经由多个内存装置实施以提供给定量的系统内存。内存1503可包括:一个或多个易失性存储(或内存)装置,诸如随机存取内存(ram)、动态ram(dram)、同步dram(sdram)、静态ram(sram)或其它类型的存储装置。内存1503可存储包括由处理器1501或任何其它装置执行的指令序列的信息。例如,各种操作系统、装置驱动器、固件(例如,输入输出基本系统或bios)和/或应用的可执行代码和/或数据可被加载到内存1503中并由处理器1501执行。操作系统可以是任何类型的操作系统,例如,的操作系统、apple的mac操作系统、apple的mac的或其他实时或嵌入式操作系统,诸如,vxworks。
然而,应该记住,所有这些术语和类似的术语将与适当的物理量相关联,并且仅仅是适于这些量的方便的标记。除非从上面的讨论中明确地另有说明,应当理解,在整个说明书中,利用诸如下面的权利要求书中所述的术语的讨论是指计算机系统或类似的电子计算装置的动作和过程,所述计算机系统或类似的电子计算装置操纵并将表示为计算机系统的寄存器和内存中的物理(电子)量的数据转换为类似地表示为计算机系统内存或寄存器或其它这样的信息存储、传输或显示装置内的物理量的其它数据。