CN103378966A - 安全动态片上密钥编程 - Google Patents
安全动态片上密钥编程 Download PDFInfo
- Publication number
- CN103378966A CN103378966A CN2012101273647A CN201210127364A CN103378966A CN 103378966 A CN103378966 A CN 103378966A CN 2012101273647 A CN2012101273647 A CN 2012101273647A CN 201210127364 A CN201210127364 A CN 201210127364A CN 103378966 A CN103378966 A CN 103378966A
- Authority
- CN
- China
- Prior art keywords
- integrated circuit
- key
- confidential data
- encrypted
- transmission security
- 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.)
- Pending
Links
Images
Abstract
本发明涉及安全动态片上密钥编程。一种为集成电路100提供机密数据的方法,所述方法包括:在所述集成电路中,接收310加密的机密数据,其中所述加密的机密数据是已利用传输密钥加密的;在所述集成电路中,通过对客户标识符应用密钥导出函数来导出320所述传输密钥,所述客户标识符先前已被存储在所述集成电路中;在所述集成电路中,利用所述传输密钥来解密330所述加密的机密数据,以获得解密的机密数据;在所述集成电路中,通过对集成电路标识符应用密钥导出函数来导出340产品密钥,所述集成电路标识符先前已被存储在所述集成电路中;在所述集成电路中,利用所述产品密钥来加密350所述解密的机密数据,以获得重新加密的机密数据;以及将所述重新加密的机密数据存储360在所述集成电路的机密数据存储器中。
Description
技术领域
本发明涉及为集成电路提供机密数据的方法,所述方法包括在集成电路中接收器密数据,并且将机密数据存储在集成电路的机密数据存储器中。
本发明还涉及集成电路。
背景技术
大多数现代设备需要提供(provisioning with)机密数据。这些设备包括:处理诸如金融和内容之类的有价值信息的设备;例如机顶盒、移动电话、智能卡、平板电脑(tablet)等。然而对于安全的提供存在更多的需求,例如,需要安全引导过程(secure boot process)以保持固件私有性的设备需要秘密密钥。机密数据还包括特征配置数据,所述特征配置数据确定了设备或应用的哪些特征被启用。
需要这两种提供应用(applications of provisioning)的一种具体设备是汽车无线电。汽车无线电应用具有专有固件,所述独占固件需要例如通过对所述专有固件加密和安全引导来实现的保护。汽车无线电应用还需要针对DRM应用的秘密密钥。
秘密密钥(具体地,对称密钥)的提供可以是非常昂贵的过程。一个原因是需要将密钥从产该生密钥的设备传输至插入该密钥的设备。对于安全密钥传输和加载存在硬件解决方案,但是这些方案可能需要巨大的操作开销,并且典型地是成本过高的。
一种可能性是,集成电路制造商的客户经由安全通道向工厂中的封闭并且安全的环境发送密钥。这种安全环境的设立和维护成本很高。第二个问题在于,需要在IC中对这种密钥编程,并且传统上测试设备经由例如JTAG接口向IC以明文形式(in the clear)发送这种密钥。测试器需要生成正确的编程序列,以在诸如eFuse之类的一次性可编程存储器中对密钥编程。因为需要逐比特对eFuse编程,所以这种编程序列是耗时的。
发明内容
有利的是具有一种为集成电路提供机密数据的改进方法。
提供了一种为集成电路提供机密数据的有利方法。所述方法包括:在所述集成电路中,接收加密的机密数据,所述加密的机密数据是利用传输密钥加密的;在所述集成电路中,通过对客户标识符应用密钥导出函数来导出所述传输密钥,所述客户标识符先前已被存储在所述集成电路中;在所述集成电路中,利用所述传输密钥解密所述加密的机密数据,以获得明码(plain)机密数据;在所述集成电路中,通过对集成电路标识符应用密钥导出函数来导出产品密钥,所述集成电路标识符先前已被存储在所述集成电路中;在所述集成电路中,利用产品密钥来加密明码机密数据,以获得重新加密的机密数据;以及将所述重新加密的机密数据存储在所述集成电路的机密数据存储器中。
在创建之后,机密数据不需要在集成电路的工作存储器外部以明文形式出现。机密数据到达,准备好以加密形式提供。用于加密的密钥不需要在提供过程中可用。事实上,在集成电路中接收加密形式的机密数据。因此,提供方法仅仅需要通过加密的材料而无需高度安全性。因为传输密钥是在集成电路本身中导出的,所以不需要向集成电路提供传输密钥。密钥导出函数的细节不需要在提供期间在集成电路的外部可用。一旦在集成电路中利用取决于集成电路ID的密钥对机密数据重新加密,那么即使从机密存储器逆处理(reversed engineer)机密数据,该机密数据在集成电路的外部也是无用的,原因在于逆处理后的机密数据是加密的。
尽管利用传输密钥加密的机密数据是可用的,但是阻止了攻击者将该机密数据本身插入机密存储器,原因在于该机密数据需要利用在集成电路外部不可用的产品来重新加密。
例如,在实施例中,可以如下分发机密数据。通过对客户标识符应用密钥导出函数来导出传输密钥;该步骤可以由第一位置处的第一方来执行。第一方可以是例如卡或IC制造商。然后,由第一方向客户发送该传输密钥。客户是选择用于提供的机密数据(例如密钥)的一方。客户可以知道其自己的客户标识。优选地,并没有为客户给出用于导出该传输密钥的所有元素,例如,客户并不具有客户标识符、密钥导出函数、或者密钥导出函数可能依赖的主传输密钥(master transport key)。客户使用该传输密钥加密机密数据。例如,客户可以产生秘密密钥或配置数据等。客户向编程设备发送加密的数据。编程设备不具有传输密钥,并且不能够解密机密数据。通过使用本文描述的提供的方法之一,向集成电路发送加密的机密数据,使得机密数据在集成电路的外部不是明文形式的。
集成电路可以是CMOS电路。集成电路可以是更大型电路板、智能卡、或计算机等的一部分。
机密数据可以包括一个或多个秘密密钥。机密数据还可以由秘密密钥组成。机密数据可以包括用于配置集成电路的配置数据。配置数据可以指示集成电路的哪些特征被启用和集成电路的哪些特征被禁用。机密数据可以包括专有软件,例如音频处理算法。
可以通过使用测试设备,例如使用JTAG接口,来执行在集成电路中接收数据。
可以通过使用密码(cryptographic)加密算法,来利用传输密钥加密机密数据。对称加密算法是优选的。示例算法包括AES、Blowfish、Twofish等。解密需要与加密算法相对应的解密算法。为了利用产品密钥重新加密机密数据,优选地使用相同的算法,原因在于这允许重用(re-use)引擎。
存在可以用于导出传输密钥或产品密钥的多种密钥导出函数。优选地,使用相同的算法来导出这两种密钥,但是这并非是必须的。
在密码学(cryptography)中,典型地密钥导出函数(或KDF)通过使用伪随机函数来根据秘密值(例如主密钥)和标识符导出秘密密钥。密钥导出函数可以通过将主密钥与不同的其它数据(例如,客户标识符或集成电路标识符)相组合,来导出不同的秘密密钥。其它数据可以是秘密程度低的,或者甚至是公共的。这种密钥导出函数的示例包括键控密码散列函数(keyed cryptographic hash function)以及在IEEE Std1363-2000中定义的KDF1。
密钥导出函数可以访问主密钥,例如在集成电路上存储的主传输密钥。主密钥用作密钥导出中的秘密部件。主密钥可以被存储在集成电路中。优选地,可以在集成电路中(例如,ROM中或者甚至是门电路中)对主密钥硬编码(hard code)。还可以通过将函数分量(composition)应用于主密钥和密钥导出函数,来隐式存储秘密。在后一种形式中,针对特定秘密固定密钥导出函数。后一种方法甚至还可以被扩展为:具有以白箱(whitebox)实现的形式实现的密钥导出函数,将标识符作为输入,并且具有固定主密钥。
针对密钥导出的一种有利选择是,利用AES算法根据主传输密钥和客户ID来导出传输密钥。具体地,如果AES算法还用于解密和/或重新加密步骤,则这节约了硬件。类似地,可以利用AES算法根据主传输密钥和集成电路标识符来导出产品密钥。
在实际实现中,可以如下将AES用于密钥导出:将主密钥用作AES密钥,并利用AES和主密钥来加密客户或IC标识符。加密结果是导出的传输密钥或产品密钥。优选地,集成电路包括用于执行AES算法的AES引擎。优选地,以硬件实现AES引擎。可以将AES加密的结果置于AES引擎的内部寄存器中,使得其结果相对于集成电路中对内部寄存器没有访问权的部件而被屏蔽。在优选实现中,AES引擎被配置为:接收命令,以将内部寄存器的内容移动到密钥寄存器,使得接下来的加密或解密可以将内部寄存器的内容用作新加密或解密密钥。这样更安全,原因在于密钥不需要离开AES引擎。
客户标识符和/或集成电路标识符可以是被表示为比特串的号码。例如,客户标识符和/或集成电路标识符可以是32、64或128比特长度。
可以多种方式在集成电路中存储客户标识符和/或集成电路标识符。优选地,客户标识符对于特定客户而言是唯一的,或者对于针对该客户的一批集成电路而言是唯一的。可以通过将客户标识符嵌入到在制造集成电路期间使用的ROM掩码中,来将客户标识符存储在集成电路上。
在一个实施例中,集成电路包括安全部分和非安全部分。安全部分包括对称密码引擎(symmetric cipher engine)和控制器,只可通过控制器从所述非安全部件访问该对称密码引擎。对称密码引擎至少用于解密和重新加密。优选地,对称密码引擎也被用于密钥导出。
在优选实施例中,在集成电路中的一次性可编程存储器(例如,eFuse)中存储客户标识符和/或集成电路标识符。为了减少配置时间,集成电路可以包括用于接收整个标识符然后对eFuse编程的电路。尽管这增大了集成电路的尺寸,但是其显著降低了对标识符编程所需的编程周期的数目。例如,集成电路可以接收客户标识符,以及在已经实质上完整地接收了该客户标识符之后,通过集成电路的控制器以每次一个比特的方式将接收到的客户标识符存储在一次性可编程客户存储器中。类似地,集成电路可以接收集成电路标识符,以及在已经实质上完整地接收了该集成电路标识符之后,通过集成电路的控制器以每次一个比特的方式将接收到的集成电路标识符存储在一次性可编程客户存储器中。
在一个实施例中,集成电路的机密数据存储器可以是任何非易失性存储器,例如闪速存储器。优选地,在集成电路的一次性可编程存储器(例如,eFuse)中存储重新加密的机密数据。
对于标识符的编程,有利的是,可以在已经完整地接收了加密的机密数据之后存储重新加密的机密数据,这减少了集成电路的配置时间,其中配置集成电路是昂贵的过程。在实施例中,通过集成电路的控制器以每次一个比特的方式将重新加密的机密数据存储在一次性可编程存储器中。例如,优选地,可以在多个周期(例如,每次一个比特)对eFuse存储器编程。
有利的是,验证所存储的重新加密的数据是正确的;例如,在编程期间检测错误或篡改。如果机密数据是秘密密钥或者包括秘密密钥,则有利的验证方法使用测试向量。首先,典型地通过如下方式来获得秘密密钥:在集成电路内利用产品密钥来解密在集成电路的机密数据存储器中存储的重新加密的秘密密钥,以获得结果密钥。验证结果密钥是否是期望的秘密密钥。可以想到,在集成电路内利用产品密钥来解密在集成电路的机密数据存储器中存储的重新加密的秘密密钥是集成电路在实践(例如,安全引导或DRM应用)中需要秘密密钥时将要执行的过程。在获得结果密钥之后,利用该结果密钥来加密嵌入集成电路中的测试向量,以获得计算出的指纹。将计算出的指纹与期望的指纹相比较。有趣的是,在编程设备中不需要知道所述测试向量。期望的指纹可能已经在相同位置处获得或者由产生秘密密钥的同一方获得。在比较计算出的指纹的位置处,典型地在编程设备处,只需要期望的指纹。因此,可以将测试向量以只读方式嵌入集成电路中,例如嵌入ROM中或门电路中。如果计算出的指纹和期望的指纹相同,则实质上证实了(assure)密钥被正确地存储了,因而不需要在集成电路的外部知道明码形式的秘密密钥。
验证存储的秘密密钥的另一种方法是,将秘密密钥的校验和添加到机密数据中。校验和可以是测试向量的加密形式,但是也可以是散列或CRC。优选地,可以例如使用CRC(如,CRC-32或CRC-64),在硬件中实现校验和,更优选地利用具有相对少的门电路的硬件(例如少于用于AES引擎的门电路的10%的硬件)来实现校验和。可以在安全引导序列期间使用该校验和来计算在机密存储器中存储的密钥的校验和。将计算出的校验和与接收到的校验和相比较。如果计算出的校验和与接收到的校验和不匹配,则安全引导序列将停止并且集成电路不可用。在实施例中,接收利用传输密钥加密了的校验和,利用该传输密钥解密该校验和,以及在将该校验和存储在机密存储器之前,利用产品密钥重新加密该校验和。
本发明的另一方面涉及分发机密数据。分发机密数据包括:通过将密钥导出函数应用于客户标识符来导出传输密钥,向客户发送所述传输密钥;在所述客户处,利用所述传输密钥加密机密数据;向编程设备发送加密的机密数据;以及在所述编程设备处为集成电路提供所述加密的机密数据。优选地,使用根据本发明的,例如根据权利要求1所述的为集成电路提供加密的机密数据的方法来实现为集成电路提供加密的机密数据。
本发明的另一方面涉及一种被配置为提供机密数据的集成电路,所述集成电路包括:接收器,被配置为在所述集成电路中接收加密的机密数据,其中所述加密的机密数据是利用传输密钥加密的;客户标识符存储器,被配置为存储客户标识符;传输密钥导出器,被配置为在所述集成电路中,通过将密钥导出函数应用于所述客户标识符来导出所述传输密钥;解密模块,被配置为在所述集成电路中,利用所述传输密钥来解密所述加密的机密数据,以获得解密的机密数据;集成电路标识符存储装置,被配置为存储集成电路标识符;产品密钥导出器,被配置为在所述集成电路中,通过将密钥导出函数应用于所述集成电路标识符,来导出产品密钥;加密模块,用于在所述集成电路中,利用所述产品密钥来加密所述解密的机密数据,以获得重新加密的机密数据;以及机密数据存储器,被配置为存储所述重新加密的机密数据。
有利的集成电路包括,密码引擎(例如,对称密码引擎)、控制器、机密数据存储器和接收器,所述接收器被配置为在集成电路中接收加密的机密数据,所述加密的机密数据是利用传输密钥加密的;控制器的一部分被配置为使用所述密码引擎在所述集成电路中通过将密钥导出函数应用于客户标识符来导出所述传输密钥,所述客户标识符先前已被存储在集成电路中;控制器的一部分被配置为使用所述密码引擎在所述集成电路中利用所述传输密钥来解密所述加密的机密数据,以获得解密的机密数据;控制器的一部分被配置为使用所述密码引擎在所述集成电路中通过将密钥导出函数应用于集成电路标识符来导出产品密钥,所述集成电路标识符先前已被存储在集成电路中;控制器的一部分被配置为使用所述密码引擎在所述集成电路中利用所述产品密钥来加密所述解密的机密数据,以获得重新加密的机密数据;以及控制器的一部分被配置为将所述重新加密的机密数据存储在所述集成电路的机密数据存储器中。
所述控制器的一部分可以以在例如表示状态机状态的门电路的形式来实现,或者以控制软件编程的指令的形式来实现。所述密码引擎被配置为运行对称密码,例如块密码(block cipher),来进行加密或解密。
可以以集成电路中的硬件来实现本发明的方法。例如,有限状态机(finite state machine)可以处理各种步骤和转换。硬件实现是优选的;然而,还可以以集成电路中存储的并适于由集成电路的处理器执行的计算机指令来实现本发明。具体地,可以以软件来执行解密、重新加密和密钥导出。备选地,可以以专用硬件(例如,AES引擎)来执行解密、重新加密和密钥导出,而以软件来进行控制。另一方面,也可以以硬件来执行控制。可以通过适当的接口,例如JTAG接口,来执行信息的接收。
可以在计算机上以由计算机实现的方法的形式来实现根据本发明的方法,或者以专用硬件来实现根据本发明的方法、或者以二者组合的形式来实现根据本发明的方法。可以在计算机程序产品上存储用于根据本发明的方法的可执行代码。计算机程序产品的示例包括存储器设备、光存储器设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括在计算机可读介质上存储的非临时性程序代码装置,当在计算机上执行所述程序产品时,所述非临时性程序代码装置用于执行根据本发明的方法。
在优选实施例中,计算机程序包括计算机程序代码,所述计算机程序代码适于在计算机上运行所述计算机程序时执行根据本发明方法的所有步骤。优选地,计算机程序被实现在计算机可读介质上。
附图说明
通过参考下文描述的实施例,将清楚本发明的这些和其它方面,并且将参考下文描述的实施例进行阐述。在附图中,
图1是集成电路的示意性框图,
图2是集成电路的示意性框图,
图3a是用于为集成电路提供机密数据的示意性流程图,
图3b是验证所提供的秘密密钥的示意性流程图,
图4a是用于为集成电路提供校验和的示意性流程图,
图4b是用于验证所提供的机密数据的示意性流程图,
图5a是用于为集成电路提供机密数据的系统的示意性框图,
图5b是利用图5a的系统为集成电路提供机密数据的示意性流程图,
图6a示出了加密机密数据的环境,
图6b示出了编程设备。
应该注意,在不同附图中,具有相同参考数字的项具有相同的结构特征和相同的功能或者是相同的信号。在详细描述中,在已经对这种项的功能和/或结构进行了说明的情况下,没有必要重复对其进行说明。
具体实施方式
尽管本发明可以有多种不同形式的实施例,但是将在附图中示出并且本文中详细描述一个或多个具体实施例,应该理解本公开应被认为是本发明的原理的示例,而非旨在将本发明限制到所示出的和所描述的具体实施例。
图1是集成电路的示意性框图。图1所示的集成电路包括主处理器110、总线120及一个或多个外围设备(也被称作模块)。处理器110可以是通用CPU,例如ARM、8051、MIPS处理器等。存在所示三个模块,安全模块200和两个其它模块131和132。安全模块200被配置为给集成电路提供机密数据。
模块131和132代表了集成电路中有用的各种可能模块。例如,所述模块可以专用于通信,例如非接触式通信;模块可以专用于音频处理,例如DSP。集成电路而言可以使用单片设计而不用所述模块。
集成电路可以包括非易失性存储器,用于存储例如由处理器110在集成电路上执行的软件程序。
图2示出了图1的集成电路中可能存在的附加细节。图2示出了安全模块200的可能实现及接收器140,其中所述接收器140被配置为在集成电路中接收已经利用传输密钥加密了的加密的机密数据。如图1所示,接收器可以是模块的一部分。在一个选项中,接收器被配置为将所接收到的加密的机密数据存储在寄存器文件150中。可以从安全模块200例如经由总线120访问寄存器文件150。接收器140可以是JTAG接口。
安全模块200包括对称密码引擎,所述对称密码引擎被配置为利用可配置的密钥选择性地加密或解密数据。在一个实施例中,对称密码引擎是配置用于对称密码AES的AES引擎。优选地,以硬件来实现引擎230。安全模块还可以被称作安全部分。
安全模块200还包括控制器,所述控制器被配置为实现本文描述的提供方法。控制器可以被实现为运行软件的处理器,然而以硬件实现控制器是优选的。例如,可以将控制器构建为有限状态机。
安全模块200还包括机密存储器,例如,一次性可编程存储器220形式的机密存储器。一次性可编程存储器的例子包括eFuse、polyfuse、antifuse、laser fuse等。
一次性可编程非易失性存储器是数字存储器形式的,通过在构建设备之后对存储器编程,可以永久性地将数据存储在所述数字存储器中。利用常见可编程非易失性存储器(例如,闪速存储器)替代OTP存储器220来实现安全模块200是可能的,然而这被认为是不太安全的。
OTP存储器220至少存储了客户标识符和产品标识符。这些标识符可以是通过接收器140来接收的,其中可能以明码(未加密的)形式接收。控制器150可以被配置为从寄存器文件获得标识符,其中所述标识符由接收器140存储,并被写入到了存储器220中。
安全模块200可以包括用于在控制器210、密码引擎230和机密存储器220之间进行通信的私有总线。控制器210可通过私有总线访问密码引擎230的私有寄存器。密码引擎230的私有寄存器和存储器220并不与主总线120直接相连。控制器210可以向处理器110提供接口,其中所述处理器110例如包括以下命令:利用包含在存储器220中的密钥来解密由处理器110提供的数据。按照这种方式,提供给集成电路的秘密密钥是处理器110可使用的,但是保持了秘密性且包含在安全模块中。
将结合图3a、3b、4a和4b说明可以使用诸如以上描述的集成电路之类的集成电路的可能方式。然而,应该注意,针对流程图的使用在硬件上的变化是可能的。
图3a是为集成电路提供机密数据的示意性流程图。图4a是为集成电路提供校验和的示意性流程图。提供机密数据和相应校验和可以结合,但是这并非是必要的;所说明和/或所示出的每个方法具有独立的优点。例如,可以在以明码形式向集成电路发送校验和时使用图3a的方法。
图3a示出了机密数据提供方法301。图4a示出了校验和数据提供方法401。假设,先前已经为集成电路提供了客户标识符和集成电路标识符。假定,对于多个集成电路(例如,针对特定客户的或者针对特定应用、特定市场、特定技术等的所有集成电路)而言,客户标识符相同。通过不同的客户编号,将所有集成电路分为不同批,使得可以限制安全漏洞(security breach)。优选地,对于每个集成电路而言,集成电路编号是唯一的。提供这些编号的一种方法是例如使用接收器140通过接口发送标识符。在更高级的方法中,在将编号存储在一次性可编程220中之前完整地发送编号(send over completely),以减少传输时间。
在步骤310中,接收加密的机密数据。机密数据可以包括秘密密钥。秘密密钥可以是对称密钥,例如128或256比特AES密钥。秘密密钥还可以是非对称密钥,例如公钥/私钥对中的私钥。集成电路还可以接收410加密的校验和。例如,校验和可以包含在机密数据中。可以加密的机密数据和/或加密的校验和由接收器140接收,并被存储在寄存器文件150中。为了解密所述加密的机密数据和/或加密的校验和,导出320,420传输密钥。例如,控制器210从OTP存储器220接收客户标识符,并且根据该客户标识符导出传输密钥。
使用传输密钥,以利用传输密钥来解密330,430加密的机密数据和/或加密的校验和。例如,控制器210可以将传输密钥置于引擎230的密钥寄存器中。引擎230解密机密数据和/或加密的校验和。
在一个实施例中,控制器210通过将标识符置于引擎230的私有数据寄存器中来根据所述标识符(即,客户标识符或集成电路标识符)导出密钥,以及利用主传输密钥来配置引擎230;例如,主传输密钥被置于引擎230的私有密钥寄存器中。控制器210可以从集成电路(优选地,安全模块,例如从ROM存储器(未示出))获得主传输密钥。主传输密钥也可以在例如控制器210或引擎230等中被硬编码。控制器210利用主传输密钥来加密标识符,以获得引擎的私有数据寄存器中的传输密钥或产品密钥。如果需要的话,密钥导出可以使用不同机制,例如完全的软件形式而不用私有寄存器、AES等。为了使用导出的密钥,控制器210可以将引擎的私有数据寄存器中的结果传输至引擎的私有密钥寄存器。优选地,私有密钥寄存器和私有数据寄存器只可由引擎230和控制器210访问,并且例如不可由处理器110访问。
在解密之后,机密数据和/或校验和以明码格式(plain format)对控制器210可用。接下来,控制器配置引擎230,以根据集成电路标识符导出340、440产品密钥。这种导出可以与传输密钥的导出使用相同的机制,但使用不同的标识符。
在访问机密数据和/或校验和之后,控制器可以立即使用这些机密数据和/或校验和,例如,可以针对机密数据验证校验和。例如,如果机密数据包括配置数据,则控制器可以根据配置数据配置集成电路。例如,可以根据配置数据来启用和/或禁用集成电路的特定特征。
控制器210继续利用产品密钥来加密机密数据和/或校验和。典型地,控制器210将使用引擎230来加密。在加密之后,将重新加密的结果存储在机密数据存储器220中。机密数据存储器可能需要逐比特编程。如果这样的话,控制器210针对存储器220创建多个写周期,直到对所有比特进行了编程为止。这可以是,只有比特“1”需要写周期。
图3b示出了用于验证提供的秘密密钥的方法302。首先,获得明码形式的重新加密的秘密密钥。这可以通过如下步骤来完成:导出产品密钥,并解密370在存储器220中存储的密钥。备选地,当包括所述秘密密钥的机密数据以明码格式可用时,可以在330之后步骤350之前进行所述验证。可以在集成电路中存储测试向量。可使用多种机制,例如,可以以与主传输密钥相同的方式存储测试向量。优选地,测试向量例如控制器中被硬编码。控制器210配置引擎230,以利用秘密密钥来加密380测试向量,从而获得计算出的指纹。然后,将该计算出的指纹与原始指纹相比较390。可以在集成电路中进行该比较。例如,原始指纹可以是机密数据的一部分,或者可以是也通过接收器140发送至集成电路的非机密数据的非机密数据的一部分。备选地,可以将计算出的指纹输出集成电路的外部,然后可以在编程设备中进行所述比较,或者如果需要的话甚至在不同位置例如由产生秘密密钥的一方来进行所述比较。
典型地,指纹具有与秘密密钥相同的比特长度,但是其可以被截短(truncate)以节省传输。例如,可以传输计算出的指纹的比指纹的完整长度小并且比秘密密钥的长度小的比特数目。例如,可以输出仅二分之一的比特、或者仅起始的32个比特、或者小于或等于80比特。数目可以是预先确定的。这节约了宝贵的传输时间。同时,因为引擎230的随机化,所以检测到坏密钥(bad key)的机率仍然很高。输出超出80个比特会使安全性的提高减弱(diminish)。
图4b示出了在使用校验和的情况下可以使用的方法402。校验和可以是键控的(keyed)(如上述的指纹)或者是非键控的(如,散列函数、CRC函数等)。对于这种方法,优选地,可以在硬件中利用较少的资源快速地计算校验和。例如,校验和可以是机密数据(例如秘密密钥)的线性函数。为了使用校验和,由控制器210根据机密数据来计算计算出的校验和。如果仍然不可用,则引擎230首先在控制器210的控制之下使用产品密钥来解密来自存储器220的机密数据。然后,例如使用方法401将计算出的校验和与接收到的校验和相比较。如果计算出的校验和与接收到的校验和不匹配,则集成电路不可用。例如,安全模块200可以拒绝进行进一步操作,具体地,利用秘密密钥的进一步操作。
图5a示出了用于提供集成电路的系统。图5b示出了使用该系统的方法。图5a示出了在标记为“制造商510”、“客户520”和“编程设备530”的三方之间如何划分不同的责任。这种划分提高了安全性。尽管如此标记,但是制造商不必进行实际的制造。
在一种情况下,制造商510通过使用主传输密钥对客户标识符应用密钥导出函数,来导出传输密钥。制造商已经知道主传输密钥。例如,主传输密钥被嵌入在集成电路的设计中,例如被硬编码。例如,制造商知道该主传输密钥,原因在于制造商知道例如集成电路的设计。制造商510向客户520发送550传输密钥。因此,不知道主传输密钥和/或密钥导出函数的客户不能够自己导出传输密钥。典型地,客户知道其自己的客户标识符,但是这并非是必要的。
通过使用传输密钥,客户加密其想要在集成电路上提供但又想要对编程设备而言保持机密的任何数据,即所谓的机密数据。机密数据可以包括秘密密钥、配置数据、专有算法等。如果需要的话,也可以向机密数据添加完整性保护,例如,使用密钥(例如传输密钥)计算出的消息认证码。机密数据可以包括机密数据的校验和。客户可以将机密数据与非机密数据绑定。指纹可以包含在非机密数据中。
客户向编程设备发送加密的机密数据570。该发送可以使用数字网络,例如因特网和内联网、数字邮件和存储棒等。编程设备既不知道传输密钥,也不知道主传输密钥。如果编程设备会提供客户标识符,则编程设备需要访问该客户标识符。例如,编程设备可以从客户接收客户标识符。如果客户没有客户标识符,则编程设备可以从制造商510接收客户标识符。
典型地,通过编程设备为集成电路提供客户标识符(例如,客户编号)和集成电路标识符(例如,集成电路编号)。编程设备为集成电路提供加密的机密数据580。因为编程设备不能访问传输密钥、密钥导出函数或主密钥,所以编程设备不可能使用机密数据。集成电路具有嵌入的主传输密钥,因而可以获得传输密钥、解密机密数据和使用机密数据。如果需要的话,集成电路可以随后导出产品密钥来重新加密机密数据或其部分(例如密钥部分),并将其存储在机密存储器(例如,非易失性存储器中为机密数据而保留的部分)中。在绝大多数情况下,集成电路具有唯一的集成电路编号,因此一旦进行了重新加密,数据对于不同的集成电路就是无用的。
本领域技术人员显而易见的是,执行方法的多种不同方式是可能的。附图示出了执行步骤的可能顺序,但是步骤的顺序可以改变或者一些步骤可以并行地执行。此外,可以在步骤之间插入其它方法步骤。插入步骤可以表示对例如本文所描述的方法的细化,或者可以与方法无关。例如,步骤310和320可以颠倒或者至少部分地并行执行。步骤340可以在步骤350等之前的任何时刻执行。此外,指定步骤可以在开始下一步骤之前尚未完全完成。
图6a和6b以示意性的形式示出了另一实施例,以下将进一步说明。本实施例用于说明而非限制本发明。
平台安全性必须要应对密钥管理和密钥存储。秘密密钥(即,对称密钥)的提供可以是非常昂贵的过程。主要原因在于,对于对称密钥,需要将密钥从产生密钥的设备传输至插入密钥的设备。对于安全密钥的传输和加载存在硬件解决方案,但是这些解决方案可能需要巨大的操作开销,并且典型地是成本过高的。接下来,工厂设备需要一些动态特性能够支持设备中的密钥编程和多样性(diversity)。本实施例通过使用唯一的芯片ID来提供安全传输机制,该机制不需要安全编程环境,并且在该机制中密钥在每个IC中是多样化的(diversified)。对称密钥决不以明文格式出现在产生设备和插入设备的外部。将检测在传输或存储期间的非法密钥或被修改的密钥,从而使IC不工作。此外,在密钥的动态特性透明(transparent)的IC中,操纵密钥编程。这带来了更便宜的密钥管理环境,更容易的密钥编程设备,以及在诸如eFuse之类的标准嵌入式OTP存储器中的节约而安全的密钥存储。
在安全设备中,主要信任定律(main root of trust)为:用于保护内容的机密性、完整性和真实性的密钥。这些密钥是在从客户到产品的完整信任链中需要高度保护的主要资产(asset)。该链中的第一个问题是,密钥在从产生密钥的设备至需要在其中对密钥进行编程的集成电路之间的安全传输。在大多数情况下,客户经由安全通道将这些密钥发送至工厂中的密闭且安全的环境。这种安全环境的设立和维护成本很高。第二个问题在于,需要在IC中对该密钥编程,并且传统上,测试设备经由例如JTAG接口向IC以明码形式发送该密钥。测试器需要生成正确的编程序列,以在OTP存储器中对密钥编程。因为需要逐比特对eFuse编程,所以这种编程序列是耗时的。
本申请的解决方案是基于安全传输机制与动态片上编程硬件模块的。将利用传输密钥加密了的密钥从产生密钥的设备发送至IC。
经由标准JTAG接口将利用传输密钥加密的密钥发送至IC。IC将基于标准客户JTAG指令来在纯硬件中执行四个步骤。第一步骤是,利用针对每个客户多样化的传输密钥来解密密钥。第二步骤是,利用唯一产品密钥来加密密钥,所述唯一产品密钥用于保证OTP内容的机密性。这种唯一产品密钥针对基于唯一产品标识符(ID)的每个IC而多样化,并且主密钥被存储在私有硬件寄存器中。在后来的步骤中,硬件模块将针对每个比特产生编程序列,基于比特值对eFuse(逐比特)编程。在最终的步骤中,验证OTP的内容:在IC内计算在OTP中编程的密钥的签名,并将计算出的签名与产生密钥的设备所产生的签名相比较。对于利用相同密钥来编程的每个产品,OTP内容将是不同的。这些动态特性是基于唯一产品ID的,并且保持在IC中。
在图6a和6b中,描述了完整的过程。两个附图合成整体,并且在参考数字610处联接。
A.传输机制。为了保护密钥从产生密钥的设备至要在其中对密钥编程的IC中的机密性,利用称作传输密钥(Tkey)的秘密密钥对密钥进行加密,其中所述传输密钥对于每个客户而多样化。计算要在IC中编程的密钥的CRC,并且也利用传输密钥对所述CRC加密。可以向编程设备(是非安全的,如果需要的话)发送密钥以及该密钥的利用传输密钥加密了的CRC。
B.嵌入式密钥编程机制。当对IC e-fuse编程时,执行以下过程:
1.在IC内部寄存器(reg1)中存储秘密(密钥,密钥的CRC)。
2.利用多样化的传输密钥加密reg1的内容。将结果存储在只可经由私有总线访问的内部寄存器(prReg)中。在IC内产生多样化的传输密钥。传输密钥多样化依赖于主传输密钥、客户ID和AES算法。
3.利用唯一产品密钥加密PrReg内容。将结果存储在临时缓冲区(reg2)中。
4.有限状态机将针对reg2寄存器的每个比特位置产生eFuse程序序列(program sequence)。eFuse技术的特性在于,比特位置默认是“0”,并且可以只被编程为“1”。基于临时寄存器(reg2),当比特位置是“1”时对eFuse编程。对于128比特的密钥,在128个编程周期之后对完整密钥编程。因为需要对许多密钥编程,所以可以重复这个过程。这个完整的过程被嵌入在设备自身中。
5.在每个安全引导序列期间,计算在OTP中存储的密钥的CRC(循环冗余校验),并将该CRC与在A中计算的CRC相比较。当2个CRC不匹配时,安全引导序列将停止,并且IC不可用。1)如果在eFuse/OTP中对密钥进行了不正确的编程,2)或者对CRC值进行了不正确的编程,3)或者在密钥的传输期间修改了密钥,4)或者如果对非法密钥进行了编程,则CRC校验将失败。
前两项是与IC设备相关的,并且保护IC免受篡改。后两项是与传输密钥相关的,以避免“中间攻击者(the man in the middle attack)”。密钥多样性是基于主密钥、唯一IC ID和AES引擎的。主密钥、多样化密钥及在OTP中存储的密钥只以明文形式在内部IC私有总线上可用。对于这种机制,密钥决不以明文形式暴露在产生设备之外和IC之外。
C.编程验证机制。为了验证在OTP中编程的密钥是正确的而没有以明文形式暴露密钥值,实现基于密钥的指纹的机制。在安全环境中加密密钥的过程中计算指纹,其中指纹是利用密钥对测试向量的AES加密结果。为了验证在eFuse中编程的密钥的正确性,首先在IC内基于唯一ID密钥来解密在eFuse中加密且存储的密钥。使用结果密钥来加密嵌入的测试向量。可以将结果与密钥的期望指纹相比较。
应该注意,以上实施例举例说明本发明,而非限制本发明,并且本领域技术人员将能够设计多种备选实施例。
在权利要求中,位于括号之间的任何参考标记不应该解释为限制权利要求。对动词“包括”及其变形的使用不排除存在权利要求声明的元件或步骤之外的其他元件或步骤。元件前面的冠词“一种”不排除存在多个这种元件。本发明可以通过包括若干不同元件的硬件以及通过合适地编程的计算机来实现。在枚举了若干装置的设备权利要求中,这些装置中的若干装置可以通过同一个硬件来实现。在互不相同的从属权利要求中阐述的特定措施并不指示不可以有利地使用这些措施的组合。
Claims (11)
1.一种为集成电路(100)提供机密数据的方法,所述方法包括:
在所述集成电路中,接收(310)加密的机密数据,所述加密的机密数据是已利用传输密钥加密的,
在所述集成电路中,通过对客户标识符应用密钥导出函数来导出(320)传输密钥,所述客户标识符先前已被存储在所述集成电路中,
在所述集成电路中,利用传输密钥来解密(330)所述加密的机密数据,以获得解密的机密数据,
在所述集成电路中,通过对集成电路标识符应用密钥导出(340)函数来导出产品密钥,其中所述集成电路标识符先前已被存储在所述集成电路中,
在所述集成电路中,利用产品密钥来加密(350)所述解密的机密数据,以获得重新加密的机密数据,以及
将所述重新加密的机密数据存储(360)在所述集成电路的机密数据存储器中。
2.如权利要求1所述的方法,其中,将所述重新加密的机密数据存储在所述集成电路的一次性可编程存储器(220)中。
3.如权利要求2所述的方法,其中,在已完整地接收到所述加密的机密数据之后,由所述集成电路的控制器以每次一个比特的方式将所述重新加密的机密数据存储在所述一次性可编程存储器中。
4.如前述权利要求中任一项所述的方法,其中
利用AES算法,根据主传输密钥和所述客户ID导出所述传输密钥,
和/或
利用AES算法,根据主传输密钥和所述集成电路标识符导出所述产品密钥。
5.如权利要求4所述的方法,其中所述AES算法是利用AES引擎(230)来执行的,导出结果被存储在所述AES引擎的内部寄存器中。
6.如前述权利要求中任一项所述的方法,其中所述机密数据包括秘密密钥。
7.如权利要求6所述的方法,包括:验证所存储的秘密密钥是正确的,所述验证包括:
在集成电路内利用所述产品密钥来解密在集成电路的机密数据存储器中存储的所述重新加密的秘密密钥,以获得结果密钥(370),
利用结果密钥对嵌入所述集成电路中的测试向量进行加密,以获得计算出的指纹(380),
将计算出的指纹与期望的指纹相比较(390)。
8.如权利要求6或7所述的方法,其中,所述机密数据包括秘密密钥的校验和,
在安全引导序列期间,计算(470)在所述机密存储器中存储的密钥的校验和,
将计算出的校验和与接收到的校验和相比较(480),以及
如果计算出的校验和与接收到的校验和不匹配,则所述安全引导序列停止并且所述集成电路不可用(490)。
9.如前述权利要求中任一项所述的方法,包括:
接收所述客户标识符,并且在已完整地接收到所述客户标识符之后,由所述集成电路的控制器以每次一个比特的方式将接收到的客户标识符存储在一次性可编程客户存储器中;和/或
接收所述集成电路标识符,并且在已完整地接收到所述集成电路标识符之后,由所述集成电路的控制器以每次一个比特的方式将接收到的集成电路标识符存储在一次性可编程客户存储器中。
10.一种分发机密数据的方法,包括
通过对客户标识符应用密钥导出函数来导出(540)传输密钥,
向客户(520)发送(550)传输密钥,
在所述客户处,利用传输密钥来加密(560)机密数据,
向编程设备(530)发送(570)加密的机密数据,
在所述编程设备处,为集成电路提供(580)所述加密的机密数据。
11.一种用于提供机密数据的集成电路(100),所述集成电路包括:
接收器(140),被配置为在所述集成电路中接收加密的机密数据,所述加密的机密数据是已利用传输密钥加密的,
客户标识符存储装置(220),被配置为存储客户标识符,
传输密钥导出器(210;230),被配置为在所述集成电路中通过对客户标识符应用密钥导出函数来导出传输密钥,
解密模块(210;230),被配置为在所述集成电路中利用传输密钥来解密所述加密的机密数据,以获得解密的机密数据,
集成电路标识符存储装置(220),被配置为存储集成电路标识符,
产品密钥导出器(210;230),被配置为在所述集成电路中通过对集成电路标识符应用密钥导出函数来导出产品密钥,
加密模块(210;230),被配置为在所述集成电路中利用产品密钥来加密所述解密的机密数据,以获得重新加密的机密数据,以及
机密数据存储器(220),被配置为存储所述重新加密的机密数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101273647A CN103378966A (zh) | 2012-04-26 | 2012-04-26 | 安全动态片上密钥编程 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101273647A CN103378966A (zh) | 2012-04-26 | 2012-04-26 | 安全动态片上密钥编程 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103378966A true CN103378966A (zh) | 2013-10-30 |
Family
ID=49463555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101273647A Pending CN103378966A (zh) | 2012-04-26 | 2012-04-26 | 安全动态片上密钥编程 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103378966A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110268675A (zh) * | 2017-02-07 | 2019-09-20 | 西门子股份公司 | 可编程硬件安全模块和可编程硬件安全模块上的方法 |
CN111917549A (zh) * | 2019-05-07 | 2020-11-10 | 恩智浦有限公司 | 使用密码散列认证基于雷达的数字数据流的设备和方法 |
CN112912881A (zh) * | 2018-08-28 | 2021-06-04 | 西门子股份公司 | 用于将密钥数据存储在电子构件中的方法 |
CN113408017A (zh) * | 2021-06-30 | 2021-09-17 | 湖南国科微电子股份有限公司 | 一种otp存储器内数据保护方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805706A (en) * | 1996-04-17 | 1998-09-08 | Intel Corporation | Apparatus and method for re-encrypting data without unsecured exposure of its non-encrypted format |
US20040034823A1 (en) * | 2002-08-13 | 2004-02-19 | Lsi Logic Corporation | Embedded sequence checking |
CN1870000A (zh) * | 2006-06-29 | 2006-11-29 | 北京飞天诚信科技有限公司 | 定制客户标志信息的方法 |
CN1979511A (zh) * | 2005-12-09 | 2007-06-13 | 北京书生国际信息技术有限公司 | 一种文档数据安全管理系统和方法 |
US20100225810A1 (en) * | 2007-07-06 | 2010-09-09 | Ambx Uk Limited | Method for synchronizing a content stream and a script for outputting one or more sensory effects in a multimedia system |
US20110238578A1 (en) * | 2007-11-29 | 2011-09-29 | Hurry Simon J | Module id based encryption for financial transactions |
US20120072714A1 (en) * | 2003-12-16 | 2012-03-22 | Citibank Development Center, Inc. | Methods and Systems for Secure Authentication of a User by a Host System |
-
2012
- 2012-04-26 CN CN2012101273647A patent/CN103378966A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805706A (en) * | 1996-04-17 | 1998-09-08 | Intel Corporation | Apparatus and method for re-encrypting data without unsecured exposure of its non-encrypted format |
US20040034823A1 (en) * | 2002-08-13 | 2004-02-19 | Lsi Logic Corporation | Embedded sequence checking |
US20120072714A1 (en) * | 2003-12-16 | 2012-03-22 | Citibank Development Center, Inc. | Methods and Systems for Secure Authentication of a User by a Host System |
CN1979511A (zh) * | 2005-12-09 | 2007-06-13 | 北京书生国际信息技术有限公司 | 一种文档数据安全管理系统和方法 |
CN1870000A (zh) * | 2006-06-29 | 2006-11-29 | 北京飞天诚信科技有限公司 | 定制客户标志信息的方法 |
US20100225810A1 (en) * | 2007-07-06 | 2010-09-09 | Ambx Uk Limited | Method for synchronizing a content stream and a script for outputting one or more sensory effects in a multimedia system |
US20110238578A1 (en) * | 2007-11-29 | 2011-09-29 | Hurry Simon J | Module id based encryption for financial transactions |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110268675A (zh) * | 2017-02-07 | 2019-09-20 | 西门子股份公司 | 可编程硬件安全模块和可编程硬件安全模块上的方法 |
US11303440B2 (en) | 2017-02-07 | 2022-04-12 | Siemens Aktiengesellschaft | Method and programmable hardware security module |
CN112912881A (zh) * | 2018-08-28 | 2021-06-04 | 西门子股份公司 | 用于将密钥数据存储在电子构件中的方法 |
CN111917549A (zh) * | 2019-05-07 | 2020-11-10 | 恩智浦有限公司 | 使用密码散列认证基于雷达的数字数据流的设备和方法 |
US11271722B2 (en) * | 2019-05-07 | 2022-03-08 | Nxp B.V. | Apparatuses and methods involving authentication of radar-based digital data stream using cryptographic hashing |
CN113408017A (zh) * | 2021-06-30 | 2021-09-17 | 湖南国科微电子股份有限公司 | 一种otp存储器内数据保护方法、装置、设备及存储介质 |
WO2023274011A1 (zh) * | 2021-06-30 | 2023-01-05 | 湖南国科微电子股份有限公司 | 一种otp存储器内数据保护方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2506488B1 (en) | Secure dynamic on-chip key programming | |
US10944554B2 (en) | Semiconductor device and information processing system for encrypted communication | |
CN110519260B (zh) | 一种信息处理方法及信息处理装置 | |
US10999293B2 (en) | Examining a consistency between reference data of a production object and data of a digital twin of the production object | |
US20170126414A1 (en) | Database-less authentication with physically unclonable functions | |
CN104657630A (zh) | 利用物理不可克隆功能的集成电路供应 | |
US20110041046A1 (en) | Apparatus and method for protecting rfid data | |
US9165148B2 (en) | Generating secure device secret key | |
CA2831457A1 (en) | Enabling a software application to be executed on a hardware device | |
WO2015186829A1 (ja) | 送信ノード、受信ノード、通信ネットワークシステム、メッセージ作成方法およびコンピュータプログラム | |
CN107944234B (zh) | 一种Android设备的刷机控制方法 | |
CN109905384B (zh) | 数据迁移方法及系统 | |
CN109635610A (zh) | Rfid标签数据的读写系统及方法 | |
CN106506149A (zh) | 一种tbox终端和tsp平台之间密钥生成方法以及系统 | |
CN104268447A (zh) | 一种嵌入式软件的加密方法 | |
CN101770559A (zh) | 数据保护装置和方法 | |
US9571273B2 (en) | Method and system for the accelerated decryption of cryptographically protected user data units | |
US10728026B2 (en) | Data management method | |
CN103378966A (zh) | 安全动态片上密钥编程 | |
CN109088729B (zh) | 一种密钥存储方法及装置 | |
US20160277182A1 (en) | Communication system and master apparatus | |
WO2019142307A1 (ja) | 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム | |
EP2286610B1 (en) | Techniques for peforming symmetric cryptography | |
US20080205654A1 (en) | Method and Security System for the Secure and Unequivocal Encoding of a Security Module | |
US9542537B2 (en) | Method and system for confidentially providing software components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20131030 |