秘密数据的安全编程的制作方法

文档序号:14213263阅读:260来源:国知局
秘密数据的安全编程的制作方法

本发明涉及提供秘密数据的安全编程,其特别适用于,但绝不仅限于在制造片上系统设备或对片上系统设备进行最终编程时的秘密数据编程。



背景技术:

当制造例如片上系统设备等设备时,可以利用秘密数据(例如加密密钥、密码和/或其他机密数据)进行个性化。设备的制造商通常在创制晶片时或在封装设备前嵌入秘密数据。因此,对于制造商而言秘密数据必须是可获得的,这可能导致安全问题,因为数据可能会通过安全漏洞或不法活动泄露给不应当访问数据的人。减轻这种风险的一种方法是,向制造商提供“黑盒”,该“黑盒”能够解密已经由秘密数据提供者进行了预加密的秘密数据,并能够与制造商的编程系统进行通信,使得秘密数据能够在适当时间被释放,以便嵌入到设备上。

这样的“黑盒”是维护和运行十分昂贵的系统。一种不使用“黑盒”的做法是在最终封装时直接在所讨论的设备上解密经加密的秘密数据。这可以通过实施在设备上的特定模块来实现,该特定模块可以是安全元件。安全元件具有自定义算法知识,以及仅对于秘密数据提供者是已知的一个或多个特定的加密/解密密钥,以解密秘密数据。进一步地,只有通用算法和密钥集可以被使用,因为为每个待编程的设备发送单独的集将是过于昂贵和不切实际的。安全元件可以由秘密数据提供者以网表的形式发送给制造商。网表并入到设备设计中。

这种秘密数据发送和设备编程方案依赖于网表保持机密。如果网表对于未授权的一方变得可获得的,算法和秘密的加密/解密密钥将能够用于解密秘密数据。因此,该网表是一单点故障,并因此存在安全风险。

因此,期望提供具有更高安全性的替代的秘密数据的编程。



技术实现要素:

根据第一方面,提供了一种如权利要求1定义的方法。提供了一种方法,包括:提供一设备,该设备包括连接至非易失性存储器的安全元件,该非易失性存储器包括存储在其中的第一加密密钥,安全元件使用第一加密密钥解密和认证第一秘密数据,以形成第二秘密数据;然后将第一加密密钥的真实值呈现为不可读的。

可选地,该方法还包括:安全元件使用第二加密密钥加密和标记第二秘密数据以形成第三秘密数据,该第二加密密钥仅对于安全元件是已知的,并将第三秘密数据存储到非易失性存储器中。

可选地,该方法还包括:安全元件通过利用硬连线至安全元件中的密钥解密和认证加密密钥数据,以导出第一加密密钥。

可选地,该方法还包括:安全元件将第一加密密钥写入到非易失性存储器中。

可选地,该方法还包括:在解密和认证之前,将第一秘密数据存储到非易失性存储器中。

可选地,该方法还包括:安全元件通过不可逆地改变存储在非易失性存储器中的第一数据的至少一部分,将第一秘密数据的真实值呈现为不可读的。

可选地,该方法还包括:安全元件根据包含在其中的物理不可克隆功能提供第二加密密钥。

可选地,该方法还包括:安全元件通过改变第一加密密钥的至少一位的状态,不可逆地改变第一加密密钥的至少一部分,然后锁定存储的第一加密密钥以防止进一步的改变,从而将第一加密密钥的真实值呈现为不可读的。

可选地,该方法还包括:安全元件利用第二加密密钥解密和认证第三秘密数据。

可选地,在该方法中,非易失性存储器包括一次性可编程存储器。

可选地,在该方法中,非易失性存储器只能够由安全元件访问。

可选地,该方法中,该设备是soc设备。

根据第二方面,提供了一种如所附的权利要求中的权利要求10定义的设备。提供了一种设备,该设备包括:安全元件,其连接至非易失性存储器,该非易失性存储器布置为保存存储在其中的第一加密密钥,该安全元件配置为使用第一加密密钥解密和认证第一秘密数据,以形成第二秘密数据,然后将第一加密密钥的真实值呈现为不可读的。

可选地,在该设备中,安全元件还配置为使用第二加密密钥加密和标记第二秘密数据,以形成第三秘密数据,该第二加密密钥仅对于安全元件是已知的,并将第三秘密数据存储到非易失性存储器中。

可选地,在该设备中,安全元件还配置为通过利用硬连线至安全元件中的密钥解密和认证加密密钥数据,以导出第一加密密钥。

可选地,在该设备中,安全元件还配置为将第一加密密钥写入到非易失性存储器中。

可选地,在该设备中,在解密和认证之前,第一秘密数据存储在非易失性存储器中。

可选地,在该设备中,安全元件还配置为通过不可逆地改变存储在非易失性存储器中的第一数据的至少一部分,将第一秘密数据的真实值呈现为不可读的。

可选地,在该设备中,安全元件还配置为根据包含在其中的物理不可克隆功能提供第二加密密钥。

可选地,在该设备中,安全元件配置为:安全元件通过改变第一加密密钥的至少一位的状态,不可逆地改变第一加密密钥的至少一部分,然后锁定存储的第一加密密钥以防止进一步的改变,从而将第一加密密钥的真实值呈现为不可读的。

可选地,在该设备中,安全元件还配置为利用第二加密密钥解密和认证第三秘密数据。

可选地,在该设备中的非易失性存储器包括一次性可编程存储器。

可选地,在该设备中的非易失性存储器只能够由安全元件访问。

可选地,该设备是soc设备。

根据第三方面,提供了一种如权利要求14定义的计算机可读介质。因此提供了一种计算机可读介质,其包括指令,当这些指令被执行时,使得处理器执行在本文中公开的任何方法。

在所有方面,在从属权利要求中定义了优选的和可选的特征。

附图说明

现在将通过举例的方式,结合以下附图,描述实施例:

图1说明了根据实施例的安全设备;以及

图2说明了根据实施例的方法。

在附图中,相似的元件始终由相似的附图标记表示。

概述

本文公开了一种包括非易失性存储器的设备10,其可以是任何能够编程有秘密数据的设备,例如pld(programmablelogicdevice,可编程逻辑器件)、fpga(fieldprogrammablegatearray,现场可编程门阵列)或soc(system-on-chip,片上系统)。秘密数据提供为由秘密数据提供者提供的提供者密钥进行加密。秘密数据在设备上以一定的方式解密,使得a)提供者密钥和秘密数据从未在设备外以未加密的状态可访问,以及b)一旦安装了秘密数据,提供者密钥呈现为不可读的,使得对设备的非法攻击不能发现密钥。

使用提供者密钥将秘密数据从初始传递状态解密,并且以设备加密形式将秘密数据本地化存储在设备中,其中设备加密密钥是唯一的并且仅对于设备可知。

利用所公开的设备和方法,去除了设备的网表和提供者密钥都必须可访问以解码秘密数据这个单点故障。此外,通过使用设备唯一的设备加密密钥,即使不法方获得了设备网表的访问权并能读取设备的加密数据,也无法发现在需要时在设备内部创建的设备加密密钥。此外,即使提供者密钥被不法方发现,也可以在未来的设备生产中改变提供者密钥,使得安全漏洞最小化。

具体实施方式

参见图1,设备10包括安全元件12和非易失性存储器14。非易失性存储器可以是一次性可编程存储器,并且可以布置为保存第一加密密钥。该设备还可以包括cpu16、以及rom18和外部ram(未图示)中的一个或两者。设备10的各个组成部分可以通过如图所示的总线结构彼此通信。安全元件12可以是只是设备10中能与非易失性存储器14通信的一部分。

现在将描述在设备10上安全地提供秘密数据并安全地解密秘密数据的方法。

参见图2,在步骤25中,将包括(由秘密数据提供者提供的)第一加密密钥的第一秘密数据提供者记录加载到非易失性存储器14中。如图2所示,第一加密密钥可以以两种方式中的一种(通过第一秘密数据提供者记录)加载到非易失性存储器中。在一些实施例中,如步骤21和22所示,安全元件12将第一加密密钥加载到非易失性存储器中,而在其他实施例中,如步骤23和24所示,设备制造商或其他方将第一加密密钥加载到非易失性存储器中,而不涉及安全元件12。

在设备制造方面,安全元件的网表可以包括硬连线的加密密钥以及可选的硬连线的自定义解密/加密算法。在本文中,硬连线是指所讨论的数据是不可修改的。

在步骤21中,安全元件12可以使用硬连线的加密密钥和可选的解密/加密算法来解密和认证包括第一加密密钥的第一秘密数据提供者记录。可以在设备第一次通电时执行步骤21。如果包括第一加密密钥的第一秘密数据提供者记录被成功地解密和授权,在步骤22中,安全元件将第一秘密数据提供者记录以其加密的形式存储在非易失性存储器14中。

在可替代的步骤23和24中,在步骤23中,设备制造商将包括第一加密密钥的第一秘密数据提供者记录以加密的状态加载到非易失性存储器14中,而不涉及安全元件12。其解密可以通过硬连线的加密密钥来完成。在步骤24中,设备制造商将包括第一秘密数据的临时第二秘密数据提供者记录也加载到非易失性存储器14。使用第一秘密数据提供者记录的第一加密密钥,对第二秘密数据提供者记录加密和标记。在步骤23和24中的其中一种或两者中,设备制造商可以使用专用的硬件编程路径(未示于图1中)。在执行所需的数据加载后,硬件编程路径可以通过硬件手段和/或软件手段永久地禁用,硬件手段例如通过熔断相关的保险丝来停用路径,软件手段通过将位编程到非易失性存储器中,使得不能再访问设备外部的非易失性存储器。

在步骤21和22,或步骤23和24之后,在步骤25中,包括第一加密密钥的第一秘密数据提供者记录以加密的状态存在于非易失性存储器14中。

在可替换的方案中,在步骤21后,在步骤22a中,如果包括第一加密密钥的第一秘密数据提供者记录被成功地加密和认证,安全元件可以保留第一加密密钥的副本,然后执行步骤26,而无需将(包括在第一秘密数据提供者记录中的)第一加密密钥存储在非易失性存储器14中。第一加密密钥的副本可以是本地临时副本。

在可能在设备复位之后发生的步骤26中,安全元件12使用(处于解密形式的)第一加密密钥对第一秘密数据进行解密和认证,以形成第二秘密数据。第一秘密数据(来自先前可访问的临时第二秘密数据提供者记录)可以通过可选的步骤24存在于非易失性存储器中,或者第二秘密数据提供者记录可以在可选的步骤27中由秘密数据提供者单独地提供。

在步骤28中,如果解密和认证第一秘密数据以形成第二秘密数据是成功的,安全元件12使用仅对于安全元件是已知的第二加密密钥来加密和标记第二秘密数据,以形成第三秘密数据。然后,安全元件将第三秘密数据存储在非易失性存储器14中。与第二加密密钥一起使用以形成第三秘密数据的算法,可以不同于存在于安全元件中,并且在步骤21中用于解密第一数据提供者记录的算法。

仅对于安全元件12已知的第二加密密钥可以由设备中存在的物理不可克隆功能(physicallyunclonablefunction,puf)生成。puf对于存在于安全元件中的密码算法是可访问的,并且仅对于具有不可读取puf的安全元件的算法是已知的。在每次复位时可以通过puf生成第二加密密钥。有关puf如何运作的机制的细节可以在题为“methodanduniquecryptographicdevicewithaphysicallyunclonablefunction”的us2014/0376717和ep2816757中找到,其内容通过引用并入本文中。应当理解,物理不可克隆功能产生第二加密密钥,该第二加密密钥对于其所存在的特定设备是唯一的,并且即使通过利用显微镜检查该设备的方法或其他检查方法,也不能克隆。这是因为用于生成第二加密密钥的极细微的制造差异是不可再现的或不可预测的。由于制造工艺是不完美的,设备内的部件发生无意识的个性化,其可以变换成可以用于产生唯一标识符的有用的信息。因此,提供了puf,例如,如将理解的,其中的伪随机位序列可以表示从极细微的差异中得到的信息。这可以相应地用于创建唯一加密密钥。

在步骤29中,如果包括第一加密密钥的第一秘密数据提供者记录存在于非易失性存储器中,则第一加密密钥呈现为不可从非易失性存储器读取的。这可以通过擦除和锁定第一加密密钥的至少一部分使得第一加密密钥的真实值被隐藏而实现。例如,第一加密密钥的一些位可以被编程到非易失性存储器中并处于锁定状态,并且其他位可以处于非锁定状态。所有未锁定的位可以被擦除,也就是说,它们可以被重写为“1”或“0”。然后,这些未锁定的位可以被锁定,使得所有的位都被锁定。清楚的是,在这样的擦除操作之后,从该时间点起,第一加密密钥的真实值将是不可读的。在一个示例中,所有未锁定的“1”位可以被重写为“0”,并且所有未锁定的“0”位可以被重写为“1”。

作为步骤29的结果,由于所需的密钥(第一加密密钥)是不可读的,第一秘密数据不再可以被解密和认证。

步骤28和29可以按顺序交换。

在步骤30中,如果非易失性存储器14包括经过可选的步骤24的临时第二秘密数据提供者记录,则安全元件通过与步骤29中的第一秘密数据提供者记录/第一密钥相同的机制,将临时第二秘密数据提供者记录的真实值呈现为不可读的。

在步骤31以及后续活动中,安全元件12能够根据需要使用第二加密密钥从非易失性存储器14中解密和认证第三秘密数据(其是第一秘密数据的设备特定加密副本)。因此,(最初包含在第二个秘密数据提供者记录中的)第一秘密数据在运行时可访问,并且可以按照正在执行的应用程序的要求使用。

步骤31可以在设备复位后发生。该设备可以被认为是在正常运行模式下运行,而不是在步骤21、22、22a和25至30的编程模式下运行。在设备随后的复位后,设备可以从步骤31开始以运行模式运行,因为第一秘密数据已经以安全的方式传递到非易失性存储器14中。是否从步骤31开始运行,可以由安全元件确定是否先前已经由步骤29擦除和锁定了第一秘密数据来确定。

可以看出,从步骤31起(这是在对非安全用户(即消费者)可访问时设备的状态),第二秘密数据提供者记录(或临时第二秘密数据提供者记录)的秘密数据仅以加密的状态在非易失性存储器中可访问,从而所使用的加密仅可以由加密数据的安全元件解密。在任何时候都没有任何秘密数据在设备之外以未加密(开放)的形式是可访问的,在任何设备之外的地方也没有用于解密和认证第一秘密数据的第一加密密钥是可访问的。

因此,已经提供没有单点故障的秘密数据的安全编程。不合法的一方将需要在制造商处访问第一秘密数据,以获得第一加密密钥和网表,以便制造包括安全元件的设备。

在另一场景中,即使不法方能够从现场设备的非易失性存储器中读取第三数据,并且他有设备的网表,仍然无法获得(由puf生成的)第二加密密钥,因此秘密数据保持加密的,并因此是安全的。

更进一步地,即使第一加密密钥被发现,对于未来的设备制造,可以改变该第一加密密钥,因此减轻了安全漏洞。为了更进一步的安全性,可以由不同于制造(或编程)设备的制造商对第一秘密数据进行传递(步骤27)或编程(步骤24)。

所描述的方法中的一些或全部可以由计算机程序来实现。计算机程序包括计算机可执行的指令或代码,其布置为指示或致使处理器(例如设备10)执行所描述的方法中的一个或多个功能。计算机程序可以提供在计算机可读介质或计算机程序产品上,以提供给装置,例如设备10。计算机可读介质或计算机程序产品可以包括非暂时性介质,例如半导体或固态存储器、磁带、可移动的计算机存储棒或软盘、随机存取存储器(ram)、只读存储器(rom)、刚性磁盘、以及光盘(例如cd-rom、cd-r/w、dvd或蓝光光盘)。计算机可读介质或计算机程序产品可以包括用于数据传输的传输信号或介质,例如用于通过互联网下载计算机程序。

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