用于保护可编程器件的编程数据的方法和装置制造方法

xiaoxiao2020-7-22  19

用于保护可编程器件的编程数据的方法和装置制造方法
【专利摘要】用于可编程集成电路器件的配置数据根据至少一种加密方案至少部分被加密。多个密钥存储存储用于至少一种加密方案的多个解密密钥。控制电路于从至少部分加密的配置数据标识所需密钥并且生成密钥选择信号。密钥选择电路响应于密钥选择信号而读取多个密钥存储并且向控制电路提供所需密钥。控制电路可以包括解密电路,解密电路使用所需密钥解密至少部分加密的配置数据。在一些实施例中,配置数据的可以代表器件的单独部分重配置的不同部分需要不同解密密钥。可以从密钥存储的内容的组合生成密钥。
【专利说明】用于保护可编程器件的编程数据的方法和装置
【技术领域】
[0001]本发明涉及一种用于保护可编程器件(例如现场可编程门阵列(FPGA)或者其它可编程逻辑器件(PLD))的编程数据免于复制的方法和装置,并且涉及这样保护的可编程器件。
【背景技术】
[0002]可编程器件众所周知。在一类已知PLD中,每个器件具有大量逻辑门,并且用户通常使用由器件的制造商提供的软件工具将器件编程为采用这些逻辑门的特定配置,让软件工具在具有适配器的计算机上执行,器件被插入到适配器中。早期几代此类器件通常使用一些形式的可编程只读存储器(“PR0M”)技术来存储由软件工具产生的配置数据。在这些早期器件中,软件工具通过熔断可熔链来引起计算机将型样(pattern) “烧录”到PROM存储中。在后期几代中,PROM技术可以已经成为可擦除可编程只读存储器(“EPR0M”)技术,其不被烧录,并且可以通过暴露于紫外线而被擦除(用于重编程)。再往后几代可以已经使用电可擦除可编程只读存储器(“EEPR0M”或者“E2PR0M”)技术。
[0003]所有这些技术为相对安全。在选择使用可编程逻辑器件而非蒙受开发定制芯片的努力和消费的用户的情况下,如果用户的竞争者试图逆向工程被编程的可编程逻辑器件,竞争者将基本上必须逐层切片器件以辨识其编程。对于所讨论的类型的用户(按照定义并非芯片制造商)而言,虽然这样的努力可能是技术上可行的,但是竞争者能够或者将承担该努力的可能性较小。
[0004]随后,在静态随机存取存储器(“SRAM”)存储中存储其配置数据的可编程逻辑器件变得可用并且仍然普遍。此类器件相比基于EPROM技术的器件具有更小和更快的优势。
[0005]然而,SRAM存储是易失性的;当断电时其并不留存其内容。因此,使用具有非易失性存储的基于SRAM技术的可编程逻辑器件,以在关断器件或者另外不提供功率期间留存配置编程数据。例如可以以闪存的形式提供此类非易失性存储,但是可以使用任何形式的非易失性存储,并且其可以在器件上或者与器件分离。
[0006]不管使用何种类型的非易失性存储,具有其配置数据的非易失性存储的SRAM可编程逻辑器件在防范其用户的竞争者逆向工程方面较不安全。这是因为竞争者可以监控流出上电的非易失性存储的数据,并且由此确定可编程逻辑器件的编程配置。事实上,竞争者甚至无需分析数据流,而仅需在其器件中记录数据流并且存储数据流。
[0007]共同转让的第5,768,372号和第5,915,017号美国专利描述了在非易失性存储中存储的配置数据的加密以及在向可编程器件中加载时其解密,包括向解密电路提供对信号的指示符,若干可能的加密/解密方案的指示符用来加密配置数据并且因此应当用来解密配置数据。
[0008]因此,可编程器件市场已经变得更加复杂。以前器件制造商向原始消费者出售空白可编程逻辑器件,原始消费者通常将对其编程并且将每个器件作为最终用户产品的一部分出售。因此,制造商的原始消费者通常为提供配置数据的唯一一方并且因此为需要保护配置数据的唯一一方。最近,器件制造商或者第三方已经出售用于各种通用功能的供应商提供的专属配置数据(通常被称作“知识产权核心”)。如果一方提供此类专属配置数据,其可能希望保护这些数据不被读取,但是原始消费者需要从另一供应商(其也将希望保护其专属配置数据)自由添加附加专属配置数据,以及其独有配置数据,并且随后希望保护包括其自己的配置数据和任何供应商提供的配置数据的最终配置。

【发明内容】

[0009]本发明涉及一种用于使用不同加密(包括选择不加密)和密钥来单独保护可编程器件的配置数据的不同部分、以及提供不同密钥和密钥组合的电路装置和方法。
[0010]因此,根据本发明的实施例,提供一种可编程集成电路器件,该器件具有用于配置数据的输入,配置数据用于可编程集成电路器件。根据至少一种加密方案至少部分加密配置数据。多个密钥存储存储用于至少一种加密方案的多个解密密钥。控制电路装置从至少部分加密的配置数据标识所需密钥并且生成密钥选择信号。密钥选择电路装置响应于密钥选择信号读取多个密钥存储并且向控制电路装置提供所需密钥。控制电路装置可以包括解密电路装置,解密电路装置使用所需密钥解密至少部分加密的配置数据。
[0011]根据本发明的附加实施例,配置数据包括多个部分配置数据部分。多个部分配置数据部分中的相应部分配置数据部分被加密并且需要相应解密密钥。控制电路装置从配置数据标识相应所需密钥并且生成相应密钥选择信号。密钥选择电路装置响应于相应密钥选择信号读取多个密钥存储并且将这些相应所需密钥提供给控制电路装置。
[0012]也提供配置和操作此类可编程集成电路器件的方法。
【专利附图】

【附图说明】
[0013]结合附图考虑以下详细描述,本发明的其它特征、其性质和各种优势将变得明显,在附图中相同参考字符贯穿全文指代相同部分,并且在附图中:
[0014]图1是其中可以实施本发明的可编程器件的框图;
[0015]图2是根据本发明的一个实施方式的密钥选择电路装置的框图;并且
[0016]图3是采用并入本发明的可编程逻辑器件的示例性系统的简化框图。
【具体实施方式】
[0017]图1示出作为其中可以实施本发明的可编程器件的示例的可编程逻辑器件100的框图。可编程逻辑器件100优选地包括存储编程数据的非易失性存储112和具有编程电路113的基于SRAM的可编程逻辑核心111。基于SRAM的可编程逻辑核心111可以是FPGA,其中非易失性存储112在单独的裸片上,该裸片可以与核心111在共同的封装中或者可以完全分离(并且仅通过接线或者迹线连接)。备选地,器件100可以是其中非易失性存储112和核心111在相同裸片上的PLD的类型。
[0018]如果配置数据未加密,则当首先向可编程逻辑器件100施加功率时,在非易失性存储112中存储的配置数据将通过连接130输出到可编程逻辑核心111。数据优选地将被串行锁定到移位寄存器链120中。优选地,当填充移位寄存器链120时,移位寄存器链120中的数据将通过连接121被传送到缓冲器122,由此它们被传送到配置可编程逻辑核心111的逻辑结构的SRAM编程寄存器的“列”123。在缓冲器122中的数据被传送到列123时,配置数据优选地将继续从非易失性存储112被锁定到移位寄存器链120中(直到存储112为空)。到移位寄存器链120再次为满时,缓冲器122优选地将准备再次接收数据,优选地允许非易失性存储112之中的数据不间断流向移位寄存器链120中。
[0019]然而,由于可以使用配置数据的加密来防止未授权的监听连接130上的配置数据,因此编程电路113包括控制和解密模块114用于选择适当的密钥并且解密配置数据,如以下所描述的那样。
[0020]如上所述,期望允许单独加密配置数据的不同部分。例如编程电路113可以允许器件100的部分重配置。因此,在一个方案中,初始配置可以由器件制造商存储于非易失性配置存储中,包括某些专属配置数据。从器件制造商购买该器件的购买者随后可以使用部分重配置特征来添加其自己的专属配置数据,而不破坏或者重写器件制造商的配置数据。器件100随后可以被出售给另一购买者,该另一购买者随后可以使用部分重配置特征来添加最终编程,而不破坏或者重写器件制造商的配置数据或者第一购买者的配置数据,随后可以将器件100并入到最终用户产品中。作为备选,器件制造商可以在单独介质上向第一购买者提供其配置数据,并且第一购买者可以在单独介质上向另一购买者提供制造商的配置数据和其自己的配置数据二者。另一购买者随后可以向编程软件中输入这些来自单独介质的数据以及其自己的编程指令以产生最终配置。如下所述,每个部分或者部分配置仍然可以单独进行加密。
[0021]在另一方案中,第一公司想要从第一供应商购买PLD并且从第二供应商购买一些知识产权核心。第一供应商或者第二供应商向第一公司出售器件。无论哪种方式,器件带有当前非易失性密钥进行出售,该非易失性密钥可以是通过将熔断器阵列中所选的熔断器熔断而设置的“熔断器密钥”。不管谁设置当前密钥,第二供应商向第一公司出售利用当前密钥加密的配置图像。第一公司不知道当前密钥,因此第二供应商的配置图像是安全的。第一公司随后生成其自己的配置图像以及易失性密钥,该易失性密钥用来生成器自己的配置图像的加密版本。
[0022]在利用第二供应商的加密配置图像配置器件并且随后执行部分重配置以在第一公司自己的加密配置图像中添加之后,第一公司随后在待出售给最终用户的最终产品中并入该器件。如上所述,两个配置可以驻留在芯片上存储器件或者芯片外存储器件中。第一公司的专属配置和第二供应商的专属配置对于那些第二公司中的每个第二公司以及最终用户来说仍然安全。
[0023]这些事件序列仅为示例,并且或多或少的中间购买者和重配置是可能的。无论如何,在这些示例中,提供配置数据的实体的一些实体或者所有实体可能想要通过加密来保护这些配置数据。为此目的,可以设计部分重配置特征以允许不同的部分重配置被加密或者未被加密,该部分重配置包括初始配置本身(其可以是根据于2011年4月13日提交的Gao等人的共同待审的、共同转让的美国专利申请N0.13/085, 679的全部或者部分配置)。对应于每个部分重配置(包括初始配置)的一连串控制位标识特定部分重配置是否被加密。因此,在其中存在两个重配置(初始重配置和一个部分重配置)的示例中,可能存在两个如下控制位(其中“P0F”代表包含配置比特流的“程序员对象文件”):
[0024]
【权利要求】
1.一种可编程集成电路器件,包括: 用于配置数据的输入,所述配置数据用于所述可编程集成电路器件,所述配置数据根据至少一种加密方案至少部分被加密; 多个密钥存储,其存储用于所述至少一种加密方案的多个解密密钥; 控制电路装置,可操作用于从所述至少部分加密的配置数据标识所需密钥并且可操作用于生成密钥选择信号;以及 密钥选择电路装置,响应于所述密钥选择信号可操作用于读取所述多个密钥存储并且可操作用于向所述控制电路装置提供所述所需密钥;其中: 所述控制电路装置包括解密电路装置,所述解密电路装置可操作用于使用所述所需密钥解密所述至少部分加密的配置数据。
2.根据权利要求1所述的可编程集成电路器件,其中所述密钥选择电路装置可操作用于从所述多个密钥存储中的一个密钥存储选择所述所需密钥。
3.根据权利要求2所述的可编程集成电路器件,其中所述密钥选择电路装置包括多路复用器。
4.根据权利要求1所述的可编程集成电路器件,其中所述密钥选择电路装置可操作用于从所述多个密钥存储读取所述解密密钥中的至少两个解密密钥,并且可操作用于从所述解密密钥中的所述至少两个解密密钥生成所述所需密钥。
5.根据权利要求4所述的可编程集成电路器件,其中: 所述密钥选择电路装置包括异或门;并且 所述密钥选择电路装置可操作用于通过使用所述异或门来执行异或功能而组合所述解密密钥中的所述至少两个解密密钥来生成所述所需密钥。
6.根据权利要求1所述的可编程集成电路器件,其中: 所述可编程集成电路器件通过向所述输入中写入配置数据的附加部分而部分可重配置,所述配置数据的附加部分根据所述至少一种加密方案中的一种至少部分被加密; 配置数据的原始部分和所述配置数据的附加部分的相应部分需要相应解密密钥;所述控制电路装置可操作用于从所述配置数据的至少部分加密的原始部分和所述配置数据的至少部分加密的附加部分标识相应所需密钥,并且可操作用于生成相应密钥选择信号;并且 所述密钥选择电路装置可操作用于响应于所述相应密钥选择信号读取所述多个密钥存储并且可操作用于向所述控制电路装置提供所述相应所需密钥。
7.根据权利要求6所述的可编程集成电路器件,还包括: 配置数据存储,可操作用于存储所述配置数据并且可操作用于向所述输入提供所述配置数据;其中: 所述配置数据存储可操作用于以其相应加密形式存储所述配置数据的原始部分和所述配置数据的至少一个附加部分中的所述相应部分。
8.根据权利要求1所述的可编程集成电路器件,其中所述多个解密密钥包括: 非易失性密钥; 易失性密钥;以及 可加载密钥。
9.根据权利要求8所述的可编程集成电路器件,其中所述非易失性密钥是熔断器密钥。
10.根据权利要求8所述的可编程集成电路器件,还包括用于所述易失性密钥的备用电池。
11.根据权利要求1所述的可编程集成电路器件,其中: 所述可编程集成电路器件包括可编程逻辑核心;并且 所述控制电路装置可操作用于经由所述输入向所述可编程逻辑核心提供解密的配置数据。
12.根据权利要求11所述的可编程集成电路器件,还包括配置数据存储,所述配置数据存储可操作用于存储所述配置数据并且可操作用于向所述输入提供所述配置数据。
13.根据权利要求12所述的可编程集成电路器件,其中所述配置数据存储和所述可编程逻辑核心形成于单个裸片上。
14.根据权利要求12所述的可编程集成电路器件,其中所述配置数据存储和所述可编程逻辑核心形成于单独的裸片上。
15.根据权利要求14所述的可编程集成电路器件,其中所述配置存储和所述可编程逻辑核心装配在单个封装中。
16.根据权利要求`11所述的可编程集成电路器件,其中所述可编程逻辑核心是现场可编程门阵列。
17.一种可编程集成电路器件,包括: 控制电路装置; 多个密钥存储,可操作用于存储多个解密密钥; 密钥选择电路装置;以及 用于配置数据的输入,所述配置数据用于所述可编程集成电路器件,所述配置数据包括多个部分配置数据部分;其中: 所述多个部分配置数据部分中的相应部分配置数据部分被加密并且需要相应解密密钥; 所述控制电路装置可操作用于从所述配置数据标识相应所需密钥并且可操作用于生成相应密钥选择信号;并且 所述密钥选择电路装置可操作用于响应于所述相应密钥选择信号而读取所述多个密钥存储并且可操作用于向所述控制电路装置提供所述相应所需密钥。
18.根据权利要求17所述的可编程集成电路器件,其中所述多个解密密钥包括: 非易失性密钥; 易失性密钥;以及 可加载密钥。
19.根据权利要求18所述的可编程集成电路器件,其中所述非易失性密钥是熔断器密钥。
20.根据权利要求19所述的可编程集成电路器件,还包括用于所述易失性密钥的备用电池。
21.根据权利要求17所述的可编程集成电路器件,其中:所述可编程集成电路器件包括可编程逻辑核心;并且 所述控制电路装置可操作用于经由所述输入向所述可编程逻辑核心提供解密的配置数据。
22.根据权利要求21所述的可编程集成电路器件,还包括配置数据存储,所述配置数据存储可操作用于存储所述配置数据并且可操作用于向所述输入提供所述配置数据。
23.根据权利要求22所述的可编程集成电路器件,其中所述配置数据存储和所述可编程逻辑核心形成于单个裸片上。
24.根据权利要求22所述的可编程集成电路器件,其中所述配置数据存储和所述可编程逻辑核心形成于单独的裸片上。
25.根据权利要求24所述的可编程集成电路器件,其中所述配置存储和所述可编程逻辑核心装配在单个封装中。
26.根据权利要求21所述的可编程集成电路器件,其中所述可编程逻辑核心是现场可编程门阵列。
27.一种配置可编程集成电路器件的方法,包括: 在非易失性存储中存储用于所述可编程集成电路器件的部分配置数据,所述部分配置数据根据至少一种加密方案至少部分被加密;并且 在所述可编程集成电路器件上的多个密钥存储中的一个密钥存储中存储用于所述部分配置数据的至少一个解密密钥。
28.根据权利要求27所述的方法,其中所述至少一个解密密钥包括以下中的一项: 非易失性密钥; 易失性密钥;以及 可加载密钥。
29.根据权利要求28所述的方法,其中: 所述至少一个解密密钥是非易失性密钥;并且 所述非易失性密钥是熔断器密钥。
30.一种操作可编程集成电路器件的方法,所述集成电路器件的配置数据在所述可编程集成电路器件中被加密,所述方法包括: 读取与所述配置数据相关联的控制数据;并且 基于所述控制数据,选择密钥来解密所述配置数据;其中所述密钥从以下之一中选择: (a)非易失性密钥; (b)易失性密钥; (C)可加载密钥;以及 (d)所述非易失性密钥、所述易失性密钥和所述可加载密钥中的至少两种密钥的组合。
31.根据权利要求30所述的方法,其中: 所述配置数据的多个部分被单独加密; 所述读取包括读取与所述多个部分中的每个部分相关联的控制数据;并且 所述选择包括选择单独的密钥来解密所述配置数据。
32.根据权利要求31所述的方法,其中每个所述单独的密钥单独地从以下之一中选择: (a)所述非易失性密钥; (b)所述易失性密钥; (c)所述可加载密钥;以及 (d)所述非易失性密钥、所述易失性密钥和所述可加载密钥中的至少两种密钥的单独的组合。
【文档编号】G06F21/76GK103493062SQ201280020697
【公开日】2014年1月1日 申请日期:2012年4月17日 优先权日:2011年4月29日
【发明者】D·A·瑞斯, J·乔伊斯 申请人:阿尔特拉公司

最新回复(0)