本申请案主张2014年1月22日在美国专利商标局申请的美国非临时专利申请案第14/161,185号的优先权及权益,所述美国非临时专利申请案的全部内容以引用的方式并入本文中。
技术领域
各种特征一般涉及安全加密密钥提取及存储,且更确切地说,涉及基于易失性存储器的物理不可克隆特征而在安全启动过程期间提取及存储秘密加密密钥。
背景技术:
许多电子通信装置(例如移动电话、平板计算机及计算机)包含装置专有的加密密钥(或从此类密钥导出的密钥),其可用于电子通信装置处的密码安全过程。例如,仅装置及可能另一受信任的实体(例如,向装置提供通信服务的蜂窝式网络认证服务器)已知的装置专有的密钥用于导出随后用于对由所述装置传输的通信消息进行加密的密钥(例如,公用-私用密钥对)。保护装置专有的密钥以不让其它方及/或应用未授权的存取是最重要的,以便更好地保证由所述装置及/或通信网络采用的密码安全协议的完整性。
图1说明可在电子通信装置中发现的现有技术集成电路(IC)100的示意框图。IC 100包含启动加载器102、用户应用104及非易失性存储器电路106,所述非易失性存储器电路又存储可对于具有IC 100的装置是唯一的加密密钥108。在IC 100通电时,IC 100检索并执行初始化IC 100的各种方面的启动加载器。在IC 100完成其启动过程之后,可执行用户应用104(例如,高层级操作系统(HLOS)、在此类HLOS上运行的应用等)。启动加载器102及用户应用104可具有对密钥108的直接存取权。例如,用户应用可从非易失性存储器106检索密钥108且使用其导出用于加密过程的额外密钥。
此外,由于存储密钥108的存储器电路106是非易失性存储器,所以密钥108存储在IC 100中(并且因此理论上可存取),而不管IC 100是断电还是通电。此使密钥108更易受攻击。例如,集成电路100封装的顶部可物理地打开且电子显微镜可用于分析用于 存储密钥108的电路(例如,熔丝)。这样做可显露密钥108且损害装置的安全性。
需要提供密钥提取/产生及存储中的增加的安全性以帮助阻止对此类密钥的未授权的访问的方法和设备。密钥提取/产生及存储中的提高的安全性帮助增加依赖于此类密钥的密码算法及过程中的可信度及可靠性。
技术实现要素:
一个特征提供在集成电路处操作的方法,所述方法包括:将第一易失性存储器电路通电以产生多个初始逻辑状态值,所述第一易失性存储器电路在集成电路上;基于所述多个初始逻辑状态值而导出秘密数据;将所述秘密数据存储在安全易失性存储器电路中,所述安全易失性存储器电路由安全执行环境(SEE)保护;清除所述第一易失性存储器电路中的所述多个初始逻辑状态值;在SEE处执行密码算法以基于所述秘密数据而提取秘密密钥;及将所述秘密密钥存储在安全易失性存储器电路中。根据一个方面,所述方法是集成电路的安全启动流,其控制对第一易失性存储器电路的存取以保护秘密数据及多个初始逻辑状态值不让一或多个不安全应用存取。根据另一方面,所述安全启动流通过直到至少在已经清除第一易失性存储器电路中的多个初始逻辑状态值之后才使第一易失性存储器电路可由一或多个不安全应用存取而保护秘密数据及多个初始逻辑状态值不让一或多个不安全应用存取。
根据一个方面,安全启动流包含主要启动加载器、第一次要启动加载器及第二次要启动加载器,且安全启动流通过在第一次要启动加载器执行之前让主要启动加载器认证第一次要启动加载器、第一次要启动加载器在第二次要启动加载器执行之前认证第二次要启动加载器且第二次要启动加载器认证SEE而建立信任链,且其中在安全启动流期间且在执行一或多个不安全应用之前在安全易失性存储器电路中提取及存储所述秘密密钥。根据另一方面,将第一易失性存储器电路复位会致使执行安全启动流。根据另一个方面,所述秘密数据是多个初始逻辑状态值。
根据一个方面,在清除第一易失性存储器电路之后,第一易失性存储器电路可用于一或多个不安全应用的数据存储。根据另一方面,第一易失性存储器电路是静态随机存取存储器(SRAM)。根据另一个方面,SEE阻止不安全应用存取安全易失性存储器电路。
根据一个方面,所述多个初始逻辑状态值在每次第一易失性存储器电路被通电时大体上相同。根据另一方面,所述密码算法是基于块码算法、扩展码算法及/或重复码算法中的至少一者。根据另一个方面,所述方法进一步包括在将秘密数据存储在安全易失性存储器电路中之前将秘密数据存储在第二易失性存储器电路中,且在将秘密数据存储在 安全易失性存储器电路中之后清除存储在第二易失性存储器电路中的秘密数据。
根据一个方面,在清除存储在第二易失性存储器电路中的秘密数据之后,第二易失性存储器电路可用于一或多个不安全应用的数据存储。根据另一方面,SEE通过使秘密密钥不可由不安全应用存取而控制对所述秘密密钥的存取,且所述方法进一步包括从SEE处的不安全应用接收对次要密钥及/或公用数据中的至少一者的请求;基于所述秘密密钥而在SEE处产生次要密钥及/或公用数据;及将所述次要密钥及/或所述公用数据提供给请求所述次要密钥及/或所述公用数据的不安全应用。根据另一个方面,基于由不安全应用提供的秘密密钥及其它数据而产生所述次要密钥及/或所述公用数据。根据另一方面,在SEE处执行的基于秘密数据而提取秘密密钥的密码算法进一步基于存储在非易失性存储器电路中的辅助数据。
另一特征提供一种集成电路,其包括:第一易失性存储器电路,其经配置以在通电之后产生多个初始逻辑状态值;安全易失性存储器电路,其由安全执行环境(SEE)保护;及处理电路,其通信地耦合到所述第一易失性存储器电路及所述安全易失性存储器电路,所述处理电路经配置以:基于所述多个初始逻辑状态值而导出秘密数据;将所述秘密数据存储在所述安全易失性存储器电路中;清除所述第一易失性存储器电路中的所述多个初始逻辑状态值;在所述SEE处执行密码算法以基于所述秘密数据而提取秘密密钥;及将所述秘密密钥存储在所述安全易失性存储器电路中。根据一个方面,所述处理电路通过以下操作执行安全启动流:(i)导出所述秘密数据;(ii)存储所述秘密数据;(iii)清除所述多个初始逻辑状态值;(iv)执行所述密码算法;及(v)存储所述秘密密钥,且其中所述安全启动流控制对所述第一易失性存储器电路的存取以保护所述秘密数据及所述多个初始逻辑状态值不让一或多个不安全应用存取。
根据一个方面,所述处理电路进一步经配置以在将所述秘密数据存储在所述安全易失性存储器电路中之前将所述秘密数据存储在第二易失性存储器电路中,且在将所述秘密数据存储在所述安全易失性存储器电路中之后清除存储在所述第二易失性存储器电路中的所述秘密数据。根据另一方面,所述SEE通过使秘密密钥不可由不安全应用存取而控制对所述秘密密钥的存取,且其中所述处理电路进一步经配置以:从SEE处的不安全应用接收对次要密钥及/或公用数据中的至少一者的请求;基于所述秘密密钥在SEE处产生所述次要密钥及/或所述公用数据;及将所述次要密钥及/或所述公用数据提供给请求所述次要密钥及/或所述公用数据的所述不安全应用。
另一特征提供一种集成电路,其包括:用于将第一易失性存储器电路通电以产生多个初始逻辑状态值的装置,所述第一易失性存储器电路在集成电路上;用于基于所述多 个初始逻辑状态值而导出秘密数据的装置;用于将所述秘密数据存储在安全易失性存储器电路中的装置,所述安全易失性存储器电路由安全执行环境(SEE)保护;用于清除所述第一易失性存储器电路中的所述多个初始逻辑状态值的装置;用于在SEE处执行密码算法以基于所述秘密数据而提取秘密密钥的装置;及用于将所述秘密密钥存储在安全易失性存储器电路中的装置。
另一特征提供一种具有存储在其上的一或多个指令的计算机可读存储媒体,所述一或多个指令在被至少一个集成电路执行时导致所述集成电路:将第一易失性存储器电路通电以产生多个初始逻辑状态值,所述第一易失性存储器电路在集成电路上;基于所述多个初始逻辑状态值而导出秘密数据;将所述秘密数据存储在安全易失性存储器电路中,所述安全易失性存储器电路由安全执行环境(SEE)保护;清除所述第一易失性存储器电路中的所述多个初始逻辑状态值;在SEE处执行密码算法以基于所述秘密数据而提取秘密密钥;及将所述秘密密钥存储在安全易失性存储器电路中。根据一个方面,所述一或多个指令是用于集成电路的安全启动流,其在由所述集成电路执行时致使控制对第一易失性存储器电路的存取以通过直到至少在已经清除第一易失性存储器电路中的多个初始逻辑状态值之后才使第一易失性存储器电路可由一或多个不安全应用存取而保护秘密数据及多个初始逻辑状态值不让一或多个不安全应用存取。
附图说明
图1说明可在电子通信装置中发现的现有技术集成电路(IC)的示意框图。
图2说明IC的高级示意框图。
图3说明易失性存储器电路的示意框图。
图4说明安全执行环境的示意框图。
图5说明安全启动流阶层。
图6说明以提取及存储秘密密钥的安全启动流为特征的IC。
图7(包括图7A及7B)说明描绘致使集成电路提取及存储秘密密钥的安全启动流的流程图。
图8说明集成电路处操作的方法。
图9说明本文中描述的IC的处理电路的示意框图。
具体实施方式
在以下描述中,给出具体细节以提供对本发明的各种方面的彻底理解。然而,所属 领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。举例来说,可以框图展示电路以便避免以不必要的细节混淆所述方面。在其它情况下,可不详细展示众所周知的电路、结构和技术以便不混淆本发明的方面。
词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何实施或方面未必应解释为比本发明的其它方面优选或有利。同样,术语“方面”不要求本发明的所有方面包含所论述的特征、优点或操作模式。
概述
本文中描述在集成电路的安全启动流期间提取秘密密钥的方法和设备。具体来说,所述安全启动流包含:将第一易失性存储器电路通电以产生多个初始逻辑状态值;基于所述多个初始逻辑状态值而导出秘密数据;将所述秘密数据存储在安全易失性存储器电路中,所述安全易失性存储器电路由安全执行环境(SEE)保护;清除所述第一易失性存储器电路中的所述多个初始逻辑状态值;在SEE处执行密码算法以基于所述秘密数据而提取秘密密钥;及将所述秘密密钥存储在安全易失性存储器电路中。所述安全启动流控制对第一易失性存储器电路的存取以通过直到至少在已经清除第一易失性存储器电路中的多个初始逻辑状态值之后才使第一易失性存储器电路可由不安全应用存取而保护秘密数据及多个初始逻辑状态值不让一或多个不安全应用存取。此外,如果将第一易失性存储器电路复位,那么再次起始所述安全启动流,且因此第一易失性存储器电路的初始逻辑状态值不可由不安全应用使用。
IC安全启动期间的示范性密钥提取
图2说明根据本发明的一个方面的集成电路(IC)200的高级示意框图。IC 200可例如为包含处理电路、存储器电路等的处理器,且可在电子通信装置中找到,所述电子通信装置例如但不限于移动电话、计算机、平板计算机、手表等。IC 200可包含资源电力管理(RPM)电路201、安全启动加载器电路202、处理电路203、不安全应用204、易失性存储器电路206及安全执行环境(SEE)208。易失性存储器电路206包含物理不可克隆功能(PUF)210,且SEE 208包含安全易失性存储器电路212。
此外,RPM电路201将电力供应到IC 200的各种电路及组件。例如,RPM电路201可控制供应到处理电路203、易失性存储器电路206及/或安全易失性存储器电路212的电力。RPM电路201表示用于将第一易失性存储器电路通电以产生多个初始逻辑状态值的装置的一个实例。
在IC 200通电之后,IC 200通过使处理电路203获得并执行安全启动加载器(例如,安全启动代码)202而经历/执行安全启动过程(在本文中也被称作“安全启动流”)。安全 启动加载器202可存储在存储器电路中,所述存储器电路例如但不限于只读存储器(ROM)及/或其它非易失性存储器。所述安全启动加载器202初始化IC 200的各种模块且执行其它基础操作以便使IC 200准备用于正常操作。
根据本发明的一个方面,易失性存储器电路206包含一或多个静态随机存取存储器(SRAM)电路,其各自包含多个SRAM电路单元。根据其它方面,易失性存储器电路206不限于SRAM且可基于其它类型的易失性存储器,例如嵌入式动态随机存取存储器(eDRAM)。易失性存储器电路206的一部分(即,若干易失性存储器单元)可形成物理不可克隆功能(PUF)的基础。
芯片上PUF是采用集成电路(IC)内部的制造工艺变化的芯片唯一的挑战-响应机构。当向PUF施加物理刺激(即,挑战)时,PUF由于刺激与采用PUF的装置的物理微观结构的复杂交互而以不可预测但可重复的方式产生响应。此确切微观结构取决于在采用PUF的装置的制造期间引入的不可预测的物理因素。PUF的“不可克隆性”意指采用PUF的每个装置具有将挑战映射到响应的唯一的且不可预测的方式,即使一个装置以与另一表面相同装置相同的过程制造。因此,以与另一装置的PUF相同的挑战-响应行为构造PUF实际上是不可行的,因为对制造工艺的准确控制是不可行的。
在本发明中,易失性存储器电路206是一种类型的易失性存储器(例如,SRAM),其中包括易失性存储器电路206的每一电路单元在起动时(即,在通电时)自然地初始化为初始优选逻辑状态值(例如,“0”或“1”)。例如,SRAM在通电时具有此特性。电路单元的初始逻辑状态值是可重复的,原因在于每一易失性存储器单元每次在起动时以高概率初始化为同一值。然而,电路单元的初始逻辑状态值在IC之间是随机的,即使制造为相同IC也如此。因此,归因于制造工艺变化,每一集成电路的易失性存储器电路206(即使制造为相同)将展现不同的可重复的初始值,使得在IC之间初始的易失性存储器电路启动值在跨越不同IC的同一存储器地址位置处是不同的。因此,每一IC 200具有基于其易失性存储器电路的单元的初始通电状态而具有唯一但可重复的识别符的易失性存储器电路206(例如,SRAM电路)。
用作PUF 210的基础的易失性存储器电路206的易失性存储器单元的部分/数目可取决于应用而变化。根据一个实例,易失性存储器电路206的8千字节部分可包括PUF 210。然而,实际上用于PUF 210的存储器的量可为任何值,例如但不限于512字节、1千字节、2千字节、4千字节、8千字节、16千字节等。整个易失性存储器电路206的大小通常大于用于PUF 210的部分。仅作为一个实例,易失性存储器电路206可为384千字节。然而,易失性存储器电路206可为任何大小,例如但不限于64千字节、128千字节、 256千字节、384千字节、512千字节、768千字节、1,024千字节、2,048千字节等。
如上文所描述,在易失性存储器电路206通电时,其存储器电路单元各自基于单元当中的微小制造变化而稳定到起初优选的逻辑状态值。用作PUF 210的存储器的部分并非不同:其存储器单元起初也将稳定到优选初始逻辑状态值。在此意义上,PUF挑战可被视为将PUF 210的易失性存储器电路单元通电,且响应是其存储器电路单元的初始逻辑状态值。
一旦PUF 210的存储器电路单元已稳定到它们的初始逻辑状态值,安全启动加载器202便可基于初始逻辑状态值而导出秘密数据。根据一个方面,所述秘密数据可等于初始逻辑状态值。根据另一方面,可基于初始逻辑状态值的某一函数导出秘密数据。秘密数据所基于的所述函数的一些非限制性实例包含但不限于:秘密数据等于初始逻辑状态值的每隔一个(或每隔多个)位;秘密数据等于基于对初始逻辑状态值执行的一或多个数学运算(加法、减法、级联等)的值等。安全启动加载器202随后将所述秘密数据存储在由SEE 208控制的安全易失性存储器电路212中。接下来,安全启动加载器202清除/删除它们的初始逻辑状态值的PUF 210的存储器电路单元。这可通过将逻辑状态“0”或“1”写入到所有PUF 210的存储器电路单元或通过随机改变它们的逻辑状态值(随机的“0”或“1”)而实现。以类似方式,安全启动加载器202还清除/删除可能已经临时存储在安全易失性存储器电路212外部的其它地方的秘密数据中的任一者。一旦被清除,最初存储初始逻辑状态值的存储器电路单元可自由地在需要时用于一般数据存储。例如,在加载及执行高级操作系统(HLOS)及用户应用时,它们可使用这些被清除的存储器电路单元。
因此,安全启动加载器202表示用于基于多个初始逻辑状态值而导出秘密数据的装置的一个实例。安全启动加载器202还表示用于将秘密数据存储在安全易失性存储器电路212中的装置的一个实例。此外,安全启动加载器202表示用于清除第一易失性存储器电路206中的多个初始逻辑状态值的装置的一个实例。
SEE 208是IC 200的安全操作模式。例如,SEE 208可包括特定硬件模块及电路(例如控制逻辑、总线及在IC 200的不安全操作模式中运行的其它应用不可用的存储器电路)且具有对其的存取权。SEE 208可具有对其安全易失性存储器电路212的整个控制及存取,使得其它应用(例如,用户应用、HLOS及甚至一些或所有类型的启动加载器)不可存取(例如,读取及/或写入)安全易失性存储器电路212。
SEE 208(例如,使用其自身的控制逻辑)接着可基于存储在其安全易失性存储器电路212中的秘密数据而提取秘密密钥(例如,产生秘密密钥)。SEE 208使用密码安全算法实 现此。所使用的算法不限于任何一个特定类型的算法或算法族。一些非限制性实例包含块码算法、扩展码算法及/或重复码算法。在一个实例中,除了秘密数据之外,辅助数据可由所述算法使用以提取秘密密钥。辅助数据可存储在可由不安全应用存取的不安全存储器中。即,不要求辅助数据安全地存储,因为其自身暴露不会危及秘密密钥及/或第一易失性存储器电路206的初始逻辑状态值的安全性。
由于基于易失性存储器(例如,SRAM)的PUF 210在通电之后提供大体上相同的初始逻辑状态值,所以SEE的密码算法能够每次提取相同的秘密密钥。密码算法可使用错误校正技术来提取相同的秘密密钥,即使一些初始逻辑状态值在不同的通电循环之间是不同的。所提取的秘密密钥对于特定IC 200是唯一的,因为PUF 210的初始逻辑状态值跨越不同的IC 200是不同的,即使IC被制造为相同也如此。
SEE 208存储在安全易失性存储器(例如,图2中展示的安全易失性存储器电路212)中提取的秘密密钥,且因此不安全应用(例如,HLOS、用户应用及/或一些次要启动加载器等)204无法存取由SEE 208存储及保护的秘密密钥。而是,不安全应用204可向SEE 208作出请求以基于秘密密钥而提供加密数据及/或公用数据(例如,可公开揭露的数据)。例如,SEE 208可基于秘密密钥而产生加密数据(例如但不限于一或多个次要密钥或密钥对)且将那些次要密钥提供给不安全应用204。SEE还可基于秘密密钥而产生公用数据(例如但不限于装置序列号)且将所述公用数据提供给不安全应用204。加密数据及公用数据两者可在本文中被称作“SEE输出数据”。
此外,由于秘密密钥仅存储在安全易失性存储器212中,所以在IC 200断电时会丢失秘密密钥。必须再次在通电之后基于PUF 210的初始逻辑状态值重新提取所述秘密密钥,如上文所描述。通过物理地打开IC 200且检查存储器电路而尝试得到对秘密密钥的未经授权的存取的邪恶方将不能够获得所述密钥,因为其不存储在非易失性存储器中。
根据一个方面,IC 200及/或易失性存储器电路206经设计成使得在复位(即,断电及通电及/或返回到其初始状态)之后,立即执行安全启动流(例如,也将IC 200复位)。根据一个方面,RPM电路201可自行将易失性存储器电路206复位。因此,不安全应用204无法将PUF 210及/或易失性存储器电路206复位且得到对PUF 210的初始逻辑状态值的存取权。将IC 200复位将终止不安全应用204运行且致使安全启动流再次开始。
根据一个方面,可以各种方式选择构成PUF 210的特定易失性存储器电路单元。根据一个实例,PUF 210存储器单元可为出于可靠性(即,在通电之后产生一致的逻辑状态值的增加的可能性)而选择的存储器电路单元的邻接块。根据另一实例,PUF 210存储器单元可彼此不邻接,且甚至是从易失性存储器电路206的各个部位随机选择。然而,一 旦选择构成PUF 210的特定易失性存储器电路单元,同一特定易失性存储器电路单元每次在通电时被再次选择为PUF 210的基础。
虽然易失性存储器电路206及安全易失性存储器电路212在图2中展示为独立的电路块,但根据一个方面,它们可为一个物理易失性存储器电路的一部分。例如,安全易失性存储器电路212可为由SEE 208摊派及保护的易失性存储器电路206的一部分。然而,根据另一方面,两个存储器电路206、212可为定位在同一IC 200上的不同存储器电路。
图3说明根据本发明的一个方面的易失性存储器电路206的示意框图。易失性存储器电路206可包含多个存储器模块/电路210、302、304、306,其各自包括多个易失性存储器电路单元。根据一个实例,易失性存储器模块/电路206、302、304、306是SRAM模块/电路,其各自包括多个SRAM电路单元。易失性存储器电路206包含PUF存储器电路210(本文中还被称作“第一易失性存储器电路”)。所有存储器电路210、302、304、306可用于存储一般的数据及代码(例如,存储与用户应用、次要启动加载器代码及/或HLOS相关的代码)。然而,根据一个方面,PUF存储器电路210的初始逻辑状态值应该在存储器电路210用于一般数据存储之前首先被清除。如下文将相对于图6及7更详细地解释,PUF存储器电路210的初始逻辑状态值及/或从所述初始逻辑状态值导出的秘密数据可首先存储在第二易失性存储器电路302(本文中也可被称作“保留的易失性存储器电路”)中,之后清除PUF存储器电路210。
图4说明根据本发明的一个方面的SEE 208的示意框图。SEE 208可包含安全易失性存储器电路212、控制电路402及允许SEE 208的组件(例如安全易失性存储器电路212及控制电路402)之间的通信的安全总线线路404。控制电路402是仅可由SEE 208而不可由不安全应用(例如用户应用、HLOS及/或一些次要启动加载器)存取及利用的控制逻辑。控制电路402可控制如何将数据存储及复制到安全易失性存储器电路212及从所述安全易失性存储器电路读取数据。控制电路402还可基于从PUF 210的初始逻辑状态值导出的秘密数据且在一些情况下基于额外辅助数据而执行本文中论述的提取秘密密钥的密码算法(参看图2)。控制电路402可进一步基于秘密密钥而产生额外次要密钥及/或公用数据。因此,SEE控制电路402表示用于在SEE处执行密码算法以基于秘密数据而提取秘密密钥的装置的一个实例。
安全易失性存储器电路212包含一或多个安全易失性存储器电路,其各自包括多个存储器单元。安全易失性存储器电路212可为任何类型的易失性存储器,例如但不限于eDRAM、SRAM等。安全易失性存储器电路212存储秘密数据并且还存储由控制逻辑 402部分基于秘密数据而提取的秘密密钥。SEE 208执行对安全易失性存储器电路212的完全控制,使得其它应用(例如,不安全应用)无法存取安全易失性存储器电路212。例如,SEE 208可物理地下锁(展示为停用总线逻辑406)将安全易失性存储器电路212耦合到IC 200的其它不安全电路的任何总线408线路。
图5说明根据本发明的一个方面的安全启动流500阶层。可由IC 200(例如,其处理电路203)执行的安全启动流500可部分由安全启动加载器501且部分由不安全应用加载器503构成。安全启动加载器501可包含主要启动加载器(PBL)502、第一次要启动加载器(SBL1)504及第二次要启动加载器(SBL2)506。由安全启动加载器501执行的代码被视为“安全的”,原因在于没有未授权用户代码(例如,HLOS、用户应用等)可在启动过程的此部分期间执行及/或注入。因此,几乎没有以下风险:与PUF 210(参看图2)的初始逻辑状态值相关的信息、从此类初始逻辑状态值导出的秘密数据及/或基于秘密数据而提取的秘密密钥在安全启动流500的此部分期间将受到损害/泄漏给未经授权的应用。
不安全应用加载器503可包含第三次要启动加载器(SBL3)508、应用次要启动加载器510、HLOS 512及用户应用514。不安全应用加载器503被视为“不安全的”,原因在于可在这些加载器508、510、512、514中的一或多者的执行及/或认证期间执行及/或注入未授权用户的代码。
参考图2及5,在IC 200通电之后,安全启动流500开始执行主要启动加载器502,其执行IC 200的最初始及基础任务中的一些,包含IC 200的各种电路及模块的初始化。PBL 502可被硬连线(例如,存储在ROM中)且因此非常安全,因为其实际上不可更改。PBL 502还在执行SBL1 504之前加载并认证SBL1 504。在认证SBL1 504之后,SBL1 504执行且可尤其基于易失性存储器电路206的初始逻辑状态值而导出秘密数据且将秘密数据存储到IC 200内的其它存储器电路。SBL1 504还可:初始化RPM电路201;配置IC 200系统时钟且发布复位;及在执行SBL2 506之前加载并认证SBL2 506。
在SBL2 506被认证之后,SBL2 506执行且可尤其将秘密数据从不安全存储器电路复制到安全易失性存储器电路212。SBL2 506还可:初始化IC 200的一或多个处理电路(例如,处理电路203);配置IC 200外部的存储器电路(例如,外部DRAM及/或SRAM);及加载并认证SEE 208、其它固件及/或SBL3 508。在认证SBL3 508之后,SBL3 508执行且可尤其检查用于软件快闪的存储模式。SBL3 508还可加载并认证HLOS 512及/或应用次要启动加载器510。以类似方式,以连续次序(例如应用次要启动加载器510、HLOS 512及用户应用514)加载、认证及执行后续启动过程。加载及执行这些过程502、504、506、508、510、512的次序可与图5中展示的不同。此外,图5中展示的次要启动加载 器及其它应用代码的数目及类型仅具说明性/示范性。例如,在本发明的其它方面中,更多或更少的次要启动加载器可包括安全启动流500。
图6说明根据本发明的一个方面的以本文中描述的提取及存储秘密密钥的安全启动流为特征的IC 600。IC 600可包括RPM电路201、处理电路(例如,应用处理器)203、安全启动加载器501、不安全应用启动加载器503、易失性存储器电路206、SEE 208及/或非易失性存储器电路604。安全启动加载器501可包含PBL 502、SBL1 504及/或SBL2。不安全应用启动加载器503可包含在SBL2 506之后执行的安全启动流500的部分的启动加载器(参看图5)。例如,不安全应用启动加载器503可包含SBL3 508、应用次要启动加载器510、HLOS代码512及/或用户应用514。易失性存储器电路206包含第一易失性存储器电路210(即,PUF)及第二/保留的易失性存储器电路302。SEE 208包含SEE控制电路402及安全易失性存储器电路212。安全易失性存储器电路212包含经配置以存储从PUF的初始逻辑状态值导出的秘密数据的第一安全易失性存储器电路608,及经配置以存储秘密密钥的第二安全易失性存储器电路610。
非易失性存储器电路604包含辅助数据606。根据一个实例,非易失性存储器电路604是IC 600的部分(即,其在“芯片上”)。根据另一实例,非易失性存储器电路604不是IC 600的部分且是与IC 600通信的单独电路(即,其在“芯片外”)。辅助数据606中的一些或全部可不安全,原因在于其可由不安全应用存取。第一安全易失性存储器电路608表示用于将秘密数据存储在安全易失性存储器电路中的装置的一个实例,且第二安全易失性存储器电路610表示用于将秘密密钥存储在安全易失性存储器电路中的装置的一个实例。
图7(包括图7A及7B)说明描绘根据一个方面的致使集成电路600提取及存储秘密密钥的安全启动流的流程图700。参考图6及7,在IC 600通电之后,将电力供应到易失性存储器电路206,包含第一易失性存储器电路210(即,用于PUF的存储器的部分)。如上文相对于图2所描述,易失性存储器电路206是一种类型的易失性存储器,例如SRAM,其存储器电路单元将通常归因于对于每一单元是唯一的制造细节而在通电时各自起初稳定到优选逻辑状态。初始逻辑值大体上可重复,使得在起动(即,通电)时,大部分单元将每次稳定到相同值。因此,在通电时,包含用于PUF的第一易失性存储器电路210的易失性存储器电路206稳定到初始逻辑状态值702。
接下来,第一次要启动加载器(SBL1)504定位易失性存储器电路206的存储器电路单元,将使用其初始逻辑状态值(即,标示第一易失性存储器电路210的存储器的部分),且基于那些初始逻辑状态值而导出秘密数据704。如上文所描述,秘密数据可等于初始 逻辑状态值,或可基于初始逻辑状态值的某一函数而导出秘密数据。在导出秘密数据之后,SBL1 504将秘密数据存储在易失性存储器电路的第二(即,保留的)存储器部分302中706。随后,SBL1 504清除第一易失性存储器电路210的初始逻辑状态值,使得后续过程/应用(例如,不安全应用)在那些存储器地址位置处可找不到初始逻辑状态值的迹线。一旦被清除,第一易失性存储器电路210可用于一般数据存储(即,任何后续过程/应用可使用所述第一易失性存储器电路210)708。
接下来,第二次要启动加载器(SBL2)506将存储在第二存储器部分302中的秘密数据复制/传递到SEE 208的安全易失性存储器电路212。例如,安全数据可存储在第一安全易失性存储器电路608处。SBL2 506随后清除易失性存储器电路206的第二存储器部分302及/或清除整个易失性存储器电路206,以便消除易失性存储器电路206中的秘密数据的任何迹线。一旦被清除,保留的存储器部分302可用于一般数据存储(即,任何后续过程/应用可使用所述保留的存储器部分302)712。
此外,SEE 208随后基于秘密数据而提取秘密密钥。例如,SEE 208处的控制逻辑电路402获得存储在第一安全易失性存储器电路608处的秘密数据及存储在非易失性存储器电路604处的辅助数据606。在获得此数据之后,控制电路402将辅助数据606及秘密数据用作输入而执行密码算法(例如,块码算法、扩展码算法、重复码算法等中的至少一者)以提取秘密密钥。所述密码算法可包含错误校正技术以提取相同的秘密密钥,尽管在启动之间在秘密数据及/或初始逻辑状态值之间存在一些差异也如此。秘密密钥也存储在安全易失性存储器212(例如,第二安全易失性存储器电路610)中714。
由于秘密密钥在SEE 208的控制内安全地存储在安全易失性存储器电路212处,所以其它不安全应用无法存取秘密密钥。此类不安全应用可基于秘密密钥而将对SEE输出数据(例如,如上文所描述,包含加密数据及/或公用数据)716的请求发送到SEE 208。SEE 208处的控制逻辑电路402接着可基于秘密密钥而产生SEE输出数据且将SEE输出数据提供给请求的不安全应用718。
由于秘密密钥仅存储在安全易失性存储器212中,所以在IC 600断电时会丢失秘密密钥。必须再次在通电之后通过安全启动流700基于PUF 210的初始逻辑状态值重新提取所述秘密密钥,如上文所描述。通过物理地打开IC 600且检查存储器电路而尝试得到对秘密密钥的未经授权的存取的邪恶方将不能够获得所述密钥,因为其不存储在非易失性存储器中。
根据一个方面,IC 600及/或易失性存储器电路206经设计以使得在复位之后,立即执行(例如,也将IC 600复位)安全启动流700。根据一个方面,RPM电路201可自行将 易失性存储器电路206复位。因此,不安全应用无法将PUF 210及/或易失性存储器电路206复位且得到对PUF 210的初始逻辑状态值的存取权。将IC 600复位将终止不安全应用运行且致使安全启动流700再次开始。
根据一个方面,可以各种方式选择构成PUF 210的特定易失性存储器电路单元。根据一个实例,PUF 210存储器单元可为出于可靠性(即,在通电之后产生一致的逻辑状态值的增加的可能性)而选择的存储器电路单元的邻接块。根据另一实例,PUF 210存储器单元可彼此不邻接,且甚至是从易失性存储器电路206的各个部位随机选择。然而,一旦选择构成PUF 210的特定易失性存储器电路单元,同一特定易失性存储器电路单元每次在通电时被再次选择为PUF 210的基础。
图8说明根据本发明的一个方面的在集成电路处操作的方法800。首先,将第一易失性存储器电路通电以产生多个初始逻辑状态值,其中所述第一易失性存储器电路在集成电路上802。接下来,基于多个初始逻辑状态值而导出秘密数据804。随后,秘密数据存储在安全易失性存储器电路中,其中通过安全执行环境(SEE)保护安全易失性存储器电路806。接下来,在第一易失性存储器电路中清除多个初始逻辑状态值808。随后,在SEE处执行密码算法以基于秘密数据而提取秘密密钥810。也将秘密密钥存储在安全易失性存储器电路中812。根据一个方面,可提取及存储秘密密钥(即,步骤810、812),之后清除第一易失性存储器电路中的多个初始逻辑状态值(步骤808)。
图9说明根据本发明的一个方面的IC 200、600的处理电路203的示意框图。处理电路203可包含秘密数据导出电路902、清除电路904及/或密码算法电路906。
参考图2、6、8及9,秘密数据导出电路902是用于基于多个初始逻辑状态值而导出秘密数据的装置的一个实例。清除电路904是用于清除第一易失性存储器电路206中的多个初始逻辑状态值的装置的一个实例。密码算法电路906是用于在SEE 208处执行密码算法以基于秘密数据而提取秘密密钥的装置的一个实例。
图2、3、4、5、6、7A、7B、8及9中所说明的组件、步骤、特征及/或功能中的一或多者可经重新布置及/或组合为单个组件、步骤、特征或功能,或体现在若干组件、步骤或功能中。在不脱离本发明的情况下,还可以添加额外的元件、组件、步骤及/或功能。图2、3、4、6、及/或9中所说明的设备、装置及/或组件可经配置以执行图5、7A、7B及/或8中所描述的方法、特征或步骤中的一或多者。本文中所描述的算法也可以有效地实施于软件中及/或嵌入于硬件中。
此外,在本发明的一个方面中,图2、6及/或9中说明的处理电路203可为专用处理器(例如,专用集成电路(例如,ASIC)),其特定经设计及/或硬连线以执行图5、7A、 7B及/或8中描述的算法、方法及/或步骤。因此,此类专用处理器(例如,ASIC)可为用于执行图5、7A、7B及/或8中描述的算法、方法及/或步骤的装置的一个实例。
此外,应注意,可以将本发明的各方面描述为过程,所述过程被描绘为流程图、流图、结构图或框图。尽管流程图可将操作描述为连续过程,但许多操作可并行或同时执行。另外,可以重新布置操作的顺序。过程在其操作完成时终止。过程可以对应于方法、功能、程序、子例程、子程序等。当过程对应于函数时,其终止对应于函数返回到调用函数或主函数。
此外,存储媒体可表示用于存储数据的一或多个装置,包含只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器装置和/或其它机器可读媒体;以及用于存储信息的处理器可读媒体和/或计算机可读媒体。术语“机器可读媒体”、“计算机可读媒体”及/或“处理器可读媒体”可包含(但不限于)非暂时性媒体,例如便携式或固定存储装置、光学存储装置,及能够存储或含有指令及/或数据的各种其它媒体。因此,本文中描述的各种方法可完全或部分地由可存储在“机器可读媒体”、“计算机可读媒体”及/或“处理器可读媒体”中且由一或多个处理器、机器及/或装置执行的指令及/或数据来实施。
此外,本发明的各方面可以由硬件、软件、固件、中间件、微码或其任何组合实施。当以软件、固件、中间件或微码实施时,用以执行必要任务的程序代码或代码段可存储在例如存储媒体或其它存储装置等机器可读媒体中。处理器可以执行必要任务。代码段可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类,或指令、数据结构或程序语句的任意组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由包含存储器共享、消息传递、令牌传递、网络传输等任何合适的方式传递、转发或传输。
结合本文中揭示的实例描述的各种说明性逻辑块、模块、电路、元件及/或组件可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文中描述的功能的任何组合来实施或执行。通用处理器可为微处理器,但在替代方案中,处理器可以为任何常规的理器、控制器、微控制器或状态机。处理器还可以实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器与DSP核心的结合,或任何其它此类配置。
结合本文中揭示的实例而描述的方法或算法可以处理单元、编程指令或其它方向的 形式直接体现在硬件、可由处理器执行的软件模块或两者的组合中,且可含于单个装置中或跨越多个装置而分布。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸磁盘、CD-ROM,或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器,使得处理器可从存储媒体读取信息和将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。
所属领域的技术人员将进一步了解,结合本文所揭示的方面描述的各种说明性逻辑块、模块、电路及算法步骤可以实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的此可互换性,以上已大体就其功能性来描述了各种说明性组件、块、模块、电路和步骤。此功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。
本文中所描述的本发明的各种特征可在不脱离本发明的情况下实施于不同系统中。应注意,本发明的前述方面仅为实例,且不应解释为限制本发明。本发明的各方面的描述既定是说明性的,且不限制权利要求书的范围。因此,本发明的教示可容易应用于其它类型的设备,且所属领域的技术人员将明白许多替代方案、修改及变化。