專利名稱:存儲卡控制器固件的硬件驅動器完整性檢查的制作方法
技術領域:
本發(fā)明大體上涉及具有安全內容的存儲卡和所述內容的加密,且具體涉及運行安全 存儲卡的固件的完整性的檢驗。
背景技術:
至關重要的是能夠在商業(yè)上可購得的存儲卡離開工廠之前對其功能性進行檢驗,且 確保所述卡一旦離開工廠就沒有受黑客襲擊的危險。隨著數字版權管理的出現和受保護 內容(例如音樂和電影等)的傳播,需要確??ǖ膬热莶荒鼙浑S意復制。黑客可能試圖 這樣做的一種方式是更改或甚至替換運行存儲卡的固件,以便能夠非法翻印卡的內容。 因此,必需提供一種系統(tǒng),其一直確保在卡上運行的固件的完整性和可靠性兩者。發(fā)明內容檢驗固件的完整性是運行安全且可靠的存儲卡的一個重要方面。本發(fā)明檢驗運行存 儲卡、通用串行總線(USB)快閃驅動器或其它存儲器系統(tǒng)的固件的完整性。在固件被 執(zhí)行之間檢驗固件的完整性。這防止執(zhí)行非工廠固件的固件。此特別重要之處在于,工 廠固件包括安全機制,其包含意在保護內容不被隨意復制的加密算法。本發(fā)明在存儲卡 中實施時,防止所述卡運行可能允許復制安全內容的非工廠固件或經更改的工廠固件。 因此,黑客不能"誘使"所述卡運行錯誤的固件。所述檢驗過程還可用來檢驗任何所存 儲數據的完整性。本發(fā)明的一個方面涉及一種用于啟動存儲器存儲裝置的操作的方法,其包括在裝置 的大容量存儲單元中提供固件,使所述固件通過加密引擎,用所述加密引擎計算固件的 散列值,將計算出的散列值與所存儲的散列值進行比較,且如果計算出的散列值與所存 儲的散列值匹配,那么執(zhí)行所述固件。本發(fā)明的另一方面涉及大容量存儲裝置,其包括快閃存儲器;只讀存儲器;第一 組指令,其控制所述大容量存儲裝置的數據存儲操作,所述第一組存儲在快閃存儲器中; 第二組指令,其將第一組指令從閃存投影到可執(zhí)行的隨機存取存儲器,所述第二組駐存 在只讀存儲器中。加密引擎在大容量存儲裝置的硬件電路中實施,且能夠對將要存儲在快閃存儲器中和從快閃存儲器讀取的數據進行加密和解密。加密引擎可操作以檢驗第一 組指令的完整性。本發(fā)明的又一方面涉及另一種用于啟動存儲器存儲裝置的操作的方法。所述方法包 括在裝置的大容量存儲單元中提供固件;以及在只讀存儲器中執(zhí)行第一組指令,其將 固件從大容量存儲單元復制到隨機存取存儲器。所述方法還包括使用加密引擎來檢驗引 導固件的完整性,且在完整性被檢驗之后,用微處理器執(zhí)行來自隨機存取存儲器的固件。本發(fā)明的額外方面、優(yōu)勢和特征包含在本發(fā)明的示范性實例的以下描述內容中,所 述描述內容應結合附圖考慮,且其中在圖中始終使用相同標號來描述相同特征,除非另 有指示。本文所參考的所有專利、專利申請案、文章和其它出版物的全文出于所有目的 以引用的方式并入本文中。
圖1A是根據本發(fā)明實施例的系統(tǒng)IO的示意圖。 圖1B是根據本發(fā)明另一實施例的系統(tǒng)IO的示意圖。 圖2是圖1中所示的快閃存儲器的存儲器空間的圖。 圖3是引導載入程序200a的示意性說明。圖4是包含對固件的基于硬件的完整性檢查的引導過程的一部分的流程圖。 圖5是圖4的完整性檢驗過程410的流程圖。 圖6是引導期間硬件回路的流程圖。 圖7是引導期間固件回路的流程圖。
具體實施方式
消息認證碼("MAC")是從一些內容(或消息)計算出的用于證實內容的完整性的 編號。其目的是檢測內容是否已經被更改。消息認證碼是從消息和一些機密數據計算出 的散列(hash)。在不知道機密數據的情況下,難以進行偽造。使用基于DES或AES加 密法(其使用密鑰)的算法來計算MAC。接著使MAC與消息一起存儲或發(fā)送。接收者 使用同一算法和密鑰來重新計算MAC,并將其與所存儲或發(fā)送的一者進行比較。如果它 們是相同的,那么假定內容或消息尚未被篡改。DES (數據加密標準)是使用56位密鑰的NIST標準密碼加密法。1977年由NIST 所采用,其在2001年被AES取代作為官方標準。DES是以四種不同的操作模式對64位區(qū)塊進行處理的對稱區(qū)塊加密法,其中電子代碼書(ECB)是最普遍的。三重DES通過添加若干多遍方法來增加安全性;舉例來說,用一個密鑰進行加密, 用第二密鑰對結果進行解密,且用第三密鑰再次對其進行加密。然而,額外的遍數給過 程增添了相當多的計算時間。在不要求最強安全性的應用中仍使用DES。高級加密標準("AES")是使用128位的區(qū)塊長度和128、 192或256位的密鑰長度 的NIST標準密碼加密法。在2001年正式取代三重DES方法,AES使用由比利時的Joan Daemen和Vincent Rijmen開發(fā)的Rijndael算法??稍谝槐槎皇侨橹袑ES進行加密, 且其密鑰大小大于三重DES的168個位。安全散列算法(SHA-1)產生20字節(jié)輸出。NIST和NSA將其設計為與數字簽名標 準一起使用,且其現在被廣泛使用。MD5是可與本發(fā)明一起使用的另一散列函數。前面 提及的標準和各種其它算法是可與本發(fā)明一起利用的散列函數和值的說明性實例。如今 可用且將來會開發(fā)的其它類型的散列函數和值可與本發(fā)明一起利用。盡管前面提及的標準和各種其它算法和/或標準是密碼學領域的技術人員眾所周知 的,但以下出版物是提供信息的,且全文以引用的方式并入本文中/ 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。存儲器系統(tǒng)結構圖1A的框圖說明可實施本發(fā)明的各個方面的示范性存儲器系統(tǒng)。如圖1A所示,存 儲器系統(tǒng)IO包含中央處理單元(CPU)或"控制器"12、緩沖管理單元(BMU) 14、主 機接口模塊(HIM) 16、快閃接口模塊(FIM) 18、快閃存儲器20和外圍存取模塊22。 存儲器系統(tǒng)10通過主機接口總線26和端口 26a與主機裝置24通信??扉W存儲器20(其 可以是"與非"型)為主機裝置24提供數據存儲。用于CPU 12的軟件代碼也可存儲在快閃存儲器20中。FIM 18通過快閃接口總線28且在一些情況下(如果快閃存儲器20 是可移除組件)通過端口 (未圖示)連接到快閃存儲器20。 HIM 16適合連接到主機系統(tǒng), 例如數字相機、個人計算機、個人數字助理(PDA)和MP-3播放器、蜂窩式電話或其它 數字裝置。外圍存取模塊22選擇適當的控制器模塊(例如FIM、 HIM和BMU)來與CPU 12通信。在一個實施例中,系統(tǒng)10的在虛線框內的所有組件可被封圍在單個單元中, 例如封圍在存儲卡中,且優(yōu)選封圍在所述卡中。緩沖管理單元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允許數據經由系統(tǒng)總線15直接從密碼 引擎40和快閃DMA34傳送到RAM 11,系統(tǒng)總線15在某些情況下使用,例如當需要繞 過密碼引擎時。HDMA 32和FDMA 34的操作是常規(guī)的,且不需要在本文中詳細描述。 使用BRAM 38來存儲主機裝置24與快閃存儲器20之間傳遞的數據。HDMA 32和FDMA 34負責在HIM 16/FIM 18與BRAM 38或CPU RAM 12a之間傳遞數據,且負責指示區(qū)段 完成。當來自快閃存儲器20的數據由主機裝置24讀取時,通過總線28、 FIM 18、 FDMA 34 和密碼引擎40來獲取存儲器20中的經加密數據,其中經加密數據被解密并存儲在BRAM 38中。接著,經解密數據從BRAM38通過HDMA32、 HIM 16和總線26發(fā)送到主機裝 置24。從BRAM 38獲取的數據在被傳遞到HDMA32之前,可再次借助密碼引擎40進 行加密,使得發(fā)送到主機裝置24的數據再次被加密,但所借助的密鑰和/或算法與存儲 在存儲器20中的數據借以加密的密鑰和/或算法不同?;蛘?,不是在上文所述的過程中 將經解密的數據存儲在BRAM38中(所述數據可能變得易于遭受未經授權的存取),而 是在將來自存儲器20的數據發(fā)送到BRAM 38之前可對其進行解密并再次由密碼引擎40 加密。接著,像之前那樣,將BRAM 38中的經加密數據發(fā)送到主機裝置24。這說明讀 取過程期間的數據流。當數據由主機裝置24寫入到存儲器20時,數據流的方向顛倒。舉例來說,如果未 經加密的數據由主機裝置發(fā)送,通過總線26、 HIM 16、 HDMA 32,到達密碼引擎40,那么所述數據可在存儲在BRAM 38中之前由引擎40加密。或者,未經加密的數據可存 儲在BRAM38中。接著,在數據被發(fā)送到FDMA34之前在其去往存儲器20的途中,對 所述數據進行加密。圖1B說明系統(tǒng)IO的另一實施例。在此優(yōu)選實施例中,將加密引擎40和固件完整性 電路31展示為控制器12的一部分。雖然這些組件作為控制器的一部分是優(yōu)選的,但在 某些實施例中,它們可以不集成在控制器封裝中。如先前所述,RAM 11、快閃存儲器20 和控制器12全部連接到系統(tǒng)總線15。主機接口總線26與主機裝置24 (未圖示)通信。固件完整性檢驗圖2說明包含運行系統(tǒng)10的固件200的快閃存儲器的存儲器空間。系統(tǒng)固件200包 括引導載入程序(BLR)部分200a,其駐存在快閃存儲器20中,且優(yōu)選是不可改變的, 且系統(tǒng)固件200b駐存在快閃存儲器20中,且可在需要時不時地改變。在一些實施例中, 額外固件可存在于ROM 13中,當其直接被執(zhí)行或從投影復制被執(zhí)行時,指向BLR部分 200a。系統(tǒng)固件200的大小大于從其執(zhí)行的RAM模塊,所以將系統(tǒng)固件分成較小的部分, 被稱為覆蓋。在優(yōu)選實施例中,BLR的完整性檢驗利用獨特的動態(tài)計算,其中所預期的 值存儲在數據本身中,且復制臨時存儲在除快閃存儲器20之外的存儲器中的寄存器中。 然而,在某些實施例中,用來檢驗BLR的完整性的技術可用來檢驗系統(tǒng)固件200b的完 整性。如先前所提及,可使用任何散列值和散列技術,但MAC或SHA-1值目前是優(yōu)選 的,且為了簡單起見,在優(yōu)選實施例中將描述一個或其它值的使用。 一般來說,可替代 地使用SHA-1摘要來取代MAC值,且反之亦然。使用MAC值的優(yōu)勢是它們與硬件和 生成它們的硬件的密鑰相關聯。雖然可針對給定數據集簡單地基于數據本身來生成 SHA-l值,但在沒有密鑰的情況下不能重新生成MAC值,且因此提供更穩(wěn)固的安全性。 具體地說,因為必須使用存儲在加密引擎40的非易失性存儲器中的密鑰99來生成MAC 值,所以不能利用另一處理器來重新生成MAC值。舉例來說,黑客不能使用系統(tǒng)外部的 另一處理器來復制固件和相關聯的MAC值。各種用戶數據文件204也存儲在快閃存儲器內。未圖示的各種其它程序和數據可存 儲在快閃存儲器(未圖示)內。也可以類似或其它方式對這些文件進行加密并檢驗其完 整性。圖3說明處于完整性檢查模式時系統(tǒng)10所利用的一些數據區(qū)段的結構。BLR尤其優(yōu) 選利用此結構。可看出,BLR代碼307本身夾在其它數據之間,以組成BLR201a。在加 載BLR代碼307之前,加載一些配置信息。配置信息包含在文件識別(FID)區(qū)段1和7中。BLR代碼307之后是消息認證代碼區(qū)段309。 MAC區(qū)段309內是BLR代碼307的 對應部分的MAC值。這是與圖5中所計算出的值(下文更詳細地對此進行論述)相比較 的MAC值。用0對MAC區(qū)段進行填補,以適應不同長度的數據,使得MAC總是占據 區(qū)段的最后128個位。BLR代碼307存儲在快閃存儲器20中,位于BLR部分200a中, 且配置信息也可存儲在快閃存儲器20中。圖4說明引導和運行系統(tǒng)10的過程,其包含檢驗BLR代碼和固件的完整性。具體 地說,圖4包含如與固件200的BLR部分200a有關的完整性檢驗過程的一般概述。在 優(yōu)選實施例中,系統(tǒng)固件200b和應用固件的檢驗與BLR的檢驗是分開的,且在BLR的 檢驗之后發(fā)生。值得注意的是,固件不是由BLR —次性加載的。BLR只加載幾個模塊 (RAM駐存固件),且其它模塊(覆蓋)基于需要進行加載,且交換到RAM中的相同位 置中。當系統(tǒng)10啟動時,其將在完整性檢査模式下啟動,如步驟404中可見。 一般來說, 在此模式下,加密引擎40計算所有傳入數據的MAC值,如上文所論述且在圖5中詳細 說明。此過程確保了傳入數據可具有可變長度,且存儲在"與非"快閃存儲器20的任意 位置中。在優(yōu)選實施例中,將以與寫入數據的次序相同的次序讀取所述數據,且讀取的 最后一個區(qū)塊將含有MAC。 MAC比較的結果可供固件在任何時候進行檢查?,F將描述 圖4中可見的個別步驟。在步驟410中,系統(tǒng)再次根據圖5的流程表中詳細可見的過程來檢查BLR的完整性。 當BLR經過密碼引擎40時,以與檢驗來自快閃存儲器20的其它數據(當系統(tǒng)處于完整 性檢査模式時)相同的方式來完成上述步驟。在步驟420中,系統(tǒng)對步驟410中所執(zhí)行 的完整性檢查的結果進行檢査。通過對在步驟270中存儲的圖5中可見的過程200的完 整性檢查的結果(旗標或其它指示符)進行檢査來完成上述步驟,所述結果指示是否存 在問題。如果BLR不是OK,那么系統(tǒng)將等待主機命令(如步驟430中可見),以使系統(tǒng) 處于稱作商品退回授權(RMA)狀態(tài)的故障分析狀態(tài)。對于這種和其它操作狀態(tài)或模式 的更多細節(jié),請査閱Holtzman等人的標題為"SECURE MEMORY CARD WITH LIFE CYCLE PHASES"的第11/053,273號共同待決的美國專利申請案,其全文以引用的方式 并入本文中。然而,如果BLR為OK,那么系統(tǒng)將在步驟440中執(zhí)行BLR。當引導完成 時,系統(tǒng)將基于BLR本身中所含有的指令而離開完整性檢査模式,如圖4的步驟440中 可見。BLR包括大量的指令或"步驟"。其中有步驟440a,在步驟440a中,BLR將密碼 引擎40重新配置到正常模式,或換句話說,使密碼引擎40退出完整性檢查模式。BLR還含有指令(如由步驟440b表示),其致使系統(tǒng)檢查系統(tǒng)固件200b的完整性。圖5是如關于圖4所論述的完整性檢驗過程410的流程圖。其說明當系統(tǒng)處于完整 性檢查模式時,讀取并散列存儲在快閃存儲器20中的數據的一般過程。雖然出于示范性 目的將描述對"與非"型快閃存儲器的讀取,但本發(fā)明可與用于大容量存儲目的的任何 類型的存儲器或媒體一起使用。同樣,雖然說明并描述了 MAC值的使用,但還可使用其 它散列值。圖2B的表通常將包含每個條目(未圖示)的對應的開始字節(jié)和字節(jié)數目。一 般來說,在優(yōu)選實施例中,使用整個過程來逐頁地檢驗所述"與非"的完整性。所述過 程將檢驗存儲在所述"與非"中的任何數據的完整性。當所述數據碰巧是固件時,檢驗 固件完整性。雖然這種逐頁的比較是優(yōu)選的,但可進行較小或較大單位的比較。在優(yōu)選實施例中,完整性檢驗過程利用獨特的計算和控制回路,如圖5中所示。所 述回路涉及連續(xù)的計算與比較操作。通常,在檢驗方案中, 一些類型的"正確"或預期 值被預先存儲,并與計算出的值進行比較。在具有圖5所示的過程的優(yōu)選實施例中,"正 確"或預期值存儲在"被測試的數據"本身內。具體地說,在所描述的優(yōu)選實施例中, 其位于數據區(qū)塊的最后128個位中。當讀取正確的區(qū)段時,正被讀取的區(qū)段的最后128 個位出于實用目的將只對應于所存儲的MAC (或其它散列值) 一次。出于實用目的,可 低估(錯誤肯定)匹配將出現在非最后頁的頁上的非常小的可能性。在步驟210中,讀取"與非"區(qū)塊(/)。接下來在步驟215中,用ECC電路對所述 區(qū)塊進行檢查并視情況進行校正。ECC是眾所周知的,且可用來校正數據中的實際錯誤。 雖然使用結合完整性檢驗過程的ECC是優(yōu)選的,但這并不是必需的,且在包含或不包含 步驟215的情況下檢驗完整性。在步驟220中,計算散列值(在優(yōu)選實施例中,優(yōu)選是 MAC值)。盡管計算區(qū)塊(i)的MAC,但在完整性檢驗過程410中,所得的MAC涵蓋區(qū) 塊0到(i),且在數學上可表達為MAC [O...(i)] = MAC[MAC
, block(i)在步驟220中的計算之后,在步驟260中執(zhí)行比較。在步驟260中,控制器的應將 (特別是FWIC31)將區(qū)塊(i)的最后128位與先前存儲的MAC (即,MAC [O.. .(i-l)])進 行比較。在步驟270中,將比較的結果存儲在系統(tǒng)的存儲器中。當首次執(zhí)行步驟260的 比較時,MAC寄存器中的"所存儲"值實際上不會是適當的所存儲MAC值,而將是碰 巧在寄存器中的任何值,且因此可被視為隨機。接著,將在步驟270中存儲比較的結果。 對于第一區(qū)塊,比較將不會被檢査。在步驟230中,步驟220中計算出的MAC值將存儲在控制器的寄存器中,優(yōu)選存儲在FWIC31的寄存器中。接下來在步驟235中,計數器 將遞增,使得(i)的值遞增l,且將再次在步驟210中讀取下一個區(qū)塊。所述回路將繼續(xù), 直到所有區(qū)塊(i)都被讀取為止。當最后一個區(qū)塊被讀取,且因此由加密引擎處理時,如 果最后128個位與步驟230中所存儲的MAC匹配,那么所述比較將產生匹配,且步驟 270中所存儲的結果將反映出已由硬件檢驗出完整性。只有在BLR的最后一頁已經被讀 取時,才會使用匹配來指示已經檢驗出完整性。所有先前的匹配(錯誤真值)將被忽略。 如果所述值不同,那么這將指示數據的完整性存在問題。相反,如果所述值相同,那么 確保數據的完整性。在匹配已經出現之后,將再次在步驟230中更新MAC值,但這是所述回路的冗余操 作,其不具有任何作用。這種連續(xù)的計算過程允許硬件檢驗未定義的內容大小。換句話說,硬件可在不必首先確定區(qū)塊的數目或區(qū)塊所包括的文件的大小的情況下,適當地計 算MAC值并檢驗其完整性。針對駐存在存儲卡的快閃存儲器20中的任何數據,在一定的操作狀態(tài)或模式(尤其 是完整性檢査模式)下使用上文所述的過程。在根據本發(fā)明的存儲卡的優(yōu)選實施例中, 所述數據中的一些是在執(zhí)行時運行存儲器卡的固件。具體地說,在系統(tǒng)10加電時,當系 統(tǒng)處于其常規(guī)操作狀態(tài)或測試狀態(tài)時,加密引擎40本身進行初始化(通過在完整性檢查 模式下開始),以檢驗任何傳入數據的完整性。當數據碰巧是固件時,在固件傳遞通過 BMU 14且尤其是加密引擎40時,固件的完整性得以檢驗。所存儲的結果(不是完整性 本身)可由軟件檢査,所述軟件在一個實施例中涉及存儲在ROM 13中的代碼中的指令。 應注意,盡管存儲在ROM 13中的代碼對結果進行檢査,且可起始數據的流動,但其不 包括在對快閃存儲器中的固件的完整性進行檢驗的過程中。換句話說,所述代碼不負責 執(zhí)行所述固件的任何數值計算或數據操作以便對其進行檢驗。是控制器12或BMU14、 FWIC31和加密引擎40的硬件對固件(包含引導載入程序(BLR)部分和在一些實施例 中固件的其它部分)的完整性進行檢驗。圖5中所描述的過程涉及硬件(HW)和固件(FW)兩者。如所提及,硬件實行完 整性檢査,而固件只是對HW完整性檢査結束時所設置的旗標進行檢査。分別在圖6和 圖7中更詳細地展示HW和SW功能或"回路"。參看圖6,在步驟320中對系統(tǒng)加電。在步驟322中,控制器硬件起始FW完整性模 式。這包括兩個主要行為。第一個行為是激活圖1的FWIC 31。 FWIC 31 —旦被激活, 就將配合圖6的其余步驟,且從而對固件的BLR部分以及加密引擎40的完整性進行檢査。第二個行為涉及選擇密碼學算法以供加密引擎40使用。如先前所提及,加密引擎 40的硬件經配置以用各種不同算法對數據進行加密和解密。在步驟328中,控制器硬件計算傳入區(qū)塊的摘要。此計算由加密引擎40執(zhí)行。接下 來,在步驟330中,將步驟328中計算出的摘要與先前摘要的值進行比較。如早先所論 述,將在所述回路的每一迭代中檢查并比較保存所述值的寄存器,但在第一迭代時,所 述寄存器中的值將是隨機的。接著,在步驟332中設置指示完整性的旗標。此旗標將由 系統(tǒng)的固件進行檢査,以便確認HW已經檢驗出固件的BLR部分的完整性。圖7說明圖6中當HW檢查完整性時所發(fā)生的固件回路。在系統(tǒng)在步驟320中被加 電之后,在步驟340中,CPU經初始化。接著,在步驟342中,從第一有效頁讀取配置 數據(在優(yōu)選實施例中,其為圖3的FID 1)。接下來,在步驟344中,系統(tǒng)提取BLR 201A 的開始和結束頁。 一旦這是已知的,就讀取所有的BLR頁。當讀取每個頁時,產生誤差 校正碼(ECC)。如先前所提及,ECC電路操作是眾所周知的,且可用來校正數據中的實 際錯誤,至多達某一限制。雖然使用結合完整性檢驗過程的ECC是優(yōu)選的,但這并不是 必需的,且在使用或不使用ECC的情況下檢驗完整性。在頁被讀取之后,在步驟348中 用ECC電路對所述頁進行檢查,且如果不是OK,那么在步驟352中,將用ECC校正機 制來校正所述頁,或檢索替代頁。如果在步驟354中確定經校正的或新的頁為OK,那么 在步驟350中,系統(tǒng)將進行檢査,看是否存在更多要讀取的頁。如果是這種情況,那么 系統(tǒng)將返回到步驟346,并讀取另一頁。如果步驟354指示在步驟354中經校正的或替 代的復制不是OK,那么在步驟356中,將指示故障情況。如果步驟350中確定不存在更 多頁,且不指示故障,那么在步驟360中,系統(tǒng)將檢查完整性旗標(其由硬件設置,如 圖6中可見)。如果在步驟360中,旗標指示BLR為OK,如由HW檢驗那樣,那么在步 驟362中,將執(zhí)行BLR。此執(zhí)行與圖4的步驟440中所描繪的相同。雖然只針對固件的一部分(即BLR)執(zhí)行此完整性檢査,但應了解,也可以此方式 檢査所有固件,且此闡釋涉及采用固件引導程序的優(yōu)選實施例。另外,如本申請案中所 使用,術語存儲卡意在還包含USB快閃驅動器之類的結構因子。盡管已相對于本發(fā)明的示范性實施例描述了本發(fā)明的各個方面,但將了解,本發(fā)明 在所附權利要求書的整個范圍內受到保護。
權利要求
1.一種存儲卡,其包括快閃存儲器單元;控制器,其具有加密硬件;隨機存取存儲器;以及存儲在所述快閃存儲器中的固件,其控制將數據寫入所述快閃存儲器單元和從所述快閃存儲器單元讀取數據;其中,當將所述固件上載到所述隨機存取存儲器時,用由所述控制器加密硬件計算出的加密值檢驗所述固件的完整性。
2. 根據權利要求1所述的存儲卡,其中所述存儲卡進一步包括用于對初始引導過程結 束時的旗標進行檢査的指令,其中所述旗標指示已檢驗所述固件完整性。
3. 根據權利要求1所述的存儲卡,其中當將所述固件上載到所述隨機存取存儲器時, 用計算出的散列值檢驗所述固件的完整性。
4. 根據權利要求1所述的存儲卡,其中檢驗所述固件的完整性包括將MAC值應用于 所述固件。
5. 根據權利要求1所述的存儲卡,其中所述快閃存儲器單元是"與非"類,且其中計 算"與非"頁群組的中間MAC值。
6. 根據權利要求5所述的存儲卡,其中檢驗完整性進一步包括將所述頁群組的所述 MAC值與存儲在另一頁或頁群組中的MAC值進行比較。
7. 根據權利要求1所述的存儲卡,其中所述固件包括引導載入程序部分和主要部分。
8. 根據權利要求7所述的存儲卡,其中當將系統(tǒng)級固件上載到所述隨機存取存儲器時, 用由所述控制器加密硬件計算出的加密值來檢驗所述引導載入程序部分的完整性。
9. 根據權利要求1所述的存儲卡,其中所述控制器包括固件完整性電路,其管理所述固件的完整性檢查。
10. 根據權利要求1所述的存儲卡,其中檢驗所述固件的完整性包括將SHA-1值應用于 所述固件。
11. 一種便攜式快閃存儲器存儲裝置,其包括快閃存儲器;駐存在所述快閃存儲器中的數據, 其中所述數據包括用戶文件和固件,且 其中所述數據的一部分可以經加密的格式存儲;以及密碼引擎,其執(zhí)行數據操縱,所述數據操縱包括對正路由到所述快閃存儲器的數 據進行加密和對來自所述快閃存儲器的數據進行解密,其中所述密碼引擎數據操縱還用來檢驗所述固件的完整性。
12. —種大容量存儲裝置,其包括快閃存儲器;一組指令,其控制所述大容量存儲裝置的數據存儲和檢索操作,所述第一組存儲 在所述快閃存儲器中;以及加密引擎,其在所述大容量存儲裝置的硬件電路中實施,所述加密引擎對存儲在 所述快閃存儲器中以及從所述快閃存儲器讀取的數據進行加密和解密,所述加密引擎可操作以檢驗所述組指令的完整性。
13. 根據權利要求12所述的大容量存儲裝置,其中所述組指令不包括檢驗所述指令的 至少一部分的完整性的指令。
14. 根據權利要求12所述的大容量存儲裝置,其中所述組指令包括用于檢查指示符的 狀態(tài)的指令,所述指示符指示是否已檢驗所述組指令的完整性。
15. —種大容量存儲裝置,其包括快閃存儲器;用于控制所述大容量存儲裝置的數據存儲操作的構件;用于對數據進行加密和解密的構件;以及用于用所述用于對數據進行加密和解密的構件來檢驗所述用于控制數據存儲操 作的構件的完整性的構件。
16. —種存儲卡,其包括大容量存儲媒體,其包括快閃存儲器;只讀存儲器;固件;駐存在所述只讀存儲器中的代碼;以及密碼引擎,其屮所述密碼引擎用于檢驗所述固件的完整性。
17. 根據權利要求16所述的存儲卡,其中所述只讀存儲器和所述駐存在所述只讀存儲 器中的代碼不用于檢驗所述固件的至少一部分的完整性。
18. 根據權利要求17所述的存儲卡,其中所述固件的不由所述只讀存儲器檢驗的一部 分包括引導載入程序。
19. 根據權利要求16所述的存儲卡,其中所述代碼包括將所述固件的引導載入程序部 分加載到隨機存取存儲器中的指令。
20. 根據權利要求17所述的存儲卡,其中所述代碼包括對硬件旗標進行檢査的指令, 其中所述硬件旗標指示已使用所述密碼引擎檢驗所述固件的引導載入程序部分的 完整性。
21. —種用于啟始存儲器存儲裝置的操作的方法,其包括在所述裝置的大容量存儲單元中提供固件; 傳遞所述固件通過加密引擎; 用所述加密引擎計算所述固件的散列值; 將所述計算出的散列值與所存儲的散列值進行比較 如果所述計算出的散列值與所述存儲的散列值匹配
22. 一種用于啟始存儲器存儲裝置的操作的方法,其包括;以及,那么執(zhí)行所述固件。在所述裝置的大容量存儲單元中提供固件;在只讀存儲器中執(zhí)行第一組指令,其將所述固件從所述大容量存儲單元復制到隨 機存取存儲器;使用加密引擎檢驗所述固件的完整性;以及在檢驗了完整性之后,用微處理器從隨機存取存儲器中執(zhí)行所述固件。
23. 根據權利要求22所述的方法,其中所述固件含有從所述大容量存儲單元獲取額外 固件的指令。
24. 根據權利要求23所述的方法,其中所述方法進 -步包括執(zhí)行所述額外固件。
全文摘要
一種存儲器系統(tǒng)包括在控制器的硬件中實施的加密引擎。在啟動所述存儲器系統(tǒng)的過程中,實施引導程序機制,其中固件的第一部分在被執(zhí)行時引入固件的將要執(zhí)行的另一部分。所述加密引擎的硬件用于檢驗所述固件的至少所述第一部分的完整性。因此,將只執(zhí)行既定用以運行所述系統(tǒng)的固件。
文檔編號G06F21/00GK101263501SQ200680033798
公開日2008年9月10日 申請日期2006年9月13日 優(yōu)先權日2005年9月14日
發(fā)明者尼夫·科亨, 羅恩·巴爾齊萊, 邁克爾·霍爾茨曼, 魯文·埃爾哈米亞斯 申請人:桑迪士克股份有限公司