使用驻留在外部存储器设备上的芯片限制的指令用于启动序列修改的系统和方法与流程

文档序号:11851380阅读:278来源:国知局
使用驻留在外部存储器设备上的芯片限制的指令用于启动序列修改的系统和方法与流程

该申请要求根据35U.S.C.§119为非临时申请的、于2014年4月7日提交的并且名称为“SYSTEM AND METHOD FOR BOOT SEQUENCE MODIFICATION USING CHIP-RESTRICTED INSTRUCTIONS RESIDING ON AN EXTERNAL MEMORY DEVICE”的美国临时专利申请61/976,491的优先权,通过引用方式将其整体内容并入本文。



背景技术:

便携式计算设备(“PCD”)正在成为人们个人层面以及专业层面的必需品。这些设备可以包括蜂窝电话、便携式数字助理(“PDA”)、便携式游戏机、掌上型计算机、和其它便携式电子设备。

PCD与大多数计算设备共同的一个方面是用于存储指令和/或数据的电子存储器组件的使用。在PCD中可以存在各种类型的存储器组件,每一个被指定用于不同的目的。通常,非易失性只读存储器(“ROM”)(诸如掩膜ROM)位于片上系统(“SoC”)上,并用于存储以第一阶段启动装载程序(“FSBL”)的形式的初始化指令,PCD需要其用于启动、加载操作系统(“OS”)软件、并将对PCD的控制转移至该OS。相比之下,非易失性可编程存储器(“闪速”存储器)位于SoC的外部并通常用于存储与启动序列的后续阶段相关联的额外指令,诸如第二阶段的启动加载程序(“SSBL”)、第三阶段的启动加载程序(“TSBL”)等。如本领域普通技术人员将理解的,尽管由于在制造时第一阶段的启动加载程序软件是永久地“烧录”到不可变的ROM中,该第一阶段的启动加载程序软件是固有地值得信赖的,但后续启动序列阶段的软件可能处于可信的状态或不可信的状态。

典型地,在将启动过程从硬编码在掩模ROM中的指令转换到存储在闪存中的SSBL指令之前,FSBL验证SSBL的可靠性(authenticity)和完整性。类似地,在将启动序列从SSBL指令转换至下一个阶段之前,SSBL验证与下一启动序列阶段相关联的指令的可靠性和完整性。通过使用启动序列的每个阶段来验证下一个阶段的可靠性和完整性,PCD制造商已经寻求了保护合起来包括用于PCD的启动序列的编码数据和指令的完整性。

然而,要注意的是,PCD的终端用户对具有修改启动序列的能力的这一需求已经导致了一些制造商在启动序列后期阶段放弃认证和完整性检查措施。因此,在现有技术的某些系统中,与启动序列的后期阶段相关联的指令的安全性可能容易受到损害。因此,本领域中存在对系统和方法的需要,所述系统和方法提供对后期启动序列阶段的安全条件下的修改,同时保护经修改的指令的完整性和可靠性。更具体地,本领域中存在对可配置的安全启动模式(“CSBM”)系统和方法的需要。



技术实现要素:

公开了用于修改与启动序列中的一个或多个启动阶段相关联的指令和/或数据的方法和系统的各种实施例。在某些实施例中,可以通过使用机密密钥作为生成消息认证码(“MAC”)输出的MAC算法的输入,来保证经修改的指令和/或数据的可靠性和完整性。机密密钥可以唯一地与特定的片上系统(“SoC”)模块相关联,并被烧录到所述SoC中。在一些实施例中,可以从唯一地与SoC相关联并烧录到SoC中的另一机密密钥导出该机密密钥。以这种方式,该方案的实施例防止对OEM启动指令的未经授权的修改或替换。

在操作中,一种用于SoC中的启动阶段的可配置安全启动模式(“CSBM”)的方法的示例性实施例识别来自处理组件的对存储在外部存储器组件中的编码指令的请求。可以经由使用MAC算法和唯一地与SoC相关联并烧录在SoC中的机密密钥来验证编码指令的可靠性和完整性。可以修改由诸如CPU等处理组件请求的编码指令和/或数据,或替换与启动序列的特定启动阶段相关联的指令。启动序列的特定启动阶段可以例如是第二阶段的启动加载程序(“SSBL”)或第三阶段的启动加载程序(“TSBL”)或具有存储在外部存储器设备中的代码的任何启动阶段。

接下来,通过使用MAC算法和来自SoC的机密密钥,可以在PCD的安全环境中对包括相关联的MAC值的编码指令进行认证和完整性检查。如果机密密钥成功地与该MAC算法一起使用以根据经编码的指令生成了与相关联的MAC值匹配的MAC输出,则可以假定所述指令是可靠的并具有未受损的完整性。随后,可以将经编码的指令提供给请求处理组件。启动序列可以继续。要注意的是,如果向编码指令应用MAC算法和机密密钥生成了与关联于这些指令的预期MAC输出不一致的MAC输出,则可以假定编码指令的完整性或可靠性是无效的,并且启动序列可以终止。

附图说明

在附图中,贯穿各视图,除非另有说明,否则类似的附图标记指代类似的部件。对于具有字母字符名称的附图标记,如“102A”或“102B”,字母字符名称可以区分存在于同一附图中的两个相同部件或元件。当旨在的是附图标记涵盖所有附图中具有相同附图标记的所有部件时,可以省略附图标记的字母字符名称。

图1是示出了用于实现可配置安全启动模式(“CSBM”)的方法和系统的以无线电话形式的便携式计算设备(“PCD”)的示例性、非限制性的各方面的功能框图;

图2是示出了用于执行全部存储在PCD的启动ROM中的第一阶段启动加载程序(“FSBL”)的片上系统的实施例的功能框图;

图3是示出了用于执行存储在PCD的外部存储器设备中的启动序列阶段的片上系统的实施例的功能框图;

图4是示出了根据本发明的实施例,用于使用可配置安全启动模式(“CSBM”)设置来执行PCD的启动序列阶段的片上系统的实施例的功能框图;

图5是示出了用于安全修改驻留在外部存储器设备中的与例如第二阶段启动加载程序(“SSBL”)的启动阶段相关联的指令和/或数据的方法的逻辑流程图;以及

图6是示出了用于安全修改可能驻留在不可信的外部存储器设备中的与第三阶段启动加载程序(“TSBL”)相关联的指令和/或数据的方法的启动序列逻辑流程图;以及

图7是更详细地示出了图6的方法中的、关于对驻留在不可信的存储块中的经修改的代码和/或数据进行认证和检查完整性的方法部分的逻辑流程图。

具体实施方式

词语“示例性”在本文中用于意味着充当例子、实例或说明。本文中描述为“示例性”的任意方面不必被解释为排他性的、优选的或比其它方面有利。

在本说明书中,术语“应用”还可以包括具有可执行内容的文件,例如:对象代码、脚本、字节码、标记语言文件和片。另外,本文中所提及的“应用”也可以包括本质上不可执行的文件,例如可能需要打开的文档或需要访问的其他数据文件。

在本说明书中,术语“熔丝(fuse)”意味着指的是由接收对存储在存储器地址(例如掩膜ROM存储器组件中的地址)处的指令或数据的请求的安全控制器进行控制的可编程门。如本领域普通技术人员应理解的,熔丝是可以驻留在位于芯片上的非易失存储器组件中的一次性可编程存储器。熔丝可以包含本说明书中被称为“片(patch)”的指令或数据,或其可以包含指向储存在可替代地址中的指令或数据的指针。类似地,在本说明书中,术语“软件熔丝”意味着指的是物理熔丝的仅软件实现方式,其可以提供基本上与通常关联于仅物理熔丝的安全等级等同的安全等级。“熔丝”是物理性一次性可编程门,不相类似地,“软件熔丝”可以采取在可逆或可再编程的外部存储器设备(例如,“闪速”存储器设备)中的指令和/或数据的形式。

在本说明书中,对“外部存储器设备”等的引用指的是更广泛类别的非易失性(即,电源被移除后保留其数据)可编程存储器,并且将不会限制所公开的方案的范围。因此,要理解,对该术语的使用设想的是任何可编程只读存储器或现场可编程非易失性存储器适于方案的给定应用,其例如但不限于嵌入式多媒体卡(“eMMC”)存储器、电可擦除可编程只读存储器(“EEPROM”)、闪速存储器等。

如本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”等旨在指的是计算机相关的实体,其可以是硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于:在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,在计算设备上运行的应用和计算设备二者都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或在两个或更多个计算机之间分布。另外,这些组件可以根据上面存储有各种数据结构的各种计算机可读介质来执行。这些组件可以例如根据具有一个或多个数据分组的信号,通过本地和/或远程进程的方式进行通信(例如,来自一个组件的数据通过信号的方式与本地系统、分布式系统中的另一组件进行交互,和/或跨越网络(例如互联网)与其它系统交互)。

在本说明书中,术语“中央处理单元(“CPU”)”、“数字信号处理器(“DSP”)”、“图形处理单元(“GPU”)”和“芯片”可以互换使用。另外,CPU、DSP、GPU或芯片可以包括本文中一般称为“核”的一个或多个不同的处理组件。

在本说明书中,术语“便携式计算设备”(“PCD”)用于描述以有限容量电源(例如电池)操作的任何设备。虽然电池供电的PCD已经使用了几十年,但可再充电电池中的技术进步以及第三代(“3G”)与第四代(“4G”)无线技术的出现已使得很多PCD具有多种功能。因此,PCD可以是蜂窝电话、卫星电话、寻呼机、PDA、智能电话、导航设备、“电子书”或阅读器、媒体播放器、手持式游戏控制台、上述设备的组合、具有无线连接的膝上型计算机等等。

在本说明书中,术语“自举(bootstrapping)”、“启动(boot)”、“启动序列”等意味着指的是PCD在引导第一阶段启动加载程序(“FSBL”)时执行的操作的初始集合,当PCD最初接通电源时或从省电模式恢复时的后续阶段包括但不限于:加载操作系统、对应于例如工厂设置(factory provision)或正常启动等不同场景的后续镜像、以及准备要使用的各种PCD组件。诸如“启动时期(phase)”和“启动阶段”等术语意味着指的是本领域普通技术人员所理解的共同构成在时间上执行的一系列启动阶段的、整个启动序列的一部分。启动序列可以以FSBL阶段开始,接着是第二阶段的启动加载程序(“SSBL”)阶段、第三阶段的启动加载程序(“TSBL”)阶段等。要注意的是,这些方案的示例性实施例是在修改SSBL或TSBL指令的上下文中描述的;然而,设想的是,该方案的某些实施例可以适用于存储在非易失性存储器中并需要修改的其它指令和/或数据集。

在本说明书中,术语“随后的启动阶段”或“经修改的启动阶段”意味着指的是启动序列中的在初始FSBL之后发生的、包括存储在一次性可编程并且不可逆的ROM中的可执行代码和/或数据的任何阶段。因此,诸如第二阶段的启动加载程序(“SSBL”)或第三阶段的启动加载程序(“TSBL”)或主操作系统启动加载程序(“MOSBL”)等启动阶段是可以包括如本文中所描述的可配置的安全启动模式(“CSBM”)方案的实施例的、示例性的可修改启动阶段。因此,在具体的可修改启动阶段的上下文中对任何示例性CSBM实施例的描述将不会把实施例限制为该特定阶段。

可配置的安全启动模式的方案寻求在不冒险安装未经授权的代码和/或数据(如未经授权的操作系统)的情况下为原始的设备制造商(“OEM”)提供修改与可修改的启动阶段相关联的启动指令的能力。如上所解释的,在将启动序列转移到SSBL之前,启动序列中的初始FSBL阶段典型地认证SSBL阶段的有效性。类似地,SSBL认证和验证启动序列中紧随其后的启动阶段,例如TSBL。

然而,要注意的是,最近的趋势是,一些后续的启动阶段不需要认证,以便在启动过程中执行与这些阶段相关联的代码(例如,MOSBL、系统恢复启动装载程序等可以不要求认证,以使得用户可以自由地进行修改)。这种趋势已经向OEM呈现出了这样的困境(complication),即寻求维持他们对某些启动阶段的专有代码的完整性和可靠性的同时,仍向终端用户提供引入定制启动指令和/或修改启动指令的原始实例的能力。本质上讲,OEM已经给予了用户在由OEM认可的固件提供的固有地安全性/完整性与运行潜在不安全的未经认可的操作系统的自由之间进行选择的能力。要注意的是,一旦用户选择了由OEM认可的固件提供的安全性/完整性,在不出现具有规避用户的原始决定的机会的攻击者的情况下扭转该决定可能是一项复杂的工作。有利的是,CSBM系统和方法向OEM提供了一种在无需引进未经授权的代码的情况下安全地引入经修改的启动指令的方式。

CSBM实施例的进一步优势是,可以通过在外部存储器设备中使用软件熔丝来向可修改的启动阶段的镜像引入经授权的更新,来实现PCD中新添加的或升级的功能。更新的镜像(在改变或升级PCD的功能时,其可以被加载到外部存储器设备中)可以被认证并进行完整性检查,以确保其授权状态。

图1是示出了用于实现可配置安全启动模式(“CSBM”)的方法和系统的以无线电话形式的便携式计算设备(“PCD”)100的示例性、非限制性的各方面的功能框图。如所示,PCD 100包括片上系统102,其包括多核中央处理单元(“CPU”)110和耦合在一起的模拟信号处理器126。如本领域普通技术人员所理解的,CPU 110可以包括第零核222、第一核224、以及第N核230。此外,如本领域普通技术人员所理解的,取代于CPU 110,也可以采用数字信号处理器(“DSP”)。

一般地,安全控制器101可以由硬件和/或软件形成,并且可以负责接收对与第一阶段的启动加载程序(“FSBL”)相关联的指令和/或数据的请求。类似地,CSBM模块104(在一些实施例中,其可以包括安全控制器101),可以负责监测对存储在非易失性外部存储器组件112中并与随后的启动阶段相关联的可修改指令和/或数据的请求。通过使用“软件熔丝”,CSBM模块104可以在满足该请求之前认证该可修改代码和/或数据并检查其完整性。有利的是,使用该软件熔丝,CSBM模块104可以在不影响代码的安全性的情况下提供对存储在外部存储器设备中的可修改启动阶段代码的修改和/或更新。

如图1所示,显示控制器128和触摸屏控制器130耦合到数字信号处理器110。片上系统102外部的触摸屏显示器132耦合到显示器控制器128和触摸屏控制器130。PCD 100还可以包括视频编码器134,其例如逐行倒相制式(“PAL”)编码器、顺序与存储彩色电视系统(“SECAM”)编码器、国家电视制式委员会(“NTSC”)编码器或任何其它类型的视频编码器134。视频编码器134耦合到多核CPU 110。视频放大器136耦合到视频编码器134和触摸屏显示器132。视频端口138耦合到视频放大器136。如图1中所描绘的,通用串行总线(“USB”)控制器140耦合到CPU 110。另外,USB端口142耦合到USB控制器140。存储器112可以包括PoP存储器、高速缓存器116、掩模ROM/Boot ROM 113、一次性可编程(“OTP”)存储器、外部存储器设备115(诸如闪存)等,该存储器112也可以耦合至CPU110。

用户身份模块(“SIM”)卡146也可以耦合至CPU 110。此外,如图1所示,数字相机148可以耦合至CPU 110。在示例性方面中,数字相机148是电荷耦合设备(“CCD”)相机或互补金属氧化物半导体(“CMOS”)相机。

如图1中进一步示出的,立体声音频编解码器150可以耦合到模拟信号处理器126。另外,音频放大器152可以耦合到立体声音频编解码器150。在示例性方面中,第一扬声器154和第二扬声器156连接到音频放大器152。图1示出了话筒放大器158可以耦合到立体声音频编解码器150。另外,话筒160可以耦合到话筒放大器158。在特定的方面中,调频(“FM”)无线调谐器162可以耦合到立体声音频编解码器150。另外,FM天线164耦合到FM无线调谐器162。此外,立体声耳机166可以耦合到立体声音频编解码器150。

图1进一步指示射频(“RF”)收发器168可以耦合到模拟信号处理器126。RF开关170可以耦合到RF收发器168和RF天线172。如图1中所示,小键盘174可以耦合到模拟信号处理器126。另外,具有话筒176的单声道耳机可以耦合到模拟信号处理器126。此外,振动器设备178可以耦合到模拟信号处理器126。图1还示出了电源188(其例如电池),其通过电源管理集成电路(“PMIC”)180耦合到片上系统102。在特定方面,电源188包括可再充电DC电池或者从连接到交流电(“AC”)电源的AC到DC变压器导出的DC电源。

CPU 110还可以耦合到一个或多个内部的片上热传感器157A以及一个或多个外部的片外(off-chip)热传感器157B。片上热传感器157A可以包括一个或多个与绝对温度成比例(“PTAT”)的温度传感器,其基于垂直PNP结构并且通常专用于互补金属氧化物半导体(“CMOS”)超大规模集成(“VLSI”)电路。片外热传感器157B可以包括一个或多个热敏电阻。热传感器157可以产生压降,该压降利用模拟-数字转换器(“ADC”)控制器103转换为数字信号。然而,也可以采用其他类型的热传感器157。

所述的触摸屏显示器132、视频端口138、USB端口142、相机148、第一立体声扬声器154、第二立体声扬声器156、话筒160、FM天线164、立体声耳机166、RF开关170、RF天线172、小键盘174、单声道耳机176、振动器178、热传感器157B、PMIC 180和电源188在片上系统102的外部。然而,将理解的是,在图1中的PCD 100的示例性实施例中被描绘为在片上系统102外部的一个或多个这些设备,在其它示例性实施例中可以驻留在芯片102上。

在具体的方面中,本文中描述的一个或多个方法步骤可以由存储在存储器112中的可执行指令和参数来实现或实现为形成安全控制器101和/或其熔丝。此外,安全控制器101、存储器112、存储在其中的指令或其组合可以用作用于执行本文所描述的一个或多个方法步骤的装置。

图2是示出了用于执行全部存储在PCD 100的启动ROM 113中的第一阶段启动加载程序(“FSBL”)的片上系统的实施例的功能框图。如本领域普通技术人员将理解的,FSBL可以是用于自举PCD 100的初始指令集,并可以驻留在一次性可编程(“OTP”)ROM 113中。借助于驻留在OTP ROM中,FSBL是固有地安全的,并且相对于其他片外非易失性可编程存储器112,(如果不是完全不切实际的)难于由终端用户修改。

如图2图示中的箭头205A、205B所指示的,在启动序列期间,地址从CPU 110发出并且被引导至安全控制器101和包含在启动ROM 113中的掩模ROM 117二者。如由本领域普通技术人员理解的,CPU 110可以获取与存储在掩模ROM 117中的地址处的FSBL相关联的指令和/或数据。

如果已经修补了存储在所请求的地址处的特定指令或数据,即,安全控制器101已经针对该地址设置了“片有效”位,则由熔丝保持的片数据(例如,F0)被转发(箭头215)至启动ROM片和多路复用器模块(“MUX”模块)114。MUX模块114覆写(override)了从金属掩膜ROM 117出来的(箭头210)FSBL数据,并视情况而定将片代码或片数据而不是存储在掩模ROM 117中的代码或数据的原始实例返回至CPU 110(箭头220)。如果安全控制器101的熔丝没有保持有效的片数据,则MUX模块114向CPU 110返回原始的指令和/或数据(箭头220)。

要注意的是,图2中示出的片上系统102的特定实施例由于熔丝(F0...F47)携带片指令和数据的能力而受限于其修改掩模ROM 117中最初实例化的FSBL指令和数据的能力。即便如此,掩模ROM 117中现存的FSBL代码的性质和安全控制器101的熔丝导致了使得难于修改FSBL代码的固有的安全等级。在FSBL阶段完成并将启动序列传送到SSBL指令集之前,FSBL可以认证SSBL指令,以确保它们没有被改变。

图3是示出了用于执行存储在PCD 100的外部存储器设备115中的可修改启动序列阶段的片上系统102的实施例的功能框图。要注意,设想的是,外部存储器设备115可以是非易失性存储器组件、易失性存储器组件或非易失性和易失性存储器的组合。在图3图示中,可以看出,外部存储器组件115紧密耦合到启动ROM 113,使得完成图2中描述的FSBL阶段时,启动序列可以转移到在外部存储器组件115中实例化为软件的随后启动阶段(箭头310)。FSBL阶段之后的启动阶段的示例是第二阶段的启动加载程序(“SSBL”),如本领域普通技术人员将理解的。FSBL可以将来自外部非易失性存储器(例如闪存)的SSBL加载到例如DRAM。一旦在DRAM中,在启动序列的控制被转移到SSBL之前,SSBL的完整性可以由FSBL检查。

一旦启动序列从FSBL转移到SSBL,则CPU 110根据从外部存储器组件115取回的指令继续该启动序列。随后,SSBL可以将启动序列转移给其后的启动阶段,例如第三阶段的启动加载程序(“TSBL”)。随后,CPU 110可以根据例如TSBL,继续从外部存储器设备115取回指令(箭头305)。根据每个后续启动阶段,请求(箭头305)以及返回所请求的指令(箭头320)的循环继续进行直到启动序列终止。

图4是示出了根据本发明的实施例,用于使用可配置安全启动模式(“CSBM”)设置来执行PCD 100的可修改启动序列阶段的片上系统102的实施例的功能框图。类似于上述的请求过程,CPU 110可以请求与可修改的启动序列阶段(例如SSBL)相关联的指令和/或数据(箭头305)。请求305可以直接送达存储器设备112(箭头305B)和可配置安全启动模式(“CSBM”)模块104。随后,CSBM模块104可以查询(箭头410)在外部存储器设备115中存储为“软件熔丝”的经修改的SSBL指令。如果经修改的SSBL指令存在并与消息认证码(“MAC”)相关联,则可以通过使用MAC算法以及唯一地与SoC相关联的机密密钥由CSBM模块104来对其认证。

该机密密钥可以唯一地与芯片102相关联并被烧录到芯片102中。由于仅在应用于经修改的指令的MAC算法生成了与关联与该经修改的指令的预期的MAC完全一致的MAC输出时才使用该经修改的指令,因此可以保持指令的可靠性和完整性,并保护其不受到外部攻击或具有受损代码的替换的损害。也就是说,尽管未经授权的代码和经授权的代码二者可以在PCD的外部存储器设备中以未加密且容易执行的形式存在,但如果使用烧录到该SoC中的机密密钥成功地验证了其可靠性和完整性,则CSBM实施例可以仅继续执行该代码。以这种方式,可以在不牺牲针对经授权的启动序列修改的能力的情况下成功地阻挠使用替换代码和/或数据的未经授权的攻击或阻挠换出SoC上的存储器元件以努力规避经授权的启动阶段。

返回到图4图示,与SSBL代码的原始实例相关联的所请求的指令可以经由CSBM模块104返回到CPU 110(箭头405、420)。可替代地,如果CSBM模块104认证了替换SSBL指令(例如不可信的非易失性外部存储器115),则CSBM模块104可以覆写(override)原始指令,并返回经授权的替换指令和/或数据(箭头410、420)。以这种方式,CSBM方案的实施例可以提供软件熔丝,制造商可以利用其在不损害启动序列的安全性的情况下修改启动指令。要注意的是,对于CSBM实施例来说,软件熔丝的实质上无限数量的编程周期呈现了比使用数量有限的硬件熔丝的现有技术有利的方面。根据某些CSBM实施例的软件熔丝比使用硬件熔丝的现有技术方案的其他优点可以包括但不限于:对经修改的启动阶段指令和/或数据的现场可编程能力,以及对经修改的指令和/或数据的扩展存储容量。

图5是示出了用于安全修改与第二阶段的启动加载程序(“SSBL”)形式的可修改启动阶段相关联的指令和/或数据的方法500的逻辑流程图。尽管示例性方法500以及本文所述的其它示例性实施例是在SSBL的上下文中描述的,但设想的是,该方案的某些实施例可以适用于其他的可修改启动阶段,并且因此,该方案的范围将不限于其对SSBL或TSBL阶段的应用。此外,虽然方法500是在安全地修改可修改启动阶段的原始实例的上下文中描述的,但将理解的是,CSBM方案的某些实施例可以用于完全代替可修改启动阶段的原始实例,而不用冒未经授权的替换的风险或牺牲替换代码的安全性。

在框505处开始,CSBM模块104识别对与SSBL相关联的指令和/或数据的请求。在决定框处510,CSBM模块104可以确定不可信的存储设备(例如非易失性外部存储器设备115)中的软件熔丝是否包含与所请求的指令和/或数据相关联的经修改的代码。如果经修改的代码不存在,则运行“否”分支到框515,并将来自原始SSBL实例的所请求的指令和/或数据返回到CPU 110。

然而,如果该CSBM模块104确定与该请求相关联的替换指令和/或数据是可用的,则运行“是”分支到框520。在框520,可以使用唯一地与SoC相关联并且烧录到SoC中以作为MAC算法102的输入的机密密钥,来认证经修改的指令并对其进行完整性检查。如上所述,可以在安全的环境中认证经修改的启动数据,以便不损害密钥的机密性。以这种方式,在不知道密钥的情况下,未经授权的替换数据无法获得授权,这是因为与替换数据相关联的预期的MAC必须是使用机密密钥根据MAC算法生成的。在不知道机密密钥的情况下,与替换数据相关联的预期的MAC值将不等同于使用机密密钥和MAC算法由CSBM模块104生成的MAC输出。设想了其他的加密手段,并且本领域普通技术人员会想到这些加密手段;然而,还设想的是,某些CSBM实施例的新颖方面是,经修改的启动代码的可靠性和完整性验证可以基于唯一地与SoC 102本身相关联并烧录到SoC本身102中的机密密钥。

返回方法500,在决定框525处,验证经修改的指令的可靠性和完整性。如果指令是使用与SoC 102相关联的机密密钥由CSBM模块104验证为可靠的(即,由CSBM模块生成的MAC值104与关联于该指令的MAC值相匹配),则运行“是”分支到框530并且经修改的指令返回到CPU 110。如果经修改的指令未被验证为是可靠的或经授权的,则运行“否”分支,且启动序列终止。

图6是示出了用于安全修改可能驻留在不可信的外部存储器设备115中的与第三阶段启动加载程序(“TSBL”)相关联的指令和/或数据的方法600的启动序列逻辑流程图。图6图示包括以从左至右平移的箭头605的形式的对启动序列的时间表示。方法600开始于启动以FSBL指令形式的启动序列。如上所述,FSBL指令/数据可以在可信的、不可逆的ROM设备中实例化,如本领域普通技术人员理解的。

在框610处,执行FSBL。在FSBL完成之前,在决定框615处验证随后的启动阶段(即SSBL)的可靠性和完整性。如果SSBL未被认证,则运行“失败”分支并且启动序列终止。然而,如果SSBL被认证,则运行“通过”分支和并且启动序列转换到SSBL启动阶段。类似于FSBL阶段,SSBL启动阶段可以与在可信的存储器设备(例如OTP存储器)中实例化的指令和/或数据相关联。

在框620处,执行SSBL。在SSBL完成之前,在决定框625处验证随后的启动阶段(即,TSBL)的可靠性和完整性。如果认证失败,则运行“失败”分支并且启动序列终止。否则,则运行“通过”分支并且启动序列转换到TSBL。要注意的是,在由图6示出的示例性CSBM实施例600中,利用驻留在不可信的存储设备(例如,片外的非易失性或易失性存储器设备)中的经修改的代码和/或指令,TSBL可以是可修改的。

在决定框630中,CSBM实施例可以确定经修改的TSBL指令和/或数据是否是可用的以及是否在不可信的存储器中。如果经修改的TSBL存储在可信的存储器(类似于例如FSBL和SSBL)中,则方法600可以运行“是”分支到框645,并执行TSBL。然而,如果经修改的TSBL驻留在不可信的存储器中,则方法600可以通过运行“否”分支到决定框635来从决定框630继续。

在决定框635处,通过使用如上所述的MAC算法和唯一地与SoC相关联并烧录到SoC中的机密密钥,来验证存储在不可信的存储块中的指令和/或数据的完整性和可靠性。如果验证失败,则方法600从决定框635运行“失败”分支并且启动序列终止。然而,如果使用唯一地与SoC 102相关联的密钥来生成与关联于经修改的指令的MAC值相一致的MAC输出,成功地验证了存储在不可信的存储块中的经修改的指令,则方法600运行“通过”分支到框640。

在框640,执行来自不安全存储块的经认证且经完整性检查的TSBL代码,并且该方法移动至框645,在此处完成可修改的启动阶段。启动序列从框645进行到例如可能与MOSBL相关联的随后的启动阶段,并且在框650处继续。

图7更详细地示出了图6的方法600中的、关于对驻留在不可信的存储块705中的经修改的代码和/或数据进行认证和检查完整性的方法部分的逻辑流程图。在方法600中的决定框630之前,在框629处读取与TSBL启动阶段相关联的指令和/或数据的存储块。如上所述,如果存储块是能够包含未经授权的代码和/或数据的不可信的存储块,则方法600前进至决定框635。在图7图示中,方法600中的以决定框635开始的一部分可以在安全的环境内进行,以便维持机密密钥的机密性。如果在框635处成功验证了经修改的代码和/或数据的可靠性和完整性,则运行“通过”分支到框639并且启动阶段使用经修改的指令和/或数据继续至框640。

如果在决定框635处可靠性和完整性检查失败,则运行“失败”分支到决定框636,并且方法600寻求确定该代码是否与制造目的相关联。如果不是,则运行“否”分支并且启动序列终止。如果该代码与制造目的相关联,则运行“是”分支到框637并且创建默认指令块。该方法移动到框639,并且启动阶段继续至框640。

在本说明书中描述的过程或过程流的某些步骤自然地先于其他步骤,以便本发明如所描述的那样运作。然而,如果本发明所描述的步骤的顺序或序列不改变本发明的功能,则本发明不受限于所描述的步骤的顺序。也就是说,要认识到的是,在不脱离本发明的范围和精神的情况下,一些步骤可以在其它步骤之前、之后或并行(基本上同时地)执行。在一些实例中,在不背离本发明的情况下,可以省略或不执行某些步骤。此外,诸如“此后”、“然后”、“接下来”等词语,不旨在限制这些步骤的顺序。这些词语仅用于贯穿对示例性方法的描述来引导读者。

另外,基于例如本说明书中的流程图和相关联的描述,编程领域的普通技术人员能够无困难地编写计算机代码或识别适当的硬件和/或电路来实现所公开的发明。因此,对特定的程序代码指令集或详细的硬件设备的公开不应认为是对充分理解如何做出和使用本发明是必要的。在以上描述中并且连同附图来更详细地解释了所要求保护的计算机实现的过程的创造性功能,所述附图可以示出各种过程流程。

在一个或多个示例性方面中,所描述的功能可以用硬件、软件或其任意组合来实现。如果在软件中实现,可以将这些功能存储在计算机可读介质上或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质二者,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机可以存取的任何可用介质。举例而言,但非做出限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并可以由计算机进行存取的任何其它介质。

因此,虽然已经详细地说明并描述了所选择的方面,但应当理解的是,可以在不脱离如由以下权利要求所限定的、本发明的精神和范围的情况下,在其中进行各种替换和改变。

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