TWI676116B - 安全儲存系統以及用於安全儲存的方法 - Google Patents
安全儲存系統以及用於安全儲存的方法 Download PDFInfo
- Publication number
- TWI676116B TWI676116B TW106129310A TW106129310A TWI676116B TW I676116 B TWI676116 B TW I676116B TW 106129310 A TW106129310 A TW 106129310A TW 106129310 A TW106129310 A TW 106129310A TW I676116 B TWI676116 B TW I676116B
- Authority
- TW
- Taiwan
- Prior art keywords
- data item
- version identifier
- signature
- storage location
- version
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/73—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Abstract
本發明提供了一種安全儲存系統,其包括非揮發性記憶體以及控制器。非揮發性記憶體配置以儲存第一資料項以及進一步儲存分配給第一資料項的相應第一版本識別符。控制器配置以接收第二資料項以取代第一資料項,其中第二資料項伴隨第二版本識別符以及簽章、使用簽章來至少驗證第二版本識別符,以及在儲存的第一版本識別符與第二版本識別符之間進行比較。由儲存的第一版本識別符與經驗證的第二版本識別符之間的比較所指示以第二資料項取代第一資料項以驗證(i)第二版本識別符驗證成功以及(ii)第二資料項比第一資料項還要新。
Description
本發明係關於資料儲存,且特別是關於一種用於記憶體晶片中受安全的版本升級的方法與系統。
在各種手持式與其他裝置中,處理器耦接至記憶體晶片且執行儲存在記憶體晶片的電腦程式。在一些這樣的裝置中,記憶體晶片以安全的方式來管理資料的儲存。
本發明之一實施例提供一種安全儲存系統,其包括非揮發性記憶體以及控制器。非揮發性記憶體配置以儲存第一資料項,且更儲存關於第一資料項相應的第一版本識別符。控制器配置以接收第二資料項以取代非揮發性記憶體中的第一資料項。第二資料項伴隨著第二版本識別符以及簽章。控制器還配置來使用簽章來至少驗證第二版本識別符,以及在儲存的第一版本識別符與第二版本識別符之間進行比較。控制器更配置由儲存的第一版本識別符與經驗證的第二版本識別符之間的比較所指示以第二資料項取代第一資料項以驗證(i)第二版本識別符驗證成功以及(ii)第二資料項比第一資料項還要新,來以第二資料項取代第一資料項。
在一些實施例中,控制器配置以(i)至少認證第
二版本識別符以產生認證結果、(ii)進行上述比較;以及(iii)根據認證結果以及上述比較,以不可間斷的操作來有條件的以第二資料項來取代第一資料項。在其他實施例中,控制器配置根據控制器與第二資料項的提供者共享的安全密鑰以檢驗簽章,來驗證第二版本識別符。在其他實施例中,控制器根據安全密鑰以及至少第二版本識別符來計算接收的第二資料項的簽章以產生經計算的簽章以及檢查經計算的簽章是否匹配接收的簽章。
在一實施例中,第一資料項佔據非揮發性記憶體物理位址空間中的第一物理儲存位置。控制器於物理位址空間中為第二資料項配置第二物理儲存位置,以在第一物理儲存位置的物理位址與在儲存系統所使用的邏輯位址空間中的第一邏輯儲存位置的邏輯位址之間進行映射,且在第二物理儲存位置的物理位址與在邏輯位址空間中的第二邏輯儲存位置的邏輯位址之間進行映射。在另一實施例中,控制器透過第二邏輯儲存位置將第二資料項寫入至非揮發性記憶體的第二物理儲存位置並以第二資料項取代第一資料項。在又一實施例中,控制器將第一邏輯儲存位置的邏輯位址重新映射至用於讀取第二資料項的第二邏輯儲存位置的物理位址並以第二資料項取代第一資料項。
在一些實施例中,控制器配置以指定寫入保護指示符對寫入的第二物理存位置鎖定與解鎖,以在將第二資料項寫入至第二物理儲存位置之前解鎖第二物理儲存位置,以及在將第二資料項寫入至第二物理儲存位置結束之後鎖定第二物
理儲存位置。在其他實施例中,控制器藉由向非揮發性記憶體發送複數個寫入命令,以將第二資料項寫入第二物理儲存位置。每一寫入命令載有第二資料項的一相應部分。在又一些其他實施例中,每一寫入命令包括使用與第二資料項相關聯的安全密鑰來計算獲得的相應的命令簽章,且控制器配置僅在使用與第二資料項相關聯的安全金鑰對相應的命令簽章的檢驗後,才執行對應的寫入命令。
在一些實施例中,上述相應指令簽章被計算以用於第二資料項以及第二版本識別符,且控制器配置以確認相應的命令簽章的第二版本識別符比第一版本識別符還要新之後,才執行寫入命令。在其他實施例中,控制器配置以將第二版本識別符存入該非揮發性記憶體,以用於將第二版本識別符與後續更新的版本識別符進行比較。
本發明之一實施例提供一種用於安全儲存的方法,包括以下步驟:儲存第一資料項以及分配給第一資料項相應的第一版本識別符至儲存系統的非揮發性記憶體;接收用來取代在非揮發性記憶體中的第一資料項的第二資料項,其中,第二資料項伴隨著第二版本識別符以及簽章;使用簽章來至少驗證第二版本識別符;在儲存的第一版本識別符與經驗證的第二版本識別符之間進行比較;以及由儲存的第一版本識別符與經驗證的第二版本識別符之間的比較所指示以第二資料項取代第一資料項以驗證(i)第二版本識別符驗證成功以及(ii)第二資料項比第一資料項還要新,來以第二資料項取代第一資料項。
為讓本發明之上述目的、特徵及優點能更明顯易懂,下文特舉一較佳實施例,並配合所附的圖式,作詳細說明如下。
24‧‧‧使用者裝置
28‧‧‧主機
32‧‧‧記憶體晶片
36‧‧‧通信匯流排或鏈路
40‧‧‧處理器
44‧‧‧非揮發性記憶體
48‧‧‧記憶體控制器
52‧‧‧通信匯流排
56‧‧‧密碼引擎
60A、60B‧‧‧應用程式(APP1、APP2)
62A、62B‧‧‧版本識別符(VER1、VER2)
64A、64B‧‧‧提供者(PROVIDER1、PROVIDER2)
68‧‧‧通信網路
72A‧‧‧APP1的更新版本(APP1’)
72B‧‧‧APP2的更新版本(APP2’)
76A、76B‧‧‧版本識別符(VER1’、VER2’)
80A、80B‧‧‧安全密鑰(KEY1、KEY2)
86‧‧‧存取控制模組
88‧‧‧位址映射器
90A‧‧‧APP1的描述符
100、104、108、112、116‧‧‧方法步驟
200、204、208、212、216‧‧‧方法步驟
LA1、LA2‧‧‧邏輯位址
PA1、PA2‧‧‧物理位址
SEC_1L、SEC_2L‧‧‧邏輯儲存位置
SEC_1P、SEC_2P‧‧‧物理儲存位置
第1圖表示根據本發明一實施例,接收將被安全的儲存在本地記憶體晶片的更新的使用者裝置的示意方塊圖。
第2圖表示根據本發明一實施例,第1圖中的記憶體晶片的記憶體控制器的示意方塊圖。
第3圖表示根據本發明一實施例,安全地儲存新資料項的方法的示意流程圖。
第4圖根據本發明一實施例,安全地更新一儲存的資料項的方法的示意流程圖,
於下文中將參照相關圖式以解說本發明之數個實施例之範例。
概要:
本文所敘述的實施例提供了用於記憶體系統中的安全資料儲存的方法和系統。儲存系統可以包括記憶體晶片或任何其他合適類型的儲存系統,例如,固態硬盤(solid-state drive,SSD)。在下面的描述中,主要涉及包括一記憶體晶片的示範儲存系統。此記憶體晶片包括一記憶體控制器,例如快閃記憶體裝置的非揮發性記憶體裝置。記憶體晶片可以用於各種用戶設備,例如個人電腦(personal computer,PC)、手機、
或物聯網(Internet of Things,IOT)節點。
在一些實施例中,記憶體晶片將關於使用者裝置的處理器的資料項目儲存在非揮發性記憶體中,且根據需要來擷取關於處理器的資料項目。舉例來說,資料項可以包括可執行的程式碼,例如,應用程式或底層操作系統的開機程式碼。可替代地或另外地,也可以使用其它合適類型的資料項。其他類型的資料項可以包括密鑰與其他加密資訊、密碼與識別憑證、指紋與其他生物資料、銀行與財務資料、電子錢包、醫療數據、其他個人資訊等等。
儲存在非揮發性記憶體中的一資料項可能需要不時地進行更新。例如,當前儲存的應用程式的版本可能被包括錯誤修復、最近添加的特徵等的進階版本所取代。
資料項的更新版本有時可以從遠端服務器下載。原則上,記憶體晶片可以與資料項的授權提供者共享授權提供者用於簽署資料項的版本的安全密鑰,並且記憶體晶片使用來檢驗下載的資料項的完整性和真實性。”授權提供者”與記憶體晶片共享密鑰。
上述更新方案可能容易受到回復攻擊(roll-back attack),於其中,攻擊者嘗試在記憶體晶片中安裝由授權提供商使用正確的安全密鑰而於過去簽發,但由授權提供者比當前儲存的資料項更早發行的先前獲取的資料項。攻擊者可能會啟動回復攻擊(也稱為零日攻擊),目的是利用應用程序碼的先前版本的已知漏洞。
在一些公開的實施例中,為了儲存在記憶體晶片
中而接收的資料項為指定的版本識別符。通常,授權的提供者以某些發行順序發行給定的資料項的更新,並根據發行順序將各別的版本識別符分配給已發行的更新。
在一些實施例中,記憶體控制器一資料項以取代在非揮發性記憶體中的一儲存的資料項。記憶體控制器僅僅是為了(i)檢驗所接收的資料項的版本識別符被成功驗證,並且(ii)基於它們各自的版本識別符之間的比較來檢驗接收到的資料項比儲存的資料項還要新。在一些實施例中,將資料項和版本識別符一起簽署在公共簽章中,並且記憶體控制器使用該公共簽章對資料項進行驗證。
在一些實施例中,記憶體控制器以資料項來接收相應的簽章。記憶體控制器使用共享的安全密鑰對接收的資料項計算以獲得計算的簽章。記憶體控制器通過檢查計算的簽章與所接收的資料項的簽章是否匹配來檢驗所接收的資料項的版本識別符。
在一些實施例中,記憶體控制器執行在由記憶體晶片的主機所使用的邏輯位址與由非揮發性記憶體裝置所使用的物理位址之間的映射。在物理位址空間中,記憶體控制器為記憶項分配用於當前使用的版本的儲存空間和用於寫入資料項的更新版本的另一個儲存空間。在驗證更新的版本之後,如上所述,記憶體控制器重新映射邏輯-物理位址以交換此兩儲存空間之間的角色。
在一些實施例中,為了將一資料項寫入儲存空間,記憶體控制器在寫入之前解鎖此儲存空間,並且在寫入資
料項結束之後鎖定儲存空間。在其他實施例中,記憶體控制器透過向非揮發性記憶體發送多個寫入命令來寫入數據項,使得每個命令攜帶資料項內容的各自部分,並且每個命令都用各自的簽章進行簽署。只有在驗證各自的簽章之後,非揮發性記憶體才執行每個寫入命令。
在一些實施例中,記憶體控制器驗證所接收的版本識別符,並且在不可間斷的單個原子操作(atomic operation)中,基於各自的版本識別符來確認所接收的資料項比儲存的資料項還要新。這樣的實施例確保了僅當滿足所有所需條件時才允許實際的更新。
所揭露的技術支援記憶體晶片中的安全資料儲存。使用所揭露的技術,不需要複雜的通信鏈路,且在記憶體晶片中的資料項可以安全有效地更新,導致最小的延遲。
系統敘述:
第1圖係表示根據本發明一實施例,接收將被安全的儲存在本地記憶體晶片32的更新的使用者裝置24的示意方塊圖。使用者裝置24包括主機28,其透過通信匯流排或鏈路36而耦接使用者裝置的記憶體晶片32。記憶體晶片32將關於主機的資料儲存在非揮發性記憶體44,在此實施例中,非揮發性記憶體44例如為快閃記憶體。記憶體晶片32支援以安全的方式來更新儲存在非揮發性記憶體44內的資訊,將於下文中詳細描述。
記憶體晶片32可用在各種使用者主機系統和設備中,例如在計算裝置、個人電腦(personal computer,PC)或
電腦伺服器、手機或其他通信終端、膝上型電腦、平板電腦、可移動記憶體模組、固態硬碟(solid state disk,SSD)、儲存裝置(例如硬碟、安全數位(secure digital,SD)卡、多媒體卡(multi-media card,MMC)、以及嵌入式MMC(embedded MMC,eMMC))、數位碼相機、音樂與其他媒體播放器、IOT節點以及/或資料儲存與擷取所在的任何其他系統或裝置。
主機28包括處理器40,其通常執行諸如操作系統、開機管理程式(boot-loader)功能、韌體、一個或多個使用者應用程式、通信棧(communication stack)等的程序。使用者裝置24通常包括用於在處理器40和人類使用者(例如鍵盤或觸控板、以及顯示器(未顯示)之間進行接口的裝置。主機28包括用於與遠端服務器進行通信的裝置,將於下文敘述。
非揮發性記憶體44通常包括多個記憶胞(未顯示)。在本例子中,非揮發性記憶體44包括快閃記憶體,但是也可以使用任何其它合適的技術來實現。非揮發性記憶體44的儲存容量取決於主持的使用者裝置的儲存要求,並且可以在幾兆位元或甚至幾個千兆位元的等級。
記憶體晶片32包括記憶體控制器48,其管理非揮發性記憶體44內的資料儲存。記憶體控制器48經由一內部通信匯流排52或包含任何合適的通信匯流排的鏈路52耦合到非揮發性記憶體44。在記憶體晶片32中,透過在記憶體控制器與非揮發性記憶體之間的通信匯流排52傳送的任何資訊在儲存器晶片32之外是不可存取的。
雖然非揮發性記憶體44可以包括多個物理記憶
庫,但記憶體控制器如同存取統一邏輯記憶體一般地存取非揮發性記憶體。
在一些實施例中,主機28在包括邏輯位址的位址空間中操作,而非揮發性記憶體44在包括物理位址的依不同位址空間中操作。在儲存資料至非揮發性記憶體以及自非揮發性記憶體擷取資料的情況下,記憶體控制器在邏輯位址和物理位址之間進行轉換,如將在下文中參考的2圖的詳細描述。
主機與記憶體晶片之間的通信匯流排36可以包括根據任何合適協議操作的任何合適的匯流排或鏈路。通信匯流排36可以包括,例如,序列周邊介面(Serial Peripheral Interface,SPI)總線或內部記憶體電路(Inter-Integrated Circuit,I2C)匯流排。通信匯流排36可以作為序列匯流排或並列匯流排操作,且以任何合適的速率發送和接收訊息。SPI匯流排和類似的I2C匯流排可以在幾Kbps至幾Mbps的位元率(例如,在基於50MHz的八進制SPI匯流排中超過400Mbps)下運行。串行ATA(SATA)和IDE(Integrated Drive Circuit,整合裝置電路)匯流排通常以幾百Mbps的位元率運行。
在第1圖的示範實施例中,記憶體晶片32包括用於實現記憶體晶片的各種安全方面的密碼引擎56,將於下文中詳細敘述。在一個實施例中,密碼引擎56將記憶體控制器從例如加密、解密、認證、資料雜湊(data hashing)、簽章確認等複雜的密碼操作的負擔中卸載。在替代實施例中,記憶體控控制器執行所需的密碼操作中的一些或全部。
在一些實施例中,透過通信匯流排36在主機28
和記憶體晶片32之間的資料傳送是受到保護的。在這樣的實施例中,主機28和記憶體控制器48中的每一者對將透過通信匯流排36發送的資料進行加密(使用任何合適的加密方法),並對接收自通信匯流排36的以加密資料進行解密。對在通信匯流排36上的資料傳送進行加密確保了可能獲得對通信匯流排36進行存取的攻擊者不能破解傳送的資訊。透過通信匯流排36的進行通信的其他安全方面包括基於簽章的真實性檢驗、以及基於循環冗餘校驗(Cyclic Redundancy Check,CRC)碼、雜湊函數、簽章或任何其他合適的完整性檢查方法的完整性檢驗。
主機28可以將資料儲存在記憶體晶片32中,並且根據需要擷取資料。儲存的資料通常包括任何合適類型的一個或多個資料項,例如可執行程式碼,如例如操作系統、操作系統的開機碼或使用者應用程式。其他相關資料類型包括安全密鑰、識別憑證、使用者資料、韌體、各種驅動程式等。
在第1圖的例子中,非揮發性記憶體44儲存將由主機的處理器40執行的應用程式60A和60B,分別以APP1和APP2來標示。在一些實施例中,為了執行例如APP1或APP2的應用程式,主機例如透過向記憶體晶片32適當的讀取命令來從非揮發性記憶體44讀取應用程式的程式碼。
非揮發性記憶體44另外儲存關於應用程式60A和60B的各自版本識別符62A(表示為VER1)或62B(表示為VER2)。記憶體控制器使用版本識別符以檢驗只有為真實的且比當前儲存的副本還要新的資料項的更新將被安裝,如下所
述。
例如為應用程式APP1和APP2的每個資料項的初始版本以及該資料項的更新版本通常可以由使用者裝置24透過通信網路68下載。在第1圖的例子中,提供者64A(標示為PROVIDER1)儲存應用程式APP1 60A的的更新版本(標示為APP1' 72A),提供者64B(標示為PROVIDER2)儲存應用程式APP2 60B的更新版本(標示為APP2' 72B)。提供者64通常在連接到通信網路68的伺服器中儲存每個資料項的一個或多個版本。
通信網路68可以包括,例如,封包網路(packet network),舉例來說,乙太網路或網際網路協定(Internet Protocol,IP)網路。或者,通信網路68可以根據任何其它合適的標準或協議進行操作。通信網路68可以包括有線網路,例如區域網路(Local Area Network,LAN)或廣域網路(Wide Area Network,WAN),或者包括有無線網路,例如手機網路或諸如Wi-Fi網路的無線LAN。可替代地或另外地,通信網路68組合有線和無線網路。
在一些實施例中,取代了(或除了)與通信網路68的介面,使用者裝置24包括以以直接方式接收資料項的初始版本或更新版本的一個或多個專用介面(未顯示)。例如,儲存裝置可以下載儲存在光碟(compact disc,CD)中或者在通用序列匯流排(Universal Serial Bus,USB)儲存裝置中的資料項。
每個提供者64可以偶爾地更新本地儲存在提供者
的伺服器中的資料項。例如,提供者64A(或64B)可以發布其修復應用程式的功能中的問題的應用程式APP1(或APP2)的更新版本,例如解決安全風險、以及/或加入至應用程式的新特徵。例如,當更新版本APP1'(72A)在提供者端變為有效時,使用者裝置24可以通過通信網路68下載更新的版本,以替換當前儲存在非揮發性記憶體44中的APP1(60A)。
在一些實施例中,每個提供者64分配的版本識別符給其本地儲存的資料項的相應版本。在此例子中,提供者64A將版本識別符76A(標示為VER1’)分配給APP1,且將版本識別符76B(標示為VER2')分配給APP2。
提供者64中的每一者以遞增順序的次序將版本識別符分配給相應的資料項。因此,資料項的較新版本被分配到在次序中較高的版本識別符。例如,假設提供者64A以某種順序發布版本識別符,由於APP1'(72A)是APP1(60A)的更新版本,所以提供者64A分配給APP1的版本識別符VER1'(76A)在次序上更高於APP1的版本VER1(62A)。在一些實施例中,版本識別符包括版本編號。在這樣的實施例中,分配的版本編號滿足VER1'>VER1。相似的版本識別符的分配用於應用程式APP2和任何其他合適類型的資料項。
使用者裝置24下載資料項的更新版本,並伴隨下載其識別符。在本此例子中,使用者裝置24下載具有版本識別符VER1’的APP1'以及具有版本識別符VER2’的APP2’。記憶體控制器比較相關資料項的接收到的版本識別符與儲存的版本識別符,並且只允許比儲存的版本還新且驗證過的版本安
裝在非揮發性記憶體中,將於下文中詳細說明。
在一些實施例中,記憶體控制器使用與資料項的授權提供者共享的安全密鑰來驗證下載的資料項的版本識別符。在下文的描述中,術語“授權提供者”是指存於記憶體晶片共享安全密鑰所相應的資料項的提供者。
在第1圖的例子中,記憶體晶片32與APP1(和APP1')的提供者64A共享安全密鑰80A(標示為KEY1),且與APP2(和APP2')的提供者64B共享安全密鑰80B(表示為KEY2)。每個提供者64使用安全密鑰來簽署具有簽章的相應資料項,並且記憶體晶片32透過使用安全密鑰檢驗簽章來驗證接收到的資料項及其版本識別符。密鑰80通常儲存在非揮發性記憶體44中,並且僅可在記憶體晶片32內存取,例如由記憶體控制器48以及/或密碼引擎56來存取。
儘管在第1圖中,每個資料項(應用程式APP1和APP2)與相應的安全密鑰相關聯,但該分配不是強制性的。例如,由記憶體晶片所驗證的一或多個資料項,甚至是所有的資料項可與一共用安全密鑰相關聯。如另一例子,一個或多個使用者裝置可以與使用者裝置24共享給定的安全密鑰。安全密鑰80通常在記憶體晶片32的製造期間或稍後的時間,被記憶體晶片或使用者裝置的製造者初始化。或者,使用者裝置24的依使用者初始化安全密鑰80。在初始化之後,安全密鑰不能透過記憶體晶片或使用者裝置的任何設計的介面來被讀取或改寫。
在記憶體晶片中的安全存取控制:
第2圖係表示根據本發明一實施例,第1圖中的記憶體晶片32的記憶體控制器48的示意方塊圖。第2圖的例子主要涉及對應用程式APP1(第1圖中的60A)實施存取控制,但是也適用於其他合適的應用程式和資料項。
記憶體控制器48包括存取控制模組86,用於管理對非揮發性記憶體44的安全存取。在一些實施例中,為了管理儲存和存取控制,記憶體控制器分配相應的描述符給儲存在非揮發性記憶體的至少一些資料項,例如,記憶體控制器將描述符90A分配給應用程式APP1。在一個實施例中,記憶體控制器將描述符儲存在非揮發性記憶體中。描述符,例如描述符90A,通常包括多個欄位,例如以下列出的欄位:
●位址
●尺寸(例如,以位元組表示)
●版本識別符(例如,版本編號)
●資料項的簽章
●狀態
●存取權限:例如,讀取保護與寫入保護指示符。
描述符中的位址欄為可以包括物理位址、邏輯位址、或前兩者。位址欄位通常用於識別一個或多個儲存位置。狀態欄位可以用於控制和管理,例如用於保持驗證狀態(例如,通過或失敗)和位址交換狀態。
在一些實施例中,例如為APP1的給定資料項在非揮發性記憶體中佔據多個儲存空間,將於下文敘述。描述符可以包括對應分配給資料項的每個儲存空間的至少一些欄位的
個別數值組。為了致能(或禁能)資料項(例如APP1)的讀取,記憶體控制器設定(或清除)相關的讀取保護指示符。類似地,為了致能(或禁能)非揮發性記憶體中的資料項的寫入或更新,記憶體控制器設定(或清除)相關的寫入保護指示符。當記憶體控制器請求存取資料項時,存取控制模組塊86檢查在相應描述符中(例如在APP1的描述符90A中)的存取權限並且相應地允許或防止存取。
記憶體控制器可以對資料項的不同儲存空間設定不同的存取權限。防止和允許存取對儲存空間存取的操作本文中分別稱為“鎖定”和“解鎖”操作。例如,在一段時間期間內,記憶體控制器可以解鎖資料項的一個儲存空間以僅用於讀取,並解鎖相同資料項的另一儲存空間以僅用於寫入。
每個描述符可以與相應的安全密鑰相關聯。第2圖描繪了與應用程式APP1 60A的相應描述符90A相關聯的KEY1 80A。或者,資料項及其相應的描述符可以與不同的相應的安全密鑰相關聯。在一些實施例中,獲得對描述符(例如,90A)的欄位的存取需要知道相應的安全密鑰(例如,80A)。
在一些實施例中,記憶體控制器將資料(例如APP1)與相應的簽章一起儲存在儲存空間中。在一些實施例中,記憶體控制器將簽章儲存在分配給資料項的描述符的一欄位中。記憶體控制器使用儲存的簽章來檢驗在相關儲存空間中的資料項的完整性。為此,記憶體控制器計算簽章,並將計算的簽章與儲存的簽章進行比較。根據偵測出所計算的簽章與儲存的簽章相匹配,記憶體控制器決定資料項目未被篡改(即,
完整性檢查已經成功地通過)。
記憶體控制器可以各種方式計算對應於在相應儲存空間中的資料項的簽章。在一些實施例中,記憶體控制器透過計算合適的密碼雜湊函數(SHA雜湊函數)來計算關於此儲存空間的簽章。在一些實施例中,記憶體控制器使用與資料項相關聯的安全密鑰來計算關於資料項及其版本識別符的簽章。或者,記憶體控制器使用任何合適的對稱密鑰加密方法(使用相關的安全密鑰)來計算簽章,舉例來說,配置操作於密碼區塊連結(Cipher Block Chaining,CBC)模式下的進階加密標準(Advance Encryption Standard,AES)方法。
在一些實施例中,反應於接收來自處理器40的一合適的確認命令,記憶體控制器確認儲存在非揮發性記憶體中的資料項(例如,如上所述,使用簽章來進行確認)。可替代地或另外地,相關描述符可以包括驗證欄位,其指示記憶體控制器確認在一相應儲存空間的相應資料項,其中,於此儲存空間中儲存了此資料項的當前使用的版本。舉例來說,根據記憶體晶片、使用者裝置、或此兩者的重新啟動的結束,記憶體控制器掃描當前儲存的資料項的描述符,並確認被指定於相應描述符的確認的資料項。
在一些實施例中,記憶體控制器自處理器40接收指定一給定資料項的儲存命令,其中,此儲存命令已由具有與此給定資料項的描述符相關聯的安全密鑰的提供者所簽署。儲存命令可以包括例如用於鎖定或解鎖給定資料項的儲存空間的命令、用於確認在相應儲存空間中的資料項的命令、或任何
其它合適的儲存命令。在這些實施例中,記憶體控制器在執行儲存命令之前使用安全密鑰檢驗儲存命令的真實性。
在一些實施例中,記憶體控制器解鎖對用於寫入的一儲存空間,其中,相應資料項的更新版本將被寫入於此儲存空間,且當寫入更新版本結束時,記憶體控制器鎖定此儲存空間。例如,在寫入APP1的更新版本至非揮發性記憶體之前,記憶體控制器解鎖用於寫入的儲存空間SEC_1P或SEC_2P之一。
在一些實施例中,為了避免在相對長的時間內解鎖儲存空間,記憶體控制器透過向非揮發性記憶體發送多個寫入命令,以將資料項的更新版本寫入相關儲存空間,其中,每個寫入命令使用與相應資料項相關的安全密鑰來簽署。非揮發性記憶體透過檢驗每個寫入命令的簽章且透過只在根據它們各自的簽章來驗證寫入命令之後執行寫入命令,來寫入更新的版本。在一個實施例中,通過第二資料項及其相應的版本識別符來計算簽章。在此實施例中,記憶體控制器僅在檢驗出寫入命令的相應簽章的版本識別符比資料項的當前使用版本的版本識別符還要新之後才執行寫入命令。
在一些實施例中,每個寫入命令(例如包括16個位元組)被單獨簽章,並且記憶體控制器另外接收在經簽章的命令中的檢驗識別符以及位址資訊。記憶體控制器接收一完整更新“套件(package)”,其包括多個寫入命令以及隨後的”回復保護(rollback protection)”命令。記憶體控制器將經過檢驗的寫入命令所攜帶的資料儲存到非揮發性記憶體中,然後
執行回復保護命令以驗證寫入的整個資料項。記憶體控制器最終交換邏輯-物理位址映射,以使用資料項的更新版本來取代儲存的資料項。
存取控制模組86包括位址映射器88,其在由主機28所使用在邏輯位址空間中的邏輯位址與在非揮發性記憶體44中使用的物理位址空間中的物理位址之間進行映射。主機的處理器40使用邏輯位址來對記憶體晶片32實施儲存操作,並且通常不知道邏輯位址被映射到的物理位址。在一個實施例中,位址映射器88被實現為儲存在非揮發性記憶體44或記憶體晶片32的一些其它記憶體(未顯示)中的表單。
在一些實施例中,每個資料項分配給在每個邏輯位址空間和物理位址空間中的一個或多個儲存空間。
在本說明書和申請專利範圍的上下文中,包括多個位址的儲存空間也被稱為“儲存位置”。物理儲存位置包括物理位址空間中的多個物理位址,並且邏輯儲存位置包括邏輯位址空間中的多個邏輯位址。在一些實施例中,儲存位置中的位址佔據相關位址空間中的位址的連續範圍。或者,儲存位置中的位址在相關位址空間中為不連續的。在下面的描述中,術語“儲存空間”和“儲存位置”可互換使用。
在第2圖中,第1圖的應用程式APP1分配給在邏輯位址空間中標示為SEC_1L和SEC_2L的兩個儲存空間以及在物理位址空間中標示為SEC_1P和SEC_2P的兩個儲存空間。
在一些實施例中,表示為LA1的SEC_1L的邏輯位址用於自記憶體晶片讀取APP1的當前安裝的APP1,而表示
為LA2的SEC_2L的邏輯位址用於將APP1的更新版本寫入至記憶體晶片。APP1當前使用版本可以儲存在非揮發性記憶體的SEC_1P或SEC_2P中。
當APP1的當前使用的版本儲存在SEC_1P中時,位址映射器88將邏輯位址LA1映射至用於自SEC_1L讀取應用程式APP1的物理地址PA1。當記憶體控制器接收應用程式APP1的更新版本時,經由邏輯地址LA2,位址映射器將邏輯地址LA2映射到用於將APP1的更新版本寫入SEC_2P的物理地址PA2。
類似地,APP1的當前使用的版本可以儲存在非揮性發記憶體的SEC_2P中,並且由地址映射器存取而被讀出以將邏輯位址LA1映射至物理位址PA2。在這種情況下,記憶體控制器透過使用地址映射器88將邏輯位址LA2映射至物理位址PA1來將APP1的更新版本寫入SEC_1P。表格1總結了所選擇的邏輯-物理映射選擇項目。
藉由使用關於每個資料項(例如,APP1)的兩個
單獨的儲存空間,記憶體控制器可以從非揮發性記憶體的一個儲存空間讀取一資料項的當前安裝的版本,並將所接收到用來取代當前使用資料項的資料項的一版本寫入至非揮發性記憶體的不同儲存空間。
記憶體控制器僅在確認接收到的版本識別符的完整性和真實性之後,且接收到的資料項的版本比當前儲存的版本還要新時,才實際地以接收到的版本來取代當前使用的版本。在一些實施例中,記憶體控制器透過交換SEC_1P和SEC_2P的邏輯-物理地址映射來以資料項的更新(和經驗證過)的版本來取代當前使用的資料項。交換後,記憶體控制器可以透過邏輯位址LA1讀取資料項的更新版本。此外,記憶體控制器可以經由邏輯地址LA2將資料寫入至過時版本的儲存空間。
在一些實施例中,分配儲存空間,使得SEC_1P中的每個物理位址具有在SEC_2P中的相應物理位址,如此一來,使得這兩個物理位址僅在物理位址空間的最高有效位元(Most Significant Bit,MSB)中具有相異處。在這些的實施例中,位址映射器通過反轉物理位址的MSB來實現SEC_1P和SEC_2P之間的交換,從而在執行位址重映射時實現最小的延遲時間(latency)。
第1圖和第2圖中的使用者裝置24和記憶體晶片32的配置是僅為了概念清楚而選擇的示例配置。在替代實施例中,也可以使用使用者裝置和記憶體晶片的任何其它合適的配置。例如記憶體控制器48、非揮發性記憶體44和密碼引擎56
之類的記憶體晶片32的不同元件可以使用任何合適的硬體來實現,例如在特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)或現場可程式邏輯閘陣列(Field-Programmable Gate Array,FPGA)。在一些實施例中,可以使用軟體或使用硬體和軟體元件的組合來實現記憶體晶片32的一些元件。
在一些實施例中,例如記憶體控制器48的記憶體晶片32的某些元件可以包括通用處理器,其以軟體件編程來執行本文所描述的功能。此軟體可以以電子形式透過網路下載到處理器,例如,或者可替代地或另外地,其可以被提供以及/或儲存在例如磁性、光學、或電子的記憶體儲存器的非暫態具體介質上。
在使用者裝置24中,主機28和記憶體晶片32的每一者可以包括一單獨的半導體晶粒,並且兩個晶粒位於共同包裝或個別包裝上。在一些實施例中,記憶體控制器48,非揮發性記憶體44和加密引擎56都位於包含記憶體晶片32的共同晶粒中。
用於在記憶體晶片中的資料項的安全更新的方法:
第3圖係表示根據本發明一實施例安全地儲存新資料項的方法的示意流程圖,將於下文說明。此方法可以例如由記憶體晶片32的記憶體控制器48來執行。主要參考第1圖和第2圖的資料項APP1(60A)來說明第3圖的方法。然而,此方法類似地適用於任何其他合適類型的資料項。在第3圖的
方法中,版本識別符包括版本編號。
此方法開始於接收步驟100,於其中,記憶體控制器48接收應用程式APP1以將其儲存。在本例子中,我們假設APP1尚未安裝在記憶體晶片32中。記憶體控制器另外接收關於APP1的相應版本編號和簽章。當APP1由授權的提供商(例如,本例子中的PROVIDER1(64A))發起時,授權提供者已將版本編號VER1(62A)分配給APP1,並且已透過使用記憶體晶片與PROVIDER1共享的安全密鑰來計算APP1的簽章和版本編號。
在位址分配步驟104中,記憶體控制器分別在邏輯儲存位置SEC_1L和SEC_2L中分配APP1的邏輯位址LA1和LA2。記憶體控制器使用位址映射器88將邏輯位址LA1和LA2映射到非揮發性記憶體中相應物理儲存位置SEC_1P和SEC_2P的相應物理位址PA1和PA2。在一些實施例中,記憶體控制器初始化用於在非揮發性記憶體中的APP1的描述符(90A)。
在寫入步驟108中,記憶體控制器,例如,使用APP1的描述符90A中的存取權限,來解鎖用於寫入的物理位址PA1,並透過邏輯儲存位置SEC_1L的邏輯位址LA1來將接收到的資料項APP1寫入至物理儲存位置SEC_1P的物理位址PA1。
在檢驗步驟112中,記憶體控制器檢驗儲存在物理位址PA1中的APP1的真實性和完整性。為此,記憶體控制器計算關於儲存的APP1的簽章,包括接收到的版本編號,並
且將其與在步驟100中接收到的簽章進行比較。如果所計算的簽章和接收到的簽章一致,則APP1及接收到的其版本編號被成功的驗證。
在初始化步驟116,反應於在步驟112的成功檢驗,記憶體控制器將接收到的APP1的版本編號VER1儲存在例如,相應的描述符90A中。儲存的版本編號將被用作參考版本識別符,其用於接受由PROVIDER1所發布且晚於APP1下載的APP1後續更新。儲存器控制器還藉由在描述符90A中設定讀取與寫入存取權限,來分配用於讀取APP1的(邏輯儲存位置SEC_1L的)邏輯位址LA1,以及用於寫入APP1的更新版本的(邏輯儲存位置SEC_L2的)邏輯位址LA2。在步驟116之後此方法終止。
第4圖係表示根據本發明一實施例安全地更新一儲存的資料項的方法的示意流程圖,將於下文說明。此方法可以例如由記憶體晶片32的記憶體控制器48所執行。在敘述第4圖的方法時,假設應用程式APP1已經例如使用第3圖的方法而安裝在記憶體晶片,並佔用物理儲存位置SEC_1P的物理位址PA1。然而,此方法同樣適用於任何其它合適類型的資料項。在第4圖的方法中,版本識別符包括版本編號。
此方法開始於接收步驟200,於其中,記憶體控制器48接收更新版本APP1',此更新版本APP1'係用於替換當前儲存在非揮發性記憶體中的物理儲存位置SEC_1P的物理位址PA1中的版本APP1。記憶體控制器另外接收APP1'的相應更新的版本編號VER1'和相應的簽章。
當APP1與記憶體晶片共享KEY1的授權提供者(在APP1的情況下為PROVIDER1)發起時,授權提供應已將更新的版本編號VER1'分配給APP1',並且已使用安全密鑰KEY1(80A)來計算關於APP1'和VER1'的上的簽章。此外,授權提供者分配更新的版本編號VER1',使得VER1'>VER1,即大於當前安裝的APP1版本的版本編號。
在寫入步驟204中,記憶體控制器透過邏輯儲存位置SEC_2L的邏輯位址LA2將接收的更新版本APP1'寫入物理儲存位置SEC_2P的物理位址PA2。在確認步驟208,記憶體控制器使用在步驟200接收的簽章和與資料項APP1相關聯的安全密鑰KEY1來驗證APP1'和更新的版本編號VER1'。記憶體控制器類似於上述第3圖的步驟112,而對於物理儲存位置SEC_2P的物理位址PA2中的APP1'進行驗證。
在版本編號檢驗步驟212中,反應於檢測到VER1'被成功地驗證,記憶體控制器進一步確認VER1'等於或大於VER1,即當前儲存的APP1的版本編號。由於只有授權提供者持有相關的共享密鑰(KEY1)並且可以簽署APP1和一選定的版本編號,所以在步驟208和212的確認提供了防止回復攻擊的保護。
在交換步驟216中,根據在步驟208中的成功驗證以及在步驟212中的成功確認,記憶體控制器重新映射邏輯-物理位址。具體來說,位址映射器88將邏輯儲存位置SEC_1L的邏輯位址LA1映射到物理儲存位置SEC_2P的物理位址PA2(其中更新的版本APP1'是現在儲存),並將邏輯儲存位置
SEC_2L的邏輯位址LA2映射到物理儲存位置SEC_1P的物理位址PA1,用於在可用時寫入APP1的後續更新。
在一些實施例中,記憶體控制器使用單個原子操作來更新資料項。在此實施例中,記憶體控制器執行上述步驟208,212和216作為可中斷操作,包括:驗證版本識別以產生驗證結果(步驟208),比較接收到的和儲存的版本編號(步驟212),並有條件地替根據驗證結果與比較結果以接收到的資料項來取代儲存的資料項(步驟216)。此實施例確保僅當滿足所有的所需條件時,記憶體控制器實際上才更新資料項。
在上述實施例係作為示範例,並且也可以使用其他合適的實施例。例如,儘管在上述實施例中在非揮發性記憶體中分配了兩個儲存空間給資料項,但是在替代實施例中,一資料項可以與多於兩個的儲存空間相關聯,例如,用於儲存資料項的多個版本。
在上述實施例中,我們通常假設共享密鑰(例如,KEY180A)在提供者側和記憶體晶片上是相同的。在替代實施例中,可以共享非對稱密鑰,其支援在提供者側簽署資料項且檢驗在記憶體晶片的資料項的真實性。
雖然在上述實施例中,例如KEY180A和KEY280B的共享密鑰用於驗證,但是這些密鑰或其他例如由KEY1和KEY2所導出的密鑰可以用於透過通信網路發送的資料項的端到端加密。
在上述實施例中,我們主要涉及每個資料項的兩個邏輯儲存位置(即SEC_1L和SEC_2L),其中,此兩邏輯
儲存位置中的之一個用於讀取數資料,另一個用於寫入資料項的更新版本。然而,此配置並非強制的,並且在其他實施例中,此兩個邏輯儲存位置可以在讀取和寫入之間(例如,動態地)交換角色。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可作更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
Claims (12)
- 一種安全儲存系統,包括:一非揮發性記憶體,配置以儲存一第一資料項,且更儲存關於該第一資料項的相應的一第一版本識別符;以及一控制器,配置以:接收一第二資料項以取代在該非揮發性記憶體中的該第一資料項,其中,該第二資料項伴隨著一第二版本識別符以及一簽章;使用該簽章來至少驗證該第二版本識別符;在儲存的該第一版本識別符與該第二版本識別符之間進行一比較;以及由儲存的該第一版本識別符與經驗證的該第二版本識別符之間的該比較所指示以該第二資料項取代該第一資料項以驗證(i)該第二版本識別符驗證成功以及(ii)該第二資料項比該第一資料項還要新;其中,該控制器配置根據該控制器與該第二資料項的一提供者共享的一安全密鑰以檢驗該簽章,來驗證該第二版本識別符;其中,該控制器配置根據該安全密鑰以及至少該第二版本識別符以計算接收的該第二資料項的該簽章以產生一經計算的簽章,並檢查該經計算的簽章是否匹配接收的該簽章;以及其中,當該經計算的簽章與接收的該簽章匹配時,該第二版本識別符驗證成功。
- 如申請專利範圍第1項所述之安全儲存系統,其中,該控制器配置來:(i)至少認證該第二版本識別符以產生一認證結果;(ii)進行該比較;以及(iii)根據該認證結果以及該比較,以一不可間斷的操作來有條件的以該第二資料項來取代該第一資料項。
- 如申請專利範圍第1項所述之安全儲存系統,其中,該第一資料項佔據該非揮發性記憶體的一物理位址空間中的一第一物理儲存位置;其中,該控制器於該物理位址空間中為該第二資料項配置一第二物理儲存位置,以在該第一物理儲存位置的物理位址與在該儲存系統所使用的一邏輯位址空間中的一第一邏輯儲存位置的邏輯位址之間進行映射,且在該第二物理儲存位置的物理位址與在該邏輯位址空間中的一第二邏輯儲存位置的邏輯位址之間進行映射。
- 如申請專利範圍第3項所述之安全儲存系統,其中,該控制器配置透過該第二邏輯儲存位置將該第二資料項寫入至該非揮發性記憶體的該第二物理儲存位置,並以該第二資料項取代該第一資料項;其中,該控制器將該第一邏輯儲存位置的邏輯位址重新映射至用於讀取該第二資料項的該第二邏輯儲存位置的物理位址,並以該第二資料項取代該第一資料項;以及其中,該控制器配置以指定一寫入保護指示符對寫入的該第二物理儲存位置的鎖定與解鎖,以在將該第二資料項寫入至該第二物理儲存位置之前解鎖該第二物理儲存位置,且在將該第二資料項寫入至該第二物理儲存位置結束之後鎖定該第二物理儲存位置。
- 如申請專利範圍第3項所述之安全儲存系統,其中,該控制器藉由向該非揮發性記憶體發送複數個寫入命令,以將該第二資料項寫入該第二物理儲存位置,每一該寫入命令載有該第二資料項的一相應部分;其中,每一該寫入命令包括使用與該第二資料項相關聯的該安全密鑰來計算獲得的一相應的命令簽章,且該控制器配置僅在使用與該第二資料項相關聯的該安全密鑰對該相應的命令簽章的檢驗後,才執行對應的該寫入命令;以及其中,該相應命令簽章被計算以用於該第二資料項以及該第二版本識別符,且該控制器配置以確認該相應的命令簽章的該第二版本識別符比該第一版本識別符還要新之後,才執行該寫入命令。
- 如申請專利範圍第1項所述之安全儲存系統,其中,該控制器配置將該第二版本識別符存入該非揮發性記憶體,以用於將第二版本識別符與一後續更新的一版本識別符進行比較。
- 一種用於安全儲存的方法,包括:儲存一第一資料項以及分配給該第一資料項的相應的一第一版本識別符至一儲存系統的一非揮發性記憶體;接收用來取代在該非揮發性記憶體中的該第一資料項的一第二資料項,其中,該第二資料項伴隨著一第二版本識別符以及一簽章;使用該簽章來至少驗證該第二版本識別符;在儲存的該第一版本識別符與經驗證的該第二版本識別符之間進行一比較;以及由儲存的該第一版本識別符與經驗證的該第二版本識別符之間的該比較所指示以第二資料項取代該第一資料項以驗證(i)該第二版本識別符驗證成功以及(ii)該第二資料項比該第一資料項還要新;其中,驗證該第二版本識別符之步驟包括:根據該儲存系統與該第二資料項的一提供者共享的一安全密鑰來檢驗該簽章;其中,檢驗該簽章之步驟包括:根據該安全密鑰以及至少該第二版本識別符來計算關於接收的該第二資料項的該簽章,以產生一經計算的簽章;以及檢查該經計算的簽章是否匹配接收的該簽章;以及其中,當該經計算的簽章與接收的該簽章匹配時,該第二版本識別符驗證成功。
- 如申請專利範圍第7項所述之用於安全儲存的方法,其中,更包括:實施一單一不可間斷操作,包括:(i)至少認證該第二版本識別符以產生一認證結果;(ii)進行該比較;以及(iii)根據該認證結果以及該比較,有條件的以該第二資料項來取代該第一資料項。
- 如申請專利範圍第7項所述之用於安全儲存的方法,其中,該第一資料項佔據在該非揮發性記憶體的一物理位址空間中的一第一物理儲存位置;其中,該用於安全儲存的方法更包括:為該第二資料項分配在該物理位址空間中的一第二物理儲存位置;在該第一物理儲存位置的物理位址與在該儲存系統所使用的一邏輯位址空間中的一第一邏輯儲存位置的邏輯位址之間進行映射;以及在該第二物理儲存位置的物理位址與在該邏輯位址空間中的一第二邏輯儲存位置的邏輯位址之間進行映射。
- 如申請專利範圍第9項所述之用於安全儲存的方法,其中,以該第二資料項來取代該第一資料項之步驟包括:透過該第二邏輯儲存位置將該第二資料項寫入至該非揮發性記憶體的該第二物理儲存位置;其中,以該第二資料項來取代該第一資料項之步驟更包括:藉由將該第一邏輯儲存位置的邏輯位址重新映射至用於讀取該第二資料項的該第二邏輯儲存位置的物理位址;以及其中,以該第二資料項來取代該第一資料項之步驟更包括:指定關於寫入該第二物理儲存位置的鎖定與解鎖的一寫入保護指示符;在將該第二資料項寫入至該第二物理儲存位置之前,解鎖該第二物理儲存位置;以及在將該第二資料項寫入至該第二物理儲存位置結束之後,鎖定該第二物理儲存位置。
- 如申請專利範圍第9項所述之用於安全儲存的方法,其中,以該第二資料項來取代該第一資料項之步驟包括:藉由向該非揮發性記憶體發送複數個寫入命令,以將該第二資料項寫入該第二物理儲存位置,其中,每一該寫入命令載有該第二資料項的一相應部分;其中,每一該寫入命令包括使用與該第二資料項相關聯的該安全密鑰來計算獲得的一相應的共同簽章;其中,用於安全儲存的方法更包括:僅在使用與該第二資料項相關聯的該安全密鑰對該相應的共同簽章的檢驗後,才執行相應的該寫入命令;其中,該相應的共同簽章被計算以用於該第二資料項以及該第二版本識別符;以及其中,執行每一該寫入命令之步驟包括:僅在確認該相應的共同簽章的該第二版本識別符比該第一版本識別符還要新之後,才執行相應的該寫入命令。
- 如申請專利範圍第7項所述之用於安全儲存的方法,更包括:將該第二版本識別符存入該非揮發性記憶體,以用於與一後續版本更新的一版本識別符進行比較。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662381028P | 2016-08-30 | 2016-08-30 | |
US62/381,028 | 2016-08-30 | ||
US15/670,062 | 2017-08-07 | ||
US15/670,062 US10754988B2 (en) | 2016-08-30 | 2017-08-07 | Anti-rollback version upgrade in secured memory chip |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201807616A TW201807616A (zh) | 2018-03-01 |
TWI676116B true TWI676116B (zh) | 2019-11-01 |
Family
ID=59772403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106129310A TWI676116B (zh) | 2016-08-30 | 2017-08-29 | 安全儲存系統以及用於安全儲存的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10754988B2 (zh) |
EP (1) | EP3291122B1 (zh) |
KR (2) | KR20180025261A (zh) |
CN (1) | CN107797827A (zh) |
ES (1) | ES2938363T3 (zh) |
TW (1) | TWI676116B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11640288B2 (en) * | 2017-09-26 | 2023-05-02 | C-Sky Microsystems Co., Ltd. | System version upgrading method and apparatus |
CN108985049A (zh) * | 2018-06-06 | 2018-12-11 | 晶晨半导体(上海)股份有限公司 | 防回滚方法及系统 |
US11258772B2 (en) * | 2018-06-19 | 2022-02-22 | Cypress Semiconductor Corporation | Secured communication from within non-volatile memory device |
JP6697038B2 (ja) * | 2018-07-31 | 2020-05-20 | 日本電信電話株式会社 | 情報処理装置、検証方法および検証プログラム |
US11263124B2 (en) | 2018-08-03 | 2022-03-01 | Micron Technology, Inc. | Host-resident translation layer validity check |
US11100228B2 (en) * | 2018-10-25 | 2021-08-24 | Dell Products, L.P. | System and method to recover FPGA firmware over a sideband interface |
CN109460249A (zh) * | 2018-11-07 | 2019-03-12 | 绿驰汽车科技(上海)有限公司 | 一种控制模块刷新方法 |
US11226907B2 (en) | 2018-12-19 | 2022-01-18 | Micron Technology, Inc. | Host-resident translation layer validity check techniques |
US11226894B2 (en) * | 2018-12-21 | 2022-01-18 | Micron Technology, Inc. | Host-based flash memory maintenance techniques |
JP2020119298A (ja) * | 2019-01-24 | 2020-08-06 | キオクシア株式会社 | メモリシステム |
CN110244976A (zh) * | 2019-05-21 | 2019-09-17 | 深圳壹账通智能科技有限公司 | 应用程序版本切换方法及装置 |
CN110412907A (zh) * | 2019-06-11 | 2019-11-05 | 武汉欣叶电子科技有限公司 | 一种香氛发生器、车载香氛控制系统及方法 |
CN114666163A (zh) * | 2019-06-26 | 2022-06-24 | 创新先进技术有限公司 | 基于存储空间互换的改进的防重放设备 |
US11301566B2 (en) * | 2019-07-03 | 2022-04-12 | Ati Technologies Ulc | Firmware anti-rollback |
US11409877B2 (en) | 2020-03-27 | 2022-08-09 | Intel Corporation | Firmware verification mechanism |
US11681514B2 (en) * | 2020-12-29 | 2023-06-20 | Pixart Imaging Inc. | Mouse chip easily updating firmware and operating method thereof |
EP4312136A1 (en) * | 2022-07-25 | 2024-01-31 | Nxp B.V. | Apparatuses and methods for verification of updated data-set |
US20240086170A1 (en) * | 2022-09-09 | 2024-03-14 | Renesas Electronics Corporation | Software update system and software update method |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2430774A (en) * | 2005-10-03 | 2007-04-04 | Nec Technologies | Software updating with version comparison steps |
CN102105883A (zh) * | 2008-06-23 | 2011-06-22 | Nxp股份有限公司 | 电子装置以及电子装置的软件或固件更新的方法 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6801994B2 (en) * | 2000-12-20 | 2004-10-05 | Microsoft Corporation | Software management systems and methods for automotive computing devices |
JP2003256228A (ja) * | 2002-02-28 | 2003-09-10 | Denso Corp | プログラム書換装置 |
US7844367B2 (en) * | 2003-12-23 | 2010-11-30 | Rain Bird Corporation | Code replacement for irrigation controllers |
US20060069849A1 (en) * | 2004-09-30 | 2006-03-30 | Rudelic John C | Methods and apparatus to update information in a memory |
US7761922B1 (en) * | 2005-02-28 | 2010-07-20 | Adobe Systems Inc. | Methods and apparatus for contemporaneously acquiring and certifying content |
US20070168668A1 (en) * | 2005-12-08 | 2007-07-19 | Chang Robert C | Media card with command pass through mechanism |
JP2007219802A (ja) * | 2006-02-16 | 2007-08-30 | Hitachi Global Storage Technologies Netherlands Bv | 記憶装置、そのコントローラ、および、その制御方法 |
ATE470909T1 (de) * | 2006-04-24 | 2010-06-15 | Ericsson Telefon Ab L M | Prüfung der berechtigung der installation einer softwareversion |
US20080307507A1 (en) * | 2007-06-08 | 2008-12-11 | Conley Kevin M | Memory device using time from a trusted host device |
US8689206B2 (en) * | 2009-03-05 | 2014-04-01 | International Business Machines Corporation | Isolating operating system in-memory modules using error injection |
US8364886B2 (en) * | 2010-01-26 | 2013-01-29 | Seagate Technology Llc | Verifying whether metadata identifies a most current version of stored data in a memory space |
JP2011227611A (ja) * | 2010-04-16 | 2011-11-10 | Sony Corp | メモリ装置、ホスト装置、およびメモリシステム |
EP2629226B1 (en) * | 2010-10-14 | 2017-08-09 | Fujitsu Limited | Content data playback device, update management method, and update management program |
US8745612B1 (en) * | 2011-01-14 | 2014-06-03 | Google Inc. | Secure versioning of software packages |
WO2012127266A1 (en) * | 2011-03-23 | 2012-09-27 | Sandisk Il Ltd. | Storage device and method for updating data in a partition of the storage device |
US9146683B2 (en) * | 2011-04-20 | 2015-09-29 | Seagate Technology Llc | Logical block address mapping |
CN102243595B (zh) * | 2011-08-03 | 2014-02-19 | 浙江大学 | 基于MMU架构的Java Card系统组件更新方法 |
CN102724308A (zh) * | 2012-06-13 | 2012-10-10 | 腾讯科技(深圳)有限公司 | 软件更新方法及软件更新系统 |
US9910659B2 (en) * | 2012-11-07 | 2018-03-06 | Qualcomm Incorporated | Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory |
US20140250290A1 (en) * | 2013-03-01 | 2014-09-04 | St-Ericsson Sa | Method for Software Anti-Rollback Recovery |
US9367701B2 (en) * | 2013-03-08 | 2016-06-14 | Robert Bosch Gmbh | Systems and methods for maintaining integrity and secrecy in untrusted computing platforms |
EP3028228A4 (en) * | 2013-07-16 | 2016-12-07 | Intel Corp | MOBILE PURSE DETECTION AT A CONTACTLESS POINT OF A SALES TERMINAL |
JP5876017B2 (ja) * | 2013-08-30 | 2016-03-02 | 株式会社ソニー・コンピュータエンタテインメント | 周辺機器制御装置および情報処理装置 |
US9898410B2 (en) * | 2013-09-10 | 2018-02-20 | Intel Corporation | Hybrid main memory using a fine-grain level of remapping |
WO2015065333A1 (en) * | 2013-10-29 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Mapping virtual memory pages to physical memory pages |
JPWO2015076354A1 (ja) * | 2013-11-22 | 2017-03-16 | 日本電気株式会社 | ストレージ装置と方法並びにプログラム |
US9230634B2 (en) * | 2013-12-09 | 2016-01-05 | Qualcomm Incorporated | Refresh scheme for memory cells with next bit table |
KR101527779B1 (ko) * | 2014-01-13 | 2015-06-10 | 현대자동차주식회사 | 효율적인 차량용 리프로그래밍 장치 및 그 제어방법 |
US9460312B2 (en) * | 2014-03-11 | 2016-10-04 | Qualcomm Incorporated | Data integrity protection from rollback attacks for use with systems employing message authentication code tags |
US9983878B2 (en) * | 2014-05-15 | 2018-05-29 | International Business Machines Corporation | Branch prediction using multiple versions of history data |
US9804922B2 (en) * | 2014-07-21 | 2017-10-31 | Sandisk Technologies Llc | Partial bad block detection and re-use using EPWR for block based architectures |
US9621549B2 (en) * | 2014-07-25 | 2017-04-11 | Qualcomm Incorporated | Integrated circuit for determining whether data stored in external nonvolative memory is valid |
US9658782B2 (en) * | 2014-07-30 | 2017-05-23 | Excelero Storage Ltd. | Scalable data using RDMA and MMIO |
KR102261815B1 (ko) * | 2014-10-30 | 2021-06-07 | 삼성전자주식회사 | 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 |
US9817752B2 (en) * | 2014-11-21 | 2017-11-14 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
US9710675B2 (en) * | 2015-03-26 | 2017-07-18 | Intel Corporation | Providing enhanced replay protection for a memory |
JP6595822B2 (ja) * | 2015-07-07 | 2019-10-23 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
GB2545250B (en) * | 2015-12-10 | 2019-06-12 | Advanced Risc Mach Ltd | Devices and method of operation thereof |
US10339317B2 (en) * | 2015-12-18 | 2019-07-02 | Intel Corporation | Computing devices |
US9940123B1 (en) * | 2015-12-29 | 2018-04-10 | Amazon Technologies, Inc. | Updating device code through a bus |
US10496388B2 (en) * | 2016-03-24 | 2019-12-03 | Intel Corporation | Technologies for securing a firmware update |
US10673811B2 (en) * | 2016-07-25 | 2020-06-02 | ColorTokens, Inc. | Updating address mapping for local and network resources |
US10289847B2 (en) * | 2016-07-29 | 2019-05-14 | Qualcomm Incorporated | Updating virtual memory addresses of target application functionalities for an updated version of application binary code |
US11461485B2 (en) * | 2016-08-12 | 2022-10-04 | ALTR Solutions, Inc. | Immutable bootloader and firmware validator |
-
2017
- 2017-08-07 US US15/670,062 patent/US10754988B2/en active Active
- 2017-08-25 EP EP17187862.2A patent/EP3291122B1/en active Active
- 2017-08-25 ES ES17187862T patent/ES2938363T3/es active Active
- 2017-08-29 CN CN201710757286.1A patent/CN107797827A/zh active Pending
- 2017-08-29 KR KR1020170109686A patent/KR20180025261A/ko not_active IP Right Cessation
- 2017-08-29 TW TW106129310A patent/TWI676116B/zh active
-
2020
- 2020-05-28 KR KR1020200064515A patent/KR102254256B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2430774A (en) * | 2005-10-03 | 2007-04-04 | Nec Technologies | Software updating with version comparison steps |
CN102105883A (zh) * | 2008-06-23 | 2011-06-22 | Nxp股份有限公司 | 电子装置以及电子装置的软件或固件更新的方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20180025261A (ko) | 2018-03-08 |
TW201807616A (zh) | 2018-03-01 |
KR20200064968A (ko) | 2020-06-08 |
EP3291122A1 (en) | 2018-03-07 |
EP3291122B1 (en) | 2022-11-23 |
KR102254256B1 (ko) | 2021-05-21 |
ES2938363T3 (es) | 2023-04-10 |
US20180060607A1 (en) | 2018-03-01 |
CN107797827A (zh) | 2018-03-13 |
US10754988B2 (en) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI676116B (zh) | 安全儲存系統以及用於安全儲存的方法 | |
CN109328352B (zh) | 靶向安全软件部署 | |
TWI667586B (zh) | 用以核對uefi認證變量變化之系統及方法 | |
WO2020192406A1 (zh) | 数据存储、验证方法及装置 | |
US8898477B2 (en) | System and method for secure firmware update of a secure token having a flash memory controller and a smart card | |
US8286004B2 (en) | Saving encryption keys in one-time programmable memory | |
US7711960B2 (en) | Mechanisms to control access to cryptographic keys and to attest to the approved configurations of computer platforms | |
US8370645B2 (en) | Protection of security parameters in storage devices | |
CN109800050B (zh) | 一种虚拟机的内存管理方法、装置、相关设备及系统 | |
US11368299B2 (en) | Self-encryption drive (SED) | |
US20160110295A1 (en) | Secure data encryption in shared storage using namespaces | |
CN111475871A (zh) | 存储器系统 | |
US10735190B1 (en) | Persistent TPM-based identifier and key pair | |
US10360370B2 (en) | Authenticated access to manageability hardware components | |
US10482278B2 (en) | Remote provisioning and authenticated writes to secure storage devices | |
US20210176065A1 (en) | Storage system and data protection method for storage system | |
CN116420145A (zh) | 基于多个组件的启动时间绑定的端点验证 | |
CN113946881A (zh) | 安全串行外围接口(spi)闪存 | |
KR101761799B1 (ko) | 단말의 보안 데이터 관리 장치 및 그 방법 | |
CN113826071A (zh) | 空中更新确认 | |
US20230179418A1 (en) | Storage controller and method of operating electronic system | |
ES2958182T3 (es) | Elemento seguro para procesamiento seguro de información digital | |
CN115391844A (zh) | 安全密钥存储装置 | |
EP2138946A1 (en) | Secure memory management system |