安全器件状态设备和方法以及生命周期管理与流程

文档序号:14912911发布日期:2018-07-10 23:54

本文所描述的主题总体上涉及半导体芯片制造领域,并且包括整个半导体芯片生命周期中的安全措施以及用于安全引导流程。



背景技术:

在半导体芯片制造中,半导体芯片可以共同形成为晶片,并且,作为晶片的部分,而被测试。然后,可以将晶片切片成单独的芯片/器件,其中,单独的芯片/器件在被并入产品之前,对它们进行进一步的测试,然后才供应。在一些实例中,在制造期间或者之后为替代应用重新供应芯片器件可能是有用的。

一次可编程非易失性存储技术已经广泛用于半导体芯片制造。这种一次可编程非易失性存储技术的示例包括熔丝,诸如,电熔丝、反熔丝或者激光熔丝。这种熔丝可以用于在制造半导体芯片之后改变这些半导体芯片的配置并且调整性能。熔丝也可以用于芯片ID存储和密码密钥存储。

电熔丝技术包括一次可编程非易失性存储技术,其中,仅仅可以将(多个)电熔丝比特设置为1一次,而未被编程的(多个)比特可以具有零值。可用的电熔丝技术使用电可编程PMOS栅氧化层反熔丝,其中,读取操作仅仅需要核心IC电源,而可以通过使用外部电源来执行编程。

电熔丝可以设置为独立的熔丝宏,其中,每个宏可以具有一定的容量,例如,在以64比特增量的从64比特至1千比特的范围内。



技术实现要素:

为了提供对本公开的一些方面的基本理解,本发明内容介绍了对简化形式的概念的选择。本发明内容并非本公开的广泛概述,并且既不旨在识别本公开的关键或者重要元素,也不旨在描绘本公开的范围。本发明内容仅仅呈现了本公开的概念中的一些概念作为以下提供的具体实施方式的前言。

本公开总体上涉及半导体芯片器件。更具体地,本公开的各个方面涉及在整个半导体芯片器件的生命周期中对其进行保护并且保护引导流程操作。

一个方面包括一种保护具有多个器件状态熔丝的半导体芯片器件的方法,该方法包括:将存储在器件状态熔丝中的原始器件比特模式改变为测试模式启用比特模式,以将器件状态从原始器件状态改变为测试模式启用器件状态,其中测试模式启用器件状态允许对半导体芯片器件执行制造测试;响应于半导体芯片器件通过制造测试,将测试模式启用比特模式改变为测试模式锁定比特模式,以将器件状态从测试模式启用器件状态改变为测试模式锁定器件状态;以及基于器件状态的改变来更改半导体芯片器件的安全级别。

附加的方面涉及一种方法,该方法包括:响应于将器件状态从原始器件状态改变为测试模式启用器件状态,将不可从芯片外部访问测试模式和端口的原始器件状态安全级别更改为可以经由端口中的一个或者多个端口进行半导体芯片器件上的制造测试的测试模式启用安全级别。

进一步的方面包括一种方法,该方法包括:响应于将器件状态从测试模式启用器件状态改变为测试模式锁定器件状态,将可从芯片外部访问测试模式和端口的测试模式启用安全级别更改为半导体芯片器件上的制造测试被锁定的测试模式锁定安全级别。

还进一步的方面包括一种方法,该方法包括:响应于半导体芯片器件没有通过制造测试,将测试模式启用比特模式改变为测试模式禁用比特模式,以将器件状态从测试模式启用器件状态改变为测试模式禁用器件状态;以及响应于将器件状态从测试模式启用器件状态改变为测试模式禁用器件状态,更改安全级别将可从芯片外部访问测试模式和端口的测试模式启用安全级别更改为半导体芯片器件上的制造测试和端口被禁用的测试模式禁用安全级别。

又进一步的方面包括一种方法,该方法包括:响应于将器件状态熔丝改变为与对应于已知模式的已知比特模式不匹配的比特模式,将器件状态熔丝中的比特模式修改为禁用模式比特模式,并且将安全级别更改为半导体芯片器件中的所有端口和存储器被禁用的禁用安全级别。

在还进一步的方面中,半导体芯片器件进一步包括引导加载器进程,该方法进一步包括:响应于引导加载器进程验证了芯片器件连同解锁请求接收到了正确的解锁密码,更改安全级别通过允许将器件状态熔丝的值改变为测试模式启用模式来解锁芯片器件。

附加方面包括一种半导体芯片器件,其包括:器件状态熔丝,该器件状态熔丝存储指示半导体芯片器件的器件状态的比特模式;处理器,该处理器可操作地连接至器件状态熔丝;存储装置,该存储装置存储有指令,该指令在由处理器执行时使处理器:将存储在器件状态熔丝中的原始器件比特模式改变为测试模式启用比特模式,以将器件状态从原始器件状态改变为测试模式启用器件状态,其中测试模式启用器件状态允许对半导体芯片器件执行制造测试;响应于半导体芯片器件通过制造测试,将测试模式启用比特模式改变为测试模式锁定比特模式,以将器件状态从测试模式启用器件状态改变为测试模式锁定器件状态;以及基于器件状态的变化来更改半导体芯片器件的安全级别。

其它方面包括一种半导体芯片器件,其进一步包括:一个或者多个端口;所述存储装置存储有进一步的指令,该进一步的指令在由处理器执行时使处理器:响应于将器件状态从原始器件状态改变为测试模式启用器件状态,将不可从芯片外部访问测试模式和端口的原始器件状态安全级别更改为可以经由所述端口中的一个或者多个端口进行半导体芯片器件上的制造测试的测试模式启用安全级别。

另外的方面包括一种半导体芯片器件,其进一步包括:一个或者多个端口;所述存储装置存储有进一步的指令,该进一步的指令在由处理器执行时使处理器:响应于将器件状态从测试模式启用器件状态改变为测试模式锁定器件状态,将可从半导体芯片器件外部访问测试模式和端口的测试模式启用安全级别更改为半导体芯片器件上的制造测试被锁定的测试模式锁定安全级别。

又进一步的方面包括一种半导体芯片器件,其进一步包括:一个或者多个端口;所述存储装置存储有进一步的指令,该进一步的指令在由处理器执行时使处理器:响应于半导体芯片器件没有通过制造测试,将测试模式启用比特模式改变为测试模式禁用比特模式,以将器件状态从测试模式启用器件状态改变为测试模式禁用器件状态;以及响应于将器件状态从测试模式启用器件状态改变为测试模式禁用器件状态,更改安全级别将可从半导体芯片器件外部访问测试模式和端口的测试模式启用安全级别更改为半导体芯片器件上的制造测试和端口被禁用的测试模式禁用安全级别。

还进一步的方面包括一种半导体芯片装置,存储装置存储有进一步的指令,该进一步的指令在由处理器执行时使处理器:响应于将器件状态熔丝改变为与对应于已知模式的已知比特模式不匹配的比特模式,将器件状态熔丝中的比特模式修改为禁用模式比特模式,并且所述的更改安全级别将安全级别更改为半导体芯片器件中的所有端口和存储器被禁用的禁用安全级别。

还进一步的方面包括一种半导体芯片器件,该半导体芯片器件进一步包括:所述存储装置存储有引导加载器进程;所述存储装置存储有进一步的指令,该进一步的指令在由处理器执行时使处理器:响应于引导加载器进程验证了芯片器件连同解锁请求接收到了正确的解锁密码,更改安全级别通过允许将器件状态熔丝的值改变为测试模式禁用模式来解锁芯片器件。

附加方面包括一种供应半导体芯片器件的方法,其包括:响应于包括被写入半导体芯片器件的非易失性存储器中的引导处理代码的有效载荷,验证引导处理代码的真实性;创建初始化密钥;禁用对初始化密钥的外部访问并且导出初始化密钥的证书,外部访问是经由输入端口对半导体芯片器件的存储器的访问;通过使用公钥对初始化密钥加密;导出加密后的初始化密钥;通过对半导体芯片器件的熔丝进行编程来配置半导体芯片器件;通过使用初始化密钥来取得供应密钥;通过使用供应密钥来证明身份和解密供应数据;以及验证供应数据是有效的。

在进一步的方面中,非易失性存储器是闪存。

在又进一步的方面中,其中,将对初始化密钥进行加密中使用的公钥保持在引导处理代码中。

在还进一步的方面中,供应数据包括应用专用闪存固件,该方法进一步包括:引导处理代码允许将闪存固件存储在闪存中。

在甚至进一步的方面中,引导处理代码是引导加载器。

附加方面包括一种半导体芯片器件,其包括:熔丝;非易失性存储器;输入端口;处理器;存储装置,该存储装置存储有指令,该指令在由处理器执行时使处理器:响应于包括引导处理代码的有效载荷被写入非易失性存储器中,验证引导处理代码的真实性;创建初始化密钥;禁用对初始化密钥的外部访问并且导出初始化密钥的证书,外部访问是经由输入端口对半导体芯片器件的所述非易失性存储器的访问;通过使用公钥对初始化密钥加密;导出加密后的初始化密钥;通过对熔丝进行编程来配置半导体芯片器件;通过使用初始化密钥来取得供应密钥;通过使用供应密钥来证明身份和解密供应数据;以及验证供应数据是有效的。

进一步的方面包括一种半导体芯片器件,其中,非易失性存储器是闪存。

还进一步的方面包括一种半导体芯片器件,其中,将对初始化密钥进行加密中使用的公钥保持在引导处理代码中。

还进一步的方面包括一种半导体芯片器件,其中,供应数据包括应用专用闪存固件,该方法进一步包括:引导处理代码允许将闪存固件存储在闪存中。

甚至进一步的方面包括一种半导体芯片器件,其中,引导处理代码是引导加载器。

应该注意,本文所公开的处理器和存储系统中的一些或者全部的实施例也可以配置为执行上面所公开的方法实施例中的一些或者全部。另外,上面所公开的方法中的一些或者全部的实施例也可以表示为包含在诸如光学或者磁性存储器的非暂时性处理器可读存储介质上体现的指令。

本公开的方法和系统的应用性的进一步范围通过下面给出的具体实施方式将变得显而易见。然而,应该理解,具体实施方式和具体示例在指示方法和系统的实施例时仅仅以举例的方式被给出,因为对本领域的技术人员而言,在本文所公开的概念的精神和范围内的各种变化和修改通过本具体实施方式将变得显而易见。

附图说明

结合随附权利要求书和附图,通过对以下具体实施方式的研究,对于本领域的技术人员而言,本公开的这些和其它目标、特征和特性将变得显而易见。在附图中:

图1是根据本发明的各个方面的示例芯片的框图;

图2是根据本发明的各个方面的示例器件状态解码器的框图;

图3是根据本发明的各个方面的晶片测试层系统的示意图;

图4是根据本发明的各个方面的芯片生命周期的流程图;

图5是根据本发明的各个方面的芯片器件状态管理的流程图;

图6A和图6B是根据本发明的各个方面的晶片的芯片生命周期的流程图;

图7是根据本发明的各个方面的封装测试层系统的示意图;

图8A、图8B和图8C是根据本发明的各个方面的个性化和供应的芯片生命周期的流程图;

图9是根据本发明的各个方面的示例一次可编程存储器控制器的框图;以及

图10是图示了实施根据本文所描述的一个或者多个实施例的各个方面的示例计算装置的框图。

附图仅仅出于说明的目的来描绘所公开的发明的实施例。本领域的技术人员通过以下讨论将认识到可以在不脱离本文所描述的发明的原则的情况下采用本文所描述的结构和方法的替代实施例。

具体实施方式

以下描述参考附图。相同的参考数字在不同的附图中可以识别相同的或者相似的元件。以下描述并不旨在限制范围。相反,范围由所附的权利要求书限定。

半导体芯片——本文也称为芯片——器件,无论作为最终产品的部分,还是在芯片器件本身的制造期间,都易于受到各种形式的攻击。可以对产品中的芯片器件进行攻击以确定芯片器件的内部配置和功能。诸如熔丝的一次可编程存储技术容易受到包括物理篡改的攻击,诸如,物理切割指示‘0’的电线,导致其变成打开的‘1’,或者通过沉积金属来重建熔丝以将打开的‘1’转换为‘0’。

熔丝感测需要对熔丝状态进行电查询。这种熔丝感测仅仅可以执行一定次数并且具有通过电熔丝的制造而限定的生命周期感测限制。为了避免太多的熔丝感测,可以创建熔丝的“阴影副本”。恰在重置之后,熔丝控制器可以感测熔丝值并且将结果写入变成“阴影副本”的寄存器中。未来对状态的查询仅仅可以读取阴影寄存器的值,而不是电感测到熔丝。如果攻击者想要修改熔丝值,则攻击者可以攻击物理电熔丝本身或者阴影寄存器。然而,如果熔丝攻击发生在重置感测之后,通过确认熔丝和阴影副本是相同的值,则攻击者需要攻击熔丝和阴影副本这两者。

在制造测试期间,可以访问和利用芯片器件的安全敏感测试模式,从而可以提取秘密信息。在芯片制造期间可以进行攻击,以更改芯片器件的配置或者操作,以便实现非预期的用途。即使它们是可部分操作的,未能通过制造测试的芯片器件也可能被抛弃,因此使被抛弃的器件容易受到攻击和利用。在安全芯片器件的情况下,这种攻击可以实现秘密信息的提取。同样,在制造期间执行的测试进程可能会泄漏信息,诸如,关于内部操作的信息,并且这种泄漏的信息可能会危害配置和供应进程。在供应进程期间提供的供应有效载荷可能存在被更改的风险。同样,在器件供应进程期间可能会泄漏的信息可以包括创建器件唯一标识符和秘密的进程。

本发明的各个方面提供了对这些问题和其它问题的解决方案。

芯片器件的生命周期可以包括对包括在物理半导体晶片中的芯片器件的制造测试、将晶片切片成单独的芯片器件、测试切片的芯片器件、供应、和重新供应。

本发明的各个方面包括在器件生命周期或者器件生命周期的部分中对物理半导体晶片和单独的芯片器件的安全措施。本发明的各个方面包括在器件生命周期的至少部分中执行的安全引导流程。安全引导流程可以包括:结合某些测试和供应操作,通过引导固件进行控制。

本发明的一个方面是对每个安全芯片的入侵检测,该入侵检测归因于在每个安全芯片通过测试阶段、切片成单独的芯片、进一步的测试、大量生产、供应和重新供应生命周期阶段从晶片上的空白的、未经测试的和非可信的部分移动时在其生命周期中的篡改。

本发明的一个方面是安全芯片器件,其中,在芯片器件的生命周期中检测归因于一次可编程存储器的篡改的入侵。响应于检测到这种篡改,可以使芯片器件永久禁用对芯片器件的内部功能的访问和执行。通用术语“熔丝”可与一次可编程存储器技术交替使用。

在图1中示出了示例半导体芯片器件100。该半导体芯片器件或者芯片器件100包括多个访问端口。该访问端口可以包括调试端口101,该调试端口101中的一个可以是提供至熔丝123的路径的串行线调试(SWD)端口。也可以包括其它端口以提供针对测试的访问,诸如,闪存测试端口145和扫描测试端口147。闪存测试端口145具有关联的闪存测试控件141。扫描测试端口147具有关联的TAP/扫描控件143。

芯片器件100可以是SPI从属器件,其中,可以通过使用SPI个人识别码、具有相应的SPI从属控件135和SPI主控件137的SPI IN 149和SPI OUT 151来传输命令和数据。

在示例实施例中,可能存在充当比特存储器件的熔丝123。作为非限制性示例,熔丝123可以是27比特存储装置,但是要理解,比特的数量可以根据应用的不同而改变。

在示例实施例中,熔丝123可以被实施为一组冗余的熔丝阴影寄存器和熔丝宏(参见图9,稍后将描述)。更进一步地,熔丝可以被实施为一组熔丝宏。

在示例实施例中,熔丝123可以包括密钥熔丝125、器件状态熔丝127和器件ID熔丝129。

密钥熔丝125可以用于存储密钥和其它秘密。例如,密钥熔丝125可以存储作为密钥或者用于取得密钥的秘密数据。具体示例是器件初始化密钥(DIK),该DIK可以充当器件100与密钥管理服务器307之间的根共享秘密。

器件状态熔丝127存储和限定器件状态。更具体地,器件状态熔丝127可以包括一组或者一堆熔丝,其中,每组/每堆熔丝限定在对器件进行制造测试时的递增状态。

器件ID熔丝129存储半导体器件100的唯一器件ID。

熔丝123可以具有关联的熔丝控制器和器件状态解码器121。在示例实施例中,可以通过使用器件状态解码器121,根据存储在器件状态熔丝127中的比特模式来取得器件状态。可以直接或者经由熔丝阴影寄存器来完成读取器件状态熔丝127(如图9所示)。此外,也可以在器件状态熔丝127值与阴影熔丝寄存器值之间执行比较操作以确保熔丝127和/或寄存器尚未被攻击或者篡改。这种比较操作也可以在读取密钥熔丝125和/或器件ID熔丝129时执行。

图2是器件状态解码器121的框图。器件状态解码器121可以包括逻辑功能电路203,该逻辑功能电路203基于任意功能将作为输入的来自器件状态熔丝127的比特模式映射到作为输出的多个器件状态中的一个器件状态。在示例实施例中,器件状态解码器121可以包括逻辑功能电路,该逻辑功能电路将比特存储装置的作为输入201的27比特模式映射到作为输出205的五种器件状态中的一种器件状态。在示例实施例中,第五种状态可以是因为未能达到其它四种状态中的任何一种状态而达到的禁用状态207。

在示例实施例中,五个器件状态解码器输出端口205中的每一个分别可以被冗余编码为3比特。在该示例实施例中,通过器件状态解码器121来处理27个原始器件熔丝比特,并且在将结果传递到系统之前,使用该结果将器件状态设置为3种物理状态中的一种物理状态。可能存在硬件解码器,该硬件解码器读取27个比特并且将信号(电线)发送至需要器件状态的值的任何人。可以通过共享结果的简单信号传输来传输当前状态。

芯片器件100可以包括嵌入式处理器103和存储器105组件,该存储器105组件包括:诸如ROM 107和闪存111的非易失性存储器以及诸如SRAM 109的小型片上RAM。在芯片器件100生命周期的过程中,可以将包括引导ROM 161的有效载荷写入ROM 107中,并且可以将引导加载器163写入闪存111中。

芯片器件100可以包括安全处理功能。可以使用安全协处理器131来处理安全算法,诸如,安全哈希算法。示例安全哈希算法包括SHA算法家族。同样,可以包括随机数发生器,诸如随机数发生器(TRNG)133,以提供随机值。

在晶片生产之后,对晶片上的芯片器件进行测试并且可以进行个性化处理。如稍后将讨论的,个性化处理包括将器件唯一ID和密钥插入器件ID熔丝129和密钥熔丝129中。

图3图示了晶片的示例测试层系统。测试器303具有对每个芯片器件100(图1)的测试端口的访问权并且可以提供执行测试所需的功率和命令。为了个性化芯片器件100(图3中未示出,但是设想晶片301将包括多个芯片器件100),密钥管理服务器(KMS 307)可以通过制造层(位于测试器303与互联网连接之间)上的硬件安全模块(HSM305)将数据发送至晶片301上的芯片器件100和从晶片301上的芯片器件100接收数据。HSM 305可能不会被直接作为器件唯一密钥的保密性的依据。而是,可以使用HSM 305来缓冲有效载荷以用KMS 307处理临时的连接性问题,并且监控和收集关于在个性化处理期间执行的操作的统计信息。

可以利用用于控制芯片器件的机构来补充测试和个性化处理以应对在器件的生命周期中的各种攻击的可能性。本发明的一个方面包括芯片器件的生命周期,该生命周期可以分解成多个阶段,每个阶段可以具有多种状态。在一个实施例中,产品生命周期可以分解成各个阶段和多种状态。取决于制造的芯片器件是晶片的部分还是单独的封装体的形式,阶段可以包括晶片阶段和封装阶段。

图4是图示了芯片生命周期的示例状态的高级示意图。稍后将描述用于在这种状态之间进行转换的机构。图4按照相继次序示出了状态。然而,可以改变对进入晶片阶段和封装阶段的状态的选择。

图4示出了状态的示例,该状态可以包括:原始器件401状态、测试模式启用器件403状态、测试模式锁定器件405状态、测试模式禁用器件407状态、个性化器件209状态、配置器件411状态、和供应器件413状态。如稍后将更详细地讨论的,前三种状态可以是器件的硬物理状态,并且可以由熔丝限定。在示例实施例中,可以基于存储在器件状态寄存器127中的熔丝值来限定器件的物理状态。如下面将进一步阐释的,存在与器件状态相关联的(多个)安全级别,包括:原始器件状态安全级别、测试模式启用器件状态安全级别、测试模式锁定器件状态安全级别、测试模式禁用器件状态安全级别、个性化器件状态安全级别、配置器件状态安全级别、和供应器件状态安全级别。如下面还将阐释的,器件状态的变化可以触发安全级别的变化。

芯片器件可以具有各种程度的锁定/安全级别。“锁定”或者“安全级别”可以指所采取的影响芯片访问的行动。例如,在禁用所有访问端口时,认为芯片器件被锁定。在一些实施例中,也可以禁用存储器。在最低限度允许访问实现递增至下一种状态的一条路径时,认为芯片器件主要被锁定。锁定的芯片器件的其它程度可以包括:将对端口的访问限制为比原始器件401状态更大的程度。

在初始状态——原始器件401状态下,每个芯片100具有原始器件安全级别,在该原始器件安全级别下,几乎锁定芯片,从而不可从芯片100外部访问调试端口101、扫描测试端口147和闪存测试端口145。为了实施原始器件安全级别,可以通过抑制外界与芯片100的内部逻辑之间的数据路径来实现端口阻塞。

首先,可以将原始器件401状态融合到下一种状态,例如测试模式启用器件403状态,以开始制造测试进程。在示例实施例中,原始器件401状态可以是所有器件状态熔丝127都处于其未经编程的默认状态(原始器件比特模式)的状态,诸如,例如,所有均设置为零。认为芯片是通过烧断、设置或者改变器件状态熔丝127中的特定熔丝而融合到下一种状态中的。在一次可编程存储器的情况下,烧断熔丝可以采取将熔丝编程为第二熔丝状态的形式,诸如在所有熔丝都为0的示例中将熔丝状态从0改变为1。在示例实施例中,主要锁定原始器件401中的芯片器件(原始器件状态安全级别),从而可以通过串行线调试端口101来发送命令。该命令可以使得将测试模式启用比特模式写入熔丝中以递增至测试模式启用器件403状态。

响应于器件状态的变化,将安全级别从原始器件状态安全级别对应地改变为测试模式启用安全级别。在测试模式启用安全级别下:所有端口(调试端口101、闪存测试端口145、和扫描测试端口147)都是打开的。当器件状态解码器121确定器件状态处于测试模式启用器件状态时,可以通过启用端口的数据路径来实现端口打开。

在测试模式启用器件403状态下,可以将器件唯一标识符融合到器件ID熔丝129中,可以运行制造测试,并且可以标记出故障的器件以便进行销毁。可以通过物理标记蚀刻或者通过其它物理手段来标记出故障的器件以便进行销毁。

当成功完成制造测试进程时,器件100从测试模式启用器件403状态转换为测试模式锁定器件405状态(成功的密码输入)或者测试模式禁用器件407状态(不成功的密码输入)。

从测试模式锁定器件405状态转换为测试模式启用器件状态可能需要密码。这是一个临时的改变,并且片上重置将芯片改变回融合值。芯片无法从测试模式禁用测试状态转换为测试模式启用器件状态。仅仅可以对芯片进行一次个性化设置。如果使用密码回到临时的测试模式启用状态,则芯片仍然被视为进行了个性化设置。

状态转换和安全级别的设置由在芯片100上运行的固件104控制,并且可以利用结合图4、图5、图6A和图6B而描述的方法。安全引导流程由在芯片100上运行的固件104控制,并且可以利用结合图8A、图8B和图8C而描述的方法。固件可以是图1所示的嵌入式处理器104的部分。图10提供了下面将进一步阐释的硬件实施方式的进一步的细节。

至个性化器件状态409的转换保护芯片器件100以确保在个性化器件不可通过禁用端口(调试端口101、闪存测试端口145和扫描测试端口147)来访问专用数据,这与处于测试模式锁定405或者测试模式禁用407器件状态时所采取的安全措施相似。

个性化器件状态409可以基于创建秘密器件初始化密钥(DIK)、将DIK导出至密钥管理服务器(KMS)、以及将DIK存储在诸如密钥熔丝125的片上非易失性存储器中。以这种方式,该状态以器件100内的DIK资产为特征。可以使装置100重新个性化,即,可以将器件100转换为个性化器件状态409,转换次数与器件内的物理DIK的数量相同(例如,可以将该次数设置为3+测试DIK)。

与其它状态转换一样,在处理器103上运行的固件104控制从个性化器件状态409到配置器件状态411的转换。固件104也对闪存111和熔丝123、125、127中的值进行编程以使装置100个性化。一旦这种值由固件104编程,就认为配置了器件100(配置的器件状态411)。

第五种状态——配置的器件411状态是器件已经具有任何应用或者产品专用熔丝的状态,若需要,将专用熔丝烧断以获得应用或者产品的配置。

第六种状态——供应器件413是虚拟状态,并且由存储在器件的片上闪存内的固件104、密钥、和证书限定。以这种方式,可以通过擦除固件和重新开始供应进程而在任何时间重新供应器件。稍后将针对附图讨论与个性化器件状态409的递增和供应器件状态413的递增相关联的进程。

<物理器件状态安全>

本发明的一个方面是在芯片器件在物理器件安全状态之间递增时对熔丝进行控制。本发明的一个方面是增强熔丝安全。在芯片器件的整个生命周期中,攻击者可能会尝试恢复熔丝或者烧断熔丝。本发明的一个方面在于,每个芯片器件可以包含用于管理器件状态的单独的一堆熔丝(例如,堆0或者器件状态熔丝127)和存储器件ID的器件ID熔丝129。在示例实施例中,熔丝中可能存在对器件的状态进行编码的27个比特,但是要理解,本文所提到的比特的个数可以根据应用的不同而改变。除了这些比特之外,堆0也可以包含3比特锁定和24比特校验和。

如图2的示例器件状态解码器中所示的,可以将27个器件状态比特201分成三个9比特组(组0、组1、组2),并且每个组可以进一步分解成三个3比特子组。3比特子组可以分散到包含器件的熔丝的物理熔丝宏中。以这种方式,如果尝试攻击一组临界安全熔丝,则该攻击也可能会干扰到27个器件状态熔丝中的一些。本发明的一个方面在于,器件状态仅能通过递增至下一种状态向前移动,如图4所示,其中,下一个9比特组中的全部的3比特子组已经被编程以创建9比特模式。

同样,在芯片器件的生命周期中,攻击者可能会尝试熔丝感测攻击。熔丝感测攻击是对熔丝值的感测/读取的攻击,并且可以通过迫使熔丝阴影寄存器915(图9)错误锁存熔丝数据并且保持全部为0而发生。如上面所讨论的,对熔丝存在两种类型的攻击。可以通过:(a)物理切割指示‘0’的电线,导致其变成打开的‘1’;或者(b)通过沉积金属来重建熔丝以将打开的‘1’转换为‘0’,来攻击熔丝。可替代地或者另外,可以攻击与熔丝相关联的熔丝阴影寄存器915。

为了在制造测试期间在任何状态下保护免受熔丝感测攻击,芯片器件可以默认回到原始锁定状态。在示例实施例中,如果熔丝感测攻击会在已经将芯片融合到器件状态中的一种器件状态之后成功,则熔丝阴影寄存器915会包含零,而不是熔丝数据(或者存储与存储在器件状态熔丝127中的值不匹配的比特模式)。在这种情况下,将存储在熔丝阴影寄存器915中的值与器件状态熔丝127进行比较可以触发迫使芯片器件进入默认原始器件401状态的进程。本发明的一个方面可以在于,在熔丝感测攻击的情况下,迫使芯片器件中的熔丝的状态进入作为主要是锁定状态的默认原始器件401状态。

图5是图示了在器件生命周期中基于熔丝状态在物理器件状态之间改变的流程图。图5中概述的功能可以由例如安全协处理器131(图1)或者嵌入式处理器103执行。

在S501(图5),原始器件401(图4)状态与首先制造晶片之后的芯片器件的状态有关。在该状态下,所有器件状态熔丝127(图1)均处于默认状态,诸如零。在原始器件401状态下,几乎锁定芯片器件,其中,仅仅从调试端口101(例如,串行线调试(SWD)端口)到熔丝控制器121的路径可能是可用的。

在S503(图5),在已经对芯片器件100(图1)上电之后,可以将命令发送至熔丝控制和器件状态解码器121,该命令使熔丝控制和器件状态解码器121写入正确的模式,该正确的模式将器件状态“递增”至测试模式启用器件403(图4)状态。

一旦处于测试模式启用器件403(图4)状态,测试模式端口和测试模式特征变成已启用。在示例实施例中,测试模式端口的该启用可以包括访问所有芯片器件寄存器和存储器的完整的调试端口101(图1)路径。

还可以被启用的其它端口包括闪存测试控制器端口145(图1)和扫描测试端口147。随着这三个测试模式端口的启用,在S505(图5),对芯片器件执行制造测试。该制造测试可以包括在器件的制造和初始分布期间执行的任何测试,包括:例如,运行本领域中已知的一组硬件内置自测试(HW BIST)。

在示例实施例中,在测试模式启用器件403(图4)状态下,熔丝阴影寄存器915(图9)是可重写的,并且也可以启用各种调试特征(诸如,将时钟信号发送至端口)。这使得芯片器件对各种测试和软件开发而言更为灵活。

一旦已经完成了制造测试并且芯片器件通过了所有测试模式(S507中的“是”),在S511(图5),烧断适当的器件状态熔丝127(图1),以便进行生产。在一个实施例中,利用正确的模式来写入组1器件状态熔丝127以将器件状态“递增”至测试模式锁定器件405(图4)状态。可替代地,当芯片器件未能通过测试时(S507中的“否”),例如,由制造缺陷导致未能通过测试时,可以将组1和组2熔丝编程为跳过测试模式锁定器件405状态并且在S509直接跳到测试模式禁用器件407状态的模式。可替代地,S509可以将熔丝编程为无效状态,使器件处于禁用器件状态。

本发明的一个方面在于,测试模式禁用器件407(图4)状态是功能状态,并且可以用作器件的最终状态。在该状态下,可以永久禁用(例如,通过在固件104(图1)中不提供任何支持方式以切换出测试模式禁用器件407状态)测试模式端口和特征。一旦被永久禁用,一部分就可以被锁定并且决不可能恢复到功能状态。不允许任何访问来进行调试或者主线功能。

测试模式锁定器件405(图4)状态也是功能状态,并且如果产品的安全标准允许,则可以用作器件的最终状态。在该状态下,可以通过例如密码来解锁测试模式端口和特征。该密码可以从器件唯一的器件初始化密钥(DIK)导出,并且有可能是来自TRNG 133(图1)的随机数(例如,如果利用熔丝启用了一次密码模式)。

在S513(图5),在已知状态的模式与器件状态熔丝127(图1)中的模式之间进行比较以检查器件状态熔丝127是否解码成之前的状态——原始器件401(图4)状态、测试模式启用器件403状态、测试模式锁定器件405状态、测试模式禁用器件407状态中的一种。当器件状态熔丝127没有完全解码成之前四种状态中的一种状态时(S513,否),在S515,使器件处于禁用状态(不更新熔丝127)。在示例实施例中,在S515,完全锁定和禁用(永久地“堵死”)芯片器件。

在示例实施例中,通过使用熔丝控制和器件状态解码器121(图1)来执行S513(图5)和S515。熔丝控制和器件状态解码器121将熔丝阴影寄存器915(图9)的大型比特模式(例如,27比特模式)解码成例如表示状态标识符的3比特模式。熔丝控制和器件状态解码器121可能无法将大型比特模式解码成预定义状态中的一种(S513中的“否”),可能是因为熔丝感测攻击。在这种情况下,认为大型比特模式是不正确的,在S515,这会使得将器件状态熔丝127被编程为默认解码状态,诸如,禁用器件状态。禁用器件状态与原始器件401状态的相似之处在于这两种状态都迫使芯片器件进入几乎锁定状态。禁用器件状态与原始器件状态的不同之处在于,在禁用器件状态下,也可以禁用调试端口(例如,SWD)路径。因此,完全锁定和禁用该禁用器件状态。

当器件状态熔丝127(图1)解码成之前的状态中的一种状态时(S513,是),在S517(图5)、S519和S521,如果熔丝比特指示器件当前处于测试模式锁定器件405状态,已经接收到包括密码的解锁请求(S517中的“是”)并且已经验证了密码(S521中的“是”),则可以迫使芯片器件进入测试模式启用器件403(图4)状态(S503)。

在S519(图5)中,芯片器件可以执行验证操作以验证解锁密码。在示例实施例中,从测试模式锁定器件405(图4)状态到测试模式启用器件403状态的递增可以由第二阶段软件(例如,引导加载器)控制。第一和第二阶段软件是例如软件引导代码,在引导加载器164(图1)中执行引导ROM代码之后,可以在闪存外执行该软件引导代码。

在这种情况下,希望将器件解锁以允许测试模式的第三阶段软件必须经由经过验证的签名报头解锁。在示例实施例中,引导加载器(图1)执行对第三阶段图像的有效性的验证。一旦引导加载器163验证了图像,引导加载器就可以接受请求并且将器件解锁以允许测试模式。针对测试模式解锁器件可以包括允许访问芯片器件中的存储器的附加区域。该机构允许引导加载器163保持解锁进程的保密性并且同时允许外部解锁请求的清晰接口。一旦将器件解锁成测试模式,则芯片器件将具有测试模式启用器件403(图4)状态的测试能力和行为。

如果验证解锁密码是正确的(是,S521),则S503(图5)使器件进入执行测试模式启用器件403(图4)状态。

在示例实施例中,如果将器件状态熔丝127(图1)写成器件状态解码器121不解码成已知状态的模式,则可以将芯片器件传递至原始器件401(图4)状态下的系统。

<安全引导流程>

在处于诸如图4所示的状态的各种物理或者逻辑状态以及在现场使用的同时,可以对芯片器件进行上电和引导。本发明的一个方面是芯片器件在其生命周期中使用的安全引导流程。安全引导流开始于晶片制造阶段,通过插入密钥和固件以及烧断熔丝继续,并且可以包括现场固件更新进程。

图6A、图6B是与安全引导流程有关的晶片阶段的示例实施例的流程图。如稍后将讨论的,图8A、图8B、图8C是封装阶段的示例的流程图。

如上所述,在晶片生产之后,芯片器件处于默认原始器件401(图4)状态,在该状态下,不可从外部访问测试模式。不可访问的测试模式包括使用闪存测试端口145(图1)、TAP控制扫描测试端口147、调试端口101、和可能泄露信息(诸如,TRNG 133数据读出)并且将会危害器件个性化进程(创建与密钥管理服务器共享的器件唯一标识符和秘密)的任何测试特征的测试。在S601(图6),为了开始安全敏感制造测试进程,对晶片上的芯片器件(未示出)进行上电(例如,从而可以并行测试晶片上的许多芯片器件)。

因为芯片器件最初处于原始器件状态,所以在最初对芯片器件进行上电之后,在S603(图6),烧断一组器件状态熔丝127(图1)以将器件状态递增至测试模式启用器件403(图4)。在示例实施例中,如果熔丝模式不与已知状态(诸如,测试模式启用器件403)对应,则芯片器件将递增回到默认原始器件401状态。该操作确保,如果熔丝感测进程被篡改(这可能使器件状态熔丝127全部保持为0,或者可替代地,切换为全部为1),则不能将芯片器件重新打开为任何安全敏感测试模式。

为了在处于该初始锁定状态的同时烧断这些原始器件状态熔丝(图1),至熔丝控制和器件状态解码器121的一个专用调试端口101(例如,SWD)保持打开。通过该路径,可访问器件状态熔丝127。如之前所提及的,器件状态熔丝127可以是一组熔丝比特。在示例实施例中,器件状态熔丝是被编程为使器件发挥作用的提取模式的27比特。

在已经启用了测试模式(即,将器件递增至测试模式启用403(图4)状态)之后,在S605(图6A),可以运行一组制造成品率测试。

在示例实施例中,为了开始制造成品率测试,第一,可以运行闪存成品率测试以筛选出任何闪存缺陷。第二,可以运行逻辑BIST以获得在逻辑之上——特别是在包含在个性化进程中的逻辑之上的大部分覆盖。第三,可以运行扫描模式以覆盖个性化逻辑覆盖中的任何间隙,从而可以锁定该扫描模式并且不必再次运行该扫描模式(以防止危害个性化进程的安全)。第四,可以运行存储器BIST(片上SRAM和ROM)以验证存储器是可发挥作用的。第五,可以运行一组TRNG测试以获得对该安全临界电路的置信度,从而可以锁定任何数据读出测试模式。在该测试结束时,可以标记任何故障器件以便进行销毁(S607、S609中的“否”)。

在运行了这些制造成品率测试之后,芯片器件通过制造测试(S607中的“是”),在S611(图6A),可以使用调试端口101(图1)接口来烧断另一组器件状态熔丝127以锁定这些测试模式;可以将器件递增到测试模式锁定405状态。可以通过将正确的密码写入经由来自调试端口101接口的直接路径而暴露的寄存器中来解锁锁定机构。然而,预期的密码此时并不存在,因此,器件将拒绝所有密码。

在示例实施例中,在运行了制造测试之前或者之后,可以使用调试端口101(图1)接口将诸如64比特标识符的器件唯一标识符(器件ID或者Dev ID)编码成器件ID熔丝129。例如,可以将器件ID存储在64个熔丝中并且用64个熔丝阴影寄存器915(图9)遮蔽器件ID。64个熔丝以举例的方式提供,而且熔丝的确切数量并不重要。(一旦创建了密钥并且将密钥存储在密钥管理服务器307(图3)中)器件ID可以用作器件及其其密钥的索引。

本发明的一个方面包括安全敏感测试模式,该安全敏感测试模式被锁定以防止对器件个性化进程的任何窥探。同样,仅仅旨在现场返工事件中解锁测试模式,而不是进行每个器件附加测试(所有附加良率测试可以用其它测试特征一起进行,或者通过重新运行内置自测试(BIST))。除了测试模式之外,在内部系统总线上具有类似于DMA(直接存储器访问)能力的外部接口也可能对个性化进程造成威胁。在示例实施例中,无法默认启用这些能力,而且总线安全机制默认也将为“安全状态”(安全意味着,默认所有类似于DMA的能力在器件内将不会具有访问权限,但是首先将需要安全协处理器131(图1)所进行的显式设置)。

此时,已经大体上测试了芯片器件,并且现在准备进行个性化进程(该个性化进程包括创建待用作晶片301(图3)上的芯片器件与密钥管理服务器(KMS 307)之间的共享秘密的器件唯一密钥)。为了保护秘密,可以在测试模式锁定405(图4)状态或者测试模式禁用407状态下执行芯片个性化。为了开始个性化进程,可以对晶片上的芯片器件再次上电、可以运行一组硬件(HW)BIST(即,并行测试晶片上的许多芯片器件)、以及可以从引导ROM 161重新引导每个芯片器件上的嵌入式处理器103(图1)。

具体地,进程开始于S613(图6A),在该步骤中,对芯片器件上电并且开始运行一组HW BIST测试。在示例实施例中,包含有限状态机(FSM)的三个硬件单元可以参与该测试。这些硬件单元是可测试性设计(DFT)或者闪存测试141(图1)、熔丝控制器&器件状态解码器121、和TRNG 133,其中,事件的同步可以由释放重置的电源管理单元(PMU)FSM来控制。闪存测试141运行逻辑BIST和存储器BIST,熔丝控制和器件状态解码器121运行一组完整性测试,并且TRNG 133运行其BIST。如果所有这些测试都是成功的(S615中的“是”),则在S619,释放嵌入式处理器103的重置,从而可以从ROM进行引导。如果测试失败(S615中的“否”),则BIST已经失败并且处理器将不会被自举(S617)。如果BIST失败,则部件可以进入锁定(不可用)状态。可以再试一次重置,但是,可能存在的预期是:出现一次失败的BIST指示BIST将再次失败,因此,部件是毫无用处的。

同样,在S619(图6),嵌入式处理器103(图1)可以从引导ROM 161引导。为了安全的原因,在示例实施例中,通过默认读取来自任何其它存储器(例如,闪存111或者SRAM 109)的数据来选通指令总线。引导ROM 107可以包含RSA公钥,该RSA公钥的主要目的是用于验证片上闪存111中的阶段1引导加载器。在S619,阶段1引导加载器不会存在于ROM 107中。

在ROM代码检查阶段1引导加载器之前,在S621(图6),该ROM代码读取自动擦除个人识别码的状态。个人识别码可以在芯片外进行通信,因为该个人识别码可能是外部芯片个人识别码。如果自动擦除个人识别码指示需要擦除闪存,则在S623,擦除闪存直到验证了完成擦除为止。

在S625(图6B),ROM代码可以检查阶段1闪存引导加载器。此时,引导加载器不存在于闪存111(图1)中(S625,否:不存在),因此,在S643,处理循环一直循环直到经由例如SPI IN 149传递了包含引导加载器的闪存固件有效载荷为止。一旦接收到固件有效载荷(S645中的“是”),在S647,将有效载荷写入闪存111。除了引导加载器之外,有效载荷也可以包括用于进行个性化的其它固件。在示例实施例中,有效载荷包含个性化专用代码以及用于加密DIK以便导出至密钥管理服务器(KMS 307)的RSA公钥。

一旦将ROM固件107存储在闪存111(图1)中,在S627(图6B),ROM固件107对个性化专用代码执行哈希函数并且执行RSA验证操作以利用嵌入固件的公钥来验证引导加载器。在S629,决定个性化专用代码的验证是否通过。

在示例实施例中,在执行决定验证是否通过时,ROM代码可以不使用分支。相反,其利用RSA签名的预期哈希摘要部分来对计算得到的SHA-256摘要进行XOR操作(所产生的值是384字节常数,其中,如果验证通过,则顶部是空白并且底部是256比特的零)。然后,例如,通过使用SHA-256对该384字节常数进行哈希计算以产生一个更小的值。然后,将该256比特结果写入连接至256比特硬件比较器的寄存器中。如果所有的比特与预期的256比特常数(其嵌入硬件比较器的门中)匹配,则该比较器然后将仅仅允许解锁闪存以便进行执行。

如果个性化固件的验证失败(S629中的“否”),则在S631,必须重新引导器件以进行再次尝试。

如果验证通过(S629中的“是”),则ROM代码首先将例如256比特SHA-256摘要写入仅仅可由ROM 107写入的RWR隐藏密钥阶梯(HKey)寄存器中。

在示例实施例中,如果验证通过(S629中的“是”),则在S633,ROM 107解锁闪存111和SRAM 109以便进行附加闪存代码执行,执行指令提取并且开始运行阶段1引导加载器(个性化固件)。

在S635(图6B)中,执行个性化固件可以包括创建随机秘密数据,利用该随机秘密数据来导出例如两个256比特器件唯一秘密。一个秘密可以是器件初始化密钥(DIK),该DIK可以充当器件301与密钥管理服务器(KMS 307)之间的根共享秘密。另一秘密可以充当非对称私钥(HPriv),通过该HPriv,个性化固件可以生成也将被发送至KMS307的对应的非对称公钥(HPub)。在示例实施例中,可以从一对全局秘密常数(HWC和RBC)以及一对器件唯一秘密(例如,大小分别为256比特)生成这些秘密值。器件的片上TRNG 133(图1)可以用作创建器件唯一秘密(OBS、FBS、和RSR)的源。可以将DIK的基于OTP的秘密(OBS)分量燃烧成密钥熔丝125。可以将DIK的基于闪存的秘密(FBS)分量写入闪存111中。在示例实施例中,RSR分量可以充当用于稍后与运行时间生成的随机数“搅拌”或者“混合”的初始随机种子。该“搅拌”或者“混合”可以是随机熵的标准密码使用。

一旦将器件唯一秘密存储在非易失性存储器(NVM)—闪存111(图1)或者熔丝125中,固件便可以指示安全协处理器131(例如,SHA引擎)取得DIK、HPriv、和称为HI PHIK的另一密钥(用作导出加密后的DIK的HMAC密钥)。所有这些基于SHA的取得都可以由具体硬件操作证书限定,并且使用称为隐藏密钥阶梯的内部秘密寄存器文件,该内部秘密寄存器文件用于保存根秘密和中间值。SHA硬件可以通过专用总线与HKey阶梯直接交互。DIK的该初始生成对嵌入式处理器103而言是可见的,因此,处理器可以将DIK存储在存储器中。可以通过固件来完成通过HPriv生成HPub。此时,固件已经收集到DIK&HPub,并且XI PHIK经由SHA HMAC证书是可用的,该SHA HMAC证书可以从密钥阶梯自动加载XI PHIK。

在S637(图6B),利用保存的DIK,个性化固件可以使熔丝燃烧,以永久禁用用于将DIK创建到固件可读寄存器(FRR)中的HKey证书。从这个时候开始,DIK对嵌入式处理器103(图1)而言不再可见,并且被存储到诸如闪存111的非易失性存储器(NVM)中(仍然驻留在寄存器中)。DIK可以经过一系列的SHA HKey操作以创建固件版本绑定根密钥。

在S639(图6B),个性化固件可以对DIK、HPub和器件ID加密并且将其导出至密钥管理服务器(KMS 307(图3))。在示例实施例中,个性化固件可以通过使用从闪存引导加载器获得的个性化公钥对该数据束进行RSA加密。一旦该数据束被加密,其就可以通过使用SHA-256HMAC来创建数据的MAC,其中,HKey证书使用XI PHIK作为密钥。然后,可以经由SPI从251将MAC和加密后的DIK/DevID导出至KMS 307。

在S641(图6B),利用局部存储在NVM中并且也在密钥管理服务器307中的DIK,芯片器件具有由KMS 307侧的DevID索引的唯一共享秘密。此时,器件的状态是个性化器件409(图4)状态。

在对晶片上的正在发挥作用的芯片器件进行个性化与供应封装形式的器件之间,密钥管理服务器307可以为每个芯片器件准备单独的供应有效载荷。密钥管理服务器(KMS 307)包含由DevID索引的所有个性化芯片器件的列表、及其单独的器件初始化密钥(DIK)。KMS307也具有驻留在每个器件的闪存中作为阶段1引导加载器的个性化固件的副本。利用个性化固件和DIK,KMS 307可以取得专门用于器件并且绑定至固件图像的密钥(并且可以称为FW DIK)。通过使用该密钥,KMS 307可以利用每个器件唯一FW DIK对供应有效载荷(背书基础种子(EPS)、X.509证书和功能固件)进行预加密,或者至少对EPS进行预加密。这意味着,在晶片到达封装位置时,可以预计算单独的供应有效载荷。

图7示出了用于封装阶段的示例测试层系统,在该封装阶段中,对封装器件进行供应。为了供应封装器件7-1,密钥管理服务器(KMS307)可以通过硬件安全模块305和测试器303将数据发送至封装器件701和从封装器件701接收数据。

图8A、图8B、图8C是图示了可以由例如图7所示的晶片测试层系统实施的封装阶段的流程图。将参照图4中的状态和图1的半导体芯片器件来描述该流程。

在封装阶段期间,晶片到达,包含处于个性化器件409(图4)状态下的器件(标出了一些成品率,以便因制造测试失败而进行销毁)。在该到达位置中,可以对晶片进行切片并且将器件组装成到其封装体(封装器件701(图7))中。一旦被封装,在S801(图8A),对单独的封装器件701上电以开始制造成品率测试的剩余部分。在S803,可以运行制造测试的剩余部分以表征和确定每个器件的适应性。剩余的测试比晶片阶段中运行的测试持续的时间更长并且更彻底。在该位置中运行的制造测试可以包括闪存完整性测试、逻辑BIST和一些模拟合格测试。在示例实施例中,这些测试无法实现之前在晶片阶段期间完成的、在器件个性化序列期间安装的秘密信息的提取。例如,在个性化之前,在晶片阶段运行扫描测试。

在S805,决定封装器件701是否通过剩余的制造测试。在示例实施例中,在S807,将不满足要求的最低标准(S805中的“否”)的任何器件视为不合格的器件并且可以将其损毁(例如,以防止秘密的逆向工程)。

对于确实通过剩余的制造测试(S805中的“是”)的能发挥作用的封装器件,在S809,可以烧断附加的剩余熔丝123(图1)以将式。此时,已经将每个芯片器件递增至配置器件状态411。

在已经对所有器件进行熔丝配置之后,可以重新引导所有器件以执行供应进程。为了供应封装器件701(图7),密钥管理服务器(KMS307)通过测试层上的硬件安全模块(HSM 305(图3))将数据发送至封装器件701和从封装器件701接收数据。与供应的情况一样,供应秘密的保密性无法直接依赖于HSM 305。确切地说,可以使用HSM305来缓冲有效载荷以处理与KMS 307的临时的连接性问题,并且监控和收集关于在个性化进程期间执行的操作的统计信息。

在示例实施例中,可以利用有效的证书和市场特定功能固件来供应封装芯片器件。虽然个性化固件由阶段1固件模块组成,但是可以将功能固件分解成多个模块。为了使这些证书和功能固件进入器件,在S811,可以按照与个性化流程相似的方式来重新启动封装芯片。对封装芯片器件上电,并且可以运行一组BIST测试。包含有限状态机(FSM)的三个硬件单元可以参与这些测试(DFT 141(图1)、熔丝控制器121、TRNG 133),并且这些事件的同步可以由释放重置的PMU FSM控制。DFT单元141可以运行逻辑BIST和存储器BIST,熔丝控制器121可以运行一组完整性测试,并且TRNG 133可以运行其BIST。如果所有这些测试都是成功的(S813(图8A)中的“是”),则在S817,可以释放嵌入式处理器103的重置(从而通过引导ROM 107执行引导处理)。否则(S813中的“否”),在S815,至少一个测试已经失败。

在示例实施例中,为了安全的原因,此时,通过读取来自任何其它存储器(即,闪存111(图1)或者SRAM 109)的数据来选通指令总线。引导ROM 107可以包含RSA公钥,该RSA公钥的主要目的是验证闪存111中的阶段1引导加载器。此时,阶段1引导加载器是个性化固件。然而,在检查阶段1加载器之前,ROM代码可以通过检查个人识别码的值来检查是否正在请求闪存自动擦除。

具体地,在ROM代码检查阶段1闪存引导加载器之前,在S819(图8A),该ROM代码可以读取自动擦除个人识别码的状态。如果设置了该状态(S819中的“是”),则在S821,ROM固件可以擦除整个闪存。

此时,在S823,ROM代码可以检查阶段1闪存引导加载器。此时,引导加载器作为个性化固件存在。然而,如果阶段1引导加载器不存在(S823中的“否”),处理循环则循环通过S847、S849和S851,直到接收到固件有效载荷并且将有效载荷写入闪存(可与图6中的S643、S645和S647进行比较)。

在S825(图8A),对阶段1引导加载器进行验证。为了验证阶段1闪存引导加载器,ROM固件可以通过使用哈希函数来生成代码的哈希表并且利用嵌入固件的公钥来执行RSA验证操作。在S827,决定引导加载器是否通过验证进程。

在示例实施例中,对于决定引导加载器验证是否通过(S827(图8B)),ROM代码可以不使用分支。相反,其利用RSA签名的预期哈希摘要部分来对计算得到的SHA-256摘要进行XOR操作(S827中的“是”;所产生的值是384字节常数,其中,如果验证通过,则顶部是空白并且底部是256比特的零)。然后,例如,通过使用SHA-256对该384字节常数进行哈希计算以产生一个更小的值。然后,将该256比特结果写入连接至256比特硬件比较器的寄存器中。如果所有的比特与预期的256比特常数(其嵌入硬件比较器的门中)匹配,则该比较器将仅仅允许解锁闪存111(图1)中的附加区域以便进行执行(S831)。

如果个性化固件的验证失败(S827中的“否”),则在S829,必须重新引导器件以进行再次尝试,或者必须使用自动擦除特征来重新加载另一签名的引导加载器。

在另一示例实施例中,如果可以验证引导加载器(S827中的“是”),则ROM代码首先可以将例如256比特SHA-256摘要写入仅仅可由ROM写入的RWR隐藏密钥阶梯(HKey)寄存器(未具体示出)中,并且对其进行锁定。该寄存器除了不可由专用的SHA HKey证书处理器读取之外还不可由任何代理读取。因为此时已经经由熔丝取消了原始DIK创建证书,所以可以迫使引导加载器固件在取得其器件初始化密钥(称为FW DIK)时包括其固件哈希表。

接下来,在S831(图8B),ROM固件可以解锁闪存111(图1)中的额外区域和SRAM 109以便进行指令提取,并且开始运行阶段1引导加载器(个性化固件)。

因为已经个性化了器件,所以在S833,个性化固件现在可以检查是否供应了芯片。个性化固件通过寻找证书来检查是否供应了芯片。然而,此时,证书可能不存在,并且将认为没有供应芯片器件(S833中的“否”)。

因为还没有供应器件,所以在S835,执行循环进程以便等待经由例如SPI从属控件135供应有效载荷。

一旦固件经由SPI从属控件135检测到供应进程的开始(S837(图8C)中的“是”),在S839,固件就可以开始取得其供应密钥。在示例实施例中,指示安全协处理器131(图1)(例如,SHA-256控制处理器)通过使用隐藏密钥阶梯(HKey)来执行具体的RW DIK创建操作(对于该具体的RW DIK创建操作,安全协处理器131具有硬件嵌入证书)。嵌入式处理器103然后使用诸如SHA-256控制处理器的安全协处理器131和HKey来取得一组三个供应密钥(一个供应密钥用于器件的远程认证、一个供应密钥用于对供应有效载荷进行加密,并且一个供应密钥用于供应有效载荷上的认证和完整性)。所有这些密钥可以固件绑定版本的DIK(称为FW DIK)为根源,其可以由安全协处理器131(SHA-256控制处理器)通过创建哈希表{HWC,RBC,OBS,FBS,RWR}并且将结果摘要写入ISR0中来取得。然后,可以使用ISR0来取得这三个供应密钥。

在S841(图8C),密钥管理服务器(KMS 307(图3))可以从器件读取DevID,并且发布使器件证明其身份的质询。响应可能涉及:对具有“我是器件吗(Am I the Device)”认证密钥的质询随机数进行操作,这是根据闪存固件绑定版本的DIK取得的。这确保器件具有正确的DIK和正确版本的个性化固件(当ROM将自己的哈希表混合到KDF 307中时)。在示例实施例中,供应有效载荷可以包含以下项,其中,(至少)对EPS进行加密:

背书基础种子(EPS)

具有RSA主体公钥的签名X.509证书。

具有ECC主体公钥的签名X.509证书。

市场特定的功能哈希固件。

在S841(图8C),可以解密供应有效载荷中的部分。

在示例实施例中,有效载荷可以包含市场特定的哈希固件、器件唯一背书基础种子(EPS)、和两个签名X.509证书(一个包含RSA主体公钥,并且一个包含ECC主体公钥)。这些主体公钥是背书密钥对(EK)中的公共的那一半,该背书密钥对可以由器件通过使用自己的EK证书(即,刚刚接收到的X.509证书)来验证。

在S843(图8C),器件可以通过使用EPS和一组参数取得EK对来执行该验证,然后可以将产生的EK.Pub与包含在EK证书中的EK.Pub进行比较。一旦已经完成了该验证进程,在S845,就可以决定供应有效载荷是否有效。如果确定供应载荷是有效的(S845中的“是”),则认为已经供应了器件,并且其状态变成供应器件413(图4)状态。此时,在S859,供应芯片器件,并且芯片器件可以继续功能引导。

本发明的一个方面包括:可以立即或者在一些其它时间(或者更可信的位置)完成解密和验证供应有效载荷的过程(整个签名有效载荷验证和EK验证这两者;S841、S843、S845)。该顺序可以取决于个性化固件中的顺序。

同样,每当器件启动时,在示例实施例中,其必须重复该验证进程。因此,器件的状态最初可以是配置器件411(图4)状态,然后,仅仅在用其两个证书验证了两个EK密钥对(RSA和ECC)之后变成供应器件413状态。随后,该最终器件状态转换可以是软器件状态转换,并且与之前的状态变化一样,可能不取决于熔丝。

在器件供应失败的情况下,在S859,可以使用安全的方法来传送诸如引导加载器验证失败、或者供应验证失败的在引导、在消息方面存在的问题。

如果有必要,则可以在任何时候重新供应芯片器件100。因为固件漏洞、或者仅仅因为对将最初为针对一个市场的器件改变成为另一个市场供应的器件的需要,所以这可能是必要的。重新供应流程可以按照与正常引导的方式相同的方式开始,除了一个微小的差异:器件已经包含功能固件、EPS和两个有效的证书。为此,用于触发重新供应的方法可以是擦除闪存固件和数据中的全部或者一些。

可以通过读取特定个人识别码的值或者通过借由器件的接口中的任何一个接口与器件的固件通信,来触发闪存数据的擦除。个人识别码的目的是迫使擦除整个闪存,不包括个性化数据,但是包括引导加载器(如果器件包含有效的签名固件,但是无法开始重新供应过程,则该方法可能是唯一的方法)。在示例实施例中,如果擦除了引导加载器,器件首先必须通过与器件个性化期间所使用的方法相似的方法(例如,通过使用SPI从属接口接收闪存固件有效载荷)来接收新的引导加载器。一旦引导加载器就位(或者如果其未被擦除),流程就可以与原始供应流程相似地进行。首先,密钥管理服务器(KMS 307)通过读取器件标识符并且然后发布将证明器件标识符是否包含正确的FW HIK的质询,来使器件证明其是有效的器件。

如果用新的引导加载器代替引导加载器163(图1),则质询中使用的FW HIK导出密钥也可能会发生变化(例如,因为其包括引导加载器固件的哈希表)。假设器件通过了质询,则其可以等待经由SPI从属接口(未示出)的新的闪存供应有效载荷。通过该接口,芯片器件100接收来自KMS 307(图3)并且利用与HIK质询中使用的密钥相似的密钥进行加密的新的签名有效载荷。此时,芯片器件100可以验证供应(通过与前述方法相同的方法),转变为供应器件413状态,并且继续功能引导。

<熔丝控制器>

图9是熔丝控制和器件状态解码器121的示例实施例的框图,其处理包括OPT(一次可编程)宏901a-d的一组关联的熔丝宏900的编程。在示例实施例中,熔丝阴影寄存器915可以冗余地存储熔丝宏900的比特值。可以按照对控制任何测试模式或者安全敏感特征提供额外的保护层的方式来设置熔丝比特的冗余存储。熔丝宏的比特值的冗余存储也可以包含用于保护阴影操作免受攻击的机制。例如,可以检测到对熔丝宏锁存操作的攻击,因为即使当熔丝宏900本身不是零时,该攻击可能导致所有熔丝阴影寄存器915变成0宏。

在示例熔丝控制器121中,可以通过熔丝阴影寄存器915来编程熔丝位,其中,实际熔丝宏由熔丝控制器从内部烧断。与编程实际熔丝900和读取熔丝值相关联的功能可以由内部控制器910处理。同样,熔丝控制器121可以包括用于处理特定熔丝宏900的编程的有限状态机905。可以基于通过串行线调试端口(SWDP)931传输至器件状态解锁电路913的命令来实现熔丝宏900的编程。器件状态解锁电路913使存储在熔丝宏中的器件状态递增至下一种器件状态。用于将器件状态设置成默认的机制可以由默认的参数保存电路917和逻辑门919提供,其经由接口935控制对熔丝的访问。处理器总线933提供路径以读取和编程存储在熔丝阴影寄存器915中的熔丝值。

图1、图2和图9提供了半导体芯片器件100的示例性实施细节。图10是示例性装置(1000)的高级框图,该示例性装置(1000)可以包括半导体芯片器件100,或者可以用于实施半导体芯片器件100的各个组件,包括嵌入式处理器103、固件104、安全协处理器131和内部控制器910中的一个或者多个。

根据至少一个实施例,数字组件/计算装置(1000)可以被配置为执行支持安全器件状态和引导流的各种功能。如上所述,状态转换由在芯片100上运行的固件104控制,并且可以利用结合图4、图5、图6A和图6B描述的方法。安全引导流由在芯片100上运行的固件104控制,并且可以利用结合图8A、图8B和图8C描述的方法。固件可以是图1所示的嵌入式处理器104的部分。图10提供了下面将进一步阐释的硬件实施方式的进一步的细节。

在非常基本的配置(1001)中,计算装置(1000)通常包括一个或者多个处理器(1010)和系统存储器(1020)。存储器总线(1030)可以用于在处理器(1010)和系统存储器(1020)之间进行通信。

根据所需配置,处理器(1010)可以具有任何类型,包括但不限于片上系统(SoC)、微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)、或者其任何组合。处理器(1010)可以包括一级或者多级缓存,诸如一级缓存(1011)和二级缓存(1012)、处理器核心(1013)、和寄存器(1014)。处理器核心(1013)可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSP核心)、或者其组合。存储器控制器(1015)也可以与处理器(1010)一起使用,或者在一些实施方式中,存储器控制器(1015)可以是处理器(1010)的内部零件。

根据所需配置,系统存储器(1020)可以具有任何类型,包括但不限于易失性存储器(诸如,RAM)、非易失性存储器(诸如,ROM、闪存等)、或者它们的组合。系统存储器(1020)通常包括操作系统(1021)、一个或者多个应用(1022)、和程序数据(1024)。(多个)应用(1022)可以包括根据本文所描述的一个或者多个实施例的用于支撑强化随机数发生器的数字组件107的各个组件的软件实施方式。程序数据(1024)可以包括存储指令,该存储指令在由一个或者多个处理装置执行时实施上面详细描述的用于执行数字组件107的各种功能的(多种)方法。在一些实施例中,(多个)应用(1022)可以被设置为与程序数据(1024)一起在操作系统(1021)上运行。

计算装置(1000)可以具有附加特征或者功能、和利于在基础配置(1001)与任何所需装置和接口之间的通信的附加接口。

系统存储器(1020)是计算机存储介质的示例。该计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪存或者其它存储技术、CD-ROM、数字多用盘(DVD)或者其它光学存储装置、磁带盒、磁带、磁盘存储装置获取其它磁存储装置、或者可以用于存储所需信息并且可以由计算装置1000访问的任何其它介质。任何这种计算机存储介质可以是装置(1000)的部分。

计算装置(1000)可以实施为小型便携式(或者移动)电子装置的一部分,诸如,蜂窝电话、智能电话、个人数字助理(PDA)、个人媒体播放器装置、平板计算机(平板电脑)、无线网页观看装置、个人头戴式装置、专用装置、或者混合装置,其包括上述功能中的任何一种。计算装置(1000)也可以实施为个人计算机,包括膝上型计算机配置和非膝上型计算机配置两者。

前述详细描述已经经由框图、流程图和/或示例的使用来陈述了装置和/或过程的各种实施例。由于这种框图、流程图和/或示例包含一种或者多种功能和/或操作,本领域的技术人员要理解,可以通过大范围的硬件、软件、固件、或者它们的几乎所有组合单独地和/或共同地实施在这种框图、流程图或示例内的每种功能和/或操作。

根据至少一个实施例,本文所描述的主题的多个部分可以经由一个或者多个ASIC(专用集成电路)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或者其它集成格式实施。然而,本领域的技术人员要认识到,本文所公开的实施例的一些方面可以全部或者部分等效地实施在集成电路中,作为在一个或者多个计算机上运行的一个或者多个计算机程序,作为在一个或者多个处理器上运行的一个或者多个程序,作为固件,或者作为它们的几乎任何组合,并且根据本公开,设计电路系统和/或为软件和/或固件写入代码将很好地在本领域的技术人员的技术范围内。

另外,本领域的技术人员要了解,本文所公开的主题的机制能够作为各种形式的程序产品发布,并且使用了本文所描述的主题的说明性实施例,无论特定类型的非暂时性计算机可读介质如何。非暂时性计算机可读介质的示例包括但不限于以下:可记录类型的介质,诸如,闪存驱动器、硬盘驱动器、光盘(CD)、数字视盘、数字磁带和计算机存储器等。

针对任何复数形式和/或单数形式的术语实质上在本文中的使用,在适合上下文和/或应用时,本领域的技术人员可以从复数形式变换为单数形式并且/或者从单数形式转换为复数形式。为清晰起见,可以明确地陈述各种单数形式/复数形式置换。

因此,已经描述了本主题的具体实施例。其它实施例在以下权利要求书的范围内。在某些情况下,在权利要求书中叙述的动作可以按照不同的次序来执行并且仍然获得期望的结果。另外,在附图中描绘的过程不必要求所示的特定次序或者相继次序来获得期望的结果。在某些实施方式中,多任务处理和并行处理可能是有益的。

本文所讨论的系统和方法不需要收集或者使用用户个人信息。在某些实施方式可以收集或者使用关于用户的个人信息(例如,用户数据、关于用户的社交网络的信息、用户的位置和时间、用户的生物特征信息、用户的活动以及人口统计信息)的情况下,会向用户提供控制是否收集个人信息、是否存储个人信息、是否使用个人信息、以及如何收集、存储和使用关于用户的信息的一个或者多个机会。即,本文所讨论的系统和方法收集、存储和/或使用用户个人信息,特别是在接收到来自这样做的相关用户的显示授权时。另外,在存储或者使用特定数据之前,可以按照一种或者多种方式来处理该特定数据,从而使得可以去除个人身份信息。作为一个示例,可以处理用户的身份,从而无法确定个人身份信息。作为另一示例,可以将用户的地理位置泛化到更大的区域,从而无法确定用户的具体位置。

虽然本文已经公开了各个方面和实施例,但是其它方面和实施例对于本领域的技术人员而言是显而易见的。本文所公开的各个方面和实施例是说明性的,而非限制性的,其中,真正的范围和精神由下面的权利要求书指示。

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