掌桥专利:专业的专利平台
掌桥专利
首页

用于可编程逻辑器件的资产管理系统和方法

文献发布时间:2023-06-19 10:08:35


用于可编程逻辑器件的资产管理系统和方法

本专利申请要求2019年5月10日提交的题为“SECURE BOOT SYSTEMS AND METHODSFOR PROGRAMMABLE LOGIC DEVICES”的美国临时专利申请第62/846,365号的优先权和权益,其全部内容通过引用结合于此。

本专利申请要求2018年11月5日提交的题为“ASSET MANAGEMENT SYSTEMS ANDMETHODS FOR PROGRAMMABLE LOGIC DEVICES”的美国临时专利申请第62/756,021号的优先权和权益,其全部内容通过引用结合于此。

本专利申请要求2018年11月5日提交的题为“KEY PROVISIONING SYSTEMS ANDMETHODS FOR PROGRAMMABLE LOGIC DEVICES”的美国临时专利申请第62/756,001号的优先权和权益,其全部内容通过引用结合于此。

本专利申请要求2018年11月5日提交的题为“FAILURE CHARACTERIZATIONSYSTEMS AND METHODS FOR PROGRAMMABLE LOGIC DEVICES”的美国临时专利申请第62/756,015号的优先权和权益,其全部内容通过引用结合于此。

本专利申请要求2018年5月11日提交的题为“DEVICES WITH PROGRAMMABLE LOGICAND SECURITY FEATURES AND METHODS OF USING”的美国临时专利申请第62/670,487号的优先权和权益,其全部内容通过引用结合于此。

技术领域

本发明总体上涉及可编程逻辑器件,并且更具体地,涉及这种器件的存储器、通信接口和/或其他资产的安全管理。

背景技术

可编程逻辑器件(PLD)(例如,现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、现场可编程片上系统(FPSC)或其它类型的可编程器件)可以用各种用户设计来配置以实现期望的功能。通常,用户设计被合成并映射到特定PLD中可用的可配置资源(例如,可编程逻辑门、查找表(LUT)、嵌入式硬件或其他类型的资源)和互连。然后可以确定合成的和映射的用户设计的物理布局和路由,以生成特定PLD的配置数据。

PLD的客户端通常将相当多的资源用于为其所选择的PLD类型和/或能力开发配置,并且保护配置数据和防止与所选择的PLD和/或开发的配置相关的期望操作或能力被破坏,对于许多PLD的客户端来说至关重要。因此,本领域需要用于制造、保护、分发、升级和测试PLD和PLD配置的系统和方法,特别是在可信计算应用和可信计算体系结构的环境中。

附图说明

图1示出了根据本公开的实施例的可编程逻辑器件(PLD)的框图。

图2示出了根据本公开的实施例的PLD的逻辑块的框图。

图3示出了根据本公开的实施例的PLD的设计过程。

图4示出了根据本公开的实施例的安全PLD的框图。

图5A示出了根据本公开的实施例的安全PLD供应系统的框图。

图5B示出了根据本公开的实施例的安全PLD供应系统的框图。

图6示出了根据本公开的实施例的包括安全PLD的用户设备的框图。

图7示出了根据本公开的实施例的用于锁定的安全PLD的供应过程。

图8A示出了根据本公开的实施例的用于安全PLD的锁定策略计划的框图。

图8B示出了根据本公开的实施例的用于安全PLD的锁定策略计划的框图。

图9A至图9D示出了根据本公开的实施例的与用于安全PLD的相应锁定策略计划相关联的访问表。

图10示出了根据本公开的实施例的用于安全PLD的资产管理过程。

通过参考下面的详细描述可以最好地理解本公开的实施例及其优点。应当理解,相同的附图标记用于标识在一个或多个附图中所示出的相同的元件,其中,文中的示出是为了说明本公开的实施例而不是为了限制本公开的实施例。

具体实施方式

如本文所述,本公开提供了用于在可信计算应用和体系结构中使用的管理关于对锁定的安全可编程逻辑器件(PLD)的资产(例如,总线、端口和/或存储器扇区)的内部和外部访问的锁定策略的系统和方法。例如,实施例提供了用于通过设置存储在安全PLD的安全存储器中的相应锁定状态位来将锁定状态分配给单个资产和/或资产的分组的系统和方法,安全PLD的安全存储器本身可以被锁定到客户端定义的配置和/或操作环境,以帮助减少或消除丢失或提取客户端或制造商的数据的风险,或重新编程这种数据,而不需要保护或限制被锁定的安全PLD的分发(例如,被锁定的安全PLD可以用非客户端数据编程并且潜在地被用于破坏用于可信平台的各种安全操作,例如,包括安全地配置和/或引导这种平台/用户设备),如本文所述。

根据本文阐述的实施例,提供了在可编程逻辑器件(PLD)中安全地实现用户设计的技术。在各种实施例中,用户设计可以被转换成PLD组件集合(例如,被配置用于逻辑、算术或其它硬件功能)及其在PLD中可用的相关联的互连和/或由其表示。例如,PLD可包括多个可编程逻辑块(PLB)以及可用于互连PLB和/或逻辑单元的可配置路由资源,每个PLB包括多个逻辑单元。在一些实施例中,每个PLB可以用2到16个之间或2到32个之间的逻辑单元来实现。

通常,PLD(例如,FPGA)结构包括一个或多个路由结构和布置在可编程功能块(例如,PFB和/或PLB)内的类似布置的逻辑单元的阵列。路由结构的目的是以必要的组合将逻辑单元/PLB的端口可编程地彼此连接以实现预期功能。安全PLD可包括各种附加的“硬”引擎或模块,所述“硬”引擎或模块被配置为提供可链接到PLD结构的操作以提供可配置的可信计算功能和/或体系结构的一系列安全功能。当将用户设计合成、映射、放置和/或路由到多个PLD组件中时,可以使用路由灵活性和可配置功能嵌入。作为各种用户设计优化过程的结果(这可导致相当大的设计时间和成本),用户设计可以相对有效地实现,从而释放否则将被附加操作和路由资源占用的可配置PLD组件。在一些实施例中,优化的用户设计可以由识别由PLD提供的各种类型的组件及其相关联的信号的网表来表示。在产生经转换的用户设计的网表的实施例中,可以对这样的网表执行优化过程。一旦优化,这样的配置就可以被加密和签名和/或以其他方式被保护以分发到安全的PLD,并且这样的过程可以包括一个或多个密钥供应过程,如本文所述。

现在参考附图,图1示出了根据本公开的实施例的PLD 100的框图。PLD 100(例如,现场可编程门阵列(FPGA))、复杂可编程逻辑器件(CPLD)、现场可编程片上系统(FPSC)或其它类型的可编程器件)通常包括输入/输出(I/O)块102和逻辑块104(例如,也被称为可编程逻辑块(PLB)、可编程功能单元(PFU)或可编程逻辑单元(PLC))。更一般地,PLD 100的单独元件可被称作PLD结构(PLD fabric)。

I/O块102为PLD 100提供I/O功能(例如,以支持一个或多个I/O和/或存储器接口标准),而可编程逻辑块104为PLD 100提供逻辑功能(例如,基于LUT的逻辑或基于逻辑门阵列的逻辑)。附加的I/O功能可以由串行器/解串行器(SERDES)块150和物理编码子层(PCS)块152提供。PLD 100还可以包括硬知识产权核心(IP)块160以提供附加功能(例如,在硬件中提供的基本上预定的功能,其可以用比逻辑块104更少的编程来配置)。

PLD 100还可以适当地包括存储器块106(例如,EEPROM块、块SRAM和/或闪存)、时钟相关电路108(例如,时钟源、PLL电路和/或DLL电路)和/或各种路由资源180(例如,互连和适当的开关逻辑,以提供用于在整个PLD 100中路由信号的路径,例如用于时钟信号、数据信号或其它)。通常,如本领域技术人员将理解的,PLD 100的各种元件可用于执行其用于期望应用的预期功能。

例如,某些I/O块102可用于对存储器106编程或将信息(例如,各种类型的用户数据和/或控制信号)传送到PLD 100/从PLD 100传送。其它I/O块102包括第一编程端口(其可以表示中央处理单元(CPU)端口、外围数据端口、SPI接口和/或sysCONFIG编程端口)和/或诸如联合测试行动组(JTAG)端口的第二编程端口(例如,通过采用诸如电气和电子工程师协会(IEEE)1149.1或1532标准的标准)。在各种实施例中,I/O块102可以被包括以接收配置数据和命令(例如,通过一个或多个连接140),以配置PLD 100用于其预期的使用,并且支持串行或并行设备配置以及适当时与SERDES块150、PCS块152、硬IP块160和/或逻辑块104的信息传输。

应当理解,各种元件的数量和位置不是限制性的,并且可以取决于期望的应用。例如,对于期望的应用或设计规范(例如,对于所选择的可编程器件的类型)可能不需要各种元件。

此外,应当理解,为了清楚起见,以块形式示出了元件,并且各种元件通常分布在整个PLD 100中,例如在逻辑块104、硬IP块160和路由资源(例如,图2的路由资源180)中和之间,以执行它们的常规功能(例如,存储配置PLD 100的配置数据或在PLD 100内提供互连结构)。还应当理解,如本领域技术人员将理解的,本文公开的各种实施例不限于诸如PLD100的可编程逻辑器件,并且可以应用于各种其它类型的可编程器件。

外部系统130可用于创建PLD 100的期望用户配置或设计,并生成相应的配置数据以编程(例如,配置)PLD 100。例如,系统130可以将这样的配置数据提供给一个或多个I/O块102、SERDES块150和/或PLD 100的其它部分。因此,可编程逻辑块104、各种路由资源和PLD 100的任何其它适当组件可被配置为根据用户指定的应用来操作。

在所示实施例中,系统130被实现为计算机系统。就这一点而言,系统130包括例如一个或多个处理器132,其可被配置为执行指令,例如软件指令,所述指令提供在一个或多个存储器134中和/或以非暂时形式存储在一个或多个非暂时机器可读介质136(例如,其可在系统130内部或外部)中。例如,在一些实施例中,系统130可以运行PLD配置软件,诸如可从莱迪思半导体公司获得的Lattice Diamond System Planner软件,以允许用户创建期望的配置并生成相应的配置数据来编程PLD 100。

系统130还包括,例如,用于向用户显示信息的用户界面135(例如,屏幕或显示器),以及用于接收用户命令或设计条目以准备PLD 100的期望配置的一个或多个用户输入设备137(例如,键盘、鼠标、跟踪球、触摸屏和/或其他设备)。

图2示出了根据本公开的实施例的PLD 100的逻辑块104的框图。如所讨论的,PLD100包括多个逻辑块104,该多个逻辑块104包括各种组件以提供逻辑和算术功能。在图2所示的示例性实施例中,逻辑块104包括多个逻辑单元200,所述多个逻辑单元200可以在逻辑块104内内部互连和/或使用路由资源180在外部互连。例如,每个逻辑单元200可包括各种组件,诸如:查找表(LUT)202、模式逻辑电路204、寄存器206(例如触发器或锁存器)以及用于选择逻辑单元200和/或逻辑单元200之间的期望信号路径的各种可编程多路复用器(例如可编程多路复用器212和214)。在该示例中,LUT202接受四个输入220A-220D,这使其成为四输入LUT(其可被缩写为“4-LUT”或“LUT4”),该四输入LUT可由PLD 100的配置数据编程以实现具有四个或更少输入的任何适当逻辑操作。模式逻辑204可包括各种逻辑元件和/或附加输入,例如输入220E,以支持各种模式的功能,如本文所述。在其它示例中,LUT 202可以具有任何其它合适的大小,具有用于PLD的特定实现的任何其它合适数量的输入。在一些实施例中,可以为不同的逻辑块104和/或不同的逻辑单元200提供不同大小的LUT。

在一些实施例中,来自LUT 202和/或模式逻辑204的输出信号222可以通过寄存器206以提供逻辑单元200的输出信号233。在各种实施例中,如图所示,来自LUT 202和/或模式逻辑204的输出信号223可以直接传递到输出223。取决于多路复用器210-214和/或模式逻辑204的配置,可以根据控制信号230将输出信号222临时存储(例如,锁存)在锁存器206中。在一些实施例中,用于PLD 100的配置数据可以配置逻辑单元200的输出223和/或233,以在分级或级联布置(例如,包括多个电平)中作为另一逻辑单元200(例如,在另一逻辑块或相同逻辑块中)的一个或多个输入被提供,以配置不能在单个逻辑单元200中实现的逻辑操作(例如,具有太多输入以由单个LUT 202实现的逻辑操作)。此外,逻辑单元200可以用多个输出和/或互连来实现,以促进可选择的操作模式,如本文所述。

模式逻辑电路204可用于PLD 100的一些配置,以有效地实现算术操作,例如加法器、减法器、比较器、计数器或其它操作,以有效地形成一些扩展逻辑操作(例如,较高阶LUT、对多位数据工作),以有效地实现相对较小的RAM,和/或允许在逻辑、算术、扩展逻辑和/或其它可选择操作模式之间进行选择。就这一点而言,跨多个逻辑单元202的模式逻辑电路204可以链锁在一起,以在相邻逻辑单元202之间传递进位信号205和进位输出信号207,和/或其它信号(例如,输出信号222),如本文所述。在图2的示例中,进位信号205可以例如直接传递到模式逻辑电路204,或者可以通过配置一个或多个可编程多路复用器传递到模式逻辑电路204,如本文所述。在一些实施例中,模式逻辑电路204可以跨多个逻辑块104链接。

图2中示出的逻辑单元200仅是示例,并且根据不同实施例的逻辑单元200可包括PLD组件的不同组合和布置。此外,尽管图2示出了具有八个逻辑单元200的逻辑块104,但是根据其它实施例的逻辑块104可以包括更少的逻辑单元200或更多的逻辑单元200。逻辑块104的每个逻辑单元200可用于实现由PLD 100实现的用户设计的一部分。就这一点而言,PLD 100可以包括许多逻辑块104,每个逻辑块104可以包括逻辑单元200和/或用于共同实现用户设计的其它组件。

如本文进一步描述的,当PLD 100被配置为实现用户设计时,用户设计的部分可被调整为占用更少的逻辑单元200、更少的逻辑块104和/或对路由资源180的负担更少。根据各种实施例的这种调整可以识别要在占用逻辑单元200和/或逻辑块104的多个实施例的布置中实现的某些逻辑、算术和/或扩展逻辑操作。如在此进一步描述的,优化过程可以路由与在此描述的算术/逻辑操作相关联的各种信号连接,使得逻辑、纹波算术或扩展逻辑操作可以被实现到一个或多个逻辑单元200和/或逻辑块104中,以与先前的算术/逻辑操作相关联。

图3示出了根据本公开的实施例的PLD的设计过程300。例如,图3的过程可以由运行Lattice Diamond软件的系统130来执行以配置PLD 100。在一些实施例中,图3中引用的各种文件和信息可以存储在例如存储器134、机器可读介质136和/或其它数据结构中的一个或多个数据库和/或其它数据结构中。在各种实施例中,当将这样的文件和/或信息存储和/或传送到PLD 100和/或其它设备或系统时,可以加密或以其它方式保护这些文件和/或信息。

在操作310中,系统130接收指定PLD 100的期望功能的用户设计。例如,用户可以(例如,通过用户输入设备137和表示设计的硬件描述语言(HDL)代码)与系统130交互以识别用户设计的各种特征(例如,高级逻辑操作、硬件配置和/或其它特征)。在一些实施例中,用户设计可以在寄存器传输级(RTL)描述(例如,门级描述)中提供。系统130可执行一个或多个规则检查以确认用户设计描述PLD 100的有效配置。例如,系统130可以拒绝无效配置和/或请求用户提供适当的新设计信息。

在操作320中,系统130合成设计以创建将用户设计的抽象逻辑实现标识为多个逻辑组件(例如,也称为网表组件)的网表(例如,合成RTL描述),所述多个逻辑组件可以包括PLD 100的可编程组件和硬IP组件两者。在一些实施例中,网表可以以电子设计交换格式(EDIF)存储在本地通用数据库(NGD)文件中。

在一些实施例中,在操作320中将设计合成到网表中可以涉及将用户设计中的逻辑操作、硬件配置和/或其它特征的高级描述转换(例如,转译)到PLD组件(例如,逻辑块104、逻辑单元200和PLD 100的被配置为用于实现用户设计的逻辑、算术或其它硬件功能的其它组件)及其相关联的互连或信号的集合。取决于实施例,转换后的用户设计可以表示为网表。

在一些实施例中,在操作320中将设计合成到网表中可进一步涉及对用户设计(例如,转换/翻译成一组PLD组件及其相关联的互连或信号的用户设计)执行优化过程,以减少传播延迟、PLD资源和路由资源的消耗、和/或在配置为实现用户设计时优化PLD的性能。取决于实施例,优化过程可以在表示经转换/转译的用户设计的网表上执行。取决于实施例,优化过程可以在网表中表示优化的用户设计(例如,以产生优化的网表)。

在一些实施例中,优化过程可包括优化逻辑函数操作、纹波算术操作和/或扩展逻辑函数操作的某些实例,当PLD被配置为实现用户设计时,所述逻辑函数操作将占用多个可配置PLD组件(例如,逻辑单元200、逻辑块104和/或路由资源180)。例如,优化过程可包括检测在用户设计中实现逻辑函数操作、纹波算术操作、扩展逻辑函数操作和/或相应的路由资源的多个模式或可配置逻辑单元,交换实现各种操作的逻辑单元的操作模式以减少用于实现操作和/或减少与操作相关联的传播延迟的PLD组件和/或路由资源的数量,和/或重新编程相应的LUT和/或模式逻辑以考虑所交换的操作模式。

在另一示例中,优化过程可以包括检测用户设计中的扩展逻辑功能操作和/或相应的路由资源,将所述扩展逻辑操作实现为具有单个物理逻辑单元输出的多模式或可转换逻辑单元,将第一组逻辑单元的逻辑单元输出路由或耦合到第二组逻辑单元的输入,以减少用于实现所述扩展逻辑操作和/或路由资源的PLD组件的数量和/或减少与所述扩展逻辑操作相关联的传播延迟,和/或编程相应的LUT和/或模式逻辑,以至少利用所述第一组逻辑单元和第二组逻辑单元实现所述扩展逻辑功能操作。

在另一示例中,优化过程可包括检测在用户设计中实现逻辑函数操作、纹波算术操作、扩展逻辑函数操作和/或相应路由资源的多个模式或可配置逻辑单元,交换实现各种操作的逻辑单元的操作模式以沿PLD内的信号路径提供可编程寄存器以减少与信号路径相关联的传播延迟,以及重新编程相应的LUT、模式逻辑和/或其它逻辑单元控制位/寄存器以考虑所交换的操作模式和/或对可编程寄存器编程以存储或锁存信号路径上的信号。

在操作330中,系统130执行映射过程,该映射过程标识可用于实现用户设计的PLD100的组件。就这一点而言,系统130可以将优化的网表(例如,作为优化过程的结果存储在操作320中)映射到由PLD 100提供的各种类型的组件(例如,逻辑块104、逻辑单元200、嵌入式硬件和/或PLD 100的其它部分)及其相关联的信号(例如,以逻辑方式,但尚未指定放置或路由)。在一些实施例中,映射可以在一个或多个先前存储的NGD文件上执行,映射结果存储为物理设计文件(例如,也称为NCD文件)。在一些实施例中,映射过程可以在操作320中作为合成过程的一部分来执行,以产生映射到PLD组件的网表。

在操作340中,系统130执行放置过程以将映射的网表组件分配给驻留在PLD 100的特定物理位置处的特定物理组件(例如,分配给PLD 100的特定逻辑单元200、逻辑块104、路由资源180和/或其它物理组件),并因此确定PLD 100的布局。在一些实施例中,放置可以在一个或多个先前存储的NCD文件上执行,放置结果被存储为另一物理设计文件。

在操作350中,系统130执行路由处理以基于在操作340中确定的放置布局来路由PLD 100的组件之间的连接(例如,使用路由资源180),以实现放置的组件之间的物理互连。在一些实施例中,路由可以在一个或多个先前存储的NCD文件上执行,路由结果被存储为另一物理设计文件。

在各种实施例中,在操作350中路由连接可进一步涉及对用户设计执行优化过程,以减少传播延迟、PLD资源和/或路由资源的消耗、和/或在配置为实现用户设计时优化PLD的性能。在一些实施例中,优化过程可以在表示转换/转译的用户设计的物理设计文件上执行,并且优化过程可以在物理设计文件中表示优化的用户设计(例如,以产生优化的物理设计文件)。

在一些实施例中,优化过程可包括优化逻辑函数操作、纹波算术操作和/或扩展逻辑函数操作的某些实例,当PLD被配置为实现用户设计时,所述逻辑函数操作将占用多个可配置PLD组件(例如,逻辑单元200、逻辑块104和/或路由资源180)。例如,优化过程可包括检测在用户设计中实现逻辑函数操作、纹波算术操作、扩展逻辑函数操作和/或相应的路由资源的多个模式或可配置逻辑单元,交换实现各种操作的逻辑单元的操作模式以减少用于实现操作和/或减少与操作相关联的传播延迟的PLD组件和/或路由资源的数量,和/或重新编程相应的LUT和/或模式逻辑以考虑所交换的操作模式。

在另一示例中,优化过程可以包括检测用户设计中的扩展逻辑功能操作和/或相应的路由资源,将所述扩展逻辑操作实现为具有单个物理逻辑单元输出的多模式或可转换逻辑单元,将第一组逻辑单元的逻辑单元输出路由或耦合到第二组逻辑单元的输入,以减少用于实现所述扩展逻辑操作和/或路由资源的PLD组件的数量和/或减少与所述扩展逻辑操作相关联的传播延迟,和/或编程相应的LUT和/或模式逻辑,以至少利用所述第一组逻辑单元和第二组逻辑单元实现所述扩展逻辑功能操作。

在另一示例中,优化过程可包括检测在用户设计中实现逻辑函数操作、纹波算术操作、扩展逻辑函数操作和/或相应路由资源的多个模式或可配置逻辑单元,交换实现各种操作的逻辑单元的操作模式以沿PLD内的信号路径提供可编程寄存器以减少与信号路径相关联的传播延迟,以及重新编程相应的LUT、模式逻辑和/或其它逻辑单元控制位/寄存器以考虑所交换的操作模式和/或编程可编程寄存器以存储或锁存信号路径上的信号。

路由中的改变可以传播回先前的操作,例如合成、映射和/或放置,以进一步优化用户设计的各个方面。

因此,在操作350之后,可以提供一个或多个物理设计文件,该物理设计文件在用户设计已经为PLD 100合成(例如,转换和优化)、映射、放置和路由(例如,进一步优化)之后指定用户设计(例如,通过组合相应先前操作的结果)。在操作360中,系统130生成用于合成的、映射的、放置的和路由的用户设计的配置数据。在各种实施例中,可以将这样的配置数据加密和/或以其他方式保护作为这样的生成过程的一部分,如本文中更全面地描述的。在操作370中,系统130通过例如通过连接140将配置数据比特流(例如,“配置”)加载到PLD100中,用配置数据配置PLD 100。例如,可以以加密的、签名的或未受保护/未认证的形式提供这样的配置,并且PLD 100可以被配置为不同地对待安全配置和不受保护的配置,如本文所述。

图4示出了根据本公开的实施例的安全PLD 410的框图。在各种实施例中,安全PLD410可以由类似于图1中关于PLD 100所描述的那些元件来实现,但是具有附加的可配置和/或硬IP元件,所述附加的可配置和/或硬IP元件被配置为促进安全PLD 410在可信计算应用和/或体系结构中的操作,如本文所述。特别地,安全PLD 410可以包括:PLD结构400,通过各种总线链接到安全引擎420;配置引擎440;非易失性存储器(NVM)450;可编程I/O 404和/或其它集成电路(IC)模块480,如图所示,所有这些都实现在单片IC上。通常,PLD结构400可以由关于PLD 100描述的各种元件中的任何一个来实现,并且可以使用类似于关于图3描述的过程300的设计过程来配置PLD结构400,以根据期望的配置来生成和编程PLD结构400。更具体地,安全PLD 400可以被配置为在根据接收的配置对PLD结构400编程之前使用图4中标识的各种标识的硬IP元件来接收、解密、认证和/或验证接收的配置。

安全引擎420可以被实现为硬IP资源,所述硬IP资源被配置为提供供PLD结构400和/或配置引擎440使用的各种安全功能。在图4所示的实施例中,安全引擎420包括器件ID422(例如,64位唯一的和器件特定的ID)、真随机数生成器424、安全散列算法(SHA)服务426(例如,SHA256、SHA-2和/或SHA-3服务)、高级加密标准(AES)服务428(例如,AES128/256加密/解密服务)、公共密钥/私有密钥对生成器(P/PKG)430、椭圆曲线数字签名算法(ECDSA)认证服务432(例如,ECDSA256服务)和/或其它安全服务434。还如图4所示,安全引擎420可以通过有限总线406通信地链接到PLD结构400,并通过安全总线446通信地链接到配置引擎440。通常,有限总线406可以被配置为允许PLD结构400访问由安全引擎420托管的有限的一组安全功能和/或以有限的方式访问这样的安全功能,例如不允许配置由安全引擎420托管的任何一个或所有安全功能,不允许访问器件ID 422,和/或不允许访问由P/PKG430生成的公共密钥/私有密钥对的私有密钥。相反,安全总线446可以被配置为允许配置引擎440访问和/或修改安全引擎420的所有安全功能、数据和/或配置。通常,有限总线406和安全总线446中的任一个或两者可以被配置为在安全引擎420和安全PLD 410的其它元件之间提供加密的和/或以其它方式安全的通信。

配置引擎440可以被实现为硬IP资源,所述硬IP资源被配置为管理安全PLD 410的各个元件的配置和/或在安全PLD 410的各个元件之间的通信。例如,配置引擎440可以被配置为通过配置I/O 448从外部系统130/机器可读介质136接收PLD结构400的加密/安全配置,使用安全引擎420的安全功能来认证和/或解密这样的配置,将经认证和/或解密的配置存储在NVM 450中,软或硬锁定NVM 450中对应于所存储的配置的部分,将所存储的配置标记为经认证和/或经验证的可引导,和/或根据经认证的、经解密的、经验证的和/或锁定的配置来编程PLD结构400,如本文所述。在进一步的实施例中,配置引擎440可以被配置为通过配置端口444配置可编程I/O 404的至少一部分(例如,启用和/或禁用可编程I/O 404的至少一部分),如图所示。

更一般地,配置引擎440可以被配置为管理或控制安全PLD 410的元件的配置、安全PLD 410的元件的锁定状态、PLD结构400的引导以及整个安全PLD 410的流控制。例如,配置引擎440可以被配置为例如软锁定或解锁或硬锁定总线408、442、443、446的任何一个或部分,和/或软锁定或解锁或硬锁定NVM 450的任何部分或扇区。在默认解锁配置中,总线408、442和446可以被实现为在功能上类似于安全总线446的安全总线。配置I/O 448的外部访问总线443可以根据JTAG、I2C、SPI和/或其它外部访问总线或协议中的一个或多个来实现,例如,被配置为提供到外部系统130/机器可读介质136和/或来自外部系统130/机器可读介质136的可锁定/解锁访问。在特定实施例中,可以根据wishbone总线/接口来实现安全总线408。

NVM 450可以被实现为硬IP资源,所述硬IP资源被配置为提供用于促进安全PLD410的安全操作的数据的安全非易失性存储。例如,NVM 450可以包括与NVM 460中的存储器位置相对应的锁定策略扇区460,该锁定策略扇区460指示存储在NVM 450中的数据的锁定状态。锁定策略扇区460的内容可以在安全PLD 410上电时被传送到配置引擎440内的影子寄存器,例如,以允许这样的内容由配置引擎440和/或PLD结构400根据锁定策略扇区460中的设置/锁定状态来动态地修改。通常,相对于PLD结构400、配置I/O 448/外部访问总线443和/或安全PLD 410的其它元件,特定资源的锁定状态指示对该资源的读、写/编程和/或擦除访问。

如本文所述,“软”锁定指的是NVM 450中的总线/端口或存储器位置的读、写和/或擦除访问状态,该状态可由PLD结构400和/或跨外部访问总线443以编程方式启用或禁用,以粒度地允许或不允许对相应资源的读、写和/或擦除访问。“硬”锁定是指NVM450中总线/端口或存储器位置的读、写和/或擦除访问状态,该状态可以通过外部访问总线443被编程地启用,但不能由PLD结构400启用或禁用且不能通过外部访问总线443被禁用。在各种实施例中,硬锁定的断言通常是单向的,并且消除了PLD结构400和/或外部访问总线443进一步修改安全PLD 410内所有安全资源的锁定状态的能力。在一些实施例中,这种锁定方案可以由用于每个资源(例如,总线端口或NVM 450内的存储器扇区)的四个比特来实现,每个比特用于硬锁定使能、读锁定使能、写锁定使能和擦除锁定使能。

如图4所示的实施例中所示,NVM 450可包括多个区分的可锁定扇区,每个扇区可具有其自身的锁定状态。这样的可锁定扇区可包括例如第一配置映像扇区452、第二配置映像扇区454、制造商指定的修整扇区456、器件密钥扇区458(例如AES密钥扇区和单独的公共密钥/密钥对扇区)、锁定策略扇区460、用户闪存(UFM)扇区462和/或其他定义的可安全存储扇区464中的一个或多个,如图所示。在一些实施例中,UFM扇区462可进一步区分为子扇区,每个子扇区可具有其自身的锁定状态。锁定策略扇区460可存储NVM 450的每个扇区的锁定状态,例如,包括其自身的锁定状态。例如,第一配置映像扇区452和第二配置映像扇区454可以每个存储PLD结构400的配置,并且例如可以进一步通过版本和/或日期被标记并且被预先认证,以便允许它们被选择(例如,基于版本或日期)并且被用于编程PLD结构而不执行认证过程。修整扇区456可用于存储制造商修整和/或特定于特定安全PLD 410的其它数据,例如,如本文所述,从器件ID 422导出的可修改的客户端特定订购部件号和生成的客户端ID号。器件密钥扇区458可用于存储加密/解密密钥、公共密钥/私有密钥和/或特定于特定安全PLD 410的其它安全密钥。锁定策略扇区460可以被配置为存储NVM 450、配置引擎440、配置I/O 448和/或安全PLD 410的其它元件的资源的锁定状态。UFM扇区462可用于存储通常可由PLD结构400访问的用户数据,例如配置或特定于应用的安全密钥、证书和/或其它安全(的)用户数据。其它可安全存储扇区464可用于存储其它器件特定的安全(的)数据。NVM 450的任何一个或多个单独元件,部分或扇区可以被实现为例如可配置存储器或一次可编程(OTP)存储器,如本文所述。

可编程I/O 404可以被实现为至少部分可配置资源,所述可配置资源被配置为提供或支持PLD结构400与外部控制器、存储器和/或其它设备之间的通信链路,所述通信链路例如跨总线402(例如,被配置为将PLD结构400的部分链接到可编程I/O 404的总线)。在一些实施例中,总线402和/或可编程I/O 404可以与PLD结构400集成。配置I/O 448可以实现为硬IP资源,被配置为支持一个或多个外部总线接口和/或协议449,以支持与外部系统130/机器可读介质136的通信,如本文所述。在一些实施例中,配置I/O 448和/或总线443可以与配置引擎440集成。更一般地,在图4中示出为分离的安全PLD 410的一个或多个元件可以与彼此集成和/或集成在彼此内。其它IC模块480可以被实现为硬的和/或可配置的IP资源,所述硬的和/或可配置的IP资源被配置为便于安全PLD 410的操作。

图5A示出了根据本公开的实施例的安全PLD供应系统500的框图。例如,供应系统500的一个或多个元件可以被配置为执行关于图7描述的供应过程的至少部分。在图5A所示的实施例中,安全PLD供应系统500包括被配置为通过通信链路512和通信网络514彼此通信的安全PLD客户端510和安全PLD制造商520。通常,通信链路512可以由一个或多个有线和/或无线通信链路来实现,所述一个或多个有线和/或无线通信链路被配置为支持到通信网络514和来自通信网络514的数据通信,并且通信网络514可以由一个或多个局域网和/或广域网来实现,所述一个或多个局域网和/或广域网被配置为通常支持数据通信(例如,互联网服务提供商、蜂窝网络和/或互联网)。安全PLD供应系统500的其余元件中的每一个表示例如安全PLD 410的制造和交付链中的实体,并且通常可以由网络通信设备来实现,每个网络通信设备在范围上类似于图1的外部系统130,并且被配置为跨通信链路512和通信网络514通信。在各种实施例中,安全PLD供应系统500可以被配置为为类似于安全PLD 410的安全PLD供应密钥和/或其它安全通信元件和/或机制。

如图5A所示,安全PLD客户端510和安全PLD制造商520可以被认为是供应系统500内的可信实体,而供应系统500的所有其它元件可以被认为是不可信实体,使得客户端和/或制造商的软件和/或硬件通常应该受到保护或以其它方式受到保护,以防止下游客户端550和/或可选的安全PLD编程器530和用户设备组装器540不希望的访问或操纵。例如,在一般操作中,安全PLD客户端510从安全PLD制造商520请求一个或多个安全PLD 410,并生成要编程到安全PLD 410的PLD结构400中的专有配置。安全PLD制造商520通过制造单个IC并用安全机制(例如,锁定它们)对它们进行编程来准备所请求的一个或多个安全PLD 410,以禁止不是由安全PLD客户端510和/或安全PLD制造商520提供的配置进行进一步编程。安全PLD客户端510可以向可选的安全PLD编程器530提供器件特定的加密配置,并且安全PLD制造商520可以向安全PLD编程器530提供锁定的安全PLD 410,使得安全PLD编程器530只能用其器件特定的加密配置对每个锁定的安全PLD 410编程,并且使得安全PLD编程器530不能容易地确定器件特定的加密配置的未加密内容。

安全PLD编程器530可将经编程和锁定的安全PLD 410递送至可选的用户设备组装器540(例如,主板组装器、智能电话组装器和/或其它用户设备/嵌入式设备组装器/制造商),可选的用户设备组装器540将经编程和锁定的安全PLD 410与用户设备集成,并将集成的用户设备提供给下游客户端550,所有这些都时在没有安全PLD编程器530和下游客户端550能够确定器件特定加密配置的未加密内容或用替代配置重新编程经锁定的安全PLD情况下进行的。安全PLD客户端510然后可以审计下游客户端550处的相应用户设备中的经编程和锁定的安全PLD 410,而不泄露器件特定加密配置的未加密内容或解锁安全PLD 410。尽管在图5A中示出为单独的实体,但是安全PLD编程器530和用户设备组装器可以组合在一起和/或单独地与安全PLD客户端510、安全PLD制造商520和/或下游客户端550集成。

图5B示出了根据本公开的实施例的安全PLD供应系统502的框图。例如,供应系统502的一个或多个元件可以被配置为执行关于图7描述的供应过程的至少部分。在一个实施例中,安全PLD供应系统502可以大致对应于图5A中的安全PLD制造商520。更一般地,类似于安全PLD供应系统502的元件或包括安全PLD供应系统502的元件的系统可用于实现图5A所示的安全PLD供应系统500的任何一个或多个元件。

在图5B所示的实施例中,安全PLD供应系统502包括安全PLD锁定系统522,安全PLD锁定系统522被配置为根据安全PLD客户端510发出的请求锁定和/或重定向源自安全PLD库存524的多个安全PLD 410(例如,未锁定/空白的安全PLD 410和/或预定用于重定向到不同的安全PLD客户端或请求的先前锁定的安全PLD 410)。一旦被安全PLD锁定系统522锁定,锁定的安全PLD通常可以仅用安全PLD客户端510提供的配置编程,例如由锁定系统522或更一般地由安全PLD编程器530编程,如本文所述。在各种实施例中,安全PLD锁定系统522可包括强化安全模块(HSM)526,其被配置为例如通过非安全通信链路512从安全PLD客户端510接收客户端公共密钥,并且经由安全通信链路527控制外部系统130,以锁定通过设备递送链路525(例如,机械和/或电子递送链路,其被配置为从PLD库存/存储区域524检索安全PLD420以及经由外部总线接口449将安全PLD 410的配置I/O 448与外部系统130接口)提供的安全PLD 410。锁定的安全PLD 410然后可以通过类似的设备递送链路528被物理地递送到安全PLD编程器530。例如,HSM 526通常可以类似于外部系统130来实现,但是被放置在安全工厂位置中,具有受监视和有限的物理访问,以消除外部操纵和/或监控HSM 526的风险。在一些实施例中,外部系统130和HSM 526和/或它们的功能可以集成到单个外部系统130中。

在一般操作中,安全PLD客户端510可以向HSM 526提供对多个锁定的安全PLD 410的请求,该请求包括客户端公共密钥/私有密钥对的客户端公共密钥(例如,在安全PLD客户端510内生成,例如由其自己的HSM生成)。HSM 526可生成客户端特定的编程公共密钥/私有密钥对(例如,用于加密、解密和/或认证用于锁定的安全PLD 410的配置,诸如锁定安全PLD410和解锁安全PLD 410以用于编程)和编程秘密(例如,256位随机数字以进一步认证所提供的配置),并将编程私有密钥、编程秘密和工厂公共密钥提供给外部系统130以用于加载到空白或解锁的安全PLD 410中并锁定该空白或解锁的安全PLD 410。例如,HSM 526可以被配置为本地生成工厂公共密钥/私有密钥对和/或从存储器134检索这样的工厂密钥,并且这样的工厂密钥可以是工厂特定的和/或客户端特定的。配置引擎440可接收器件特定跟踪ID(例如,其可识别对应于安全PLD 410的制造工艺的制造批次、晶片和晶片位置)、编程私有密钥、编程秘密、工厂公共密钥和PLD结构400的初始编程映像(IPI)配置,其可全部存储在NVM 450的一个或多个扇区中以锁定安全PLD410。

然后,配置引擎440可以将跟踪ID存储在NVM 450的MFG修整456中和/或存储在安全引擎420的器件ID 422内,并且通过将随机数(例如,由TRNG 424生成)附加到跟踪ID的末尾来生成器件唯一种子,并且这样的器件唯一种子可以存储在MFG修整456中和/或用于设备公/私密钥对的种子生成(例如,由安全引擎420的P/PKG430生成),该设备公/私密钥对可以存储在NVM 450的器件密钥扇区458内。然后,配置引擎440可以向外部系统130提供所得到的器件公共密钥和跟踪ID,外部系统130可以将器件公共密钥和跟踪ID中继到HSM 526,以被添加到锁定的PLD清单,该锁定的PLD清单包括安全PLD客户端510请求的每个锁定的安全PLD 410的行项目,其中每个行项目包括器件特定的跟踪ID和器件公共密钥。然后,HSM526可以使用客户端公共密钥和编程私有密钥对编程秘密进行加密和签名,并且可以将所得的加密的编程分组提供给安全PLD客户端510并伴随编程公共密钥(例如,以帮助生成安全PLD410的PLD结构400的已加密和签名的配置)。一旦用安全PLD客户端510请求的所有锁定的安全PLD 410的条目完成,HSM 526可使用编程私有密钥对锁定的PLD清单进行签名,并将签名的锁定的PLD清单提供给安全PLD客户端510,安全PLD客户端510随后可使用锁定的PLD清单、编程秘密和编程公共密钥来管理安全PLD编程器530对锁定的安全PLD 410的编程,如本文所述。

在一些实施例中,HSM 526可以被配置为生成对应于特定安全PLD客户端510和/或从安全PLD客户端510接收的对锁定的安全PLD 410的特定请求的客户端编程密钥令牌。这样的客户端编程密钥令牌可用于引用(例如,在存储在HSM 526中的客户端数据库内)关于安全PLD客户端510存储的所有信息和/或从安全PLD客户端510接收的对锁定的安全PLD410的请求。这样的存储信息可以包括编程公共密钥/私有密钥对、编程秘密、工厂公共密钥/私有密钥对,锁定的PLD清单和/或与安全PLD供应系统502和/或500的操作相关联的其它信息或信息子集。在PLD库存524包括一个或多个预先锁定的用于重定向的安全PLD 410的实施例中,(例如,锁定到不同的安全PLD客户端或不同的安全PLD请求),HSM526可以被配置为使用先前的客户端编程密钥令牌来检索用于锁定被锁定的安全PLD的信息,提供新信息至使用先前的工厂私有密钥签名的安全PLD 410(例如,通过外部系统130),并提供重定向命令至安全PLD410(例如,待由安全PLD 410执行),其中重定向命令由PLD结构400和/或配置引擎440执行,以用存储在NVM 450中的先前工厂公共密钥认证新信息,并用相应的新的或更新的信息替换存储在NVM 450中的先前信息(例如,器件公共密钥/私有密钥对、编程私有密钥、编程秘密、工厂公共密钥和/或IPI)。

图6示出了根据本公开的实施例的包括安全PLD 410的用户设备610的框图。在一个实施例中,安全PLD 410可以被配置为为用户设备610(例如,主板、智能电话和/或其他用户/嵌入式设备)提供安全引导机制。例如,在用户设备610上电时,安全PLD 410可以被配置为使用安全引擎420的P/PKG 430来生成临时公共密钥/私有密钥对,并且通过总线604(例如,由可编程I/O 404支持的总线)将临时公共密钥和控制器引导加载器662(例如,其可以被预认证和/或存储在NVM 450的UFM 462中)提供给控制器620。控制器620的执行引擎624可以被配置为在从安全PLD 410接收控制器引导加载器662时执行控制器引导加载器662,安全PLD 410可以将执行引擎624配置为生成临时会话密钥(例如,使用从易失性存储器(VM)612的上电状态导出的上电RAM值),以使用由安全PLD 410提供的临时公共密钥和密码盐(cryptographic salt)来加密临时会话密钥,并且通过总线604将所得的第一加密包提供给安全PLD 410。

安全PLD 410可以被配置为从由控制器620提供的第一加密包中提取临时会话密钥(例如,使用临时私有密钥),以使用会话密钥加密控制器应用程序映像解密器663,并且通过总线604将所得的第二加密包提供给控制器620。控制器620的执行引擎624可以被配置为在从安全PLD 410接收到第二加密包时从第二加密包提取控制器应用映像解密器663,安全PLD 410可以将执行引擎624配置为检索、认证和解密存储在NVM 630中的控制器应用映像632(例如,通过总线602和604),将认证和解密的控制器应用映像632存储在VM 622中,并且执行认证和解密的控制器应用映像632。此外,安全PLD 410和控制器620可以被配置为彼此注册安全通信路径。

在另一实施例中,安全PLD 410可以被配置为使用控制器620来验证用于编程安全PLD 410的PLD结构400的配置。例如,安全PLD 410可以被配置为使用安全引擎420的P/PKG430来生成临时公共密钥/私有密钥对并将临时公共密钥提供给控制器620。控制器620的执行引擎624可以被配置为生成临时会话密钥,使用由安全PLD 410提供的临时公共密钥和密码盐来加密临时会话密钥,并且通过总线604将所得的第三加密包提供给安全PLD 410。控制器620还可以被配置为使用会话密钥来加密请求,以从例如存储在安全PLD 410的NVM450中的一个或多个配置映像中提取标识数据,并且通过总线604将所得的第四加密包发送到安全PLD 410。

安全PLD 410可以被配置为从由控制器620提供的第三加密包中提取临时会话密钥,使用临时会话密钥从第四加密包中提取请求,以从存储在安全PLD 410的NVM 450中的一个或多个配置映像中提取所请求的识别数据,使用临时会话密钥加密所请求的识别数据,以及通过总线604将所得的第五加密包提供给控制器620。一旦接收到,控制器620可以被配置为通过与驻留在用户设备610(例如,在NVM 630或VM 622中)中和/或通过网络(例如,通信网络514,经由其他用户设备模块680访问,用户设备模块680可以包括网络接口设备)访问的或从网络检索的、存储在NVM 450中的一个或多个配置映像的版本、发布日期和/或其他特征的数据库进行比较,来验证存储在NVM 450中的一个或多个配置映像的版本、发布日期和/或其他特征。在进一步的替代实施例中,安全PLD 410可以代替控制器620,并且用于控制用户设备600的操作。

图7示出了根据本公开的实施例的用于锁定的安全PLD的供应过程。在一些实施例中,图7的操作可以被实现为软件指令,该软件指令由与图1至图6所示的对应电子设备、模块和/或结构相关联的一个或多个逻辑器件执行。更一般地,图7的操作可以用软件指令和/或电子硬件(例如,电感器、电容器、放大器、致动器或其它模拟和/或数字部件)的任何组合来实现。应当理解,过程700的任何步骤、子步骤、子过程或块可以不同于图7所示实施例的顺序或布置来执行。例如,在其它实施例中,可以从过程700中省略一个或多个块,并且可以包括其它块。此外,在移动到过程700的后续部分之前,可以将块输入、块输出、各种传感器信号、传感器信息、校准参数和/或其它操作参数存储到一个或多个存储器。虽然参照图1至图7的系统、设备和元件描述了过程700,但是过程700可以由其它系统、设备和元件来执行,并且包括电子系统、设备、元件、组件和/或布置的不同选择。在过程700的启动处,例如,各种系统参数可以通过类似于过程700的过程的先前执行来填充,或者可以初始化为零和/或对应于从过程700的过去操作导出的典型的、存储的和/或学习的值的一个或多个值,如本文所述。

在框710中,逻辑器件接收对锁定PLD的请求。例如,安全PLD制造商520的网络通信设备(例如,外部系统130、HSM 526)可以被配置为从安全PLD客户端510的网络通信设备(例如,外部系统130、HSM 526)接收对锁定的安全PLD 410的请求。例如,这种请求可以通过通信链路512和/或通过通信网络514来发送,并且可以包括相应的客户端公共密钥/私有密钥对的客户端公共密钥,以及所请求的设备的数量和与特定期望的安全PLD 410相关联的任何特定型号或其他标识信息。

在框720中,逻辑器件生成锁定PLD。例如,安全PLD制造商520可以被配置为生成锁定的安全PLD 410。在一些实施例中,安全PLD制造商520可以使用IC制造系统来制造安全PLD 410,例如,其可以包括在NVM 450的安全引擎420和/或MFG修剪456中编程或存储或以其他方式嵌入器件ID 422。安全PLD制造商520还可以使用外部系统130来锁定安全PLD410,如本文所述。在一个实施例中,安全PLD制造商520的安全PLD锁定系统522可被配置为将客户端ID分配给安全PLD客户端510和/或在框710中接收到的请求,然后该客户端ID可与器件ID 422和/或设备订购部件号(例如,在制造时生成的)组合,以提供客户端特定订购部件号,该客户端特定订购部件号可用于例如在存储在HSM 526中的未加密数据库中引用或标识安全PLD 410。

HSM 526还可以被配置为通过生成相应的随机且唯一的客户端编程密钥令牌和/或客户端特定的订购部件编号并参考与生成引用这种令牌或编号的锁定的安全PLD相关的所有存储信息,来生成与安全PLD客户端510和/或在框710中接收的请求中的客户端公共密钥相对应的客户端编程密钥令牌。HSM 526还可以被配置为生成编程公共密钥/私有密钥对和编程秘密,所有这些都特定于安全PLD客户端510和/或在框710中接收的请求,所有这些都可以被存储在HSM526中。HSM 526还可以被配置为生成工厂公共密钥/私有密钥对,该工厂公共密钥/私有密钥对可以特定于安全PLD制造商520、安全PLD客户端510和/或在框710中接收的请求,该工厂公共密钥/私有密钥对也可以存储在HSM 526中。

例如,HSM 526可以被配置为向外部系统130提供工厂公共密钥、编程私有密钥和编程秘密,用于对安全PLD 410进行编程/锁定,并且作为回应接收器件特定跟踪ID和器件公共密钥。HSM 526还可以被配置为使用客户端公共密钥和编程私有密钥对编程秘密进行加密和签名,并且所得到的加密的编程分组可以被提供给安全PLD客户端510并伴随编程公共密钥(例如,帮助安全PLD客户端510生成用于安全PLD 410的PLD结构400的已加密和签名的配置)。安全PLD 410可以被配置为使用安全引擎420的TRNG 424来基于存储在MFG修剪456和/或器件ID 422中的跟踪ID来生成器件唯一种子,并且使用安全引擎420的器件唯一种子和/或P/PKG 430来生成器件公共密钥/私有密钥对,所有这些都特定于安全PLD 410,并且所有这些都可以被存储在NVM 450中(例如,与编程私有密钥、编程秘密、工厂公共密钥和/或由外部系统130和/或HSM 526提供的IPI配置一起)。

在另一实施例中,HSM 526可以被配置为使用客户端编程密钥令牌从安全存储的数据库中检索编程私有密钥、编程秘密和器件公共密钥,并将它们提供给外部系统130。然后,外部系统130可以被配置为使用编程专用密钥、编程秘密和/或器件公共密钥来提供IPI配置至安全PLD 410并用IPI编程PLD结构400。该编程可能构成不安全的写操作,因此可能需要安全环境(例如,完全在安全PLD制造商520内发生)。在进一步的实施例中,HSM 526可以被配置为从外部系统130接收包括对应于安全PLD 410的跟踪ID和对应的器件公共密钥的锁定PLD清单条目,生成对应于在框710中接收的请求的完整锁定PLD清单,用编程私有密钥对锁定PLD清单进行签名,以及将已签名的锁定PLD清单提供给安全PLD客户端510。

在另外的实施例中,将已经编程和锁定的安全PLD重定向到不同的客户端或应用(例如,利用不同的编程密钥对、编程秘密和公共器件密钥)可能是有用的。通常,不需要重新编程已经编程的IPI(例如,可以使用PLD结构400的相同IPI配置)。例如,HSM 526可以被配置为使用客户端编程密钥令牌和/或跟踪ID来检索用于锁定安全PLD 410的先前信息(例如,存储在HSM 526中的原始编程私有密钥、编程秘密和器件公共密钥)。然后,HSM 526可以被配置为使用外部系统130来提供新信息至使用先前工厂私有密钥签名的安全PLD 410,并且提供重定向命令至安全PLD 410(例如,由安全PLD 410执行),其中重定向命令可以由PLD结构400和/或配置引擎440执行,以用存储在NVM 450中的先前工厂公共密钥认证新信息,并且用相应的新的或更新的或重定向的信息替换存储在NVM450中的先前信息(例如,器件公共密钥/私有密钥对、编程私有密钥、编程秘密、工厂公共密钥和/或IPI),如本文所述。

在框730中,逻辑器件提供用于锁定PLD的安全解锁包。例如,安全PLD制造商520的HSM 526可被配置为提供用于在框720中生成的锁定的安全PLD 410的安全解锁包至安全PLD客户端510。在一个实施例中,HSM 526可被配置为提供在框720中生成的加密的编程分组、编程公共密钥和/或客户端编程密钥令牌至安全PLD客户端510。安全PLD客户端510可以使用这样的信息来生成安全PLD410的受保护配置,如在框720中锁定的那样。

在框740中,逻辑器件提供标识锁定PLD的可认证清单。例如,安全PLD制造商520可以被配置为提供标识在框720中生成的锁定的安全PLD 410的可认证的锁定PLD清单。在一个实施例中,HSM526可以被配置为生成跟踪ID和器件公共密钥的清单(例如,由跟踪ID引用的器件公共密钥的清单),以使用在框720中生成的编程私有密钥来对锁定的PLD清单进行签名,并且将已签名的锁定的PLD清单提供给安全的PLD客户端510。安全PLD客户端510可以使用这样的信息来审计已部署和/或锁定的安全PLD 410的选择。

在框750中,逻辑器件生成锁定的PLD的受保护配置。例如,安全PLD客户端510的外部系统130可以被配置为生成用于在框720中生成的已锁定的安全PLD 410的受保护配置。在一个实施例中,外部系统130可以被配置为使用类似于参照图3讨论的过程300的过程来生成安全PLD 410的PLD结构400的未保护配置。这样的配置可以包括例如要主要加载到PLD结构400中并配置PLD结构400的应用比特流/配置,以及要主要加载到锁定策略扇区460、UFM扇区462和/或其它定义的可安全存储扇区464中并配置锁定策略扇区460、UFM扇区462和/或其它定义的可安全存储扇区464的特征比特流/配置。这样的特征比特流/配置可包括安全密钥、功能和/或可由配置引擎440执行和/或以其他方式使用以实现本文所述的任何过程的其他特征。

在各种实施例中,外部系统130和/或安全PLD客户端510的HSM 526可以被配置为生成应用公共密钥/私有密钥对、应用加密密钥(例如AES加密密钥)和编程分组公共密钥/私有密钥对。外部系统130可以被配置为使用应用私有密钥对应用和特征配置进行签名,并且使用应用加密密钥对签名的应用和特征配置进行加密。外部系统130还可以被配置为通过对应用公共密钥、应用程序加密密钥以及编程秘密(例如,从在框730中提供的安全解锁包的加密的编程分组中提取的)与应用私有密钥的组合/列表进行签名来生成编程密钥摘要,基于编程公共密钥和编程分组私有密钥导出加密密钥(例如,使用椭圆曲线Diffie-Hellman密钥导出函数),使用导出的加密密钥对密钥的签名组合进行加密,以及将加密和签名的密钥组合与编程分组公共密钥组合(例如,将编程分组公共密钥附加到加密和签名的密钥组合)以创建编程密钥摘要。外部系统130还可以被配置为用分组私有密钥对锁定的PLD清单(例如,在框740中接收的)进行签名,以经认证地递送到下游安全PLD编程器530、用户设备组装器540和/或下游客户端550。外部系统130可以被配置为通过将加密的应用和特征配置与编程密钥摘要相结合来生成用于安全PLD 410的受保护配置,以创建单个受保护的信息分组。

在框760中,逻辑器件向配置编程器提供锁定PLD。例如,安全PLD制造商520可以被配置为提供在框720中生成的锁定的安全PLD 410给安全PLD编程器530,如本文所述。

在框770中,逻辑器件根据受保护配置对锁定PLD编程。例如,安全PLD编程器530的外部设备130可以被配置为根据在框750中生成的并由安全PLD客户端510提供的受保护配置来编程在框720中生成的锁定的安全PLD 410。在一个实施例中,安全PLD编程器530的外部系统130可被配置为提供在框750中生成的受保护配置/分组至安全PLD 410,安全PLD410可被配置为根据在框720中提供给安全PLD 410的IPI引导。然后,安全PLD 410可以通过安全PLD 410的一个或多个总线来验证安全PLD 410的受保护配置和程序元件,包括PLD结构400和NVM 450的部分。更具体地,安全PLD 410可以被配置为使用在框720中存储在NVM450中的编程私有密钥和在框750中生成的分组公共密钥来解密编程密钥摘要中的加密密钥。在框720中,安全PLD 410还可以被配置为用应用公共密钥认证解密的密钥摘要,并且验证编程密钥摘要中的编程秘密与存储在NVM 450中的编程秘密匹配。如果两个检查都通过,则安全PLD 410可将来自密钥摘要的应用公共密钥和应用加密密钥存储在NVM 450中。

一旦来自密钥摘要的应用公共密钥和应用加密密钥被存储在NVM 450中,安全PLD410然后可以解密应用和特征配置并认证解密的应用和特征配置。例如,只有在使用应用加密密钥和应用公共密钥成功地解密和认证比特流的情况下,才能将应用和特征配置编程到安全PLD 410中。在应用配置被成功认证的情况下,安全PLD410可被配置为将应用配置编程/存储到配置映像扇区452或454之一中,为适当映像设置预认证位,以从PLD结构400擦除IPI,和/或根据所存储的应用配置来编程PLD结构400。特征配置可以被编程到NVM 450的一个或多个部分中。在编程安全PLD 410之前要执行的其它安全检查可以包括验证锁定的PLD清单,检查锁定的PLD清单内的跟踪ID匹配,和/或其它安全检查,如本文所述。

在框780中,逻辑器件组装包括锁定且编程的PLD的用户设备。例如,用户设备组装器540的拾取和放置系统可以被配置为组装包括在框720中生成并在框770中编程的锁定的安全PLD 410的用户设备610。

在框790中,逻辑器件基于可认证清单审计锁定和编程的PLD。例如,安全PLD客户端510可以被配置为基于在框740中提供的可认证的锁定的PLD清单来审计在框720中生成并在框770中编程的锁定的安全PLD。在一个实施例中,安全PLD客户端510或下游客户端550的外部系统130可被配置为在框740中认证由安全PLD制造商520或安全PLD客户端510提供的锁定PLD清单,向安全PLD410查询其跟踪ID和/或器件公共密钥,并与锁定的PLD清单中的跟踪ID和器件公共密钥进行比较,以及使用器件公共密钥质询安全PLD 410,例如通过使用器件公共密钥加密随机数,在器件密钥质询中向安全PLD 410提供得到的加密包,以及将返回的结果与原始随机数进行比较(例如,匹配结果指示对操作的安全PLD 410的成功审计)。在一些实施例中,这种审计可以在框770中擦除IPI配置之前发生。成功的审计指示功能锁定的安全PLD 410。

因此,通过采用本文描述的系统和方法,本公开的实施例能够跨安全PLD的客户端订单提供安全PLD的灵活且安全的密钥供应和配置。一个客户端的受保护配置不能用于编程另一客户端的个性化安全PLD或空白安全PLD。受保护配置可以在系统内或使用外部设备进行编程。应用密钥只能在安全PLD内解密。客户端可以使用密钥清单来防止设备和/或应用程序欺骗或过度构建。在各种实施例中,编程密钥和清单由安全PLD制造商520和/或安全PLD客户端510的一个或多个HSM 526管理。

为了帮助减少或消除客户端或制造商的PLD结构配置/映像、密钥和/或其他安全数据从锁定或解锁的安全PLD 410中丢失或提取的风险,或对这种数据进行重新编程的风险,安全PLD 410可以根据锁定策略计划和/或其他安全资产布置来实现一个或多个锁定策略管理神话,例如,锁定策略计划和/或其他安全资产布置可以由PLD结构400、配置引擎440和/或安全PLD 410的其他元件来使用,以管理关于安全PLD 410的资产的读、写和/或擦除访问并强制锁定状态。在最一般的意义上,安全PLD 410可以被配置为将锁定状态分配给安全PLD 410的各种资产,例如配置I/O 448的端口和/或NVM 450的扇区,和/或分配给这些资产的组,以保护安全PLD 410的锁定和/或解锁操作,如本文所述。例如,对这种资产的访问可以被锁定以阻止外部访问(例如,经由配置I/O 448)、内部访问(例如,经由PLD结构400)、外部和内部访问两者、和/或被锁定以阻止任何进一步的访问,而不管访问类型如何。可以粒度地控制这种访问,例如提供例如与NVM 450相关联的每个资产的读、写和/或擦除访问,或者跨配置I/O 448的读和/或写访问(例如,数据通信访问)。与资产或资产组相关联的锁定状态可以由锁定状态位来实现,锁定状态位被配置为例如根据特定锁定策略计划或布置来管理、存储或表示读、写和/或擦除访问,锁定策略计划或布置可以被修改以提供用于安全PLD 410的安全资产管理的特定期望粒度。

图8A示出了根据本公开的实施例的用于安全PLD 410的锁定策略计划802的框图。在各种实施例中,锁定策略计划802可以由类似于关于图4中的安全PLD 410所描述的那些元件来实现。特别地,锁定策略计划802可以由锁定策略扇区460和配置引擎440的对应影子寄存器860来实现,以允许安全PLD 410的元件(例如,配置I/O 448上的外部系统130、配置引擎440、PLD结构400和/或安全PLD 410的其它元件)操纵安全PLD 410的各种元件的锁定状态。

例如,在图8A所示的实施例中,影子寄存器860包括配置映像锁定状态852和854、配置I/O锁定状态848、锁定策略锁定状态861、器件密钥锁定状态858和其它安全存储锁定扇区864(例如,与NVM450中的对应扇区、配置I/O 448和/或外部访问总线443相关联)以及引导锁定状态组892中的配置安全锁定状态841、UFM锁定状态862(例如,与NVM 450中的对应UFM扇区462相关联)以及用户数据锁定状态组894中的用户安全锁定状态840、以及MFG修整锁定状态856。影子寄存器860的每个锁定状态可以被分配其自己的单独本地(LOCAL)读、写/编程和/或擦除访问状态,并且每个锁定状态组可以被分配其自己的组(GROUP)读、写/编程和/或擦除访问状态,所述组读、写/编程和/或擦除访问状态进行操作以减少对该组内具有锁定状态的所有资产的访问,使得组锁定状态只能覆盖该组内更允许的本地锁定状态。更具体地,配置安全锁定状态840可以表示引导锁定状态组892的组锁定状态,并且用户安全锁定状态841可以表示用户数据锁定状态组894的组锁定状态。

每个锁定状态可以由配置引擎440的影子寄存器860内的一个或多个寄存器来实现,例如,这些寄存器被配置为遮蔽存储在NVM450的锁定策略扇区460内的对应锁定状态。在各种实施例中,在安全PLD 410加电时,配置引擎440可以被配置为访问锁定策略460,从锁定策略460检索各种锁定状态,并且根据锁定策略计划802在影子寄存器860内遮蔽锁定状态,以允许取决于锁定策略扇区460中的设置/锁定状态,由配置引擎440和/或PLD结构400动态地访问和/或修改各种锁定状态。具体地,配置I/O锁定状态848可被配置为存储或表示或指示对应于配置I/O 448的一个或多个端口(例如,JTAG、SSPI、I2C和/或由配置I/O448支持的其它端口或协议)的读和/或写访问状态(或多个访问状态),该状态可被用于锁定或解锁各个端口以接收和/或提供跨配置I/O 448和/或外部访问总线443的数据。锁定策略锁定状态861可被配置为存储或表示或指示对应于锁定策略扇区460的读、写和/或擦除访问状态(例如,其可用于锁定或解锁对存储在锁定策略扇区460中的所有锁定状态的访问,诸如超级组锁定状态)。例如,UFM 462可以包括多个单独的和/或区分的扇区或子扇区,因此UFM锁定状态862可以被配置为为UFM462的每个扇区或子扇区提供粒度的本地锁定状态,并且用户安全锁定状态841可以被配置为为用户数据锁定状态组894提供组锁定状态,如本文所述。

读、写和/或擦除访问和/或其它锁定状态可以被配置为提供对NVM 450的扇区的相关访问,以帮助提供对此类资产的安全访问,而没有此类资产内数据泄漏的风险。例如,锁定状态位可允许NVM450的扇区被例如(1)擦除但不读或写,(2)写或擦除但不读,(3)读但不写或擦除,或(4)既不读,也不写或擦除,或这些的各种组合。例如,特定锁定状态可允许写但不读公共密钥或私有密钥或加密密钥,或擦除但不读或更新配置映像扇区和/或擦除但不读配置映像扇区,以帮助确保客户端和/或制造商数据的安全性和完整性。这些类型的访问中的每一个可以相对于外部或内部访问或针对外部或内部访问不同地设置和/或控制,如本文所述。

图8B示出了根据本公开的实施例的用于安全PLD的锁定策略计划804的框图。锁定策略计划804包括类似于图8A的锁定策略计划802中所示的那些元素,除了根据不同的引导锁定状态组896布置各种锁定状态之外,不同的引导锁定状态组896仅包括配置映像锁定状态852和854以及配置I/O锁定状态848以及引导锁定状态组896中的配置安全锁定状态840,并且锁定策略锁定状态861、器件密钥锁定状态858和其它安全存储锁定扇区864是未分组的,并且因此受它们的本地锁定状态的约束而不受引导或用户数据组锁定状态的约束,如图所示。应当理解,可以使用类似技术来实现具有其他分组和/或非分组的其他锁定策略计划,以简化例如锁定策略操作,或者提供不同级别的锁定策略粒度。

图9A至图9D示出了根据本公开的实施例的与用于安全PLD410的相应锁定策略计划相关联的访问表。特别地,访问表902示出了与根据锁定策略计划802布置的各种锁定状态相关联的外部总线和内部总线可访问性。例如,图9A的访问表902示出了锁定策略计划802如何通过对配置I/O锁定状态848和配置映像锁定状态852和854进行分组来提供对NVM450中的配置映像扇区452和454的读、写/编程和擦除的外部和内部总线访问的粒度管理。在这种方法中,如图所示,可通过在配置映像锁定状态852和854和/或配置安全锁定状态840中设置一个或多个组和/或本地锁定状态位来允许或不允许PLD结构400的内部访问,但是,在图9A所示的实施例中,这种访问还允许对配置映像扇区452和454的外部访问(例如,外部总线的软锁定部分和内部总线访问是相同的)。在一些实施例中,安全PLD 410的PLD结构400和/或配置引擎440和/或外部系统130可以被配置为在调整配置映像锁定状态852和854和/或配置安全锁定状态840中的锁定状态位之前更新配置I/O锁定状态848(例如,本地锁定状态)以锁定配置I/O 448(例如,通过配置I/O 448阻止读和/或写访问),以允许对配置映像扇区452和454的内部访问(例如,读、写/编程、擦除),而不冒干预或丢失外部系统130的风险。如在访问表902中可以看到的,一旦启用了用于配置映像锁定状态852和854以及配置安全锁定状态840的硬锁定,则不允许通过配置I/O 448/外部总线443或由PLD结构400通过安全总线408进一步修改硬锁定位。

图9B的访问表904示出了不同的锁定策略计划/布置如何能够提供外部和内部总线访问的差异化粒度管理,以读、写/编程和擦除NVM 450中的配置映像扇区452和454(例如,通过不对配置I/O锁定状态848和配置映像锁定状态852和854进行分组)。在这种方法中,可以通过在配置映像锁定状态852和854和/或配置安全锁定状态840中设置一个或多个组和/或本地锁定状态位来允许或不允许外部系统130通过配置I/O 448/外部总线443进行外部访问,如图所示,但是,在图9B所示的实施例中,这种访问仅适用于对配置映像扇区452和454的外部访问,并且PLD结构400具有自由访问,除非启用了用于配置映像锁定状态852和854以及配置安全锁定状态840的硬锁定,在此之后,不允许通过配置I/O 448/外部总线443或由PLD结构400进一步修改硬锁定位。

图9C的访问表906示出了包括多种类型的软锁定(例如,关于外部或内部或总软锁定的附加粒度)的锁定策略计划/布置如何能够提供对NVM 450中的读、写/编程和擦除配置映像扇区452和454的外部和内部总线访问的差异化粒度管理(例如,通过添加附加锁定状态位或结构写块(WB)位,以启用或禁用具体由PLD结构400进行的访问)。如图9C所示,这种方法包括访问表902和904两者的方面,并且结构WB位本身可以由PLD结构400和/或通过配置I/O448/外部总线443来启用或禁用,这取决于锁定策略锁定状态861中的对应锁定状态。例如,这种结构WB位可以被配置为允许实施例防止对NVM 450中的配置映像或其它数据的意外内部修改。

如在访问表906中可以看到的,当启用外部软锁定(例如,结构WB位被禁用)时,可以通过在配置映像锁定状态852和854和/或配置安全锁定状态840中设置一个或多个组和/或本地锁定状态位来允许或不允许通过配置I/O 448/外部总线443的外部访问,并且PLD结构400具有对配置映像扇区452和454的自由和开放访问。当通用软锁定被启用(例如,结构WB位被启用)时,通过在配置映像锁定状态852和854和/或配置安全锁定状态840中设置一个或多个组和/或本地锁定状态位,可以允许或不允许通过配置I/O 448/外部总线443的外部访问以及由PLD结构400进行的内部访问,如图所示。与访问表902和904一样,一旦启用用于配置映像锁定状态852和854以及配置安全锁定状态840的硬锁定,则不允许通过配置I/O448/外部总线443或由PLD结构400对硬锁定位进行进一步修改,并且结构WB位的状态不再导致配置映像扇区452和454的锁定状态的改变。

图9D的访问表908示出了包括多种类型的硬锁(例如,关于外部或内部或总硬锁定的附加粒度)的锁定策略计划/布置如何能够提供外部和内部总线对读、写/编程和擦除配置映像扇区452和454和/或NVM 450中的其它扇区(例如器件密钥扇区458)的访问的差异化粒度管理。如图9D所示,这种方法包括访问表902、904和906的方面。例如,在图9D所示的实施例中,与图8B中的锁定策略计划804类似,对应的锁定策略计划/布置将器件密钥锁定状态858置于引导锁定状态组892/896和用户数据锁定状态组894之外。如果不期望器件密钥改变,则策略9可应用于锁定器件密钥扇区458,使其不受任何内部或外部访问的影响,并且这样的应用可例如永久地禁用外部访问,或者永久地禁用外部和内部访问(例如,通过阻止对锁定策略扇区460的内部访问)。如果期望某些受限的未来器件密钥改变,则策略6可被应用以硬锁定对器件密钥扇区458的外部访问,但允许PLD结构400可调节地访问器件密钥扇区458,如所示出的。

例如,在一个实施例中,PLD结构400可以被配置为通过可编程I/O 404接收新配置映像,使用存储在器件密钥扇区458中的器件密钥来解密和/或认证新配置映像,并且将新配置映像存储在配置映像扇区452或454中的一个中(并且设置认证位以指示所存储的新配置映像是可引导的,而不需要另一认证过程)并且/或者引导新配置映像。在引导新的配置映像时,PLD结构400可以被配置为设置器件密钥锁定状态858以允许对器件密钥扇区458和/或UFM扇区462的写和/或擦除访问,通过安全信道(例如,由PLD结构400通过可编程I/O404建立的)下载新密钥,将新密钥写入UFM扇区462,擦除器件密钥扇区458,将新密钥从UFM扇区462复制到器件密钥扇区458,下载用于PLD结构400的附加配置映像,使用新密钥解密和/或认证附加新配置映像,以及将附加新配置映像存储在配置映像扇区452和454中的一个中(并且包括设置认证位以指示所存储的附加新配置映像是可引导的,而无需另一认证过程)并且/或者引导新配置映像。这种过程允许实施例安全地更新密钥和配置映像,作为单个或统一方法的一部分。

在另一实施例中,PLD结构400的一个“黄金(golden)”配置映像可永久存储在配置映像扇区452中(例如,作为PLD结构400的已知良好备份配置,在配置映像锁定状态852中启用相应的硬锁定),并且PLD结构400的可更新配置映像可存储在配置映像扇区452中(例如,在配置映像锁定状态854中禁用相应的硬锁定)。例如,可以根据图9D中的策略9硬锁定配置映像锁定状态852,并且可以根据图9D中的策略3软锁定配置映像锁定状态854。在这样的实施例中,安全PLD 410可以被配置为更新存储在配置映像扇区454中的配置映像。例如,外部系统130可以被配置为通过配置I/O 448并通过配置引擎440向PLD结构400提供解锁请求(例如,识别存储在配置映像扇区454中的配置映像),并且PLD结构400可以被配置为接收、验证和/或认证解锁请求,并且解锁配置映像扇区454,以便根据由外部系统130提供的更新的配置映像由外部系统130和/或由PLD结构400进行编程。PLD结构400还可以被配置为通过配置I/O 448并通过配置引擎440从外部系统130接收锁定请求(例如,识别存储在配置映像扇区454中的更新的配置映像),并且PLD结构400可以被配置为接收、验证和/或认证锁定请求,并且硬或软锁定配置映像扇区454以防止进一步的外部访问,如本文所述。

在另一实施例中,配置映像扇区452和配置映像扇区454都可以用外部系统130提供的新配置映像来更新。例如,PLD结构400可以被配置为确定一个配置映像扇区以锁定防止外部访问(例如,最近的认证的配置映像)和一个配置映像扇区以解锁外部访问(例如,较不最近的和/或未认证的配置映像),或者外部系统130可以被配置为将选择标准连同解锁请求一起提供给PLD结构400,所有这些都可以在被实施之前由PLD结构400验证和/或认证。PLD结构400然后可以允许用更新的配置映像更新确定/选择的配置扇区,认证更新的配置映像,和/或引导认证的更新的配置映像。PLD结构400可以接收锁定请求,并且在存储和认证更新的配置映像之后继续硬或软锁定适当的配置映像扇区以防止进一步的外部和/或内部读、写和/或擦除访问。在各种实施例中,例如,可以为配置映像扇区452和454中的任何一个请求和/或选择其它锁定状态,并且这种选择可以源自外部或相对于安全PLD 410的内部。

在另一实施例中,可以根据锁定策略计划来实现安全PLD 410,锁定策略计划被设计成防止寻求提取或操纵存储在NVM 450中的数据的传输中攻击。例如,配置映像扇区452和454都可以针对所有外部访问而被锁定,但被配置为允许内部访问,通常根据如图9D所示的策略3。这种策略防止通过配置I/O 448对配置映像扇区452和454的所有篡改尝试。在各种实施例中,PLD结构400可以被配置为在例如用户设备610上电时建立与控制器620(例如,用户设备的管理控制)的安全通信链路,和/或认证控制器620,以接收来自控制器620的解锁请求以解锁配置I/O 448和/或配置映像扇区452和454的一个或多个端口,并且相应地解锁配置I/O 448和/或配置映像的这样的识别端口。一旦打开,控制器620可被配置为将更新的配置映像提供给配置映像扇区452和454,然后经由提供给PLD结构400的锁定请求来重新锁定配置I/O 448和/或配置映像扇区452和454。

图10示出了根据本公开的实施例的用于安全PLD 410的资产管理过程1000。在一些实施例中,图10的操作可以被实现为由与图1至图6中描述的相应电子设备、模块和/或结构相关联的一个或多个逻辑器件执行的软件指令。更一般地,图10的操作可以用软件指令和/或电子硬件(例如,电感器、电容器、放大器、致动器或其它模拟和/或数字组件)的任何组合来实现。应当理解,过程1000的任何步骤、子步骤、子过程或块可以不同于图10所示实施例的顺序或布置来执行。例如,在其它实施例中,可以从过程1000中省略一个或多个块,并且可以包括其它块。此外,在移动到过程1000的后续部分之前,可以将块输入、块输出、各种传感器信号、传感器信息、校准参数和/或其它操作参数存储到一个或多个存储器。虽然参照图1至图6的系统、设备和元件描述了过程1000,但是过程1000可以由其它系统、设备和元件来执行,并且包括电子系统、设备、元件、组件和/或布置的不同选择。在过程1000的启动处,例如,各种系统参数可以通过类似于过程1000的过程的先前执行来填充,或者可以初始化为零和/或对应于从过程1000的过去操作导出的典型的、存储的和/或学习的值的一个或多个值,如本文所述。

在可选框1010中,逻辑器件接收资产解锁请求。例如,锁定和/或编程的安全PLD410的配置引擎440可以被配置为接收安全PLD资产解锁请求,该安全PLD资产解锁请求由例如通过配置I/O 448耦合到安全PLD 410的安全PLD客户端510或安全PLD制造商520的外部系统130发出,或者由运行被编程到安全PLD 410中的客户端或制造商配置的PLD结构400发出(例如,使用类似于关于图7的过程700所描述的过程)。在一些实施例中,PLD结构400可以被配置为接收安全PLD资产解锁请求。

在各种实施例中,可以对这种安全PLD资产解锁请求进行签名、加密和/或包括附加信息,以便使安全PLD 410能够认证安全PLD资产解锁请求。在特定实施例中,这样的安全PLD资产解锁请求可以包括被表征(例如,从安全PLD制造商520提供的锁定PLD清单中提取的)的特定安全PLD 410的跟踪ID,并且安全PLD客户端510的外部系统130和/或HSM 526可以被配置为使用其应用私有密钥或不同私有密钥来签署这样的安全PLD资产解锁请求,如本文所述。

在一些实施例中,配置引擎440和/或PLD结构400可以被配置为认证在框1010中接收的安全PLD资产解锁请求。在一个实施例中,安全PLD 410可以被配置为在供应过程中的锁定、编程或其它供应步骤期间使用存储在NVM 450中的应用或其它公共密钥来认证由应用私有密钥或其它私有密钥签名的安全PLD资产解锁请求,如本文所述。在另一实施例中,安全PLD 410可以被配置为通过将安全PLD资产解锁请求中的安全PLD资产解锁请求跟踪ID与存储在MFG修剪扇区456和/或NVM 450的其它扇区中的跟踪ID或与安全引擎420的器件ID422相比较来认证这样的安全PLD资产解锁请求,使得安全PLD资产解锁请求中的匹配跟踪ID指示经认证的安全PLD资产解锁请求。在进一步的实施例中,这样的认证过程可以包括使用存储在NVM 450中的公共密钥来解密安全PLD资产解锁请求,如本文所述。

在各种实施例中,配置引擎440和/或PLD结构400可以被配置为在接收到和/或认证安全PLD资产解锁请求之后解锁对应于安全PLD资产解锁请求的安全PLD资产。例如,配置引擎440和/或PLD结构400可以被配置为通过调整或更新配置引擎440的影子寄存器860中的锁定状态来解锁安全PLD资产,然后,该锁定状态可以被存储在NVM 450的锁定策略460中,这取决于对应的锁定策略锁定状态861的内容。

在框1020中,逻辑器件接收资产访问请求。例如,锁定的和/或编程的安全PLD 410的配置引擎440和/或PLD结构400可以被配置为接收安全PLD资产访问请求,该安全PLD资产访问请求由例如通过配置I/O 448耦合到安全PLD 410的安全PLD客户端510或安全PLD制造商520的外部系统130发出,或者由运行被编程到安全PLD 410中的客户端或制造商配置的PLD结构400发出。在各种实施例中,配置引擎440和/或PLD结构400可以被配置为在进行到框1030之前认证这种安全PLD资产访问请求。

在框1030中,逻辑器件执行资产更新过程。例如,锁定和/或编程的安全PLD 410的配置引擎440和/或PLD结构400可以被配置为执行与在框1020中接收的安全PLD资产访问请求和/或在框1010中接收的安全PLD资产解锁请求相对应的安全PLD资产更新过程。在各种实施例中,执行安全PLD资产更新过程可以至少部分地基于与安全PLD资产(例如,配置I/O448的一个或多个端口和/或NVM 450的扇区)相关联的锁定状态,该安全PLD资产对应于在框1020中接收的安全PLD资产访问请求和/或在框1010中接收的安全PLD资产解锁请求。

在各种实施例中,配置引擎440和/或PLD结构400可以被配置为更新例如存储在配置映像扇区452和454和/或UFM扇区462中的一个或多个配置映像。在一个实施例中,配置引擎440和/或PLD结构400可以被配置为通过配置I/O 448(例如,通过配置引擎440)和/或可编程I/O 404来接收新配置映像,以使用存储在器件密钥扇区458中的器件密钥来解密和/或认证该新配置映像,确定与配置映像扇区452和454中的一个相关联的锁定状态包括写使能和/或擦除使能锁定状态,以及将新配置映像存储在配置映像扇区452或454中的一个中(例如,同时设置认证位以指示所存储的新配置映像是可引导的,而无需额外的认证过程)和/或引导新配置映像。

在引导新的配置映像时,PLD结构400可以被配置为设置或更新器件密钥锁定状态858,以允许写和/或擦除对器件密钥扇区458和/或UFM扇区462的访问,通过安全信道(例如,由PLD结构400通过可编程I/O 404建立的)下载/接收新密钥,将新密钥写入UFM扇区462,擦除器件密钥扇区458,将新密钥从UFM扇区462复制到器件密钥扇区458中,下载用于PLD结构400的附加配置映像,使用新密钥解密和/或认证附加新配置映像,以及将附加新配置映像存储在配置映像扇区452和454中的一个中(并且包括设置认证位以指示所存储的附加新配置映像是可引导的,而无需另一认证过程)和/或引导新配置映像。在各种实施例中,相对于配置I/O 448和/或PLD结构400,器件密钥锁定状态858可以被更新以包括写禁用和/或擦除禁用锁定状态。这种过程允许实施例安全地更新密钥和配置映像,作为单个或统一方法的一部分。

在另一实施例中,配置引擎440和/或PLD结构400可以被配置为接收、验证和/或认证针对特定配置映像扇区的解锁请求,并且解锁特定配置映像扇区,以便根据由外部系统130提供的更新的配置映像由外部系统130和/或由PLD结构400编程。配置引擎440和/或PLD结构400还可以被配置为通过配置I/O 448和通过配置引擎440从外部系统130接收锁定请求(例如,识别存储在配置映像扇区454中的更新的配置映像),并且配置引擎440和/或PLD结构400可以被配置为接收、验证和/或认证锁定请求,并且硬或软锁定配置映像扇区454以防止进一步的外部访问,如本文所述。

在各种实施例中,安全PLD 410的其他安全资产可以使用类似技术安全地更新。例如,安全PLD 410的配置引擎440和/或PLD结构400可以被配置为接收更新的MFG修整、跟踪ID、器件密钥、IPI和/或其它数据(例如,由例如通过配置I/O 448或通过可编程I/O 404耦合到安全PLD 410的安全PLD客户端510或安全PLD制造商520的外部系统130和/或HSM 526发行/生成),其被配置为使用类似于图7的供应过程700的过程来重新供应安全PLD 410和/或将安全PLD 410置于待重新供应的状态,从而允许将安全PLD 410被置于具有不同或更新的操作数据的服务中。

在可选框1040中,逻辑器件接收资产锁定请求。例如,安全PLD410的配置引擎440和/或PLD结构400可以被配置为接收安全PLD资产锁定请求,该安全PLD资产锁定请求由例如通过配置I/O 448耦合到安全PLD 410的安全PLD客户端510或安全PLD制造商520的外部系统130发出,或者由运行被编程到安全PLD 410中的客户端配置的PLD结构400发出。在各种实施例中,配置引擎440和/或PLD结构400可以被配置为在根据包括在安全PLD资产锁定请求中的锁定状态锁定资产之前认证这种安全PLD资产锁定请求。例如,配置引擎440和/或PLD结构400可以被配置为通过调整或更新配置引擎440的影子寄存器860中的锁定状态来锁定安全PLD资产,然后可以根据相应的锁定策略锁定状态861的内容将锁定状态存储在NVM 450的锁定策略460中,如本文所述。

通常,过程1000的各个框可以完全由安全PLD客户端510、安全PLD制造商510和/或安全PLD供应系统500和/或502的其他元件执行或在安全PLD客户端510、安全PLD制造商510和/或安全PLD供应系统500和/或502的其他元件内执行。在特定实施例中,方框1030可由下游客户端550执行,以原位更新NVM 450的各种元件,例如在与用户设备610集成的同时更新NVM 450的各种元件。更一般地,框1030可由安全PLD客户端510、安全PLD制造商520、安全PLD编程器530、用户设备组装器540和/或下游客户端550在安全PLD 410和/或用户设备610的操作寿命期间的任何时间执行。

因此,通过采用本文描述的系统和方法,本公开的实施例能够为安全PLD提供灵活且安全的资产管理。可以安全地擦除和/或更新客户端锁定和/或以其他方式提供的安全PLD,而没有暴露客户端数据的风险。此外,可以例如根据更新的客户端数据或根据新的客户端应用安全地重新供应安全PLD,而不需要孤立安全PLD或以其他方式毁坏安全PLD。

在适用的情况下,可以使用硬件、软件或硬件和软件的组合来实现本公开提供的各种实施例。此外,在适用的情况下,本文阐述的各种硬件组件和/或软件组件可以组合成包括软件、硬件和/或两者的复合组件,而不脱离本公开的精神。在适用的情况下,本文阐述的各种硬件组件和/或软件组件可以被分离成包括软件、硬件或两者的子组件,而不脱离本公开的精神。此外,在适用的情况下,可以设想软件组件可以实现为硬件组件,反之亦然。

根据本公开的软件,诸如非暂态指令、程序代码和/或数据,可以存储在一个或多个非暂态机器可读介质上。还可以设想,可以使用一个或多个通用或专用计算机和/或计算机系统来实现本文所标识的软件,所述通用或专用计算机和/或计算机系统是联网的和/或其他方式的。在适用的情况下,可以改变本文描述的各种步骤的顺序,将其组合成复合步骤,和/或将其分离成子步骤,以提供本文描述的特征。

上述实施例示出但不限制本发明。还应当理解,根据本发明的原理,许多修改和变化是可能的。因此,本发明的范围仅由以下权利要求限定。

相关技术
  • 用于可编程逻辑器件的资产管理系统和方法
  • 一种用于数据中心的IT资产管理系统及管理方法
技术分类

06120112430965