具有防伪造能力的集成电路的制作方法

文档序号:15307959发布日期:2018-08-31 21:19阅读:217来源:国知局

本发明涉及一种集成电路,诸如微控制器或片上系统。



背景技术:

在半导体行业和原始设备制造商(oem)中,伪造已成为一个日益严重的问题。

这个问题有两个方面。第一个方面涉及伪造集成电路和在这种集成电路中的灰色市场。第二个方面来自oem制造和销售包含集成电路的产品的事实。伪造产品可能被制造和销售,该伪造产品使用可能是真的、被盗的(例如从制造厂、运输途中或从仓库)或伪造的集成电路。

从概念上讲,生产伪造集成电路最简单的方法是复制或克隆真正的集成电路。然而,这种方法在技术上是繁琐的且相当昂贵,从而使其对造假者极不具有吸引力。

然而,其他技术则简单得多。例如,仅仅从制造厂或仓库偷集成电路是最简单和最便宜的。这对“无加工(fab-less)”和“轻加工(fab-light)”生产环境中的造假者特别有吸引力,即供应商将器件制造分包到独立运行的制造工厂的安排。此外,制造厂可能能够制造对于供应商来说未知的过剩集成电路,然后将其投放到灰色市场上。

针对这一问题,已经提出了各种防伪对策。这些方法中的许多方法采用位于制造厂或其他地方处的可信服务器,以便以安全的方式启用集成电路中的特征和/或跟踪生产。

这些方法中的一些采用片上熔断器只读存储器,其用于配置和启用特征,并且其只能使用密码或加密消息访问或烧录。参考cn103187095a、us2006/131743a1和us2014/0185795a1。某些方法可以采用物理不可克隆功能(puf)或集成电路特有的其他代码,例如wo2015/124673a1中所描述的。



技术实现要素:

根据本发明的第一方面,提供了一种集成电路,包括:一次性可编程非易失性存储器和该一次性可编程非易失性存储器的存储器控制器。存储器控制器被配置为将已经在集成电路中生成的第一随机数发送到器件初始化服务器。存储器控制器被配置为响应于从器件初始化服务器接收到签名的消息,确定第一随机数和第二随机数是否相等并且相应的签名(或“第一签名”)是否有效,该签名的消息包括器件初始化消息和所述签名,器件初始化消息包括第二随机数和器件身份。存储器控制器被配置为响应于确定第一随机数和第二随机数相等并且签名有效,则将器件身份编程到一次性可编程非易失性存储器的第一部分中。

因此,可以使用明文签名的消息初始化集成电路,而不需要在集成电路中存储私钥或密码。

一次性可编程非易失性存储器可以是基于熔断器、反熔断器或一次性可编程非易失性存储器元件的其他类似形式的只读存储器。

器件初始化服务器优选地是可信服务器。器件初始化服务器可以具有用于使服务器安全的硬件安全模块(hsm)或其他布置。器件初始化服务器可以位于本地,即芯片外,但可以与集成电路(诸如半导体制造厂)位于相同位置或被远程定位,诸如在ip所有者或供应商现场或授权代理或代表的现场。

器件初始化消息可以是第二随机数和器件身份的级联。签名的器件初始化消息可以是器件初始化消息和签名的级联。

存储器控制器可以被实施为硬件电路,例如,包括硬件实施的逻辑、寄存器等,或者在软件中使用专用于控制一次性可编程非易失性存储器的cpu子系统,即与主cpu子系统分开的cpu子系统。

存储器控制器可以进一步被配置为从一次性可编程非易失性存储器的第一部分读取器件身份,并且确定从一次性可编程非易失性存储器的第一部分读取的器件身份与被编程到一次性可编程非易失性存储器的第一部分中的器件身份是否相等,即相同。存储器控制器可以进一步被配置为,响应于确定器件身份相等,将身份有效值编程到一次性可编程非易失性存储器的第二部分中。

存储器控制器可以进一步被配置为从一次性可编程非易失性存储器的第二部分读取身份有效值,并确定从一次性可编程非易失性存储器的第二部分读取的身份有效值与被编程到一次性可编程非易失性存储器的第二部分中的身份有效值是否相等。存储器控制器可以进一步被配置为,响应于确定身份有效值相等,将消息发送到器件初始化服务器,以用于确认器件初始化已经完成。

集成电路可以进一步包括随机数生成器,随机数生成器被配置为生成随机数并且将随机数提供给存储器控制器。

随机数生成器优选为真随机数生成器。

随机数生成器可以响应于来自存储器控制器的请求而生成随机数并且将随机数提供给存储器控制器。

集成电路可以进一步包括公共加密引擎,公共加密引擎被配置为响应于从存储器控制器接收到的数据,而根据数据创建摘要。例如,数据可以包括器件初始化消息,器件初始化消息包括第二随机数和器件身份。

集成电路可以进一步包括功能启用器,功能启用器被配置为根据一次性可编程非易失性存储器中的值而启用(或“激活”)一个或多个功能(或“特征”)。

存储器可以进一步包括第三部分和第四部分,第三部分用于存储指示集成电路的哪些可启用的功能被启用的值,第四部分用于存储指示集成电路的哪些可禁用的功能被禁用的值。指示集成电路的哪些可禁用的功能被禁用的值可以是指示没有可禁用的功能被禁用的值。

存储器控制器可以被配置为:将已经在集成电路中生成的第三随机数和一次性可编程非易失性存储器的第一部分、第二部分、第三部分和第四部分的内容发送到特征激活服务器(其可以与器件初始化服务器相同或不同)。存储器控制器可以被配置为响应于从特征激活服务器接收到签名的功能启用消息,确定第三随机数和第四随机数是否相等并且相应的签名(或“第二签名”)是否有效,签名的功能启用消息包括功能启用消息和签名(即第二签名),功能启用消息包括第四随机数、未验证的器件身份、未验证的身份有效值、功能启用值和禁用值。存储器控制器可以配置为响应于确定第三随机数和第四随机数相等,并且签名(即,第二签名)有效,将功能启用值编程到一次性可编程非易失性存储器的第三部分中。

存储器控制器可以被配置为将已在集成电路中生成的发送第五随机数和一次性可编程存储器的第一部分、第二部分、第三部分和第四部分的内容发送到特征解激活服务器,并且响应于从特征解激活服务器的接收到签名的特征禁用消息,确定第五随机数和第六随机数是否相等并且签名是否有效,并且响应于确定第五随机数和第六随机数相等并且签名有效,将禁用值编程到一次性可编程非易失性存储器的第四部分中,该签名的特征禁用消息包括特征禁用消息和签名,特征禁用消息包括第六随机数、为验证的器件身份、未验证的身份有效值、功能启用值和禁用值。特征解激活可以涉及解激活所有可能导致没有功能的集成电路的禁用特征。

根据本发明的第二方面,提供一种集成电路,包括:一次性可编程非易失性存储器,该一次性可编程非易失性存储器包括存储器件身份的第一部分、存储指示器件身份有效的身份有效值的第二部分、用于存储指示集成电路的哪些可启用的功能被启用的值的第三部分以及存储指示集成电路的哪些可禁用的功能被禁用的值的第四部分。该值可以指示没有功能是可禁用的。集成电路包括一次性可编程非易失性存储器的存储器控制器。存储器控制器可以被配置为:将已经在集成电路中生成的第三随机数以及一次性可编程非易失性存储器的第一部分、第二部分、第三部分和第四部分的内容发送到特征激活服务器(其可以与器件初始化服务器相同或不同)。存储器控制器可以被配置为响应于从特征激活服务器接收到签名的功能启用消息,确定第三随机数和第四随机数是否相等并且相应的签名(或“第二签名”)是否有效,签名的功能启用消息包括功能启用消息和签名(即第二签名),功能启用消息包括第四随机数、未验证的器件身份、未验证的身份有效值、功能启用值和禁用值。存储器控制器可以配置为响应于确定第三随机数和第四随机数相等并且签名(即第二签名)有效,将功能启用值编程到一次性可编程非易失性存储器的第三部分中。

集成电路可以是数字集成电路。集成电路可以包括存储器。存储器可以是易失性存储器,诸如dram或sram。存储器可以是非易失性存储器,诸如eprom、eeprom、nor闪存或nand闪存。集成电路可以是微集成电路,诸如微处理器、微控制器或信号处理芯片。集成电路可以是具有嵌入式闪存的微控制器。集成电路可以是没有嵌入式闪存的处理器。集成电路可以是片上系统(soc)。集成电路可以是逻辑集成电路,诸如专用集成电路芯片、标准逻辑或显示驱动器。集成电路可以是固定逻辑集成电路。集成电路可以包括场阵列门阵列(fpga)。

根据本发明的第三方面,提供一种产品或系统,包括根据本发明的第一方面或第二方面的至少一个集成电路。

该产品可以是工业系统,诸如工厂、工厂控制、机器人或机器人控制。

该产品可以是车辆。该产品可以是机动车辆。机动车辆可以是摩托车、汽车(有时被称为“轿车”)、小型公共汽车、公共汽车、卡车或货车。机动车辆可以由内燃机和/或一个或多个电动发动机提供动力。该产品可以是列车车辆,诸如驱动单元(有时称为“火车引擎”)或火车车厢。该产品可以是航空航天飞行器,诸如飞机或太空飞行器。

该产品可以是在运输系统中使用的信号设备。信号设备可以脱离车辆,例如火车的线旁信号设备。

该产品可以是医疗系统,诸如用于监测诸如心率、呼吸速率等生命体征的监视器。该医疗系统可以包括能够与远程设备进行无线通信的远程设备和本地设备(“家庭设备”)。远程设备可以是可植入的。

该产品可以提供网络能力,优选是无线网络能力。可联网产品可以提供设备身份,优选是唯一身份。可识别的可联网产品可以被配置为能够被并入物联网(iot)或联网设备的其他系统中。

根据本发明的第四方面,提供一种器件初始化服务器,该器件初始化服务器包括至少一个处理器和存储器。该服务器被配置为响应于从集成电路接收到第一随机数,生成签名的器件初始化消息,并且将签名的器件初始化消息发送到集成电路,签名的器件初始化消息包括器件初始化消息和从该器件初始化消耗的摘要创建的相应的签名(“第一签名”),并且器件初始化消息包括随机数和器件身份的副本。

器件初始化服务器可以将签名的器件初始化消息直接发送到器件或经由中间设备发送到器件,中间设备例如网关、无线网络集线器或路由器,或与集成电路在相同位置的移动通信设备(诸如智能电话)。网关、集线器、路由器或通信设备可以与集成电路(例如有线的)直接通信。

在器件初始化期间,集成电路可位于集成电路制造厂、集成电路封装厂、集成电路测试工厂、运输点、仓库或其他加工厂或供应商场所。在器件初始化期间,集成电路可以位于oem控制的现场中,例如装配工厂、包装工厂、测试工厂、运输点或仓库。在器件初始化期间,集成电路可以位于与销售相关的现场,例如商店、运输点或仓库。在器件初始化期间,集成电路可以位于终端客户现场,例如家庭、商店、办公室、工厂或仓库。

器件初始化服务器可以包括加密处理器。器件初始化服务器可以包括或提供存储。存储可以存储器件身份的数据库。器件初始化服务器可以被配置为抽取未使用的器件身份并且将未使用的器件身份包括为器件初始化消息中的器件身份。器件初始化服务器可以被配置为更新已经分配了器件身份的数据库。器件初始化服务器可以被配置为根据发生器件初始化的身份或位置来抽取未使用的器件身份,例如,制造、包装或测试工厂的身份、oem现场等。

器件初始化服务器可以被配置为响应于从集成电路接收第三随机数、器件身份、指示器件身份有效的身份有效值、指示哪些可启用的功能被启用的值(该值可以指示没有功能被启用)以及指示哪些可禁用的功能被禁用的值(该值可以指示没有功能被禁用),将签名的功能启用消息发送到集成电路,签名的功能启用消息包括功能启用消息和从该功能启用消息的摘要创建的签名(“第二签名”),该功能启用消息包括第四随机数、未验证的器件身份、未验证的身份有效值、功能启用值和禁用值。因此,器件初始化服务器也可以用作特征激活服务器。

根据本发明的第五方面,提供一种包括至少一个处理器和存储器的特征激活服务器。该服务器被配置为响应于从集成电路接收到第三随机数、器件身份、指示器件身份有效的身份有效值、指示启用哪些功能的值(该值可以指示没有功能被启用)以及指示哪些功能被禁用的值(该值可以指示没有功能被禁用),将签名的功能启用消息发送到集成电路,该签名的功能启用消息包括功能启用消息和从该功能启用消息的摘要创建的签名(“第二签名”),该功能启用消息包括第四随机数、未验证的器件身份、未验证的身份有效值、功能启用值和禁用值。

特征激活服务器可以将签名的功能启用消息直接发送到器件或经由中间设备发送到器件,中间设备例如网关、无线网络集线器或路由器,或与集成电路在相同位置处的移动通信设备(诸如智能电话)。网关、集线器、路由器或通信设备可以与集成电路(例如有线的)直接通信。

根据本发明的第六方面,提供一种用于对集成电路的一次性可编程非易失性存储器的通用部分进行编程的服务器,该服务器包括至少一个处理器和存储器。该服务器被配置为响应于从集成电路接收到第五随机数、器件身份、指示器件身份有效的身份有效值、一次性可编程非易失性存储器的通用部分的值,将签名的通用值消息发送到集成电路,该签名的通用值消息包括通用值消息和从该通用值消息的摘要创建的签名(“第三签名”),该通用值消息包括第六随机数,未验证的器件身份,未验证的身份有效值和通用值。

根据本发明的第七方面,提供一种包括至少一个处理器和存储器的特征解激活服务器。该服务器配置为响应于从集成电路接收到第七随机数、器件身份、指示器件身份有效的身份有效值、指示启用哪些功能的值和指示禁用哪些功能的值,将签名的特征解激活消息发送到集成电路,签名的特征解激活消息包括特征解激活消息和从特征解激活消息的摘要创建的签名(“第四签名”),特征解激活消息包括第八随机数、未验证的器件身份、未验证的身份有效值、功能启用值和功能禁用值。

根据本发明的第八方面,提供一种器件初始化系统和/或特征启用系统,包括:集成电路和用于初始化该集成电路并启用该集成电路中的特征的至少一个服务器。

该系统可以包括用于初始化集成电路的第一服务器和用于启用集成电路中的特征的不同的第二服务器。优选地,第一服务器和第二服务器具有公共数据库,该公共数据库存储至少多个器件身份,并且可选地,针对每个器件身份,存储一组一个或多个可启用的功能。

第一密钥对可用于器件初始化,并且不同的第二密钥对可用于特征激活。多于一组的不同的密钥对可用于特征激活。第三密钥对或第三组密钥对可用于对通用熔断器进行编程。第四密钥对或第四组密钥对可用于对禁用熔断器进行编程。

附图说明

现在将参照附图通过示例的方式来描述本发明的某些实施例,其中:

图1是集成电路的示意性框图,该集成电路包括一次性可编程非易失性存储器和用于该一次性可编程非易失性存储器的存储器控制器,以及可信服务器;

图2是初始化器件身份的方法的过程流程图;

图3a到图3d图示器件身份初始化期间的步骤;

图4是启用器件中的功能的方法的过程流程图;

图5a到图5d图示功能启用期间的步骤;

图6a和图6b是用于将集成电路连接到可信服务器的第一布置和第二布置的示意性框图;

图7图示包括至少一个已初始化和启用的集成电路的工业系统;并且

图8图示包括已经被初始化和启用的集成电路的机动车辆。

具体实施方式

图1图示集成电路1(本文也称为“半导体器件”或简称为“器件”)和远程定位的(或“外部的”)可信服务器2。集成电路1可以采用任何可特征化的集成电路的形式,例如,微控制器或片上系统。集成电路1和可信服务器2可经由可选通信设备(未示出)进行通信,可选通信设备诸如移动通信设备。

集成电路1

在制造之后,集成电路1具有有限的一组特征(本文也被称为“功能”),例如wo2015/124673a1中所描述的,其通过引用并入本文。然而,集成电路1可以基于使用非对称加密过程将唯一身份编程到片上、一次性可编程非易失性存储器3中,以及然后基于唯一身份选择性地启用功能,而由可信服务器2激活。

如下文将更详细地解释的,集成电路1仅在一旦已经验证了采用可信服务器2已经生成的明文消息形式的签名时,才启动对一次性可编程非易失性存储器3的编程过程。由于签名的验证是基于使用硬线连接到器件1中的公钥的公钥密码系统,因此器件1中没有可以被窃取和复制的私钥或秘密数据。

参考图1,集成电路1包括一次性可编程(otp)非易失性(nv)存储器3、内部总线接口4、知识产权(ip)功能启用器5、真随机数生成器(trng)6、otpnv存储器控制器7(本文也称为“熔断器rom控制器”、公共加密引擎8、输入/输出(i/o)接口9和可选的环形振荡器10。集成电路1可以包括其他元件,诸如一个或多个中央处理单元、总线系统、易失性存储器、非易失性存储器、通用输入/输出模块、通信控制器和其它为了清晰而省略的外围模块。

可信服务器2采用通用计算机系统的形式,该通用计算机系统包括至少一个中央处理单元(未示出)、存储器(未示出)和网络接口模块(未示出)。可信服务器2可以包括加密处理器11和/或可以包括合适的安全模块,诸如硬件安全模块(hsm)。可信服务器2包括或可访问用于存储器件身份的存储12。

一次性可编程非易失性存储器3采用熔断器只读存储器3(或“熔断器rom”)的形式。然而,可以使用反熔断器只读存储器或其他类似类型的一次写入、多次读取的非易失性存储器。一次性可编程非易失性存储器3包括熔断器的组13(本文也称为“域”或“存储器部分”)或可编程并用于永久存储数据的其他一次性可编程非易失性存储器元件。在本文中,为了简洁,术语“熔断器”可以用来指一次性可编程非易失性存储器元件,并且术语“熔断器rom”可以用来指一次性可编程非易失性存储器。此外,术语“烧录(blowing)”可以用来指对一次性可编程非易失性存储器进行编程。熔断器域13包括:用于存储集成电路的唯一身份的域14、用于指示器件身份域是否有效的域15、用于启用器件功能的功能启用熔断器16、可用于永久性禁用一个或多个器件功能的禁用熔断器17、通用熔断器的域18和用于指示相应的通用熔断器是否有效的熔断器有效域19。

永久禁用功能可以在集成电路的寿命结束时使用,或者在特定的功能(例如,加密功能)不应该被启用的情况下(例如,由于出口控制)使用。

器件身份熔断器14的数量足够大,以针对每个集成电路1存储唯一身份编号,并且可选地,以编码其他信息,诸如工厂身份、oem身份、生产日期等。例如,可以存在至少32个和多达128个或更多个器件身份熔断器16。

器件身份有效域15包括一个熔断器。然而,可以存在不止一个熔断器,例如三个熔断器,例如,用来提供冗余。

功能启用熔断器16的数量对于能够被控制地启用的功能的数量来说是足够大的。例如,可以有至少四个和多达128个或更多个功能启用熔断器16。熔断器的数量可以增加(例如,三倍)以提供冗余。

禁用熔断器17的组包括一个或多个熔断器。例如,可以使用单个熔断器来禁用所有可控制的启用功能,例如,该单个熔断器能够在集成电路1的寿命结束时使用。另外或可替代地,可以为每个可控制的启用功能提供熔断器,使得一旦被编程,该功能永久且不可撤销地被禁用。这可以用来帮助进一步防止非法功能启用。另外或可替代地,这可以用于在一个以上国家中销售的集成电路,但它具有在某些国家中禁止的功能(诸如加密功能)。

通用熔断器18的数量可以是零、一个或多于一个。在某些情况下,可能有几千个通用熔断器18。

通用有效熔断器19的数量可以是一个或多个。例如,用于所有通用熔断器18的一个熔断器19。可替代地,对于一组通用熔断器18存在熔断器19和/或针对每个通用熔断器18存在熔断器19。

内部总线接口4可以采用先进的微控制器总线(amb)或其他合适的片上总线系统的形式,以允许中央处理单元(cpu)或其他处理器或模块读取熔断器13的状态或熔断器13中的一些熔断器的状态。

取决于功能启用熔断器16、禁用熔断器17和通用有效熔断器19,ip功能启用器5提供用于启用一个或多个ip单元20的功能的启用信号。

真随机数生成器6(本文简称为“随机数生成器”)能够向otpnv存储器控制器7传递真随机数。随机数足够长,例如,以抵御重放攻击。随机数生成器6能够生成长为64至512位之间或更长的随机数。

otpnv存储器控制器7(本文也称为“熔断器rom控制器”或“熔断器控制器”)采用硬件逻辑的形式,它实施有限状态机或cpu子系统。otpnv存储器控制器7处理熔断器rom3中的熔断器13的读取和写入(或“编程”)、从真随机数生成器6请求随机数、并且请求经由输入/输出接口9从真随机数生成器6接收的消息的签名验证。otpnv存储器控制器7包括一组内部寄存器21。

公共加密引擎8(本文简称为“加密引擎”)基于非对称加密。它能够创建消息的摘要。此外,它能够基于一组器件内部公钥(即器件身份公钥didpb、通用公钥gppb、特征启用公钥fepb和禁用公钥dpb)来验证消息摘要的签名。加密引擎8由otpnv存储器控制器7控制。

输入/输出接口9允许集成电路1在器件初始化和特征启用期间与外部设备(特别是可信服务器2)交换数据流。输入/输出接口9可以提供到服务器的直接接口,例如以太网控制器,或者可以是到网关控制器的任何形式的i/o接口,诸如到计算机的串行接口,或者到智能电话的蓝牙(rtm)或usb连接。

输入/输出接口9可以连接到总线接口4。因此,来自可信服务器2的消息可以经由输入/输出接口9或经由输入/输出接口9、总线接口4和cpu(未示出)传输到otpnv存储器控制器7。

环形振荡器10可以提供可信时钟,例如,向存储器控制器7提供时钟信号,并且因此避免使用超频或避免使用攻击系统的其他基于时间的方式。

半导体制造厂60(图6a和图6b)制造具有尚未编程的(即,未烧录的)熔断器13的集成电路1(这是多个中的一个)。只要功能启用熔断器16和id有效熔断器15不被烧录,功能启用器15就可以阻止部分或全部特征20。

现在将描述特征化的过程。特征化通常包括两个阶段,即器件身份初始化阶段和特征启用阶段。

器件身份初始化

图2是器件身份初始化的方法的过程流程图。

参考图2和图3a,当操作开始时,otpnv存储器控制器7验证没有熔断器13已经被编程(步骤s1)。如果otpnv存储器控制器7确定没有熔断器13已被编程,则它从随机数生成器6请求第一随机数22(步骤s2),并将其存储在内部寄存器21中(步骤s3)。otpnv存储器控制器7将第一随机数22发送到器件1之外的可信服务器2,即片外(步骤s4)。

参考图2和图3b,可信服务器2创建包括随机数22的副本24和待烧录的器件身份25的消息23(步骤s5)。可信服务器2使用私钥didrp(步骤s7)生成创建的消息23的摘要(未示出)(步骤s6)以及该摘要(未示出)的签名27(步骤s7)。可信服务器2将包括消息23和签名27的数据包28传输到otpnv存储器控制器7(步骤s8)。

otpnv存储器控制器将所接收的随机数22的副本24与存储在其内部寄存器21中的随机数22进行比较(步骤s9和步骤s10)。如果两个随机数22、24不相等,则otpnv存储器控制器7停止初始化过程。如果两个随机数匹配,则otpnv存储器控制器7请求公共加密引擎8创建所接收的随机数24和待烧录的器件身份25的摘要(未示出)(步骤s11)。

otpnv存储器控制器7请求加密引擎8,以使用公钥didpb验证本地生成的摘要(未示出)的签名27(步骤s12和步骤s13)。如果本地生成的摘要(未示出)的签名27无效,那么otpnv存储器控制器7停止初始化过程。

参考图2和图3c,otpnv存储器控制器7将期望的器件身份25烧录到器件身份域14中。otpnv存储器控制器7读取回存储在烧录的器件身份熔断器14中的器件身份31,并将其与期望的器件身份25进行比较(步骤s15和图s16)。如果烧录的器件身份31和期望的器件身份25不同,那么otpnv存储器控制器7停止初始化。

参考图2和图3d,在烧录的器件身份31与期望的器件身份25匹配的情况下,otpnv存储器控制器7用值32烧录身份有效熔断器15(步骤s17)。otpnv存储器控制器7读取回身份有效熔断器15的值33并检查值33(步骤s18和图s19)。如果熔断器15被烧录,那么然后,otpnv存储器控制器7向可信服务器2发送消息34,通知可信服务器2已成功完成了器件身份初始化过程(步骤s20)。

每个器件身份25是唯一的,并且可以指示生产现场60的身份(图6a和图6b)。即使在多个生产现场60(图6a和图6b)上制造器件1,可信服务器2也会维护器件身份的数据库(未示出)。根据需要,可以在若干位置中的任意一个位置处编程器件身份25,例如在制造厂(或“工厂”)、包装或测试现场、分拣工厂、原始设备制造商(oem)生产现场或最终客户现场。

功能启用

图4是在已初始化的器件1中启用功能(本文也称为“特征”)的方法的过程流程图。功能启用可以被多次执行,每次初始化一个或多个新特征。

参考图4和图5a,otpnv存储器控制器7验证器件身份熔断器14包含身份,并且验证身份有效熔断器15已被烧制(burn)(步骤s21)。如果器件身份熔断器14为空白和/或身份有效熔断器15未被烧录,那么otpnv存储器控制器7停止特征启用过程。

otpnv存储器控制器7从随机数生成器6请求第二随机数35,并将数字35存储在内部寄存器21中(步骤s22和步骤s23)。

参考图4和图5b,otpnv存储器控制器7将存储在功能启用熔断器16中的随机数35、器件身份31、身份有效值33、值36以及存储在禁用域17中的值37发送到可信服务器2(步骤s24)。

该功能启用熔断器16和禁用熔断器17可以存储值36,37,这些值是原始的或者这些值已经从前一轮的功能启用被写入。

参考图4和图5c,可信服务器2创建第二消息38,第二消息38包括所接收的随机数35的副本39、所接收的器件身份31的副本40、身份有效值33的副本41、待烧录的功能启用熔断器42和存储在禁用域37中的值37的副本(步骤s25)。可信服务器2创建所创建的消息38的摘要(未示出)(步骤s26),并使用私钥fepr生成摘要(未示出)的签名45(步骤s27)。可信服务器2发送回带有消息38和签名45的数据包46。

类似的过程可以用于禁用功能。在这种情况下,可信服务器2创建第二消息38,第二消息38包括所接收的随机数35的副本39、所接收的器件身份31的副本40、身份有效值33的副本41、存储在功能启用熔断器42中的值36的副本和待烧录的禁用值43。

otpnv存储器控制器7将所接收的随机数39与所存储的随机数35进行比较(步骤s29和步骤s30)。如果数35、39不相等,那么熔断器控制器7停止特征启用过程。

otpnv存储器控制器7将所接收的器件身份40、所接收的有效值41、所接收的禁用值43与值31、33、37进行比较(步骤s31和步骤s32)。如果它们不同,那么otpnv存储器控制器7停止特征启用过程。

otpnv存储器控制器7请求加密引擎8以创建所接收的消息38的摘要(未示出)(步骤s33),并请求加密引擎8用公钥fepb来验证摘要(未示出)的签名45(步骤s34和步骤s35)。如果签名45无效,那么otpnv存储器控制器7停止特征启用过程

参考图4和图5d,otpnv存储器控制器7将功能启用42烧录到熔断器16(步骤s36)。otpnv存储器控制器7读取回存储在烧录的熔断器16中的值49,并将其与期望的熔断器启用值42的值进行比较(步骤s37和步骤s38)。如果值是相同的,那么otpnv存储器控制器7发送消息50,通知可信服务器2已经成功完成了特征启用过程(步骤s39)。可信服务器2更新其数据库(未示出)以在器件1中记录启用的功能或附加功能。

功能启用熔断器16没有相应的有效熔断器。可以重复特征启用过程,并且所得的功能集是启用功能的析取(disjunction)。这可以允许在生产中不同位置处的功能升级。

功能禁用

可以以与使用禁用密钥对dpr/dpb来对功能启用熔断器16进行编程类似的方式对禁用目的熔断器17进行编程。

通用熔断

可以以与使用通用密钥对gppr/gppb来对器件身份14和功能启用熔断器16进行烧录类似的方式对通用熔断器18进行烧录。

通用熔断器18可以用于多种不同的用途。例如,通用熔断器18允许oem将oem特定的信息或数据(诸如公钥)烧录到器件1中。通用熔断器18也可以用于将调整值(trimvalue)(或“修整(trimmings)”)烧录到器件1中。通用熔断器18也可以用于将生产测试日志存储到器件中,诸如在晶圆中的器件的x-y位置。

可信服务器

参照图6a,示出用于操作集成电路1和可信服务器2的第一布置。第一布置通常意在当集成电路1和可信服务器2能够在线通信时使用。

可信服务器2由供应商操作,即具有生产集成电路1的权限的实体,诸如瑞萨电子公司(rtm)。供应商将制造或其他生产活动(诸如包装)外包给操作生产或其他类型的现场60的另一实体。

网关61位于生产现场60处,生产现场60提供集成电路1与可信服务器2之间的接口。网关61将认证器件1与可信服务器2连接、并且可选地对器件1进行认证、并转发集成电路1与可信服务器2之间的业务。在这种布置中,只有可信服务器2签署消息并保持私钥。这可以有助于最大化安全性。

参照图6b,示出用于操作集成电路1和可信服务器2的第二布置。即使在集成电路1和可信服务器2离线(即不总是在通信中)时,也能够使用第二布置。

与第一布置类似,可信服务器2由供应商操作,并且供应商将制造或其他生产活动外包给操作生产现场60的另一实体。

本地可信服务器62位于生产现场60。本地可信服务器62被授权使用预先分配的器件身份来初始化预定义数量的或预定义组的集成器件1。在这种布置中,本地可信服务器62能够对消息进行签名。

密钥

使用用于烧录和验证器件身份熔断器的不同公钥,通用熔断器和功能启用熔断器可以帮助在可信服务器2和本地可信服务器62的配置和功能中提供灵活性。

例如,单个可信服务器2可以用于编程所有熔断器。可替代地,可信服务器2可以用于处理器件身份初始化,并且另一个其他可信服务器2可以用于处理功能启用。

此外,其他可信服务器2,即特征解激活服务器或器件解激活服务器可以用于处理特征或器件的解激活。

使用多于一个服务器并向服务器2分配不同的角色,尤其是如果在不同的阶段使用不同的密钥集,则可以帮助提高安全性。

安全内容熔断

再次参考图1,通用熔断器18可以用于存储安全内容(未示出)。特别地,如果生产现场60(图6a)被认为是不可信赖的,那么通用熔断器61可以在制造之后被烧录,例如,在原始设备制造商(oem)现场。

伪造保护

本文描述的布置和方法可以帮助减少或防止伪造,该伪造是在不受信任的生产场所制造或处理集成电路而产生的结果。不可信的生产现场针对器件身份向可信服务器发送请求。如果不影响由集成电路1生成随机数,则不可信的生产现场的重放攻击不工作。

随机数生成

由集成电路1生成的任意随机数应该是真正随机的,并且应该能够承受侧信道攻击。

集成电路1应该被配置为在测试或扫描模式下不可能进行熔断器烧录。

半导体器件可以在扫描模式下工作。扫描模式用于确保器件按期望的方式生产。在扫描模式下,器件的所有寄存器以链的形式布置。测试器件(未示出)预加载链并执行例如功能模式的一个时钟周期。然后,测试器件读出并清空扫描链,并通过比较参考功能输出与移位的扫描值(即触发器内容)来确定功能模式的一个时钟周期是否成功地操作。

这种模式可以为攻击者提供绕过状态机的顺序操作的可能性。攻击者可以用任何内容预加载器件状态机,并执行一个或多个功能周期。例如,他们可以用表示随机数匹配且签名有效(步骤s13;图2)的内容来预加载熔断器rom控制器7,并将身份烧录到熔断器14中(步骤s14;图2)。然后攻击者可以加载状态(步骤s16;图2)并烧录身份有效熔断器31(步骤s17;图2)。

然而,通过抑制扫描模式下的熔断,可以防止这种类型的攻击。

应该使用足够长的随机数来防止不可信的生产现场记录器件身份激活模式和尝试可能的重放攻击。

即使没有启用器件特征,它们在制造厂中也可以是可测试的。例如,除了扫描测试之外,器件有时在功能测试模式下操作,以实现更高的覆盖率。可能有一种特殊的测试模式,使器件的特征与正常操作无关。例如,在测试模式下,可以独立于熔断器设置但用非常有限量的cpu存储器来启用特征。有限的cpu存储器将不足以创建一个真正的应用程序,但足以测试特征功能。

消息签名实施

现有的签名算法或椭圆曲线数字签名算法(ecdsa)可用于对消息进行签名。从存储器需求的角度来看,ecdsa植入是有效的,因为与传统的现有签名算法相比,密钥长度是小的。

集成电路的使用

参考图7,一个或多个集成电路1(如果有多个集成电路,不必相同)可以用于工业系统71中,诸如在工业厂房中发现的机器人、电表或智能卡读取器(未示出)。

另外参考图8,多个集成电路1(不必相同)可用于机动车辆81中。

如前面所解释的,集成电路1中的特征在制造时不一定必须启用,但在集成到组装系统71、81中之后可以被启用。

现场启用特征可以帮助最小化(甚至防止)使用伪造集成电路,因为可以更严格地控制特征启用。此外,特征启用可以使伪造产品变得更加难以制造并难以成功地销售,因为对于伪造制造oem来说,获得和激活具有必要启用功能的集成电路更加困难。

应理解的是,可以对前面描述的实施例进行许多修改。

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