CN103488958A - 管理具有隔离组件的现场可编程门阵列的使用 - Google Patents

管理具有隔离组件的现场可编程门阵列的使用 Download PDF

Info

Publication number
CN103488958A
CN103488958A CN201310248192.3A CN201310248192A CN103488958A CN 103488958 A CN103488958 A CN 103488958A CN 201310248192 A CN201310248192 A CN 201310248192A CN 103488958 A CN103488958 A CN 103488958A
Authority
CN
China
Prior art keywords
fpga
data
encrypted
module
programmable gate
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.)
Pending
Application number
CN201310248192.3A
Other languages
English (en)
Inventor
B·A·拉马恰
E·B·南丁格尔
P·巴勒姆
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 Corp
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 Corp filed Critical Microsoft Corp
Priority to CN201810426090.9A priority Critical patent/CN108595985A/zh
Publication of CN103488958A publication Critical patent/CN103488958A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • 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]
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices

Abstract

描述了用可重新编程的密码操作来管理对现场可编程门阵列的使用。描述了对操作系统中多个进程对现场可编程门阵列的使用的管理。现场可编程门阵列能在通用计算系统中用作共享可编程协作处理器资源。FPGA的组件被隔离来保护FPGA以及FPGA和计算机系统的其它组件之间传输的数据。例如,由FPGA写入到存储器的数据被加密,并在从存储器中读回时在FPGA中被解密。在FPGA和其它诸如CPU或GPU的组件之间(直接或通过存储器)传送的数据,可使用对通信组件已知的密钥类似地加密。被传输的数据还可由FPGA或其它组件来数字地签名以提供认证。用于编程FPGA的代码可由作者来加密并签名、以被加密的状态加载到FPGA中并接着在用该代码编程FPGA之前由FPGA自己来解密和认证。

Description

管理具有隔离组件的现场可编程门阵列的使用
技术领域
本发明涉及管理具有隔离组件的现场可编程门阵列的使用。
背景技术
在大多数通用计算机内,操作系统是管理对计算机内资源的访问的主要软件。主要资源是执行被设计成在计算机上运行的应用程序的中央处理单元(CPU)、主存储器和存储。在一些计算机体系结构中,可出现附加的处理单元(诸如处理器中的多个核)和/或附加的处理器(称为协作处理器)。这样的协作处理器的示例包括图形处理单元(GPU)和数字信号处理器(DSP)。操作系统也管理多个进程对这些资源的访问。
现场可编程门阵列(FPGA)是一种通常被用在专用计算设备中的逻辑器件。FPGA通常被用于执行此门阵列尤其适用于的特定的、专用的功能。
FPGA通常位于外围设备或其它专用硬件(诸如连接到诸如PCI总线的系统总线并通过该系统总线被访问的印刷电路板)中。
一般而言,这样的器件被编程一次并被使用多次。因为这些器件是可编程的,相比于其它专用逻辑器件,它们具有能被在现场更新的优势。
发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
一个或多个现场可编程门阵列(FPGA)能在通用计算系统中用作共享可编程协作处理器资源。FPGA能被编程来执行功能,这些功能进而能与一个或多个进程相关联。在多个进程的情况下,FPGA能被共享,并且进程能在访问FPGA的时间间隙期间被分配到FPGA的至少一个部分。用硬件描述语言所写的用于编程FPGA的程序被用作硬件库。操作系统对以下进行管理:将FPGA资源分配到进程、根据要由进程使用FPGA来执行的功能来编程该FPGA、以及对这些进程对FPGA的使用进行调度。
如果FPGA被用作通用计算平台的组件,那么其可能容易受到不安全代码的攻击和执行。例如,对数据传输和存储器的检查可能暴露与安全操作相关的密钥、算法和其它信息。为了提升安全性,FPGA的各个组件被隔离来保护FPGA以及FPGA和计算机系统的其它组件之间传输的数据。
例如,由FPGA写入到存储器的数据被加密,并在从存储器中读回时在FPGA中被解密。在FPGA和诸如CPU或GPU等其它组件之间传输的数据(无论是直接地或通过存储器的)可使用为通信组件所知的密钥(无论是使用共享秘密密钥还是公共/私有密钥对)来被类似地加密。被传输的数据还可由FPGA或其它组件来数字地签名以提供认证。用于编程FPGA的代码可由作者来加密并签名、以被加密的状态加载到FPGA中并接着在用该代码编程FPGA之前由FPGA自己来解密和认证。
在以下描述中,对附图进行了参考,附图构成了实施方式的一部分且在其中作为示例示出了本发明技术的具体示例实现。可以理解,可以使用其它实施例并且可以做出结构上的改变而不背离本发明的范围。
附图说明
图1是对其操作系统能被实现的具有FPGA资源的示例计算系统的框图。
图2是FPGA功能单元的说明性示例的示意图。
图3是使用具有FPGA资源的计算机系统上的硬件和软件库的应用的示例体系结构的示意图。
图4是示出随着时间的对FPGA使用的图。
图5是具有支持隔离组件的现场可编程门阵列的计算系统的框图。
图6是现场可编程门阵列的更详细的框图。
图7是描述安全地编程FPGA的流程图。
具体实施方式
以下部分提供了对示例计算环境的简要的、一般的描述,在该示例计算环境中能实现用于管理对FPGA资源的使用的操作系统。该系统可以用众多通用或专用计算设备来实现。适合的公知计算设备的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备(例如,媒体播放器、笔记本计算机、蜂窝电话、个人数据助理、语音记录器)、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包括以上系统或设备的任一个的分布式计算环境等等。
图1仅仅示出示例计算环境,并不旨在对适合的计算环境的使用范围或功能提出任何限制。
参考图1,示例计算环境包括计算设备100。在一个基本配置中,计算设备100包括至少一个处理单元102(诸如通用计算机的典型中央处理单元(CPU))和存储器104。
计算设备可包括多个处理单元和/或附加的协作处理单元,诸如图形处理单元(GPU)。计算设备还包括一个或多个现场可编程门阵列(FPGA),其被表示为可用作共享(在运行在计算机上的进程间共享)的协作处理资源的FPGA单元120。FPGA可位于其自己的CPU插孔中或位于分开的被插入到扩展槽(诸如快速外围部件互连(PCI-E)槽)中的卡上。通过提供这样的FPGA单元,能在得到硬件加速的益处的情况下实现各种非常适合于门阵列来实现的功能。
取决于处理单元和FPGA单元的配置,该单元或单元内的每个功能单元具有相关联的输入/输出通道来用于与主操作系统进程进行通信。例如,能提供专用于该功能单元并在其与使用该功能单元的进程之间共享的存储器区域。一种请求队列和响应队列还能被用于使得能够实现在FPGA单元内实现的操作的异步调用。此外,FPGA单元中的功能单元针对进程的状态能被保存到用于该功能单元和该进程的存储器区域并从该存储器区域中还原。替换地,其它技术能被用于确保功能单元在被其进程使用前处于已知状态。
取决于计算设备的配置和类型,存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。处理单元、协作处理器和存储器的该配置在图1中用虚线106示出。
计算设备100还可具有附加的资源和设备。例如,计算设备100还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。在图1中通过可移动存储108和不可移动存储110示出这样的附加存储。计算机存储介质包括以用于存储诸如计算机程序指令、数据文件、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110全部都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并且可由计算设备100访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备100的一部分。
计算设备100还可包括通信连接112,其允许设备通过通信介质与其它设备进行通信。通信连接112的实现是取决于正由计算设备访问的通信介质的种类的,这是因为其提供了对这样的介质的接口以允许通过该通信介质的数据的传输和/接收。通信介质通常承载诸如载波或其他传输机制等已调制数据信号中的计算机程序指令、数据文件、数据结构、程序模块或其他数据,并包括任何信息传递介质。术语“已调制数据信号”指其一个或多个特征以这样的方式设置或改变以便在信号中对信息进行编码的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。
计算设备100可具有各种输入设备114,如键盘、鼠标、笔、相机、触摸输入设备等。还可包括诸如显示器、扬声器、打印机等输出设备116。所有这些设备在本领域中是公知的并且不必在此详细讨论。
使用由计算设备处理的诸如程序模块等计算机可执行指令和/或计算机解释的指令来实现在计算设备上执行的应用。一般而言,程序模块包括在由处理单元处理时指示处理单元执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。在分布式计算环境中,这样的任务能由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
在计算设备上执行的操作系统管理进程对计算设备的各种资源的访问。通常,在计算机系统上运行应用导致一个或多个进程被创建,其中每个进程随着时间被分配到不同的资源。如果资源在进程间共享,并且如果进程不能并发地共享资源,那么操作系统随着时间调度对资源的访问。这样的资源之一是图1的FPGA单元120,其可包括一个或多个分立的FPGA。
参考图2,FPGA单元内的资源之一是一组或多组可编程门,在此称为功能单元。每个功能单元通过一组门和/或门阵列中的其它资源来定义。一般而言,功能单元是不重叠的,即,不共享门阵列中的可编程元件。例如,如图2中示意地示出的,功能单元200、202、204和206是不重叠的。大多数FPGA只有一个功能单元。然而,图1中的FPGA单元120可具有一个或多个FPGA。在多个FPGA的情况下,每个FPGA可被视为功能单元。参考图3,每个功能单元是以下资源:其能被分配给一个或多个进程、被操作系统使用实现一操作的硬件库来编程并接着被分配给其的进程用于执行该操作。参考图3,作为一个示例,应用300可使用传统的软件库302以及FPGA硬件库304来执行各种操作。如果应用依赖硬件库304,则操作系统306使用该硬件库来编程FPGA资源310以允许应用300使用库。FPGA可在应用开始执行之前被编程。如果FPGA可被足够快地重新编程,那么库可在操作系统的调度量子(quantum)内被加载到FPGA中。操作系统306还执行来自应用300和CPU308上的软件库302的软件命令。当应用作出对由软件库执行的功能的调用时,操作系统执行来自CPU308上的软件库的功能。当应用作出对由FPGA执行的功能的调用时,操作系统确保FPGA是使用硬件库来编程的并使用FPGA来执行功能。
为了示出不同的功能单元能随着时间如何被使用,现在参考图4。在图4中,在时间T1,使用功能单元400和402。在时间T2,使用功能单元400和404。在时间T2,再次使用功能单元400和402。在时间T1,功能单元400能被分配给进程P1,而功能单元402能被分配给进程P2。在时间T2,进程P2可能是不活动的,而进程P1能使用功能单元400并且进程P3能使用功能单元404。在时间T3,另一进程(诸如进程P4)能开始使用功能单元400;并且进程P2能再次活动来使用功能单元402。通过当前的FPGA实现,在同一时间由不同的进程对多个功能单元的使用暗示多个FPGA的使用。就FPGA能支持由不同的进程在同一时间使用的多个功能单元而言,这些功能单元能在同一FPGA上。实际上,操作系统在时间和空间方面在统计学上复用FPGA。
为了允许这种随着时间由不同的进程对FPGA资源的使用,操作系统具有调度器,该调度器确定在每个调度量子(即,时间段)哪个进程能访问FPGA资源以及何时FPGA功能单元将用硬件库来编程使得功能单元可用于由该进程使用。由此,用于FPGA单元的调度器的实现部分地取决于FPGA单元的性质以及其包括的一个或多个FPGA。要考虑的与FPGA有关的因素包括但不限于以下。例如,在一些情况下,如果一个功能单元不能独立于其它功能单元而被编程,那么整个FPGA要被刷新来编程功能单元。另一考虑是功能单元能被编程的速度以及功能单元的编程是否阻止其它功能模块在编程阶段期间被使用。要考虑的另一因素是进程是否能通过共享功能单元来共享硬件库。调度器还考虑诸如以下的因素:并发进程的数量、应用性能保证、应用的优先级、进程上下文切换花费、对存储器和总线的访问以及在没有功能单元在FPGA单元中可用的情况下软件库的可用性。
可以存在其它情况,其中FPGA单元向应用或操作系统提供通用设施,其因此被调度为应用实例化的长度。例如,自定义网络协议或卸载可作为FPGA单元上的加速服务来提供。相反,一般在通用CPU中执行的系统调用或标准库调用能使用FPGA来被加速。此外,操作系统能基于进程优先级的偏好来复用CPU。在另一情况中,操作系统能使用应用的简档(统计地或动态地生成)来预测最适合于在FPGA单元上运行的功能并接着预先加载该功能,使得其可用于调度。通过将简档用作向导,操作系统能确保空间和时间均在FPGA单元上可用来加速应用。最终,操作系统能使用来自应用的简单提示来知道何时在FPGA单元上调度时间。例如,某些到操作系统内的调用(系统调用)可指示长的延迟(对盘或网络的调用),其提供了FPGA单元能空闲某一时间量来供其它线程或进程使用的提示。因此,操作系统使用各种提示和偏好来创建对复用对FPGA单元的访问的调度。由于操作系统控制调度器,因此其具有关于正在执行和即将到来的工作、可用的硬件库以及在编程FPGA所花费的时间的详细知识。因此,它能使用该知识来确定在执行期间哪些进程利用FPGA。
现在已经描述了这样的计算机体系结构的一般概览,现在将描述示例实现。
参考图5,显示了使用具有隔离组件的现场可编程门阵列502的计算机系统500的一般体系结构。在该示例中,FPGA连接到存储器504、中央处理单元506和图形处理单元508。这种连接是通过传统的高速计算机总线510来提供的,诸如具有超传输总线的CPU插孔、PCI、PCI-E或PCI-X总线。
现场可编程门阵列可包括一个或多个寄存器,该一个或多个寄存器包括密钥(诸如对称密钥或公共/私有密钥对)。它还包括使用那些密钥来执行对应的密码操作的能力。密码组件可以是对FPGA的可编程元件进行编程的一部分。这些组件可用对策(countermeasure)来实现以增加对芯片进行直接分析(这诸如能使用受信平台模块(TPM)组件来实现)的难度。
在一个实现中,密钥能被存储在TPM组件中,其中FPGA仅能在密钥被使用时从该TPM组件中加载这样的密钥。如果TPM能访问由FPGA持有的公共/私有对中的公共密钥,那么TPM能使用FPGA的公共密钥来加密它对FPGA所持有的密钥。由此,密钥本身只在从TPM传送到FPGA之后被解密。这种配置允许被加密的密钥通过不安全的总线(诸如标准PC高速互连)来传送。
通过以下方式在FPGA502和主存储器505之间创建逻辑通道:在所有数据离开FPGA之前用对称密钥对所有数据进行加密,将经加密的数据存储在主存储器中。随后,当经加密的数据从主存储器读回到FPGA中时,用FPGA内的对称密钥对经加密的数据进行解密。在一个实现中,对数据的加密还可包括完整性保护。例如,可使用用于对称密码的经认证的加密操作模式。作为另一示例,数据可被散列并且散列值可被附加到该数据,并接着具有附加的散列值的数据能在被写入到主存储器之前被加密。
通过相互认证和密钥传输协议,在FPGA502和图形处理单元(GPU)508或其它组件(诸如CPU或外围设备)之间创建逻辑通道。在这种情况下,FPGA使用公钥/私钥对来向组件(例如,GPU)认证自己,并且该组件使用第二公钥/私钥对(其中私钥仅仅为GPU所知)来这样做。作为相互认证过程的一部分,FPGA和GPU建立一个或多个共享秘密(例如,两个共享秘密,一个用于完整性保护而一个用于机密性)。这些共享秘密接着被用于作为FPGA和GPU之间安全会话的一部分,对这两个组件之间随后的通信进行加密和认证。
现在参考图6,现在显示了提供隔离组件的现场可编程门阵列的更多细节。
FPGA600包括输入/输出存储器602,经加密的数据604和经加密的密钥606通过该存储器来传输。
当被从其它设备接收到经加密的数据604时,该经加密的数据通过解密模块605(其可实现例如对称密钥密码操作)被解密。在一些情况下,经加密的密钥606(其可由解密模块605使用)被接收并通过解密模块608(其可实现例如公钥/私钥密码操作)来解密。经解密的密钥610可被存储在寄存器612中。在其他情况下,经解密的数据614可被存储在存储器616中。
当传输到其它设备时,数据620(诸如从存储器616)由加密模块622(其可实现例如对称密钥密码操作)加密以提供经加密的数据604。加密模块622可使用存储在寄存器612中的密钥610。在一些情况下,加密模块626(其可实现例如公钥/私钥密码操作)可对加密模块622使用的密钥610进行加密以作为经加密的密钥606来传输。经加密的数据604和密钥606可在传输到计算机系统内的另一组件(诸如存储器、GPU、CPU、外围卡或其它设备)之前被存储在存储器602中。
存储器616一般可由FPGA的可编程元件630来访问以用于对数据的读取和写入两者。有可能具有一些仅仅能被可编程元件读取但不能被修改的寄存器。
在存储器616中接收到的数据还可以是用于编程FPGA单元的功能单元的编程代码。控制电路632从存储器616中读取编程代码并对可编程元件630进行编程。如将在以下更加详细描述的,这样的结构允许经加密和签名的代码被安全地下载到FPGA,在FPGA处其被认证和解密,接着被用于编程FPGA。
在一些实现中,可使用FPGA的可编程元件来实现解密模块和加密模块中的各种密码操作。
在给定这样的结构的情况下,FPGA可在它自己和计算机系统内的其它组件之间安全地传输数据,这是因为数据在所有可访问的总线上被加密。
例如,为了将数据传输到其它组件,FPGA在FPGA内加密数据。经加密的数据接着被传输到主存储器或被直接传输到组件。
如果该组件是FPGA自己,那么经加密的数据从主存储器中读回到FPGA,并且用FPGA内部的密钥和密码操作来对经加密的数据进行解密。在这个示例中,FPGA将主存储器用作附加的存储器。
FPGA可使用主存储器来将数据传输到其它组件。在这个示例中,其它组件从存储器中读取经加密的数据并解密该数据。由此,CPU、GPU或其它组件还包括类似于FPGA中使用的加密/解密模块。
类似地,其它组件可将数据直接地传输到FPGA或通过存储器来传输到FPGA。其它组件对数据进行加密并将其传输到存储器或FPGA。FPGA接着从存储器中读取数据或接收数据,并接着解密它。
如果解密使用共享秘密,那么该秘密还可直接地从FPGA传输到该组件或通过存储器传输到该组件(或可能已经通过该组件传输到FPGA)。共享秘密的传输可使用公钥/私钥加密来执行以保护该秘密。具体而言,为了提供相互认证,FPGA使用公钥/私钥对来向组件(例如,GPU)认证自己,并且该组件使用具有仅仅为GPU所知的私钥的第二公钥/私钥对来这样做。
作为相互认证过程的一部分,FPGA和GPU建立一个或多个共享秘密(例如,两个共享秘密,一个用于完整性保护而一个用于机密性)。这些共享秘密接着被用于作为FPGA和GPU之间安全会话的一部分,对这两个组件之间随后的通信进行加密和认证。
作为另一示例,在图7中显示的,现在描述用于对FPGA进行安全地编程的过程。
一般而言,安全地编程FPGA涉及将经加密的编程逻辑接收到存储器中。经加密的程序逻辑在现场可编程门阵列中被解密并被解密到FPGA中的存储器中。接着使用经解密的程序逻辑来对现场可编程门阵列的可编程元件进行编程。
如图7中显示的,由于程序逻辑旨在实现密码操作,因此所期望的是,确保经加密的程序逻辑是经认证的。例如,经加密的程序逻辑可使用认证加密协议来加密,或者经加密的程序逻辑可包括对未经加密的程序逻辑的数字签名。在一个实现中,经加密的程序逻辑可使用对称密钥来加密,该对称密钥用FPGA的公钥来加密并还由受信源以FPGA能够密码地验证的方式来数字地签名。
FPGA接收700经加密的对称密钥。FPGA使用自己的私钥解密702该对称密钥,并使用受信源的公钥认证该对称密钥。FPGA接着接收704该经加密的程序逻辑。FPGA使用经解密的对称密钥解密706该经加密的程序逻辑,并将该经解密的程序逻辑暂时存储708在FPGA中的存储器中,在那里它被控制逻辑用于编程710FPGA的可编程元件。
在所附权利要求的主题中的术语“制品”、“过程”、“机器”和“物质组成”旨在将权利要求限制到被认为落入35U.S.C.§101中的这些术语的使用所定义的可被专利保护的主题的范围内。
上文中提到的此处描述的替换实施方式中的任一个或全部可以按形成附加混合实施方式所需的任何组合使用。应该理解,在所附权利要求中定义的主题没有必要限于上述的特定实现。上述特定实现仅作为例子被揭示。

Claims (20)

1.一种现场可编程门阵列,包括:
多个可编程元件;以及
隔离的FPGA元件,所述隔离的FPGA元件允许所述现场可编程门阵列与计算机系统中的其它组件的安全通信。
2.如权利要求1所述的现场可编程门阵列,其特征在于,所述隔离的FPGA元件包括相互认证和加密密钥模块,该模块允许对在FPGA和所述计算机系统的其它组件之间传递的数据进行加密和认证。
3.如权利要求2所述的现场可编程门阵列,其特征在于,所述相互认证和加密密钥模块包括程序加载部分,该程序加载部分包括:
第一存储器,所述第一存储器用于接收包括经加密的程序逻辑和至少一个经加密的密钥的输入数据;
第一解密模块,所述第一解密模块具有输入以接收所述经加密的密钥、对应于所述经加密的密钥的发送者的公钥以及与所述现场可编程门阵列相关联的私钥,并具有提供经解密的密钥的输出;
第二解密模块,所述第二解密模块具有输入以接收来自所述第一解密模块的经解密的密钥以及来自所述存储器的经加密的程序逻辑,并具有提供经解密的程序逻辑的输出;
第二存储器,所述第二存储器用于接收经解密的程序逻辑;以及
控制电路,所述控制电路用于使用来自所述第二存储器的经解密的程序逻辑来对所述现场可编程门阵列的可编程元件进行编程。
4.如权利要求1所述的现场可编程门阵列,其特征在于,所述隔离的FPGA元件包括:
存储器访问通道,包括:
加密模块,所述加密模块具有输入以接收来自所述FPGA的处理元件的数据以及将经加密的数据提供到存储器的输出;以及
解密模块,所述解密模块具有输入以接收来自所述存储器的数据以及将经解密的数据提供到所述FPGA内的处理元件的输出。
5.如权利要求1所述的现场可编程门阵列,其特征在于,所述隔离的FPGA元件包括:
通信通道访问模块,包括:
加密模块,所述加密模块具有输入以接收来自所述FPGA的处理元件的数据以及将经加密的数据提供到通信通道的输出;以及
解密模块,所述解密模块具有输入以接收来自所述通信通道的数据以及将经解密的数据提供到所述FPGA内的处理元件的输出。
6.如权利要求1所述的现场可编程门阵列,其特征在于,所述隔离的FPGA元件包括隔离的寄存器,所述隔离的寄存器包括:
加密模块,所述加密模块具有输入以接收来自所述FPGA的处理元件的数据以及将经加密的数据提供到所述FPGA内的寄存器的输出;以及
输入模块,所述输入模块具有用于接收对来自所述寄存器的数据的请求的输入,以及提供来自所述寄存器的经加密数据的输出;
解密模块,所述解密模块具有输入以接收来自所述寄存器的数据以及将经解密的数据提供到所述FPGA内的处理元件的输出。
7.一种用于编程现场可编程门阵列的方法,包括:
将经加密的程序逻辑接收到存储器中;
将经加密的程序逻辑解密到所述现场可编程门阵列内的存储器中;以及
使用经解密的程序逻辑编程所述现场可编程门阵列。
8.如权利要求7所述的方法,其特征在于,还包括:
将用于经加密的程序逻辑的经加密的密钥接收到存储器中;
在所述现场可编程门阵列中解密所述经加密的密钥;以及
在对加密程序逻辑解密时使用经解密的密钥。
9.如权利要求8所述的方法,其特征在于,使用所述现场可编程门阵列的公钥以及所述经加密的程序逻辑的提供者的私钥来对所述经加密的密钥进行加密。
10.如权利要求9所述的方法,其特征在于,所述经加密的程序逻辑是使用对称密钥来加密的。
11.在计算机系统中,一种方法包括:
在现场可编程门阵列和计算机组件之间建立相互认证和经加密的安全通道;以及
通过新通道将数据安全地发送到所述计算机组件。
12.如权利要求11所述的方法,其特征在于,所述安全通道包括存储器,并且安全地发送所述数据包括:
所述现场可编程门阵列加密所述数据并将所述数据存储在所述存储器中;以及
所述计算机组件从所述存储器读取所述数据并在所述计算机组件内解密所述数据。
13.如权利要求12所述的方法,其特征在于,所述计算机组件是现场可编程门阵列。
14.如权利要求12所述的方法,其特征在于,所述计算机组件是中央处理单元。
15.如权利要求12所述的方法,其特征在于,所述计算机组件是受信平台模块组件。
16.如权利要求12所述的方法,其特征在于,所述计算机组件是存储设备。
17.如权利要求12所述的方法,其特征在于,所述计算机组件是具有自己的现场可编程门阵列的另一个计算设备。
18.如权利要求11所述的方法,其特征在于,安全地发送所述数据包括:
所述现场可编程门阵列使用所述计算机组件的公钥和所述现场可编程门阵列的私钥加密所述数据,并将经加密的数据发送到所述计算机组件;以及
所述计算机组件接收并在所述计算机组件内使用所述现场可编程门阵列的公钥和所述计算机组件的私钥解密所述数据。
19.如权利要求18所述的方法,其特征在于,经加密的数据包括至少一个共享秘密。
20.如权利要求19所述的方法,其特征在于,还包括在所述现场可编程门阵列和所述计算机组件之间,通过使用所述至少一个共享秘密加密和解密附加数据,来安全地发送所述附加数据。
CN201310248192.3A 2012-06-20 2013-06-20 管理具有隔离组件的现场可编程门阵列的使用 Pending CN103488958A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810426090.9A CN108595985A (zh) 2012-06-20 2013-06-20 管理具有隔离组件的现场可编程门阵列的使用

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/528,400 US9230091B2 (en) 2012-06-20 2012-06-20 Managing use of a field programmable gate array with isolated components
US13/528,400 2012-06-20

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810426090.9A Division CN108595985A (zh) 2012-06-20 2013-06-20 管理具有隔离组件的现场可编程门阵列的使用

Publications (1)

Publication Number Publication Date
CN103488958A true CN103488958A (zh) 2014-01-01

Family

ID=48901161

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310248192.3A Pending CN103488958A (zh) 2012-06-20 2013-06-20 管理具有隔离组件的现场可编程门阵列的使用
CN201810426090.9A Pending CN108595985A (zh) 2012-06-20 2013-06-20 管理具有隔离组件的现场可编程门阵列的使用

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201810426090.9A Pending CN108595985A (zh) 2012-06-20 2013-06-20 管理具有隔离组件的现场可编程门阵列的使用

Country Status (4)

Country Link
US (1) US9230091B2 (zh)
CN (2) CN103488958A (zh)
TW (1) TWI585612B (zh)
WO (1) WO2013192448A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109154972A (zh) * 2016-05-24 2019-01-04 微软技术许可有限责任公司 使用基于硬件的安全隔离区域来防止电子设备上的盗版和作弊
CN110716724A (zh) * 2019-09-25 2020-01-21 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
CN110717203A (zh) * 2019-09-25 2020-01-21 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
WO2021109275A1 (zh) * 2019-12-05 2021-06-10 广东省新一代通信与网络创新研究院 一种基于fpga设备的网络定义存储方法、读取方法及系统

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8898480B2 (en) 2012-06-20 2014-11-25 Microsoft Corporation Managing use of a field programmable gate array with reprogammable cryptographic operations
US9298438B2 (en) * 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation
US9424019B2 (en) 2012-06-20 2016-08-23 Microsoft Technology Licensing, Llc Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
CN104035890B (zh) * 2014-06-11 2017-02-15 丽水博远科技有限公司 基于静态随机存储器的可编程门阵列芯片加密方法及系统
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
US9507526B2 (en) 2014-11-14 2016-11-29 Netapp, Inc. Just-in time remote data storage allocation
US9703973B2 (en) * 2015-04-28 2017-07-11 International Business Machines Corporation Customer load of field programmable gate arrays
US9847980B2 (en) 2015-06-17 2017-12-19 Microsoft Technology Licensing, Llc Protecting communications with hardware accelerators for increased workflow security
US10038552B2 (en) * 2015-11-30 2018-07-31 Honeywell International Inc. Embedded security architecture for process control systems
US10250572B2 (en) * 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10540506B2 (en) 2017-01-12 2020-01-21 Microsoft Technology Licensing, Llc Field-programmable gate array virtualization
US10404470B2 (en) * 2017-01-13 2019-09-03 Microsoft Technology Licensing, Llc Signature verification of field-programmable gate array programs
CN106708777A (zh) * 2017-01-23 2017-05-24 张军 一种多核异构cpu‑gpu‑fpga系统架构
CN107122243B (zh) * 2017-04-12 2018-07-24 浙江远算云计算有限公司 用于cfd仿真计算的异构集群系统及计算cfd任务的方法
CN107329449B (zh) * 2017-06-26 2020-11-10 中交一航局安装工程有限公司 一种基于ab系统的plc即插即用模块的创建方法
CN108491724A (zh) * 2018-03-13 2018-09-04 山东超越数控电子股份有限公司 一种基于硬件的计算机接口加密装置及方法
WO2019217929A1 (en) 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Failure characterization systems and methods for programmable logic devices
CN111859253B (zh) * 2020-07-08 2023-09-22 上海雪湖科技有限公司 一种基于fpga的高阶波动方程求解方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2650231Y (zh) * 2003-09-26 2004-10-20 北京华旗资讯数码科技有限公司 一种信息加密型存储装置
CN102119390A (zh) * 2008-08-12 2011-07-06 法国电信教育集团-巴黎电信学院 防止可编程逻辑电路的配置文件被解密的方法以及实现该方法的电路
CN102324006A (zh) * 2011-09-06 2012-01-18 四川九洲电器集团有限责任公司 一种处理器程序安全保护装置及保护方法
CN102377564A (zh) * 2011-11-15 2012-03-14 华为技术有限公司 私钥的加密方法及装置

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5748979A (en) 1995-04-05 1998-05-05 Xilinx Inc Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table
JP3627384B2 (ja) 1996-01-17 2005-03-09 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法
US6078736A (en) 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US7085670B2 (en) 1998-02-17 2006-08-01 National Instruments Corporation Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
US6150838A (en) * 1999-02-25 2000-11-21 Xilinx, Inc. FPGA configurable logic block with multi-purpose logic/memory circuit
GB2352548B (en) 1999-07-26 2001-06-06 Sun Microsystems Inc Method and apparatus for executing standard functions in a computer system
JP2001308843A (ja) * 2000-04-19 2001-11-02 Nec Commun Syst Ltd 暗号復号化装置
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US20030086300A1 (en) 2001-04-06 2003-05-08 Gareth Noyes FPGA coprocessing system
US6754881B2 (en) 2001-12-10 2004-06-22 International Business Machines Corporation Field programmable network processor and method for customizing a network processor
US6941538B2 (en) 2002-02-22 2005-09-06 Xilinx, Inc. Method and system for integrating cores in FPGA-based system-on-chip (SoC)
US7386717B2 (en) * 2002-03-07 2008-06-10 Intel Corporation Method and system for accelerating the conversion process between encryption schemes
US7162644B1 (en) 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US7073158B2 (en) 2002-05-17 2006-07-04 Pixel Velocity, Inc. Automated system for designing and developing field programmable gate arrays
GB0304628D0 (en) 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
WO2004010320A2 (en) 2002-07-23 2004-01-29 Gatechance Technologies, Inc. Pipelined reconfigurable dynamic instruciton set processor
US7197647B1 (en) * 2002-09-30 2007-03-27 Carnegie Mellon University Method of securing programmable logic configuration data
US7260794B2 (en) 2002-12-20 2007-08-21 Quickturn Design Systems, Inc. Logic multiprocessor for FPGA implementation
US7028283B1 (en) 2003-01-30 2006-04-11 Xilinx, Inc. Method of using a hardware library in a programmable logic device
US7124391B1 (en) 2003-04-30 2006-10-17 Xilinx, Inc. Method and apparatus for dynamically connecting modules in a programmable logic device
US20040230934A1 (en) 2003-05-15 2004-11-18 Taylor Richard David System and method for emulating systems with multiple field programmable gate arrays
US7366652B2 (en) 2003-06-16 2008-04-29 Springsoft, Inc. Method of programming a co-verification system
US20070277161A1 (en) 2004-03-04 2007-11-29 Trustees Of Boston University System and Method for Programmable Logic Acceleration of Data Processing Applications and Compiler Therefore
US7975062B2 (en) 2004-06-07 2011-07-05 Sling Media, Inc. Capturing and sharing media content
US20060059373A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Integrated circuit chip for encryption and decryption using instructions supplied through a secure interface
US7702927B2 (en) 2004-11-12 2010-04-20 Verayo, Inc. Securely field configurable device
US7386708B2 (en) 2005-01-13 2008-06-10 Lenovo (Singapore) Pte Ltd. Secure hardware personalization service
US7788502B1 (en) 2005-03-10 2010-08-31 Xilinx, Inc. Method and system for secure exchange of IP cores
US7849449B2 (en) 2005-12-05 2010-12-07 National Instruments Corporation Implementing a design flow for a programmable hardware element that includes a processor
US20080104601A1 (en) 2006-10-26 2008-05-01 Nokia Corporation Scheduler for multiple software tasks to share reconfigurable hardware
KR100883655B1 (ko) 2006-12-04 2009-02-18 삼성전자주식회사 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
EP1930834A1 (de) 2006-12-05 2008-06-11 Siemens Schweiz AG Kryptographisch gesichertes Prozessorsystem
US7908476B2 (en) 2007-01-10 2011-03-15 International Business Machines Corporation Virtualization of file system encryption
US7870223B2 (en) 2007-02-27 2011-01-11 Rockwell Automation Technologies, Inc. Services associated with an industrial environment employing controller engine instances
US8621008B2 (en) 2007-04-26 2013-12-31 Mcafee, Inc. System, method and computer program product for performing an action based on an aspect of an electronic mail message thread
US8065517B2 (en) * 2007-11-01 2011-11-22 Infineon Technologies Ag Method and system for transferring information to a device
US20090119503A1 (en) * 2007-11-06 2009-05-07 L3 Communications Corporation Secure programmable hardware component
US8620996B2 (en) 2007-11-19 2013-12-31 Motorola Mobility Llc Method and apparatus for determining a group preference in a social network
US8612409B2 (en) 2007-12-18 2013-12-17 Yahoo! Inc. Method and apparatus for detecting and explaining bursty stream events in targeted groups
US8627052B2 (en) 2008-04-14 2014-01-07 Dell Products, Lp System and method of enabling a function within a module configured to be used within an information handling system
US8533663B2 (en) 2008-05-12 2013-09-10 Oracle America, Inc. System and method for utilizing available best effort hardware mechanisms for supporting transactional memory
US20090288076A1 (en) 2008-05-16 2009-11-19 Mark Rogers Johnson Managing Updates In A Virtual File System
US20090293051A1 (en) 2008-05-22 2009-11-26 Fortinet, Inc., A Delaware Corporation Monitoring and dynamic tuning of target system performance
CN101782893B (zh) 2009-01-21 2014-12-24 上海芯豪微电子有限公司 可重构数据处理平台
US7830732B2 (en) * 2009-02-11 2010-11-09 Stec, Inc. Staged-backup flash backed dram module
US8448122B1 (en) 2009-04-01 2013-05-21 Xilinx, Inc. Implementing sub-circuits with predictable behavior within a circuit design
US8369460B1 (en) 2009-05-18 2013-02-05 The United States Of America As Represented By The Secretary Of The Army Reduced complexity constellation pattern recognition and classification method
US8620967B2 (en) 2009-06-11 2013-12-31 Rovi Technologies Corporation Managing metadata for occurrences of a recording
US8332795B2 (en) 2009-12-15 2012-12-11 Apple Inc. Automated pin multiplexing for programmable logic device implementation of integrated circuit design
US8368423B2 (en) 2009-12-23 2013-02-05 L-3 Communications Integrated Systems, L.P. Heterogeneous computer architecture based on partial reconfiguration
CN101789866B (zh) * 2010-02-03 2012-06-13 国家保密科学技术研究所 高可靠性安全隔离与信息交换方法
US8417965B1 (en) * 2010-04-07 2013-04-09 Xilinx, Inc. Method and circuit for secure definition and integration of cores
US8516268B2 (en) 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
CA2719653A1 (en) 2010-11-05 2011-01-18 Ibm Canada Limited - Ibm Canada Limitee Partial inlining with software based restart
US9298438B2 (en) 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation
US9424019B2 (en) 2012-06-20 2016-08-23 Microsoft Technology Licensing, Llc Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor
US20130346985A1 (en) 2012-06-20 2013-12-26 Microsoft Corporation Managing use of a field programmable gate array by multiple processes in an operating system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2650231Y (zh) * 2003-09-26 2004-10-20 北京华旗资讯数码科技有限公司 一种信息加密型存储装置
CN102119390A (zh) * 2008-08-12 2011-07-06 法国电信教育集团-巴黎电信学院 防止可编程逻辑电路的配置文件被解密的方法以及实现该方法的电路
CN102324006A (zh) * 2011-09-06 2012-01-18 四川九洲电器集团有限责任公司 一种处理器程序安全保护装置及保护方法
CN102377564A (zh) * 2011-11-15 2012-03-14 华为技术有限公司 私钥的加密方法及装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109154972A (zh) * 2016-05-24 2019-01-04 微软技术许可有限责任公司 使用基于硬件的安全隔离区域来防止电子设备上的盗版和作弊
CN109154972B (zh) * 2016-05-24 2022-01-11 微软技术许可有限责任公司 使用基于硬件的安全隔离区域来防止电子设备上的盗版和作弊
CN110716724A (zh) * 2019-09-25 2020-01-21 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
CN110717203A (zh) * 2019-09-25 2020-01-21 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
CN110716724B (zh) * 2019-09-25 2021-01-08 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
WO2021057180A1 (zh) * 2019-09-25 2021-04-01 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
WO2021109275A1 (zh) * 2019-12-05 2021-06-10 广东省新一代通信与网络创新研究院 一种基于fpga设备的网络定义存储方法、读取方法及系统

Also Published As

Publication number Publication date
WO2013192448A1 (en) 2013-12-27
TWI585612B (zh) 2017-06-01
TW201413490A (zh) 2014-04-01
US9230091B2 (en) 2016-01-05
CN108595985A (zh) 2018-09-28
US20130346758A1 (en) 2013-12-26

Similar Documents

Publication Publication Date Title
CN103488958A (zh) 管理具有隔离组件的现场可编程门阵列的使用
CN103544417A (zh) 用可重新编程的密码操作来管理对现场可编程门阵列的使用
CN111460453B (zh) 机器学习训练方法、控制器、装置、服务器、终端和介质
CN111143890B (zh) 一种基于区块链的计算处理方法、装置、设备和介质
KR101712784B1 (ko) 글로벌 플랫폼 규격을 사용하는 발행자 보안 도메인에 대한 키 관리 시스템 및 방법
CN103069428B (zh) 不可信云基础设施中的安全虚拟机引导
US8868925B2 (en) Method and apparatus for the secure processing of confidential content within a virtual machine of a processor
US8266448B2 (en) Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
US8135964B2 (en) Apparatus, system, method, and computer program product for executing a program utilizing a processor to generate keys for decrypting content
CN105027494A (zh) 公共云中的受信任的数据处理
CN104380652A (zh) 用于nfc使能设备的多发行商安全元件分区架构
CN104813336A (zh) 平台硬化数字版权管理密钥供应
CN104246784A (zh) 用于保护和安全地传输媒体内容的方法、设备和系统
CN107528830A (zh) 账号登陆方法、系统及存储介质
CN111464297A (zh) 基于区块链的事务处理方法、装置、电子设备和介质
CN111435396A (zh) 智能安全主控
CN108491724A (zh) 一种基于硬件的计算机接口加密装置及方法
CN103873245B (zh) 虚拟机系统数据加密方法及设备
CN107920060A (zh) 基于账号的数据访问方法和装置
US9372985B2 (en) Information processing device, information processing method, and computer program
CN113961931A (zh) adb工具使用方法、装置和电子设备
CN100410828C (zh) 对访问基于计算机的对象的授权
Jung et al. An architecture for virtualization-based trusted execution environment on mobile devices
CN111222886A (zh) 一种消费卡使用方法、系统、设备和存储介质
CN117744117A (zh) 权限设置方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140101