CN109643360A - 用于储存于集成电路上的认证固件的系统和方法 - Google Patents
用于储存于集成电路上的认证固件的系统和方法 Download PDFInfo
- Publication number
- CN109643360A CN109643360A CN201780045667.5A CN201780045667A CN109643360A CN 109643360 A CN109643360 A CN 109643360A CN 201780045667 A CN201780045667 A CN 201780045667A CN 109643360 A CN109643360 A CN 109643360A
- Authority
- CN
- China
- Prior art keywords
- data
- randomization
- circuit
- integrated circuit
- storage
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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 cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/76—Protecting 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Abstract
本发明公开了一种对储存在集成电路中的数据进行认证的方法。该方法包含:在集成电路中储存随机化数据,使得随机化数据占据存储器电路的未由储存数据占据的每一个地址空间。该方法还包含:响应于对储存数据与随机化数据的第一副本的级联的认证,使用集成电路来生成第一数字签名。该方法还包含:响应于使用计算机实现的认证应对储存数据的制造者提供的副本与随机化数据的第二副本的级联的认证,生成第二数字签名;以及根据第一签名与第二签名是否匹配来对储存在集成电路中的数据进行认证。
Description
此申请要求2016年8月24日提交的美国申请No.15/246405的优先权,于此通过引用该申请整体将其并入。
背景技术
此部分中描述的途径是将追求的,但不必然是先前已经设想或追求的途径。因此,除非于此另外指出,此部分中描述的途径不是此申请中的权利要求的现有技术,并且通过将其包含于此部分中不是承认其为现有技术。
可编程逻辑装置(PLD),例如现场可编程门阵列(FPGA),是由可编程逻辑块和可编程布线构成的集成电路。此可编程逻辑和布线能够被配置有能够被从外部源加载到PLD中的配置比特流。对于现代PLD,通过一个或多个可编程处理器和嵌入于PLD中的相关联的固件来解决此配置。许多PLD,包含FPGA,也典型地包含与这些处理器和嵌入式固件相关联的可寻址随机存取存储器(RAM)和只读存储器(ROM)。例如,ROM可以含有处理器指令和容许FPGA经历初始启动过程的其它相关联的数据,并且启动过程可以包含以附加处理器指令或来自外部源的相关联的数据(诸如在外部比特流中含有的报头数据)加载RAM。嵌入式ROM代码或固件也可以含有用于实施安全检查(诸如计算用于认证的椭圆曲线签字算法)的指令,或用于执行调试和自检操作的代码。
对于PLD用户来说,保护嵌入式固件免受篡改或剽窃(hacking)是非常重要的。此外,PLD通常被并入到需要高水平安全的设备中(诸如军事和金融应用),这使得它们成为黑客和其他恶意实体攻击的目标。攻击PLD的通常方法将是秘密地嵌入可以由PLD中的处理器执行的恶意软件或代码。例如,在FPGA中,可以通过操作用于对FPGA的ROM进行编程的掩膜,或通过在单独装置的ROM比特通过供应通道时,直接操作单独装置的ROM比特(诸如通过使用激光探针或聚焦离子束技术)来将此恶意软件插入到FPGA的ROM中。从攻击者的观点,与篡改装置中的逻辑门相比,通过篡改装置上的嵌入式代码来篡改装置并使得装置做攻击者期望的事情,可能要容易得多。
从而,保护PLD的密钥部件是确保嵌入式固件是安全防入侵的。保护PLD防入侵的当前方案依赖于将唯一标识(ID)编程到装置中,并经由联合测试行动小组(Joint TestAction Group(JTAG))命令来读取该ID。然而,对于受到内部处理器完全控制的PLD,唯一ID或其它这样的JTAG响应能够被容易地欺骗,并且不能确保装置不含有恶意代码。其它安全措施包含外部启动代码的公开密钥认证,但是公开密钥也能够被容易地欺骗,例如,在攻击者已经将特洛伊(Trojan)软件插入到负责认证的FPGA的嵌入式ROM固件中情况下。在一些情况下,可能地,通过攻击装置的某些调试设施,可以将恶意代码储存到FPGA的RAM中,或另一PLD中。因此,存在发展检测攻击者是否已经在PLD的“安全包封”或固件内的方法的长期可感知的需要。
发明内容
于此描述的实施例包含生成认证签名的方法和用于生成认证签名的集成电路。应当理解,能够以诸如工艺、装备、系统、装置或方法的许多方式来实现实施例。以下描述了数个实施例。
在一个实施例中,公开了一种对集成电路中的储存数据进行认证的方法。所述方法可以包含如下操作:使用计算机实现的随机化数据生成应用向所述集成电路中的存储器电路发送随机化数据的第一副本,使得所述随机化数据的所述第一副本占据所述存储器电路的未由所述储存数据占据的每一个地址。所述方法还可以包含如下操作:响应于通过使用所述集成电路上的密码电路,对所述储存数据与所述随机化数据的所述第一副本的级联实施密码操作,来生成第一数字签名。所述方法还可以包含如下操作:使用计算机实现的认证应用,通过对所述储存数据的干净副本与所述随机化数据的第二副本的级联实施所述密码操作,来生成第二数字签名。所述方法可以包含如下操作:使用计算机实现的比较应用,来确定所述第一数字签名与所述第二数字签名是否匹配。
在实施例中,所述方法还可以包含如下操作:响应于确定了所述第一数字签名与所述第二数字签名匹配,根据所述储存数据来配置所述集成电路。
在实施例中,所述方法还可以包含如下操作:响应于确定了所述第一数字签名与所述第二数字签名不匹配,使用计算机实现的报告应用将所述第二集成电路报告为有缺陷的。
在另一实施例中,公开了一种用于生成数字签名的集成电路。所述集成电路还可以包含处理电路。所述集成电路还可以包含存储器电路,使得所述存储器电路包括储存数据和随机化数据,其中,所述随机化数据占据未被所述储存数据占据的每一个未初始化地址。所述方法还可以包含密码电路,其对所述储存数据与所述随机化数据的级联执行密码函数,以生成所述数字签名。
在另一实施例中,公开了一种对储存数据进行认证的方法。所述方法可以包含如下操作:使用计算机实现的随机化数据生成应用,来向集成电路中的存储器电路发送随机化数据的第一副本,使得所述随机化数据的所述第一副本占据所述存储器电路的未由所述储存数据占据的每一个地址。所述方法可以包含另一操作:使用计算机实现的认证应用来从所述集成电路接收所述储存数据与所述随机化数据的所述第一副本的第一级联。所述方法还可以包含如下操作:使用计算机实现的认证应用来确定所述第一级联与所述储存数据的干净副本和所述随机化数据的第二副本的第二级联是否匹配,这样,所述干净副本由所述集成电路的制造者提供。所述方法可以包含如下操作:使用计算机实现的比较应用来确定所述第一级联与所述第二级联是否匹配。
根据附图以及优选实施例的以下详细描述,本发明的进一步的特征、其性质、以及各种优点将是更明显的。
附图说明
图1示例了根据本发明的实施例的示范性集成电路。
图2示例了示范性计算机系统,可以在该计算机系统上实现实施例。
图3示例了根据本发明的实施例的用于认证储存在集成电路上的数据的示范性认证系统。
图4示例了根据本发明的实施例的实现于计算机系统上的示范性认证应用。
图5A和图5B示例了根据本发明的实施例的示范性存储器电路。
图6示例了根据本发明的实施例的操作认证系统的示范性方法。
图7示例了根据本发明的实施例的确定对储存在集成电路的存储器电路上的数据的认证的结果的示范性方法。
具体实施方式
本发明的实施例涉及具有逻辑电路系统的集成电路。集成电路可以是任何适合类型的集成电路,诸如微处理器、专用集成电路、数字信号处理器、存储器电路、或其它集成电路。如果期望,则集成电路可以是含有可编程逻辑电路系统的可编程集成电路。将在作为范例的诸如可编程逻辑装置(PLD)集成电路的集成电路的背景中总体描述本发明。在以下描述中,能够互换地使用术语“电路系统”和“电路”。
在以下描述中,为解释目的,提出了许多具体细节以提供对本发明的透彻理解。然而,将明显的是,可以实践本发明而没有这些具体细节。在其它实例中,以方块图形式示出了公知结构和装置,以避免不必要地使本发明难理解。
以下描述了数个特征,它们均能彼此独立地使用或以其它特征的任何组合使用。然而,任何单独的特征可以不处理任何以上讨论的问题,或可能仅处理一个以上讨论的问题。一些以上讨论的问题可能未由任何于此描述的特征完全处理。
图1示例了根据本发明的实施例的范例集成电路100。图1中,集成电路100可以包含处理电路系统102,处理电路系统102经由互连电路系统106通信上耦合至可编程逻辑装置(PLD)电路101。处理电路系统102可以是中央处理单元(CPU)、微处理器、浮点协处理器、图形协处理器、硬件控制器、网络控制器、基于精简指令集计算(RISC)的处理器(诸如进阶RISC机器(ARM)处理器)、或其它处理单元。
PLD电路101可以包含输入-输出电路系统103,用于经由输入-输出针脚104驱动离开PLD电路101的信号和接收来自其它装置的信号。互连电路系统106可以包含诸如全局和局部垂直和水平导线的互连资源,并且总线可以用于路由PLD电路101上的信号。互连电路系统106包含导线和相应导线之间的可编程连接,并且因此有时称为可编程互连。
互连电路系统106可以形成片上网络(NOC)。NOC可以是诸如复用器和解复用器的互连资源的系统,该系统应用通常的连网技术来将处理电路系统102与PLD电路101连接并路由PLD电路101上的信号。NOC可以实施路由功能、网关功能、协议或地址翻译、以及安全功能。
PLD电路101可以包含可编程逻辑区域108,可编程逻辑区域108能够被配置为执行定制的逻辑功能。可编程逻辑区域108可以包含例如组合和序列逻辑电路系统。互连电路系统106可以被视为可编程逻辑108的类型。
PLD电路101还可以含有可编程存储器元件110。能够使用针脚104和输入-输出电路系统103给可编程存储器元件110加载配置数据(也称为编程数据)。一旦被加载,则可编程存储器元件110均可以提供对应的静态控制信号,其控制可编程逻辑108中的相关联的逻辑部件的操作。在典型的场景中,将加载的可编程存储元件110的输出应用于可编程逻辑108中的金属氧化物半导体晶体管的栅极,以导通或断开某些晶体管并由此配置路由路径和可编程逻辑区域108中的逻辑。可以被以此方式控制的可编程逻辑电路元件包含传输晶体管(pass transistor)、复用器(例如用于形成互连电路系统106中的路由路径的复用器)的部分、查找表、逻辑阵列、各种逻辑门等。
可以使用任何适合的易失性和/或非易失性存储器结构来实现可编程存储器元件110,存储器结构诸如是随机存取存储器(RAM)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩膜编程和激光编程结构、电阻存储器结构、这些结构的组合等。因为在编程期间给可编程存储器元件110加载有配置数据,所以可编程元件110有时被称为配置存储器、配置RAM(CRAM)、或可编程存储器元件。
可以使用任何适合的架构来组织PLD电路101的电路系统。作为范例,可以以较大可编程逻辑区域108的一系列的行和列来组织PLD 101的逻辑,每一个较大可编程逻辑区域108含有多个较小逻辑块112。较小逻辑块可以例如是逻辑的有时被称为逻辑元件(LE)的区域,均含有查找表(LUT)、一个或多个寄存器、以及可编程复用器电路系统。较小的区域也可以是例如逻辑的有时被称为自适应逻辑模块(ALM)的区域。每一个自适应逻辑模块可以包含一对加法器、一对相关联的寄存器以及查找表或共用组合逻辑(作为范例)的其它块。较大的区域可以是例如含有多个逻辑元件或多个ALM的逻辑阵列块(LAB)。在图1的范例中,在图1中的可编程逻辑108(其可以是例如逻辑阵列块)的较大区域之一中示出了示例性较小逻辑块112(其可以是例如LE或ALM)。在典型的PLD电路101中,可以存在数百或数千较小的逻辑块112。图1中示出的较小逻辑块112仅是示例性的。
在装置编程期间,将配置较小逻辑块112和可编程逻辑区域108,使得它们的逻辑资源对它们的输入实施期望的逻辑功能并产生期望的输出信号的配置数据,加载到PLD电路101中。例如,给CRAM单元加载有合适的配置数据比特以配置PLD电路10上的加法器和其它电路来实现期望的定制逻辑设计。
PLD电路101的资源,诸如可编程逻辑108,可以由可编程互连106互连。可编程互连106通常包含垂直和水平导体。这些导体可以包含跨过装置101的基本全部的全局导线、跨过PLD电路101的部分的诸如半线或四分之一线的分数线、特定长度(例如,足以互连数个逻辑阵列块或其它这样的逻辑区)的交错线、较小的局部线、或任何其它适合的互连资源布置。如果期望,则PLD电路101的逻辑可以布置在更多的层级或层中,其中,多个大的区域被互连以形成逻辑的更大的部分。其它装置布置可以使用未以行和列布置的逻辑。
除可编程逻辑的在图1中示出的相对大的块之外,PLD电路101通常还包含与PLD电路101上的输入-输出电路系统、可编程互连、以及存储器系统相关联的一些可编程逻辑。例如,输入-输出电路系统103可以含有可编程输入和输出缓冲器。可以对可编程互连106进行编程以将信号路由至期望的目的地。
图2是示例了计算机系统200的方块图,可以在该计算机系统上实现本发明的实施例。计算机系统200包含用于传达信息的总线202或其它通信机构和与总线202耦合用于处理信息的硬件处理器204。硬件处理器204可以是例如通用微处理器。在实施例中,处理器24可以类似于上述处理电路系统102。
计算机系统200还包含诸如随机存取存储器(RAM)或其它动态储存装置的主存储器206,该主存储器耦合至总线202用于储存由处理器204执行的指令和信息。主存储器206还可以用于在执行由处理器204执行的指令期间储存临时变量或其它中间信息。当该指令储存在处理器204可存取的非瞬时储存介质中时,该指令使得计算机系统200成为被定制以实施指令中规定的操作的专用机器。
计算机系统200还包含只读存储器(ROM)208或耦合至总线202用于储存用于处理器204的指令和静态信息的其它静态储存装置。提供诸如磁盘、光盘、或固态驱动器(solidstate drive)的储存装置210,并将其耦合至总线202用于储存信息和指令。计算机系统200可以经由总线202耦合至显示器212,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器、发光二极管(LED)显示器、或有机发光二极管(OLED)显示器,用于向计算机用户显示信息。包含字母数字键和其它键的输入装置214耦合至总线202用于向处理器204传达信息和命令选择。另一类型的用户输入装置是光标控制器216,诸如鼠标、跟踪球、或光标方向键,用于向处理器204传达方向信息和命令选择并用于控制显示器212上的光标移动。此输入装置典型地具有两个轴上的两个自由度,使得装置在平面中指定位置,两个轴是第一轴(例如,x)和第二轴(例如,y)。
根据一个实施例,于此的技术由计算机系统200响应于处理器204执行主存储器206中含有的一个或多个指令中的一个或多个序列来实施。该指令可以被从诸如储存装置210的另一储存介质读取到主存储器206中。主存储器206中含有的指令的序列的执行使得处理器204实施于此描述的过程步骤。在替代实施例中,可以使用硬连线电路系统来代替软件指令或与软件指令组合。
于此使用的术语“储存介质”指非瞬时介质,其储存使得机器以具体方式操作的数据和/或指令。该储存介质可以包含非易失性介质和/或易失性介质。非易失性介质包含例如光盘、磁盘、或固态驱动器,诸如储存装置210。易失性介质包含动态存储器,诸如主存储器206。储存介质的通常形式包含例如软盘、柔性盘、硬盘、固态驱动器、磁带、或任何其它磁数据储存介质、CD-ROM、任何其它光数据储存介质、具有孔的图案的任何物理介质、RAM、PROM、和EPROM、快擦编程只读存储器(Flash-EPROM)、NVRAM、任何其它存储器芯片或盒式磁带(cartridge)。
储存介质与传输介质是相区别的,但是可以与传输介质结合使用。传输介质参与储存介质之间的信息传送。例如,传输介质包含同轴缆线、铜电线和光纤光学器件,包含包括总线202的电线。传输介质也能够采取声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
各种形式的介质可以涉及将一个或多个指令的一个或多个序列携带至处理器204用于执行。例如,指令可以初始携带于远程计算机的磁盘或固态驱动器上。远程计算机能够将指令加载到其动态存储器中并使用调制解调器通过电话线发送指令。计算机系统200本地的调制解调器能够接收电话线上的数据并使用红外发送器将数据转换为红外信号。红外检测器能够接收红外信号中携带的数据,并且合适的电路系统能够将数据放到总线202上。总线202将数据携带至主存储器206,处理器204从主存储器206检索并执行指令。由主存储器206接收的指令可以可选地在由处理器204执行之前或之后储存于储存装置210上。
计算机系统200还包含耦合至总线202的通信接口218。通信接口218提供至网络链接220的双向数据通信耦合,网络链接220连接至局部网络222。例如,通信接口218可以是综合服务数字网络(ISDN)卡、缆线调制解调器、卫星调制解调器、或提供至对应类型的电话线的数据通信连接的调制解调器。作为另一范例,通信接口218可以是提供至可兼容LAN的数据通信连接的局域网(LAN)卡。也可以实现无线链接。在任何该实现中,通信接口218发送和接收电、电磁或光信号,该信号携带表示各种类型的信息的数字数据流。
网络链接220典型地通过一个或多个网络提供至其它数据装置的数据通信。例如,网络链接220可以通过局部网络222提供至主机计算机224或至由因特网服务提供者(ISP)226操作的数据设备的连接。ISP 226依次通过现在通常被称为“因特网”228的全球分组数据(packet data)通信网络提供数据通信服务。局部网络222和因特网228均使用携带数字数据流的电、电磁、或光信号。通过各种网络的信号以及网络链接220上的通过通信接口218来往于计算机系统200携带数字数据的信号是传输介质的范例形式。
计算机系统200能够通过网络(单个或多个)、网络链接220和通信接口218发送消息并接收数据,包含程序代码。在因特网范例中,服务器230可能通过因特网228、ISP 226、局部网络222以及通信接口218发送对应用程序的请求代码。
接收的代码可以在其被接收时由处理器204执行,和/或储存于储存装置210、或其它非易失性储存器中用于以后执行。
图3示例了根据本发明的实施例的用于认证储存在集成电路100上的数据的示范性认证系统300。为了示例清楚的范例,将参照图1的集成电路100和图2的计算机系统200来讨论图3。
在实施例中,储存在存储器电路302上的数据可以是固件或ROM代码此固件易于受到来自恶意用户的剽窃攻击。因此,需要在基于储存在存储器电路302中的固件来配置集成电路100之前的启动序列或过程期间确定对固件的认证。在实施例中,认证系统300用于认证储存在存储器电路302中的固件。
再次参照图3,认证系统300可以包含通信上耦合至计算机系统200的集成电路100。例如,集成电路100可以经由通信接口218或总线202被连接至计算机系统200。集成电路100还可以包含通信上与存储器电路302耦合的处理电路系统102。在实施例中,存储器电路302类似于此申请中其它地方描述的可编程存储器元件110。在实施例中,可以将可以形成可编程存储器元件110的全异存储器类型(例如,ROM、RAM、以及寄存器)合并到由存储器电路302表示的单个逻辑地址空间中。在实施例中,存储器电路302的地址空间的部分由诸如配置比特流或固件的数据占据。
再次参照图3,计算机系统200生成并发送至集成电路100的处理电路系统102的随机化数据306。处理电路系统102接收随机化数据306并将其发送至存储器电路302。在实施例中,随机化数据306储存在存储器电路302中,使得随机化数据占据存储器电路302的每一个先前未被占据的地址。在实施例中,随机化数据306包含随机化比特图案,该随机化比特图案由计算机系统200中的应用生成并被发送至处理电路系统302以被写入到存储器电路302的未初始化地址。在替代实施例中,随机化数据306可以由装置100的处理电路系统102内的电路系统生成。在另一实施例中,集成电路100的制造者可以在制造时以一些随机化数据初始化存储器电路302中的ROM。在实施例中,通过以随机化数据填充RAM位置,在对集成电路100进行认证之前实施存储器电路302中的RAM的初始化。
在随机化数据306用于注满、填满、或写入到存储器电路302中的所有未初始化地址之后,处理电路系统102可以对储存在存储器电路302中的固件与随机化数据306的级联(concatenation)执行密码认证操作,以生成第一签名310。例如,处理电路系统102可以利用专门化电路系统来执行密钥相关的哈希消息认证代码(HMAC)函数以生成第一消息认证代码(MAC),其是第一签名310。处理电路系统102可以使用从计算机系统200接收的秘密密钥和随机化数据306与储存在存储器电路302上的嵌入式固件的级联一起来执行HMAC函数。在实施例中,然后将第一签名310发送至计算机系统100。
同时地或并行地生成第一签名310,通过计算系统200对固件的副本与随机化数据306的副本的级联实施另一密码认证操作,生成第二签名。在实施例中,可以从集成电路100的制造者或其它受信任的源获得用于第二密码认证操作的固件的副本,以确保副本未受篡改并且安全。计算机系统200然后将第一签名310与第二签名进行比较。
如果储存在存储器电路302中的固件未受篡改、安全、或为原始的,则第一签名310将与第二签名匹配,并且对嵌入式固件进行了成功的认证。然后,如果第一签名310与第二签名不匹配,则嵌入式固件可能被修改、剽窃、或篡改并且因此不安全。
图4示例了根据本发明的实施例的实现于计算机系统200上的认证应用400。为示例清楚的范例,将参照图3的认证系统300讨论图4。
现在参照图4,可以将认证应用400实现为计算机系统200上的专门化软件或电路系统,以认证储存于集成电路100上的嵌入式固件。认证应用400还可以被实现为用于配置集成电路100的软件套件或应用。例如,认证应用400可以是用于生成用于FPGA的配置比特流的电子设计自动化(EDA)应用或计算机辅助设计(CAD)应用的软件模块。在实施例中,认证应用400生成用于由集成电路100实施的认证操作的随机化数据。另外,认证应用400还可以对生成的随机化数据的副本与如从制造者接收的嵌入式数据(或储存在集成电路100的存储器电路302中的固件)的副本的级联实施独立的认证操作。在实施例中,认证应用400还可以包含诸如随机化数据生成应用402、密码应用404、比较应用408、以及报告应用410的子模块。本领域技术人员将理解,可以以计算机系统200上的上述子模块的任何组合来实现认证应用400。
随机化数据生成应用402可以是用于生成一和零的随机图案(即随机比特图案)的形式的随机或伪随机数据的软件模块,该数据要占据存储器电路306的地址空间的未由储存数据(或固件)占据的部分。随机化数据生成应用402可以发送随机数据308的第一副本至存储器电路306。因为随机数据占据存储器电路306的所有未使用的存储器空间,所以随机化数据306与嵌入式固件的级联是不可压缩的。因此,没有其它(潜在地恶意的)数据能够被增加至存储器306,而不需要重写(re-writing)、改写(over-writing)、擦除、或修改存储器电路306中的随机数据或储存数据(即嵌入式固件)。在实施例中,随机化数据生成应用402可以从随机数据生成器或密码伪随机数生成器生成不可压缩的比特图案,密码伪随机数生成器是由随机密钥或将不被恶意用户或攻击者所知的密钥播种的或另外地储存在集成电路100上。实现密码伪随机数生成器的技术的范例可以由标准化典据(standardizationauthority)给出,标准化典据诸如是例如联邦信息处理标准(FIPS)。本领域技术人员将理解,可以使用各种公知技术来实现随机或伪随机数生成器。
可以将密码应用404实现为认证应用400的软件子模块,以对由处理电路系统102储存在存储器电路302中的嵌入式固件或数据的副本与随机化数据306的副本的级联实施第二密码认证操作。例如,密码应用404可以基于使用发送至处理电路系统102的密钥而对嵌入式固件的干净未被篡改的或原始的副本与随机化数据306的副本的级联的密码认证来计算第二MAC或第二签名。
可以将比较和报告应用408实现为认证应用400的软件子模块以比较第一签名310和第二签名并报告比较的结果。因为用于第二密码认证的嵌入式固件的副本是从例如集成电路100的制造者的受信任的源获得的,所以假定副本是安全的。从而,第二签名是对嵌入式固件的安全或未被篡改的副本与随机化数据306的副本的不可压缩级联实施密码认证操作的结果或预期值。因此,比较和报告应用404能够将第一签名310与第二签名进行匹配以确定储存在存储器电路302中的嵌入式固件是否是安全的。如果签名匹配,则储存在存储器电路302中的嵌入式固件是安全的并且集成电路100可以继续进行对于PLD电路101的启动序列或过程。
在实施例中,储存在存储器电路302中的经验证的嵌入式固件可以用于配置PLD电路101。在替代实施例中,通过比较集成电路100的处理电路102实施第一密码认证操作和计算机密码应用404实施第二密码认证操作所花的时间,比较和报告应用408可以确定储存在存储器电路302中的嵌入式固件不是安全的。例如,如果第一密码认证操作花费不寻常的长的时间来产生与第二签名相匹配的第一签名310,则比较和报告应用408可以报告储存在存储器电路302中的嵌入式固件受到危害。类似地,如果第一密码认证操作从未完成,则比较和报告应用408可以报告储存在存储器电路302中的嵌入式固件受到危害。本领域技术人员将理解,完成第一和第二密码认证操作所花费的时间将取决于规范、性能、硬件和软件能力,并分别取决于集成电路100和计算系统200的硬件和软件平台。
图5A和图5B示例了根据本发明的实施例的示范性存储器电路。为示例清楚范例,将结合图3的认证系统300和图4的认证应用400来讨论图5A和图5B。
现在参照图5A,存储器电路302可以涵盖实现于集成电路100中的所有ROM和RAM。在实施例中,集成电路100中的RAM也包含寄存器文件和高速缓冲存储器。在实施例中,存储器电路302可以包含可寻址存储器阵列、明确可存取单独寄存器、或诸如高速缓冲存储器或流缓冲器的隐式可存取存储器的组合。在实施例中,存储器电路302由一个地址图表示。认证应用400可以对用于存储器电路302的地址图进行存取。
如图5A中描绘的,初始地,存储器电路302被划分成初始化的存储器地址502和未初始化的存储器地址504。初始化的存储器地址502可以储存嵌入式固件。在另一适合的布置中,储存在存储器线路302中的嵌入式固件可以由集成电路100的制造者打乱(obfuscate)。在实施例中,可以在处理电路系统102运行第一密码认证操作之前由集成电路100在运行中对要用于由密码应用404认证的嵌入式固件的副本进行加密或散列(hash),使得计算机系统200看不见嵌入式固件的“明码文本”或内容。如果期望,则未初始化的地址空间可以含有无效值(例如,“FFFFFFFF”)。可以由认证应用400对打乱的嵌入式固件例如一次一块地进行认证。如果期望,可以在认证应用400完成认证操作之后,废弃打乱的嵌入式固件。
现在参照图5B,在将随机化数据306储存于存储器电路302中之后,存储器电路302被划分成储存嵌入式固件的初始化地址502和被初始化有随机化数据的存储器地址506。在实施例中,要填充、注满、或占据未初始化存储器地址504的随机化数据306可以由随机化数据生成应用402如上述地生成。在替代实施例中,处理电路系统102内的专门化电路系统可以生成随机化数据306并发送随机化数据306的副本至计算机系统200。例如,PLD电路101自身能够以不可压缩的图案预填充存储器电路302,其固有地花费长的时间和与存储器电路302相关联的基本整个地址空间来进行计算。
一种这样的方法是将存储器电路302的整个地址图(map)划分成地址空间的N个毗邻的块,以伪随机图案填充所有存储器电路302,并迭代地计算随机地址空间处的块的值。在实施例中,可以从用于由计算机系统200提供的散列函数的密钥导出伪随机图案。通过以难以迅速递增地计算,或难以使用小量的存储器计算(诸如通过使用动态编程技术或其它窍门)的图案预填充存储器电路302,可以防止攻击者隐藏攻击代码的压缩版本和将其解压到存储器电路302中。
本领域技术人员将理解,在集成电路100含有与多个地址图相关联的多个处理器或处理电路的替代实施例中,能够将此申请中描述的技术应用于每一个地址图以生成被返回至计算机系统200的多个第一签名。在实施例中,将多个第一签名散列到一起,或另外地对多个第一签名进行认证以生成用于集成电路100的单个第一签名310。
图6示例了根据本发明的实施例的操作认证系统300的示范性方法。为示例清楚的范例,将结合图3的认证系统300和图4的认证应用400来讨论图6。
现在参照图6,在步骤602,可以将数据储存在集成电路100的存储器电路302中。在实施例中,储存数据可以是由集成电路100的制造者嵌入于存储器电路302中的固件。类似地,储存数据可以是加载到存储器电路302中的比特流配置,如此申请中其它地方描述的。储存数据可以占据存储器电路302中可用的地址空间的仅部分。在实施例中,存储器电路302的未被占据的部分是未初始化的。例如,图7示例了根据本发明的实施例的基于签名来生成散列消息认证代码(Hashed Message Authentication Code,HAMC)的示范性方法。
返回图6,在步骤604,可以将由实现为认证应用400的子模块的随机化数据生成应用402生成的随机化数据306从计算机系统200发送至集成电路100。在实施例中,由集成电路100的处理电路系统102接收随机化数据306。在另一实施例中,可以由集成电路100中的专门化电路系统生成随机化数据306,如此申请中其它地方描述的。如果期望,则认证应用400还可以将例如HMAC密钥的密钥发送至集成电路100用于认证目的。
在步骤606,可以将随机化数据306储存在存储器电路302的未初始化地址504中。在实施例中,通过将所有未初始化地址504初始化为根据随机化数据306的比特图案,将随机化数据306储存在存储器电路302中以注满或占据存储器电路302的所有未占据地址空间。储存数据和随机化数据306的组合填满存储器电路302并使得存储器电路302中的全部数据不可压缩,因为对全部数据(或全部数据的部分)的任何压缩操作需要存储器电路302的部分地址空间来储存压缩的数据。
在步骤608,可以通过对存储器电路302中的随机化数据306与储存数据的比特图案的级联执行密码认证操作,由集成电路生成第一签名310。例如,可以通过对级联实施HMAC函数来生成签名。在实施例中,可以由集成电路的处理电路系统102来实施密码认证操作。例如,HMAC密钥可以由密码应用404使用,以对储存在存储器电路302中的随机化数据306与固件的级联执行HMAC函数来生成第一签名310。在实施例中,将第一签名310发送至计算机系统200。例如,处理电路系统102可以沿连接集成电路100和计算机系统200的网络链接220转发第一签名310。
在步骤610,与生成第一签名310同时或并行地,可以由认证应用400生成第二签名。可以由对随机化数据306的副本和从受信任的源(例如,制造者)获得的嵌入式固件的安全副本的级联实施密码认证操作的密码应用402来生成第二签名。对级联实施的密码认证操作可以是诸如在步骤608用于生成第一签名的相同HMAC函数的密码操作。在实施例中,如果由集成电路100生成随机化数据306,则可以由认证应用400接收随机化数据306的副本连同第一签名310一起。在实施例中,可以将储存在存储器电路302上的嵌入式固件或数据的副本作为存储器图像文件提供给密码应用402。
在步骤612,比较和报告应用408可以将第一签名310与第二签名进行比较。例如,认证应用400可以验证嵌入式固件,以检查由恶意用户插入到嵌入式固件中的特洛伊代码。如果特洛伊代码被插入到了嵌入式固件中,则特洛伊代码将修改用于随机化数据306的存储器电路302中的可用的存储器空间。从而,对修改的嵌入式固件与随机化数据306的级联实施的散列函数将产生与从对原始未被篡改的嵌入式固件与随机化数据306的级联实施的散列函数获得的签名不同的签名。通过压缩嵌入式固件,恶意用户可以将特洛伊代码插入嵌入式固件中,使得存储器的类似部分可用于随机化数据306,就如同嵌入式固件未被修改。然而,甚至在该场景下,因为储存数据自身的内容中的差异,对修改的嵌入式固件与随机化数据306的级联实施的散列函数也将产生不同的签名。
在替代实施例中,代替生成第一签名310,集成电路可以将固件与随机化数据306的级联发送至认证应用400。然后,比较和报告应用408将随机化数据306的副本和从受信任的源获得的嵌入式固件的安全副本的级联与从集成电路100接收的随机化数据306和固件的级联进行比较。如果两个级联匹配,则嵌入式固件是干净的,否则,嵌入式固件可以被标识为被篡改、剽窃、或不安全。
本领域技术人员将理解,相同或基本类似的过程可以用于认证储存在存储器电路302中的随机化数据306与嵌入式固件的级联,使得嵌入式固件由集成电路100的制造者打乱或由集成电路在运行时打乱。
图7示例了根据本发明的实施例的确定对储存在集成电路100的存储器电路302上的数据的认证的结果的示范性方法。为示例清楚范例的目的,将结合图3的认证系统300和图4的认证应用400来讨论图7。
现在参照图7,在步骤702,比较和报告应用408可以确定第一签名310是否与第二签名匹配。
在步骤710,响应于确定了第一签名310与第二签名匹配,比较和报告应用408可以确立储存在集成电路100的存储器电路302中的嵌入式固件不含有任何恶意代码或数据,或未被以任何方式修改。在实施例中,比较和报告应用408可以响应于确定了签名匹配而生成输出信号。例如,输出信号可以是GUI元件或声音-视觉提示。在实施例中,可以使用计算机系统200的显示器212发送输出信号。
在步骤712,比较和报告应用可以指示处理电路系统102继续配置集成电路100。在实施例中,配置集成电路100至少部分基于储存在存储器电路302中的嵌入式固件。
在步骤704,响应于确定了第一签名310不与第二签名匹配,比较和报告应用408可以确立集成电路100含有恶意代码。在实施例中,甚至在第一签名310与第二签名相同的情况下,如果第一签名310要花费不寻常的长的时间来计算,则比较和报告应用408也可以确定集成电路100含有恶意代码。
在步骤706,比较和报告应用408可以生成并报告错误。例如,错误可是GUI元件或声音-视觉提示。在实施例中,可以使用计算机系统200的显示器212来发送错误。
在步骤708,比较和报告应用408可以停止或中断处理电路系统102配置集成电路100。在实施例中,比较和报告应用408可以将集成电路100拒绝为有缺陷的。在实施例中,比较和报告应用408可以储存被篡改的嵌入式固件与随机化数据306的级联用于分析。
在前述说明书中,已经参照可以从实现至实现改变的许多具体细节描述了本发明的实施例。说明书和图样因而应被视为示例性的而不是限制性的意义。本发明的范围的唯一和排它的指示器,以及申请人意图的本发明的范围,是从此申请发布的一组权利要求的其中该权利要求用以发布的特定形式的字面意义上的和等同的范围,包含任何随后的校正。于此明白提出的对于在该权利要求中含有的术语的任何定义将指导用于权利要求中使用的该术语的意义。
范例:
以下范例涉及另外的实施例。
范例1是一种对储存在集成电路上的储存数据进行认证的方法,所述方法包括:使用与所述集成电路分开的计算设备向所述集成电路上的存储器电路发送随机化数据的第一副本,其中所述随机化数据的所述第一副本占据所述存储器电路的未由所述储存数据占据的每一个地址;使用所述集成电路上的密码电路,通过对所述储存数据与所述随机化数据的所述第一副本的级联实施密码操作,来生成第一数字签名;使用所述计算设备,通过对所述储存数据的干净副本与所述随机化数据的第二副本的级联实施所述密码操作,来生成第二数字签名;以及使用所述计算设备来确定所述第一数字签名与所述第二数字签名是否匹配。
范例2是如范例1所述的方法,其中,可选地由所述集成电路的制造者提供所述储存数据的所述干净副本。
范例3是如范例2所述的方法,其中,所述存储器电路可选地包括:只读存储器(ROM)电路,其中,所述ROM电路储存第二随机化数据,其中,所述第二随机化数据由所述集成电路的所述制造者嵌入于所述ROM电路中;以及随机存取存储器(RAM)电路,其中,所述RAM电路储存所述随机化数据的所述第一副本。
范例4是如范例1-3中的任一个所述的方法,可选地还包括:响应于确定了所述第一数字签名与所述第二数字签名匹配,根据所述储存数据来配置所述集成电路;以及响应于确定了所述第一数字签名与所述第二数字签名不匹配,使用所述计算设备将所述第二集成电路报告为有缺陷的。
范例5是如范例1所述的方法,其中,所述第一数字签名和所述第二数字签名可选地分别包括第一散列消息认证代码(HMAC)和第二散列消息认证代码。
范例6是如范例5所述的方法,其中,对所述储存数据与所述随机化数据的所述第一副本的所述级联实施所述密码操作可选地包括:在所述密码电路处从所述计算设备接收HMAC密钥;以及使用所述HMAC密钥以及所述储存数据和与所述随机化数据的所述第一副本的所述级联来执行HMAC函数,其中,对所述储存数据的所述干净副本与所述随机化数据的所述第二副本的所述级联实施所述密码操作包括:使用所述HMAC密钥以及所述储存数据的所述干净副本与所述随机化数据的所述第二副本的所述级联来执行所述HMAC函数。
范例7是如范例1所述的方法,可选地还包括使用随机化数据生成电路来生成所述随机化数据。
范例8是如范例7所述的方法,其中,生成所述随机化数据可选地包括:使用所述随机化数据生成电路,将所述存储器电路的地址空间划分成多个地址块;以及使用所述随机化数据生成电路,以所述随机化数据填充所述多个地址块中的每一个块。
范例9是如范例8所述的方法,其中,所述密码电路可选地对所述多个地址块中的每一个地址块生成唯一的数字签名,并且其中,从所述多个地址块中非序列地选择所述地址块中的每一个。
范例10是如范例1所述的方法,其中,所述随机化数据可选地是所述计算设备上的计算机实现的伪随机数生成器的输出。
范例11是如范例1所述的方法,其中,基于对加密密钥和计算机实现的伪随机数生成器的输出的散列实施的密码函数的输出,在所述计算设备处可选地生成所述随机化数据。
范例12是如范例1所述的方法,可选地还包括:在生成所述第一数字签名之前,打乱所述集成电路上的所述储存数据。
范例13是如范例12所述的方法,其中,打乱所述集成上的所述储存数据可选地还包括以秘密密钥对所述储存数据进行加密,以生成加密储存数据。
范例14是如范例13所述的方法,可选地还包括:在生成所述第一数字签名之后,使用所述集成电路来从所述加密储存数据恢复所述储存数据。
范例15是如范例12所述的方法,其中,打乱所述储存数据可选地还包括:对所述储存数据的第一副本的每一个块实施单向散列函数。
范例16是如范例12所述的方法,其中,打乱所述储存数据可选地还包括对所述储存数据实施单向散列函数。
范例17是一种生成数字签名的集成电路,所述集成电路包括:处理电路;存储器电路,其中,所述储存数据和所述随机化数据储存在所述存储器电路上,并且其中,所述随机化数据占据所述存储器电路的未被所述储存数据占据的未初始化存储器地址;以及密码电路,其对所述储存数据与所述随机化数据的级联执行密码函数,以生成所述数字签名。
范例18是如范例17所述的集成电路,其中,所述处理电路、所述存储器电路、以及所述加密电路可选地形成于可编程逻辑装置中。
范例19是一种使用计算设备对储存数据进行认证的方法,所述方法包括:使用所述计算设备上的计算机实现的随机化数据生成应用,来向集成电路上的存储器电路发送随机化数据的第一副本,其中,所述随机化数据的所述第一副本占据所述存储器电路的未由所述储存数据占据的每一个地址;使用所述计算设备上的计算机实现的认证应用来从所述集成电路接收所述储存数据与所述随机化数据的所述第一副本的第一级联;使用所述计算机实现的认证应用来生成所述储存数据的干净副本与所述随机化数据的第二副本的第二级联,其中,所述干净副本由所述集成电路的制造者提供;以及使用所述计算设备上的计算机实现的比较应用来确定所述第一级联与所述第二级联是否匹配。
范例20是如范例19所述的方法,可选地还包括:响应于确定了所述第一级联与所述第二级联匹配,配置所述集成电路以实现由所述储存数据规定的逻辑设计;以及响应于确定了所述第一级联与所述第二级联不匹配,使用所述计算设备上的计算机实现的报告应用将所述第二集成电路报告为有缺陷的。
例如,也可以关于于此描述的方法或过程来实现上述装备的所有可选特征。前述仅是示例本发明的原理,并且本领域技术人员能够进行各种修改,而不脱离本发明的范围和精神。可以单独地或以任何组合来实现前述实施例。
Claims (25)
1.一种对储存在集成电路上的储存数据进行认证的方法,所述方法包括:
使用与所述集成电路分开的计算设备向所述集成电路上的存储器电路发送随机化数据的第一副本,其中所述随机化数据的所述第一副本占据所述存储器电路的未由所述储存数据占据的每一个地址;
使用所述集成电路上的密码电路,通过对所述储存数据与所述随机化数据的所述第一副本的级联实施密码操作,来生成第一数字签名;
使用所述计算设备,通过对所述储存数据的干净副本与所述随机化数据的第二副本的级联实施所述密码操作,来生成第二数字签名;以及
使用所述计算设备来确定所述第一数字签名与所述第二数字签名是否匹配。
2.如权利要求1所述的方法,其中,由所述集成电路的制造者提供所述储存数据的所述干净副本。
3.如权利要求2所述的方法,其中,所述存储器电路包括:
只读存储器(ROM)电路,其中,所述ROM电路储存第二随机化数据,其中,所述第二随机化数据由所述集成电路的所述制造者嵌入于所述ROM电路中;以及
随机存取存储器(RAM)电路,其中,所述RAM电路储存所述随机化数据的所述第一副本。
4.如权利要求1-3中的任一项所述的方法,还包括:
响应于确定了所述第一数字签名与所述第二数字签名匹配,根据所述储存数据来配置所述集成电路;以及
响应于确定了所述第一数字签名与所述第二数字签名不匹配,使用所述计算设备将所述第二集成电路报告为有缺陷的。
5.如权利要求1所述的方法,其中,所述第一数字签名和所述第二数字签名分别包括第一散列消息认证代码(HMAC)和第二散列消息认证代码。
6.如权利要求5所述的方法,其中,对所述储存数据与所述随机化数据的所述第一副本的所述级联实施所述密码操作包括:
在所述密码电路处从所述计算设备接收HMAC密钥;以及
使用所述HMAC密钥以及所述储存数据与所述随机化数据的所述第一副本的所述级联来执行HMAC函数,其中,对所述储存数据的所述干净副本与所述随机化数据的所述第二副本的所述级联实施所述密码操作包括:
使用所述HMAC密钥以及所述储存数据的所述干净副本与所述随机化数据的所述第二副本的所述级联来执行所述HMAC函数。
7.如权利要求1所述的方法,还包括使用随机化数据生成电路来生成所述随机化数据。
8.如权利要求7所述的方法,其中,生成所述随机化数据包括:
使用所述随机化数据生成电路,将所述存储器电路的地址空间划分成多个地址块;以及
使用所述随机化数据生成电路,以所述随机化数据填充所述多个地址块中的每一个块。
9.如权利要求8所述的方法,其中,所述密码电路对所述多个地址块中的每一个地址块生成唯一的数字签名,并且其中,从所述多个地址块中非序列地选择所述地址块中的每一个。
10.如权利要求1所述的方法,其中,所述随机化数据是所述计算设备上的计算机实现的伪随机数生成器的输出。
11.如权利要求1所述的方法,其中,基于对加密密钥和计算机实现的伪随机数生成器的输出的散列实施的密码函数的输出,在所述计算设备处生成所述随机化数据。
12.如权利要求1所述的方法,还包括:
在生成所述第一数字签名之前,打乱所述集成电路上的所述储存数据。
13.如权利要求12所述的方法,其中,打乱所述集成上的所述储存数据还包括以秘密密钥对所述储存数据进行加密,以生成加密储存数据。
14.如权利要求13所述的方法,还包括:
在生成所述第一数字签名之后,使用所述集成电路来从所述加密储存数据恢复所述储存数据。
15.如权利要求12所述的方法,其中,打乱所述储存数据还包括:
对所述储存数据的第一副本的每一个块实施单向散列函数。
16.如权利要求12所述的方法,其中,打乱所述储存数据还包括对所述储存数据实施单向散列函数。
17.一种生成数字签名的集成电路,所述集成电路包括:
处理电路;
存储器电路,其中,储存数据和随机化数据储存在所述存储器电路上,并且其中,所述随机化数据占据所述存储器电路的未被所述储存数据占据的未初始化存储器地址;以及
密码电路,其对所述储存数据与所述随机化数据的级联执行密码函数,以生成所述数字签名。
18.如权利要求17所述的集成电路,其中,所述处理电路、所述存储器电路、以及所述加密电路形成于可编程逻辑装置中。
19.一种使用计算设备对储存数据进行认证的方法,所述方法包括:
使用所述计算设备上的计算机实现的随机化数据生成应用,来向集成电路上的存储器电路发送随机化数据的第一副本,其中,所述随机化数据的所述第一副本占据所述存储器电路的未由所述储存数据占据的每一个地址;
使用所述计算设备上的计算机实现的认证应用来从所述集成电路接收所述储存数据与所述随机化数据的所述第一副本的第一级联;
使用所述计算机实现的认证应用来生成所述储存数据的干净副本与所述随机化数据的第二副本的第二级联,其中,所述干净副本由所述集成电路的制造者提供;以及
使用所述计算设备上的计算机实现的比较应用来确定所述第一级联与所述第二级联是否匹配。
20.如权利要求19所述的方法,还包括:
响应于确定了所述第一级联与所述第二级联匹配,配置所述集成电路以实现由所述储存数据规定的逻辑设计;以及
响应于确定了所述第一级联与所述第二级联不匹配,使用所述计算设备上的计算机实现的报告应用将所述第二集成电路报告为有缺陷的。
21.一种集成电路,包括:
用于对所述集成电路上储存的储存数据进行认证的构件;
用于向所述集成电路上的存储器电路发送随机化数据的第一副本的构件,其中所述随机化数据的所述第一副本占据所述存储器电路的未由所述储存数据占据的每一个地址;
用于通过对所述储存数据与所述随机化数据的所述第一副本的级联实施密码操作,来生成第一数字签名的构件;
用于通过对所述储存数据的干净副本与所述随机化数据的第二副本的级联实施所述密码操作,来生成第二数字签名的构件;以及
用于确定所述第一数字签名与所述第二数字签名是否匹配的构件。
22.如权利要求21所述的集成电路,其中,由所述集成电路的制造者提供所述储存数据的所述干净副本。
23.如权利要求21所述的集成电路,还包括:
用于响应于确定了所述第一数字签名与所述第二数字签名匹配,根据所述储存数据来配置所述集成电路的构件;以及
用于响应于确定了所述第一数字签名与所述第二数字签名不匹配,将所述第二集成电路报告为有缺陷的构件。
24.如权利要求21所述的集成电路,其中,所述第一数字签名和所述第二数字签名分别包括第一散列消息认证代码(HMAC)和第二散列消息认证代码。
25.如权利要求24所述的集成电路,其中,用于对所述储存数据与所述随机化数据的所述第一副本的所述级联实施所述密码操作的所述构件包括:
用于在所述密码电路处从所述计算设备接收HMAC密钥的构件;以及
用于使用所述HMAC密钥以及所述储存数据与所述随机化数据的所述第一副本的所述级联来执行HMAC函数的构件,其中,对所述储存数据的所述干净副本与所述随机化数据的所述第二副本的所述级联实施所述密码操作的所述构件包括:
用于使用所述HMAC密钥以及所述储存数据的所述干净副本与所述随机化数据的所述第二副本的所述级联来执行所述HMAC函数的构件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/246,405 US10114941B2 (en) | 2016-08-24 | 2016-08-24 | Systems and methods for authenticating firmware stored on an integrated circuit |
US15/246,405 | 2016-08-24 | ||
PCT/US2017/043084 WO2018038829A1 (en) | 2016-08-24 | 2017-07-20 | Systems and methods for authenticating firmware stored on an integrated circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643360A true CN109643360A (zh) | 2019-04-16 |
CN109643360B CN109643360B (zh) | 2023-06-23 |
Family
ID=61240501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780045667.5A Active CN109643360B (zh) | 2016-08-24 | 2017-07-20 | 用于储存于集成电路上的认证固件的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10114941B2 (zh) |
CN (1) | CN109643360B (zh) |
WO (1) | WO2018038829A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111669865A (zh) * | 2020-07-03 | 2020-09-15 | 深圳爱克莱特科技股份有限公司 | 一种led智能控制系统硬件加密方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190305927A1 (en) * | 2016-03-18 | 2019-10-03 | University Of Florida Research Foundation Incorporated | Bitstream security based on node locking |
US10216963B2 (en) * | 2016-12-12 | 2019-02-26 | Anaglobe Technology, Inc. | Method to protect an IC layout |
EP3373178A1 (en) * | 2017-03-08 | 2018-09-12 | Secure-IC SAS | Comparison of execution context data signatures with references |
US10963001B1 (en) * | 2017-04-18 | 2021-03-30 | Amazon Technologies, Inc. | Client configurable hardware logic and corresponding hardware clock metadata |
US11176264B2 (en) | 2019-08-20 | 2021-11-16 | Bank Of America Corporation | Data access control using data block level decryption |
US11741248B2 (en) | 2019-08-20 | 2023-08-29 | Bank Of America Corporation | Data access control using data block level encryption |
US11587890B2 (en) | 2020-07-20 | 2023-02-21 | International Business Machines Corporation | Tamper-resistant circuit, back-end of the line memory and physical unclonable function for supply chain protection |
US11748524B2 (en) | 2020-07-20 | 2023-09-05 | International Business Machines Corporation | Tamper resistant obfuscation circuit |
CN117235740B (zh) * | 2023-11-10 | 2024-03-22 | 万帮数字能源股份有限公司 | 固件的启动方法、启动装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019796A1 (en) * | 2002-07-26 | 2004-01-29 | Hung-Jung Wang | System and method for firmware authentication |
US20040049687A1 (en) * | 1999-09-20 | 2004-03-11 | Orsini Rick L. | Secure data parser method and system |
US6742117B1 (en) * | 1997-01-30 | 2004-05-25 | Rohm Co., Ltd. | IC card and method of using IC card |
US20080301457A1 (en) * | 2007-05-30 | 2008-12-04 | Hitachi, Ltd. | Authentication system and apparatus |
US20140047241A1 (en) * | 2011-04-28 | 2014-02-13 | Kabushiki Kaisha Toshiba | Data recording device, host device and method of processing data recording device |
US8687800B2 (en) * | 2006-08-15 | 2014-04-01 | Alcatel Lucent | Encryption method for message authentication |
US20140365779A1 (en) * | 2011-12-28 | 2014-12-11 | Certicom Corp. | Generating digital signatures |
US20150350171A1 (en) * | 2014-06-02 | 2015-12-03 | Qualcomm Incorporated | Semi-deterministic digital signature generation |
US20160080146A1 (en) * | 2014-09-12 | 2016-03-17 | Tata Consultancy Services Limited | Methods and systems for randomized message generation for cryptographic hash functions |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050210179A1 (en) * | 2002-12-02 | 2005-09-22 | Walmsley Simon R | Integrated circuit having random clock or random delay |
AU2004290281A1 (en) | 2003-05-23 | 2005-05-26 | Washington University | Intelligent data storage and processing using FPGA devices |
US8566791B2 (en) | 2005-05-05 | 2013-10-22 | Blackberry Limited | Retrofitting authentication onto firmware |
FR2885709A1 (fr) * | 2005-05-10 | 2006-11-17 | St Microelectronics Sa | Controle d'integrite d'une memoire externe a un processeur |
US8265272B2 (en) | 2007-08-29 | 2012-09-11 | Red Hat, Inc. | Method and an apparatus to generate pseudo random bits for a cryptographic key |
US8843762B2 (en) | 2009-09-04 | 2014-09-23 | Gradiant, Centro Tecnolóxico de Telecomunicacións de Galicia | Cryptographic system for performing secure iterative computations and signal processing directly on encrypted data in untrusted environments |
US9672347B2 (en) * | 2014-12-11 | 2017-06-06 | Sap Se | Integrity for security audit logs |
-
2016
- 2016-08-24 US US15/246,405 patent/US10114941B2/en active Active
-
2017
- 2017-07-20 CN CN201780045667.5A patent/CN109643360B/zh active Active
- 2017-07-20 WO PCT/US2017/043084 patent/WO2018038829A1/en active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742117B1 (en) * | 1997-01-30 | 2004-05-25 | Rohm Co., Ltd. | IC card and method of using IC card |
US20040049687A1 (en) * | 1999-09-20 | 2004-03-11 | Orsini Rick L. | Secure data parser method and system |
US20040019796A1 (en) * | 2002-07-26 | 2004-01-29 | Hung-Jung Wang | System and method for firmware authentication |
US8687800B2 (en) * | 2006-08-15 | 2014-04-01 | Alcatel Lucent | Encryption method for message authentication |
US20080301457A1 (en) * | 2007-05-30 | 2008-12-04 | Hitachi, Ltd. | Authentication system and apparatus |
US20140047241A1 (en) * | 2011-04-28 | 2014-02-13 | Kabushiki Kaisha Toshiba | Data recording device, host device and method of processing data recording device |
US20140365779A1 (en) * | 2011-12-28 | 2014-12-11 | Certicom Corp. | Generating digital signatures |
US20150350171A1 (en) * | 2014-06-02 | 2015-12-03 | Qualcomm Incorporated | Semi-deterministic digital signature generation |
US20160080146A1 (en) * | 2014-09-12 | 2016-03-17 | Tata Consultancy Services Limited | Methods and systems for randomized message generation for cryptographic hash functions |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111669865A (zh) * | 2020-07-03 | 2020-09-15 | 深圳爱克莱特科技股份有限公司 | 一种led智能控制系统硬件加密方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018038829A1 (en) | 2018-03-01 |
CN109643360B (zh) | 2023-06-23 |
US10114941B2 (en) | 2018-10-30 |
US20180060561A1 (en) | 2018-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643360A (zh) | 用于储存于集成电路上的认证固件的系统和方法 | |
Lazar et al. | Why does cryptographic software fail? A case study and open problems | |
Li et al. | A survey of hardware Trojan threat and defense | |
US10395012B2 (en) | Media client device authentication using hardware root of trust | |
US10496811B2 (en) | Counterfeit prevention | |
CN106778205A (zh) | 运用物理不可克隆函数的无数据库验证 | |
US11243744B2 (en) | Method for performing a trustworthiness test on a random number generator | |
Engels et al. | The end of logic locking? a critical view on the security of logic locking | |
US10282312B2 (en) | Integrated circuit, method for protecting an integrated circuit and computer program product | |
CN109933481A (zh) | 一种jtag接口的解锁系统及jtag解锁控制方法 | |
Ahmed et al. | Malicious routing: Circumventing bitstream-level verification for FPGAs | |
Sami et al. | Poca: First power-on chip authentication in untrusted foundry and assembly | |
US20230342501A1 (en) | Secure Provisioning with Hardware Verification | |
Rajendran et al. | Logic encryption | |
JP2016091134A (ja) | 半導体装置、及び半導体装置の信頼性テスト方法 | |
Peeters | SoC security architecture: Current practices and emerging needs | |
Koeberl et al. | A practical device authentication scheme using SRAM PUFs | |
Kumar et al. | A novel holistic security framework for in-field firmware updates | |
EP4264873A1 (en) | Privacy-enhanced computation via sequestered encryption | |
Roy et al. | Device-specific security challenges and solution in IoT edge computing: a review | |
De Cnudde | Cryptography Secured against Side-Channel Attacks | |
Ganji et al. | Blockchain-enabled cryptographically-secure hardware obfuscation | |
Cirne et al. | Hardware security for Internet of Things identity assurance | |
Chen et al. | SoC security and debug | |
US20220116206A1 (en) | Systems and methods for device authentication in supply chain |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |