CN110178136A - 现场可编程门阵列程序的签名验证 - Google Patents

现场可编程门阵列程序的签名验证 Download PDF

Info

Publication number
CN110178136A
CN110178136A CN201780083317.8A CN201780083317A CN110178136A CN 110178136 A CN110178136 A CN 110178136A CN 201780083317 A CN201780083317 A CN 201780083317A CN 110178136 A CN110178136 A CN 110178136A
Authority
CN
China
Prior art keywords
fpga
program
equipment
host
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780083317.8A
Other languages
English (en)
Other versions
CN110178136B (zh
Inventor
H·M·霍佩特
C·L·胡布雷茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110178136A publication Critical patent/CN110178136A/zh
Application granted granted Critical
Publication of CN110178136B publication Critical patent/CN110178136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

在本公开中描述了用于现场可编程门阵列(FPGA)程序的签名验证的技术。在一个或多个实现中,主机设备的FPGA虚拟化管理器从虚拟机接收针对FPGA程序用以对主机的FPGA编程的请求。FPGA程序被配置为将FPGA编程为提供相应程序(例如,机器学习算法)的硬件实现的功能或相应设备(例如,图形处理单元)的功能。然而,在允许FPGA程序对FPGA编程之前,FPGA虚拟化管理器确定FPGA程序是否被信任以进行这一操作。为此,FPGA虚拟化管理器验证与FPGA程序相关联的数字签名。当签名通过验证时,确定FPGA程序被信任。基于这样的确定,FPGA虚拟化管理器加载FPGA程序以将FPGA编程为提供该功能。

Description

现场可编程门阵列程序的签名验证
背景技术
通常,虚拟化技术通过将物理资源抽象为虚拟化资源而切断物理计算设备与操作系统之间的一对一链接。虚拟化允许多个操作系统实例或应用实例同时存在于同一物理机器上并且彼此隔离。虚拟化还使得多个操作系统实例能够共享物理设备的资源,以便共享存储设备、处理设备(例如,图形处理单元(GPU))和网络设备。这些进步致使众多计算资源的集中化,使得各种计算任务能够“通过云”执行。
作为示例,可以向与企业相关联的个人给予账户,这些账户允许他们访问企业配置的桌面界面——该桌面界面可以被配置为提供由企业选择的生产性工具、由企业托管的存储装置等。与给定个人相关联的桌面界面也可以经由多个不同的计算设备访问,所述多个不同的计算机设备例如是工作中的桌面设备、家中的膝上型设备、旅行时的平板设备等。虽然从这些多个不同的计算设备可访问,但是由桌面界面提供的功能可以主要使用企业服务器的处理和存储资源来提供,而不是通过直接与个人交互的计算设备的资源。此外,虚拟化技术使得能够进一步利用上述这些服务器的处理和存储资源来同时向企业的多个个人提供个人桌面界面。在虚拟化技术中持续取得进展,诸如提高使用虚拟机完成计算任务的速度,或者通过采用虚拟机来降低实现系统的成本。尽管如此,用于实现虚拟化的一些传统技术很昂贵,易受安全漏洞攻击,允许主机设备访问被托管虚拟机的信息,或者与特定主机设备硬件配置相关联。因此,对于很多应用,可能无法利用虚拟化。
发明内容
本“发明内容”以简化的形式介绍了一些概念,这些概念将在下面的“具体实施方式”中进一步描述。这样,本“发明内容”并非旨在标识所要求保护的主题的必要特征,也并非旨在用于帮助理解所要求保护的主题的范围。
在本公开中描述了用于现场可编程门阵列(FPGA)程序的签名验证的技术。在一个或多个实现中,主机设备的FPGA虚拟化管理器从虚拟机接收针对FPGA程序用以对主机的FPGA编程的请求。FPGA程序被配置为将FPGA编程为提供相应程序(例如,机器学习算法)的硬件实现的功能或相应设备(例如,图形处理单元)的功能。然而,在允许加载FPGA程序以对FPGA编程之前,FPGA虚拟化管理器确定FPGA程序是否受信任以进行这一操作。为此,FPGA虚拟化管理器验证与FPGA程序相关联的数字签名。当签名被验证时,确定FPGA程序受信任。基于这样的确定,FPGA虚拟化管理器加载FPGA程序以将FPGA编程为提供程序的硬件实现的功能或设备的功能。
附图说明
参考附图来描述具体实施方式。在附图中,附图标记的最左边的数字标识附图标记首次出现的图。在说明书和附图中的不同实例中使用相同的附图标记可以指示相似或相同的项目。附图中表示的实体可以指示一个或多个实体,并且因此可以在讨论中将单数或复数形式的实体可互换地引用。
图1是可操作以采用在本公开中描述的技术的示例实现中的环境的图示。
图2是描绘根据一个或多个实现的示例场景的图,其中主机的现场可编程门阵列(FPGA)被配置为向虚拟机提供所请求的功能。
图3A和3B是描绘根据一个或多个实现的将FPGA编程为提供所请求的功能的请求的不同示例配置的图。
图4是描绘根据一个或多个实现的验证FPGA程序的签名的实例过程的流程图。
图5是描绘根据一个或多个实现的示例过程的流程图,该实例过程利用由使用具有经过验证的签名的FPGA程序被编程的FPGA所提供的功能。
图6示出了包括可以用于在本公开中描述的技术的一个或多个实现的示例设备的各种组件的示例系统。
具体实施方式
概述
在虚拟化技术持续取得进展,例如,提高使用虚拟机完成计算任务的速度,通过采用虚拟机来降低实现系统的成本,以及将功能与特定主机硬件配置分离。尽管如此,用于实现虚拟化的一些传统技术可能不允许更广泛的采用。通常,虚拟化可以由提供主机操作系统的主机设备实现。在主机操作系统下,可以实例化多个客户操作系统。这些客户操作系统可以称为“虚拟机”,以模拟计算设备并且提供物理计算机的功能。
结合提供这样的功能,虚拟机通常利用相应主机设备的物理设备。根据传统技术配置的主机设备可以包括各种不同的物理设备以为虚拟机提供各种期望功能。这种物理设备的示例包括存储设备、处理设备(图形处理单元(GPU))和网络设备。然而,传统技术可能限于提供相应主机设备配置有的物理设备的功能。现场可编程门阵列(FPGA)可以用于扩展主机设备的功能,而不必将它们配置为包括特定物理设备以提供相应功能。相反,FPGA可以可编程为提供多个不同物理设备的功能。此外,FPGA可以编程为在硬件级别而不是使用中央处理单元(CPU)运行算法——从而提高了算法的速度、效率等。然而,由于它们的灵活性,FPGA可能会被轻易地编程为使主机设备崩溃和/或使主机暴露于安全漏洞。此外,FPGA程序可能会恶意或偶然地导致这样的漏洞。无论如何,允许虚拟机将FPGA编程为具有这样的漏洞是不期望的。
因此,描述了FPGA程序的签名验证。在一个或多个实现中,虚拟机从主机设备请求可以由主机的FPGA提供的某个功能。作为示例,虚拟机可以请求主机在FPGA上加载并且运行特定程序,诸如用于机器学习、加密、压缩或冗余的程序。虚拟机还可以请求主机加载FPGA程序,该FPGA程序将FPGA配置为特定物理设备,诸如GPU。然而,在加载FPGA程序之前,所描述的技术确定FPGA程序是否受信任。如果确定FPGA程序受信任,则在FPGA上加载并且运行FPGA程序。然而,如果确定FPGA程序不受信任,则所描述的技术禁止将程序加载到FPGA并运行程序。
该信任确定指示主机设备信任FPGA程序不会将FPGA暴露于上述漏洞。作为示例,确定FPGA程序受信任指示主机设备信任FPGA程序不会使主机崩溃。从广义上讲,主机设备信任由相应主机提供商以及受信任FPGA程序提供商开发的FPGA程序,诸如以开发受信任程序而闻名和/或被激励以提供受信任程序的提供商。例如,主机设备提供商可以指定受信任的FPGA程序列表和/或FPGA程序提供商列表。此外,这样的列表可以由主机维护以进行信任确定。
在任何情况下,在本公开中描述的技术使用数字签名来验证虚拟机请求的FPGA程序对应于主机明确信任的程序或主机信任的FPGA程序提供商。此外,数字签名用于验证程序未被修改为例如,恶意地或以其他方式暴露主机处的漏洞。考虑一个示例,其中虚拟机请求由主机设备保持在存储器中或由主机设备可访问的FPGA程序。通常,由主机设备保持或保持在受信任存储位置的FPGA程序被认为是受信任的。因此,在该示例中,虚拟机可以简单地在请求中提供FPGA程序的唯一标识符。然后,主机可以使用标识符从受信任存储器获取FPGA程序,并且将FPGA程序加载到主机的FPGA。在这种情况下,唯一标识符就足以作为数字签名,因为FPGA程序保持在主机上——表明可以信任以将FPGA程序加载到主机的FPGA并且在其上运行。
然而,在一些场景中,所请求的FPGA程序可能不被保持在主机的存储器中或由主机可访问。相反,FPGA程序可以被包括以作为请求的一部分。在这种情况下,可以从FPGA程序的提供商向主机设备提供用于FPGA程序的密钥——该密钥可以是唯一的,并且仅对FPGA程序的提供商和主机是已知的。使用该密钥,FPGA程序提供商可以加密FPGA程序。加密数据用作数字签名——使用密钥成功解密加密数据表明FPGA程序自离开FPGA程序提供商之后未被修改并且受信任,而未成功解密表明加密数据可能已被修改并且将不受信任。当主机从虚拟机接收到带有FPGA程序的请求时,主机尝试使用密钥解密FPGA程序。如果解密成功,则主机确定FPGA程序受信任,并且将程序加载到FPGA以运行。如果解密不成功,则主机确定FPGA程序不受信任,并且禁止将FPGA程序加载到FPGA。在加载程序之后,主机将功能暴露给请求虚拟机,例如,作为虚拟设备。
利用在本公开中描述的技术,不仅可以简化主机设备配置,而且可以改进提供给虚拟机的功能。所描述的技术不是向主机设备配置各种不同物理设备以提供相应功能,而是允许向主机设备配置FPGA以提供各种不同物理设备的功能。此外,允许虚拟机利用FPGA在硬件级别运行算法可以在速度和效率方面提高这些算法的性能。这可以为采用FPGA虚拟化的系统带来很多效率,诸如降低成本,因为可能需要更少的硬件来支持相同数目的虚拟机,减少设备占用空间,降低功耗,以及提高虚拟机为客户端提供功能的速度。
在以下讨论中,首先描述可以采用在本公开中描述的技术的示例环境。然后描述示例过程和实现细节,其可以在示例环境以及其他环境中执行。因此,示例过程和细节的执行不限于示例环境,并且示例环境不限于示例过程和细节的执行。
示例环境
图1总体上以100示出了根据一个或多个实施例的操作环境。环境100包括客户端设备102,客户端设备102可以实现为任何合适的设备,诸如台式计算机、智能电话、平板计算机、便携式计算机(例如,膝上型计算机)、台式计算机、机顶盒、游戏控制台或可穿戴设备。计算设备的范围可以从具有大量存储器和处理器资源的完整资源设备(例如,个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏机)。另外,尽管在某些情况下示出了单个计算设备,但是计算设备可以表示多个不同设备,诸如由企业用于执行操作,提供数据中心等等的服务提供商的多个服务器。适合于实现在本公开中描述的技术的计算系统和设备的其他示例在下面结合图6描述。
环境100还包括主机设备104和其他主机设备106。主机设备104和其他主机设备106可以由一个或多个计算设备实现,诸如数据中心的一个或多个服务器,并且还可以表示一个或多个实体。根据一个或多个实现,主机设备104和其他主机设备106可以表示服务提供商通过网络108向客户端设备102提供一个或多个服务的功能。通常,服务提供商可以提供可用于网络108的客户端(其在某些情况下可以包括主机)各种资源(例如,内容和服务)。通常,服务提供商可访问的资源可以包括通常由一个或多个提供商通过网络提供的服务和/或内容的任何合适组合。服务的一些示例包括虚拟网络服务(例如,云计算)、流内容服务、数据存储服务、搜索服务、电子邮件服务、即时消息服务、在线生产性套件、和用于控制客户端对资源的访问的认证服务。内容可以包括文本、多媒体流、文档、应用文件、照片、音频/视频文件、动画、图像、网页、网络应用、设备应用、用于由浏览器或其他客户端应用显示的内容等的各种组合。
虽然网络108被示出为因特网,但是网络可以采用各种各样的配置。例如,网络108可以包括广域网(WAN)、局域网(LAN)、无线网络、公共电话网络和/或内联网。此外,尽管示出了单个网络108,但是网络108可以被配置为包括多个网络。
主机设备104和其他主机设备106每个被示出为包括虚拟机110。虚拟机110可以被实现为提供上述服务的一部分。另外,虚拟机110可以由主机设备104和其他主机设备106的虚拟机管理器(未示出)来实现。通常,虚拟机管理器可能能够管理虚拟机110的创建(在本公开中称为“实例化”)、操作和终止。在至少一些实现中,虚拟机管理器被配置为在相应主机设备上运行的管理程序的实例。此外,虚拟机110表示由相应主机设备托管的虚拟机的实例。
为了实现客户端设备102与虚拟机110之间的交互,客户端设备102包括虚拟机接口112(VM接口112)。根据各种实现,VM接口112表示用于将一个或多个虚拟机110暴露给客户端设备102的功能。作为示例,VM接口112生成图形用户界面(GUI),用户可以经由该GUI与至少一个虚拟机110交互,以便向虚拟机提供输入以及消耗来自虚拟机的输出。
客户端设备102还被描绘为具有主机接口114,主机接口114表示用于使得客户端设备102能够与虚拟机110外部的主机设备104和/或其他主机设备106接口的功能。例如,主机接口114支持用于请求虚拟机管理器为客户端设备102实例化虚拟机110之一的功能。主机接口114还可以向客户端设备102提供其他功能,诸如使得能够确定和/或操纵不同虚拟机的状态。例如,主机接口114可以提供指示允许客户端设备102可见的不同虚拟机的状态的虚拟机接口。尽管所示环境100包括客户端设备102,但是在一些实现中,所描述的技术可以用于不涉及客户端设备的应用。相反,主机设备104的虚拟机110可以经由命令队列彼此交互(或与另一主机设备106的虚拟机交互)。这种交互可以涉及将数据推送和/或拉到由虚拟机110之一本地运行的服务。
在某种程度上,经由虚拟机110提供的功能和/或服务至少部分使用主机设备104和其他主机设备106的实际物理设备来提供。尽管设备116可以包括各种不同的物理设备以提供一系列功能,但是设备116还包括现场可编程门阵列118(FPGA 118)。根据一个或多个实现,FPGA 118动态可编程为在硬件级别运行不同的程序或算法,诸如加密、压缩、机器学习和冗余。FPGA 118也可编程以提供诸如不同图形处理单元、不同网络设备等不同物理设备的功能。
另外,FPGA 118的一部分可以可编程以运行一个程序或提供特定物理设备的功能,而另一部分可编程以运行附加程序(或同一程序的附加实例)或提供不同物理设备的功能。以这种方式,单个FPGA 118可以可编程以同时运行所请求的多个不同程序,例如编码和压缩引擎或多个不同GPU。不仅单个FPGA 118可以被编程为同时运行多个程序,而且多个FPGA 118或多个FPGA 118的部分也可以通过程序共同编程为提供一些功能,以便能够进行深度学习以生成神经网络。
主机设备104和其他主机设备106每个也以FPGA虚拟化管理器120而被示出。在一个或多个实现中,FPGA虚拟化管理器120是上述虚拟机管理器的一部分。根据所描述的技术,FPGA虚拟化管理器120将FPGA 118虚拟化为虚拟机110。换言之,FPGA虚拟化管理器被配置为促进利用所请求的FPGA程序对FPGA 118编程并且将程序(或编程到FPGA 118的设备)暴露给虚拟机110。结合促进这种交互,FPGA虚拟化管理器120确定所请求的FPGA程序是否受信任。
如上所述,简单地允许任何FPGA程序对FPGA 118编程可能使系统(例如,主机设备104、其他主机设备106、客户端设备102及其组件)易受安全漏洞的影响,无论是恶意还是偶然。这种安全漏洞可能使系统崩溃或暴露敏感信息(例如,个人标识信息、机密商业信息、财务信息)。基于此,FPGA虚拟化管理器120将被允许对FPGA 118编程的FPGA程序限制为被确定为受信任的FPGA程序。FPGA虚拟化管理器120不允许不受信任FPGA程序对FPGA编程。如下面更详细讨论的,FPGA虚拟化管理器120能够使用数字签名来确定所请求的FPGA程序是否受信任。
假定虽然FPGA程序是受信任的并且被允许对FPGA 118编程,但是FPGA虚拟化管理器120可以将编程的FPGA 118作为虚拟设备而暴露给虚拟机110。虚拟设备使得虚拟机110能够访问被编程到FPGA 118的程序或设备的功能。例如,当FPGA 118被编程为GPU时,虚拟设备允许虚拟机110从GPU请求图形处理。虚拟设备向虚拟机110模拟实际的物理设备。此外,通过将单个FPGA 118的一部分编程为特定物理设备并且仅将被编程部分呈现给作为完整虚拟设备的单个虚拟机,可以在多个虚拟机110之间共享FPGA的功能。
根据一个或多个实现,主机设备104和/或其他主机设备106可以配置有虚拟外围组件互连(PCI)基础设施。在这样的场景中,FPGA虚拟化管理器120可以使用虚拟PCI基础设施来将编程的FPGA 118作为物理设备而暴露给虚拟机110。在这样做时,FPGA虚拟化管理器120可以通过以模仿PCI Express(PCIe)设备的方式呈现虚拟设备来暴露FPGA 118的部分。
此外,FPGA虚拟化管理器120能够虚拟化FPGA 118并且将编程的部分露给由不同主机设备托管的虚拟机。作为示例,主机设备104的FPGA虚拟化管理器120可以允许其他主机设备106的虚拟机110请求FPGA程序,从而引起对主机设备104的FPGA 118编程。以类似的方式,另一主机设备106的FPGA虚拟化管理器120可以允许主机设备104的虚拟机请求FPGA程序,从而引起对另一主机设备106的FPGA 118编程。
通过经由虚拟设备访问程序和设备功能,虚拟机110可以利用使用多个主机(包括远程主机)的FPGA 118提供的虚拟设备。在这种程度上,虚拟机110因此没有与主机的任何特定物理设备相关联。由于虚拟机110没有与任何特定物理设备相关联,因此虚拟机110可以跨不同主机设备进行迁移。例如,虚拟机110可以基于FPGA 118被编程的可用性来进行这一操作。
已经描述了示例操作环境,现在考虑与一个或多个实现相关联的示例细节和技术。
现场可编程门阵列程序的签名验证
为了进一步说明,考虑该部分中的对以用于验证现场可编程门阵列(FPGA)程序的数字签名的示例场景、组件和过程的讨论。通常,可以在下面描述的示例过程的上下文中采用关于以上和以下示例而描述的功能、特征和概念。此外,关于本文档中的不同附图和示例描述的功能、特征和概念可以彼此互换,并且不限于在特定附图或过程的上下文中的实现。此外,与在本公开中的不同的代表性过程和相应图相关联的块可以一起应用和/或以不同方式组合。因此,关于在本公开中的不同示例环境、设备、组件、图和过程而描述的各个功能、特征和概念可以以任何合适的组合使用,并且不限于本说明书中列举的示例所表示的特定组合。
示例场景
图2总体上以200描绘了根据一个或多个实现的一个示例场景,其中主机设备的FPGA被配置为向虚拟机提供所请求的功能。示例场景200包括来自图1的虚拟机110、FPGA118和FPGA虚拟化管理器120。
示例场景200还包括从虚拟机110传送给FPGA虚拟化管理器120的程序请求202。程序请求202表示用以在FPGA 118上运行FPGA程序的请求,例如,以利用FPGA 118的速度和效率(以运行机器学习算法)或提供特定设备(诸如GPU)的功能。程序请求202可以以各种不同的格式配置,如关于图3A和3B讨论的。例如,程序请求202可以简单地请求由主机设备104或其他主机设备106保持的FPGA程序。在其他场景中,程序请求202可以包括FPGA管理器可以在FPGA 118上加载(一旦确定受信任)并且运行的FPGA程序。
在程序请求202简单地请求由主机保持的FPGA程序的情况下,程序请求202可以向FPGA虚拟化管理器120指示程序标识符204,例如,程序请求202可以包括程序标识符204,如在图3A所示。程序标识符204对于所请求的FPGA程序是唯一的并且标识所请求的FPGA程序。作为示例,Brand X压缩引擎与唯一程序标识符相关联,该唯一程序标识符可以与可以被编程到FPGA 118的其他程序和设备不同。程序标识符204可以被配置为全局唯一标识符(GUID)、通用唯一标识符(UUID)、或能够唯一地标识所请求的程序的字符串。在不脱离在本公开中描述的技术的精神或范围的情况下,程序标识符204可以以各种不同格式配置来唯一地标识FPGA程序。
FPGA虚拟化管理器120表示用于使用程序标识符204来确定FPGA程序206是否包括与程序请求202相对应的程序的功能。FPGA程序206被示出为存储在存储器208中,存储器208可以被包括例如作为主机设备104、其他主机设备106或受信任远程存储服务的一部分。因此,FPGA虚拟化管理器120确定与程序标识符204相对应的FPGA程序是否被保持在受信任存储位置。以这种方式,程序标识符204可以用作程序请求202的数字签名——该FPGA虚拟化管理器120验证所请求的FPGA程序是受信任的,因为它是使用程序标识符204在受信任存储位置中找到并且从中获取的。如果程序请求的程序标识符与任何FPGA程序206不匹配,则FPGA虚拟化管理器120可以向请求的虚拟机通知所请求的程序不可用。
然而,如果程序标识符204确实对应于FPGA程序206其中之一,则FPGA虚拟化管理器120诸如从存储器208获取相应的FPGA程序210。通常,FPGA程序206表示用于使用相应程序来编程FPGA或将FPGA编程为相应设备的功能。FPGA程序206可以被配置为二进制数据,该二进制数据能够使用相应程序对FPGA 118编程或将FPGA 118编程为相应设备,例如,使用硬件描述语言(HDL)。
对于从受信任存储器获取FPGA程序210的场景,FPGA程序210可以简单地将受信任FPGA程序加载到FPGA 118并且运行受信任FPGA程序。然而,在其他场景中,可以直接从程序请求202中获取FPGA程序210,例如,FPGA程序210可以被包括在程序请求中。在这些场景中,FPGA虚拟化管理器120在FPGA上加载FPGA程序之前确定FPGA程序210是否受信任。作为示例,FPGA虚拟化管理器120可以通过对FPGA程序210的数字签名的验证212来确定FPGA程序是否受信任。
验证212可以涉及FPGA虚拟化管理器120尝试使用相应加密密钥214来解密FPGA程序210。加密密钥214表示与FPGA程序或FPGA程序提供商相对应的秘密。这些秘密可以仅对主机(例如,实现FPGA虚拟化管理器120)和相应程序的提供商所知。加密密钥214被示出为存储在存储器216中,存储器216可以被包括以作为主机设备104、其他主机设备106或受信任远程安全策略存储服务的一部分。通常,程序提供商使用相应的加密密钥214来加密FPGA程序。此外,只有具有相应加密密钥214的实体才能够解密加密的FPGA程序。因此,如果FPGA虚拟化管理器120能够利用相应的加密密钥214成功解密加密的FPGA程序210,则确定FPGA程序受信任。例如,成功的解密表明FPGA程序210尚未从由程序提供商提供的原始受信任状态进行修改。成功的解密还可以指示不间断的信任链,例如,加密密钥是受信任的,FPGA程序210是受信任的,FPGA程序210的提供商是受信任的,并且请求将FPGA程序210加载到FPGA118的虚拟机是受信任的。
如果验证212指示FPGA程序210不受信任,则不使用FPGA程序210对FPGA 118编程。在这种情况下,FPGA虚拟化管理器120可以生成通知,该通知指示:FPGA 210不受信任,并且因此,对FPGA 118编程的请求不能满足。然后该通知可以被提供给请求虚拟机110,请求虚拟机110可以触发错误条件,引起虚拟机请求不同的FPGA程序,等等。
然而,如果验证212指示FPGA程序210受信任,则允许FPGA程序210将FPGA 118编程为运行所请求的程序或编程为所请求的设备。与此相关,FPGA虚拟化管理器120将FPGA 118的至少一部分分配给FPGA程序210。FPGA 118的被分配部分对应于被编程为运行所请求的程序或提供所请求的设备的功能的那些部分。被分配部分可以对应于少于整个单个FPGA118,或者可以对应于整个FPGA 118。在一些情况下,被分配部分可以对应于少于所有的多个不同的FPGA 118(例如,第一FPGA的四分之一和第二FPGA的四分之一),可以对应于整个FPGA和少于整个至少一个其他FPGA,等等。换言之,FPGA虚拟化管理器120分配FPGA 118的可编程逻辑块的数量,以使得所请求的FPGA程序能够被编程到其中。逻辑块可以被编程为具有不同的硬件功能,以便用作输入、输出、存储或逻辑。
一旦将FPGA的一部分分配给FPGA程序210,FPGA虚拟化管理器120就加载FPGA程序210。在一个或多个实现中,FPGA程序210被配置为能够将FPGA 118编程为运行所请求的程序或编程为所请求的设备的二进制数据程序。
所示出的场景200还描绘了经过配置的FPGA 218。经过配置的FPGA 218表示已经由FPGA程序210配置为运行所请求的程序或配置为所请求的设备的FPGA 118。可以向FPGA虚拟化管理器120提供信号或者可以由FPGA虚拟化管理器120获取信号,该信号指示FPGA118被成功配置。基于此,FPGA虚拟化管理器120可以将经过配置的FPGA 218(被配置为运行所请求的程序或配置为所请求的设备)作为虚拟设备220暴露给虚拟机110。虚拟机110可以与虚拟设备220交互以利用被编程到FPGA 118的设备的程序或功能。为此,FPGA虚拟化管理器120可以将虚拟设备220的输入映射到经配置的FPGA 218的输入并且将虚拟设备220的输出映射到经配置的FPGA 218的输出。基于该映射,FPGA虚拟化管理器120可以在虚拟机110与经配置的FPGA 218之间中继数据以向虚拟机提供所请求的程序或设备的功能,例如,如果请求机器学习,则是经训练的神经网络,如果请求GPU,则是图形处理,如果请求网络设备,则是处理网络业务,如果请求数据压缩,则是压缩数据。
示例FPGA程序请求
图3A和3B总体上以300描绘了根据一个或多个方面的FPGA程序请求的示例。两个图3A和3B包括程序请求202。然而,程序请求202在图3A中与图3B中的配置不同,并且因此表示用于数字签名验证的不同场景。
在图3A中,程序请求202包括程序标识符302(程序ID 302),程序标识符302可以与程序标识符204相对应。程序ID 302表示用于例如从FPGA程序206中识别FPGA程序的信息,FPGA程序206由主机设备保持或由主机设备从另一受信任存储位置可访问。在诸如图3A所示的场景中,程序ID 302可以用作数字签名。这是因为,当使用程序标识符302从FPGA程序206中找到相应程序时,则找到的程序是受信任的。找到的程序受信任的,因为它是从受信任位置获取的,例如,FPGA虚拟化管理器120的主机的存储器208或另一受信任源。
图3B表示不同的签名验证方案。在图3B中,程序请求202包括FPGA程序210。程序请求202在图3B中示出为具有数字签名304。数字签名304表示FPGA程序210以某种方法被以数字方式进行签名,FPGA虚拟化管理器120可以使用该方法来确定FPGA程序210是否受信任——并且因此被允许加载以对FPGA 118编程。根据一个或多个实现,数字签名304可以对应于FPGA程序210的加密,例如,使用FPGA程序210的提供商已知和解密FPGA程序210的主机系统的密钥,使得如果主机能够使用密钥成功地解密FPGA程序210,则确定FPGA程序210受信任。数字签名304还可以指示信任链,例如,包括在程序请求202中的FPGA程序210仅由如下实体处理,所述实体并未从FPGA程序提供商处的FGPA程序210的原始受信任状态对其进行(有意或无意地)修改。这些和/或其他安全性问题可以使用数字签名304来检查。通过确保FPGA程序来自受信任来源并且保持不变,数字签名可以防止FPGA程序恶意地和无意地破坏系统安全性。
就使得虚拟机110能够利用各种不同FPGA程序的功能而言,图3B所表示的方法可能比图3A所示的场景更灵活。然而,在不脱离在本公开中描述的技术的精神或范围的情况下,这些技术可以以各种不同的方式利用与FPGA程序相关联的数字签名来确定这些程序是否受信任。关于以下示例过程讨论其他示例和细节。
示例过程
结合图4和5的示例过程来讨论FPGA程序的签名验证的其他方面。这些过程表示为指定由一个或多个设备执行的操作的块集合,并且并非必然受限于为了由相应块执行操作而示出的顺序。这些过程的各方面可以用硬件、固件或软件或其组合来实现。这些过程的一些方面可以经由一个或多个主机设备来实现,诸如经由保持和提供对FPGA虚拟化管理器120的访问的主机设备104和/或其他主机设备106。这些过程的各方面还可以由适当配置的设备执行,诸如包括或使用VM接口112和主机接口114的图1的示例客户端设备102。
图4描绘了用于响应于根据一个或多个实现的验证,使用FPGA程序验证FPGA程序的签名和配置主机的FPGA的示例过程400。
在402处,获取FPGA程序,该FPGA程序被配置为将主机设备的FPGA编程为运行相应程序或编程为相应设备。作为示例,FPGA虚拟化管理器120从FPGA程序206获取FPGA程序210,例如,从主机设备104或其他主机设备106的存储器208中获取。或者,FPGA虚拟化管理器120直接从程序请求202中获取FPGA程序210,例如,通过从程序请求202中提取FPGA程序210来获取。无论如何获取,FPGA程序210被配置为将主机设备104或其他主机设备106的FPGA 118编程为运行相应程序(例如,机器学习算法、压缩算法、加密算法)或编程为相应设备(例如,网络设备、诸如GPU等处理设备、诸如硬盘驱动器等数据存储设备)。
在404处,验证所获取的FPGA程序的数字签名。根据在本公开中描述的原理,验证数字签名以确定是否允许FPGA程序对FPGA编程。考虑如下示例,其中根据一个或多个实现,从保持在存储器208中的FPGA程序206获取FPGA程序210。在该示例中,数字签名对应于程序标识符204,程序标识符204被包括在程序请求202中。通过使用程序标识符204从FPGA程序206中识别FPGA程序210,程序标识符204(用作数字签名)通过验证。因此确定FPGA程序210受信任。这是因为,已经确定保持在存储器208中的FPGA程序206受信任。因此,FPGA虚拟化管理器120允许FPGA程序210在从FPGA程序206获取之后对FPGA编程。如果未找到与程序标识符204相对应的FPGA程序,则不能基于程序请求202将FPGA程序加载到FPGA 118。
如上所述,在一些场景中,程序请求202可以不仅仅为FPGA程序的FPGA程序提供程序标识符204。相反,程序请求202可以包括程序请求202请求在FPGA118上加载并且运行的FPGA程序。在这些场景中,以不同方式验证FPGA程序的数字签名。作为示例,程序请求202包括FPGA程序210,如图3B所示。为了验证数字签名304,FPGA虚拟化管理器120尝试解密包括在程序请求202中的FPGA程序210的加密版本。具体地,FPGA虚拟化管理器120尝试使用相应加密密钥214(例如,FPGA程序提供商对FPGA程序210加密的加密密钥)来解密加密的FPGA程序210。如果FPGA虚拟化管理器120能够使用密钥成功解密FPGA程序210,则FPGA虚拟化管理器120验证了数字签名并且确定FPGA程序210受信任。然而,如果FPGA虚拟化管理器120不能成功解密FPGA程序,则虚拟化管理器不能验证数字签名并且确定FPGA程序不受信任。如果确定FPGA程序210不受信任,则FPGA虚拟化管理器120不允许FPGA程序210对FPGA 118编程。
然而,响应于确定FPGA程序受信任,在406处,将FPGA的至少一部分分配给FPGA程序。作为示例,FPGA虚拟化管理器120在404处确定FPGA程序210受信任。响应于该确定,FPGA虚拟化管理器120分配FPGA 118的一部分。该分配对应于FPGA 118中FPGA程序210将其配置为运行相应程序或将其配置为相应设备的那部分。换言之,FPGA的被分配部分被保留用于编程为相应程序的硬件实现或编程为相应设备。
在408处,加载FPGA程序以将FPGA的被分配部分编程为运行相应程序或编程为相应设备。作为示例,FPGA虚拟化管理器120加载FPGA程序210以对在406处分配的FPGA 118的一部分编程。在这样做时,FPGA程序210配置FPGA 118的被分配部分,例如,作为输入、输出、存储或逻辑。在一个或多个实现中,FPGA程序210使用硬件描述语言(HDL)来指定FPGA 118的被分配部分的特定配置。
在410处,获取关于FPGA的被分配部分被配置为运行相应程序或配置为相应设备的指示。作为示例,FPGA虚拟化管理器120获取经配置的FPGA 218的指示。这表示,FPGA已经被编程为相应程序的硬件实现或编程为相应设备,该相应程序的硬件实现或相应设备可以被虚拟机110利用。在412处,将模拟相应程序的硬件实现或模拟被编程到FPGA的相应设备的虚拟设备暴露给虚拟机。作为示例,FPGA虚拟化管理器120将虚拟设备220暴露给虚拟机110。虚拟设备220使得虚拟机能够利用经配置的FPGA 218(程序的硬件实现)的功能或编程到FPGA 118的设备的功能。
图5描绘了根据一个或多个实现的利用由使用具有经过验证的签名的FGPA程序编程的FPGA提供的功能的示例过程500。
在502处,在虚拟设备输入处从虚拟机接收请求。根据在本公开中讨论的原理,该请求请求了由被编程为运行程序的硬件实现或被编程为设备的FPGA的一部分所提供的功能。作为示例,在虚拟设备220的输入处从虚拟机110之一接收请求。所接收的请求请求了由经配置的FPGA 218所提供的功能,经配置的FPGA 218由FPGA程序210在FPGA虚拟化管理器120确定FPGA程序210受信任之后配置,如上所述。
在504处,确定与虚拟设备输入相关联的FPGA的编程输入。根据在本公开中讨论的原理,FPGA的编程输入是基于虚拟设备输入和输出到FPGA的相应编程输入和输出的映射来确定的。作为示例,FPGA虚拟化管理器120确定与虚拟设备220的输入相关联的经配置的FPGA 218的编程输入。FPGA虚拟化管理器120通过参考虚拟设备220的输入和输出到被编程为用作输入和输出的经配置的FPGA 218的部分的映射来进行该确定。
在506处,经由所确定的输入向FPGA提供包括在请求中的数据。根据在本公开中讨论的原理,这使得编程的FPGA能够使用所提供的数据来提供硬件实现的程序或编程的设备的功能。作为示例,与在502处接收的请求相对应的数据被提供给在504处确定的经配置的FPGA 218的输入。
在508处,由虚拟设备从FPGA获取输出数据。根据在本公开中讨论的原理,输出数据指示由硬件实现的程序或编程到FPGA的设备所提供的功能的结果。作为示例,虚拟设备220从经配置的FPGA 218来获取数据。此外,所获取的数据指示由硬件实现的程序或编程到所配置的FPGA 218的设备提供的功能的结果。当经配置的FPGA 218对应于GPU时,例如,输出数据可以对应于被配置用于显示的渲染的场景。在510处,从虚拟设备向虚拟机输出输出数据。作为示例,在508处获取的输出数据由虚拟设备220输出到虚拟机110之一。
已经根据一个或多个实现描述了示例过程和细节,现在考虑可以用于实现在本公开中描述的各种技术的示例系统和设备的讨论。
示例系统和设备
图6示出了包括示例计算设备602的示例系统600,该示例计算设备602表示可以实现在本公开中描述的各种技术的一个或多个计算系统和/或设备。计算设备602可以是例如服务提供器的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统和/或任何其他合适的计算设备或计算系统。
如图所示的示例计算设备602包括处理系统604、一个或多个计算机可读介质606、以及彼此通信地耦合的一个或多个I/O接口608。虽然未示出,但是计算设备602还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传输系统。系统总线可以包括利用各种总线架构中的任何总线架构的不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或处理器或本地总线。还构想了各种其他示例,诸如控制和数据线。
处理系统604表示使用硬件执行一个或多个操作的功能。因此,处理系统604被示出为包括可以被配置为处理器、功能块等的硬件元件610。这可以包括用硬件实现为专用集成电路或使用一个或多个半导体形成的其他逻辑器件。硬件元件610不受形成它们的材料或其中采用的处理机制的限制。例如,处理器可以包括半导体和/或晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质606被示出为包括存储器/存储设备612。存储器/存储设备612表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储设备612可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘和磁盘)。存储器/存储设备612可以包括固定介质(例如,RAM、ROM和固定硬盘驱动器)以及可移动介质(例如,闪存、可移动硬盘驱动器和光盘)。计算机可读介质606可以以下面进一步描述的各种其他方式配置。
输入/输出接口608表示允许用户向计算设备602输入命令和信息,并且还允许使用各种输入/输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、用于语音操作的麦克风、扫描仪、触摸功能(例如,被配置为检测物理触摸的电容或其他传感器)和相机(例如,其可以采用诸如红外频率等可见或不可见波长来检测不涉及作为手势的触摸的移动)。输出设备的示例包括显示设备(例如,显示器或投影仪)、扬声器、打印机、网卡和触觉响应设备。因此,计算设备602可以以下面进一步描述的各种方式配置以支持用户交互。
在本公开中可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。通常,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。在本公开中使用的术语“模块”、“功能”和“组件”通常表示软件、固件、硬件或其组合。在本公开中描述的技术的特征是平台无关的,这表示这些技术可以在具有各种处理器的各种商业计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或通过其传输。计算机可读介质可以包括可以由计算设备602访问的各种介质。作为示例,计算机可读介质可以包括“计算机可读存储介质”和“通信介质”。
“计算机可读存储介质”是指能够存储信息的介质和/或设备,与仅仅信号传输、载波或信号本身相反。计算机可读存储介质不包括信号承载介质、暂态信号或信号本身。计算机可读存储介质包括以适于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据等信息的方法或技术来实现的硬件,诸如易失性和非易失性、可移动和不可移动介质和/或存储设备。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储器、硬盘、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者适于存储期望的信息并且可以由计算机访问的其他存储设备、有形介质或制品。
“通信介质”可以是指被配置为诸如经由网络向计算设备602的硬件传输指令的信号承载介质。通信介质通常可以包含计算机可读指令、数据结构、程序模块或者诸如载波、数据信号或其他传输机制等调制数据信号中的其他数据。通信介质还包括任何信息传递介质。术语“调制数据信号”表示以使得能够在信号中对信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例,通信介质包括诸如有线网络或直接有线连接等有线介质以及诸如声学、RF、红外和其他无线介质等无线介质。
如前所述,硬件元件610和计算机可读介质606表示在一些实施例中可以用于实现在本公开中描述的技术的至少一些方面的以硬件形式实现的指令、模块、可编程设备逻辑和/或固定设备逻辑。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅或其他硬件设备的其他实现的组件。在这个上下文中,硬件元件可以作为执行由硬件元件实现的指令、模块和/或逻辑定义的程序任务的处理设备以及用于存储用于执行的指令的硬件设备(例如,先前描述的计算机可读存储介质)进行操作。
还可以采用前述的组合来实现在本公开中描述的各种技术和模块。因此,包括VM接口112、主机接口114、FPGA虚拟化管理器120和其他程序模块在内的软件、硬件或程序模块可以实现为包含在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件610实现的一个或多个指令和/或逻辑。计算设备602可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,模块(作为由计算设备602作为软件可执行的模块)的实现可以至少部分以硬件实现,例如,通过使用处理系统的计算机可读存储介质和/或硬件元件610。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备602和/或处理系统604)执行/操作以实现在本公开中描述的技术、模块和示例。
如图6中进一步所示,示例系统600使得无处不在的环境能够在个人计算机(PC)、电视设备和/或移动设备上运行应用时获取无缝的用户体验。服务和应用在所有三种环境中运行时基本上相似,以便在使用应用,玩视频游戏,观看视频等时从一个设备转换到下一设备时获取共同的用户体验。
在示例系统600中,多个设备通过中央计算设备互连。中央计算设备可以是多个设备的本地设备,或者可以远离多个设备。在一个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的云。
在一个实施例中,该互连架构使得能够跨多个设备递送功能以向多个设备的用户提供共同且无缝的体验。多个设备中的每个可以具有不同的物理要求和能力,并且中央计算设备使用平台来实现向设备传递体验,该体验既是针对设备定制的又是所有设备共有的。在一个实施例中,创建一类目标设备,并且为通用的一类设备定制体验。可以通过物理特征、使用类型或设备的其他共同特性来定义一类设备。
在各种实现中,计算设备602可以采用各种不同的配置,诸如以便计算机614、移动设备616和电视618使用。这些配置中的每个包括可以具有通常不同的构造和能力的设备,并且因此计算设备602可以根据一个或多个不同的设备类来配置。例如,计算设备602可以实现为计算机614类设备,其包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。
计算设备602还可以实现为包括移动设备的移动设备616类设备,诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机或多屏幕计算机。计算设备602还可以实现为电视618类设备,其包括在休闲观看环境中具有或连接到通常更大的屏幕的设备。这些设备包括电视机、机顶盒和游戏机。
在本公开中描述的技术可以由计算设备602的这些各种配置支持,并且不限于在本公开中描述的技术的特定示例。例如,FPGA虚拟化管理器120和其他模块的功能也可以全部或部分地通过使用分布式系统来实现,诸如通过平台622经由“云”620来实现,如下所述。FPGA虚拟化管理器120还可以由平台622的主机设备实现,诸如由数据中心的一个或多个服务器实现。FPGA虚拟化管理器120还可以由如在本公开中描述的单个计算设备602或主机实现。
云620包括和/或表示用于资源624的平台622。平台622抽象云620的硬件(例如,服务器)和软件资源的基础功能。资源624可以包括在远离计算设备602的服务器上执行计算机处理时可以使用的应用和/或数据。资源624还可以包括通过因特网和/或通过订户网络(诸如蜂窝或Wi-Fi网络)提供的服务。该服务可以包括经由适当配置的虚拟机管理器模块(诸如包括FPGA虚拟化管理器120的虚拟机管理器模块)实现的虚拟化服务。
平台622可以抽象资源和功能以将计算设备602与其他计算设备连接。平台622还可以用于抽象资源的缩放以提供相应的规模级别以满足经由平台622实现的对资源624的需求。因此,在互连的设备实施例中,在本公开中描述的功能的实现可以分布在整个系统600中。例如,功能可以部分地在计算设备602上并经由抽象云620的功能的平台622来实现。
示例实现
在本公开中描述的技术的示例实现包括但不限于以下示例中的一个或任何组合:
示例1.一种由计算设备执行的方法,所述方法包括:获取现场可编程门阵列(FPGA)程序,所述FPGA程序被配置为将主机的FPGA编程为提供相应程序的硬件实现的功能或相应设备的功能;通过验证与所述FPGA程序相关联的数字签名来确定所述FPGA程序是否受信任以对所述FPGA编程;响应于确定所述FPGA程序受信任,加载所述FPGA程序以将所述FPGA编程为提供所述功能;以及生成虚拟设备以通过在所述虚拟机与所述编程的所述FPGA之间中继数据来向所述虚拟机提供所述功能。
示例2.根据示例1所述的方法,还包括从所述虚拟机之一接收请求所述FPGA程序将所述FPGA编程为提供所述功能的请求。
示例3.根据示例2所述的方法,其中所述请求包括所述FPGA程序的唯一程序标识符,并且获取所述FPGA程序包括使用所述唯一程序标识符在与所述主机相关联的受信任存储位置中识别所述FPGA程序。
示例4.根据示例3所述的方法,其中验证与所述FPGA程序相关联的数字签名是基于使用所述唯一程序标识符在所述受信任存储位置中识别所述FPGA程序。
示例5.根据示例2所述的方法,其中所述请求包括所述FPGA程序,并且获取所述FPGA程序包括从所述请求中提取所述FPGA程序。
示例6.根据示例5所述的方法,其中被包括在所述请求中的所述FPGA程序被加密,并且验证与所述FPGA程序相关联的所述数字签名包括:尝试使用所述主机已知的并且由所述FPGA程序的提供商提供的密钥来解密所述FPGA程序,其中:响应于使用所述密钥解密出所述FPGA程序,所述数字签名被验证,或者响应于使用所述密钥未成功解密所述FPGA程序,所述数字签名未被验证。
示例7.根据示例1所述的方法,还包括:通过验证与不同的FPGA程序相关联的不同的数字签名来确定所述不同的FPGA程序是否受信任以对所述FPGA编程,所述不同的FPGA程序被配置为将所述主机的所述FPGA编程为提供不同的功能;以及响应于确定所述不同的FPGA程序不受信任,禁止所述不同的FPGA程序对所述FPGA编程。
示例8.根据示例1所述的方法,还包括:在加载所述FPGA程序之前,将所述FPGA的至少一部分分配给相应程序的硬件实现或相应设备。
示例9.根据示例8所述的方法,还包括将所述虚拟设备的输入和输出映射到被编程到所述FPGA的相应输入和输出。
示例10.根据示例9所述的方法,其中所述虚拟设备根据所述映射在所述虚拟机与所述FPGA之间中继所述数据。
示例11.根据示例1所述的方法,还包括将所述虚拟设备暴露给所述虚拟机,所述暴露的虚拟设备在所述虚拟机与所述编程的FPGA之间中继所述数据以向所述虚拟机提供相应程序的硬件实现的功能或相应设备的功能。
示例12.根据示例11所述的方法,其中所述暴露的虚拟设备被暴露给托管在所述主机上的所述虚拟机或者托管在不同的主机设备上的所述虚拟机其中至少之一。
示例13.根据示例1所述的方法,其中所述FPGA能够被编程为同时提供两个或更多个硬件实现的程序或设备的功能。
示例14.一种主机设备,包括:一个或多个现场可编程门阵列(FPGA),其能够被编程为具有不同的硬件功能;处理器;以及其实存储有指令的计算机可读介质,所述指令能够由所述处理器执行以实现FPGA虚拟化管理器以执行包括以下各项的操作:通过验证与所述FPGA程序相关联的数字签名来确定所述FPGA程序是否受信任以对所述一个或多个FPGA编程;加载所述FPGA程序,以将所述一个或多个FPGA的被分配部分编程为提供硬件实现的程序或设备的功能,包括将所述被分配部分配置为具有使得所述硬件实现的程序或所述设备能够提供所述功能的硬件功能;以及生成表示所述硬件实现的程序或所述设备的虚拟设备,生成的虚拟设备被配置为通过在由所述主机设备托管的虚拟机与所述硬件实现的程序或所述设备之间中继数据,来向所述虚拟机提供所述功能。
示例15.根据示例14所述的主机设备,其中所述操作还包括:响应于不能验证与不同的FPGA程序相关联的数字签名,确定所述不同的FPGA程序不受信任以对所述一个或多个FPGA编程;并且基于确定所述不同的FPGA程序不受信任,禁止所述不同的FPGA程序对所述一个或多个FPGA编程。
示例16.根据示例14所述的主机设备,还包括存储装置,所述存储装置被配置为存储多个FPGA程序,并且所述操作还包括使用在针对从所述虚拟机之一接收的对所述FPGA程序的请求中包括的唯一程序标识符来从所述存储装置获取所述FPGA程序。
示例17.根据示例14所述的主机设备,还包括存储装置,所述存储装置被配置为存储所述主机设备和相应FPGA程序提供商已知的多个加密密钥,所述加密密钥中的每个加密密钥被配置为解密用所述加密密钥加密的相应FPGA程序以验证所述相应FPGA程序的数字签名。
示例18.根据示例14中所述的主机设备,还包括将所述虚拟设备的输入和输出映射到被编程到所述一个或多个FPGA的相应输入和输出,所述映射使得所述虚拟设备能够在所述虚拟机与所述硬件实现的程序或所述设备之间中继数据。
示例19.根据示例14所述的主机设备,其中所述操作还包括:从所述虚拟机之一接收针对用以将所述一个或多个FPGA编程为提供所述功能的所述FPGA程序的请求;以及将所述虚拟设备暴露给所述虚拟机。
示例20.一种由主机设备实现的方法,所述方法包括:在虚拟设备的输入处从虚拟机接收请求由所述主机设备的现场可编程门阵列(FPGA)所提供的功能的请求,所述FPGA已经被编程为通过与经验证的数字签名相关联的FPGA程序提供功能,所述经验证的数字签名指示所述FPGA程序受信任以对所述FPGA编程;基于虚拟设备输入到被编程为输入的所述FPGA的部分的映射,来确定与所述虚拟设备的输入相关联的所述FPGA的编程输入;经由所述确定的编程输入向所述FPGA提供包括在所述请求中的数据,以使得所述FPGA能够利用所提供的数据提供所请求的功能;由所述虚拟设备从所述FPGA获取指示由所述FPGA提供的功能的结果的输出数据;以及由所述虚拟设备向所述虚拟机输出所述输出数据。
结论
尽管已经用结构特征和/或方法动作专用的语言描述了技术,但应当理解,所附权利要求书中定义的主题并非必然受限于所描述的具体特征或动作。而是,特定特征和动作被公开作为实现所要求保护的主题的示例形式。

Claims (15)

1.一种由计算设备执行的方法,所述方法包括:
获取现场可编程门阵列(FPGA)程序,所述FPGA程序被配置为将主机的FPGA编程为提供相应程序的硬件实现的功能或相应设备的功能;
通过验证与所述FPGA程序相关联的数字签名来确定所述FPGA程序是否受信任以对所述FPGA编程;
响应于确定所述FPGA程序受信任,加载所述FPGA程序以将所述FPGA编程为提供所述功能;以及
生成虚拟设备以通过在所述虚拟机与编程的所述FPGA之间中继数据来向所述虚拟机提供所述功能。
2.根据权利要求1所述的方法,还包括从所述虚拟机之一接收请求所述FPGA程序将所述FPGA编程为提供所述功能的请求。
3.根据权利要求2所述的方法,其中所述请求包括所述FPGA程序的唯一程序标识符,并且获取所述FPGA程序包括使用所述唯一程序标识符在与所述主机相关联的受信任存储位置中识别所述FPGA程序。
4.根据权利要求3所述的方法,其中验证与所述FPGA程序相关联的数字签名是基于使用所述唯一程序标识符在所述受信任存储位置中识别所述FPGA程序。
5.根据权利要求2所述的方法,其中所述请求包括所述FPGA程序,并且获取所述FPGA程序包括从所述请求中提取所述FPGA程序。
6.根据权利要求5所述的方法,其中被包括在所述请求中的所述FPGA程序被加密,并且验证与所述FPGA程序相关联的所述数字签名包括:
尝试使用所述主机已知的并且由所述FPGA程序的提供商提供的密钥来解密所述FPGA程序,其中:
响应于使用所述密钥解密出所述FPGA程序,所述数字签名被验证,或者
响应于使用所述密钥未成功解密所述FPGA程序,所述数字签名未被验证。
7.根据权利要求1所述的方法,还包括:
通过验证与不同的FPGA程序相关联的不同数字签名来确定所述不同的FPGA程序是否受信任对所述FPGA编程,所述不同的FPGA程序被配置为将所述主机的所述FPGA编程为提供不同的功能;以及
响应于确定所述不同的FPGA程序不受信任,禁止所述不同的FPGA程序对所述FPGA编程。
8.根据权利要求1所述的方法,还包括:在加载所述FPGA程序之前,将所述FPGA的至少一部分分配给所述相应程序的所述硬件实现或所述相应设备。
9.根据权利要求1所述的方法,还包括将所述虚拟设备的输入和输出映射到被编程到所述FPGA的相应输入和输出。
10.根据权利要求9所述的方法,其中所述虚拟设备根据所述映射在所述虚拟机与所述FPGA之间中继所述数据。
11.根据权利要求1所述的方法,还包括将所述虚拟设备暴露给所述虚拟机,被暴露的所述虚拟设备在所述虚拟机与被编程的所述FPGA之间中继所述数据,以向所述虚拟机提供所述相应程序的所述硬件实现的所述功能或所述相应设备的所述功能。
12.根据权利要求11所述的方法,其中被暴露的所述虚拟设备被暴露给托管在所述主机上的所述虚拟机或者托管在不同的主机设备上的所述虚拟机其中至少一个。
13.根据权利要求1所述的方法,其中所述FPGA能够被编程为同时提供两个或更多个硬件实现的程序或设备的功能。
14.一种主机设备,包括:
一个或多个现场可编程门阵列(FPGA),能够被编程为具有不同的硬件功能;
处理器;以及
其上存储有指令的计算机可读介质,所述指令能够由所述处理器执行来实现FPGA虚拟化管理器,以执行包括以下各项的操作:
通过验证与所述FPGA程序相关联的数字签名来确定所述FPGA程序是否受信任以对所述一个或多个FPGA编程;
加载所述FPGA程序,以将所述一个或多个FPGA的被分配部分编程为提供硬件实现的程序或设备的功能,包括将所述被分配部分配置为具有使得所述硬件实现的程序或所述设备能够提供所述功能的硬件功能;以及
生成表示所述硬件实现的程序或所述设备的虚拟设备,生成的所述虚拟设备被配置为通过在由所述主机设备托管的虚拟机与所述硬件实现的程序或所述设备之间中继数据,来向所述虚拟机提供所述功能。
15.根据权利要求14所述的主机设备,还包括存储装置,所述存储装置被配置为存储所述主机设备和相应FPGA程序提供商已知的多个加密密钥,所述加密密钥中的每个加密密钥被配置为解密利用所述加密密钥加密的相应FPGA程序以验证所述相应FPGA程序的数字签名。
CN201780083317.8A 2017-01-13 2017-12-28 现场可编程门阵列程序的签名验证的方法和设备 Active CN110178136B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/406,122 2017-01-13
US15/406,122 US10404470B2 (en) 2017-01-13 2017-01-13 Signature verification of field-programmable gate array programs
PCT/US2017/068618 WO2018132266A1 (en) 2017-01-13 2017-12-28 Signature verification of field-programmable gate array programs

Publications (2)

Publication Number Publication Date
CN110178136A true CN110178136A (zh) 2019-08-27
CN110178136B CN110178136B (zh) 2023-03-10

Family

ID=61025070

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780083317.8A Active CN110178136B (zh) 2017-01-13 2017-12-28 现场可编程门阵列程序的签名验证的方法和设备

Country Status (4)

Country Link
US (1) US10404470B2 (zh)
EP (2) EP3568789B1 (zh)
CN (1) CN110178136B (zh)
WO (1) WO2018132266A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111209086A (zh) * 2020-01-13 2020-05-29 山东超越数控电子股份有限公司 一种基于自主平台的裸金属虚拟化实现方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540506B2 (en) 2017-01-12 2020-01-21 Microsoft Technology Licensing, Llc Field-programmable gate array virtualization
US10764129B2 (en) * 2017-04-18 2020-09-01 Amazon Technologies, Inc. Logic repository service supporting adaptable host logic
US10747565B2 (en) * 2017-04-18 2020-08-18 Amazon Technologies, Inc. Virtualization of control and status signals
US10860357B1 (en) * 2017-04-18 2020-12-08 Amazon Technologies, Inc. Secure reconfiguring programmable hardware with host logic comprising a static portion and a reconfigurable portion
US10326651B1 (en) * 2017-04-18 2019-06-18 Amazon Technologies, Inc. Client configurable hardware logic and corresponding signature
US10503551B2 (en) * 2017-06-07 2019-12-10 Dell Products L.P. Coordinating FPGA services using cascaded FPGA service managers
US10402219B2 (en) 2017-06-07 2019-09-03 Dell Products L.P. Managing shared services in reconfigurable FPGA regions
US10970118B2 (en) * 2017-08-02 2021-04-06 Advanced Micro Devices, Inc. Shareable FPGA compute engine
US10776142B1 (en) 2017-12-13 2020-09-15 Amazon Technologies, Inc. Reconfiguring programmable hardware when a virtual machine is active
CN110162378B (zh) * 2018-02-13 2023-12-29 华为技术有限公司 一种资源调度的方法、装置、设备及系统
US11341281B2 (en) * 2018-09-14 2022-05-24 International Business Machines Corporation Providing differential privacy in an untrusted environment
US11422812B2 (en) 2019-06-25 2022-08-23 Advanced Micro Devices, Inc. Method and apparatus for efficient programmable instructions in computer systems
US10936529B2 (en) * 2019-06-27 2021-03-02 Dell Products L.P. System and method of configuring field programmable logic arrays
US20210117246A1 (en) 2020-09-25 2021-04-22 Intel Corporation Disaggregated computing for distributed confidential computing environment
US20220114284A1 (en) * 2020-10-14 2022-04-14 Qualcomm Incorporated Signed command stream and command execution
US11379125B1 (en) 2021-03-31 2022-07-05 International Business Machines Corporation Trusted field programmable gate array

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473213A (zh) * 2009-07-16 2012-05-23 阿尔卡特朗讯公司 用于提供安全虚拟机的系统和方法
US20130145431A1 (en) * 2011-12-02 2013-06-06 Empire Technology Development Llc Integrated circuits as a service
CN103221961A (zh) * 2010-10-20 2013-07-24 超威半导体公司 包括用于保护多用户敏感代码和数据的架构的方法和装置
CN105493099A (zh) * 2013-07-01 2016-04-13 亚马逊技术有限公司 用于托管虚拟机的加密证实资源

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7150011B2 (en) 2000-06-20 2006-12-12 Interuniversitair Microelektronica Centrum (Imec) Virtual hardware machine, methods, and devices
US20030061401A1 (en) 2001-09-25 2003-03-27 Luciani Luis E. Input device virtualization with a programmable logic device of a server
JP2010507227A (ja) 2006-10-16 2010-03-04 トムソン ライセンシング フィールド・プログラマブル・ゲート・アレイ(fpga)のトレラントなシステム内プログラミング
CN101226569A (zh) 2007-01-19 2008-07-23 国际商业机器公司 在虚拟机中验证代码模块的方法及装置
JP5245539B2 (ja) 2008-05-27 2013-07-24 富士通株式会社 仮想マシンの入出力エミュレーション機構
US20110041030A1 (en) 2009-08-17 2011-02-17 Kung-Ling Ko Storage of data and signature formed from data and address in a memory
US20110106522A1 (en) 2009-11-05 2011-05-05 Chinya Gautham N virtual platform for prototyping system-on-chip designs
US8406682B2 (en) 2010-04-30 2013-03-26 Cloud Niners Information Systems Llc Virtual laboratory smart agent
US9286444B2 (en) 2012-02-28 2016-03-15 Verizon Patent And Licensing Inc. Next generation secure gateway
US9230091B2 (en) 2012-06-20 2016-01-05 Microsoft Technology Licensing, Llc Managing use of a field programmable gate array with isolated components
US8898480B2 (en) * 2012-06-20 2014-11-25 Microsoft Corporation Managing use of a field programmable gate array with reprogammable cryptographic operations
US9361416B2 (en) * 2013-01-30 2016-06-07 Empire Technology Development Llc Dynamic reconfiguration of programmable hardware
KR20140119356A (ko) 2013-03-29 2014-10-10 인텔렉추얼디스커버리 주식회사 리얼타임 성능을 위한 가상화 장치 및 방법
US10037222B2 (en) 2013-09-24 2018-07-31 University Of Ottawa Virtualization of hardware accelerator allowing simultaneous reading and writing
US8924907B1 (en) * 2013-11-25 2014-12-30 Altera Corporation Bitstream verification on embedded processor—FPGA platform
US9483282B1 (en) 2014-05-30 2016-11-01 Altera Corporation Methods and systems for run-time hardware configuration change management
US9959375B2 (en) 2014-10-06 2018-05-01 Synopsys, Inc. Efficient emulation and logic analysis
US9607165B2 (en) 2015-02-13 2017-03-28 Red Hat Israel, Ltd. Watchdog code for virtual machine functions
CN105335211B (zh) 2015-10-21 2018-10-26 同济大学 一种基于Xen虚拟化集群的FPGA加速器调度系统及方法
US10540506B2 (en) 2017-01-12 2020-01-21 Microsoft Technology Licensing, Llc Field-programmable gate array virtualization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473213A (zh) * 2009-07-16 2012-05-23 阿尔卡特朗讯公司 用于提供安全虚拟机的系统和方法
CN103221961A (zh) * 2010-10-20 2013-07-24 超威半导体公司 包括用于保护多用户敏感代码和数据的架构的方法和装置
US20130145431A1 (en) * 2011-12-02 2013-06-06 Empire Technology Development Llc Integrated circuits as a service
CN103959245A (zh) * 2011-12-02 2014-07-30 英派尔科技开发有限公司 作为服务的集成电路
CN105493099A (zh) * 2013-07-01 2016-04-13 亚马逊技术有限公司 用于托管虚拟机的加密证实资源

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111209086A (zh) * 2020-01-13 2020-05-29 山东超越数控电子股份有限公司 一种基于自主平台的裸金属虚拟化实现方法

Also Published As

Publication number Publication date
WO2018132266A1 (en) 2018-07-19
CN110178136B (zh) 2023-03-10
US10404470B2 (en) 2019-09-03
EP3568789A1 (en) 2019-11-20
EP3568789B1 (en) 2021-01-20
EP3800566B1 (en) 2024-02-21
US20180205553A1 (en) 2018-07-19
EP3800566A1 (en) 2021-04-07

Similar Documents

Publication Publication Date Title
CN110178136A (zh) 现场可编程门阵列程序的签名验证
CN110892672B (zh) 提供设备匿名性的密钥认证声明生成
CN110199271A (zh) 现场可编程门阵列虚拟化
KR102107872B1 (ko) 컴파일러 기반 난독화 기법
CN109416720B (zh) 跨重置维护操作系统秘密
US11645369B2 (en) Blockchain digital rights management streaming library
JP6887421B2 (ja) コンテナ間における信頼性の確立
CN105659211B (zh) 虚拟机管理器促进的选择性代码完整性实施
CN109076072A (zh) Web服务图片密码
JP2014528602A (ja) 非トラステッド・ユーザ端末にオペレーティング・システム・イメージをプロビジョニングするための方法、コンピュータ・プログラム、デバイス、装置
CN105453097B (zh) 受约束驱动程序平台在用户模式下在沙箱中运行驱动程序
US11676011B2 (en) Private transfer learning
JP7445358B2 (ja) セキュア・インタフェース・コントロールのためのセキュア実行ゲスト所有者コントロール
US11881940B2 (en) Method and system for providing secure message
CN109154903A (zh) 用于虚拟机的恢复环境
CN107077571A (zh) 在可信平台模块中的操作系统上下文的表示
US11120140B2 (en) Secure operations on encrypted data
US20210224393A1 (en) Method and system for dynamic application of storage encryption
US11379125B1 (en) Trusted field programmable gate array
KR20240049021A (ko) 완전동형암호를 이용하여 다수의 민감정보 저장소의 데이터를 결합 연산하는 방법 및 시스템
CN116975902A (zh) 基于可信执行环境的任务执行方法和装置
CN115840946A (zh) 跨云容器镜像部署方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant