用于从外部存储装置进行安全引导的方法和设备的制作方法

文档序号:6453788阅读:137来源:国知局
专利名称:用于从外部存储装置进行安全引导的方法和设备的制作方法
技术领域
本发明大体上涉及电子设备,且更具体地说涉及用于从外部存储装置安全地引导电 子装置的技术。
背景技术
电子装置(例如,蜂窝式电话)通常基于控制装置内的硬件且支持各种所设计功能 的软件和/或固件来操作。软件和/或固件可存储在外部非易失性存储器中,在加电期间加 载于快速内部存储器和/或外部易失性存储器中并由处理器执行。外部和内部存储器通常 经选择以提供所需要的存储容量和存取能力且选择成尽可能为经济的。
在许多例子中,需要或必须确定从外部存储器检索的软件和/或固件是否有效且经授 权以用于执行。举例来说,具有不同特征的不同软件版本可用于不同等级的服务预订。 因而可能需要防止具有基本预订的电子装置加载和执行具有预期用于高级预订的增强功 能性的软件版本。作为另一实例,可能需要防止窜改软件和/或固件以启用未经授权的特 征。另外,敌对方可能导致更坏的后果,例如网络破坏和/或中断。

发明内容
因此在此项技术中需要用以将软件和/或固件存储在经济的存储器中且检査从这些 存储器检索的软件和/或固件的有效性的技术。
本文描述用于从外部存储装置(例如,NAND快闪存储器装置)安全地引导电子装 置(例如,蜂窝式电话)的技术。安全引导指代载入来自外部存储装置的软件程序以及 检査所载入软件程序的有效性的过程。软件程序可包含软件代码、固件代码或两者的组
合°
本文所描述的技术可利用外部存储装置上的不可写入区来存储实际上不可更改的安 全数据。所述不可写入区可以是一次性可编程(OTP)区、 一次性写入(OTW)区等等。 如本文所使用,安全数据包括不可容易更改的数据(例如,存储在OTP区或OTW区中 的数据)以及由所述不可容易更改的数据验证的数据。所述安全数据可包含一个或一个 以上散列摘要、签名、证书、密码密钥等等,或其组合。所述技术利用安全数据来验证 从外部存储装置载入的软件程序,允许执行经验证的程序以及防止执行未经授权的程序。
在安全引导的实施例中,最初从外部存储器装置的不可写入区(例如,NAND快闪 存储器的OTP区)检索安全数据。从外部存储器装置的可写入或主要区检索第一程序(例 如,引导程序),且基于所述安全数据来验证第一程序。举例来说,所述安全数据可包含 第一散列摘要。第一程序接着可通过以下步骤来验证(1)散列第一程序以产生第二散 列摘要,以及(2)比较第一与第二散列摘要。所述第一程序在经验证的情况下经启用以 用于执行。
可从所述外部存储器装置的所述主要区检索第二程序,且基于所述安全数据来验证 第二程序。举例来说,安全数据可包含密码密钥,其可存储在不可写入区中或由存储在 所述不可写入区中的数据验证。第二程序可接着通过以下步骤来验证(1)检索含有第 一签名和公用密钥的证书,(2)检索第二程序的第二签名,(3)使用密码密钥检验第一 签名以验证证书,以及(4)使用来自证书的公用密钥检验第二签名以验证第二程序。第 二程序在经验证的情况下经启用以用于执行。可检索且验证额外的程序。每一程序可使 用安全散列函数、数字签名和/或某一其它密码技术来验证。
在下文进一步详细描述本发明的各种方面和实施例。


结合附图考虑,从以下陈述的详细描述中将更显而易见本发明的特征和性质,附图 中相同参考符号贯穿全文进行相应识别。 图1展示无线通信装置的框图。
图2A和2B展示使用安全散列函数来验证引导程序的过程。 图3A和3B展示使用数字签名来验证软件程序的过程。 图4展示使用证书的多个等级的验证。 图5展示具有OTP区和主区的NAND快闪存储器。 图6展示用于执行来自NAND快闪存储器的安全引导的过程。 图7展示用于验证软件程序的过程。
具体实施例方式
在本文使用词语"示范性"以表示"用作实例、例子或说明"。本文描述为"示范性" 的任何实施例或设计并非必须解释为比其它实施例或设计优选或有利。
本文所描述的安全引导技术可用于各种电子装置,例如那些用于无线通信、个人电 子设备、计算、连网等等的电子装置。所述技术也可与具有不可写入区的各种存储装置 一起使用,例如固态存储器装置、存储卡、硬盘、紧密盘(CD)等等。不可写入区是存
储装置的不可用数据重写的区。举例来说,不可写入区可以是可用数据仅编程一次的OTP 区。不可写入区可用于存储支持安全引导过程的安全数据。为了清楚起见,下文描述用 于具有带有OTP区的NAND快闪存储器的无线通信装置的技术。
图1展示无线通信装置100的框图,其可以是蜂窝式电话、手机、手持式装置、无 线模块、个人数字助理(PDA)、终端、调制解调器或某些其它设备或装置。无线装置100 能够经由接收路径和传输路径以一个或一个以上无线通信系统提供双向通信。在接收路 径上,由基站传输的信号由天线112接收且提供到接收器(RCVR) 114。接收器114调 节且数字化所接收的信号,且提供输入样本到数字段120用于进一步处理。在传输路径 上,传输器(TMTR) 116接收且调节待由无线装置100传输的数据,且产生经由天线112 传输到基站的经调制信号。
数字段120包括支持无线装置100的数字处理的各种处理、接口和存储器单元。对 于图1中所示的实施例,数字段120包括调制解调器处理器122、应用处理器124、控制 器/处理器130、静态随机存取存储器(SRAM) 132、 NAND快闪控制器140和同步动态 RAM (SDRAM)控制器142,其全部可经由一个或一个以上总线134而彼此通信。调制 解调器处理器122执行用于数据传输和接收的处理(例如,编码、调制、解调、解码等 等)。应用处理器124可执行用于音频、视频、图形和/或其它应用(例如散列和检验算 法)的处理。控制器/处理器130可指导数字段120内的各种单元的操作。SRAM 132存 储由数字段120内的控制器和处理器使用的程序代码和数据。
NAND快闪控制器140有助于在NAND快闪存储器150与数字段120之间传送数据。 SDRAM控制器142有助于在SDRAM 152与数字段120之间传送数据。控制器/处理器 130也可指导NAND快闪控制器140和/或SDRAM控制器142的操作。控制器/处理器 130在引导期间(例如,当无线装置100加电时)可指导从NAND快闪存储器150到SRAM 132的数据传送,且可进一步有助于NAND快闪存储器150与SDRAM 152之间的数据 传送。
NAND快闪存储器150与SDRAM 152是数字段120外部的存储器装置,且为数字 段120内的处理单元提供大容量存储。NAND快闪存储器150为数字段120所使用的程 序代码和数据提供非易失性存储。NAND快闪存储器150也可由其它类型的非易失性存 储器来替换。SDRAM 152为数字段120所使用的程序代码和数据提供具有随机存取能力 的存储。SDRAM 152也可由其它类型的易失性存储器(例如,SRAM、 DRAM等等)和 /或非易失性存储器(例如,NOR快闪存储器)来替换。
一般地,数字段120可包括任何数目的处理、接口和存储器单元。数字段120内的 控制器和处理器可使用一个或一个以上数字信号处理器(DSP)、微处理器、精简指令集 计算(RISC)处理器、复杂指令集计算(CISC)处理器等等来实施。数字段120可实施 在一个或一个以上专用集成电路(ASIC)和/或某些其它类型的集成电路(IC)上。
如图1中所示,无线装置100可利用具有不同类型存储器的存储器结构。SRAM和 SDRAM是一旦移除电力就失去其数据的易失性存储器。SRAM和SDRAM可以随机方 式存取且一般用作主要运行时间存储器。快闪存储器是即使在移除电力后也可保留其数 据的非易失性存储器。NAND快闪存储器(其为一种类型的快闪存储器)具有大存储容 量、用于持续存储器存取的良好速度以及低成本。然而,NAND快闪存储器对于随机存 储器存取具有较差的性能,且通常以页为单位(一次一页)来存取,其中每一页具有特 定大小(例如,512字节)。
图1中所示的存储器结构并入有NAND快闪存储器和SRAM/SDRAM,且能够以减 少的成本提供具有随机存取的大存储容量。对于此存储器结构,程序代码可永久地存储 在NAND快闪存储器中。 一旦被加电,无线装置就执行需要(尤其)将程序代码从NAND 快闪存储器传送到SRAM/SDRAM的引导程序。
NAND快闪存储器可存储控制无线装置内的硬件的各种软件程序,且进一步支持各 种所设计的功能和特征。软件程序(或仅仅是程序)可包含软件代码、固件代码或其组 合。固件通常指代嵌入于例如快闪存储器或只读存储器(ROM)的硬件装置中的程序代 码。软件通常指代可比固件容易修改的程序代码。
存储在NAND快闪存储器中的软件程序可包含控制引导过程的引导程序和控制硬件 的操作且支持所需要的特征和功能的高层程序。引导程序也可称作引导代码、引导加载 程序等等。高层程序可包括(例如)初始化无线装置内的各件硬件的硬件初始化程序、 负责直接控制和管理硬件和基本系统操作的操作系统、支持各种应用(例如,音频、视 频、图形和游戏等等)的应用程序和/或其它软件程序。这些各种软件程序可彼此依赖, 且可在引导过程期间按序载入。
软件程序可在制造期间编程到NAND快闪存储器中、在无线装置的激活期间下载到 NAND快闪存储器中等等。无论软件程序如何载入到NAND快闪存储器中,可能需要或 必须确定存储在NAND快闪存储器中的软件程序是否被授权,从而允许执行经授权的程 序且防止执行未经授权的程序。
本文所描述的技术支持来自例如NAND快闪存储器的外部存储装置的安全引导。安全引导检查从NAND快闪存储器检索的每一程序且检验所述程序是否经授权用于执行。 安全引导可使用NAND快闪存储器的OTP区和密码技术来实现。
NAND快闪存储器包括主要区和OTP区。主要区是NAND快闪存储器的可用数据 写入任何次数的较大区。OTP区通常是NAND快闪存储器的可仅被编程一次的较小区。 OTP区用于不可改变的实用目的。存储在OTP区中的数据是永久性的且不可容易地修改 或窜改。来自OTP区和主要区两者的数据可被容易地存取或检索。
图2A和2B展示使用安全散列函数来验证引导代码和根公用密钥r (下文描述)的 过程的实施例。图2A展示在源实体(例如,无线装置的制造商)处执行的处理。对于图 2A中所示的实施例,引导代码和根公用密钥r用于形成输入消息,所述输入消息由安全 散列函数210散列以产生摘要。到达安全散列函数210的输入消息可以是任何长度,且 输出摘要是具有由经选择使用的散列算法所确定的固定长度的伪随机位串。安全散列函 数210可实施SHA-1 (安全散列算法)、SHA-2 (其包括SHA-224、 SHA-256、 SHA-384 和SHA-512)、 MD-4 (消息摘要)、MD-5或此项技术中已知的某些其它安全散列算法。 安全散列算法具有密码特性,使得消息与其摘要之间的皿不可逆,且两个消息映射到 相同摘要的可能性是很小的。对于图2A中所示的实施例,引导代码和根公用密钥r存储 在NAND快闪存储器的主要区中,且摘要和安全散列算法存储在NAND快闪存储器的 OTP区中。在其它实施例中,根公用密钥r和/或引导代码可存储在NAND快闪存储器的 OTP区中。
图2B展示在无线装置处执行的用以验证引导代码和根公用密钥r的处理。引导代码 和根公用密钥r从NAND快闪存储器检索且由安全散列函数220散列以产生摘要。安全 散列函数220在源实体处实施由安全散列函数210使用的相同安全散列算法。此安全散 列算法可驻存在无线装置(图2B中未展示)处,或可从NAND快闪存储器(如图2B中 所示)的OTP区检索。安全散列算法也可以代码的形式存储以由ASIC 120内的处理器 执行。比较单元222接收存储在NAND快闪存储器的OTP区中的摘要和由安全散列函数 220产生的摘要,比较所存储的摘要与所产生的摘要,且在两个摘要匹配的情况下声明 引导代码与根公用密钥r经验证。存储在OTP区中的摘要不能被容易地窜改或替换。安 全散列算法的密码特性确保引导代码与根公用密钥r的另一组合映射到存储在OTP区中 的相同摘要的可能性很小。因此,由第三方对引导代码或根公用密钥r的任何窜改可容 易地由所产生摘要与所存储摘要之间的失配检测到。
图3A和3B展示使用数字签名来验证软件程序x的过程的实施例。软件程序x可以
是引导代码或高级程序。本实施例使用两组密码密钥(1) 一组用以签名和验证软件程 序x的私有和公用密钥,其称作私有密钥x和公用密钥x,以及(2) —组用以识别和验 证源实体的私有和公用密钥,其称作根私有和公用密钥r。根私有密钥r和私有密钥x是 秘密的,且仅为源实体所知。使根公用密钥r可用于无线装置且用于检验使用根私有密 钥所产生的签名。公用密钥x用于检验使用私有密钥x所产生的签名。
图3A展示在源实体处执行的处理。软件程序x由安全散列函数310散列以产生摘要, 其称作摘要x。安全散列函数310可实施SHA-1、 SHA-2、 MD-5或某一其它安全散列算 法。签名函数(sign function) 312使用私有密钥x产生摘要x上的签名。此签名称作签 名x。签名函数312可实施RSA(李维斯特(Rivest)、萨莫尔(Shamir)和阿德曼(Adleman)) 算法、数字签名标准(DSS)算法或此项技术中已知的某一其它密码(数字签名或加密) 算法。软件程序x和签名x可存储在NAND快闪存储器的主要区中。
签名函数314使用根私有密钥r产生公用密钥x上的签名以及可能其它信息。此签 名称作签名cx且用以验证源实体。签名函数314可实施RSA、DSS或某一其它密码算法。 签名函数312和314可实施相同或不同的密码算法。证书产生器316形成含有签名cx、 公用密钥x以及可能其它信息(例如用于源实体的标识符、经选择使用的密码算法、证 书的截止日期等等)的证书。此证书称作证书x,且可作为X.509证书或以此项技术中已 知的某一其它格式而存储。证书x可存储在NAND快闪存储器的主要区中。根公用密钥 r可存储在NAND快闪存储器的任何位置,或可以其它方式而可用于无线装置,例如存 储在无线装置内。
图3B展示在无线装置处执行的用以验证软件程序x的处理。从NAND快闪存储器 检索根公用密钥r和证书x。检验函数320从证书x中提取签名cx和公用密钥x,使用 根公用密钥r检验签名cx,且在签名cx经检验的情况下提供公用密钥x。对于图2A和 2B中所示的实施例,根公用密钥r存储在NAND快闪存储器中,且由安全散列算法对照 NAND快闪存储器的OTP区中所存储的摘要进行检验。因此,由第三方对证书x的任何 窜改可容易地由签名cx未经检验而检测到。
签名程序x从NAND快闪存储器检索且由安全散列函数322散列以产生摘要,其称 作摘要x'。安全散列函数322在源实体处实施由安全散列函数310使用的相同安全散列 算法。检验函数324接收来自安全散列函数322的摘要x'、来自NAND快闪存储器的签 名x和来自检验函数320的公用密钥x。检验函数324使用密钥x和摘要x'检验签名x, 且指示签名x是否经检验。公用密钥x使用根公用密钥r来进行验证,根公用密钥r接着
通过存储在NAND快闪存储器的OTP区中的引导代码摘要来验证。因此,由第三方对软 件程序x和/或签名x的任何窜改可容易地由签名x未经检验而检测到。
图3A和3B中所示的实施例允许一个根公用密钥r验证任何数目的软件程序。对于 每一软件程序可使用所述程序的私有密钥产生签名,且对于程序使用根私有密钥r来产 生证书。根私有密钥r可用以验证每一软件程序的证书,且经验证证书内的公用密钥可 用以验证程序的签名。
图4展示使用证书的N个等级的验证的实施例,其中N可以是任何正的值。对于此 实施例,证书1含有(1)使用根私有密钥r产生的签名cl、 (2)公用密钥1和(3)图 4中未展示的可能其它信息。 一般地,证书n (n=l,…,N)含有(1)使用私有密钥n-l 产生的签名cn、 (2)公用密钥n和(3)可能其它信息。私有密钥0是根私有密钥r。公 用密钥N可能是待验证的软件程序x的公用密钥x。对于第一等级验证,证书l通过使 用根公用密钥r检验签名cl来验证。如果签名cl经检验,那么对于验证的每一随后等级 n,通过使用来自前一等级的公用密钥n-l检验签名cn来验证所述等级的证书n。如果所 有N个等级经验证,那么公用密钥x可用以验证软件程序x,如上文关于图3B所描述。
多个等级的验证可用于多层密码密钥层级。证书1可用于验证充当信任基础的根证 书授权(CA)。由于根证书授权的私有密钥r是信任基础,所以采取步骤来保护这些私有 密钥,且因此使其使用受到限制。可产生更"可消耗的"额外等级的中间证书授权。在 组织上,多层密钥层级是方便的,因为证书的检验链可通过产生软件程序的组织来产生。 因此,载入到无线装置上的软件程序的部分可个别地由不同的无线装置制造商来定制。
在另一实施例中,软件程序(其可为引导代码或高级程序)使用私有密钥来签名, 且相应的公用密钥存储在NAND快闪存储器的OTP区中。
一般地,软件程序可使用安全散列、数字签名、加密和/或其它密码技术来验证。基 于存储在NAND快闪存储器的OTP区中的安全数据来实现验证。认为是安全的数据完整 性受保护,即不能被容易地修改或窜改。安全数据可包括一个或一个以上摘要、签名、 证书、密码密钥等等,或其任何组合。
图5展示NAND快闪存储器150的实施例,NAND快闪存储器150包括OTP区和 主要区。对于图5中所示的实施例,OTP区510存储用于无线装置的标识符(电话ID)、 用于引导代码的安全散列算法以及由源实体对引导代码和根公用密钥产生的散列摘要。 电话ID可以是电子序列号(ESN)、移动设备标识符(MEID)或无线装置所特有的某一 其它类型的标识符。电话ID可用以确保NAND快闪存储器用于适当的无线装置。安全散列算法可存储在NAND快闪存储器的OTP区中,且经检索以由数字段120在引导过程 期间使用。或者,安全散列算法可驻存在数字段120内而未存储在OTP区中。可基于引 导代码和根公用密钥来产生引导代码摘要,如图2A中所示。根公用密钥用于验证由源实 体所产生的证书,且由源散列算法在引导期间进行检验以检查其有效性。或者,根公用 密钥可存储在无线装置内,例如在数字段120内部。
引导代码存储在NAND快闪存储器的主要区的段522中。引导代码通常是在引导过 程期间在安全数据和散列算法检验引导代码的有效性之后将载入和执行的第一程序。引 导代码初始化和配置无线装置,且接着检索、检验和执行高级软件程序。软件程序A存 储在NAND快闪存储器的主要区的段524中。签名和证书可经产生以用于软件程序A(例 如,如图3A中所示),且分别作为签名A和证书A而存储在段524中。软件程序A可 以是引导过程期间例如在引导代码经验证的情况下将载入和执行的第二程序。软件程序 B存储在NAND快闪存储器的主要区的段526中。签名和证书可经产生以用于软件程序 B (例如,如图3A中所示),且分别作为签名B和证书B而存储在段526中。软件程序 B可以是引导过程期间例如在软件程序A经验证的情况下将载入和执行的第三程序。其 它软件程序也可存储在NAND快闪存储器中。每一软件程序可包括用以验证所述软件程 序的签名和证书。
一般地,NAND快闪存储器可存储任何数目的软件程序和任何类型的软件程序。软 件程序可以任何次序载入和执行。在一实施例中,软件程序以层级或依序次序载入,例 如首先引导代码、接着软件程序A、接着软件程序B等等。此依序载入允许一个程序验 证另一程序。举例来说,软件程序A可含有初始化无线装置内的硬件的基本功能。软件 程序B可含有依赖于软件程序A所提供的基本功能的定制功能和特征。软件程序A可由 无线装置的设计者产生,且软件程序B可由卖主或原始设备制造商(OEM)产生以定制 无线装置。
图6展示用于执行来自NAND快闪存储器的安全引导的过程600的实施例。过程600 可在例如当无线装置加电时执行。最初,安全数据从NAND快闪存储器的OTP区载入到 数字段内的SRAM中(框612)。安全数据可包括用以验证NAND快闪存储器的内容的 任何数据。对于图5中所示的实施例,安全数据包括引导代码摘要和安全散列算法。安 全数据可包括用于其它实施例的其它类型的数据。
引导代码接着从NAND快闪存储器载入到SRAM和/或SDRAM中(框614)。使用 与在源实体处对于引导代码使用的相同安全散列算法基于所载入的引导代码而产生散列
摘要(还是框614)。由于NAND快闪存储器较易于发生位误差,可使用所以误差校正码 (ECC)和/或误差检测码来减少数据误差的概率且确保在从NAND快闪存储器载入数据 时的数据完整性。
从所载入的引导代码产生的散列摘要接着与存储在OTP区中的散列摘要进行比较 (框616)。如果所产生的散列摘要不与所存储的散列摘要匹配,如框618中所确定,那 么声明误差(框620),且引导过程终止。在框620中可经由误差消息通知用户和/或可采 取其它适当动作。
如果所产生和所存储的散列摘要匹配且对于框618答案为"是",那么验证引导代码。 引导代码可被执行,且可控制和/或指导剩余的引导过程。举例来说,引导代码可初始化 NAND快闪控制器140和SDRAM控制器142以将剩余的软件程序直接从NAND快闪存 储器载入到SDRAM。
将指数x设置为待载入和验证的下一软件程序(例如,对于图5中的NAND快闪存 储器150, x-A)(框622)。软件程序x接着从NAND快闪存储器载入到SDRAM中(框 624)。还从NAND快闪存储器载入软件程序x的证书x和签名x。使用适当的公用密钥 (例如,根公用密钥)验证证书x,如上文关于图3B和图4所描述(框626)。如果证书 x经验证,那么使用所载入的软件程序x和从证书x获得的公用密钥x来检验签名x,同 样如上文关于图3B和图4所描述(框628)。
接着确定签名x是否经检验(框630)。如果答案为"否",那么声明误差和/或可采 取其它动作(框620),且引导过程终止。否则,如果签名x经检验,那么允许执行软件 程序x。软件程序x和/或引导代码可载入下一软件程序。接着确定是否所有软件程序都 已载入(框632)。如果答案为"否",那么过程返回到框622以载入下一软件程序。否 则,如果所有软件程序都已载入,那么过程终止。
对于图6中所示的实施例,软件程序可以层级次序来载入。每一软件程序可由先前 程序基于被存储用于所述软件程序的密码数据(例如,签名、证书和/或密码密钥)来验 证。验证过程可利用存储在OTP区中的安全数据。验证过程可起源于安全数据(例如根 公用密钥,其可能是存储在OTP区中的安全数据的一部分或由存储在OTP区中的安全数 据来进行验证),且可栓住任何数目的等级。允许执行每一经验证的程序且每一经验证的 程序可初始化无线装置内的适当硬件。还可信任每一经验证的程序以验证其它高级程序。 可信任所有经验证回根的程序。
载入和验证过程可继续进行,直到所有相关程序都已从NAND快闪存储器载入到
SDRAM为止。操作系统可在一旦载入充分数目的程序时即刻就开始过程,而不必等待 直到所有程序都载入到SDRAM中为止。在已载入最后的程序后,无线装置具备完全功 能。
基于整个引导代码产生引导代码的散列摘要,如图2A中所示。软件程序x的签名基 于摘要x而产生,而摘要x基于整个软件程序而产生,如图3A中所示。给定软件程序(其 可以是引导代码或高级程序)的验证可通过在从NAND快闪存储器载入软件程序时在传 输中执行散列计算来加速。
数据以页为单位(一次一页)从NAND快闪存储器读取,其中每一页具有特定大小 (例如,512字节)。为了从NAND快闪存储器读取数据页,首先激活NAND快闪存储器, 将读取命令发送到NAND快闪存储器,且还将页地址发送到NAND快闪存储器。接着将 所选择的数据页从NAND阵列传送到NAND快闪存储器内的NAND缓冲器。此页传送 花费某一时间量。当完成页传送时,NAND快闪存储器通过使准备就绪/忙碌信号变为逻 辑高来指示其已准备就绪。在此点上,可通过提供读取时钟来从NAND快闪存储器读取 数据页。
在一实施例中,通过一次散列一个数据页来产生散列摘要。在已从NAND快闪存储 器载入数据页之后,将读取下一页的命令发送到NAND快闪存储器。当NAND快闪存储 器正忙于将下一页从NAND快闪存储器的单元阵列发送到NAND快闪存储器的内部缓冲 器时,对刚刚载入的页计算散列摘要(例如,通过图1中的处理器124)。 一旦已从NAND 快闪存储器载入最后页,就对最后页执行散列计算,且其后不久产生散列摘要。由于软 件程序可存储在许多页中,所以在载入每一页时计算散列摘要可实质上縮短用以执行散 列的时间量,这可縮短引导过程。
为了清楚起见,已使用存储在OTP区中的安全数据来描述安全引导技术。 一般地, 安全数据可存储在存储装置的任何安全区中。安全区是不可写入且不可容易地更改或修 改的区。举例来说,安全数据可存储在OTP区、一次性写入(OTW)区、只读存储器(ROM) 区、可锁定区(其具有锁定控制以防止写入到所述区)或某一其它不可写入区中。
为了清楚起见,已关于具有OTP区的NAND快闪存储器描述了安全引导技术。NAND 快闪存储器具有各种所需要的特征,例如高存储容量、低成本、良好的擦除和编程特性、 用于持续存取的良好数据传送速度等等。所述技术也可用于其它类型的存储器装置(例 如,NOR快闪存储器)和其它类型的存储装置(例如,存储卡、硬盘、紧密盘(CD)等 等)。对于所有这些存储装置,存储在不可写入(例如,OTP)区中的安全数据可得到充
分程度的信任,且可用作用于验证存储在存储装置的主要区中的软件程序的安全根。
安全引导技术可用于可与一个或一个以上无线广域网(WWAN)、无线局域网 (WLAN)、无线个人局域网(WPLAN)和/或其它无线网络通信的无线装置。WWAN可 以是码分多址(CDMA)网络、全球移动通信系统(GSM)网络、通用移动电信系统(UMTS) 网络等等。CDMA网络实施cdma2000,其涵盖IS-95、 IS-2000、 IS-856等等。UMTS网 络实施宽带-CDMA (W-CDMA)。 W-CDMA和GSM描述于来自名为"第三代合作伙伴 计划"(3GPP)的联盟的文献中。cdma2000描述于来自名为"第三代合作伙伴计划2" (3GPP2)的联盟的文献中。3GPP和3GPP2文献是可公开获得的。安全引导技术也可用 于其它电子装置。
图7展示用于在电子装置中验证软件程序的过程700的实施例。从外部存储器装置 的不可写入区(例如,NAND快闪存储器的OTP区)检索安全数据(框710)。从外部存 储器装置的可写入或主要区检索第一程序(例如,引导程序)(框712),且基于安全数 据对其进行验证(框714)。举例来说,安全数据可包含第一散列摘要以及待执行的散列 算法。可接着通过以下步骤来验证第一程序(1)散列第一程序以产生第二散列摘要, 以及(2)比较第一与第二散列摘要。第一程序在经验证的情况下被启用以用于执行(框 716)。
可从外部存储器装置的可写入或主要区检索第二程序(框722),且基于安全数据对 其进行验证(框724)。举例来说,安全数据可包含密码密钥。可接着通过以下步骤来验 证第二程序(1)从外部存储器装置的可写入或不可写入区检索含有第一签名和公用密 钥的证书,(2)从可写入或不可写入区检索第二程序的第二签名,(3)使用密码密钥检 验第一签名以验证证书,以及(4)使用来自证书的公用密钥检验第二签名以验证第二程 序。第二程序在经验证的情况下经启用以用于执行(框726)。可检索且验证额外的程序。
本文所描述的安全引导技术可通过各种方式来实施。举例来说,这些技术可实施在 硬件、固件、软件或其组合中。对于硬件实施方案,用以执行安全引导的处理单元可实 施在一个或一个以上ASIC、 DSP、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、 现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、电子装置、经设 计以执行本文所描述的功能的其它电子单元,或其组合内。
所述技术也可使用执行本文所描述的功能的固件和/或软件模块(例如,程序、函数 等等)来实施。模块可存储在存储器(例如,图1中的SRAM 132、 NAND快闪存储器 150和/或SDRAM 152)中,且可由处理器(例如,处理器130)来执行。
提供对所揭示实施例的先前描述以使所属领域的技术人员能够制造或使用本发明。 所属领域的技术人员将容易了解对这些实施例的各种修改,且本文所界定的一般原理可 在不脱离本发明的精神或范围的情况下应用于其它实施例。因此,本发明并不希望限于 本文所展示的实施例,而是应被赋予与本文所揭示的原理和新颖特征一致的最广泛范围。
权利要求
1. 一种设备,其包含至少一个处理器,其经配置以从外部存储器装置的不可写入区检索安全数据,从所述外部存储器装置的可写入区检索第一程序,基于所述安全数据验证所述第一程序,以及在经验证的情况下启用所述第一程序的执行;以及内部存储器,其耦合到所述至少一个处理器。
7. 根据权利要求6所述的设备
8. 根据权利要求6所述的设备 装置的所述可写入区检索第 经验证的情况下启用所述第
9. 根据权利要求8所述的设备
10. 根据权利要求1所述的设备
11. 根据权利要求l所述的设备
12. 根据权利要求l所述的设备
13. —种方法,其包含 从外部存储器装置的不可写入区检索安全数据; 从所述外部存储器装置的可写入区检索第一程序; 基于所述安全数据验证所述第一程序;以及 在经验证的情况下启用所述第一程序的执行。
14. 根据权利要求13所述的方法,其中所述安全数据包含第一散列摘要,且其中所述 验证所述第一程序包含散列所述第一程序以产生第二散列摘要,以及 比较所述第一与第二散列摘要以验证所述第一程序。
15. 根据权利要求13所述的方法,其中所述验证所述第一程序包含从所述外部存储装置检索所述第一程序的第一签名以及包含第二签名和公用密 钥的证书,使用密码密钥检验所述第二签名以验证所述证书,其中所述密码密钥从所述安全 数据获得或由所述安全数据验证,以及使用所述公用密钥检验所述第一签名以验证所述第一程序。
16. 根据权利要求13所述的方法,其进一步包含从所述外部存储器装置的所述可写入区检索第二程序; 基于所述安全数据验证所述第二程序;以及 在经验证的情况下启用所述第二程序的执行。
17. —种设备,其包含用于从外部存储器装置的不可写入区检索安全数据的装置; 用于从所述外部存储器装置的可写入区检索第一程序的装置; 用于基于所述安全数据验证所述第一程序的装置;以及 用于在经验证的情况下启用所述第一程序的执行的装置。
18. 根据权利要求17所述的设备,其中所述安全数据包含第一散列摘要,且其中所述 用于验证所述第一程序的装置包含用于散列所述第一程序以产生第二散列摘要的装置,以及 用于比较所述第一与第二散列摘要以验证所述第一程序的装置。
19. 根据权利要求17所述的设备,其中所述用于验证所述第一程序的装置包含用于从所述外部存储装置检索所述第一程序的第一签名以及包含第二签名和公 用密钥的证书的装置, 用于使用密码密钥检验所述第二签名以验证所述证书的装置,其中所述密码密钥 从所述安全数据获得或由所述安全数据验证,以及用于使用所述公用密钥检验所述第一签名以验证所述第一程序的装置。
20. 根据权利要求17所述的设备,其进一步包含用于从所述外部存储器装置的所述可写入区检索第二程序的装置; 用于基于所述安全数据验证所述第二程序的装置;以及 用于在经验证的情况下启用所述第二程序的执行的装置。
21. —种无线通信装置,其包含至少一个处理器,其经配置以从NAND快闪装置的一次性可编程(OTP)区检索 安全数据,从所述NAND快闪装置的主要区检索引导程序,基于所述安全数据验证 所述引导程序,以及在经验证的情况下启用所述引导程序的执行;以及存储器,其耦合到所述至少一个处理器。
22. 根据权利要求21所述的设备,其中所述安全数据包含第一散列摘要,且其中所述 至少一个处理器经配置以散列所述引导程序以产生第二散列摘要,以及比较所述第 一与第二散列摘要以验证所述引导程序。
23. 根据权利要求22所述的设备,其中所述至少一个处理器经配置以一次一页地从所 述NAND快闪装置的所述主要区检索所述引导程序,以及在从所述NAND快闪装 置检索所述页时一次一页地散列所述引导程序以产生所述第二摘要。
24. 根据权利要求21所述的设备,其中所述至少一个处理器经配置以在经验证的情况 下执行所述引导程序,从所述NAND快闪装置的所述主要区检索第二程序,基于所 述安全数据验证所述第二程序,以及在经验证的情况下启用所述第二程序的执行。
25. 根据权利要求24所述的设备,其中所述至少一个处理器经配置以检索包含第一签 名和公用密钥的证书,检索所述第二程序的第二签名,使用密码密钥检验所述第一 签名以验证所述证书,其中所述密码密钥从所述安全数据获得或由所述安全数据验 证,以及使用所述公用密钥检验所述第二签名以验证所述第二程序。
26. 根据权利要求25所述的设备,其中所述至少一个处理器经配置以一次一页地从所 述NAND快闪装置的所述主要区检索所述第二程序,在从所述NAND快闪装置检 索所述页时一次一页地散列所述第二程序以产生散列摘要,以及使用所述公用密钥 和所述散列摘要来检验所述第二签名。
全文摘要
本发明描述用于从外部存储装置安全地引导电子装置(例如,蜂窝式电话)的技术。最初从外部存储器装置的不可写入区(例如,NAND快闪装置的一次性可编程(OTP)区)检索安全数据(例如,散列摘要、签名、密码密钥等等)。从所述外部存储器装置的可写入或主要区检索第一程序(例如,引导程序)且基于所述安全数据来验证所述第一程序。所述第一程序在经验证的情况下经启用以用于执行。可从所述外部存储器装置的所述主要区检索第二程序且基于所述安全数据来验证所述第二程序。所述第二程序在经验证的情况下经启用以用于执行。可检索和验证额外的程序。可使用安全散列函数、数字签名和/或某一其它密码技术来验证每一程序。
文档编号G06F21/00GK101379506SQ200780004543
公开日2009年3月4日 申请日期2007年2月9日 优先权日2006年2月10日
发明者奥利弗·米凯利斯, 居内伊特·菲托兹, 德克斯特·塔米奥·春, 德怀特·戈登, 阿吉特·B·帕蒂尔, 黄余向 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1