专利名称:存储卡控制器固件的硬件驱动器完整性检查的制作方法
技术领域:
本发明大体上涉及具有安全内容的存储卡和所述内容的加密,且具体涉及运行安全 存储卡的固件的完整性的检验。
背景技术:
至关重要的是能够在商业上可购得的存储卡离开工厂之前对其功能性进行检验,且 确保所述卡一旦离开工厂就没有受黑客袭击的危险。随着数字版权管理的出现和受保护 内容(例如音乐和电影等)的传播,需要确保卡的内容不能被随意复制。黑客可能试图 这样做的一种方式是更改或甚至替换运行存储卡的固件,以便能够非法翻印卡的内容。 因此,必需提供一种系统,其一直确保在卡上运行的固件的完整性和可靠性两者。发明内容检验固件的完整性是运行安全且可靠的存储卡的一个重要方面。本发明检验运行存 储卡、通用串行总线(USB)快闪驱动器或其它存储器系统的固件的完整性。在固件被 执行之间检验固件的完整性。这防止执行非工厂固件的固件。此特别重要之处在于,工 厂固件包括安全机制,其包含意在保护内容不被随意复制的加密算法。本发明在存储卡 中实施时,防止所述卡运行可能允许复制安全内容的非工厂固件或经更改的工厂固件。 因此,黑客不能"诱使"所述卡运行错误的固件。所述检验过程还可用来检验任何所存 储数据的完整性。本发明的一个方面涉及一种用于启动存储器存储装置的操作的方法,其包括在装置 的大容量存储单元中提供固件,使所述固件通过加密引擎,用所述加密引擎计算固件的 散列值,将计算出的散列值与所存储的散列值进行比较,且如果计算出的散列值与所存 储的散列值匹配,那么执行所述固件。本发明的另一方面涉及大容量存储装置,其包括快闪存储器;只读存储器;第一 组指令,其控制所述大容量存储装置的数据存储操作,所述第一组存储在快闪存储器中; 第二组指令,其将第一组指令从闪存投影到可执行的随机存取存储器,所述第二组驻存 在只读存储器中。加密引擎在大容量存储装置的硬件电路中实施,且能够对将要存储在快闪存储器中和从快闪存储器读取的数据进行加密和解密。加密引擎可操作以检验第一 组指令的完整性。本发明的又一方面涉及另一种用于启动存储器存储装置的操作的方法。所述方法包 括在装置的大容量存储单元中提供固件;以及在只读存储器中执行第一组指令,其将 固件从大容量存储单元复制到随机存取存储器。所述方法还包括使用加密引擎来检验引 导固件的完整性,且在完整性被检验之后,用微处理器执行来自随机存取存储器的固件。本发明的额外方面、优势和特征包含在本发明的示范性实例的以下描述内容中,所 述描述内容应结合附图考虑,且其中在图中始终使用相同标号来描述相同特征,除非另 有指示。本文所参考的所有专利、专利申请案、文章和其它出版物的全文出于所有目的 以引用的方式并入本文中。
图1A是根据本发明实施例的系统IO的示意图。 图1B是根据本发明另一实施例的系统IO的示意图。 图2是图1中所示的快闪存储器的存储器空间的图。 图3是引导载入程序200a的示意性说明。图4是包含对固件的基于硬件的完整性检查的引导过程的一部分的流程图。 图5是图4的完整性检验过程410的流程图。 图6是引导期间硬件回路的流程图。 图7是引导期间固件回路的流程图。
具体实施方式
消息认证码("MAC")是从一些内容(或消息)计算出的用于证实内容的完整性的 编号。其目的是检测内容是否已经被更改。消息认证码是从消息和一些机密数据计算出 的散列(hash)。在不知道机密数据的情况下,难以进行伪造。使用基于DES或AES加 密法(其使用密钥)的算法来计算MAC。接着使MAC与消息一起存储或发送。接收者 使用同一算法和密钥来重新计算MAC,并将其与所存储或发送的一者进行比较。如果它 们是相同的,那么假定内容或消息尚未被篡改。DES (数据加密标准)是使用56位密钥的NIST标准密码加密法。1977年由NIST 所采用,其在2001年被AES取代作为官方标准。DES是以四种不同的操作模式对64位区块进行处理的对称区块加密法,其中电子代码书(ECB)是最普遍的。三重DES通过添加若干多遍方法来增加安全性;举例来说,用一个密钥进行加密, 用第二密钥对结果进行解密,且用第三密钥再次对其进行加密。然而,额外的遍数给过 程增添了相当多的计算时间。在不要求最强安全性的应用中仍使用DES。高级加密标准("AES")是使用128位的区块长度和128、 192或256位的密钥长度 的NIST标准密码加密法。在2001年正式取代三重DES方法,AES使用由比利时的Joan Daemen和Vincent Rijmen开发的Rijndael算法。可在一遍而不是三遍中对AES进行加密, 且其密钥大小大于三重DES的168个位。安全散列算法(SHA-1)产生20字节输出。NIST和NSA将其设计为与数字签名标 准一起使用,且其现在被广泛使用。MD5是可与本发明一起使用的另一散列函数。前面 提及的标准和各种其它算法是可与本发明一起利用的散列函数和值的说明性实例。如今 可用且将来会开发的其它类型的散列函数和值可与本发明一起利用。尽管前面提及的标准和各种其它算法和/或标准是密码学领域的技术人员众所周知 的,但以下出版物是提供信息的,且全文以引用的方式并入本文中/ FC 3566 - 77^ A五S-XC5C-A/AC-9(5 /4/go〃'Am f/"附 Zi /尸wc, Sheila Frankel, NIST—NationalInstitute of Standards and Technology, Gaithersburg, West Diamond路820号,677室, MD 20899,详见http:〃www.faqs.org/rfcs/rfc3566.html; /Vr/。rma"ce Comp。"、c " o/Mesrage /\wf/iew"'caf!'o CWe (MAC) AZgcm'f/unrS1/or f/ie Mfemef尸rofocoZ Secim'ty Janaka Deepakumara、 Howard M. Heys禾口 R. Venkatesan, Electrical and Computer Engineering, Memorial University of Newfoundland, St. John's, NL , Canada, A1B3S7 , 详见 http:〃www.engr.mun.ca/~howard/PAPERS/necec 2003b.pdf ; 以及 Cme"w ro AWr con"rm'ng A£S ModesOperan'oA Swgge5t/cm /or /fa打cf""g Ar&1'加A7-Le丰Zi vWf/i C5C MAC, University of Nevada, Reno, Phillip Rogaway, University of California at Davis, 详见http:〃csrc,nist.gov/CrvptoToolkit/modes/proposedmodes/xcbc-mac/ xcbc-mac-spec.pdf。存储器系统结构图1A的框图说明可实施本发明的各个方面的示范性存储器系统。如图1A所示,存 储器系统IO包含中央处理单元(CPU)或"控制器"12、缓冲管理单元(BMU) 14、主 机接口模块(HIM) 16、快闪接口模块(FIM) 18、快闪存储器20和外围存取模块22。 存储器系统10通过主机接口总线26和端口 26a与主机装置24通信。快闪存储器20(其 可以是"与非"型)为主机装置24提供数据存储。用于CPU 12的软件代码也可存储在快闪存储器20中。FIM 18通过快闪接口总线28且在一些情况下(如果快闪存储器20 是可移除组件)通过端口 (未图示)连接到快闪存储器20。 HIM 16适合连接到主机系统, 例如数字相机、个人计算机、个人数字助理(PDA)和MP-3播放器、蜂窝式电话或其它 数字装置。外围存取模块22选择适当的控制器模块(例如FIM、 HIM和BMU)来与CPU 12通信。在一个实施例中,系统10的在虛线框内的所有组件可被封围在单个单元中, 例如封围在存储卡中,且优选封围在所述卡中。缓冲管理单元14包括主机直接存储器存取单元(HDMA) 32、快闪直接存储器存取 单元(FDMA) 34、仲裁器36、 CPU总线仲裁器35、寄存器33、固件完整性电路(FWIC) 31、缓冲随机存取存储器(BRAM) 38和密码引擎40 (也被称为加密引擎40)。仲裁器 36是共享总线仲裁器,使得任何时候都只有一个主装置或起始器(其可以是HDMA32、 FDMA34或CPU 12)可活动,且从属装置或目标是BRAM 38。仲裁器负责将适当的起 始器请求引导到BRAM 38。 HDMA32和FDMA 34负责在HIM 16、 FIM 18和BRAM 38 或RAM 11之间输送的数据。CPU总线仲裁器35允许数据经由系统总线15直接从密码 引擎40和快闪DMA34传送到RAM 11,系统总线15在某些情况下使用,例如当需要绕 过密码引擎时。HDMA 32和FDMA 34的操作是常规的,且不需要在本文中详细描述。 使用BRAM 38来存储主机装置24与快闪存储器20之间传递的数据。HDMA 32和FDMA 34负责在HIM 16/FIM 18与BRAM 38或CPU RAM 12a之间传递数据,且负责指示区段 完成。当来自快闪存储器20的数据由主机装置24读取时,通过总线28、 FIM 18、 FDMA 34 和密码引擎40来获取存储器20中的经加密数据,其中经加密数据被解密并存储在BRAM 38中。接着,经解密数据从BRAM38通过HDMA32、 HIM 16和总线26发送到主机装 置24。从BRAM 38获取的数据在被传递到HDMA32之前,可再次借助密码引擎40进 行加密,使得发送到主机装置24的数据再次被加密,但所借助的密钥和/或算法与存储 在存储器20中的数据借以加密的密钥和/或算法不同。或者,不是在上文所述的过程中 将经解密的数据存储在BRAM38中(所述数据可能变得易于遭受未经授权的存取),而 是在将来自存储器20的数据发送到BRAM 38之前可对其进行解密并再次由密码引擎40 加密。接着,像之前那样,将BRAM 38中的经加密数据发送到主机装置24。这说明读 取过程期间的数据流。当数据由主机装置24写入到存储器20时,数据流的方向颠倒。举例来说,如果未 经加密的数据由主机装置发送,通过总线26、 HIM 16、 HDMA 32,到达密码引擎40,那么所述数据可在存储在BRAM 38中之前由引擎40加密。或者,未经加密的数据可存 储在BRAM38中。接着,在数据被发送到FDMA34之前在其去往存储器20的途中,对 所述数据进行加密。图1B说明系统IO的另一实施例。在此优选实施例中,将加密引擎40和固件完整性 电路31展示为控制器12的一部分。虽然这些组件作为控制器的一部分是优选的,但在 某些实施例中,它们可以不集成在控制器封装中。如先前所述,RAM 11、快闪存储器20 和控制器12全部连接到系统总线15。主机接口总线26与主机装置24 (未图示)通信。固件完整性检验图2说明包含运行系统10的固件200的快闪存储器的存储器空间。系统固件200包 括引导载入程序(BLR)部分200a,其驻存在快闪存储器20中,且优选是不可改变的, 且系统固件200b驻存在快闪存储器20中,且可在需要时不时地改变。在一些实施例中, 额外固件可存在于ROM 13中,当其直接被执行或从投影复制被执行时,指向BLR部分 200a。系统固件200的大小大于从其执行的RAM模块,所以将系统固件分成较小的部分, 被称为覆盖。在优选实施例中,BLR的完整性检验利用独特的动态计算,其中所预期的 值存储在数据本身中,且复制临时存储在除快闪存储器20之外的存储器中的寄存器中。 然而,在某些实施例中,用来检验BLR的完整性的技术可用来检验系统固件200b的完 整性。如先前所提及,可使用任何散列值和散列技术,但MAC或SHA-1值目前是优选 的,且为了简单起见,在优选实施例中将描述一个或其它值的使用。 一般来说,可替代 地使用SHA-1摘要来取代MAC值,且反之亦然。使用MAC值的优势是它们与硬件和 生成它们的硬件的密钥相关联。虽然可针对给定数据集简单地基于数据本身来生成 SHA-l值,但在没有密钥的情况下不能重新生成MAC值,且因此提供更稳固的安全性。 具体地说,因为必须使用存储在加密引擎40的非易失性存储器中的密钥99来生成MAC 值,所以不能利用另一处理器来重新生成MAC值。举例来说,黑客不能使用系统外部的 另一处理器来复制固件和相关联的MAC值。各种用户数据文件204也存储在快闪存储器内。未图示的各种其它程序和数据可存 储在快闪存储器(未图示)内。也可以类似或其它方式对这些文件进行加密并检验其完 整性。图3说明处于完整性检查模式时系统10所利用的一些数据区段的结构。BLR尤其优 选利用此结构。可看出,BLR代码307本身夹在其它数据之间,以组成BLR201a。在加 载BLR代码307之前,加载一些配置信息。配置信息包含在文件识别(FID)区段1和7中。BLR代码307之后是消息认证代码区段309。 MAC区段309内是BLR代码307的 对应部分的MAC值。这是与图5中所计算出的值(下文更详细地对此进行论述)相比较 的MAC值。用0对MAC区段进行填补,以适应不同长度的数据,使得MAC总是占据 区段的最后128个位。BLR代码307存储在快闪存储器20中,位于BLR部分200a中, 且配置信息也可存储在快闪存储器20中。图4说明引导和运行系统10的过程,其包含检验BLR代码和固件的完整性。具体 地说,图4包含如与固件200的BLR部分200a有关的完整性检验过程的一般概述。在 优选实施例中,系统固件200b和应用固件的检验与BLR的检验是分开的,且在BLR的 检验之后发生。值得注意的是,固件不是由BLR —次性加载的。BLR只加载几个模块 (RAM驻存固件),且其它模块(覆盖)基于需要进行加载,且交换到RAM中的相同位 置中。当系统10启动时,其将在完整性检査模式下启动,如步骤404中可见。 一般来说, 在此模式下,加密引擎40计算所有传入数据的MAC值,如上文所论述且在图5中详细 说明。此过程确保了传入数据可具有可变长度,且存储在"与非"快闪存储器20的任意 位置中。在优选实施例中,将以与写入数据的次序相同的次序读取所述数据,且读取的 最后一个区块将含有MAC。 MAC比较的结果可供固件在任何时候进行检查。现将描述 图4中可见的个别步骤。在步骤410中,系统再次根据图5的流程表中详细可见的过程来检查BLR的完整性。 当BLR经过密码引擎40时,以与检验来自快闪存储器20的其它数据(当系统处于完整 性检査模式时)相同的方式来完成上述步骤。在步骤420中,系统对步骤410中所执行 的完整性检查的结果进行检査。通过对在步骤270中存储的图5中可见的过程200的完 整性检查的结果(旗标或其它指示符)进行检査来完成上述步骤,所述结果指示是否存 在问题。如果BLR不是OK,那么系统将等待主机命令(如步骤430中可见),以使系统 处于称作商品退回授权(RMA)状态的故障分析状态。对于这种和其它操作状态或模式 的更多细节,请査阅Holtzman等人的标题为"SECURE MEMORY CARD WITH LIFE CYCLE PHASES"的第11/053,273号共同待决的美国专利申请案,其全文以引用的方式 并入本文中。然而,如果BLR为OK,那么系统将在步骤440中执行BLR。当引导完成 时,系统将基于BLR本身中所含有的指令而离开完整性检査模式,如图4的步骤440中 可见。BLR包括大量的指令或"步骤"。其中有步骤440a,在步骤440a中,BLR将密码 引擎40重新配置到正常模式,或换句话说,使密码引擎40退出完整性检查模式。BLR还含有指令(如由步骤440b表示),其致使系统检查系统固件200b的完整性。图5是如关于图4所论述的完整性检验过程410的流程图。其说明当系统处于完整 性检查模式时,读取并散列存储在快闪存储器20中的数据的一般过程。虽然出于示范性 目的将描述对"与非"型快闪存储器的读取,但本发明可与用于大容量存储目的的任何 类型的存储器或媒体一起使用。同样,虽然说明并描述了 MAC值的使用,但还可使用其 它散列值。图2B的表通常将包含每个条目(未图示)的对应的开始字节和字节数目。一 般来说,在优选实施例中,使用整个过程来逐页地检验所述"与非"的完整性。所述过 程将检验存储在所述"与非"中的任何数据的完整性。当所述数据碰巧是固件时,检验 固件完整性。虽然这种逐页的比较是优选的,但可进行较小或较大单位的比较。在优选实施例中,完整性检验过程利用独特的计算和控制回路,如图5中所示。所 述回路涉及连续的计算与比较操作。通常,在检验方案中, 一些类型的"正确"或预期 值被预先存储,并与计算出的值进行比较。在具有图5所示的过程的优选实施例中,"正 确"或预期值存储在"被测试的数据"本身内。具体地说,在所描述的优选实施例中, 其位于数据区块的最后128个位中。当读取正确的区段时,正被读取的区段的最后128 个位出于实用目的将只对应于所存储的MAC (或其它散列值) 一次。出于实用目的,可 低估(错误肯定)匹配将出现在非最后页的页上的非常小的可能性。在步骤210中,读取"与非"区块(/)。接下来在步骤215中,用ECC电路对所述 区块进行检查并视情况进行校正。ECC是众所周知的,且可用来校正数据中的实际错误。 虽然使用结合完整性检验过程的ECC是优选的,但这并不是必需的,且在包含或不包含 步骤215的情况下检验完整性。在步骤220中,计算散列值(在优选实施例中,优选是 MAC值)。尽管计算区块(i)的MAC,但在完整性检验过程410中,所得的MAC涵盖区 块0到(i),且在数学上可表达为MAC [O...(i)] = MAC[MAC
, block(i)在步骤220中的计算之后,在步骤260中执行比较。在步骤260中,控制器的应将 (特别是FWIC31)将区块(i)的最后128位与先前存储的MAC (即,MAC [O.. .(i-l)])进 行比较。在步骤270中,将比较的结果存储在系统的存储器中。当首次执行步骤260的 比较时,MAC寄存器中的"所存储"值实际上不会是适当的所存储MAC值,而将是碰 巧在寄存器中的任何值,且因此可被视为随机。接着,将在步骤270中存储比较的结果。 对于第一区块,比较将不会被检査。在步骤230中,步骤220中计算出的MAC值将存储在控制器的寄存器中,优选存储在FWIC31的寄存器中。接下来在步骤235中,计数器 将递增,使得(i)的值递增l,且将再次在步骤210中读取下一个区块。所述回路将继续, 直到所有区块(i)都被读取为止。当最后一个区块被读取,且因此由加密引擎处理时,如 果最后128个位与步骤230中所存储的MAC匹配,那么所述比较将产生匹配,且步骤 270中所存储的结果将反映出已由硬件检验出完整性。只有在BLR的最后一页已经被读 取时,才会使用匹配来指示已经检验出完整性。所有先前的匹配(错误真值)将被忽略。 如果所述值不同,那么这将指示数据的完整性存在问题。相反,如果所述值相同,那么 确保数据的完整性。在匹配已经出现之后,将再次在步骤230中更新MAC值,但这是所述回路的冗余操 作,其不具有任何作用。这种连续的计算过程允许硬件检验未定义的内容大小。换句话说,硬件可在不必首先确定区块的数目或区块所包括的文件的大小的情况下,适当地计 算MAC值并检验其完整性。针对驻存在存储卡的快闪存储器20中的任何数据,在一定的操作状态或模式(尤其 是完整性检査模式)下使用上文所述的过程。在根据本发明的存储卡的优选实施例中, 所述数据中的一些是在执行时运行存储器卡的固件。具体地说,在系统10加电时,当系 统处于其常规操作状态或测试状态时,加密引擎40本身进行初始化(通过在完整性检查 模式下开始),以检验任何传入数据的完整性。当数据碰巧是固件时,在固件传递通过 BMU 14且尤其是加密引擎40时,固件的完整性得以检验。所存储的结果(不是完整性 本身)可由软件检査,所述软件在一个实施例中涉及存储在ROM 13中的代码中的指令。 应注意,尽管存储在ROM 13中的代码对结果进行检査,且可起始数据的流动,但其不 包括在对快闪存储器中的固件的完整性进行检验的过程中。换句话说,所述代码不负责 执行所述固件的任何数值计算或数据操作以便对其进行检验。是控制器12或BMU14、 FWIC31和加密引擎40的硬件对固件(包含引导载入程序(BLR)部分和在一些实施例 中固件的其它部分)的完整性进行检验。图5中所描述的过程涉及硬件(HW)和固件(FW)两者。如所提及,硬件实行完 整性检査,而固件只是对HW完整性检査结束时所设置的旗标进行检査。分别在图6和 图7中更详细地展示HW和SW功能或"回路"。参看图6,在步骤320中对系统加电。在步骤322中,控制器硬件起始FW完整性模 式。这包括两个主要行为。第一个行为是激活图1的FWIC 31。 FWIC 31 —旦被激活, 就将配合图6的其余步骤,且从而对固件的BLR部分以及加密引擎40的完整性进行检査。第二个行为涉及选择密码学算法以供加密引擎40使用。如先前所提及,加密引擎 40的硬件经配置以用各种不同算法对数据进行加密和解密。在步骤328中,控制器硬件计算传入区块的摘要。此计算由加密引擎40执行。接下 来,在步骤330中,将步骤328中计算出的摘要与先前摘要的值进行比较。如早先所论 述,将在所述回路的每一迭代中检查并比较保存所述值的寄存器,但在第一迭代时,所 述寄存器中的值将是随机的。接着,在步骤332中设置指示完整性的旗标。此旗标将由 系统的固件进行检査,以便确认HW已经检验出固件的BLR部分的完整性。图7说明图6中当HW检查完整性时所发生的固件回路。在系统在步骤320中被加 电之后,在步骤340中,CPU经初始化。接着,在步骤342中,从第一有效页读取配置 数据(在优选实施例中,其为图3的FID 1)。接下来,在步骤344中,系统提取BLR 201A 的开始和结束页。 一旦这是已知的,就读取所有的BLR页。当读取每个页时,产生误差 校正码(ECC)。如先前所提及,ECC电路操作是众所周知的,且可用来校正数据中的实 际错误,至多达某一限制。虽然使用结合完整性检验过程的ECC是优选的,但这并不是 必需的,且在使用或不使用ECC的情况下检验完整性。在页被读取之后,在步骤348中 用ECC电路对所述页进行检查,且如果不是OK,那么在步骤352中,将用ECC校正机 制来校正所述页,或检索替代页。如果在步骤354中确定经校正的或新的页为OK,那么 在步骤350中,系统将进行检査,看是否存在更多要读取的页。如果是这种情况,那么 系统将返回到步骤346,并读取另一页。如果步骤354指示在步骤354中经校正的或替 代的复制不是OK,那么在步骤356中,将指示故障情况。如果步骤350中确定不存在更 多页,且不指示故障,那么在步骤360中,系统将检查完整性旗标(其由硬件设置,如 图6中可见)。如果在步骤360中,旗标指示BLR为OK,如由HW检验那样,那么在步 骤362中,将执行BLR。此执行与图4的步骤440中所描绘的相同。虽然只针对固件的一部分(即BLR)执行此完整性检査,但应了解,也可以此方式 检査所有固件,且此阐释涉及采用固件引导程序的优选实施例。另外,如本申请案中所 使用,术语存储卡意在还包含USB快闪驱动器之类的结构因子。尽管已相对于本发明的示范性实施例描述了本发明的各个方面,但将了解,本发明 在所附权利要求书的整个范围内受到保护。
权利要求
1.一种存储卡,其包括快闪存储器单元;控制器,其具有加密硬件;随机存取存储器;以及存储在所述快闪存储器中的固件,其控制将数据写入所述快闪存储器单元和从所述快闪存储器单元读取数据;其中,当将所述固件上载到所述随机存取存储器时,用由所述控制器加密硬件计算出的加密值检验所述固件的完整性。
2. 根据权利要求1所述的存储卡,其中所述存储卡进一步包括用于对初始引导过程结 束时的旗标进行检査的指令,其中所述旗标指示已检验所述固件完整性。
3. 根据权利要求1所述的存储卡,其中当将所述固件上载到所述随机存取存储器时, 用计算出的散列值检验所述固件的完整性。
4. 根据权利要求1所述的存储卡,其中检验所述固件的完整性包括将MAC值应用于 所述固件。
5. 根据权利要求1所述的存储卡,其中所述快闪存储器单元是"与非"类,且其中计 算"与非"页群组的中间MAC值。
6. 根据权利要求5所述的存储卡,其中检验完整性进一步包括将所述页群组的所述 MAC值与存储在另一页或页群组中的MAC值进行比较。
7. 根据权利要求1所述的存储卡,其中所述固件包括引导载入程序部分和主要部分。
8. 根据权利要求7所述的存储卡,其中当将系统级固件上载到所述随机存取存储器时, 用由所述控制器加密硬件计算出的加密值来检验所述引导载入程序部分的完整性。
9. 根据权利要求1所述的存储卡,其中所述控制器包括固件完整性电路,其管理所述固件的完整性检查。
10. 根据权利要求1所述的存储卡,其中检验所述固件的完整性包括将SHA-1值应用于 所述固件。
11. 一种便携式快闪存储器存储装置,其包括快闪存储器;驻存在所述快闪存储器中的数据, 其中所述数据包括用户文件和固件,且 其中所述数据的一部分可以经加密的格式存储;以及密码引擎,其执行数据操纵,所述数据操纵包括对正路由到所述快闪存储器的数 据进行加密和对来自所述快闪存储器的数据进行解密,其中所述密码引擎数据操纵还用来检验所述固件的完整性。
12. —种大容量存储装置,其包括快闪存储器;一组指令,其控制所述大容量存储装置的数据存储和检索操作,所述第一组存储 在所述快闪存储器中;以及加密引擎,其在所述大容量存储装置的硬件电路中实施,所述加密引擎对存储在 所述快闪存储器中以及从所述快闪存储器读取的数据进行加密和解密,所述加密引擎可操作以检验所述组指令的完整性。
13. 根据权利要求12所述的大容量存储装置,其中所述组指令不包括检验所述指令的 至少一部分的完整性的指令。
14. 根据权利要求12所述的大容量存储装置,其中所述组指令包括用于检查指示符的 状态的指令,所述指示符指示是否已检验所述组指令的完整性。
15. —种大容量存储装置,其包括快闪存储器;用于控制所述大容量存储装置的数据存储操作的构件;用于对数据进行加密和解密的构件;以及用于用所述用于对数据进行加密和解密的构件来检验所述用于控制数据存储操 作的构件的完整性的构件。
16. —种存储卡,其包括大容量存储媒体,其包括快闪存储器;只读存储器;固件;驻存在所述只读存储器中的代码;以及密码引擎,其屮所述密码引擎用于检验所述固件的完整性。
17. 根据权利要求16所述的存储卡,其中所述只读存储器和所述驻存在所述只读存储 器中的代码不用于检验所述固件的至少一部分的完整性。
18. 根据权利要求17所述的存储卡,其中所述固件的不由所述只读存储器检验的一部 分包括引导载入程序。
19. 根据权利要求16所述的存储卡,其中所述代码包括将所述固件的引导载入程序部 分加载到随机存取存储器中的指令。
20. 根据权利要求17所述的存储卡,其中所述代码包括对硬件旗标进行检査的指令, 其中所述硬件旗标指示已使用所述密码引擎检验所述固件的引导载入程序部分的 完整性。
21. —种用于启始存储器存储装置的操作的方法,其包括在所述装置的大容量存储单元中提供固件; 传递所述固件通过加密引擎; 用所述加密引擎计算所述固件的散列值; 将所述计算出的散列值与所存储的散列值进行比较 如果所述计算出的散列值与所述存储的散列值匹配
22. 一种用于启始存储器存储装置的操作的方法,其包括;以及,那么执行所述固件。在所述装置的大容量存储单元中提供固件;在只读存储器中执行第一组指令,其将所述固件从所述大容量存储单元复制到随 机存取存储器;使用加密引擎检验所述固件的完整性;以及在检验了完整性之后,用微处理器从随机存取存储器中执行所述固件。
23. 根据权利要求22所述的方法,其中所述固件含有从所述大容量存储单元获取额外 固件的指令。
24. 根据权利要求23所述的方法,其中所述方法进 -步包括执行所述额外固件。
全文摘要
一种存储器系统包括在控制器的硬件中实施的加密引擎。在启动所述存储器系统的过程中,实施引导程序机制,其中固件的第一部分在被执行时引入固件的将要执行的另一部分。所述加密引擎的硬件用于检验所述固件的至少所述第一部分的完整性。因此,将只执行既定用以运行所述系统的固件。
文档编号G06F21/00GK101263501SQ200680033798
公开日2008年9月10日 申请日期2006年9月13日 优先权日2005年9月14日
发明者尼夫·科亨, 罗恩·巴尔齐莱, 迈克尔·霍尔茨曼, 鲁文·埃尔哈米亚斯 申请人:桑迪士克股份有限公司