处理系统.pdf

上传人:t**** 文档编号:1628274 上传时间:2018-06-30 格式:PDF 页数:14 大小:5.31MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410412509.7

申请日:

2014.08.20

公开号:

CN104424441A

公开日:

2015.03.18

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F21/57申请日:20140820|||公开

IPC分类号:

G06F21/57(2013.01)I; G06F21/64(2013.01)I

主分类号:

G06F21/57

申请人:

恩智浦有限公司

发明人:

麦克尔·麦克·派德里克·皮德斯; 克劳德·德巴; 劳伦·杰拉德

地址:

荷兰艾恩德霍芬

优先权:

13181243.0 2013.08.21 EP

专利代理机构:

中科专利商标代理有限责任公司11021

代理人:

杨静

PDF下载: PDF下载
内容摘要

公开了一种处理系统以及控制处理系统的处理单元对固件代码进行访问的方法。提出基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的。根据预定的验证算法来处理固件代码,以计算固件代码的验证值。解析所述验证值和有效密钥,以确定固件代码是否是可信任的。基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。

权利要求书

权利要求书
1.  一种控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问的方法,所述方法包括以下步骤:
基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的;
根据预定的验证算法来处理固件代码,以计算固件代码的验证值;
解析所述验证值和有效密钥,以确定固件代码是否可信任;以及
基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。

2.  根据权利要求1所述的方法,还包括以下步骤:
如果确定固件代码不是可信任的,则修改存储器的第二区域的有效性数据,以指示所述密钥不再有效。

3.  根据权利要求1或2所述的方法,其中,确定有效密钥的步骤包括:
标识存储器的第一区域中存储的第一密钥;
通过查阅存储器的第二区域的有效性数据来确定第一密钥是否有效;以及
如果确定第一密钥有效,则将第一密钥标识为有效密钥。

4.  根据权利要求3所述的方法,其中,确定有效密钥的步骤包括:
如果确定第一密钥不是有效的,则标识存储器的第一区域中存储的第二密钥;
通过查阅存储器的第二区域的有效性数据来确定第二密钥是否有效;以及
如果确定第二密钥有效,则将第二密钥标识为有效密钥。

5.  根据权利要求4所述的方法,还包括以下步骤:
如果确定第二密钥有效,则修改存储器的第二区域的数据以指示第一密钥不是有效的。

6.  根据权利要求3、4或5所述的方法,其中,有效性数据包括指示密钥是否有效的标志或比特值。

7.  根据前述任一项权利要求所述的方法,还包括:
确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示存储器的第一区域中不再存储有有效密钥;以及
如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法。

8.  根据前述任一项权利要求所述的方法,其中,存储器的第一区域包括非易失性存储器,存储器的第二区域包括一次可编程存储器。

9.  根据前述任一项权利要求所述的方法,还包括以下在前步骤:
将来自可信任存储器的程序代码加载到存储器的第一区域;
根据预定的认证算法处理所述程序代码以确定程序代码是否可信任;以及
基于程序代码是否被确定为可信任,控制处理单元对程序代码的访问。

10.  根据权利要求9所述的方法,其中,可信任存储器包括只读存储器。

11.  一种计算机程序产品,用于控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现在其上的计算机可读程序代码,所述计算机可读程序代码配置为执行前述任一项权利要求的所有步骤。

12.  一种处理系统,包括:
处理单元;
存储器,适用于存储固件代码,所述存储器包括适用于存储一个或多个密钥的第一存储区域以及适用于存储指示密钥是否有效的有效性数据的第二存储区域;
密钥有效性单元,适用于基于第二存储区域的有效性数据来标识第一存储区域中存储的有效密钥;
验证单元,适用于根据预定的验证算法处理固件代码以计算固件代码的验证值;
认证单元,适用于解析验证值和有效密钥以确定固件代码是否可信任;以及
访问控制单元,适用于基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。

13.  根据权利要求12所述的系统,其中,所述系统适用于在确定固件代码不是可信任情况下修改第二存储区域的数据以指示密钥不再有效。

14.  根据权利要求12或13所述的系统,其中,密钥有效性单元适用于标识第一存储区域中存储的第一密钥,以通过查阅第二存储区域的有效性数据来确定第一密钥是否有效,以及如果确定第一密钥有效,则将第一密钥标识为有效密钥;并且
密钥有效性单元还适用于如果确定第一密钥不是有效的则标识第一存储区域中存储的第二密钥,通过查阅第二存储区域的有效性数据来确定第二密钥是否有效,以及如果确定第二密钥有效,则将第二密钥标识为有效密钥。

15.  根据权利要求12至14中任一项权利要求所述的系统,其中,所述系统适用于确定有效密钥是否是寿命终止密钥,以及如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法,其中所述寿命终止密钥指示第一存储区域中不再存储有有效密钥。

说明书

说明书处理系统
技术领域
本发明涉及处理系统,更具体地,涉及处理系统的处理单元对处理系统存储的固件的访问进行控制。
背景技术
安全性是诸如微控制器等处理系统的重要考虑因素。例如,可能需要确保处理器仅执行由可执行程序代码(或等同的指令集,例如脚本)描述的特定任务。然而代码和/或代码的执行可能遭受攻击。攻击可以包括以下示例列表中的任何一个:
所存储的程序代码的未授权修改;
执行期间的代码修改;
代码转储(例如,出于逆向工程目的来读出代码);
存储器存取特权的未授权改变;
执行来自数据段的未授权代码。
典型地,固件(例如,基本输入/输出系统(BIOS)代码或核心系统软件代码)操作用于识别和初始化处理系统或电子设备的硬件子系统和组件。因此,第三方对固件的逆向工程可以提供对采用固件集成电路的系统的硬件架构的指示。此外,固件上的成功攻击(如以上所列)可以使第三方能够改变处理系统的操作,阻止处理系统正确操作,和/或向组件或其他系统/设备发送病毒。
已知使用基于硬件的安全性来保护固件,如,将固件存储在非易失性存储器(例如,只读存储器(ROM),使得无法在存储器内修改该固件。然而这可能没有提供足够的保护来防止第三方访问固件并解析固件以用于不期望的或未授权的用途。
已知在嵌入式设备上提供已知为“安全启动(Secure Boot)”的安全性特征,试图确保处理器仅执行由设备的发布者授权的固件。所述安全 启动过程采用密钥来验证固件的完整性。使用验证算法来验证固件的完整性,所述验证算法执行固件上的功能并检查该功能相对于密钥的输出。如果验证算法验证了固件的完整性,则允许处理器执行该固件。
因此,安全启动构思尝试例如在固件中没有可利用缺陷的情况下相对于在重置之前发生的被动攻击或软件攻击提供保护。为了符合安全性模型,安全启动基于硬件中的信任根(root of trust)。
传统的安全启动构思具有以下缺点:
-固件验证密钥需要更大容量的一次可编程(OTP)存储器:使用验证密钥需要更大容量的OTP存储器和/或需要使用在低成本设备中甚至在软件中不常用的密码算法。例如,示例签名可以需要2048比特密钥来被看作在接下来的二三十年中是安全的。
-存在密钥泄密的风险:即使基本密码算法很强,密钥仍然会由于例如固件更新期间的不适当保护和/或错误操纵而被泄密。因此安全启动机制的鲁棒性依赖于用于保护密钥机密性的过程的鲁棒性。如果密钥被泄密,则可能无法阻止未授权的固件被执行。
发明内容
根据本发明的实施例,提供了一种控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问的方法,所述方法包括以下步骤:基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的;根据预定的验证算法来处理固件代码,以计算固件代码的验证值;解析所述验证值和有效密钥,以确定固件代码是否可信任;以及基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。
因此,提出了一种控制对处理系统的固件代码的访问的构思。实施例可以采用多个密钥,所述多个密钥在片上系统内提供嵌入式的安全固件执行。实施例因此可以限制或防止固件代码的执行。
在实施例中,如果确定固件代码不是可信任的,则修改存储器的第二区域的有效性数据,以指示所述密钥不再有效。因此,可以检测到泄密密钥并采取预防措施以将泄密密钥呈现为无效。
可以采用多个密钥,使得在先前密钥被泄密或超期之后可以使用新密钥。相较于采用传统安全性构思(如,安全启动)的系统,这可以允许实施例长时间保持功能性和安全性。
存储器的第二区域的有效性数据可以简单地包括针对每个密钥的指示该密钥是否有效的标志或比特值。此外,存储器的第二区域可以包括一次可编程存储器,使得一旦有效性数据被修改过(例如,指示密钥不是有效的)则该有效性数据就不能再被修改。这可以帮助防止有效性数据受到未授权修改。
在实施例中,可以确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示存储器的第一区域中不再存储有有效密钥。如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法。这样,实施例可以采用解决所有密钥都被泄密的情形的构思。寿命终止算法可以例如永久性禁用处理系统,使得不能再使用该处理系统。
在实施例中,存储器的第一区域可以包括非易失性存储器,存储器的第二区域可以包括OTP存储器。将OTP存储器用于存储器的第二区域可以使能仅一次修改有效性数据,以允许密钥有效性从有效变为无效,此后不再改变。因此,可以使密钥无效(假定在发布之后密钥全都被标记为有效),但是然后不能在解除操作(例如,使已标记为“无效”的密钥有效)。这可以帮助确保甚至在软件攻击的情况下密钥也保持无效。
处理系统的可信任处理器可以包括ROM,使得使用基于硬件的安全性来保护所述ROM以防止被修改。
根据本发明的另一构思,提供了一种计算机程序产品,用于控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问。所述计算机程序产品可以包括计算机可读存储介质,所述计算机可读存储介质具有体现在其上的计算机可读程序代码,所述计算机可读程序代码配置为执行根据本发明实施例的方法的所有步骤。
根据本发明的另一方面,提供了根据独立权利要求11所述的一种处理系统。
系统可以适用于在确定固件代码不是可信任的情况下修改第二存储区域的数据使得密钥不再有效。
在实施例中,系统可以适用于确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示第一存储区域中不再存储有有效密钥。如果确定有效密钥是寿命终止密钥,系统可以执行预定的寿命终止算法。
处理系统可以是微控制器、微处理器、微芯片或处理平台。因此,处理器可以是中央处理单元(CPU)或处理器核。
提出的实施例可以采用处理系统中典型存在的组件(全部通过通信总线/桥接器来连接的处理器单元或CPU、存储器和外围设备)。
附图说明
现在将参考附图仅通过示例来描述本发明的优选实施例,附图中:
图1是示出了采用传统安全启动过程的处理系统的存储区的示意框图;
图2是示出了根据实施例的处理系统的存储区的示意框图;
图3示出了根据实施例的使密钥无效的示例;
图4是根据实施例的方法的流程图;
图5是根据另一实施例的方法的流程图;以及
图6是根据本发明实施例的系统的示意框图。
具体实施方式
本文中,对固件代码的引述应当被理解为意思是永久性存储区与其中存储的程序代码和数据的组合,所述程序代码和数据例如是处理系统的BIOS代码或核心系统软件代码,典型地被处理系统的制造商或供应商设置在非易失性存储器中。固件代码与应用代码的区别在于应用代码典型地设计用于除了由固件代码提供的功能以外还实现更高级别的或补充的功能,应用代码典型地是易失性存储区上存储的引导处理器执行特定操作的机器可读指令集(同行采用计算机程序的形式)。因此,固件代码典型地永久性存储在硬件中(具体地,存储在非易失性存储器中),而应用代码典型地存储在易失性或可编程存储器中,因此能够被修改。
另外,固件代码由硬件实现方式继承,独立于其应用。固件代码支持两种不同类型的服务:低级别服务,包括通用接口控制处理和硬件提 取层(注册控制、电力管理等);以及安全私有功能,包括启动序列、对于终端用户保护的服务(例如,访问限制)以及系统监督。典型地对于终端用户保护这种代码(例如以防止未授权的修改)。
相反,应用代码专用于处理系统的最终使用,独立于硬件实现方案。通过重新使用底层级别的功能(固件代码的一部分)可以开发任何应用代码。
在下一节讨论低成本嵌入式设备的情况,所述低成本嵌入式设备具有单个中央处理器(或CPU)、启动只读存储(ROM)区以及一次可编程(OTP)存储区。启动ROM是初始硬件信任根。启动ROM典型地包含在重置之后马上由处理器执行的引导程序(bootstrap)软件。由于启动程序软件存储于受保护以免被修改的ROM中,可以不需要验证启动程序软件。OTP存储器的作用类似于启动ROM(例如,提供硬件信任根),但是OTP存储器是可编程的(一次),因此制造商可以配置系统的选项或参数。除了OTP,设备之间不再有任何区别,因此具有相同启动ROM的所有CPU可以仅启动同一个固件。OTP存储器的种类可以取决于实际安全性模型。典型地,OTP存储器仅支持一个反向的比特编程(例如,从1到0),并且通常在OTP存储器中存在附加OTP锁定标志,所述附加OTP锁定标志防止在OTP已被编程之后在OTP中进一步写入。任何软件或硬件装置都无法解除锁定。
片上解决方案(例如,与CPU在相同管芯上或者至少在相同封装内的ROM和OTP)可以比片下解决方案(例如,分离的离散组件)提供更好的保护,但是如果仅考虑软件攻击,这两种解决方案是相同的。
现在参考图1,首先提供了对启动ROM 10中编程的传统安全启动过程的高级别描述。这种传统的安全性方法依赖于:计算固件二进制代码20的“摘要(digest)”(或认证值),然后将该摘要与OTP 30中存储的参考密钥值相比较。为了提供显著的保护,摘要函数优选地是现有技术密码单向函数(例如,所谓的密码散列函数,如,SHA-1/2/3标准),使得:(i)找到给出完全相同的摘要值的两个二进制值是极为困难的;并且(ii)给出摘要值以找到在散列之后给出相同值的二进制值是极为困难的。
相较于图1描述的传统安全启动过程,提出的构思可以提供相同的灵活性,但是还可以允许在密钥泄密的情况下反应。此外,相较于传统安全启动过程,提出的构思可以仅需要容量稍大的OTP存储器。此外,提出的构思可以保持固件更新过程简单,并且可以不需要附加的软件接口。
图2是示出了根据实施例的处理系统的存储区的示意框图。
提出的解决密钥泄密的构思允许多个固件签名密钥。实施例可以允许这一点,同时最小化对OTP存储器的影响。
提出在启动序列中添加另一步骤。在第一步骤中,启动ROM加载启动加载器的代码和数据,其中经由OTP中存储的散列来保护启动加载器的完整性。在第二步骤中,启动加载器加载固件的代码和数据,其中经由签名来保护固件的完整性。这种两步方法得益于基于散列的安全启动的低硬件影响和最大安全保证,同时仍然允许由基于签名的安全启动提供的灵活性。
将启动序列分成两步可能不能解决密钥泄密问题。为了解决该问题,提出在启动加载器35中采用多个签名验证密钥。这允许在认为先前密钥被泄密或无效时发布以新密钥来签名的固件代码。所有签名验证密钥的完整性可以由OTP中的散列函数来保护,因为其覆盖了整个启动加载器35代码和数据。因此,可以既无法篡改密钥,也无法在设备/系统发布之后改变可信任的密钥的集合。因此,对于一些实施例,系统制造商可以必须仔细选择该系统终身受用的密钥的数目。然而由于启动加载器35和密钥可以存储在常规非易失性(NV)存储器中,附加密钥的成本可以是可忽略的。
当密钥被泄密时,提供了一种告知启动加载器35不使用该密钥的方式。通过针对每个密钥分派有效性比特40来实现这一点。在使用密钥来验证固件签名之前,启动加载器35首先从OTP读取针对该密钥的有效性比特40,并且仅在该有效性比特40标识为有效的情况下使用该密钥。
通过在OTP中存储有效性比特,可以使密钥无效(假定在发布之后全都标记为有效),但是然后无法解除该操作(使已经标记为“无效”的密钥有效)。这种机制的简单性可以将OTP存储器使用中的开销减小至最 小。
在实施例中,当启动加载器35利用密钥存储器中的给定密钥成功验证了固件20签名20a时,启动加载器35可以在执行该固件20之前将密钥存储器中的所有先前密钥都标记为无效。因此,制造商可以容易地通过发布以密钥存储器中的下一个密钥来签名的新固件(或相同固件)来远程地使密钥无效。
注意,由于可以不更新启动加载器35代码,优选地该代码尽可能简单以便减小找到可利用缺陷的机率。此外,为了防止拒绝服务(denial-of-service)攻击,优选地在执行固件20之前,启动加载器35锁定对OTP存储器的写入访问。这样,即使某恶意软件能够通过开发获得特权访问,该恶意软件也无法篡改有效性比特40。
在优选实施例中,在运行新固件之前更新先前密钥的有效性比特。在图3中示出了这一点,图3示出了根据实施例的使密钥无效的示例。本文中,修改OTP的验证数据,使得先前密钥(密钥1)的有效性比特改变成指示该密钥无效的值(例如,逻辑0)。这可以帮助确保甚至在软件攻击的情况下密钥也是无效的。
注意,现代固件更新过程通常包括恢复机制,所述恢复机制允许在新固件没有正确启动的情况下回到先前固件。通常的实现是在存储器中保存先前固件的拷贝,如果检测到问题则启动该拷贝(当然这需要CPU重置)。提出的密钥失效机制可以干扰该机制,因为启动加载器不会再接受启动先前固件。为了不降低密钥失效机制的鲁棒性,提出在使密钥无效时使用与设备中当前加载的固件相同的固件。这仅仅在于更新设备中的签名。如果固件也必须被更新,这应当分两阶段进行:首先使用下一个密钥来更新签名(保持相同的固件二进制值),然后更新签名和固件两者。
示例实施例的方法步骤可以概括为如下:
设置
i)产生新的启动加载器代码MBL
ii)产生n个私钥/公钥对的集合pairs{SKi,PKi}(i=1…n)
iii)在启动加载器代码和密钥存储器上计算摘要HBL=HASH(MBL| PK1|…|PKn)
iv)将摘要HBL写入设备OTP,将启动加载器代码和密钥存储器MBL|PK1|…|PKn写入设备NV存储器
v)以严格的访问控制将私钥{SKi}保存在安全位置
vi)保存当前活跃私钥的索引。令current=1。
密钥泄密
如果密钥SKi泄密则执行该过程,其中j≥current。
i)令current=j+1
ii)计算固件签名SFW=SIGNSK,current(MFW)
注意,重新使用与设备中当前加载的固件相同的固件。
iii)将签名SFW写入设备NV存储器
固件写入/更新
i)产生新固件MFW
ii)计算固件签名SFW=SIGNSK,current(MFW)。
iii)将固件MFW和签名SFW写入设备NV存储器
启动加载器启动
i)重置CPU,并开始执行位于启动ROM中的程序。
ii)CPU读取(未受保护的)非易失性存储器中存储的启动加载器二进制值MBL,并使用安全的现有技术密码散列函数在该固件二进制值上计算摘要H。
h=HASH(MFW)
iii)如果h与参考摘要值HBL相同,CPU执行启动加载器。否则,CPU完全暂停直到下一次重置。
多密钥固件启动
在图4的流程图中示出了该过程。
100)过程开始,检查密钥存储器是否为空。如果密钥存储器为空, 则启动加载器立即加载并执行200固件而不用验证。这允许在部署过程中部署新固件。
102)如果密钥存储器不为空,CPU加载固件并检查固件是否被签名。如果固件没有被签名,则CPU完全暂停(例如,冻结)210直到下一次重置。
104)如果固件被签名,则选择下一个密钥。
106)通过读取OTP中存储的有效性数据(例如,针对所选密钥的相关有效性比特)来获取与所选密钥的有效性相关的信息。
108)基于读取的有效性数据,确定所选密钥是否有效。
110)如果确定密钥不是有效的,则检查是否存在更多密钥。如果不存在要选择的更多密钥,则CPU完全暂停(例如,冻结)210直到下一次重置。然而,如果存在更多密钥,则方法返回104以选择下一个密钥。因此,步骤104-110在密钥存储器中找到有效密钥PKi。
112)在找到有效密钥PKi之后,CPU从NV存储器读取固件签名SFW和固件二进制值,并尝试验证固件签名
{0,1}←VERIFYPK,i(MFW,SFW)
114)基于读取验证步骤112,确定是否验证了固件签名。如果没有验证固件签名,则过程返回步骤110以确定是否可以选择另一密钥并使用所述另一密钥来进行验证。如果验证了固件签名,则方法进行至步骤116。
116)CPU修改验证数据以将所有先前密钥的有效性比特设置为“无效”(仅当i>1时),然后执行200非易失性存储器中加载的固件。
处理寿命终止(Handling end-of-life)
从以上描述可以看出,在启动加载器中采用多个签名验证密钥通过使泄密的密钥无效并切换至另一密钥而解决了密钥泄密问题。然而仍然可能存在启动加载器中的所有密钥都泄密的问题。
无法改变预定的密钥集合,优选地可以采用在所有密钥都被泄密的情形下永久性禁用系统的构思。这可以称作是对系统寿命终止的处理。提出了用于处理寿命终止的两个构思:
第一寿命终止构思——寿命终止固件
以上参考图3和图4描述的实施例不适于使启动加载器密钥存储器中的最后一个密钥无效。因此,提出通过在发布处理系统/设备之前采用永久性准备来解决寿命终止问题(而无需对标识启动加载器过程做任何改变)。更具体地,提出的构思为启动加载器密钥存储器中的最后一个密钥赋予特殊用途。因此,相应的私钥仅使用一次以签名特殊的寿命终止固件,然后被永久性破坏。对于这样的实施例,如果制造商想要远程终止系统/设备,简单地将寿命终止固件与签名一起发送至系统/设备。由于密钥不再可用,不存在密钥泄密的风险,并且没有办法用另一固件来更新设备。
注意,该方法需要更新固件和验证密钥两者,这典型地优选是要避免的。然而对于这样的实施例而言这是可接受的,因为目的是无论如何要终止系统/设备。
例如,寿命终止固件可以显示警告消息,所述警告消息声明不再能够使用该设备并且用户必须联系设备卖主或制造商以便更换。固件还可以删除敏感数据、向发布者主机发送确认等等。
可以如下概括采用这种寿命终止构思的示例实施例的方法步骤(其中其他过程没有改变)。
设置——寿命终止
i)产生寿命终止私钥/公钥对{SKEOL,PKEOL}
ii)产生寿命终止固件MEW,EOL
iii)计算固件签名SFW,EOL=SignSK,EOL(MFW,EOL).
iv)破坏寿命终止私钥SKEOL
v)添加寿命终止公钥作为启动加载器密钥存储器中的最后一个密钥(这是在计算启动加载器散列之前进行的)。
vi)以严格的访问控制将寿命终止签名存储在安全位置。也存储寿命终止固件,但是不需要超出防止删除和修改以外的严格访问控制。
终止设备
i)将寿命终止固件MFW,EOL和签名SFW,EOL写入设备NV存储器。
可以优选地采取一些防范以避免拒绝服务攻击。
由于可以不加密寿命终止固件和签名,因此如果恶意用户能够访问终止的设备,则该恶意用户可以容易地读取所述寿命终止固件和签名。如果该用户进行管理以将该固件发送或写入在密钥存储器中具有相同寿命终止验证密钥的其他设备,则该用户可以不经发布者同意就终止这些设备。提出的解决该问题的构思是针对每个系统/设备产生唯一的寿命终止密钥对和签名。每个系统/设备然后可以具有其自己的寿命终止验证密钥的版本。在产生之后,将优选地以严格的访问控制将每个设备的寿命终止签名保存在安全位置。
注意,寿命终止固件可以对于所有系统/设备而言是相同的。在这种情况下,每当制造商/发布者希望终止系统/设备时,将会把一般寿命终止固件与对应于该具体系统/设备的寿命终止签名一起发送/写入。
第二寿命终止构思——立即寿命终止
备选构思可以采用对参考图4描述的启动加载器过程的修改。如上述第一寿命终止构思一样,第二构思为密钥存储器中的最后一个密钥赋予特殊用途。然而在该第二构思中,当启动加载器使用密钥存储器中的最后一个密钥成功验证了新固件时,将会立即使密钥存储器中的所有密钥无效,然后进入无限冻结循环。因此从不执行新固件。
在图5的流程图中描述了这种修改后的启动加载器过程。将会看出,修改后的启动加载器过程与图4所示的启动加载器过程的区别仅在于在将先前密钥标记为无效的步骤116之后包括附加步骤(步骤118和120)。
更具体地,在修改验证数据以将所有先前密钥PK1…PKi-1的有效性比特设置为“无效”(仅当i>1时)的步骤116之后,执行步骤118,在步骤118中检查密钥是否是密钥存储器中的最后一个密钥。如果在步骤118确定该密钥不适密钥存储器中的最后一个密钥,则方法简单地进行至步骤200,在步骤200执行加载到非易失性存储器中的固件。
然而如果在步骤118确定密钥是密钥存储器中的最后一个密钥,则方法进行至步骤120,在步骤120,(通过合适地修改验证数据)使密钥存 储器中的所有密钥无效。在使所有密钥无效之后,方法进行至步骤210,在步骤210CPU完全暂停(例如,冻结)。
现在参考图6,示出了根据本发明实施例的处理系统的示意框图。系统包括与通信总线204相连的处理器单元或CPU202。还与通信总线204相连的是易失性存储器单元206、非易失性存储器单元208、外围设备210和ROM单元212。
本文中,ROM单元212存储:用于启动/初始化系统200的固件启动代码序列;在第三方应用执行期间要保护的安全固件代码;以及服务实现方式获得的制造商内部固件。
易失性存储器206包括随机存取存储器(RAM)单元206a和一次可编程存储器206b,如闪存或EEPROM。RAM单元206a用于存储在启动代码执行或应用代码执行期间由CPU 202使用的数据。一次可编程存储器206b适于存储用于验证密钥有效性的散列函数和验证数据。一次可编程存储器206b还可以存储固件代码(如果没有位于ROM单元208中的话)。
非易失性存储器208适于存储处理系统200的启动加载器代码、一个或多个密钥、固件代码以及文件系统。因此将理解,与传统处理系统不同,图6的系统200适于采用与图2所示的存储区类似的存储区,其中在非易失性存储器中存储多个密钥,在一次可编程存储器中存储表示密钥有效性的验证数据。
实施例可以在用于在例如个人计算机或网络服务器等计算机的处理器上执行的计算机程序产品中实现,如果在计算机上执行所述计算机程序产品,所述计算机程序产品使计算机实现根据实施例的方法的步骤。由于将这些步骤实现为计算机程序产品仅需要本领域技术人员的惯用技术,为了简明起见以下将不再详细论述。
在实施例中,将计算机程序产品存储在计算机可读介质中。可以考虑任意合适的计算机可读介质,例如,CD-ROM、DVD、USB棒、存储卡、网络区域存储设备、互联网可访问数据仓库等等。
通过阅读附图、说明书和所附权利要求,实践要求保护的发明的本领域技术人员可以理解并实现所公开的实施例的其他变型。在权利要求中,词语“包括”不排除其他元件或步骤,“一种”不排除多个。单个处 理器或其他单元可以实现权利要求中所列若干项功能。在互不相同的从属权利要求中阐述特定的措施并不表明不能有利地使用这些措施的组合。计算机程序可以存储/分布于合适的介质上,如,与其他硬件一起或作为其他硬件的一部分提供的光学存储介质或固态介质,但是也可以以其他形式分布,如,经由互联网或其他有线或无线通讯系统。权利要求中的任何参考标记不应看作是对范围的限制。

处理系统.pdf_第1页
第1页 / 共14页
处理系统.pdf_第2页
第2页 / 共14页
处理系统.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《处理系统.pdf》由会员分享,可在线阅读,更多相关《处理系统.pdf(14页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410412509.7(22)申请日 2014.08.2013181243.0 2013.08.21 EPG06F 21/57(2013.01)G06F 21/64(2013.01)(71)申请人恩智浦有限公司地址荷兰艾恩德霍芬(72)发明人麦克尔麦克派德里克皮德斯克劳德德巴 劳伦杰拉德(74)专利代理机构中科专利商标代理有限责任公司 11021代理人杨静(54) 发明名称处理系统(57) 摘要公开了一种处理系统以及控制处理系统的处理单元对固件代码进行访问的方法。提出基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有。

2、效密钥,所述有效性数据指示密钥是否是有效的。根据预定的验证算法来处理固件代码,以计算固件代码的验证值。解析所述验证值和有效密钥,以确定固件代码是否是可信任的。基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。(30)优先权数据(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书8页 附图3页(10)申请公布号 CN 104424441 A(43)申请公布日 2015.03.18CN 104424441 A1/2页21.一种控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问的方法,所述方法包括以下步骤:基于存储器的第二区域中。

3、的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的;根据预定的验证算法来处理固件代码,以计算固件代码的验证值;解析所述验证值和有效密钥,以确定固件代码是否可信任;以及基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。2.根据权利要求1所述的方法,还包括以下步骤:如果确定固件代码不是可信任的,则修改存储器的第二区域的有效性数据,以指示所述密钥不再有效。3.根据权利要求1或2所述的方法,其中,确定有效密钥的步骤包括:标识存储器的第一区域中存储的第一密钥;通过查阅存储器的第二区域的有效性数据来确定第一密钥是否有效;以及如果确定第一密钥有效,则将第一密钥。

4、标识为有效密钥。4.根据权利要求3所述的方法,其中,确定有效密钥的步骤包括:如果确定第一密钥不是有效的,则标识存储器的第一区域中存储的第二密钥;通过查阅存储器的第二区域的有效性数据来确定第二密钥是否有效;以及如果确定第二密钥有效,则将第二密钥标识为有效密钥。5.根据权利要求4所述的方法,还包括以下步骤:如果确定第二密钥有效,则修改存储器的第二区域的数据以指示第一密钥不是有效的。6.根据权利要求3、4或5所述的方法,其中,有效性数据包括指示密钥是否有效的标志或比特值。7.根据前述任一项权利要求所述的方法,还包括:确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示存储器的第一区域中不再存储有有效。

5、密钥;以及如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法。8.根据前述任一项权利要求所述的方法,其中,存储器的第一区域包括非易失性存储器,存储器的第二区域包括一次可编程存储器。9.根据前述任一项权利要求所述的方法,还包括以下在前步骤:将来自可信任存储器的程序代码加载到存储器的第一区域;根据预定的认证算法处理所述程序代码以确定程序代码是否可信任;以及基于程序代码是否被确定为可信任,控制处理单元对程序代码的访问。10.根据权利要求9所述的方法,其中,可信任存储器包括只读存储器。11.一种计算机程序产品,用于控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问,所述计算机程序产品。

6、包括计算机可读存储介质,所述计算机可读存储介质具有体现在其上的计算机可读程序代码,所述计算机可读程序代码配置为执行前述任一项权利要求的所有步骤。12.一种处理系统,包括:权 利 要 求 书CN 104424441 A2/2页3处理单元;存储器,适用于存储固件代码,所述存储器包括适用于存储一个或多个密钥的第一存储区域以及适用于存储指示密钥是否有效的有效性数据的第二存储区域;密钥有效性单元,适用于基于第二存储区域的有效性数据来标识第一存储区域中存储的有效密钥;验证单元,适用于根据预定的验证算法处理固件代码以计算固件代码的验证值;认证单元,适用于解析验证值和有效密钥以确定固件代码是否可信任;以及访问。

7、控制单元,适用于基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。13.根据权利要求12所述的系统,其中,所述系统适用于在确定固件代码不是可信任情况下修改第二存储区域的数据以指示密钥不再有效。14.根据权利要求12或13所述的系统,其中,密钥有效性单元适用于标识第一存储区域中存储的第一密钥,以通过查阅第二存储区域的有效性数据来确定第一密钥是否有效,以及如果确定第一密钥有效,则将第一密钥标识为有效密钥;并且密钥有效性单元还适用于如果确定第一密钥不是有效的则标识第一存储区域中存储的第二密钥,通过查阅第二存储区域的有效性数据来确定第二密钥是否有效,以及如果确定第二密钥有效,则将第二密钥标。

8、识为有效密钥。15.根据权利要求12至14中任一项权利要求所述的系统,其中,所述系统适用于确定有效密钥是否是寿命终止密钥,以及如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法,其中所述寿命终止密钥指示第一存储区域中不再存储有有效密钥。权 利 要 求 书CN 104424441 A1/8页4处理系统技术领域0001 本发明涉及处理系统,更具体地,涉及处理系统的处理单元对处理系统存储的固件的访问进行控制。背景技术0002 安全性是诸如微控制器等处理系统的重要考虑因素。例如,可能需要确保处理器仅执行由可执行程序代码(或等同的指令集,例如脚本)描述的特定任务。然而代码和/或代码的执行可能遭受攻。

9、击。攻击可以包括以下示例列表中的任何一个:0003 所存储的程序代码的未授权修改;0004 执行期间的代码修改;0005 代码转储(例如,出于逆向工程目的来读出代码);0006 存储器存取特权的未授权改变;0007 执行来自数据段的未授权代码。0008 典型地,固件(例如,基本输入/输出系统(BIOS)代码或核心系统软件代码)操作用于识别和初始化处理系统或电子设备的硬件子系统和组件。因此,第三方对固件的逆向工程可以提供对采用固件集成电路的系统的硬件架构的指示。此外,固件上的成功攻击(如以上所列)可以使第三方能够改变处理系统的操作,阻止处理系统正确操作,和/或向组件或其他系统/设备发送病毒。00。

10、09 已知使用基于硬件的安全性来保护固件,如,将固件存储在非易失性存储器(例如,只读存储器(ROM),使得无法在存储器内修改该固件。然而这可能没有提供足够的保护来防止第三方访问固件并解析固件以用于不期望的或未授权的用途。0010 已知在嵌入式设备上提供已知为“安全启动(Secure Boot)”的安全性特征,试图确保处理器仅执行由设备的发布者授权的固件。所述安全启动过程采用密钥来验证固件的完整性。使用验证算法来验证固件的完整性,所述验证算法执行固件上的功能并检查该功能相对于密钥的输出。如果验证算法验证了固件的完整性,则允许处理器执行该固件。0011 因此,安全启动构思尝试例如在固件中没有可利用。

11、缺陷的情况下相对于在重置之前发生的被动攻击或软件攻击提供保护。为了符合安全性模型,安全启动基于硬件中的信任根(root of trust)。0012 传统的安全启动构思具有以下缺点:0013 -固件验证密钥需要更大容量的一次可编程(OTP)存储器:使用验证密钥需要更大容量的OTP存储器和/或需要使用在低成本设备中甚至在软件中不常用的密码算法。例如,示例签名可以需要2048比特密钥来被看作在接下来的二三十年中是安全的。0014 -存在密钥泄密的风险:即使基本密码算法很强,密钥仍然会由于例如固件更新期间的不适当保护和/或错误操纵而被泄密。因此安全启动机制的鲁棒性依赖于用于保护密钥机密性的过程的鲁棒。

12、性。如果密钥被泄密,则可能无法阻止未授权的固件被执行。说 明 书CN 104424441 A2/8页5发明内容0015 根据本发明的实施例,提供了一种控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问的方法,所述方法包括以下步骤:基于存储器的第二区域中的有效性数据来识别存储器的第一区域中存储的有效密钥,所述有效性数据指示密钥是否是有效的;根据预定的验证算法来处理固件代码,以计算固件代码的验证值;解析所述验证值和有效密钥,以确定固件代码是否可信任;以及基于固件代码是否被确定为可信任来控制处理单元对固件代码的访问。0016 因此,提出了一种控制对处理系统的固件代码的访问的构思。实施例可。

13、以采用多个密钥,所述多个密钥在片上系统内提供嵌入式的安全固件执行。实施例因此可以限制或防止固件代码的执行。0017 在实施例中,如果确定固件代码不是可信任的,则修改存储器的第二区域的有效性数据,以指示所述密钥不再有效。因此,可以检测到泄密密钥并采取预防措施以将泄密密钥呈现为无效。0018 可以采用多个密钥,使得在先前密钥被泄密或超期之后可以使用新密钥。相较于采用传统安全性构思(如,安全启动)的系统,这可以允许实施例长时间保持功能性和安全性。0019 存储器的第二区域的有效性数据可以简单地包括针对每个密钥的指示该密钥是否有效的标志或比特值。此外,存储器的第二区域可以包括一次可编程存储器,使得一旦。

14、有效性数据被修改过(例如,指示密钥不是有效的)则该有效性数据就不能再被修改。这可以帮助防止有效性数据受到未授权修改。0020 在实施例中,可以确定有效密钥是否是寿命终止密钥,所述寿命终止密钥指示存储器的第一区域中不再存储有有效密钥。如果确定有效密钥是寿命终止密钥,则执行预定的寿命终止算法。这样,实施例可以采用解决所有密钥都被泄密的情形的构思。寿命终止算法可以例如永久性禁用处理系统,使得不能再使用该处理系统。0021 在实施例中,存储器的第一区域可以包括非易失性存储器,存储器的第二区域可以包括OTP存储器。将OTP存储器用于存储器的第二区域可以使能仅一次修改有效性数据,以允许密钥有效性从有效变为。

15、无效,此后不再改变。因此,可以使密钥无效(假定在发布之后密钥全都被标记为有效),但是然后不能在解除操作(例如,使已标记为“无效”的密钥有效)。这可以帮助确保甚至在软件攻击的情况下密钥也保持无效。0022 处理系统的可信任处理器可以包括ROM,使得使用基于硬件的安全性来保护所述ROM以防止被修改。0023 根据本发明的另一构思,提供了一种计算机程序产品,用于控制处理系统的处理单元对处理系统的存储器所存储的固件代码的访问。所述计算机程序产品可以包括计算机可读存储介质,所述计算机可读存储介质具有体现在其上的计算机可读程序代码,所述计算机可读程序代码配置为执行根据本发明实施例的方法的所有步骤。0024。

16、 根据本发明的另一方面,提供了根据独立权利要求11所述的一种处理系统。0025 系统可以适用于在确定固件代码不是可信任的情况下修改第二存储区域的数据使得密钥不再有效。0026 在实施例中,系统可以适用于确定有效密钥是否是寿命终止密钥,所述寿命终止说 明 书CN 104424441 A3/8页6密钥指示第一存储区域中不再存储有有效密钥。如果确定有效密钥是寿命终止密钥,系统可以执行预定的寿命终止算法。0027 处理系统可以是微控制器、微处理器、微芯片或处理平台。因此,处理器可以是中央处理单元(CPU)或处理器核。0028 提出的实施例可以采用处理系统中典型存在的组件(全部通过通信总线/桥接器来连接。

17、的处理器单元或CPU、存储器和外围设备)。附图说明0029 现在将参考附图仅通过示例来描述本发明的优选实施例,附图中:0030 图1是示出了采用传统安全启动过程的处理系统的存储区的示意框图;0031 图2是示出了根据实施例的处理系统的存储区的示意框图;0032 图3示出了根据实施例的使密钥无效的示例;0033 图4是根据实施例的方法的流程图;0034 图5是根据另一实施例的方法的流程图;以及0035 图6是根据本发明实施例的系统的示意框图。具体实施方式0036 本文中,对固件代码的引述应当被理解为意思是永久性存储区与其中存储的程序代码和数据的组合,所述程序代码和数据例如是处理系统的BIOS代码。

18、或核心系统软件代码,典型地被处理系统的制造商或供应商设置在非易失性存储器中。固件代码与应用代码的区别在于应用代码典型地设计用于除了由固件代码提供的功能以外还实现更高级别的或补充的功能,应用代码典型地是易失性存储区上存储的引导处理器执行特定操作的机器可读指令集(同行采用计算机程序的形式)。因此,固件代码典型地永久性存储在硬件中(具体地,存储在非易失性存储器中),而应用代码典型地存储在易失性或可编程存储器中,因此能够被修改。0037 另外,固件代码由硬件实现方式继承,独立于其应用。固件代码支持两种不同类型的服务:低级别服务,包括通用接口控制处理和硬件提取层(注册控制、电力管理等);以及安全私有功能。

19、,包括启动序列、对于终端用户保护的服务(例如,访问限制)以及系统监督。典型地对于终端用户保护这种代码(例如以防止未授权的修改)。0038 相反,应用代码专用于处理系统的最终使用,独立于硬件实现方案。通过重新使用底层级别的功能(固件代码的一部分)可以开发任何应用代码。0039 在下一节讨论低成本嵌入式设备的情况,所述低成本嵌入式设备具有单个中央处理器(或CPU)、启动只读存储(ROM)区以及一次可编程(OTP)存储区。启动ROM是初始硬件信任根。启动ROM典型地包含在重置之后马上由处理器执行的引导程序(bootstrap)软件。由于启动程序软件存储于受保护以免被修改的ROM中,可以不需要验证启动。

20、程序软件。OTP存储器的作用类似于启动ROM(例如,提供硬件信任根),但是OTP存储器是可编程的(一次),因此制造商可以配置系统的选项或参数。除了OTP,设备之间不再有任何区别,因此具有相同启动ROM的所有CPU可以仅启动同一个固件。OTP存储器的种类可以取决于实际安全性模型。典型地,OTP存储器仅支持一个反向的比特编程(例如,从1到0),并且通说 明 书CN 104424441 A4/8页7常在OTP存储器中存在附加OTP锁定标志,所述附加OTP锁定标志防止在OTP已被编程之后在OTP中进一步写入。任何软件或硬件装置都无法解除锁定。0040 片上解决方案(例如,与CPU在相同管芯上或者至少在。

21、相同封装内的ROM和OTP)可以比片下解决方案(例如,分离的离散组件)提供更好的保护,但是如果仅考虑软件攻击,这两种解决方案是相同的。0041 现在参考图1,首先提供了对启动ROM 10中编程的传统安全启动过程的高级别描述。这种传统的安全性方法依赖于:计算固件二进制代码20的“摘要(digest)”(或认证值),然后将该摘要与OTP 30中存储的参考密钥值相比较。为了提供显著的保护,摘要函数优选地是现有技术密码单向函数(例如,所谓的密码散列函数,如,SHA-1/2/3标准),使得:(i)找到给出完全相同的摘要值的两个二进制值是极为困难的;并且(ii)给出摘要值以找到在散列之后给出相同值的二进制。

22、值是极为困难的。0042 相较于图1描述的传统安全启动过程,提出的构思可以提供相同的灵活性,但是还可以允许在密钥泄密的情况下反应。此外,相较于传统安全启动过程,提出的构思可以仅需要容量稍大的OTP存储器。此外,提出的构思可以保持固件更新过程简单,并且可以不需要附加的软件接口。0043 图2是示出了根据实施例的处理系统的存储区的示意框图。0044 提出的解决密钥泄密的构思允许多个固件签名密钥。实施例可以允许这一点,同时最小化对OTP存储器的影响。0045 提出在启动序列中添加另一步骤。在第一步骤中,启动ROM加载启动加载器的代码和数据,其中经由OTP中存储的散列来保护启动加载器的完整性。在第二步。

23、骤中,启动加载器加载固件的代码和数据,其中经由签名来保护固件的完整性。这种两步方法得益于基于散列的安全启动的低硬件影响和最大安全保证,同时仍然允许由基于签名的安全启动提供的灵活性。0046 将启动序列分成两步可能不能解决密钥泄密问题。为了解决该问题,提出在启动加载器35中采用多个签名验证密钥。这允许在认为先前密钥被泄密或无效时发布以新密钥来签名的固件代码。所有签名验证密钥的完整性可以由OTP中的散列函数来保护,因为其覆盖了整个启动加载器35代码和数据。因此,可以既无法篡改密钥,也无法在设备/系统发布之后改变可信任的密钥的集合。因此,对于一些实施例,系统制造商可以必须仔细选择该系统终身受用的密钥。

24、的数目。然而由于启动加载器35和密钥可以存储在常规非易失性(NV)存储器中,附加密钥的成本可以是可忽略的。0047 当密钥被泄密时,提供了一种告知启动加载器35不使用该密钥的方式。通过针对每个密钥分派有效性比特40来实现这一点。在使用密钥来验证固件签名之前,启动加载器35首先从OTP读取针对该密钥的有效性比特40,并且仅在该有效性比特40标识为有效的情况下使用该密钥。0048 通过在OTP中存储有效性比特,可以使密钥无效(假定在发布之后全都标记为有效),但是然后无法解除该操作(使已经标记为“无效”的密钥有效)。这种机制的简单性可以将OTP存储器使用中的开销减小至最小。0049 在实施例中,当启。

25、动加载器35利用密钥存储器中的给定密钥成功验证了固件20签名20a时,启动加载器35可以在执行该固件20之前将密钥存储器中的所有先前密钥都说 明 书CN 104424441 A5/8页8标记为无效。因此,制造商可以容易地通过发布以密钥存储器中的下一个密钥来签名的新固件(或相同固件)来远程地使密钥无效。0050 注意,由于可以不更新启动加载器35代码,优选地该代码尽可能简单以便减小找到可利用缺陷的机率。此外,为了防止拒绝服务(denial-of-service)攻击,优选地在执行固件20之前,启动加载器35锁定对OTP存储器的写入访问。这样,即使某恶意软件能够通过开发获得特权访问,该恶意软件也无。

26、法篡改有效性比特40。0051 在优选实施例中,在运行新固件之前更新先前密钥的有效性比特。在图3中示出了这一点,图3示出了根据实施例的使密钥无效的示例。本文中,修改OTP的验证数据,使得先前密钥(密钥1)的有效性比特改变成指示该密钥无效的值(例如,逻辑0)。这可以帮助确保甚至在软件攻击的情况下密钥也是无效的。0052 注意,现代固件更新过程通常包括恢复机制,所述恢复机制允许在新固件没有正确启动的情况下回到先前固件。通常的实现是在存储器中保存先前固件的拷贝,如果检测到问题则启动该拷贝(当然这需要CPU重置)。提出的密钥失效机制可以干扰该机制,因为启动加载器不会再接受启动先前固件。为了不降低密钥失。

27、效机制的鲁棒性,提出在使密钥无效时使用与设备中当前加载的固件相同的固件。这仅仅在于更新设备中的签名。如果固件也必须被更新,这应当分两阶段进行:首先使用下一个密钥来更新签名(保持相同的固件二进制值),然后更新签名和固件两者。0053 示例实施例的方法步骤可以概括为如下:0054 设置0055 i)产生新的启动加载器代码MBL0056 ii)产生n个私钥/公钥对的集合pairsSKi,PKi(i1n)0057 iii)在启动加载器代码和密钥存储器上计算摘要HBLHASH(MBL|PK1|PKn)0058 iv)将摘要HBL写入设备OTP,将启动加载器代码和密钥存储器MBL|PK1|PKn写入设备N。

28、V存储器0059 v)以严格的访问控制将私钥SKi保存在安全位置0060 vi)保存当前活跃私钥的索引。令current1。0061 密钥泄密0062 如果密钥SKi泄密则执行该过程,其中jcurrent。0063 i)令currentj+10064 ii)计算固件签名SFWSIGNSK,current(MFW)0065 注意,重新使用与设备中当前加载的固件相同的固件。0066 iii)将签名SFW写入设备NV存储器0067 固件写入/更新0068 i)产生新固件MFW0069 ii)计算固件签名SFWSIGNSK,current(MFW)。0070 iii)将固件MFW和签名SFW写入设备N。

29、V存储器0071 启动加载器启动0072 i)重置CPU,并开始执行位于启动ROM中的程序。0073 ii)CPU读取(未受保护的)非易失性存储器中存储的启动加载器二进制值MBL,并说 明 书CN 104424441 A6/8页9使用安全的现有技术密码散列函数在该固件二进制值上计算摘要H。0074 hHASH(MFW)0075 iii)如果h与参考摘要值HBL相同,CPU执行启动加载器。否则,CPU完全暂停直到下一次重置。0076 多密钥固件启动0077 在图4的流程图中示出了该过程。0078 100)过程开始,检查密钥存储器是否为空。如果密钥存储器为空,则启动加载器立即加载并执行200固件而。

30、不用验证。这允许在部署过程中部署新固件。0079 102)如果密钥存储器不为空,CPU加载固件并检查固件是否被签名。如果固件没有被签名,则CPU完全暂停(例如,冻结)210直到下一次重置。0080 104)如果固件被签名,则选择下一个密钥。0081 106)通过读取OTP中存储的有效性数据(例如,针对所选密钥的相关有效性比特)来获取与所选密钥的有效性相关的信息。0082 108)基于读取的有效性数据,确定所选密钥是否有效。0083 110)如果确定密钥不是有效的,则检查是否存在更多密钥。如果不存在要选择的更多密钥,则CPU完全暂停(例如,冻结)210直到下一次重置。然而,如果存在更多密钥,则方。

31、法返回104以选择下一个密钥。因此,步骤104-110在密钥存储器中找到有效密钥PKi。0084 112)在找到有效密钥PKi之后,CPU从NV存储器读取固件签名SFW和固件二进制值,并尝试验证固件签名0085 0,1VERIFYPK,i(MFW,SFW)0086 114)基于读取验证步骤112,确定是否验证了固件签名。如果没有验证固件签名,则过程返回步骤110以确定是否可以选择另一密钥并使用所述另一密钥来进行验证。如果验证了固件签名,则方法进行至步骤116。0087 116)CPU修改验证数据以将所有先前密钥的有效性比特设置为“无效”(仅当i1时),然后执行200非易失性存储器中加载的固件。。

32、0088 处理寿命终止(Handling end-of-life)0089 从以上描述可以看出,在启动加载器中采用多个签名验证密钥通过使泄密的密钥无效并切换至另一密钥而解决了密钥泄密问题。然而仍然可能存在启动加载器中的所有密钥都泄密的问题。0090 无法改变预定的密钥集合,优选地可以采用在所有密钥都被泄密的情形下永久性禁用系统的构思。这可以称作是对系统寿命终止的处理。提出了用于处理寿命终止的两个构思:0091 第一寿命终止构思寿命终止固件0092 以上参考图3和图4描述的实施例不适于使启动加载器密钥存储器中的最后一个密钥无效。因此,提出通过在发布处理系统/设备之前采用永久性准备来解决寿命终止问。

33、题(而无需对标识启动加载器过程做任何改变)。更具体地,提出的构思为启动加载器密钥存储器中的最后一个密钥赋予特殊用途。因此,相应的私钥仅使用一次以签名特殊的寿命终止固件,然后被永久性破坏。对于这样的实施例,如果制造商想要远程终止系统/设备,简单地将寿命终止固件与签名一起发送至系统/设备。由于密钥不再可用,不存在密钥泄说 明 书CN 104424441 A7/8页10密的风险,并且没有办法用另一固件来更新设备。0093 注意,该方法需要更新固件和验证密钥两者,这典型地优选是要避免的。然而对于这样的实施例而言这是可接受的,因为目的是无论如何要终止系统/设备。0094 例如,寿命终止固件可以显示警告消。

34、息,所述警告消息声明不再能够使用该设备并且用户必须联系设备卖主或制造商以便更换。固件还可以删除敏感数据、向发布者主机发送确认等等。0095 可以如下概括采用这种寿命终止构思的示例实施例的方法步骤(其中其他过程没有改变)。0096 设置寿命终止0097 i)产生寿命终止私钥/公钥对SKEOL,PKEOL0098 ii)产生寿命终止固件MEW,EOL0099 iii)计算固件签名SFW,EOLSignSK,EOL(MFW,EOL).0100 iv)破坏寿命终止私钥SKEOL0101 v)添加寿命终止公钥作为启动加载器密钥存储器中的最后一个密钥(这是在计算启动加载器散列之前进行的)。0102 vi)。

35、以严格的访问控制将寿命终止签名存储在安全位置。也存储寿命终止固件,但是不需要超出防止删除和修改以外的严格访问控制。0103 终止设备0104 i)将寿命终止固件MFW,EOL和签名SFW,EOL写入设备NV存储器。0105 可以优选地采取一些防范以避免拒绝服务攻击。0106 由于可以不加密寿命终止固件和签名,因此如果恶意用户能够访问终止的设备,则该恶意用户可以容易地读取所述寿命终止固件和签名。如果该用户进行管理以将该固件发送或写入在密钥存储器中具有相同寿命终止验证密钥的其他设备,则该用户可以不经发布者同意就终止这些设备。提出的解决该问题的构思是针对每个系统/设备产生唯一的寿命终止密钥对和签名。。

36、每个系统/设备然后可以具有其自己的寿命终止验证密钥的版本。在产生之后,将优选地以严格的访问控制将每个设备的寿命终止签名保存在安全位置。0107 注意,寿命终止固件可以对于所有系统/设备而言是相同的。在这种情况下,每当制造商/发布者希望终止系统/设备时,将会把一般寿命终止固件与对应于该具体系统/设备的寿命终止签名一起发送/写入。0108 第二寿命终止构思立即寿命终止0109 备选构思可以采用对参考图4描述的启动加载器过程的修改。如上述第一寿命终止构思一样,第二构思为密钥存储器中的最后一个密钥赋予特殊用途。然而在该第二构思中,当启动加载器使用密钥存储器中的最后一个密钥成功验证了新固件时,将会立即使密钥存储器中的所有密钥无效,然后进入无限冻结循环。因此从不执行新固件。0110 在图5的流程图中描述了这种修改后的启动加载器过程。将会看出,修改后的启动加载器过程与图4所示的启动加载器过程的区别仅在于在将先前密钥标记为无效的步骤116之后包括附加步骤(步骤118和120)。0111 更具体地,在修改验证数据以将所有先前密钥PK1PKi-1的有效性比特设置为“无效”(仅当i1时)的步骤116之后,执行步骤118,在步骤118中检查密钥是否是密钥存说 明 书CN 104424441 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1