CN102142070B - 存储卡控制器固件的硬件驱动器完整性检查 - Google Patents

存储卡控制器固件的硬件驱动器完整性检查 Download PDF

Info

Publication number
CN102142070B
CN102142070B CN2011100593111A CN201110059311A CN102142070B CN 102142070 B CN102142070 B CN 102142070B CN 2011100593111 A CN2011100593111 A CN 2011100593111A CN 201110059311 A CN201110059311 A CN 201110059311A CN 102142070 B CN102142070 B CN 102142070B
Authority
CN
China
Prior art keywords
firmware
mac
value
block
hashed value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2011100593111A
Other languages
English (en)
Other versions
CN102142070A (zh
Inventor
迈克尔·霍尔茨曼
罗恩·巴尔齐莱
鲁文·埃尔哈米亚斯
尼夫·科亨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/284,623 external-priority patent/US7536540B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN102142070A publication Critical patent/CN102142070A/zh
Application granted granted Critical
Publication of CN102142070B publication Critical patent/CN102142070B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种存储器系统包括在控制器的硬件中实施的加密引擎。在启动所述存储器系统的过程中,实施引导程序机制,其中固件的第一部分在被执行时引入固件的将要执行的另一部分。所述加密引擎的硬件用于检验所述固件的至少所述第一部分的完整性。因此,将只执行既定用以运行所述系统的固件。

Description

存储卡控制器固件的硬件驱动器完整性检查
分案申请的相关信息
本案是一件分案申请。本案的母案是国际申请号为PCT/US2006/035840、申请日为2006年9月13日、PCT申请进入中国国家阶段后申请号为200680033798.3、发明名称为“存储卡控制器固件的硬件驱动器完整性检查”的发明专利申请案。
技术领域
本发明大体上涉及具有安全内容的存储卡和所述内容的加密,且具体涉及运行安全存储卡的固件的完整性的检验。
背景技术
至关重要的是能够在商业上可购得的存储卡离开工厂之前对其功能性进行检验,且确保所述卡一旦离开工厂就没有受黑客袭击的危险。随着数字版权管理的出现和受保护内容(例如音乐和电影等)的传播,需要确保卡的内容不能被随意复制。黑客可能试图这样做的一种方式是更改或甚至替换运行存储卡的固件,以便能够非法翻印卡的内容。因此,必需提供一种系统,其一直确保在卡上运行的固件的完整性和可靠性两者。
发明内容
检验固件的完整性是运行安全且可靠的存储卡的一个重要方面。本发明检验运行存储卡、通用串行总线(USB)快闪驱动器或其它存储器系统的固件的完整性。在固件被执行之间检验固件的完整性。这防止执行非工厂固件的固件。此特别重要之处在于,工厂固件包括安全机制,其包含意在保护内容不被随意复制的加密算法。本发明在存储卡中实施时,防止所述卡运行可能允许复制安全内容的非工厂固件或经更改的工厂固件。因此,黑客不能“诱使”所述卡运行错误的固件。所述检验过程还可用来检验任何所存储数据的完整性。
本发明的一个方面涉及一种用于启动存储器存储装置的操作的方法,其包括在装置的大容量存储单元中提供固件,使所述固件通过加密引擎,用所述加密引擎计算固件的散列值,将计算出的散列值与所存储的散列值进行比较,且如果计算出的散列值与所存储的散列值匹配,那么执行所述固件。
本发明的另一方面涉及大容量存储装置,其包括:快闪存储器;只读存储器;第一组指令,其控制所述大容量存储装置的数据存储操作,所述第一组存储在快闪存储器中;第二组指令,其将第一组指令从闪存投影到可执行的随机存取存储器,所述第二组驻存在只读存储器中。加密引擎在大容量存储装置的硬件电路中实施,且能够对将要存储在快闪存储器中和从快闪存储器读取的数据进行加密和解密。加密引擎可操作以检验第一组指令的完整性。
本发明的又一方面涉及另一种用于启动存储器存储装置的操作的方法。所述方法包括:在装置的大容最存储单元中提供固件;以及在只读存储器中执行第一组指令,其将固件从大容量存储单元复制到随机存取存储器。所述方法还包括使用加密引擎来检验引导固件的完整性,且在完整性被检验之后,用微处理器执行来自随机存取存储器的固件。
本发明的额外方面、优势和特征包含在本发明的示范性实例的以下描述内容中,所述描述内容应结合附图考虑,且其中在图中始终使用相同标号来描述相同特征,除非另有指示。本文所参考的所有专利、专利申请案、文章和其它出版物的全文出于所有目的以引用的方式并入本文中。
附图说明
图1A是根据本发明实施例的系统10的示意图。
图1B是根据本发明另一实施例的系统10的示意图。
图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使用由比利时的JoanDaemen和Vincent Rijmen开发的Rijndael算法。可在一遍而不是三遍中对AES进行加密,且其密钥大小大于三重DES的168个位。
安全散列算法(SHA-1)产生20字节输出。NIST和NSA将其设计为与数字签名标准一起使用,且其现在被广泛使用。MD5是可与本发明一起使用的另一散列函数。前面提及的标准和各种其它算法是可与本发明一起利用的散列函数和值的说明性实例。如今可用且将来会开发的其它类型的散列函数和值可与本发明一起利用。
尽管前面提及的标准和各种其它算法和/或标准是密码学领域的技术人员众所周知的,但以下出版物是提供信息的,且全文以引用的方式并入本文中:RFC 3566-TheAES-XCBC-MAC-96Algorithm and Its Use With IPsec,Sheila Frankel,NIST-NationalInstitute of Standards and Technology,Gaithersburg,West Diamond路820号,677室,MD 20899,详见http://www.faqs.org/rfcs/rfc3566.html;Performance Comparison of MessageAuthentication Code(MAC)Algorithms for the Internet Protocol Security (IPSEC),JanakaDeepakumara、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;以及Comments to NISTconcerning AES Modes of Operations:A Suggestion for Handling Arbitrary-Length Messageswith the CBC MAC,University of Nevada,Reno,Phillip Rogaway,University of California atDavis,详见http://csrc.nist.gov/CryptoToolkit/modes/proposedmodes/xcbc-mac/ xcbc-mac-spec.pdf
存储器系统结构
图1A的框图说明可实施本发明的各个方面的示范性存储器系统。如图1A所示,存储器系统10包含中央处理单元(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)来与CPU12通信。在一个实施例中,系统10的在虚线框内的所有组件可被封围在单个单元中,例如封围在存储卡中,且优选封围在所述卡中。
缓冲管理单元14包括主机直接存储器存取单元(HDMA)32、快闪直接存储器存取单元(FDMA)34、仲裁器36、CPU总线仲裁器35、寄存器33、固件完整性电路(FWIC)31、缓冲随机存取存储器(BRAM)38和密码引擎40(也被称为加密引擎40)。仲裁器36是共享总线仲裁器,使得任何时候都只有一个主装置或起始器(其可以是HDMA 32、FDMA 34或CPU 12)可活动,且从属装置或目标是BRAM 38。仲裁器负责将适当的起始器请求引导到BRAM 38。HDMA 32和FDMA 34负责在HIM 16、FIM 18和BRAM 38或RAM 11之间输送的数据。CPU总线仲裁器35允许数据经由系统总线15直接从密码引擎40和快闪DMA 34传送到RAM 11,系统总线15在某些情况下使用,例如当需要绕过密码引擎时。HDMA 32和FDMA 34的操作是常规的,且不需要在本文中详细描述。使用BRAM 38来存储主机装置24与快闪存储器20之间传递的数据。HDMA 32和FDMA34负责在HIM 16/FIM 18与BRAM 38或CPU RAM 12a之间传递数据,且负责指示区段完成。
当来自快闪存储器20的数据由主机装置24读取时,通过总线28、FIM 18、FDMA 34和密码引擎40来获取存储器20中的经加密数据,其中经加密数据被解密并存储在BRAM38中。接着,经解密数据从BRAM 38通过HDMA 32、HIM 16和总线26发送到主机装置24。从BRAM 38获取的数据在被传递到HDMA 32之前,可再次借助密码引擎40进行加密,使得发送到主机装置24的数据再次被加密,但所借助的密钥和/或算法与存储在存储器20中的数据借以加密的密钥和/或算法不同。或者,不是在上文所述的过程中将经解密的数据存储在BRAM 38中(所述数据可能变得易于遭受未经授权的存取),而是在将来自存储器20的数据发送到BRAM 38之前可对其进行解密并再次由密码引擎40加密。接着,像之前那样,将BRAM 38中的经加密数据发送到主机装置24。这说明读取过程期间的数据流。
当数据由主机装置24写入到存储器20时,数据流的方向颠倒。举例来说,如果未经加密的数据由主机装置发送,通过总线26、HIM 16、HDMA 32,到达密码引擎40,那么所述数据可在存储在BRAM 38中之前由引擎40加密。或者,未经加密的数据可存储在BRAM 38中。接着,在数据被发送到FDMA 34之前在其去往存储器20的途中,对所述数据进行加密。
图1B说明系统10的另一实施例。在此优选实施例中,将加密引擎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-1值,但在没有密钥的情况下不能重新生成MAC值,且因此提供更稳固的安全性。具体地说,因为必须使用存储在加密引擎40的非易失性存储器中的密钥99来生成MAC值,所以不能利用另一处理器来重新生成MAC值。举例来说,黑客不能使用系统外部的另一处理器来复制固件和相关联的MAC值。
各种用户数据文件204也存储在快闪存储器内。未图示的各种其它程序和数据可存储在快闪存储器(未图示)内。也可以类似或其它方式对这些文件进行加密并检验其完整性。
图3说明处于完整性检查模式时系统10所利用的一些数据区段的结构。BLR尤其优选利用此结构。可看出,BLR代码307本身夹在其它数据之间,以组成BLR 201a。在加载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 LIFECYCLE 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中,读取“与非”区块(i)。接下来在步骤215中,用ECC电路对所述区块进行检查并视情况进行校正。ECC是众所周知的,且可用来校正数据中的实际错误。虽然使用结合完整性检验过程的ECC是优选的,但这并不是必需的,且在包含或不包含步骤215的情况下检验完整性。在步骤220中,计算散列值(在优选实施例中,优选是MAC值)。尽管计算区块(i)的MAC,但在完整性检验过程410中,所得的MAC涵盖区块0到(i),且在数学上可表达为:
MAC[0...(i)]=MAC[MAC[0...(i-1)],block(i)]
在步骤220中的计算之后,在步骤260中执行比较。在步骤260中,控制器的应将(特别是FWIC 31)将区块(i)的最后128位与先前存储的MAC(即,MAC[0...(i-1)])进行比较。在步骤270中,将比较的结果存储在系统的存储器中。当首次执行步骤260的比较时,MAC寄存器中的“所存储”值实际上不会是适当的所存储MAC值,而将是碰巧在寄存器中的任何值,且因此可被视为随机。接着,将在步骤270中存储比较的结果。对于第一区块,比较将不会被检查。在步骤230中,步骤220中计算出的MAC值将存储在控制器的寄存器中,优选存储在FWIC 31的寄存器中。接下来在步骤235中,计数器将递增,使得(i)的值递增1,且将再次在步骤210中读取下一个区块。所述回路将继续,直到所有区块(i)都被读取为止。当最后一个区块被读取,且因此由加密引擎处理时,如果最后128个位与步骤230中所存储的MAC匹配,那么所述比较将产生匹配,且步骤270中所存储的结果将反映出已由硬件检验出完整性。只有在BLR的最后一页已经被读取时,才会使用匹配来指示已经检验出完整性。所有先前的匹配(错误真值)将被忽略。如果所述值不同,那么这将指示数据的完整性存在问题。相反,如果所述值相同,那么确保数据的完整性。
在匹配已经出现之后,将再次在步骤230中更新MAC值,但这是所述回路的冗余操作,其不具有任何作用。这种连续的计算过程允许硬件检验未定义的内容大小。换句话说,硬件可在不必首先确定区块的数目或区块所包括的文件的大小的情况下,适当地计算MAC值并检验其完整性。
针对驻存在存储卡的快闪存储器20中的任何数据,在一定的操作状态或模式(尤其是完整性检查模式)下使用上文所述的过程。在根据本发明的存储卡的优选实施例中,所述数据中的一些是在执行时运行存储器卡的固件。具体地说,在系统10加电时,当系统处于其常规操作状态或测试状态时,加密引擎40本身进行初始化(通过在完整性检查模式下开始),以检验任何传入数据的完整性。当数据碰巧是固件时,在固件传递通过BMU 14且尤其是加密引擎40时,固件的完整性得以检验。所存储的结果(不是完整性本身)可由软件检查,所述软件在一个实施例中涉及存储在ROM 13中的代码中的指令。应注意,尽管存储在ROM 13中的代码对结果进行检查,且可起始数据的流动,但其不包括在对快闪存储器中的固件的完整性进行检验的过程中。换句话说,所述代码不负责执行所述固件的任何数值计算或数据操作以便对其进行检验。是控制器12或BMU 14、FWIC 31和加密引擎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快闪驱动器之类的结构因子。
尽管已相对于本发明的示范性实施例描述了本发明的各个方面,但将了解,本发明在所附权利要求书的整个范围内受到保护。

Claims (13)

1.一种用于启始操作以及操作存储器存储装置的方法,其包括:
在所述存储器存储装置的大容量存储单元中提供所述存储器存储装置的固件;
传递所述固件通过所述存储器存储装置的硬件实施的加密引擎;
用所述硬件实施的加密引擎计算所述固件的散列值;
将所计算出的散列值与所存储的散列值进行比较;以及
如果所述计算出的散列值与所述存储的散列值匹配,那么执行所述固件;
其中所述固件包括引导载入程序和系统固件。
2.根据权利要求1所述的方法,其中提供所述固件包括提供复数个固件覆盖。
3.根据权利要求2所述的方法,其进一步包括在所述复数个覆盖的每一者中存储一散列值,所述散列值预期等于包含含有所述散列的覆盖的固件的量的所计算出的散列值。
4.根据权利要求3所述的方法,其中当读取含有预期散列值的区段时,读取的所述量的所述计算出的散列值将仅对应于所述预期散列值。
5.根据权利要求3所述的方法,其进一步包括忽略在不同于包含所述预期散列值的区段区块或者页的区段区块或者页上的错误肯定匹配。
6.根据权利要求1所述的方法,其中计算散列值包括计算区块(i)的MAC值,但其中所得的MAC值覆盖区块0到(i),以致于MAC[0...(i)]=MAC[MAC[0...(i-l)],区块(i)]。
7.根据权利要求6所述的方法,其进一步包括将计算出的区块(i)的MAC值存储在所述存储器存储装置的存储器控制器中的寄存器中,所述寄存器不在所述大容量存储单元中。
8.根据权利要求6所述的方法,其中计算区块(i)的散列值,其中所得的MAC值覆盖区块0到(i),以致于针对所述固件的引导载入程序实施MAC[0...(i)]=MAC[MAC[0...(i-l)],区块(i)]。
9.根据权利要求6所述的方法,其中计算区块(i)的散列值,其中所得的MAC值覆盖区块0到(i),以致于针对所述固件的所述引导载入程序而并非整个所述固件实施MAC[0...(i)]=MAC[MAC[0...(i-l)],区块(i)]。
10.根据权利要求6所述的方法,其中计算区块(i)的散列值,其中所得的MAC值覆盖区块0到(i),以致于针对整个所述固件实施MAC[0...(i)]=MAC[MAC[0...(i-l)],区块(i)]。
11.一种用于启始存储器存储装置的操作的方法,其包括:
在所述存储器存储装置的大容量存储单元中提供固件,所述固件控制所述存储器存储装置的操作;
在只读存储器中执行第一组指令,其将所述固件从所述存储器存储装置的所述大容量存储单元复制到所述存储器存储装置的随机存取存储器;
在所述固件从所述大容量存储单元传递通过在所述存储器存储装置的存储器控制器中的硬件实施的加密引擎时,检验所述固件的完整性;以及
在检验了完整性之后,用微处理器从随机存取存储器中执行所述固件;
其中所述固件包括引导载入程序和系统固件。
12.根据权利要求11所述的方法,其中所述固件含有从所述大容量存储单元获取额外固件的指令。
13.根据权利要求12所述的方法,其中所述方法进一步包括执行所述额外固件。
CN2011100593111A 2005-09-14 2006-09-13 存储卡控制器固件的硬件驱动器完整性检查 Expired - Fee Related CN102142070B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US71734705P 2005-09-14 2005-09-14
US60/717,347 2005-09-14
US11/284,623 US7536540B2 (en) 2005-09-14 2005-11-21 Method of hardware driver integrity check of memory card controller firmware
US11/285,600 2005-11-21
US11/284,623 2005-11-21
US11/285,600 US8966284B2 (en) 2005-09-14 2005-11-21 Hardware driver integrity check of memory card controller firmware

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200680033798.3A Division CN101263501B (zh) 2005-09-14 2006-09-13 存储卡控制器固件的硬件驱动器完整性检查

Publications (2)

Publication Number Publication Date
CN102142070A CN102142070A (zh) 2011-08-03
CN102142070B true CN102142070B (zh) 2013-11-06

Family

ID=37597492

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100593111A Expired - Fee Related CN102142070B (zh) 2005-09-14 2006-09-13 存储卡控制器固件的硬件驱动器完整性检查

Country Status (5)

Country Link
EP (2) EP2320345A3 (zh)
JP (2) JP5089593B2 (zh)
KR (1) KR100973733B1 (zh)
CN (1) CN102142070B (zh)
WO (1) WO2007033322A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743409B2 (en) 2005-07-08 2010-06-22 Sandisk Corporation Methods used in a mass storage device with automated credentials loading
JP2014191372A (ja) * 2013-03-26 2014-10-06 Mega Chips Corp 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム
WO2016071743A1 (en) * 2014-11-07 2016-05-12 Elliptic Technologies Inc. Integrity protection for data storage
CN104809398A (zh) * 2015-04-21 2015-07-29 深圳怡化电脑股份有限公司 密码键盘引导程序固件防篡改方法及装置
KR101795457B1 (ko) * 2016-09-27 2017-11-10 시큐리티플랫폼 주식회사 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
KR101887974B1 (ko) 2016-12-01 2018-08-13 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
KR102089435B1 (ko) * 2018-04-11 2020-03-16 고려대학교 세종산학협력단 안전한 usb 장치를 보장하는 부트 방법
KR102545102B1 (ko) * 2018-05-15 2023-06-19 현대자동차주식회사 차량용 제어기 및 그 업데이트 방법
KR102286794B1 (ko) * 2018-08-16 2021-08-06 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
JP6808793B1 (ja) * 2019-09-20 2021-01-06 レノボ・シンガポール・プライベート・リミテッド 情報処理装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH039427A (ja) * 1989-06-07 1991-01-17 Koufu Nippon Denki Kk マイクロプログラム制御装置
US5327305A (en) 1992-08-14 1994-07-05 Conner Peripherals, Inc. Tape format detection system
US6708274B2 (en) * 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
JP3219064B2 (ja) * 1998-12-28 2001-10-15 インターナショナル・ビジネス・マシーンズ・コーポレーション デジタルデータ認証システム
US6988250B1 (en) * 1999-02-15 2006-01-17 Hewlett-Packard Development Company, L.P. Trusted computing platform using a trusted device assembly
AUPQ321699A0 (en) * 1999-09-30 1999-10-28 Aristocrat Leisure Industries Pty Ltd Gaming security system
US20030041242A1 (en) * 2001-05-11 2003-02-27 Sarver Patel Message authentication system and method
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US20040025027A1 (en) * 2002-07-30 2004-02-05 Eric Balard Secure protection method for access to protected resources in a processor
US7082525B2 (en) * 2002-10-02 2006-07-25 Sandisk Corporation Booting from non-linear memory
US7246266B2 (en) * 2002-11-21 2007-07-17 Chris Sneed Method and apparatus for firmware restoration in modems
JP4467246B2 (ja) * 2003-03-13 2010-05-26 パナソニック株式会社 メモリカード
US8041957B2 (en) * 2003-04-08 2011-10-18 Qualcomm Incorporated Associating software with hardware using cryptography
US7491122B2 (en) * 2003-07-09 2009-02-17 Wms Gaming Inc. Gaming machine having targeted run-time software authentication
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US20050190393A1 (en) * 2004-02-27 2005-09-01 Agilent Technologies, Inc. Programmable controller system and method for supporting various operational modes in peripheral devices

Also Published As

Publication number Publication date
JP2011210278A (ja) 2011-10-20
WO2007033322A2 (en) 2007-03-22
EP1934880A2 (en) 2008-06-25
WO2007033322A3 (en) 2007-05-10
CN102142070A (zh) 2011-08-03
KR20080045708A (ko) 2008-05-23
JP5411896B2 (ja) 2014-02-12
KR100973733B1 (ko) 2010-08-04
JP5089593B2 (ja) 2012-12-05
EP2320345A2 (en) 2011-05-11
EP2320345A3 (en) 2011-08-10
JP2009508272A (ja) 2009-02-26

Similar Documents

Publication Publication Date Title
CN101263501B (zh) 存储卡控制器固件的硬件驱动器完整性检查
CN102142070B (zh) 存储卡控制器固件的硬件驱动器完整性检查
CN102419804B (zh) 具有冗余安全性的可靠的软件产品验证和激活
US11151241B2 (en) Validation of software residing on remote computing devices
EP2831800B1 (en) Method for protecting data
EP1835405A2 (en) Method and apparatus for testing execution flow of program
CN112907375B (zh) 数据处理方法、装置、计算机设备和存储介质
US9251098B2 (en) Apparatus and method for accessing an encrypted memory portion
CN111597558B (zh) 一种基于文件多镜像的嵌入式操作系统可信引导方法及系统
US8407479B2 (en) Data authentication and tamper detection
US20050289409A1 (en) Parallel data bus
CN102855439A (zh) 一种执行文件自校验方法及装置
EP0962850A2 (en) A method for protecting embedded system software and embedded system
JP2007066021A (ja) 外部データ改ざん検出装置、および外部データ改ざん検出方法
US9213864B2 (en) Data processing apparatus and validity verification method
Beri et al. Dynamic software component authentication for autonomous systems using slack space
CN107292172B (zh) 用于相对于参考计算机文件自动验证目标计算机文件的方法
CN114095175B (zh) 一种可灰度校验的数据保密方法、装置及存储介质
CA2900137A1 (en) Tamper-evident data store method and system, and device configured
CN117786173A (zh) 显卡防伪方法、系统及存储介质
KR20230144611A (ko) 보안 암호화 코프로세서
CN117610004A (zh) 固件校验方法、系统启动方法、装置、系统、设备及介质
Cryptographic FIPS 140-2 Security Policy for INTEGRITY Security Services High Assurance Embedded Cryptographic Toolkit Module Version 1.0. 5
CN1952948A (zh) 程序代码确认系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SANDISK TECHNOLOGIES, INC.

Free format text: FORMER OWNER: SANDISK CORPORATION

Effective date: 20121127

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20121127

Address after: Texas, USA

Applicant after: Sandy Technology Corp.

Address before: California, USA

Applicant before: Sandisk Corp.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: Texas, USA

Patentee after: SANDISK TECHNOLOGIES LLC

Address before: Texas, USA

Patentee before: Sandy Technology Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131106

Termination date: 20210913