CN112470158A - 用于可编程逻辑器件的故障表征系统和方法 - Google Patents

用于可编程逻辑器件的故障表征系统和方法 Download PDF

Info

Publication number
CN112470158A
CN112470158A CN201980045821.8A CN201980045821A CN112470158A CN 112470158 A CN112470158 A CN 112470158A CN 201980045821 A CN201980045821 A CN 201980045821A CN 112470158 A CN112470158 A CN 112470158A
Authority
CN
China
Prior art keywords
pld
secure
configuration
secure pld
command
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
CN201980045821.8A
Other languages
English (en)
Inventor
F·张
S·(S)·钱德拉
S·赫加德
J·科普轮
W·韩
孙宇
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.)
Lattice Semiconductor Corp
Original Assignee
Lattice Semiconductor 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 Lattice Semiconductor Corp filed Critical Lattice Semiconductor Corp
Priority claimed from PCT/US2019/031881 external-priority patent/WO2019217929A1/en
Publication of CN112470158A publication Critical patent/CN112470158A/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Logic Circuits (AREA)

Abstract

公开了用于安全可编程逻辑器件(PLD)的故障表征的系统和方法。示例性系统包括安全PLD,安全PLD包括可编程逻辑块(PLB)和配置引擎,可编程逻辑块(PLB)被布置在安全PLD的PLD结构中,配置引擎被配置为根据存储在安全PLD的非易失性存储器(NVM)中的、和/或通过安全PLD的配置输入/输出(I/O)耦合到配置引擎的配置映像对PLD结构进行编程。安全PLD被配置为从PLD结构或从通过配置I/O耦合到安全PLD的外部系统接收故障表征(FC)命令,并执行FC命令,以至少部分地擦除和/或无效NVM的部分。安全PLD还可以被配置为引导用于PLD结构的调试配置,该调试配置标识和/或表征安全PLD的操作故障。

Description

用于可编程逻辑器件的故障表征系统和方法
相关申请的交叉引用
本专利申请要求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的供应过程。
图8示出了根据本公开的实施例的用于锁定的安全PLD的故障表征过程。
图9示出了根据本公开的实施例的用于锁定的安全PLD的故障表征过程。
通过参考下面的详细描述可以最好地理解本公开的实施例及其优点。应当理解,相同的附图标记用于标识在一个或多个附图中所示出的相同的元件,其中,文中的示出是为了说明本公开的实施例而不是为了限制本公开的实施例。
具体实施方式
本公开提供了用于促进锁定的安全可编程逻辑器件(PLD)(其用在可信计算应用和体系结构中)的安全返回和故障表征的系统和方法,如本文所述。例如,实施例提供了安全地擦除安全PLD的系统和方法,该安全PLD被锁定到怀疑隐匿有物理或其他类型的操作故障的客户端定义的配置和/或操作环境,,从而可以在安全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(例如,屏幕或显示器),以及用于接收用户命令或设计条目以准备PLD100的期望配置的一个或多个用户输入设备137(例如,键盘、鼠标、跟踪球、触摸屏和/或其他设备)。
图2示出了根据本公开的实施例的PLD 100的逻辑块104的框图。如所讨论的,PLD100包括多个逻辑块104,该多个逻辑块104包括各种组件以提供逻辑和算术功能。在图2所示的示例性实施例中,逻辑块104包括多个逻辑单元200,所述多个逻辑单元200可以在逻辑块104内内部互连和/或使用路由资源180在外部互连。例如,每个逻辑单元200可包括各种组件,诸如:查找表(LUT)202、模式逻辑电路204、寄存器206(例如触发器或锁存器)以及用于选择逻辑单元200和/或逻辑单元200之间的期望信号路径的各种可编程多路复用器(例如可编程多路复用器212和214)。在该示例中,LUT 202接受四个输入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/PKG 430生成的公共密钥/私有密钥对的私有密钥。相反,安全总线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和/或安全PLD410的其它元件,特定资源的锁定状态指示对该资源的读、写/编程和/或擦除访问。
如本文所述,“软”锁定指的是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检索安全PLD 420以及经由外部总线接口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可生成客户端特定的编程公共密钥/私有密钥对(例如,用于加密、解密和/或认证用于锁定的安全PLD410的配置,诸如锁定安全PLD410和解锁安全PLD 410以用于编程)和编程秘密(例如,256位随机数字以进一步认证所提供的配置),并将编程私有密钥、编程秘密和工厂公共密钥提供给外部系统130以用于加载到空白或解锁的安全PLD 410中并锁定该空白或解锁的安全PLD 410。例如,HSM 526可以被配置为本地生成工厂公共密钥/私有密钥对和/或从存储器134检索这样的工厂密钥,并且这样的工厂密钥可以是工厂特定的和/或客户端特定的。配置引擎440可接收器件特定跟踪ID(例如,其可标识对应于安全PLD 410的制造工艺的制造批次、晶片和晶片位置)、编程私有密钥、编程秘密、工厂公共密钥和PLD结构400的初始编程映像(IPI)配置,其可全部存储在NVM 450的一个或多个扇区中以锁定安全PLD 410。
然后,配置引擎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并伴随编程公共密钥(例如,以帮助生成安全PLD 410的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),并提供重定向命令至安全PLD 410(例如,待由安全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的配置。例如,安全PLD410可以被配置为使用安全引擎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(例如,在NVM630或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中接收的请求,所有这些都可以被存储在HSM 526中。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来提供新信息至使用先前工厂私有密钥签名的安全PLD410,并且提供重定向命令至安全PLD 410(例如,待由安全PLD 410执行),其中重定向命令可以由PLD结构400和/或配置引擎440执行,以用存储在NVM 450中的先前工厂公共密钥认证新信息,并且用相应的新的或更新的或重定向的信息替换存储在NVM 450中的先前信息(例如,器件公共密钥/私有密钥对、编程私有密钥、编程秘密、工厂公共密钥和/或IPI),如本文所述。
在框730中,逻辑器件提供用于锁定PLD的安全解锁包。例如,安全PLD制造商520的HSM 526可被配置为提供用于在框720中生成的锁定的安全PLD 410的安全解锁包至安全PLD客户端510。在一个实施例中,HSM 526可被配置为提供在框720中生成的加密的编程分组、编程公共密钥和/或客户端编程密钥令牌至安全PLD客户端510。安全PLD客户端510可以使用这样的信息来生成安全PLD 410的受保护配置,如在框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的HSM526可以被配置为生成应用公共密钥/私有密钥对、应用加密密钥(例如AES加密密钥)和编程分组公共密钥/私有密钥对。外部系统130可以被配置为使用应用私有密钥对应用和特征配置进行签名,并且使用应用加密密钥对签名的应用和特征配置进行加密。外部系统130还可以被配置为通过对应用公共密钥、应用程序加密密钥以及编程秘密(例如,从在框730中提供的安全解锁包的加密的编程分组中提取的)与应用私有密钥的组合/列表进行签名来生成编程密钥摘要,基于编程公共密钥和编程分组私有密钥导出加密密钥(例如,使用椭圆曲线Diffie-Hellman密钥导出函数),使用导出的加密密钥对密钥的签名组合进行加密,以及将加密和签名的密钥组合与编程分组公共密钥组合(例如,将编程分组公共密钥附加到加密和签名的密钥组合)以创建编程密钥摘要。外部系统130还可以被配置为用分组私有密钥对锁定的PLD清单(例如,在框740中接收的)进行签名,以经认证地递送到下游安全PLD编程器530、用户设备组装器540和/或下游客户端550。外部系统130可以被配置为通过将加密的应用和特征配置与编程密钥摘要相结合来生成用于安全PLD 410的受保护配置,以创建单个受保护的信息分组。
在框760中,逻辑器件向配置编程器提供锁定PLD。例如,安全PLD制造商520可以被配置为提供在框720中生成的锁定的安全PLD410给安全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可以通过安全PLD410的一个或多个总线来验证安全PLD 410的受保护配置和程序元件,包括PLD结构400和NVM 450的部分。更具体地,安全PLD 410可以被配置为使用在框720中存储在NVM 450中的编程私有密钥和在框750中生成的分组公共密钥来解密编程密钥摘要中的加密密钥。在框720中,安全PLD 410还可以被配置为用应用公共密钥认证解密的密钥摘要,并且验证编程密钥摘要中的编程秘密与存储在NVM 450中的编程秘密匹配。如果两个检查都通过,则安全PLD 410可将来自密钥摘要的应用公共密钥和应用加密密钥存储在NVM 450中。
一旦来自密钥摘要的应用公共密钥和应用加密密钥被存储在NVM 450中,安全PLD410然后可以解密应用和特征配置并认证解密的应用和特征配置。例如,只有在使用应用加密密钥和应用公共密钥成功地解密和认证比特流的情况下,才能将应用和特征配置编程到安全PLD 410中。在应用配置被成功认证的情况下,安全PLD 410可被配置为将应用配置编程/存储到配置映像扇区452或454之一中,为适当映像设置预认证位,以从PLD结构400擦除IPI,和/或根据所存储的应用配置来编程PLD结构400。特征配置可以被编程到NVM450的一个或多个部分中。在编程安全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 410的安全引擎420管理。
图8示出了根据本公开的实施例的用于锁定的安全PLD 410的故障表征过程800。在一些实施例中,图8的操作可以被实现为由与图1至图6中描述的相应电子设备、模块和/或结构相关联的一个或多个逻辑器件执行的软件指令。更一般地,图8的操作可以用软件指令和/或电子硬件(例如,电感器、电容器、放大器、致动器或其它模拟和/或数字组件)的任何组合来实现。应当理解,过程800的任何步骤、子步骤、子过程或框可以不同于图8所示实施例的顺序或布置来执行。例如,在其它实施例中,可以从过程800中省略一个或多个框,并且可以包括其它框。此外,在移动到过程800的后续部分之前,可以将框输入、框输出、各种传感器信号、传感器信息、校准参数和/或其它操作参数存储到一个或多个存储器。虽然参照图1至图6的系统、设备和元件描述了过程800,但是过程800可以由其它系统、设备和元件来执行,其他系统、设备和元件包括电子系统、设备、元件、组件和/或布置的不同选择。在过程800的启动处,例如,各种系统参数可以通过对类似于过程800的过程的先前执行来填充,或者可以初始化为零和/或初始化为如下的一个或多个值:该一个或多个值对应于从过程800的过去操作导出的典型的、存储的和/或学习的值,如本文所述。
在框810中,逻辑器件接收故障表征命令。例如,锁定和/或编程的安全PLD 410的配置引擎440可以被配置为接收故障表征(FC)命令,该故障表征(FC)命令例如由耦合到安全PLD 410的安全PLD客户端510或安全PLD制造商520的外部系统130通过配置I/O 448发出,或者该故障表征(FC)命令由运行被编程到安全PLD 410中的客户端配置的PLD结构400(例如,使用类似于关于图7的过程700所描述的过程)发出。在一些实施例中,安全PLD客户端510可以在检测到安全PLD 410的操作中的故障之后,例如在准备将安全PLD 410发送到安全PLD制造商520以进行故障表征时,发出这样的FC命令(例如,或将这样的命令提供给安全PLD供应系统500或502的另一元件以代表其发出)。在其它实施例中,这种故障表征可发生在安全PLD供应系统500或502的任何元件内和/或当安全PLD 410与用户设备610集成时。在各种实施例中,这样的FC命令可以被签名、加密和/或包括附加信息,以便使安全PLD 410能够认证FC命令。在特定实施例中,这样的FC命令可以包括正被表征(例如,从安全PLD制造商520提供的锁定PLD清单中提取的)的特定安全PLD 410的跟踪ID,并且安全PLD客户端510的外部系统130和/或HSM 526可以被配置为使用其应用私有密钥来对这样的FC命令进行签名,如本文所述。
在框820中,逻辑器件认证该FC命令。例如,锁定的和/或编程的安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:认证在框810中接收的FC命令。在一个实施例中,安全PLD 410可以被配置为:在供应过程中的锁定、编程或其它供应步骤期间,使用存储在NVM 450中的应用公共密钥来认证由应用私有密钥签名的FC命令,如本文所述。在另一实施例中,安全PLD 410可以被配置为:通过将FC命令中的FC跟踪ID与存储在MFG修整扇区456和/或NVM 450的其它扇区中的跟踪ID相比较或与安全引擎420的设备ID422相比较,从而认证这样的FC命令,使得FC命令中的匹配跟踪ID指示经认证的FC命令。在进一步的实施例中,这样的认证过程可以包括使用存储在NVM 450中的公共密钥来解密FC命令,如本文所述。
在框830中,逻辑器件执行FC命令。例如,锁定和/或编程的安全PLD 410的配置引擎440和/或PLD结构400可以被配置为执行在框820中经认证的FC命令。在NVM 450包括可重写和/或经解锁的存储器扇区的实施例中,这样的FC执行可包括擦除NVM 450的一个或多个扇区,诸如映像扇区452和454、UFM 462、锁定策略扇区460、设备密钥458和/或其它可安全存储扇区464中的一个或多个。在NVM450包括OTP存储器扇区的实施例中,这样的FC执行可包括使NVM450的一个或多个扇区无效,例如映像扇区452和454、UFM扇区462、锁定策略扇区460、设备密钥458和/或其它可安全存储扇区464中的一个或多个。扇区的这种无效化可包括将扇区内的所有比特设置为“1”以指示扇区的无效化状态。通常,MFG修整扇区456可以保持完整,并且不通过执行这样的FC命令而被擦除或无效。
在各种实施例中,NVM 450的扇区的这种擦除和/或无效可包括首先擦除和/或无效较不关键的资产/扇区,然后是较关键的资产/扇区。例如,一个这样的优先化擦除/无效顺序可以包括UFM扇区462、映像扇区452和454、其他可安全存储扇区464(例如,包括存储的包括安全功能和/或其他特征的特征比特流/配置)、设备密钥扇区458和锁定策略扇区460。这样的优先顺序可被设计成:在通过擦除/无效锁定策略扇区460并将所有锁定状态重置为解锁状态(例如,使得所有资产/扇区/端口可由PLD结构400访问和/或通过配置I/O 448访问)来解锁对特定客户端数据和/或数据类型的潜在访问之前,确保对特定客户端数据和/或数据类型的安全擦除/无效。在其它实施例中,除了MFG修整扇区456之外,NVM 450的一个或多个扇区可以保持完整且不被擦除或无效,例如,诸如UFM扇区462和/或其它可安全存储扇区464的扇区,以便在NVM 450中保留各种安全功能或特征(例如,解密、认证和/或其它安全功能或特征),从而用于例如执行调试过程或重新初始化经调试的安全PLD 410。
在框840中,逻辑器件执行调试过程。例如,在框830中通过执行经认证的FC命令而被擦除和/或无效的安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:执行调试过程,包括接收调试配置(例如,用于由PLD结构400执行)和/或生成结果调试摘要,以帮助显式地表征安全PLD 410的故障,如关于图9的故障表征/调试过程840更全面地描述的。在一些实施例中,这样的调试过程可包括可能地迭代地更新MFG修整456,以减轻或消除在所生成的调试摘要中被表征和/或以其他方式被标识的故障的原因。在进一步的实施例中,这样的调试过程可以包括附加的认证过程,以帮助消除被擦除/无效化的安全PLD被提供和/或与第三方配置和/或其他数据一起使用的风险,这些第三方配置和/或其他数据可能被用于损害用户设备(例如,用户设备610)的操作或使其无效。在各种实施例中,这种调试过程可以被配置为:在允许调试过程进一步进行之前,验证NVM450的一个或多个扇区被擦除和/或无效。
通常,框830和框840可完全由安全PLD客户端510、安全PLD制造商510和/或安全PLD供应系统500和/或502的其它元件执行、或在安全PLD客户端510、安全PLD制造商510和/或安全PLD供应系统500和/或502的其它元件内执行。在特定实施例中,框830可由安全PLD客户端510执行,以确保在交付给安全PLD制造商510以用于根据框840进行调试之前擦除客户端数据。更一般地,在将安全PLD 410和/或用户设备610交付给安全PLD制造商520以用于根据框840调试之前,可由安全PLD客户端510、安全PLD编程器530、用户设备组装器和/或下游客户端550来执行框830。
在可选框850中,逻辑器件重新供应安全PLD。例如,在NVM 450包括通过框830中的FC命令的执行而被擦除的可重写和/或经解锁的存储器扇区的实施例中,在框840中经调试的安全PLD410的配置引擎440可以被配置为:接收更新的MFG修整、跟踪ID、设备密钥、IPI和/或其它数据(例如,由耦合到安全PLD 410的安全PLD客户端510或安全PLD制造商520的外部系统130和/或HSM 526通过配置I/O 448来发行/生成),且被配置为:使用类似于图7的供应过程700的过程来重新供应安全PLD 410和/或将安全PLD 410置于待重新供应的状态,从而允许将经调试的安全PLD 410重新置于服务中。在如下的实施例中:框840的调试过程包括在允许调试配置或任何其它配置被加载到PLD结构400中并被PLD结构400引导之前的附加认证过程,如本文所述,这样的重新供应过程可包括:在将更新的MFG修整、跟踪ID、设备密钥、IPI和/或其它数据存储在NVM 450内之前,认证这些数据。在NVM 450包括通过框830中的FC命令的执行而被无效的OTP存储器扇区的实施例中,相应的安全PLD 410典型地不能被重新供应。
因此,通过采用本文中描述的系统和方法,本公开的实施例能够跨安全PLD的客户端订单提供安全PLD的灵活且安全的故障表征。客户端锁定和/或以其他方式提供的显示故障的安全PLD可以被安全地擦除并提供回制造商,以用于故障表征和/或修复(例如,重新调整),以帮助客户端标识安全PLD和/或集成用户设备的故障模式,而不冒暴露客户端数据的风险。此外,在故障模式被追溯到安全PLD的错误配置的情况下,例如通过由客户端提供的配置中的错误而不是安全PLD的物理故障,可以根据例如更新的客户端数据或根据新的客户端应用重新供应安全PLD,而不需要安全PLD被孤立或以其它方式被故障表征过程破坏。
图9示出了根据本公开的实施例的用于锁定的安全PLD 410的故障表征过程840。在各种实施例中,图9的故障表征过程840可大体对应于图8中的故障表征过程800的框840。
在一些实施例中,图9的操作可以被实现为由与图1至图6中描述的相应电子设备、模块和/或结构相关联的一个或多个逻辑器件执行的软件指令。更一般地,图9的操作可以用软件指令和/或电子硬件(例如,电感器、电容器、放大器、致动器或其它模拟和/或数字组件)的任何组合来实现。应当理解,过程900的任何步骤、子步骤、子过程或框可以不同于图9所示实施例的顺序或布置来执行。例如,在其它实施例中,可以从过程900中省略一个或多个框,并且可以包括其它框。此外,在移动到过程900的后续部分之前,可以将框输入、框输出、各种传感器信号、传感器信息、校准参数和/或其它操作参数存储到一个或多个存储器。虽然参照图1至图6的系统、设备和元件描述了过程900,但是过程900可以由其它系统、设备和元件来执行,并且包括电子系统、设备、元件、组件和/或布置的不同选择。在过程900的启动处,例如,各种系统参数可以通过对类似于过程900的过程的先前执行来填充,或者可以初始化为零和/或初始化为如下的一个或多个值:该一个或多个值对应于从过程900的过去操作导出的典型的、存储的和/或学习的值,如本文所述。
在框910中,逻辑器件接收调试配置。例如,在图8的框830中通过执行经认证的FC命令而被擦除和/或无效的安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:接收调试配置(例如,由安全PLD客户端510或安全PLD制造商520的外部系统130和/或HSM 526通过配置I/O 448而发布/生成),该调试配置被存储在NVM 450中,并由PLD结构400和/或安全PLD 410的其它元件加载、引导和执行,以调试安全PLD 410的任何一个或多个元件的操作,从而表征安全PLD 410的任何一个元件或元件组合的故障。
例如,在一些实施例中,这样的调试配置可被配置为:使PLD结构400实现信号或数据发生器,该信号或数据发生器被配置为以PLD结构400的一个或多个选定时钟速度操作,并向安全PLD 410的元件提供一个或多个已知信号或数据以引出相应的预期响应;向安全PLD 410的元件提供这样的信号或数据并监视相应的实际响应;以及将实际响应与预期响应进行比较以生成标识一个或多个失败的比较和/或这样的比较的特性的调试摘要。更一般地,这种调试配置可以被配置为标识和/或表征安全PLD 410的任何一个元件或元件组合的操作中的故障,并且这种调试配置可以与外部调试应用程序(例如,由耦合到安全PLD410的外部系统130通过配置I/O 448来执行)相结合来执行,所述外部调试应用程序被配置为帮助生成标识和/或表征安全PLD 410的操作中的这种故障的调试摘要。在各种实施例中,调试配置可以在例如被提供给安全PLD 410之前被签名(例如,由存储在HSM 526中的工厂私有密钥),和/或调试配置可以包括对应于要被调试的特定安全PLD 410的跟踪ID。
在可选框920中,逻辑器件认证该调试配置。例如,安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:认证在框910中接收的PLD结构400和/或安全PLD 410的调试配置。在一些实施例中,安全PLD 410可以被配置为:从NVM 450检索安全功能或特征和/或一个或多个密钥(例如,驻留在未被执行的FC命令擦除或无效的扇区中),并且使用这样的安全功能、特征和/或密钥来认证在框910中接收的调试配置。在调试配置由安全PLD制造商520的工厂私有密钥签名的实施例中,安全PLD 410可以被配置为使用驻留在NVM 450的未擦除/未无效部分(例如,在MFG修整扇区456中)中的工厂公共密钥来认证经签名的调试配置。在调试配置包括跟踪ID的实施例中,安全PLD 410可以被配置为:将调试配置中的跟踪ID与存储在NVM 450和/或安全引擎420中的跟踪ID进行比较。安全PLD 410可以被配置为仅允许引导所接收的调试配置,或在执行经认证的FC命令之后所接收的任何配置(例如,在图8的框830中),如果调试配置被签名和被认证和/或如果调试配置中的跟踪ID与存储在NVM450和/或安全引擎420中的跟踪ID匹配。在各种实施例中,擦除/无效化的安全PLD 410可以被配置为:在每次功率损失之后,检查对所接收的和/或所存储的调试配置的认证。
在单独的实施例中,安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:在允许外部系统130通过配置I/O 448提供调试或任何其它配置之前,通过配置I/O 448,认证耦合的外部系统130。例如,安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:在框910中与接收调试配置分开并且在接收调试配置之前接收认证消息,其中认证消息包括跟踪ID、和/或由对应于安全PLD制造商520的工厂密钥签名的其他信息、和/或使用对应于安全PLD 410的设备公共密钥加密的其他信息(例如,具有存储在NVM 450中的相应设备私有密钥)。安全PLD 450可以被配置为使用工厂公共密钥、跟踪ID和/或设备私有密钥来认证该认证消息,如本文所述,然后允许外部系统130通过配置I/O 448来提供调试配置。这样的调试配置本身可以包括跟踪ID、被签名和/或被加密,以便于进一步的认证,如本文所述。
在框930中,逻辑器件引导调试配置。例如,安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:加载、引导和/或执行在框910中被接收的和/或在可选框920中被认证的PLD结构400和/或安全PLD 410的调试配置。在各种实施例中,可在框910中接收到调试配置时和/或如关于可选框920所描述的在可选地认证接收到的调试配置时进行这种引导。这样的引导可包括向外部系统130发信号,以通知对所接收的调试配置的引导,以便启动外部系统130对调试应用的补充执行,如本文所述。
在框940中,逻辑器件生成调试摘要。例如,安全PLD 410的配置引擎440和/或PLD结构400可以被配置为:基于对在框930中引导的PLD结构400和/或安全PLD 410的调试配置的执行,生成调试摘要。在一些实施例中,这样的调试摘要可以包括安全PLD 410和/或安全PLD 410的元件的故障列表、这样的故障的表征,和/或与在框910中接收的调试配置的执行相关联的其它调试信息。在一些实施例中,安全PLD 410可以被配置为:生成这样的调试摘要、并通过配置I/O 448将其提供给外部系统130,例如,其中调试摘要包括由安全PLD 410确定的调试信息。在其它实施例中,安全PLD 410可以被配置为向外部系统130提供故障信息,并且外部系统130可以被配置为监视安全PLD 410的操作(例如,通过配置I/O 448和/或可编程I/O404)并且至少部分地在安全PLD 410外部生成调试摘要。
在各种实施例中,安全PLD 410和/或外部系统130可以被配置为:基于调试摘要,确定更新的MFG修整,所述调试摘要被配置为减轻或消除在调试摘要中被标识和/或被表征的故障。这样的更新的MFG修整可以被存储在NVM 450中和/或覆盖NVM 450中的MFG修整扇区456中,以例如重新配置安全PLD 410以在没有故障的情况下操作。在一些实施例中,可以利用多个更新的MFG修整迭代地执行这样的故障表征/调试过程,以收敛到可接受的MFG修整,所述可接受的MFG修整消除安全PLD 410的操作中的可检测故障并将安全PLD 410转换为经验证的安全PLD 410。在完成调试配置的执行、调试摘要的生成和/或MFG修整的更新之后,安全PLD 410可以被重新供应(例如,根据故障表征过程800的可选框850)、或被孤立、或以其他方式被破坏,如所生成的调试摘要中所标识的、如所期望的和/或由调试结果所指示的。
因此,通过采用在此描述的系统和方法,本公开的实施例能够跨安全PLD的客户端订单提供安全PLD的灵活、安全和准确的故障表征。客户端锁定的和/或以其他方式提供的显示故障的安全PLD可以被安全地擦除并提供回制造商,以用于故障表征和/或修复(例如,重新调整),以帮助客户端标识安全PLD和/或集成用户设备的故障模式,而不冒暴露客户端数据的风险。此外,可以表征和/或调试安全PLD中的故障,而不存在后调试的安全PLD(post-debugged secure PLD)的风险,该后调试的安全PLD通常可由第三方在不访问工厂私有密钥和/或在没有至少安全PLD制造商520的许可的情况下编程,如本文所述。
在适用的情况下,可以使用硬件、软件或硬件和软件的组合来实现本公开提供的各种实施例。此外,在适用的情况下,本文阐述的各种硬件组件和/或软件组件可以组合成包括软件、硬件和/或两者的复合组件,而不脱离本公开的精神。在适用的情况下,本文阐述的各种硬件组件和/或软件组件可以被分离成包括软件、硬件或两者的子组件,而不脱离本公开的精神。此外,在适用的情况下,可以设想软件组件可以实现为硬件组件,反之亦然。
根据本公开的软件,诸如非暂态指令、程序代码和/或数据,可以存储在一个或多个非暂态机器可读介质上。还可以设想,可以使用一个或多个通用或专用计算机和/或计算机系统来实现本文所标识的软件,所述通用或专用计算机和/或计算机系统是联网的和/或其他方式的。在适用的情况下,可以改变本文描述的各种步骤的顺序,将其组合成复合步骤,和/或将其分离成子步骤,以提供本文描述的特征。
上述实施例示出但不限制本发明。还应当理解,根据本发明的原理,许多修改和变化是可能的。因此,本发明的范围仅由以下权利要求限定。

Claims (20)

1.一种安全可编程逻辑器件(PLD)故障表征系统,包括:
安全PLD,其中所述安全PLD包括:多个可编程逻辑块(PLB),被布置在所述安全PLD的PLD结构中;以及配置引擎,被配置为根据存储在所述安全PLD的非易失性存储器(NVM)中的、和/或通过所述安全PLD的配置输入/输出(I/O)耦合到所述配置引擎的配置映像,对所述PLD结构进行编程,其中所述安全PLD被配置为执行计算机实现的方法,所述计算机实现的方法包括:
从所述PLD结构或从通过所述配置I/O耦合到所述安全PLD的外部系统接收故障表征(FC)命令;
执行所述FC命令,其中执行所述FC命令包括擦除和/或无效所述安全PLD的所述NVM的至少一部分;以及
执行调试过程,其中执行所述调试过程包括由所述PLD结构引导调试配置,所述调试配置被配置为标识和/或表征所述安全PLD的任何一个元件或元件组合的操作中的故障。
2.根据权利要求1所述的安全PLD故障表征系统,其中所述计算机实现的方法还包括:
在执行所述FC命令之前,认证所接收的FC命令,其中所述FC命令使用与用于所述安全PLD的安全PLD客户端相关联的应用私有密钥来被签名,相应的应用公共密钥被存储在所述NVM中,并且所述认证包括使用所述应用公共密钥来验证所述FC命令使用与所述安全PLD客户端相关联的所述应用私有密钥而被签名。
3.根据权利要求1所述的安全PLD故障表征系统,其中所述计算机实现的方法还包括:
在执行所述FC命令之前,认证所接收的FC命令,其中所述FC命令包括FC跟踪ID,与所述安全PLD相关联的跟踪ID被存储在所述NVM中,并且所述认证包括将所述FC跟踪ID与存储在所述NVM中的所述跟踪ID进行比较。
4.根据权利要求1所述的安全PLD故障表征系统,其中所述NVM包括可重写和/或经解锁的扇区,并且其中执行经认证的FC命令包括:
根据优先化擦除顺序,擦除所述NVM的各个扇区,其中所述优先化擦除顺序包括用户闪存扇区、映像扇区、存储在安全存储扇区中的安全和/或其它特征、设备密钥扇区和锁定策略扇区。
5.根据权利要求1所述的安全PLD故障表征系统,其中所述NVM包括一次性可编程扇区,并且其中执行经认证的FC命令包括:
根据优先化擦除顺序,使所述NVM的各个扇区无效,其中所述无效包括将特定扇区内的所有比特设置为“1”,并且其中所述优先化擦除顺序包括用户闪存扇区、映像扇区、存储在安全存储扇区中的安全和/或其它特征、设备密钥扇区和锁定策略扇区。
6.根据权利要求1所述的安全PLD故障表征系统,其中执行所述调试过程包括:
通过所述配置I/O接收调试配置;
在所述PLD结构中加载、引导和/或执行所接收的调试配置;以及
生成与所述调试配置相关联的调试摘要,其中所述调试摘要包括与由所述PLD结构进行的所述调试配置的执行相关联的故障和/或其它调试信息的列表。
7.根据权利要求6所述的安全PLD故障表征系统,其中执行所述调试过程还包括:
在所述PLD结构中加载、引导和/或执行所接收的调试配置之前,认证所述调试配置;以及
通过所述配置I/O,向耦合到所述安全PLD的外部系统提供所述调试摘要。
8.根据权利要求1所述的安全PLD故障表征系统,其中所述计算机实现的方法还包括在执行所述调试过程之后重新供应所述安全PLD,并且其中所述重新供应所述安全PLD包括:
通过所述安全PLD的所述配置I/O,接收编程私有密钥、编程秘密和初始编程映像(IPI)配置;
将所述IPI配置存储在所述NVM中;
根据所述IPI配置,对所述安全PLD的所述PLD结构进行编程。
9.根据权利要求1所述的安全PLD故障表征系统,还包括:
外部系统,包括处理器和存储器,并且被配置为通过所述安全PLD的所述配置输入/输出(I/O)耦合到所述安全PLD,其中所述存储器包括机器可读指令,所述机器可读指令在由所述外部系统的所述处理器执行时,适于使所述外部系统:
通过所述配置I/O,向所述安全PLD提供调试配置;
从所述安全PLD接收与由所述安全PLD的所述PLD结构进行的所述调试配置的引导和/或执行相关联的调试摘要;
至少部分地基于所接收的调试摘要来确定更新的制造商修整;以及
通过所述配置I/O,向所述安全PLD提供所述更新的制造商修整。
10.根据权利要求1所述的安全PLD故障表征系统,还包括:
外部系统,包括处理器和存储器,并且被配置为通过所述安全PLD的所述配置输入/输出(I/O)耦合到所述安全PLD,其中
所述存储器包括机器可读指令,所述机器可读指令在由所述外部系统的所述处理器执行时,适于使所述外部系统:
生成或接收用于所述安全PLD的受保护配置;以及
根据所述受保护配置,对所述安全PLD进行编程;
其中所述受保护配置包括应用配置和特征配置以及编程密钥摘要,所述应用配置和所述特征配置各自通过与安全PLD客户端相关联的应用私有密钥来被签名、并且通过与所述安全PLD客户端相关联的应用加密密钥来被加密,所述编程密钥摘要包括应用公共密钥、所述应用加密密钥和编程秘密的加密和签名组合,所述编程秘密与所述安全PLD客户端相关联。
11.一种安全可编程逻辑器件(PLD)故障表征系统,包括:
外部系统,包括处理器和存储器,并且被配置为通过安全PLD的配置输入/输出(I/O)耦合到所述安全PLD,其中所述存储器包括机器可读指令,所述机器可读指令在由所述外部系统的所述处理器执行时,适于使所述外部系统执行计算机实现的方法,所述计算机实现的方法包括:
通过所述配置I/O,向所述安全PLD提供故障表征(FC)命令和/或调试配置;以及
从所述安全PLD接收与由所述安全PLD的PLD结构进行的所述调试配置的引导和/或执行相关联的调试摘要;
至少部分地基于所接收的调试摘要,确定更新的制造商修整;以及
通过所述配置I/O,向所述安全PLD提供所述更新的制造商修整。
12.根据权利要求11所述的安全PLD故障表征系统,还包括:
所述安全PLD,其中所述安全PLD包括:多个可编程逻辑块(PLB),被布置在所述安全PLD的所述PLD结构中;配置引擎被配置为根据存储在所述安全PLD的非易失性存储器(NVM)中的、和/或通过所述配置输入/输出(I/O)耦合到所述配置引擎的配置映像,对所述PLD结构进行编程;以及安全引擎,被配置为针对所述PLD结构和/或所述配置引擎提供多个安全功能,其中所述安全PLD被配置为执行安全PLD实现的方法,所述安全PLD实现的方法包括:
通过所述配置I/O,从耦合到所述安全PLD的所述外部系统接收所述FC命令;
使用所述安全PLD的所述安全引擎的一个或多个安全功能来认证所接收的FC命令,其中所述认证包括使用存储在所述NVM中的应用公共密钥来验证所述FC命令使用与用于所述安全PLD的安全PLD客户端相关联的应用私有密钥而被签名;以及
执行所述FC命令,其中执行所述FC命令包括擦除和/或无效所述安全PLD的所述NVM的至少一部分;以及
执行对应于由所述外部系统提供的所述调试配置的调试过程,其中执行所述调试过程包括生成调试摘要,所述调试摘要包括调试信息,所述调试信息标识和/或表征所述安全PLD的任何一个元件或元件组合的操作中的故障。
13.一种用于安全可编程逻辑器件(PLD)的故障表征的方法,所述方法包括:
从PLD结构或从通过安全PLD的配置I/O耦合到所述安全PLD的外部系统接收故障表征(FC)命令;
执行所述FC命令,其中执行所述FC命令包括擦除和/或无效所述安全PLD的所述NVM的至少一部分;以及
执行调试过程,其中执行所述调试过程包括由所述PLD结构引导调试配置,所述调试配置被配置为标识和/或表征所述安全PLD的任何一个元件或元件组合的操作中的故障。
14.根据权利要求13所述的方法,还包括:
在执行所述FC命令之前,认证所接收的FC命令,其中所述FC命令使用与用于所述安全PLD的安全PLD客户端相关联的应用私有密钥来被签名,相应的应用公共密钥被存储在所述NVM中,并且所述认证包括使用所述应用公共密钥来验证所述FC命令使用与所述安全PLD客户端相关联的所述应用私有密钥而被签名。
15.根据权利要求13所述的方法,还包括:
在执行所述FC命令之前,认证所接收的FC命令,其中所述FC命令包括FC跟踪ID,与所述安全PLD相关联的跟踪ID被存储在所述NVM中,并且所述认证包括将所述FC跟踪ID与存储在所述NVM中的所述跟踪ID进行比较。
16.根据权利要求13所述的方法,其中所述NVM包括可重写和/或经解锁的扇区,并且其中执行经认证的FC命令包括:
根据优先化擦除顺序,擦除所述NVM的各个扇区,其中所述优先化擦除顺序包括用户闪存扇区、映像扇区、存储在安全存储扇区中的安全和/或其它特征、设备密钥扇区和锁定策略扇区。
17.根据权利要求13所述的方法,其中所述NVM包括一次性可编程扇区,并且其中执行经认证FC命令包括:
根据优先化擦除顺序,使所述NVM的各个扇区无效,其中所述无效包括将特定扇区内的所有比特设置为“1”,并且其中所述优先化擦除顺序包括用户闪存扇区、映像扇区、存储在安全存储扇区中的安全和/或其它特征、设备密钥扇区和锁定策略扇区。
18.根据权利要求13所述的方法,其中执行所述调试过程包括:
通过所述配置I/O接收调试配置;
在所述PLD结构中加载、引导和/或执行所接收的调试配置;以及
生成与所述调试配置相关联的调试摘要,其中所述调试摘要包括与由所述PLD结构进行的所述调试配置的执行相关联的故障和/或其它调试信息的列表。
19.根据权利要求18所述的方法,其中执行所述调试过程还包括:
在所述PLD结构中加载、引导和/或执行所接收的调试配置之前,认证所述调试配置;以及
通过所述配置I/O,向耦合到所述安全PLD的外部系统提供所述调试摘要。
20.根据权利要求13所述的方法,还包括:在执行所述调试过程之后,重新供应所述安全PLD,其中所述重新供应所述安全PLD包括:
通过所述安全PLD的所述配置I/O,接收编程私有密钥、编程秘密和初始编程映像(IPI)配置;
将所述IPI配置存储在所述NVM中;
根据所述IPI配置,对所述安全PLD的所述PLD结构进行编程。
CN201980045821.8A 2018-05-11 2019-05-10 用于可编程逻辑器件的故障表征系统和方法 Pending CN112470158A (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201862670487P 2018-05-11 2018-05-11
US62/670,487 2018-05-11
US201862756015P 2018-11-05 2018-11-05
US201862756001P 2018-11-05 2018-11-05
US201862756021P 2018-11-05 2018-11-05
US62/756,015 2018-11-05
US62/756,021 2018-11-05
US62/756,001 2018-11-05
PCT/US2019/031881 WO2019217929A1 (en) 2018-05-11 2019-05-10 Failure characterization systems and methods for programmable logic devices

Publications (1)

Publication Number Publication Date
CN112470158A true CN112470158A (zh) 2021-03-09

Family

ID=74516847

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201980043732.XA Pending CN112368701A (zh) 2018-05-11 2019-05-10 用于可编程逻辑器件的密钥供应系统和方法
CN201980043761.6A Pending CN112470157A (zh) 2018-05-11 2019-05-10 用于可编程逻辑器件的资产管理系统和方法
CN201980045733.8A Pending CN112437924A (zh) 2018-05-11 2019-05-10 用于可编程逻辑器件的安全引导系统和方法
CN201980045821.8A Pending CN112470158A (zh) 2018-05-11 2019-05-10 用于可编程逻辑器件的故障表征系统和方法

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN201980043732.XA Pending CN112368701A (zh) 2018-05-11 2019-05-10 用于可编程逻辑器件的密钥供应系统和方法
CN201980043761.6A Pending CN112470157A (zh) 2018-05-11 2019-05-10 用于可编程逻辑器件的资产管理系统和方法
CN201980045733.8A Pending CN112437924A (zh) 2018-05-11 2019-05-10 用于可编程逻辑器件的安全引导系统和方法

Country Status (2)

Country Link
EP (4) EP3791306B1 (zh)
CN (4) CN112368701A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113746801B (zh) * 2021-07-30 2023-07-11 佛山市青松科技股份有限公司 基于临时密钥的通信方法、发送终端、接收终端及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102272768A (zh) * 2009-01-05 2011-12-07 飞思卡尔半导体公司 用于允许对存储器元件的存取的方法、系统和集成电路
US8621597B1 (en) * 2004-10-22 2013-12-31 Xilinx, Inc. Apparatus and method for automatic self-erasing of programmable logic devices
US9230112B1 (en) * 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US20160217021A1 (en) * 2015-01-26 2016-07-28 Hewlett-Packard Development Company, L.P. Hardware signal logging in embedded block random access memory

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5425036A (en) * 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US7266725B2 (en) * 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5838901A (en) * 1996-08-05 1998-11-17 Xilinx, Inc. Overridable data protection mechanism for PLDs
US6357037B1 (en) * 1999-01-14 2002-03-12 Xilinx, Inc. Methods to securely configure an FPGA to accept selected macros
US6904527B1 (en) * 2000-03-14 2005-06-07 Xilinx, Inc. Intellectual property protection in a programmable logic device
ATE363098T1 (de) * 2001-09-03 2007-06-15 Pact Xpp Technologies Ag Verfahren zum debuggen rekonfigurierbarer architekturen
US20050081118A1 (en) * 2003-10-10 2005-04-14 International Business Machines Corporation; System and method of generating trouble tickets to document computer failures
US8078705B2 (en) * 2004-04-05 2011-12-13 Hewlett-Packard Development Company, L.P. Key-configured topology with connection management
US7759968B1 (en) * 2006-09-27 2010-07-20 Xilinx, Inc. Method of and system for verifying configuration data
US8171527B2 (en) * 2007-06-26 2012-05-01 General Instrument Corporation Method and apparatus for securing unlock password generation and distribution
US8065517B2 (en) * 2007-11-01 2011-11-22 Infineon Technologies Ag Method and system for transferring information to a device
EP2507708B1 (en) * 2009-12-04 2019-03-27 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US8966657B2 (en) * 2009-12-31 2015-02-24 Intel Corporation Provisioning, upgrading, and/or changing of hardware
US8497705B2 (en) * 2010-11-09 2013-07-30 Macronix International Co., Ltd. Phase change device for interconnection of programmable logic device
US8627105B2 (en) * 2011-04-29 2014-01-07 Altera Corporation Method and apparatus for securing programming data of a programmable device
EP2792100B1 (en) * 2011-12-15 2020-07-29 Intel Corporation Method and device for secure communications over a network using a hardware security engine
BR112014013583A2 (pt) * 2011-12-29 2017-06-13 Intel Corp método e aparelho para otimização de inicialização confiável
US9305185B1 (en) * 2012-08-07 2016-04-05 Altera Corporation Method and apparatus for securing programming data of a programmable device
US20140043059A1 (en) * 2012-08-10 2014-02-13 Microsemi Soc Corp. Secure digest for pld configuration data
US9442840B2 (en) * 2012-12-19 2016-09-13 Qualcomm Incorporated Virtual boundary codes in a data image of a read-write memory device
CN104794393B (zh) * 2015-04-24 2017-11-10 杭州字节信息技术有限公司 一种嵌入式分区映像安全认证及内核可信引导方法及其设备
WO2017136648A1 (en) * 2016-02-03 2017-08-10 Commscope Technologies Llc Priority based reconfiguration scheme for remote units
WO2017161305A1 (en) * 2016-03-18 2017-09-21 University Of Florida Research Foundation, Incorporated Bitstream security based on node locking

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621597B1 (en) * 2004-10-22 2013-12-31 Xilinx, Inc. Apparatus and method for automatic self-erasing of programmable logic devices
CN102272768A (zh) * 2009-01-05 2011-12-07 飞思卡尔半导体公司 用于允许对存储器元件的存取的方法、系统和集成电路
US9230112B1 (en) * 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US20160217021A1 (en) * 2015-01-26 2016-07-28 Hewlett-Packard Development Company, L.P. Hardware signal logging in embedded block random access memory

Also Published As

Publication number Publication date
EP3791307A1 (en) 2021-03-17
EP3791307A4 (en) 2022-03-30
EP3791304A4 (en) 2022-03-30
CN112437924A (zh) 2021-03-02
EP3791304A1 (en) 2021-03-17
EP3791306A4 (en) 2022-02-09
CN112470157A (zh) 2021-03-09
CN112368701A (zh) 2021-02-12
EP3791305A4 (en) 2022-04-06
EP3791306A1 (en) 2021-03-17
EP3791305A1 (en) 2021-03-17
EP3791306B1 (en) 2023-08-30

Similar Documents

Publication Publication Date Title
US11971992B2 (en) Failure characterization systems and methods for erasing and debugging programmable logic devices
US10685143B2 (en) Secure boot sequence for selectively disabling configurable communication paths of a multiprocessor fabric
US8022724B1 (en) Method and integrated circuit for secure reconfiguration of programmable logic
US9230112B1 (en) Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US9165143B1 (en) Image file generation and loading
US10114941B2 (en) Systems and methods for authenticating firmware stored on an integrated circuit
US9870488B1 (en) Method and apparatus for securing programming data of a programmable device
EP3319265B1 (en) Configuration based cryptographic key generation
Trimberger et al. FPGA security: From features to capabilities to trusted systems
CN112470158A (zh) 用于可编程逻辑器件的故障表征系统和方法
EP3214613B1 (en) Protecting the content of different ip cores in a system on chip using pufs
US20230315913A1 (en) Multi-chip secure and programmable systems and methods
US20240187001A1 (en) Cryptographic hardware sharing systems and methods
EP4379590A1 (en) Cryptographic hardware sharing systems and methods
Zhao et al. A Lightweight Hardware-Assisted Security Method for eFPGA Edge Devices
CN118133361A (zh) 密码硬件共享系统和方法
CN115859383A (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