具有多个分区的安全RAM块的制作方法

文档序号:11807794阅读:301来源:国知局
具有多个分区的安全RAM块的制作方法与工艺

本申请是于2010年6月6日提交的美国专利申请第12/830,447号的部分继续申请,美国专利申请第12/830,447号是于2006年9月7日提交的题为“SECURITY RAM BLOCK”的美国专利申请第11/517,689号(现在是美国专利第7,752,407号)的分案申请,所有这些申请的全部内容以引用的方式引入本申请。



背景技术:

本发明总体上涉及在集成电路上存储数据,并且更具体地涉及保护存储在现场可编程门阵列(FPGA)上的电池供电的存储器中的数据。

诸如现场可编程门阵列等集成电路的电路复杂性和所执行的任务在过去的几年中极大地增加。被配置成执行复杂的用户定义的功能的高度复杂的软件或应用在可编程逻辑元件上运行。

通常,这些应用需要在存储器中存储数据,例如,应用可以在不同时间存储数据用于稍后使用。可能需要存储其他重要的数据,诸如芯片身份、许可信息和加密密钥。不幸的是,如果电力从存储器上被去除,则该数据将丢失,除非存储器是非易失性的。

但是非易失性存储器通常需要或者不与用于制造FPGA的处理技术兼容或者使用极大地增加设备成本的额外的处理步骤的处理。另外,在很多情况下,存储器中存储的数据的安全性很重要,因此,理想的是,如果检测到篡改,则快速地擦除数据。不幸的是,很难快速地擦除非易失性存储器。另外,非易失性存储器中存储的数据能够通过逆向工程来被发现。

为了保护该数据,限制对其的访问也很重要,使得数据不会被违法用户或应用偷盗或拷贝。例如,可以通过使用密钥对其加密来保护配置设计。如果该密钥存储在存储器中用于在解密期间使用,则理想的是,保护并且限制对该密钥的访问。

因此,需要一种能够提供用于FPGA的存储器的电路、方法和装置,其在给FPGA的电力被去除时保持数据,但是兼容传统的PFGA制造过程并且可以在篡改或其他未授权事件的情况下被快速擦除。另外,理想的是,通过限制对存储器中存储的数据的访问来提供进一步保护。



技术实现要素:

因此,本发明的实施例提供一种用于在FPGA上的存储器中存储应用数据、密钥、认证代码或其他信息的电路、方法和装置。本发明的示例性实施例提供在片上易失性存储器中存储该数据的FPGA。电池对存储器供电以防止在给FPGA的电力被去除时所存储的信息的擦除。在各种实施例中,电池通常是存储器的电力的源,在其他实施例中,可以接通一个或多个其他电源以取代电池作为给存储器的电力的源,例如用于延长电池寿命。

在本发明的各种实施例中,给存储器的电力可以被中断以便擦除存储器的内容。例如,如果试图篡改或未授权配置,则切断给存储器的电力,从而擦除存储器。在一个示例性实施例中,使用消息认证代码(MAC)来验证配置比特流。MAC在所接收的比特流没有被验证通过的情况下从存储器去除电力。

本发明的各种实施例还限制对存储器中存储的数据的访问。通常,读取访问受到限制,写入访问也可以受到限制,特别是在数据被改写的情况下。在本发明的具体实施例中,通过使用认证代码来限制访问。仅在应用提供正确的认证代码或者存储器中存储的访问代码和认证代码具有预定义的函数关系的情况下,应用被授权访问。本发明的另一实施例在存储数据之前使用密钥对数据加密。仅具有正确密钥的应用可以使用数据。本发明的实施例可以合并本文中描述的这些或其他特征中的一个或多个特征。

在一个实施例中,本发明提供了一种用于安全地存储数据的装置。装置包括包含被分配以保护数据存储的安全部分的存储器核、以及被配置成控制到存储器核的安全部分的数据写入和来自存储器核的安全部分的数据读取的控制电路。装置被适配成在存储器的重新配置操作期间(诸如在软件应用安装过程期间配置应用时,其涉及来自存储器核的数据读取和向存储器核存储数据)防止对安全部分中存储的数据的改变。

本发明的实施例还提供用于在可编程电路装置(例如FPGA)的多个独立可重新配置区域之间共享一个或多个存储器块的电路、方法和装置。在本发明的各种实施例中,配置控制器被配置成对一个或多个存储器块进行分区以向多个独立可重新配置区域分配不同的存储器分区。配置控制器还可以被配置成控制对存储器块的访问。比如,配置控制器可以被配置成防止独立可重新配置区域中的全部或某些独立可重新配置区域访问已经向另一独立可重新配置区域分配的存储器分区。该访问限制可以应用于读取访问、写入访问或者这二者,并且可以取决于独立可重新配置区域请求访问而改变。

在一个说明性实施例中,装置包括n个存储器块和m个独立可重新配置区域,其中m>n,并且配置控制器被配置成在m个独立可重新配置区域上分区为n个存储器块。配置控制器还可以被配置成控制对n个存储器块中的每个的访问以防止m个独立可重新配置区域中的任何给定的独立可重新配置区域访问向m个独立可重新配置区域中的另一独立可重新配置区域分配的存储器分区。

在一些实施例中,每个存储器分区存储例如使用消息认证代码(MAC)生成器生成的多个消息认证代码。当配置控制器接收到配置流时,MAC可以被生成并且与所存储的MAC相比较以确定所生成的MAC是否匹配所存储的MAC中的任何MAC。如果配置控制器确定匹配,则其可以授权对存储匹配MAC的存储器分区的访问。否则,配置控制器可以拒绝访问。

在一些实施例中,配置控制器被配置成响应于确定未授权的独立可重新配置区域试图访问存储器分区来使用零值改写该存储器分区中存储的所有数据。在其他实施例中,通过切断给包含目标存储器分区的存储器块的电力来擦除数据。

配置控制器可以使用一个或多个访问控制技术来控制对存储器块及其分区的访问。在一个方法中,FGPA被设计成使得所有存储器访问必须经过配置控制器,即访问存储器的请求必须被提供给配置控制器,并且配置控制器代表请求者(例如独立可重新配置区域)与存储器通信。这例如可以通过确保(通过固定设计或者通过对可配置互连编程)独立可重新配置区域没有被提供到存储器块的任何直接连接来完成。配置控制器在这样的场景中可以仅完成其确定被认证的请求(例如通过向存储器或特定的存储器分区转发请求)。

在另一方法中,独立可重新配置区域可以提供有到存储器块的直接连接,但是存储器分区中存储的数据被加密。在这样的场景中,配置控制器可以仅在确定存储器请求被认证的情况下通过解密数据来限制对存储器分区的访问。

可以使用任何其他合适的方法来控制对存储器块及其分区的访问,并且在一些实施例中,可以实现这些方法的组合。另外,可以实现这些访问控制特征以仅控制读取访问请求、写入访问请求、或者这二者。在又一其他实施例中,可以实现访问控制而没有使用配置控制器,例如通过对数据加密和/或使用数据来存储MAC,如以上和下面进一步描述的。

通过参考以下详细描述和附图可以获得对本发明的属性和优点的更好的理解。

附图说明

图1是通过结合本发明的实施例而被改进的可编程逻辑器件的简化框图;

图2是通过结合本发明的实施例而被改进的电子系统的框图;

图3A是图示根据本发明的实施例的已加密配置比特流和解密密钥的存储的框图,而图3B图示根据本发明的实施例的已加密比特流的解密和FPGA的配置;

图4A是图示根据本发明的实施例的对配置比特流加密以及在安全RAM中存储密钥和其他参数的方法的流程图,而图4B是图示根据本发明的实施例的对已加密配置比特流解密并且配置FPGA的方法的流程图;

图5图示根据本发明的实施例的对安全RAM供电的方法;

图6图示根据本发明的实施例的对安全RAM供电的另一方法;

图7图示根据本发明的实施例的在使用关闭开关的同时对安全RAM供电的方法;

图8图示根据本发明的实施例的在使用由消息认证代码控制的关闭开关的同时对安全RAM供电的方法;

图9图示根据本发明的实施例的生成配置比特流验证信号以控制安全RAM关闭开关的方法;

图10是图示根据本发明的实施例的生成配置比特流验证信号以控制安全RAM关闭开关的方法的流程图;

图11图示可以用作图9中的功能框的电路;

图12图示在FPGA的配置期间在配置控制器、接入控制电路和安全SRAM之间的示例性数据传递;

图13A和图13B是图示FPGA的操作的流程图,其中配置控制器被授权对安全SRAM中存储的解密密钥的自动访问;

图14图示FPGA中的数据的示例性传递,其中通过要求认证代码来限制对存储器中的数据的访问;

图15是图示通过要求认证代码来限制对安全SRAM中的数据的读取访问的方法的流程图;

图16A和16B是图示配置设备的方法的流程图,其中使用第二密钥来对解密密钥加密并且两个密钥都存储在安全SRAM中;

图17图示设备中的示例性数据流,其中应用通过加密在安全SRAM中具有受保护的数据;

图18A和图18B是图示接收和解密安全SRAM中存储的已加密数据的方法的流程图;

图19是包括配置控制器、访问控制电路和多个安全SRAM的示例性FPGA的框图,其中每个安全SRAM具有多个分区;以及

图20是图示控制具有多个存储器块和独立可重新配置区域的FPGA中的存储器访问的方法的流程图。

具体实施方式

图1是示例性高密度可编程逻辑器件100的简化的部分框图,其中可以使用根据本发明的技术。PLD 100包括通过可变长度和速度的行列互连的网络互连的可编程逻辑阵列块(LAB)102的二维阵列。LAB 102包括多个(例如10个)逻辑元件(LE),LE是提供用户定义的逻辑功能的高效实现的小逻辑单元。

PLD 100还包括分布式存储器结构,其包括遍及阵列提供的可变大小的RAM块。RAM块包括例如512个比特块104、4K个块106和提供512K比特的RAM的M块108。这些存储器块还可以包括移位寄存器和FIFO缓冲器。PLD 100还包括例如可以实现具有加法和减法特征的乘法器的数字信号处理(DPS)块110。

应当理解,PLD 100在本文中仅出于说明目的而描述并且本发明可以用很多不同类型的PLD、FPGA和其他类型的数字集成电路来实现。

虽然图1所示的类型的PLD提供实现系统级解决方案所需要的资源中的很多资源,然而本发明也可以有益于其中PLD是若干部件之一的系统。图2示出了其中可以实施本发明的示例性数字系统200的框图。系统200可以是编程数字计算机系统、数字信号处理系统、专用数字开关网络或者其他处理系统。另外,这样的系统可以被设计用于各种应用,诸如电信系统、汽车系统、控制系统、消费电子、个人计算机、因特网通信和连网等。另外,系统200可以设置在单个板上、多个板上或者多个外壳中。

系统200包括通过一个或多个总线互连在一起的处理单元202、存储器单元204和I/O单元206。根据本示例性实施例,可编程逻辑器件(PLD)208嵌入在处理单元202中。PLD 208可以服务图2中的系统内的很多不同目的。PLD 208例如可以是处理单元202的逻辑构建块,以支持其内部和外部操作。PLD 208被编程为实现执行其在系统操作中的特定角色所需要的逻辑功能。PLD 208可以具体地通过连接210耦合至存储器204并且通过连接212耦合至I/O单元206。

处理单元202可以将数据指向适当的系统部件用于处理和存储,执行存储器204中存储的程序或者经由I/O单元206接收和传输数据、或者其他类似功能。处理单元202可以是中央处理单元(CPU)、微处理器、浮点协处理器、图形协处理器、硬件控制器、微控制器、被编程用于用作控制器的可编程逻辑器件、网络控制器等。另外,在很多实施例中,通常不需要CPU。

例如,取代CPU,一个或多个PLD 208可以控制系统的逻辑操作。在实施例中,PLD 208用作可配置处理器,其可以根据需要被重新编程以处理特定的计算任务。可选地,可编程逻辑器件208本身可以包括嵌入式微处理器。存储器单元204可以是随机存取存储器(RAM)、只读存储器(ROM)、固定或软盘媒体、PC卡闪盘存储器、磁带或者任何其他存储装置、或者这些存储装置的任意组合。

图3A是图示根据本发明的实施例的存储已加密配置比特流和解密密钥的方法的框图。该附图包括软件模块和硬件接口32、配置设备330、FPGA 340和电池350。在本发明的各种实施例中,配置设备330可以被包括作为FPGA 340的部分。例如,配置设备330可以是FPGA 340上的存储器。该附图与其他包括的附图一样出于说明目的而被示出,而不限制本发明或者权利要求的可能实施例。

软件模块和硬件接口320包括加密软件模块322、密钥软件模块324和解密电路数据模块326。这些软件模块使用一个或多个硬件接口用于向FPGA 340和可选的配置设备330传递数据。FGPA 340包括安全SRAM 342、解密电路装置344和其他可编程电路装置346。

密钥312被接收或者由密钥软件模块324生成,将其作为密钥322提供给FPGA 340上的安全SRAM 342并且提供给加密软件模块322。配置比特流310由加密软件模块322来接收,加密软件模块322使用密钥324生成已加密配置比特流或已加密程序对象文件、EPOF320,其被提供给配置设备330。解密电路配置数据314可以可选地由解密电路数据软件模块326来接收,解密电路数据软件模块326提供数据用于在安全SRAM 342中存储。该解密电路配置数据可以包括解密电路配置比特流、解密电路参数(诸如舍入的位数、置换框条目)和其他参数、或者这二者。

解密电路装置344可以是固定解密电路,也就是硬逻辑或硬连线电路。解密电路装置344可选地可以根据可编程逻辑或其他可配置电路来配置,或者其可以包括这些技术的组合。这些逻辑元件可以通过作为解密电路配置数据326的部分的解密电路配置比特流来配置。在要配置解密电路344时,提供解密电路配置数据326并且将其存储在安全SRAM 342中。

在各种实施例中,可以使用标准的或者传统的加密方法和电路,诸如三元DES(3-DES)或AES。可选地,可以使用专用加密电路。传统算法和专用算法都可以用各种加密算法参数来定义,其也可以是FGPA 340上存储的解密电路配置数据324的部分。例如,在使用标准加密方法时,诸如舍入的位数等变量可以用加密算法参数来定义。在本发明的其中解密电路固定或硬连线的各种实施例中,这些加密参数也可以固定,使得不需要加密算法参数。

在本发明的典型实施例中,安全SRAM 342是易失性存储器。在本发明的各种实施例中,密钥322以及可选地解密电路配置数据326保持在易失性存储器342中。

在一个实施例中,安全SRAM 342可以包括下面参考图12进一步描述的其他电路,诸如访问控制电路,其可以用于防止对安全SRAM 342的未授权访问,并且可以使用密钥或其他安全措施(诸如密码)来提供安全的通信接口。这样的访问控制电路使得能够向布置在PLD 208外部或者驻留在PLD 208中的电路和应用中加载数据或者从其中获取数据或者不向其中加载数据或从其中获取数据。例如,这样的访问控制电路可以控制(i)从PLD 208外部向安全SRAM342中直接加载数据,(ii)从在PLD 208中运行的应用加载数据,以生成数据并且将其加载到安全SRAM 342上,或者(iii)采用外部处理以与PLD 208中的应用一起工作从而向安全SRAM 342上加载数据(即公共密钥交换)。这样的控制电路可以在功率损耗情况下或者在应用加载和/或配置期间操作。在其他实施例中,这样的控制电路可以使用(i)硬开关、诸如保险丝,(ii)软开关、诸如PLD208上的RAM比特,和/或(iii)如本文中所描述的在安全SRAM 342内部的存储器位置来控制数据保持。

为了确保该数据在设备电力被去除时不丢失,可以使用备用电池350。在本具体示例中,电池350通过关于线路354上的接地供应线路352上的电压VSRB来对存储器或安全SRAM 342供电。电池350可以与FPGA 340分离,或者其可以用FPGA 340来包括作为其封装的部分。例如,FPGA 340可以封装在也包括电池350的球形阵列封装件中。可选地,FPGA 340和电池可以放置在因此被封装的公共衬底上。

在前活动通常在制造工厂进行,诸如集成电路或原始设备制造商的工厂。随后的活动通常在FPGA 340在现场使用或者在应用中使用时发生。这些活动通常依照上电或电力回收来进行。

图3B图示根据本发明的实施例的已加密比特流的解密和FPGA的配置。该框图包括配置设备330、FPGA 340和电池350。配置设备330仍可以是FPGA 340的部分。电池350对安全SRAM 342供电,使得其内容在连接至FPGA 340的其他电源电压被去除时不丢失。

解密电路装置344通常也是固定的或者硬逻辑。可选地,解密电路344可以在某种程度上可配置。例如,解密电路装置344可以包括具有附加可编程逻辑元件的硬逻辑,或者其可以完全可编程。如果需要在某种程度上配置解密电路装置344,则从安全SRAM 342接收解密电路配置比特流作为配置数据和参数348的部分。如果要对解密电路装置344的各种参数编程,则由解密电路装置344通过安全SRAM 342接收这些参数。该信息可以包括要使用的解密的舍入位数、S框条目、置换设置和其他信息。注意,需要在设备的其余部分的已加密配置比特流能够解密之前来配置解密电路装置344。

一旦配置解密电路装置344并且接收到任何所需要的参数,则从安全SRAM 342接收密钥347。电路装置的其余部分、具体地是EPOF 344的配置数据由解密电路装置344接收。解密电路装置344对已加密程序对象文件334解密并且生成已解密程序对象文件349,其然后用于配置FPGA 340上的其他可编程电路装置346。

图4A是图示根据本发明的实施例的对配置比特流加密并且在安全ARM中存储密钥和其他参数的方法的流程图。在步骤400,例如通过使用硬件设计程序生成配置比特流。在步骤405,接收密钥。可选地,在步骤410接收解密电路装置的参数和配置信息(到它们使用的程度)。在步骤415,使用密钥对配置比特流加密。在步骤420,可以将该已加密配置比特流存储在配置设备或者FPGA上。

在步骤425,用电池对安全RAM供电以保护要加载的安全RAM的内容。在步骤430,将密钥和可选的解密电路参数存储在安全SRAM中。在这点上,可以在步骤435运送FPGA和配置设备(如果使用)以将其投入使用。

图4A中所示的步骤通常在集成电路或原始设备制造商的位置进行。图4B中的步骤通常稍后执行,比如在测试期间执行,或者当设备在用户的应用中被使用时进行。

图4B是图示根据本发明的实施例的对已加密配置比特流解密并且配置FPGA的方法的流程图。在上电或其他适当的事件之后,在步骤450从安全RAM接收(如果使用)解密电路装置参数和配置数据。在步骤455使用从安全RAM接收的配置比特流和参数对解密电路进行配置。在步骤460,由解密电路从安全RAM接收密钥。

在步骤465,从FPGA上的配置设备或存储器位置接收先前加密的配置比特流。在步骤470,使用密钥对配置比特流解密。在步骤475,使用新解密的配置比特流配置FPGA。

图5图示根据本发明的实施例的对安全RAM供电的方法。在本特定示例中,FPGA 510被分为形成环520的输入/输出电路装置以及核530,核530包括安全SRAM 532、解密电路装置534和其他可编程电路装置536。

在本特定示例中,输入/输出电路装置520、核530和安全SRAM532单独供电。具体地,VCCio 540和GNDio 542对I/O环520供电,FPGA核530由VCCint 550和GNDint 552来供电,而安全SRAM 530由VCCsrb 560和GNDsrb 562来供电。本领域技术人员应当理解,可以使用连接至不同电路装置部分的更多或更少的电源。

图6图示根据本发明的实施例的对安全RAM供电的另一方法。在本附图中,与图5相比,添加了电源开关。具体地,本附图包括FPGA 610和FPGA核,FPGA 610包括输入/输出环(I/O环境620),FPGA核包括安全SRAM 632、解密电路装置634、其他可编程电路装置636和电源开关670。在本示例中,电源开关670被包括在FPGA610上。在本发明的其他实施例中,电源开关670可以是单独的,而非被包括在FPGA 610上。

如之前,I/O环620、FPGA核630和安全SRAM 632接收单独的电力供应。具体地,VCCio 640和GNDio 642对I/O环620供电,而FPGA VCCint 650和GNDint 662对核630供电。

安全SRAM由电源开关670的输出来供电,该输出提供VCCsrb670和GNDsrb 662。电源开关670在本示例中接收VCCio 640、VCCint 650和VCCbat 670。VCCbat 660可以由电池、诸如图3中的电池350来供电。电源开关670在其输入处选择电压中的一个并且向安全SRAM 632提供VCCsrb 672。

在本发明的各种实施例,电源开关670可以接收这些或其他电力供应。在各种实施例中,电源开关670可以使用不同的算法用于选择这些电源中的哪个被提供作为给安全SRAM 632的VCCsrb672。电源开关670也可以执行另外的功能,诸如电源调节或滤波。也就是,电源开关670可以使用所施加的输入电压中的一个或多个生成VCCsrb 672,而非简单地将所选择的施加电压连接至安全SRAM 632。

在具体的实施例中,当VCCbat 660是电源开关670接收的唯一活动(active)电力供应时,该电压用于生成VCCsrb 672。然而,如果电源开关670所接收的其他电力供应之一活动,也就是在某个电压门限以上,则不使用VCCbat 660,使得能够延长实际电池寿命。如果有多于一个其他电源活动,例如VCCio 640和VCCint 650都活动,则使用两个电源中的消声器、通常为VCCint 650来生成VCCsrb672,然而在其他实施例中,使用噪声电源。在另一实施例中,如果VCCbat 660活动,则该电源由电源开关670用于生成VCCsrb 672。

安全SRAM 632通常也是易失性存储器。因此,如果其电源被去除,则存储器的内容丢失。这在其中由于篡改或其他未授权事件而需要快速擦除安全SRAM 632的内容的应用中很有用。当使用易失性存储器形成安全SRAM 632时,这样的擦除可以通过中断到安全SRAM 632的电源连接来实现。

图7图示根据本发明的实施例的在使用关闭开关的同时对安全RAM供电的方法。本附图包括被分为输入/输出环720和FPGA核730的FPGA 710。FPGA核730包括安全SRAM 732、解密电路装置734和其他可编程电路装置736。VCCio 740和GNDio 742对I/O环720供电,而VCCint 750和GNDint 752对FPGA核730供电。

VCCsrb 760和GNDsrb 762对安全SRAM供电。VCCsrb 760电源可以通过关闭开关770从安全SRAM 732断开。关闭开关770可以形成在FPGA 710上。可选地,关闭开关770可以在片外。关闭开关770可以用检测篡改或其他未授权事件的电路装置来控制。

一个这样的未授权事件是未授权配置比特流的加载。因此,可以验证所使用的配置比特流。如果配置比特流无效,则到安全SRAM72的电力供应被中断并且其内容丢失。

图6中的电源开关670和图7中的关闭开关770可以合并成单个单元,如图8所示,合并为电源开关870。电源开关870在不同收入电压中选择以提供VCCsrb 872,并且也在消息认证代码832的指令之下中断电力供应。

图8图示根据本发明的实施例的在使用通过方法认证代码控制的关闭开关的同时对安全RAM供电的方法。本附图包括FPGA 810,FPGA 810包括I/O环820和FPGA核830。FPGA核830包括安全SRAM 832、解密电路装置834、消息认证代码836、其他可编程电路装置838和电源开关870。

在本示例中,VCCio 840和GNDio 842对I/O换820供电,FPGA核830由VCCint 850和GNDint 852来供电,而VCCsrb 872和GNDsrb872对安全SRAM 832供电。电源开关870生成VCCsrb 872。电源开关870在本示例中接收VCCio 840、VCCint 850和VCCbat 860作为输入。在本发明的实施例中,电源开关870可以接收这些或其他电压。电源开关870可以在如以上关于电源开关670所描述的所接收的电压中选择。

在解密电路装置834对配置比特流解密之后,可以通过消息认证代码836对配置比特流进行处理,消息认证代码836验证配置比特流。如果配置比特流无效,则电源开关870被指令从安全SRAM832去除电力。以该方式,在使用未认证配置比特流时,安全SRAM832的内容丢失。片上电路装置可以跟踪安全SRAM的内容的丢失并且适当地停用FPGA 810。

图9图示根据本发明的实施例的生成配置比特流验证信号以控制电源关闭开关的方法。图8中的消息认证代码836可以使用本方法。该配置比特流包括首部部分和配置数据。配置数据被加密,而首部部分没有被加密。在一些情况下,首部的部分可以公知,或者不能确定。如果首部被编码,则该信息可以产生加密密钥的发现。因此,首部不加密。首部部分包括期望值906和其余部分904。在本示例中,首部的不是期望值906的部分没有被使用。

已加密配置数据被函数框910接收,函数框910执行其上的函数。输出920被提供给比较电路930。比较电路将期望值906与线路922上的输出相比较并且做出有效性的确定940。如果配置比特流无效,则可以从安全RAM去除电源,从而擦除其内容。

图10是图示根据本发明的实施例的生成配置比特流验证信号以控制安全RAM关闭开关的方法的流程图。在步骤1010,接收包括期望值的首部。在步骤1020,接收已加密配置数据。首部和已加密配置数据形成已加密配置比特流。

在步骤1030,通过函数框对已加密配置数据执行函数以便生成输出。在步骤1040,将该输出与期望值相比较。在步骤1050,确定被接收作为首部的部分的期望值是否匹配由函数框提供的输出。如果匹配,则比特流有效1060。如果不匹配,则比特流无效1070。

图11图示可以用作图9中的函数框的电路。所接收的配置数据被分为明文部分1102、1104和1106。这些部分的连结产生对配置数据的重编。配置数据1102的第一部分使用密钥1112被加密,从而在线路1114上生成输出。线路1114上的输出通过异或电路1122与配置数据114的第二部分求异或。线路1124上的结果通过大量类似框,直到到达最终级。在这点上,线路1126上的累积结果通过异或电路1122与配置数据1106求异和。输出通过加密框1130被加密并且结果被提供给最终加密级1140。加密块1140提供可以与被提供作为配置比特流首部的部分的期望值相比较的输出。虽然加密函数1110、1120、1130和1140被示出为单独的电路,然而在实际的集成电路中,这些函数可以是一个电路。

在本发明的各种实施例中,数据可以存储在安全SRAM中作为已加密或未加密数据,或者作为其组合。数据可以使用AES、DES或3-DES来加密。可选地,可以使用其他标准或专用加密算法。

该安全SRAM中存储的数据也可以包括用于已加密配置比特流或其他数据已加密数据的解密的密钥。可以存储其他信息,诸如芯片身份数据和其他加密数据。

在FPGA上运行的应用也可以使用安全SRAM来存储数据以便保护其在电力被去除时或者在应用配置/重新配置过程期间不被丢失。例如,应用可以将数据存储在安全SRAM中,并且使用认证代码来保护之,认证代码也存储在安全SRAM中并且在电力被去除时被保护以免被擦除。稍后,当该应用需要恢复其数据时,例如,在电力恢复之后(也就是电力被去除并且然后恢复,或者更具体地,在电力下降至门限以下之后又上升至其上),应用可以使用认证代码访问数据。以该方式存储的数据通常被存储为未加密数据,因为其仅由知道认证代码的应用可访问,然而该数据也可以被存储为已加密数据。

代替依赖于认证代码,应用可以在将数据存储在安全SRAM中之前对数据进行加密。这保护数据,因为在没有正确的解密密钥的情况下访问该已加密数据的应用不能正确地解密数据。

在本发明的以上和其他实施例中,对安全SRAM的读取和写入访问可以由访问控制单元来控制。访问控制单元通常是硬逻辑电路,也就是,其是预布线的,然而在各种实施例中,其可以由大量可编程逻辑元件形成。可选地,某些访问控制电路可以是硬逻辑,而部分可以使用可编程逻辑元件来形成。例如,在一些实施例中,简单版本的访问控制电路可以是硬逻辑,而可选的附加电路装置、诸如编码器/解码器电路可以使用可编程逻辑元件来形成。

通常,读取访问受限,而写入访问不受限,然而写入访问在本发明的各种实施例中也可以是受限的。读取访问通常限于更小等级,因为可以去除给安全SRAM的电力,从而擦除其内容。

访问控制电路可以通过在可编程逻辑元件中运行的应用或者通过外部用户或应用用于限制对安全SRAM中的数据的访问。然而,通常,访问控制电路被旁路或者自动允许片上配置控制器的访问,然而也可以限制该电路的访问。下面的三个附图中示出了访问安全SRAM中的数据(具体地,用于对已加密比特流进行解密的解密密钥)的配置控制器的示例。

图12图示在PFGA的配置期间在配置控制器、访问控制电路和安全SRAM之间的示例性数据传递。在本示例中,要用于对已加密比特流解密的密钥(密钥1242)被存储为未加密数据。该附图包括FPGA 1210,FPGA 1210还包括I/O环1220和FPGA核1230。FPGA核1230包括安全SRAM 1240、可编程逻辑元件1250、配置控制器1260和访问控制电路1270。

在本示例中,配置控制器1260从访问控制电路请求密钥1242。由于配置控制器1260是已知的硬逻辑电路,所以访问控制电路1270不需要来自配置控制器1260的具体的认证,然而在本发明的其他实施例中,可能需要这样的认证。因此,访问控制电路1270从安全SRAM 1240读取密钥1242。访问控制电路1270然后向配置控制器1260提供密钥。配置控制器1260接收已加密配置比特流并且对已加密配置比特流解密。然后使用已解密配置比特流对PFGA进行配置。

在本发明的各种实施例中,访问控制电路1270也可以限制配置控制器1260对安全SRAM 1240的访问。通常,不进行该操作,因为配置控制器1260是预先布线在FPGA上的硬逻辑电路并且不进行秘密的重新配置。因此,配置控制器1260可以被访问控制电路1270授权自动访问,或者其可以直接连接至安全SRAM 1240。下面的两个附图中示出了图示这至少两个方法的流程图。

图13A是图示FPGA的操作的流程图,其中配置控制器被访问控制电路授权对安全SRAM中存储的解密密钥的自动访问。

具体地,在步骤1310,配置控制器从访问控制电路请求密钥。在步骤1320,访问控制电路从安全SRAM读取密钥。在步骤1330,访问控制电路向配置控制器提供密钥。在步骤1340,配置控制器接收已加密比特流。配置控制器然后使用密钥对已加密比特流解密并且配置FPGA。

图13B是图示FPGA的操作的流程图,其中配置控制器直接连接或者可以旁路访问控制电路。在步骤1360,配置控制器从安全SRAM接收密钥。在步骤1370,配置控制器接收已加密比特流,并且在步骤1380,配置控制器对比特流解密并且配置FPGA。

可编程逻辑电路装置中运行的应用和/或配置/重新配置或安装可以通过在电池备份安全SRAM中存储数据来保护数据以免其被擦除。所存储的数据被保护并且与外部条件隔离以免影响可编程逻辑电路装置。例如,如果从FPGA上去除电力,则应用可以在电力恢复时恢复数据。应用可以通过在将数据存储在安全SRAM中之前对该数据加密来保护数据。可选地,其可以将认证代码连同数据一起存储在存储器中。当应用尝试恢复数据时,其向访问控制电路提供数据的位置和认证代码。如果当前认证代码给定,则访问控制电路向应用提供数据。下面的两个附图中示出了如何实现该操作的示例。

图14图示FPGA中的示例性数据传递,其中通过要求认证代码来限制对存储器中的数据的访问。该附图包括FPGA 1410,FPGA1410包括I/O环1420和FPGA核1430。FPGA核1430包括安全SRAM1440、可编程逻辑元件1450、配置控制器1460和访问控制电路1470。

在本示例中,在可编程逻辑1450中运行的FPGA在安全SRAM1440中具有先前存储的数据以及对应的认证代码1442。为了恢复该数据,可以采用任何数量的方法来验证访问,例如密码等。在一个实施例中,应用向访问控制电路提供数据和认证代码的地址。访问控制电路验证由应用提供的认证代码。例如,访问控制电路可以逐比特匹配,或者以安全SRAM 1440中存储的认证代码1442使用与由应用提供的认证代码相关联的函数。如果代码匹配或者函数关系建立,则访问控制电路许可应用对数据的访问。如果失配,则拒绝访问,这可以使用各种技术来指示而不必返回错误数据。

图15是图示通过要求认证代码来限制对安全SRAM中的数据的读取访问的方法的流程图。在本示例中,应用之前已经将数据和认证代码存储在安全SRAM中。该写入访问通常也不受限,然而在本发明的各种实施例中,该访问也可以受限。例如,访问控制电路可以要求认证代码以改写先前使用代码保护的数据。

具体地,在步骤1510,应用向访问电路提供数据和认证代码的地址。在步骤1520,访问电路将认证代码与安全SRAM中存储的认证代码相比较。通常,安全SRAM中存储的认证代码由应用存储,然而其他电路、诸如访问控制电路可以生成认证代码,其然后存储在安全SRAM中并且给出至应用以备后续使用。在步骤1530,如果代码匹配,则访问控制电路授权对数据的访问,否则,拒绝访问。

在以上示例中,数据通常被存储作为未加密数据。然而,如以上讨论的,数据也可以被存储作为已加密数据。例如,用于解密已加密比特流的解密密钥本身可以使用第二密钥被加密。该第二密钥可以存储为未加密数据,或者其可以使用又一密钥来被加密。在以下示例中,使用第二密钥来对解密密钥进行加密,第二密钥存储作为未加密数据。

图16A是图示存储解密密钥的方法的流程图,其中使用第二密钥对解密密钥加密并且两个密钥都存储在安全SRAM中。在本示例中,访问控制电路负责对解密密钥解密。这具有以下优点:配置控制器不需要知道解密密钥如何存储在存储器中,也就是,配置控制器不需要知道解密密钥是已加密数据还是未加密数据。

具体地,在步骤1610,配置控制器请求安全SRAM中存储的解密密钥。在步骤1615,访问控制电路从安全SRAM读取已加密解密密钥和第二未加密密钥。在步骤1620,访问控制电路使用第二密钥对已加密解密密钥进行解密并且向配置控制器提供解密密钥。在步骤1625,配置控制器接收已加密比特流,在步骤1630,配置控制器对已加密配置比特流解密并且使用已解密配置比特流来配置FPGA。

图16B是图示存储解密密钥的方法的另一流程图,其中使用第二密钥来加密解密密钥,并且两个密钥都存储在安全SRAM中。在本示例中,配置控制器负责对解密密钥解密。

具体地,在步骤1650,配置控制器请求解密密钥。在步骤1655,访问控制电路从存储器读取已加密解密密钥和未加密第二密钥并且将它们提供给配置控制器。在步骤1660,配置控制器使用第二密钥对已加密解密密钥进行解密。在步骤1665,配置控制器接收已加密配置比特流。使用解密密钥对已加密配置比特流解密,并且在步骤1670,配置FPGA。

另外,应用还可以在安全SRAM中存储已加密数据。虽然可能需要认证代码以访问该已加密数据,然而这样的认证通常不需要,因为仅具有正确的解密密钥的应用可以使用数据。(然而,本发明的各种实施例也可以要求某种认证以改写先前写入的数据。)下面的三个附图中示出了图示在安全SRAM中存储已加密数据的应用的示例。

图17图示设备中的示例性数据流,其中应用通过加密在安全SRAM中具有受保护数据。本附图包括FPGA 1710,FPGA 1710还包括I/O环1720和FPGA核1730。FPGA核1730包括安全SRAM1740、可编程逻辑元件1750、配置控制器1760和访问控制电路1770。在本示例中,在可编程逻辑1750中运行的应用在安全SRAM 1740中具有先前存储的已加密数据1742,例如在电力恢复之前,并且现在应用需要恢复所存储的数据。数据可以由应用本身或者通过访问控制电路1770来加密。

应用向访问控制电路1770提供已加密数据1742的地址。访问控制电路读取已加密数据1742并且将其提供给应用。应用然后使用其密钥对数据解密。仅具有正确密钥的应用可以使用已加密数据,否则数据无用。

虽然在本实施例中,解密由应用本身来进行,然而在其他实施例中,解密可以由访问控制电路来进行。例如,这在访问控制电路使用密钥对数据加密然后将密钥提供给应用用于进一步使用的情况下很有用。下面的流程图中示出了示例。

图18A是图示接收安全SRAM中存储的已加密数据的方法的流程图。在本示例中,访问控制单元针对应用解密数据。已加密数据原始可以由应用或者由访问控制电路来加密,这取决于确切的实现方式。

具体地,在步骤1810,应用向访问控制电路提供已加密数据和密钥的地址。在步骤1820,访问控制电路从安全SRAM读取已加密数据。在步骤1830,访问控制电路对已加密数据解密并且将已解密数据提供给应用。该数据也仅在应用向访问控制电路给出正确密钥的情况下有用。

图18B是图示接收安全SRAM中存储的已加密数据的方法的另一流程图。在本示例中,应用本身负责解密数据。

具体地,在步骤1850,应用向访问控制电路给出已加密数据的地址。在步骤1860,访问控制电路从安全SRAM读取已加密数据。在步骤1870,访问控制电路向应用提供已加密数据。在步骤1880,应用使用其密钥对数据解密。该数据也仅在应用使用正确的解密密钥的情况下有用。

在一个实施例中,为了灵活使用,可以对安全SRAM进行分区而没有访问控制,被分区成包括访问控制区域加上数据存储区域,其中数据存储区域可以被进一步分区成受保护区域。为了进一步保护安全SRAM中存储的数据,对访问控制部分进行写入保护。存在多个可以采用的写入保护方案,诸如一次性写入,其中一旦存储器位置被写入,则其不会被改写。

图19是根据一些实施例的示例性FPGA 1910的框图。FPGA1910包括I/O环1920和FPGA核1930。FPGA核1930包括具有多个独立可重新配置区域1952和1954的可编程电路装置1950、配置控制器1960、访问控制电路1970和多个安全SRAM 1940、1944和1946。下面的描述描述配置控制器1960的某些功能,但是应当理解,这些功能中的一些或全部可以在访问控制1970中实现。实际上,在一些实施例中,配置控制器1960和访问控制1970可以是同一模块。在其他实施例中,SRAM 1940、1944和1946中的每个具有其自己的专用访问控制器。

在各种实施例中,配置控制器1960被配置成将一个或多个存储器块1940、1944、1946进行分区以向多个独立可重配置区域(例如区域1952、和1954)分配不同的存储器分区。图19示出了分区1941和1942作为示例。然而,应当理解,可以分配任何数目的分区,并且向每个分区分配的存储器位置在存储器中的物理位置方面可以变化。在一些实施例中,配置控制器还被配置成例如通过访问控制器1970来控制对存储器块的访问。比如,配置控制器可以被配置成防止独立可重配置区域中的全部或某些独立可重配置区域访问向另一独立可重配置区域分配的存储器分区。该访问限制可以应用于读取访问、写入访问或者这二者,并且可以取决于独立可重配置区域请求访问来变化。

在一个说明性实施例中,FPGA 1910包括n个存储器块(例如存储器1940、1944和1946)和m个独立可重配置区域(例如包括区域1952和1954),其中m>n。配置控制器1960可以被配置成在m个独立可重配置区域上对n个存储器块进行分区,例如使得m个独立可重配置区域中的每个被分配n个存储器块中的一个或多个上的存储器分区。分区可以具有任意合适的大小。配置控制器1960还可以被配置成控制对n个存储器块中的每个的访问(例如单独地或者与访问控制器1970组合)以防止m个独立可重配置区域中的任何给定的独立可重配置区域访问向m个独立可重配置区域中的另一独立可重配置区域分配的存储器分区。

在一些实施例中,分区是固定的;在其他实施例中,分区可以在FPGA的第一配置上设置。也可以有默认分区,其可以可选地被第一配置改写。可以存储每个可配置区域的分区信息,包括开始和结束地址和/或存储器大小,例如作为开始数据、第一配置数据或默认数据的部分。在一个方法中,每个可配置区域可以被分配依次跟随在前的可配置区域分配的存储空间的连续的存储空间,从而消除对于存储开始和结束地址的需要(存储器大小可以是固定或默认值和/或存储器大小可以在分配之后存储)。

在各种实施例中,配置控制器1960被配置成确定是否应当授权独立可重配置区域对向不同区域分配的存储器分区的访问。该确定例如可以基于第一配置上设置的比特来做出。响应于确定,配置控制器1960之后可以控制对存储器块的访问以使得第一独立可重配置区域能够访问存储器分区,或者拒绝请求。配置控制器1960也可以基于所存储的比特确定是否应当授权独立可重配置区域对存储器分区的读取访问和写入访问。响应于只读确定,配置控制器1960可以控制对存储器块的访问以使得独立可重配置区域能够读取存储器分区中存储的数据并且防止区域向存储器分区写入数据。响应于只写确定,配置控制器1960可以控制对存储器块的访问以使得独立可重配置区域能够向存储器分区写入数据并且防止区域从存储器分区读取数据。最后,响应于读写确定,配置控制器1960可以控制对存储器块的访问以使得独立可重配置区域能够对存储器分区数据读取和数据写入两种操作。当然,应当理解,不同的可配置区域可以具有不同的访问存储器分区的特权,并且这些特权可以从该分区到另一分区发生变化。

配置控制器1960可以使用一个或多个访问控制技术来控制对存储器块及其分区的访问。在一个方法中,FPGA 1910被设计成使得所有存储器访问必须通过配置控制器1960。也就是,FPGA 1910可以用如下方式来设计:该方式需要向配置控制器提供对存储器的访问请求,并且配置控制器代表请求者(例如独立可重配置区域)与存储器通信。这例如可以通过确保(通过固定设计或者通过编程可配置互连)独立可重配置区域没有被提供有到存储器块的任何直接连接来实现。配置控制器在这样的场景中仅完成确定为被授权的请求(例如通过向存储器或特定存储器分区转发请求)。配置控制器可以被自动授权以对存储器块的任何分区的数据读取和/或数据写入。

在另一方法中,独立可重配置区域可以被提供有到存储器块的直接连接(例如通过通信路径1972并且可选地通过访问控制1970),但是存储器分区中存储的数据被加密。在这样的场景中,配置控制器可以在确定存储器请求被授权的情况下通过加密数据来限制对存储器分区的访问。

可以使用任何其他合适的方法来控制对存储器块及其分区的访问,并且在一些实施例中,可以实现这些方法的组合。另外,可以实现这些访问控制特征以仅控制读取访问请求、写入访问请求或者这二者。在又一实施例中,可以实现访问控制而没有使用配置控制器,例如对数据加密和/或使用数据存储MAC,如以上和以下进一步描述的。

在一些实施例中,每个存储器分区存储例如使用消息认证代码(MAC)生成器(例如图11中所示的)生成的多个消息认证代码。当配置控制器1960接收到配置流时,MAC可以被生成并且与所存储的MAC相比较以确定所生成的MAC是否匹配所存储的MAC中的任何MAC。如果配置控制器1960确定匹配,则其可以授权对存储匹配MAC的存储器分区的访问。否则,配置控制器1960可以拒绝访问。

在一些实施例中,配置控制器1960被配置成响应于确定未授权的独立可重新配置区域试图访问存储器分区来使用零值改写该存储器分区中存储的所有数据。在其他实施例中,通过切断给包含目标存储器分区的存储器块的电力来擦除数据,如以上所描述的。

在一些实施例中,一旦第一配置分配存储器分区和MAC代码,则它们不能通过任何授权功能来被改变。如果控制器检测到存储器分区或MAC代码发生变化,则其将擦除设备上的所有数据。这将防止攻击者尝试使用配置框来获取对设备的控制。可选地,第一配置可以包括可以定义分区访问或MAC代码的一些融合比特或其他非易失性存储器的设置。

在各种实施例中,消息认证代码(MAC)生成器被配置成输入所接收的配置流并且输出所生成的消息认证代码。MAC生成器可以实现为硬逻辑、软逻辑或者硬逻辑和软逻辑的组合。在一个方法中,MAC生成器可以包括用软逻辑实现的伽罗瓦域(GF)乘法器(例如FPGA构造)。例如,可以使用修改后的软逻辑DSP块来实现这些GF乘法器。DSP块可以支持比如GF扩展的有限场减小,如2014年10月27日提交的美国专利申请第14/524,526中讨论的,其全部内容通过引用合并于此。

MAC生成器可以从存储器块中的一个或多个中获取多个密钥之一用于生成消息认证代码。可选地,密钥在可编程电路装置的第一配置期间可以嵌入在MAC生成器的软逻辑部分中。

在一些实施例中,可以向单个可重配置区域分配多个存储器块上的分区。例如,一个分区可以存储加密密钥和MAC,另一分区可以存储备用数据。多个存储器块可以用于安全地备份数据。作为另一示例,存储器块可以不足以存储可重配置区域所需要的所有数据,并且因此可以向其分配一个或多个其他存储器块上的一个或多个分区。

图20是图示根据一些实施例的在具有多个存储器块和独立可重配置区域的FPGA中控制存储器访问的方法的流程图。在步骤2002,在m个独立可重配置区域上、例如在第一配置下对n个存储器块进行分区。在步骤2004,可以在存储器分区中的一个或多个上存储多个MAC,例如在第一配置下或者在数据稍后被已认证区域存储在存储器块中时。在步骤2006,例如通过另一区域针对所接收的配置流生成MAC。在步骤2008,将所生成的MAC与所存储的MAC中的每个相比较,并且在步骤2010,处理确定所生成的MAC是否匹配所存储的MAC中的任何一个。如果是,则在步骤2012授权存储器访问。如果没有匹配,则在步骤2014拒绝存储器访问。

根据一方面,一种用于存储数据的装置包括:可编程电路装置,包括第一和第二独立可重新配置区域;存储器块,被配置成存储数据;以及配置控制器。配置控制器被配置成:对存储器块进行分区以向第一独立可重新配置区域分配第一存储器分区并且向第二独立可重新配置区域分配第二存储器分区。另外,配置控制器被配置成:从第一和第二独立可重新配置区域接收访问存储器块的请求;以及控制对存储器块的访问以防止第一独立可重新配置区域访问第二存储器分区并且防止第二独立可重新配置区域访问第一存储器分区。

在一些实施例中,配置控制器还被配置成:基于存储比特确定是否应当授权第一独立可重新配置区域访问第二存储器分区;以及控制对存储器块的访问以响应于确定应当授权第一独立可重新配置区域访问第二存储器分区来使得第一独立可重新配置区域能够访问第二存储器分区,从而配置控制器被配置成控制对存储器块的访问以响应于确定不应当授权第一独立可重新配置区域访问第二存储器分区来防止第一独立可重新配置区域访问第二存储器分区。

在一些实施例中,配置控制器还被配置成:基于存储比特确定是否应当授权第一独立可重新配置区域对第二存储器分区进行读取访问和写入访问。首先,响应于只读确定,控制对存储器块的访问以使得第一独立可重新配置区域能够读取第二存储器分区中存储的数据并且防止第一独立可重新配置区域向第二存储器分区中写入数据。其次,响应于只写确定,控制对存储器块的访问以使得第一独立可重新配置区域能够向第二存储器分区中写入数据并且防止第一独立可重新配置区域从第二存储器分区读取数据。第三,响应于读取和写入确定,控制对存储器块的访问以使得第一独立可重新配置区域既能够从第二存储器分区读取数据也能够向第二存储器分区写入数据。

在一些实施例中,装置还包括n个附加存储器块和m个独立可重新配置区域,其中m>n,其中配置控制器还被配置成在m个独立可重新配置区域上对n个附加存储器块进行分区。另外,配置控制器被配置成:控制对n个附加存储器块的访问以防止m个独立可重新配置区域中的任何给定的独立可重新配置区域访问向m个独立可重新配置区域中的另一独立可重新配置区域分配的存储器分区。

在一些实施例中,装置内的存储器块在第一配置下被分区。

在一些实施例中,每个存储器分区存储多个消息认证代码。

在一些实施例中,配置控制器还被配置成:针对所接收的配置流生成消息认证代码;并且将所生成的消息认证代码与所存储的消息认证代码中的每个相比较。另外,配置控制器被配置成:当所存储的消息认证代码中的任何代码匹配所生成的消息认证代码时,确定所接收的配置流是认证配置流。

在一些实施例中,装置还包括:消息认证代码(MAC)生成器,其被配置成输入所接收的配置流并且输出所生成的消息认证代码,并且MAC生成器被实现为硬逻辑和软逻辑的组合。

在一些实施例中,MAC生成器从存储器块中获取多个密钥之一用于生成消息认证代码。

在一些实施例中,密钥在可编程电路装置的第一配置期间嵌入在MAC生成器的软逻辑部分中,并且密钥用于生成消息认证代码。

在一些实施例中,配置控制器还被配置成响应于确定第一独立可重新配置区域尝试访问第二存储器分区来使用零值改写第二存储器分区中存储的所有数据。

在一些实施例中,装置包括加密电路,加密电路被配置成响应于配置控制器确定认证访问请求来对给定存储器分区中存储的数据进行解密。

在一些实施例中,装置的配置控制器被自动授权从存储器块的任何分区读取数据。

根据一方面,一种用于存储数据的装置包括:可编程电路装置,包括m个独立可重新配置区域;n个存储器块,用于存储数据,其中m>n;以及被配置成针对所接收的配置流生成消息认证代码的消息认证代码(MAC)生成器。另外,可编程电路装置还包括配置控制器,其被配置成:在m个独立可重新配置区域上对n个存储器块进行分区;在存储器分区中的至少一个中存储多个消息认证代码;将所生成的消息认证代码与所存储的多个消息认证代码中的每个相比较;以及当所存储的多个消息认证代码中的任何一个匹配所生成的消息认证代码时,确定所接收的配置流是认证配置流。

在一些实施例中,MAC生成器还被配置成从n个存储器块中获取多个密钥中的至少一个密钥用于生成消息认证代码。

在一些实施例中,配置控制器还被配置成:控制对n个存储器块的访问以防止m个独立可重新配置区域中的至少一个独立可重新配置区域访问向m个独立可重新配置区域中的另一独立可重新配置区域分配的存储器分区。

根据一方面,一种控制具有n个存储器块和m个独立可重新配置区域的现场可编程门阵列(FPGA)中的存储器访问的方法,包括:在m个独立可重新配置区域上对n个存储器块进行分区;在存储器分区中的至少一个中存储多个消息认证代码;针对所接收的配置流生成消息认证代码;将所生成的消息认证代码与所存储的多个消息认证代码中的每个相比较;以及当所存储的多个消息认证代码中的任何消息认证代码匹配所生成的消息认证代码时,确定所接收的配置流是认证配置流。

在一些实施例中,方法还包括:从n个存储器块中获取(检索)多个密钥中的至少一个密钥用于生成消息认证代码。

在一些实施例中,方法还包括:控制对n个存储器块的访问以防止m个独立可重新配置区域中的至少一个独立可重新配置区域访问向m个独立可重新配置区域中的另一独立可重新配置区域分配的存储器分区。

在一些实施例中,方法还包括:控制对n个存储器块的访问以防止m个独立可重新配置区域中的任何独立可重新配置区域访问向m个独立可重新配置区域中的另一独立可重新配置区域分配的存储器分区。

已经出于说明和描述的目的呈现了本发明的示例性实施例的以上描述。其并非意图排他或者将本发明限于所公开的精确形式,很多修改和变型鉴于以上教导都是可能的。实施例被选择和描述以便最佳地解释本发明及其实际应用的原理,从而使得本领域其他技术人员能够在各种实施例中并且在适合所预期的特定用途的各种修改的情况下最佳地使用本发明。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1