TW202046334A - 用於記憶體錯誤修正之系統及方法 - Google Patents
用於記憶體錯誤修正之系統及方法 Download PDFInfo
- Publication number
- TW202046334A TW202046334A TW109113285A TW109113285A TW202046334A TW 202046334 A TW202046334 A TW 202046334A TW 109113285 A TW109113285 A TW 109113285A TW 109113285 A TW109113285 A TW 109113285A TW 202046334 A TW202046334 A TW 202046334A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- authentication
- character
- content
- correction
- Prior art date
Links
Images
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/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/76—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 in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- 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/3236—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 using cryptographic hash functions
- H04L9/3242—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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/44—Program or device authentication
-
- 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
- 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
- G06F21/79—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 in semiconductor storage media, e.g. directly-addressable memories
-
- 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/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
- G11C29/4401—Indication or identification of errors, e.g. for repair for self repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/84—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved access time or stability
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/88—Masking faults in memories by using spares or by reconfiguring with partially good memories
- G11C29/883—Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C2029/4402—Internal storage of test result, quality data, chip identification, repair information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本發明揭露一種包括具有記憶體、記憶體內容驗證功能及錯誤修正功能的積體電路的自修正記憶體系統。驗證功能將要認證的內容與標準內容進行比較,且如果兩者相等,則輸出「驗證的」,除此以外輸出「非驗證的」。修正功能對記憶體中的至少一個錯誤字元實體進行至少一種可能的修正,產生可能正確的字元實體,呼叫驗證功能以施加於可能正確的字元實體,且如果驗證的輸出為「驗證的」,藉由可能正確的字元實體取代記憶體中的錯誤字元實體,從而由結合記憶體內容認證功能的信賴度之水平導出的信賴度之水平,產生錯誤修正。
Description
本發明總體上涉及積體電路,且更具體地涉及保護 積體電路(IC)的記憶體內容。
本發明的一般領域中的先前技術系統包括以下專利文件:US6838331B2、US9525546B2、US20070089034A1、US20080168319A1、US20090164704A1、US20080222491A1、US7266747B2、US20060256615A1、US7937639B2 (Infineon 2006)、US20170255512A1、US10026488B2 (Sandisk)、US20180239665A1、US20180246783A1 (Sandisk 2016)及US20180091308( Durham)。
維基百科關於資料清理的條目指出(https://en.wikipedia.org/wiki/Data_scrubbing),資料完整性(減少資料損壞)至關重要,例如用於防止作業系統、儲存系統或資料傳輸系統中的硬體或軟體故障,這些作業系統,儲存系統或資料傳輸系統均已配置為在記憶體、磁碟陣列、檔案系統、FPGA或其他地方廣泛寫入、讀取、儲存、傳輸及資料處理。為了促進完整性,藉由檢查資料中的不一致來執行資料清理。 資料清理是一種錯誤修正,它使用背景工作以週期地檢查記憶體及偵測錯誤,然後使用允許的冗餘資料(例如,偵測到錯誤的資料的校驗碼和或者副本)修正任何偵測到的錯誤。如果沒有資料清理,可修正的單個錯誤往往會累積成多個不可修正的錯誤,因此,在數據錯誤仍然足夠小而可以被修正時進行資料清理是有利的。
在說明書中提及的所有出版物及專利文件的揭露內容,以及其中直接或間接引用的出版物和專利文件的揭露內容,均通過引用併入本文。不承認此類出版物和專利文件對可專利性的重要性。
某些實施例試圖提供一種系統,用於使用記憶體認證功能(memory authentication functionality)來測試記憶體錯誤的可能的修正,不僅用於識別錯誤,而且還用於認證(或不認證)各種可能的修正。
某些實施例試圖提供一種方法,用於錯誤修正,其方法包括施加至少一個可能的錯誤修正,且之後使用積體電路現有的驗證功能來認證此可能的錯誤修正是否是正確。
某些實施例試圖提供一種錯誤修正解決方案,與習知的錯誤修正解決方案不同,不會增加記憶體的成本(相對於錯誤修正碼(error correction code, ECC),這要求每y個資料量儲存x位元)。這是因為資料的「評估」利用了習知功能的身份驗證,例如安全性和完整性感知(security- and integrity-aware)的記憶體管理,必然地涉及其自身的負擔,並且如本文所描述利用它進行錯誤修正,如此一來通常就不需要驗證之外的負擔。
應當理解,本文的實施例的適用性尤其擴展到執行具有處理器及記憶體的任何功能的任意一般微控制器。這些功能通常由處理器執行的韌體(firmware, FW)操作,FW常駐在記憶體中,且本身可能是包含在要保護的記憶體內容中。
應當理解,本文的某些實施例可以與舊有IC一起使用,同時利用舊有IC自己的舊有驗證(legacy auth)的一部分,其密碼計算可以用硬體(hardware, HW)或韌體來完成。通常提供硬體來儲存驗證摘要,可以使用通常的CPU指令的韌體,或硬體加速器。例如,如果將雜湊訊息鑑別碼(Hash-based message authentication code,HMAC)用於強認證,且舊有IC具有可操作來執行HMAC的部分加密硬體,如果舊版硬體可用於主IC的處理器存取,而因此可被處理器正在執行的韌體存取,則韌體可以在舊版IC中利用這部分舊版硬體。
替代地或附加地,可以採用在IC的舊有硬體及/或韌體中的存取控制功能的部分。
替代地或附加地,不採用現有的IC的舊有硬體及/或韌體實施本文的實施例,而是在適合的韌體中實施本文描述的功能的某些或全部,其韌體被添加至現有IC的舊有韌體的可變代碼(mutable code)。
因此提供至少以下實施例:
實施例1
一種自修正記憶體系統,其包含積體電路,積體電路包含記憶體、記憶體內容認證功能及錯誤修正功能。記憶體內容認證功能係對待認證之記憶體內容與標準內容進行比較,且當待認證之記憶體內容被認證等於標準內容,記憶體內容認證功能輸出「認證的(authentic)」,否則輸出「非認證的(non-authentic)」。錯誤修正功能係施加至少一可能的修正至記憶體中的至少一錯誤字元實體,以產生可能的正確字元實體,並呼叫記憶體內容認證功能,以施加於可能的正確字元實體,且當記憶體內容認證功能的輸出係「認證的」,則用可能的正確字元實體取代記憶體中的錯誤字元實體,從而產生能達到由認證相關的信賴度之水平導出的信賴度之水平的錯誤修正。
應當理解,將待認證內容與標準內容進行比較通常涉及計算待認證內容的某種衍生物,例如其摘要,且將衍生物與標準內容進行比較,而不是直接比較實際原始內容。
實施例2
根據前述實施例中的任何一個系統,其中認證功能可操作來執行加密上的強認證。
實施例3
根據前述實施例中的任何一個系統,其中認證功能也可操作來執行字元認證。
實施例4
根據前述實施例中的任何一個系統,其中錯誤修正功能系配置用於:將至少一可能的修正施加於記憶體中的至少一錯誤字元,產生可能的正確字元。呼叫字元認證用於可能的正確字元。當字元認證的輸出係「認證的」,隨後呼叫強認證,施加至可能的正確字元。當強認證的輸出係「認證的」,用此可能的正確字元取代記憶體中的錯誤字元,從而產生能達到由強認證與字元認證相關的信賴度之水平導出的信賴度之水平的錯誤修正。
實施例5
根據前述實施例中的任何一個系統,其中藉由施加字元認證至記憶體中的至少一字元,以偵測該錯誤字元,且其中產生「非認證的」之輸出的任意字元被認為是錯誤的,且產生「認證的」之輸出的任意字元被認為是非錯誤的。
實施例6
根據前述實施例中的任何一個系統,其中至少一可能的修正包含將錯誤字元實體中的至少一位元從0至1,或從1至0翻轉。
實施例7a
根據前述實施例中的任何一個系統,其中可能的修正係施加至複數個錯誤字元,以產生複數個可能的正確字元,且其中呼叫強認證一次而施加於修改的記憶體影像或區塊,在修改的記憶體影像或區塊的所有複數個錯誤字元中,分別地藉由可能的正確字元取代,而不是呼叫強認證複數次以分別地施加於分別地包含複數個可能的正確字元的複數個記憶體影像或區塊,從而節省記憶體、修正時間及其組合。
實施例7b
根據前述實施例中的任何一個系統,其中可能的修正施加至複數個錯誤字元,以產生複數個可能的正確字元,且其中呼叫強認證一次,以施加於複數個可能的正確字元的全部,而不是呼叫強認證複數次,以分別地施加於複數個可能的正確字元的複數個記憶體影像或區塊,從而節省記憶體與修正時間中至少一者。
實施例8
根據前述實施例中的任何一個系統,其中第一可能的修正及第二可能的修正係至少施加到至少一錯誤字元,且其中在第一可能的修正中被翻轉的錯誤字元中的任意位元,在第二可能的修正施加至錯誤字元之前不被翻轉,從而在施加第二可能的修正至相同的錯誤字元之前,復原(undo)錯誤字元之第一可能的修正。
實施例9
根據前述實施例中的任何一個系統,其中所有可能的修正施加到至少一錯誤字元。
實施例10
根據前述實施例中的任何一個系統,其中施加所有可能的修正的錯誤字元包含:不可修正的錯誤字元,其嘗試過所有可能的修正而仍無法導致其通過正確的字元認證,因此被認為是不可修正的(uncorrectable)。
實施例11
根據前述實施例中的任何一個系統,其中採用至少一試探法,以判斷該可能的修正之子集,可能的修正之子集包含少於所有可能的修正,且其中只有在子集中的可能的修正施加到至少一錯誤字元,即使在子集中沒有可能的修正導致正確的字元認證。
應當理解,試探法可以用於產生候選的修正(也稱為可能的修正)的子集、可以用於優先排序(prioritize)候選的修正,以使得在對於給定的使用範例中更可能更早發現正確的修正法,而不太可能的修正法僅在以後進行測試(例如,僅當更可能的修正未能通過驗證時)。
通常,如果優先的可能的修正的給定的子集未通過驗證,則系統不執行其餘的可能的修正(其被認為低優先度,因為其被預先的認為不太可能通過驗證)。
實施例12
根據前述實施例中的任何一個系統,其中比較待認證之記憶體內容以及標準內容,係施加強認證至在時間t2儲存在給定記憶位置的待認證記憶體內容,從而產生計算認證值,且比較此計算認證值及一儲存結果,儲存結果又叫做期望認證值,期望認證值藉由在早於該時間t2的先前時間t1時施加強認證至在給定記憶位置的記憶體內容所產生。
實施例13
一種提供錯誤修正功能至記憶體內容的方法,記憶體內容常駐在積體電路上的目標記憶體(其可為非揮發性或揮發性),該方法至少包含以下步驟:
(b)偵測在目標記憶體中常駐的記憶體內容的錯誤;
(c)透過分別由錯誤之可能的修復組成的至少一些位元置換,搜尋至少一即時簽章匹配(on-the-fly signature match),從而定義建議修復,實現成功的強認證。
(d)如果找到至少一即時簽章匹配,使用全認證作為建議修復之最終驗證。
(e)?如果使用電源中斷安全代碼修復更新程序,以修正代碼而通過最終驗證,從而提供目標記憶體錯誤修正,無需將目標記憶體攜帶至實驗室。
實施例14
根據前述實施例中的任何一個方法,且也包含提供一表示記憶體修復需求的輸出指示,例如須攜帶至少一目標記憶體至實驗室以進行完整的重新編程,因為記憶體內容之修正已經失敗。
實施例15
根據前述實施例中的任何一個方法,其中在提供輸出指示之前,只有對錯誤之單位元置換(single-bit permutation)執行搜尋。
實施例16
根據前述實施例中的任何一個方法,其中在提供輸出指示之前,對錯誤之所有單位元置換及雙位元置換執行搜尋。
實施例17
根據前述實施例中的任何一個方法,其中在提供輸出指示之前,對錯誤之所有單位元置換執行搜尋,且如果沒有發現至少一即時簽章匹配時,則對錯誤之至少一些雙位元置換再次執行搜尋。
實施例18
根據前述實施例中的任何一個方法,且也包含在偵測之前,藉由執行一次強認證及藉由即時的字元認證,保護常駐在目標記憶體上的記憶體內容。
實施例19
根據前述實施例中的任何一個方法,其中執行一次強認證包含在積體電路從低活動狀態喚醒之後立即執行的強認證。
實施例20
根據前述實施例中的任何一個方法,其中執行一次強認證包含在積體電路啟動之後立即執行的強認證。
實施例21
根據前述實施例中的任何一個方法,其中執行一次強認證包含在積體電路離開休眠狀態之後立即執行的強認證。
實施例22
根據前述實施例中的任何一個方法,其中記憶體內容包含在目標記憶體中儲存之代碼。
實施例23
根據前述實施例中的任何一個系統,其中錯誤修正功能可以操作用於施加至少一可能的修正至記憶體中的至少一錯誤字元,錯誤修正功能產生一可能的正確字元,接著呼叫記憶體內容認證功能以施加於可能的正確字元,且當記憶體內容認證功能的輸出係「認證的」,則使用此可能的正確字元取代記憶體中的錯誤字元。
實施例24
根據前述實施例中的任何一個系統,其中錯誤修正功能可以操作用於施加至少一可能的修正到至少一錯誤字元實體的字元認證,錯誤修正功能產生可能的正確字元實體,並呼叫記憶體內容認證功能,以施加於可能的正確字元實體,且當記憶體內容認證功能的輸出係「認證的」,則使用此可能的正確字元認證取代記憶體中的錯誤字元認證。
實施例25
根據前述實施例中的任何一個系統,其中先前時間t1係為記憶體之韌體更新發生之時間。
實施例26
一種包含指令的電腦程式,當處理器執行此指令時,指令使處理器實行上述一種或多種方法內的一種或多種操作。
實施例27
一種包含至少一處理器的系統,通常與對應的、專用的硬體搭配操作,其系統配置於實行本文的一種或多種方法內的至少一種操作。
以下術語可以根據其出現在先前技術文獻中的任何定義被解釋,或根據其中現在說明書中的任何定義解釋,或在其各自的範圍內包括以下內容:
存取控制(Access Control):旨在包括任何習知的存取控制功能,通常與處理器及記憶體之間的介面結合,可以作為包括硬體及韌體的虛擬邏輯實體來實施。
目標記憶體(Target Memory):可以包括在積體電路(也稱作IC)之內的任何記憶體陣列,記憶體陣列通常包括使用中及閒置的記憶體的頁面。目前未使用的閒置頁面可視為保留頁面。
當使用保留頁面時,例如其在更新記憶體頁面時作為非常短期的緩衝,其方法通常驗證保留頁面含有的內容正好是寫入的內容(例如,藉由即時比較保留頁面的內容與複製到保留頁面的資料,且確保兩者是相同的)。如果不是這種情形,則保留頁面的內容應該被抹除,且藉由重新寫入內容至保留頁面來重作。驗證可以包括在寫入至保留頁面上之後,立即讀取保留頁面,以確保寫入是成功的,導致儲存在保留頁面上或者空白頁面上的資料是正確的,例如完全等於寫入的資料。
強認證(Strong Authentication):可以包括演算法或程序,用以驗證記憶體內容。在大型代碼或持續的資料段上可以採用基於摘要/安全密鑰的哈希(HASH)函數,例如金鑰雜湊訊息認證碼(HMAC)或基於密碼的訊息認證碼(CMAC)。
用於強認證的認證代碼可以基於諸如SHA(SHA-1,SHA-2)或HMAC之類的安全哈希函數,請見https://en.wikipedia.org/wiki/Secure_Hash_Algorithms。
通常,本文的「強認證」會產生單一數值,其數值保證代表要保護的內容的整個資料的部分或整個資料的影像或整個資料的影像區塊(例如但不限於代碼),從而確保待驗證之整個資料的部分或整個資料的影像或整個資料的影像區塊的內容的完整性,而不像習知的2D水平/垂直錯誤修正方案只要確保特定的對應行或對應列進行驗證的圖像塊。
通常,強認證比字元認證在較高程度的信賴度上認證記憶體內容。因此,如本文所使用的「強認證」旨在包括產生較小的摘要(相對於本文提到的「字元認證」演算法所產生的摘要)的任何演算法或任何訊息認證代碼方案,例如,因此,與字元認證相對,本文所使用的「強認證」可視為是不可逆的,亦即,不可能從摘要中重新產生原始明文。
通常,記憶體內容(可以藉由認證識別)之內的特定資料字元中,在糾正或修正錯誤之後,且利用糾正的資料及強認證取代資料及強認證之後,用於全部記憶體內容的強認證會重新計算,且重新計算的結果會與儲存的預先計算的強認證或摘要比較。
通常,將強認證施加於給定的資料主體(其中至少一錯誤字元,其錯誤字元分別被建議的正確字元取代)。例如,施加於整個記憶體影像或僅其中一部分,這取決於要與重新計算的強認證進行比較的資料主體。例如,取決於將要與重新計算的強認證進行比較的預先計算強認證資料是否已經在整個記憶體影像(通常,將錯誤的字元取代為建議的正確字元)上或者僅在其記憶體區塊上(同上)預先計算了。
如果重新計算的強認證資料和預先計算的強認證資料(也稱為期望的強認證資料)完全相等,則通常將強認證視為「成功的」。
「強驗證」可能會在韌體要求時發生,韌體要求通常是來自應用程式系統,也就是利用並合併了積體電路的更高級別的系統(參見第1圖)。替代地或附加地,在給定IC(積體電路)上執行的應用韌體的要求下會執行「強認證」,而給定IC包含試圖修正錯誤的記憶體內容。通常,接收到此要求可回應於由諸如在某些其他IC或系統元件中識別出的攻擊的事件引起的某個觸發(例如,根據第12圖)來重新認證其自身。因此,較高級別的系統是執行本文所述功能(像是認證,例如強認證)的請求的一種可能的來源,且IC之內的韌體和硬體事件也可能如此。
字元(word):可以包括比記憶體小得多的任何資料的片段。可能包含數千個字元的記憶體陣列中的16位元資料,或128位元資料或256位元資料,或更多。通常,字元是從記憶體中檢索到的最小資料的片段,它具有自己的認證代碼。
字元認證(Word Authentication),也稱為簽章匹配:可以包括待認證「字元」的摘要。
即時簽章匹配(on-the-fly signature match):每次讀取字元時,同時讀取字元認證。通常,位元結構的長度是資料的長度加上認證的長度。同時,基於所讀取的字元重新計算認證,然後將計算的認證資料與所讀取之字元的認證進行比較。當重新計算的認證資料等於從記憶體讀取的認證資料時,則判斷為匹配。
全認證(Overall Authentication):可以包括對系統要管理的記憶體的全部內容進行操作的強認證。通常,如果任何時候,且尤其是在資料修正之後,內容的摘要與預先計算的資料相同,那麼在重新認證時,現在的內容可以視為與當時預先計算的內容相同,於是,假如在資料修正後立即執行且強認證是成功的,則建議的修正或建議的修復是正確的、經過認證或確認的。
摘要(digest):可以包括從內容產生雜湊值(hash)的演算法(例如,用於強認證),此雜湊值可確認待驗證內容的完整性。例如,確認內容是否已被更改,或者(對於具有受控存取權限的記憶體)是否經歷了未經授權的更改或被篡改。因此,摘要和雜湊值在本文中通常可互換使用,並且都同時用作名詞和動詞。
HMAC演算法:通常是一種訊息認證碼(message authentication code, MAC)算法,它在內部使用雜湊值(而不是加密)來產生MAC。
即時(on-the-fly):例如,與另一個正在進行的程序同時進行。例如,在認證中,可以讀取待認證資料的同時計算摘要並將其摘要與期望值進行比較,或者可以在(內容的)寫入操作期間計算摘要並將其摘要寫入記憶體。
舉例來說,以下的專利文件中描述了即時加密,解密和認證,其揭露內容通過引用合併於此:https://patents.google.com/patent/US9525546B2/en。
錯誤驗證(Error Verification):可以包含判斷在時間t2計算出的記憶體的「強認證資料」,與在時間t2之前的時間t1預先計算/儲存(也稱為期望的)的相同記憶體區域的「強認證資料」之間是否存在匹配或不匹配(相等或不相等)。
通常,預先計算的強認證資料包括針對記憶體空間或陣列(其使用本文的實施例來尋求保護其完整性)的整個內容的強認證摘要。
堆疊式快閃記憶體(Stacked flash):可以包括一個晶片,其晶片可以歸類為「垂直」或「3d」晶片,藉由層疊多個(有時是數十層)記憶體層或晶粒來產生極高密度儲存並降低位元成本。可以使用垂直3d堆疊技術 (bit cost scaling, BiCS)或一穿孔及插塞製程(punch and plug process)。應當理解,本文的實施例通常適用於記憶體,其包括但不限於堆疊式快閃記憶體和其他快閃記憶體/非揮發記憶體(NVM)技術。
負擔(Overhead):可以包括在記憶體容量中的冗餘,這通常是不利的,例如,對晶粒面積及產品成本之至少一者而言。舉例來說,利用錯誤修正碼(ECC)實施錯誤修正,通常意味著將ECC的X位元添加至資料/驗證訊息的Y位元,其轉換為用於錯誤修正的負擔或額外的儲存容量(Y/X)x100%。
字元實體(Word entity):可以包括儲存在記憶體中的有關字元的資料,包括字元本身(又稱為字元位元),加上涉及字元的字元驗證資料(又稱為驗證位元)。字元認證在本文中被稱為字元中「相對應的」字元認證資料。根據某些實施例,字元部分中的位元及認證部分中的位元均被掃描或翻轉,但是對於字元通常執行計算,而對於認證比較通常執行例如本文所述的全部。
本文採用以下縮寫: ECC(表示錯誤修正碼)、FW(表示韌體)、NVM(表示非揮發性記憶體)、ASIC(表示特殊應用積體電路)、 DSP(數位訊號處理)、HMAC(表示金鑰雜湊訊息認證碼)、 IC(表示積體電路)及 HW(表示硬體)。
在下一節中將詳細描述上述參閱的實施例以及其他實施例。出現在正文或圖式中的任何商標均為其所有者的財產,在本文出現的目的僅在於解釋或說明如何實施本發明的一個示例。
應當理解,在整個說明書討論中,除非另外具體說明,否則從以下討論中顯而易見的是,利用諸如「處理」、「計算」、「估計」、「選擇」、「排名」、「分級」、「計算」、「判斷」、「產生」、「重新評估」、「分類」、「生成」、「雙匹配(stereo-matching)」、「暫存」、「偵測」、「結合」、「重疊」及「獲得」,或其類似用語,是指操作、轉換及其組合表示為實際的資料的至少一個電腦、電腦系統、處理器或類似的電子計算裝置的動作、程序或其組合,像是電腦系統的暫存器、記憶體及其組合,或其他此類資訊儲存、傳輸或顯示裝置之內的電子數量。術語「電腦」應被廣義地解釋為涵蓋具有資料處理能力的任何種類的電子設備,包括但不限於個人電腦、伺服器、嵌入式核心、電腦系統、通訊設備、處理器(例如,數位訊號處理器(DSP)、微控制器,場可編程邏輯閘陣列(field programmable gate array, FPGA),特殊應用積體電路(ASIC)等等)及其他電子計算裝置。
本文分別列出的元件不必是不同的構件,且可以是替代地相同的結構。可以存在元件或特徵的陳述旨在包括(a)元件或特徵存在的實施例;(b)元件或特徵不存在的實施方式;以及(c)元素或特徵選擇性地存在於其中的實施例,例如使用者可以配置或選擇是否元件或特徵存在。
IC製造商渴望保護其積體電路的記憶體的內容。
本文中的實施例可應用於許多不同技術的記憶體,因此,本文中使用的術語「快閃記憶體」僅作為示例使用。
本發明詳細描述一種用於確保IC中記憶體內容完整性的系統。通常,對此類記憶體的存取受到控制, 摘要可以用於對受控的且授權的記憶體更新進行簽章。因此,不是受控存取的的記憶體中的任何改變都是不希望的錯誤,無論是惡意的還是可能是由於過渡的實質或電性故障(例如,實質的記憶體本身的故障)。本文中的系統可操作用於測試錯誤的可能修正,減少其中嵌入了積體電路的電腦或其他產品的「亂序」時間。通常,(一個或多個級別)認證功能,其積體電路通常出於任何其他目的用於驗證或批准可能的修正,像是使用字元認證來發現錯誤,並初步驗證其提議的修正,並使用強認證用於最終驗證建議的修正。
某些實施例在積體電路中提供錯誤偵測和修復(也稱為錯誤修正)功能,其藉由積體電路提供如第1圖所示的,或者藉由修改現有的積體電路,例如藉由在現有IC上添加軟體18。軟體18可以常駐在同一IC的另一個通常獨立的記憶體空間中,其IC具有對系統試圖保護的記憶體空間的存取授權,且通常可操作來執行認證,例如字元認證以及強認證之至少一者,以完成例如本文所述的錯誤修正以及驗證之至少一者。
某些實施例在積體電路中提供錯誤偵測及修復功能,其功能包括偵測(例如基於習知認證),以識別其中記憶體內容已被變更的事件,且從這些事件中修復,以使得IC(以及嵌入IC中的裝置,例如PC)能繼續照常操作,以盡可能減少裝置的終端使用者的負擔。這是特別有利的,因為這意味著某些事件(舉例來說,今天導致終端使用者正在處理的PC)「故障」,且終端使用者必須將電腦帶到實驗室進行修理,根據本文描述的某些實施例將不需要如此,因為具有記憶體故障的構件自身會自行糾正,從而保持系統的安全性。
錯誤修正功能可以用硬體及韌體的任何適當的組合來實施。記憶體通常能支持認證及字元認證的結構。通常,即時字元認證是在硬體中實施的(當讀取記憶體時)。強認證通常在韌體中實施,通常使用合適的加密硬體來加速程序。可以在韌體或硬體中實施位元翻轉(bit flipping)及一致性檢查(consistency check)。考慮到復雜的操作,例如NVM抹除及重寫有時會涉及到,記憶體內容的實際更新以修正錯誤通常藉由韌體完成。
第1圖的系統顯示根據某些實施例的積體電路,其可以被嵌入在更高級別的系統16中。第1圖的更高級別的系統16是執行本文描述的功能(像是認證,例如強認證)的請求的一種可能來源。替代地或附加地,更高級別的系統可以經由在第1圖中的記憶體陣列2用作存取路徑,合法地獲取其原始內容(例如,儲存在記憶體陣列2中的代碼),或隨後被更新,亦即記憶體陣列的內容被取代為不同的內容。
存取控制功能(例如,如第1圖中所示)通常是硬體及韌體的組合。通常,有硬體定義哪些儲存區域可以及不可以存取。韌體可以在某些特權級別存取控制記憶體存取的硬體。因此,可以藉由「說服」韌體有存在這樣做的許可來完成記憶體內容的更新,在這種情況下,韌體將打開邏輯閘且更新記憶體。
測試可能的錯誤修正的功能,例如根據第7圖的方法,可以包含單獨的狀態機(state machine),其狀態機可以用硬體或韌體來實施(參見第1圖中的硬體6以及韌體7之至少一者)。同樣,錯誤修正功能的邏輯也可以植入硬體及韌體的任何適當組合中。
可以結合第1圖、第9圖、第10圖及第11圖的實施例的全部或任何子集來提供第1圖的系統或其中說明的區塊的任何子集。及/或結合前面的第2圖中說明的所有或任何子流程。
第2圖說明將認證功能與錯誤修正相結合的方案或方法,其在記憶體負擔方面是經濟的。因為習知ECC需要用於儲存每條資料的ECC位元的記憶體容量,而本文中的實施例藉由利用在現有設計中存在的或在新設計中提供的即時認證來消除錯誤偵測或修正代碼的使用或儲存,而在沒有損害安全級別的情況下用於錯誤修正。
安全級別通常根本不會受到影響,因為在使用ECC時,攻擊者可能會同時修改資料及其ECC,而資料及ECC均被修改為相互匹配,因此無法即時識別錯誤,而是僅在執行字元認證或強認證時,系統才可以識別出錯誤。
應當理解,術語「負擔」在本文可以用來包括藉由認證,或者藉由錯誤修正,或者可以存儲在任何合適的位置中的其他記憶體管理程序引起的存儲需求。舉例來說,在字元認證(又稱為字元級別認證)或字元ECC中,可以使用更寬的字元長度來生成記憶體,因此認證/ECC可以相鄰字元儲存,使得在讀取字元時,認證/ECC位元也被存取。或者,在硬體系統中,可以在讀取所需的實際負載(與它的認證/ECC位元相對)的同時,實施一個附加的記憶體構件讀取,以有效地允許更大的字元長度,然後可以將整個記憶體的字元長度專用於實際負載,其實際負載的認證/ECC位元位儲存在其他位置。
如圖所示,第2圖的方法可以包括以下操作的全部或適當的排序的任何子集。
操作步驟10:提供一種積體電路,其記憶體內容,例如儲存在記憶體中的代碼,受「強認證」以及「字元認證」保護:
啟動「強認證」,(例如,在大的代碼段上執行HMAC或CMAC)。例如,用以對抗冷快閃記憶體內容替換。
即時「字元認證」,(例如128位元負載+16位元認證)。例如用以對抗熱快閃記憶體內容替換,例如直接從快閃記憶體執行代碼。
即時加密、解密及認證在以下的專利文件中進行了描述,其揭露內容藉由引用合併於此:https://patents.google.com/patent/US9525546B2/en。
操作步驟20:每當即時字元認證失敗時(例如在運行時),積體電路就會暫停(例如直到下一次啟動)或自動重啟。舉例來說,假定儲存空間中有要保護的代碼。因此,從記憶體中進行讀取通常意味著IC中的處理器正在從記憶體空間中擷取代碼,這反過來通常意味著如果識別出字元驗證失敗,則主處理器只會擷取到更改的代碼。此時,處理器可能會暫停以防止執行更改的代碼,且通常需要開始修復。修復動作可以包括:例如跳轉到已知為100%安全的另一個代碼,例如ROM中的代碼,或重置以從ROM重新開始執行,無論是藉由軟體還是硬體,這會觸發例如本文所述的錯誤修正以及驗證之至少一者。
操作步驟30:在下次啟動時(或按照上面的示例),所有「字元認證」都已作為「強驗證」計算的一部分進行檢查,其「強驗證」計算已用於保護記憶體內容。如果在開機認證期間「字元認證」失敗(與運行時相反),則構成錯誤偵測,且因此積體電路會嘗試修正在其記憶體內容中發現的錯誤,例如藉由執行第3圖的操作140至操作170的全部或任何子集。
操作步驟80:如果記憶體是代碼執行記憶體(code execution memory),則如果進行錯誤修正(例如執行第3圖的操作140至操作170的全部或任何子集)可導致解析出修正的代碼,則執行適當的電源中斷安全代碼修復更新流程。一旦成功修正代碼後,處理器可以恢復運行,也稱為正常操作。
如圖所示,第3圖的方法可以包括以下操作的全部或適當的排序的任何子集。
操作步驟140:檢查損壞字元(有發現錯誤的字元,例如因為在啟動驗證期間,用於字元的「字元驗證」失敗)的所有位元置換(例如,在說明的實施例中為128+16個位元置換),以搜尋匹配。要強調的是,資料及認證之間可以存在任何適當的比例,128位元及16位元參數僅是說明性的。
專用HW或SW可以快速掃描所有置換,例如在記憶體上或作為記憶體控制及介面單元的一部分,而無需循環地從記憶體讀寫,例如快閃記憶體。
根據某些實施例,專用緩衝器可保存損壞字元的資料結構,其中可以按位元對損壞字元進行操作。然後,使用專用的韌體代碼或硬體狀態機,掃描資料結構的排列,一次翻轉一個位元(例如,參見第10圖中的「翻轉一位元」的步驟)或更多。每次置換後,對當時的、經過操作的、位元翻轉的資料結構進行字元認證計算。通常,可以理解,置換的掃描可以藉由韌體來完成,或者替代地,可以通過專用硬體來完成。
操作步驟150:如果找到匹配,則可以將經過修正或改正的(例如,對錯誤內容的建議修正)錯誤資料或內容作為「強認證」計算的一部分進行摘要。依據認證演算法及修正的位元數量,可能會找到多於一個的匹配。在這種情形中,可以嘗試匹配位元組合的所有置換(也稱為位元型樣),並採用產生正確「強認證」的置換。正確通常意味著對(或施加於)已改正的代碼進行「強認證」的結果,等於對(或施加於)記憶體的原始內容進行強認證的預先計算的結果。
舉例來說,對於單個位元錯誤,其方法可以包括翻轉第一位元,例如位元0,並接著檢查認證, 然後是隨後的位元,例如位元1、位元2等等,直到找到匹配。對於2個位元的錯誤,可以一次翻轉一對位元,並且通常會分別考慮兩個位元的每對可能的數值。
操作步驟160:否則,可選地,可嘗試修正多個錯誤,例如藉由再次搜索,這次對錯誤的至少某些雙位元置換。應當理解,一個以上的錯誤(涉及一個以上的位元)是可能可以修正的,但是根據一些實施例,涉及複數個位元的錯誤無法修正,因為其計算比一個位元錯誤的計算更複雜,需要大約X2
/2(例如1442
/2)次的檢查。
操作步驟170:如第1圖所示,如果無法修正錯誤,通常會向終端使用者提供警報,例如經由高級別軟體。
第4圖是當記憶體是基於頁面的非揮發性記憶體(page-based nonvolatile memory)時,用於實行錯誤修正及驗證的方法。通常,在這樣的記憶體中,抹除操作只能抹除整個頁面(或整個記憶體)。因此,當發現需要修正的錯誤時,通常執行頁面調整以使修正能夠被施加,例如,當施加修正時,將具有修正資料的頁面複製到某些保留頁面。更一般地,應當理解,本發明包括在記憶體使用限制下進行的修正。
可以在任何合適的時間執行第4圖的方法,例如在偵測到錯誤時立即(下面的操作步驟220),或是在下一次IC開啟時(下面的操作步驟230)。
如第4圖所示,第4圖的方法可以包括以下操作的全部或適當的排序的任何子集。
操作步驟210:識別出待修正的快閃記憶體頁面。如果有一個頁面以上需要修正,則將需要修正的字元(位址+資料)保留(或是此字元的指示)在非揮發性記憶體中。接下來,執行操作220以立即修正,或執行操作230以在下次開機後修正。
操作步驟220:修正每個待修正的頁面,例如,藉由針對每個頁面執行第5圖所示之操作步驟310至操作步驟350的全部。
操作步驟230:在開機期間,在執行快閃記憶體代碼認證之前,開機代碼(boot code)檢查是否存在已知為例如標記為可用的頁面,且如果這樣,則在繼續開機之前啟機代碼可完成操作步驟310至操作步驟350的所有或任何子集。否則,某些更高級別的韌體可以執行「垃圾收集(garbage collection)」,例如,壓縮記憶體內容以佔用最小的可能的記憶體空間,因此釋放至少一頁面用於臨時之錯誤修正。
如第5圖所示,第5圖的方法可以包括以下操作的全部或適當的排序的任何子集。
操作步驟310:在保留的預定義的快閃記憶體頁面中寫入快閃記憶體頁面的位址及修正的資料(代碼),且驗證其是否正確寫入。
操作步驟320:在保留頁面中設置一位元,其指向例如帶有有效資訊的頁面的其他韌體,或者正在使用中且不應被抹除的韌體。在本發明的系統例如被中斷的情況(例如使用者關機且之後嘗試恢復操作下),此位元也是有用的,。
操作步驟330:抹除原始快閃記憶體頁面。例如,在第4圖的操作步驟210中發現錯誤的頁面。
操作步驟340:從保留的快閃記憶體頁面的已修正資料更新原始快閃記憶體頁面,且驗證其是否正確寫入。
操作步驟350:抹除所保留的頁面以允許其將來能夠用於其他頁面中的錯誤修正。
觸發在前面的第2圖的錯誤偵測及修正方法的變化型可以包括:
(I) 即時(On-the-fly):藉由記憶體檢查立即回應字元認證失敗:如果從目標記憶體讀取時發現字元認證不匹配,則在處理器的下一個執行序列之前先執行上述程序。
舉例來說,如果正在執行來自記憶體的代碼,且在代碼擷取歧見就識別出字元認證失敗,則通常會暫停代碼執行以允許例如掃描整個記憶體空間或陣列以查找失敗或錯誤。此後,代碼執行暫停終止,且執行處理器的執行序列中接下來要執行的操作,或者可以從代碼的開頭重新開始執行。在資料不是代碼的情況下,可能會在讀取資料期間出現錯誤指示,在這種情況下,處理器可能會再次暫停,且可能觸發記憶體掃描/修正/驗證。
(II) 啟動(Power-up):在每個積體電路從低活動狀態中喚醒的事件中觸發,例如,啟動或從休眠狀態改為活動狀態後,將重新計算強認證,並與預先計算的強認證資料相比,且在重新計算的及預先計算的強認證之間出現不匹配的情況下,啟用上述錯誤修正機制。
(III)週期的資料清理(Periodic aka scrubbing):有時,重新計算強認證,並將重新計算之結果與預先計算的強認證相比較,且如果重新計算的強認證與預先計算的強認證不匹配,則可以啟用本文描述的記憶體錯誤修正的程序。例如,可以使用一些可編程計時器來實施觸發,其可編程計時器給出了要執行上述操作的時間指示。此機制通常會帶來一些損失,因為積體電路的正常操作會受到干擾及中斷,但可獲得更大的保護。
(IV)初始化(Initiated):藉由外部事件觸發,例如,如果裝置(也稱為積體電路)識別出(例如使用可以存在於IC中的硬體或韌體駭客偵測功能)駭客攻擊或其他一些導致功能錯誤的嘗試,將重新計算強認證,再與預先計算的強認證相比,且如果重新計算的強認證資料及預先計算的強認證資料之間存在不匹配,則可以啟啟用本文描述的記憶體錯誤修正的程序。
(V)存取觸發:每次存取記憶體時都要檢查整個目標記憶體。實際的,例如對於不經常執行的代碼,此實施例是合適的,如果記憶體很少被存取,且必須即時資料完整性是極重要的,那麼性能負擔就相對不重要。
應當理解,可以在任何給定的裝置中提供以上變化型的全部或任何子集。
如第6圖中所示,用於第1圖的積體電路的操作流程,可以藉由第1圖的處理器1來控制或落實,流程可以包括以下操作的全部,或適當地排序的任何子集,例如以下順序。
操作步驟1001:在存儲區域中填入內容,例如 代碼,其中包括多個字元。對於每個字元,在寫入時計算「字元認證資料(word auth)」,並存儲「字元認證資料」例如在這個字元旁邊。
操作步驟1002:對記憶體內容進行「強認證」,並將結果儲存在記憶體中的某處(例如,可以藉由實體離線準備記憶體影像進行預先計算,其實體具有執行強認證的能力),且提供給安全記憶體陣列2常駐在其中的IC。
應當理解,通常在IC外部準備一個記憶體影像(memory image),然後將其「注入」到IC中,並與附加在內容上的認證代碼一起進行編程。
操作步驟1003:照常使用記憶體,其包括執行記憶體讀取操作。每個記憶體讀取操作包括:
首先,對目前的內容進行字元認證計算,其又稱為重新計算的「字元認證」。
接著,從記憶體中讀取在操作步驟1001中存儲的預先計算的字元認證資料,並且將計算的認證資料以及預先計算的字元認證資料進行比較。
如果重新計算的「字元認證資料」等於從記憶體中讀取的預先計算的「字元認證資料」,則繼續操作,因為一切資料很好。否則,若出現不相等,則假設已識別出錯誤,進入錯誤修正序列。
適當的錯誤修正序列流程在第7圖中所示,包括測試可能的錯誤修正,且可以包括以下操作的全部,或適當地排序的任何子集,例如以下順序,且還可以藉由錯誤修正功能來控制或落實,其錯誤修正功能可以由軟體實施並且可以常駐在例如第1圖的處理器1中。
操作步驟1006:對待修正的內容執行錯誤修正,待修正的內容包括字元及其相關的字元認證,兩者係組合(例如依序組合),從而提供組合的位元串。錯誤修正包括:掃描所有位元,翻轉組合後的位元串中的每個位元(如果目標是修正單位元錯誤)以及每對位元(如果目標是修正雙位元錯誤)之至少一種,且重新檢查字元認證資料。不要與儲存在記憶體中的記憶體字元認證資料進行比較,因為錯誤可能在字元認證資料中而不是字元。代替的,翻轉一位元,重新計算字元認證資料,且將重新計算的字元認證與可用的字元認證資料進行比對。舉例來說,可以從記憶體中讀取X個位元之讀取資料以及Y個位元之認證資料所形成之結構,然後在此組合結構中翻轉位元。如果被翻轉的位元在X位元之資料中,則對為修正後的資料的X位元重新計算認證,且將重新計算的認證資料與從記憶體中讀取的Y位元之認證資料進行比較。
如果被翻轉的位元是Y位元之認證資料之位元,則重新計算從記憶體中讀取的X位元之資料之認證資料,且與經過修正的Y位元認證資料進行比較。
如果找到匹配(發現相比較的字元認證資料相等),則表示字元及字元認證資料是「一致的」,則跳至操作步驟1009。如果未找到匹配,則翻轉下一位元(或下一對位元),並重複上述重新計算操作及比較操作。應當理解,在此處和其他地方,術語“下一個”可以是實際上相鄰的,或者可以是藉由任何合適的試探法所定義的位元之間的排序而被認為是序列的或順序上的下一個序列。
操作步驟1008:達到此步驟通常意味著位元翻轉(或用於兩位元錯誤的一對位元翻轉) 沒有產生可行的修正,因此錯誤修正在字元級別上失敗。因此將此記憶體內容標示為不可修正的記憶體內容,例如,藉由警告如第1圖所示的更高級別的軟體、暫停系統、處理器1及其組合可以提示(例如藉由產生合適的輸出指示)更高級別的修復,例如,將裝有積體電路的裝置發送到實驗室進行人工技術支援。
操作步驟1009:進行「強認證」,包括計算摘要,例如整個記憶體區域的HMAC,從而產生強認證結果。通常,強認證會產生摘要/MAC/簽章。
操作步驟10010:將強認證結果與操作步驟1002中儲存在記憶體中的預先計算的預計算強認證結果進行比較。如果結果相等,則存在強認證匹配;否則(兩結果不相等),存在強認證不匹配。
操作步驟10011:如果存在強認證匹配,表示修正後記憶體內容合格,則繼續照常使用此記憶體,例如執行操作步驟1003。
操作步驟10012:否則,亦即如果存在強認證不匹配,執行例如第8圖中的不匹配程序。如第8圖中所示,用於操作步驟10012中的不匹配程序的合適的流程,且其流程可以包括以下操作的全部,或適當地排序的任何子集,例如以下順序,且還可以藉由錯誤修正功能進行控制或落實。
操作步驟10012.5:藉由重做操作步驟1006來掃描第1圖中的整個記憶體陣列2,但修正所有已識別的錯誤。
操作步驟10013:藉由重做操作步驟1009至操作步驟10011重做強認證。
操作步驟10014:如果現在強認證失敗(亦即不匹配),則假定無法修正,因此可能需要更高級別的修復。因此將記憶體內容標示為不可修正的記憶體內容,例如藉由警告如第1圖所示的更高級別的軟體、暫停系統、處理器1及其組合可以提示(例如藉由產生合適的輸出指示)更高級別的修復,例如,將裝有積體電路的裝置發送到實驗室進行人工技術支援。
測試可能的錯誤修正的功能,例如根據第7圖的方法,可以包含例如可用硬體或韌體實施的個別狀態機。其功能可從認證功能中取得「認證服務」,通常包括嘗試修正之後對字元認證進行的驗證(例如,上述操作步驟1006)、使用強認證來驗證整個記憶體(例如,上述操作步驟1009至操作步驟10012)、或是兩者之組合。
以上所有或大部分的硬體實施通常會產生最佳性能,例如,因為如果整個流程都在硬體中進行,則在使用記憶體時由硬體執行即時驗證,如果沒有錯誤,則不會造成性能損失。
如果幾乎所有的實施都在韌體中,則可以省略即時字元認證,而改採週期地、偶爾或是兩者組合的進行記憶體掃描以檢查錯誤,且之後如果發現錯誤,則執行修正及驗證(例如,上面的操作步驟1006至操作步驟10012)。
如果所有實施都在韌體中,則可以採用現有的(也稱為舊有的)IC。現有的IC通常具有現有的(又稱為舊有的)記憶體結構,其可以在軟體中對其進行邏輯上的重新排列或管理,以儲存在本文所述的錯誤修正程序中計算出的字元認證。在這種情況下,錯誤偵測及修正通常不會在如上所述的某個觸發下即時實行,而是離線實行。
可以採用任何合適的實施方式,以確保用於測試可能的錯誤修正的介面具有認證功能或者從「認證服務」取得的認證功能,即使在現有(或舊有)IC其將舊有認證功能可用於將記憶體內容與某些標準內容(舉例來說,在最近的認證記憶體更新之後立即計算的摘要)進行比較。實施方式通常可以確保認證功能將建議的待測試的錯誤與標準內容進行比較。可透過以下範例確保上述實施方式:
(1) FW可以從記憶體中讀取資料字元以及字元認證資料。
(2) FW可以自行計算資料字元的認證資料或使用一些專用硬體來計算資料字元的認證。
(3) FW可以將計算結果及從記憶體中讀取的認證資料進行比較,並查看資料結構是否一致或有錯誤。
(4) 如果FW識別出錯誤,則FW可以執行本文所描述的位元翻轉程序,如以上操作(2)中那樣計算認證資料。
(5) 一旦透過記憶體完成錯誤修正,FW可以單獨或使用某些硬體來計算整個記憶體的內容之摘要,這些硬體可以加速或簡化系統的設計人員所選擇的任何MAC演算法的執行。
本文中某些實施例的優點是錯誤修正不會產生上述需要額外認證(通常為強認證及字元認證)的負擔。
本文中某些實施例的另一個優點是,如本文所描述的錯誤的推測性修正(測試各種可能的錯誤修正),而沒有對位元數設置硬性限制。相反的,習知的錯誤修正方式實施了某種錯誤修正代碼。例如,對於給定的X位元大小的資料,要修正某些預定數量的錯誤,二進制組合的數量以及所選的方法係表示了錯誤修正代碼所需的位元數量。一旦實施,就只能修正預定數量的位元錯誤,而不能修正更多。修正錯誤的實際複雜性通常會隨著嘗試修復的位元數量而成長。然而,如果需要且給定的使用情形是合理的,可以使用非常強的認證來驗證修正的任何數量的錯誤,則可以修正任何數量的位元錯誤。
本文中某些實施例的另一個優點是,利用認證進行驗證以產生具有高信賴度水平的真正正確的修正。舉例來說,如果使用強認證來驗證提議的修正,這通常意味著,一旦對「改正後的資料」(也就是提議的修正)的強認證的結果顯示與預期的強認證匹配(例如,等於),其暗示加密級別的信賴度對改正後的資料確實是正確的。
與實施ECC(錯誤修正代碼)的現有技術系統相比,本文中某些實施例的另一個優點是防止惡意的內容更改。然而,惡意攻擊可能會以相互一致的方式替換資料及錯誤修正代碼,從而使錯誤似乎已得到改正,而實際上內容或代碼是不良的或惡意的。相反的,因為本文的方法在密碼學上的強度,藉由使用本文所描述的用於錯誤修正的認證的優點,駭客變得不允許如上述惡意地替換資料及認證代碼。
應當理解,使用即時認證可能是特別有利的,由於性能保持不變(認證並行發生),及/或已讀取的資料可以立即使用而沒有延遲,除非發現它包含錯誤。
任何記憶體,例如代碼執行記憶體,或持續的或不經常更改的大資料區塊,及/或特別是在控制對記憶體內容的存取時,例如僅經由安全或受控(韌體)更新進行更改的記憶體內容,可以從第2圖的流程中受益,尤其是在記憶體不受保護或外部的情況下。可以從第2圖的流程中受益的記憶體包括但不限於EEPROM、硬碟、NAND快閃記憶體、NOR快閃記憶體、SDRAM或是SRAM。
應當理解,除了安全(韌體)更新之外,存在各種解決方案用於對記憶體的受控存取。特別地,已知各種技術可以嚴格控制對記憶體內容的存取,例如但不限於其內容只能被執行,又稱為僅執行(execute-only)記憶體的記憶體,或者其內容只能被讀取的記憶體,且在獲得某些存取特權或進行認證後,可以經由專用閘道進行更新或寫入,或者只有在更改存取控制設定之後才能寫入的記憶體,其設定只有具有某些存取特權時才可以改變的。
儲存內容不經常更改:例如,某些儲存內容的更改頻率通常足夠低,以使本文所描述的系統及方法產生的負擔具有成本效益。舉例來說,已知由於軟體更新定期或不定期發生,因此代碼每隔幾個月僅更改一次,或者,可能已知某些資料每隔幾天或幾週僅更改一次,或者可能已知平均在那些間隔內更改。相反的,某些資料可以由軟體操縱,因此每次執行或運行程式時都可能會更改。
許多變化型是可能的。舉例來說,根據某些實施例,一旦遇到錯誤,就將其改正,也稱為修正,然後立即修復記憶體。之後,無論運行什麼程序,都能繼續運行。
替代地或附加地,可以藉由將實際記憶體內容修復延緩到稍後來提供覆蓋修補(overlay patch),以使裝置能夠繼續運行。這可能是有利的,因為NVM的處理時間可能會很長,當裝置嘗試線上完成此操作時引起延遲,因此當裝置離線完成此操作且稍後執行,便能使裝置能夠繼續運行。在專用置換修補中的快取(非揮發性或揮發性)內容可以常駐在任何電腦記憶體中,通常在同一IC上,使用目標記憶體的任何處理器都可以存取其記憶體,以便在需要目標記憶體時將其拔出修復。
可能之變化型的另一個示例,可以是單獨地或以任何合適的組合使用任何合適的認證來測試可能的錯誤修正,包括但不限於強認證及字元認證級別。
如果流程要求通過強認證來僅識別記憶體中存在的錯誤,且一旦識別出存在錯誤,每個儲存位元可以被翻轉,且之後強認證可以用來驗證位元翻轉(或其一對位元)。然而,儘管強認證是繁重的,亦即耗時長且消耗資源的操作,但這對於小型儲存區域而言可能是完全可行的實施,為此,可能不需要提供兩個級別的認證。
在許多使用情況下,使用2個級別對於確保這個程序是有效的。在本文中,2個級別稱為字元認證級強認證,且在程度上更一般地有所不同,亦即前者時間較短及/或消耗較少的資源,後者時間較長及/或消耗更多的資源
對於大型存儲區域,具有字元認證(這很常見),通常會導致效率更高的程序,因為可能會在字元基礎,也稱為字元級別上偵測到錯誤,且在字元級別上也可能會發生對建議的基本驗證,也稱為推測性修正(speculative corrections),因此,相對於省略字元級認證的實施例,不需要太頻繁地運行用於認證或驗證修正的強認證。
示例:
示例(1):推測建議的更正,施加建議的更正,然後通過強認證來驗證修正。 如果失敗,再次重試、推測另一個修正等等。
示例(2):推測建議的更正,檢查字元認證,如果失敗,推測另一個提議的修正,且再次使用字元認證進行檢查, 繼續直到獲得成功的字元認證。然後,使用強認證作為修正的最終驗證。 無需字元認證也可以使用。
另一個可能的變化型是,可以使用任何合適的方法對儲存內容實際進行驗證的建議修正。舉例來說,如果記憶體內容是代碼,則可以使用電源中斷安全代碼修復更新程序來修正代碼,以將經驗證的提議修正施加於代碼,例如因為身份驗證失敗而被發現是錯誤的代碼。
可以依據性能、區域、運行時間及可靠度的折衷來設計變化型,例如但不限於:
A:較大的「即時代碼字元」會產生以下結果:
(1)更小的快閃記憶體區域及獲取吞吐量負擔(throughput overhead)(對於給定的“冗餘”寬度)
(2)更長的位元修正時間(為了掃描所有位元)
(3)較大的獲取延遲(如果在執行之前等待檢查,則可以使用US20140082721的方法,此申請中專利文件(https://patents.google.com/patent/US20140082721A1/en?oq=13%2f965%2c256),藉由引用將其公開內容併入本文描述了一種計算裝置,包括:一輸入橋,其耦合以接收一資料項序列,以供該裝置在執行一程式時使用;一輸出橋;一處理核心,耦合以從該輸入橋接收該資料項序列,且執行該程式,以使該輸出橋回應於該資料項序列中的一給定資料項,輸出一訊號;以及一認證邏輯,用於在該處理核心執行該程式時,接收及認證該資料項序列,並禁止藉由該輸出橋輸出該訊號,直到該給定資料項已被認證為止。
B:相對於較小的選擇,較大的「即時冗餘字元」產生以下結果:
(1)更安全,更可靠,更快速的修正
(2) 較大的快閃記憶體區域以及獲取吞吐量負擔
C:相對於較小的選擇,較大的「強認證」大小(以位元為單位)會產生以下結果:
(1)更安全,亦即對已認證的原始內容或記憶體的校證內容是正確的信賴度更大
(2)較大的快閃記憶體區域負擔(通常可以忽略)
(3)SHA256-512 HMAC似乎是一個不錯的選擇
D:與較大的選擇相比,較小的代碼分段(將代碼分成每個具有「強認證」的分段時)會產生以下結果:
(1)較大的區域負擔
(2)更快的修正時間
(3)如果HASH是累積的,即可以保留開啟/循環運行時間,亦即對整個代碼使用一個HASH,同時保留中間結果以加快修正程序。
一種建議是動態地確定權衡參數,例如,選擇不同(較大或較小)的「即時冗餘字」及/或不同(較大或較小)的「強認證」大小及/或不同(較大或較小)的分段(將代碼分為具有「強認證」的每個分段時)。每個快閃記憶體統計訊息及/或每個磨損級別(wear level),例如,當目標記憶體老化時,將上述權衡參數更改為比目標記憶體較年輕時更快及/或更強健的錯誤修正,例如,由於較舊及/或更磨損的快閃記憶體,相對於較年輕及/或較少磨損的快閃記憶體的操作較慢。
根據某些實施例,提供了具有統計修正的即時「字元認證」。與其對整個目標記憶體中的所有單位元翻轉選項(可能的修正)執行蠻力的,也稱為基本型掃描相反,如果在給定的字元中偵測到錯誤,則採取「捷徑」(相對於基本型實施例)。
嘗試藉由掃描或搜尋給定字元的所有單位元翻轉再次嘗試修正給定的字元,且如果當負載字元可以被修正為與認證的字元一致時,則啟用強認證作為對記憶體內容的完整性的最高驗證。
因此,本發明的實施例尤其包括:
實施例(A): 一種用於組合認證及錯誤修正的方法,包括:
啟用強認證,以驗證目標記憶體內容的至少一部分的完整性,包括掃描整個目標記憶體中至少一些的至少一些字元翻轉選項。
實施例(B):根據實施例(A)的方法,其中對整個目標記憶體執行掃描。
實施例(C) :具有統計修正實施例的即時「字元認證」,根據實施例(A)的方法,其中採用字元認證,並且其中如果在給定字元中偵測到認證錯誤,則僅對給定字元執行掃描,而不是整個目標記憶體,從而嘗試修正給定的字元,以及如果當負載字元與認證字元保持一致時,則啟用強認證作為記憶體內容完整性的最高驗證。
應當理解,在統計修正中,不能保證成功修正記憶體內容。
在第1圖中,「其他處理器功能」可以理解,所說明的處理器可以具有除本文所描述的特定功能以外的任何主要功能,並且可以使用任何周邊設備,例如但不限於計時器、通訊通道、轉換器的全部或任何子集。
在第10圖中「翻轉一位元」的步驟,例如 可以使用普通邏輯設計者及軟體設計者已知的任何合適的置換掃描程序以硬體、軟體及其組合來實施。
在第9圖以及第10圖之至少一者的「計算認證」的步驟,可以包含線上的字元認證計算。 應當理解,字元認證可以具有不同的強度等級;通常,強度及性能之間需要進行權衡。如果將強度發揮到極致,則可以假設字元認證可能是修正的最終裁定。 在這種情況下,強認證變為可選的(optional)。因此,可以單獨使用字元認證,或者可以單獨使用強認證,或者可以同時使用兩者,在這種情況下,可以簡化字元認證(可以以較低級別的強度執行,從而產生更好的性能),則依靠強認證做出最終裁定。
如果韌體用於實現本文中的某些實施例,則可以將其保存在非揮發性記憶體中,例如快閃記憶體或ROM。
替代地,本文描述的某些實施例可以部分地或排他地(亦即,沒有韌體)在硬體中實施,在這種情況下,本文描述的一些或全部變數,參數,序列操作及計算可以在硬體中。
應當理解,諸如「強制性」、「要求」、「需要」及「必須」之類的術語是指為了清楚起見而在本文描述的特定實施方式或應用的背景下做出的實施方式選擇,並且不旨在進行限制,因為, 在替代實施方式中,相同的元件可能被定義為非強制性和非要求的,甚至可能被完全消除。
在分離的實施例的上下文中描述的本發明的特徵,包括操作,也可以在單個實施例中組合提供。例如,系統實施例旨在包括相應的流程實施例,反之亦然。特徵也可以與本領域中已知的特徵相結合,且特別地,儘管不限於在背景技術部分或其中提到的出版物中所描述的那些。
相反,為簡短在單個實施例的上下文中或以某種順序描述的本發明的特徵,包括操作,可以分離地或以任何合適的子組合的方式提供,包括本領域已知的特徵(特別是,但不限於在背景技術部分或其中提到的出版物中描述的內容),或以其他不同順序排列。「例如」用於表示不旨在限制的示例。
每種方法可以包含說明或描述的一些或全部操作,以適當的,例如本文說明或描述方式排序。
1:處理器
2:記憶體陣列
6:硬體
7:韌體
10:積體電路
16:系統
18:軟體
10、20、30、80、140、150、160、170;210、220、230、310、320、330、340、350、1001、1002、1003、1006、1008、1009、10010、10011、10012、10012.5、10013、10014:操作步驟
在以下圖式中說明本發明的某些實施例:
第1圖是根據本發明的一個實施例的積體電路的示意圖,其積體電路具有一些要實現的功能(又稱為「其他功能」),且具有錯誤修正功能,包括利用認證來測試可能的錯誤修正的功能。
第2圖是用於將認證與錯誤修正相結合的流程的簡化流程圖說明。
第3圖是用於執行第2圖中的操作30的示例流程的簡化流程圖說明。
第4圖是當記憶體是基於頁面的非揮發性記憶體時,且用於實行錯誤修正及驗證的示例流程的簡化流程圖說明。
第5圖是用於執行第2圖中的操作步驟220的示例流程的簡化流程圖說明。
第6圖是用於第1圖的積體電路的操作的流程的簡化流程圖說明。
第7圖是合適的錯誤修正序列流程的簡化流程圖說明,包括測試可能的錯誤修正。
第8圖是用於執行第7圖中的操作步驟10012的示例流程的簡化流程圖說明。
第9圖是第1圖的儲存區域3的示意圖,也顯示了字元認證比較功能。負載(payload)和認證大小僅以示例方式表示,而可以具有任何其他數值。
第10圖是根據某些實施例的掃描及錯誤修正功能的示意圖。應當理解,可以序列地,或基於任何合適的試探法順序地翻轉位元。
第11圖是第1圖的儲存區域3的示意圖,也顯示了強認證比較功能。
第12圖是根據某些實施例顯示如何觸發強認證週期的示意圖。
包括在本發明範疇內的方法和系統,可以包括功能區塊的一些(例如,任何合適的子集)或全部,用任何適當的順序,如圖所示,以具體說明的實施方式用示例的方式顯示。
本文描述及說明的計算的,功能的或邏輯的構件可以用各種形式實施,舉例來說,像是硬體電路,但不限於習慣的VLSI電路、邏輯閘陣列或可編程硬體裝置,例如但不限於FPGA,或作為軟體程式代碼,其軟體程式代碼儲存在至少一種有形或無形的電腦可讀取介質上,並且藉由至少一個處理器或其任何合適的組合執行。
特定功能構件可以由一個特定的軟體代碼序列或多個此類軟體代碼組成,這些軟體代碼共同作用、運轉或利用參考如討論中的功能構件所描述的作用。舉例來說,構件可以分佈在多個代碼序列上,像是但不限於物件(objects)、程序(procedures) 、功能(functions) 、常式(routines)和程式(programs),且可以發起自通常協同操作的幾個電腦檔案。
如果適當的話,本文描述的任何邏輯功能可以被實施為及時應用程式,且其可以採用任何適當的架構選項,像是但不限於ASIC或DSP或其任何適當的組合。實際上,本文提到的任何硬體構件可以包括一個或多個硬體裝置,例如晶片,其可以位於同一地點或是位置彼此相遠離。
1:處理器
2:記憶體陣列
6:硬體
7:韌體
10:積體電路
16:系統
18:軟體
Claims (27)
- 一種自修正記憶體系統,包含: 一積體電路,包含: 一記憶體,係儲存一記憶體內容; 一記憶體內容認證功能單元,該記憶體內容認證功能單元係比較一待認證內容(content to be authenticated)及一標準內容,且當該待認證內容等於該標準內容,則該記憶體內容認證功能單元輸出「認證的」,當該待認證內容不等於該標準內容,則輸出該記憶體內容認證功能單元「非認證的」;以及 一錯誤修正功能單元,用以施加至少一可能的修正至該記憶體中的至少一錯誤字元實體,該錯誤修正功能單元產生一可能的正確字元實體,該錯誤修正功能單元呼叫該記憶體內容認證功能單元,以施加字元認證於該可能的正確字元實體,且當該記憶體內容認證功能單元的輸出係「認證的」,則使用該可能的正確字元實體取代該記憶體中的該錯誤字元實體,從而基於與該記憶體內容認證功能單元相關的認證信賴度之水平所導出的信賴度之水平下執行錯誤修正。
- 如請求項1所述之自修正記憶體系統,其中該記憶體內容認證功能單元係用於執行一加密的強認證(cryptographically strong authentication)。
- 如請求項2所述之自修正記憶體系統,其中該記憶體內容認證功能單元係用於執行一字元認證。
- 如請求項3所述之自修正記憶體系統,其中該錯誤修正功能單元係配置用於: 施加該至少一可能的修正至該記憶體中的至少一錯誤字元,該錯誤修正功能單元產生一可能的正確字元; 呼叫該記憶體內容認證功能單元,以施加該字元認證於該可能的正確字元; 當該記憶體內容認證功能單元的輸出係「認證的」,隨後呼叫該加密的強認證以施加於包含該可能的正確字元之一全記憶體影像或區塊;以及 當該加密的強認證的輸出係「認證的」,使用該可能的正確字元取代該記憶體中的該至少一錯誤字元,從而基於與該加密的強認證以及該字元認證之至少一者相關的信賴度之水平導出的信賴度之水平,執行該錯誤修正。
- 如請求項4所述之自修正記憶體系統,其中藉由施加該字元認證至該記憶體中的至少一字元,以偵測該至少一錯誤字元;以及 導致「非認證的」之輸出的任意字元被認為是錯誤的,且導致「認證的」之輸出的任意字元被認為是非錯誤的。
- 如請求項1所述之自修正記憶體系統,其中該至少一可能的修正包含在該錯誤字元實體中的至少一位元之從0至1或從1至0的一翻轉。
- 如請求項2所述之自修正記憶體系統,其中該可能的修正會施加至複數個錯誤字元,以產生該複數個可能的正確字元,且其中呼叫該加密的強認證一次並施加於一修改的記憶體影像或區塊,分別地使用該可能的正確字元取代在該修改的記憶體影像或區塊的所有該複數個錯誤字元,而不是呼叫該加密的強認證複數次並分別地施加於分別地包含該複數個可能的正確字元的複數個記憶體影像或區塊,從而節省記憶體以及修正時間之至少一者。
- 如請求項1所述之自修正記憶體系統,其中一第一可能的修正以及一第二可能的修正係施加到至少一錯誤字元,且其中在該第一可能的修正中該錯誤字元中的被翻轉的任意位元,在該第二可能的修正施加至該錯誤字元之前不被翻轉,從而在施加該第二可能的修正至相同的該錯誤字元之前,復原該錯誤字元之該第一可能的修正。
- 如請求項8所述之自修正記憶體系統,其中所有該可能的修正係施加到該至少一錯誤字元。
- 如請求項9所述之自修正記憶體系統,其中被施加所有該可能的修正的該錯誤字元包含: 當所有該可能的修正施加在該錯誤字元上都無法導致正確的字元認證,該錯誤字元被視為一不可修正 (uncorrectable.) 的錯誤字元。
- 如請求項8所述之自修正記憶體系統,其中採用至少一試探法(heuristic),以判斷該可能的修正之一子集,該可能的修正之該子集包含少於所有該可能的修正,且只有在該子集中的該可能的修正會施加至該至少一錯誤字元,即使在該子集中沒有該可能的修正導致正確的該字元認證。
- 如請求項2所述之自修正記憶體系統,其中用於比較該記憶體內容及該標準內容以進行認證之該記憶體內容認證功能單元係施加該加密的強認證至在一時間t2儲存在一給定記憶位置的該記憶體內容,從而產生一計算認證值,且比較該計算認證值及一期望認證值,其中在早於該時間t2的一先前時間t1,且該記憶體內容之真實性被認定是正確時,施加該加密的強認證至在該給定記憶位置的該記憶體內容產生該期望認證值。
- 如請求項1所述之自修正記憶體系統,其中該錯誤修正功能單元係施加至少一可能的修正至該記憶體中的至少一錯誤字元,該錯誤修正功能單元產生一可能的正確字元,該錯誤修正功能單元呼叫該記憶體內容認證功能單元,以施加認證於該可能的正確字元,且當該記憶體內容認證功能單元的輸出係「認證的」,使用該可能的正確字元取代該記憶體中的該錯誤字元。
- 如請求項1所述之自修正記憶體系統,其中該錯誤修正功能單元係施加至少一可能的修正到至少一錯誤字元實體的字元認證,該錯誤修正功能單元產生一可能的正確字元實體,該錯誤修正功能單元呼叫該記憶體內容認證功能單元以施加認證於該可能的正確字元實體,且當該記憶體內容認證功能的輸出係「認證的」,使用該可能的正確字元實體的字元認證以取代該記憶體中的該錯誤字元實體的字元認證。
- 如請求項12所述之自修正記憶體系統,其中該先前時間t1係該記憶體之一韌體更新發生之一時間。
- 如請求項1所述之自修正記憶體系統,其中採用至少一試探法,以排序該可能的修正,使得較早排序的該可能的修正比稍後排序該可能的修正具有較大的一預先的機會被修正,從而縮短期望的總修正時間。
- 一種提供錯誤修正功能至記憶體內容的方法,該記憶體內容常駐在一積體電路上的一目標記憶體,該方法包含: 偵測在該目標記憶體中常駐的該記憶體內容的一錯誤; 透過分別由該錯誤之可能的修復組成的至少一些位元置換,搜尋至少一即時簽章匹配,從而定義一建議修復,實現成功的一強認證; 如果找到該至少一即時簽章匹配,使用全認證作為該建議修復之一最終驗證; 如果通過該最終驗證,使用一電源中斷安全代碼修復更新程序,以修正該錯誤,從而提供該目標記憶體一錯誤修正,無需將該目標記憶體攜帶至實驗室。
- 如請求項17所述之方法,更包含: 提供記憶體修復需求的一輸出指示,當該記憶體內容之修正已經失敗,則輸出指示係提示攜帶該至少一目標記憶體至一實驗室,以完整的重新編程。
- 如請求項18所述之方法,其中在提供該輸出指示之前,該搜尋只執行於該錯誤之單位元置換(single-bit permutations)。
- 如請求項18所述之方法,其中在提供該輸出指示之前,該搜尋係執行於該錯誤之所有單位元置換及雙位元置換(double-bit permutations)。
- 如請求項18所述之方法,其中在提供該輸出指示之前,該搜尋執行於該錯誤之所有單位元置換,且當沒有發現該至少一即時簽章匹配時,則這次該搜尋再次執行於該錯誤之至少一些雙位元置換。
- 如請求項17所述之方法,更包含在該偵測之前,執行該強認證一次及執行即時字元認證,保護常駐在該目標記憶體上的該記憶體內容。
- 如請求項22所述之方法,其中該強認證包含在該積體電路從一低活動狀態喚醒之後立即執行的該強認證。
- 如請求項23所述之方法,其中該強認證包含在該積體電路啟動之後立即執行的該強認證。
- 如請求項23所述之方法,其中該強認證包含在該積體電路離開一休眠狀態之後立即執行的該強認證。
- 如請求項23所述之方法,其中該記憶體內容包含在該目標記憶體中儲存之一代碼。
- 如請求項18所述之方法,其中在提供該輸出指示之前,該搜尋係多次執行於該錯誤之單個位元置換。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/423,676 | 2019-05-28 | ||
US16/423,676 US11475170B2 (en) | 2019-05-28 | 2019-05-28 | System and method for correction of memory errors |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202046334A true TW202046334A (zh) | 2020-12-16 |
TWI748419B TWI748419B (zh) | 2021-12-01 |
Family
ID=73506215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109113285A TWI748419B (zh) | 2019-05-28 | 2020-04-21 | 用於記憶體錯誤修正之系統及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11475170B2 (zh) |
JP (1) | JP7160860B2 (zh) |
CN (1) | CN112015582B (zh) |
TW (1) | TWI748419B (zh) |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1967559A (zh) * | 1999-07-06 | 2007-05-23 | 索尼株式会社 | 数据提供系统、装置及其方法 |
US7403952B2 (en) * | 2000-12-28 | 2008-07-22 | International Business Machines Corporation | Numa system resource descriptors including performance characteristics |
US6838331B2 (en) | 2002-04-09 | 2005-01-04 | Micron Technology, Inc. | Method and system for dynamically operating memory in a power-saving error correction mode |
CA2447204C (en) | 2002-11-29 | 2010-03-23 | Memory Management Services Ltd. | Error correction scheme for memory |
US20050283566A1 (en) * | 2003-09-29 | 2005-12-22 | Rockwell Automation Technologies, Inc. | Self testing and securing ram system and method |
EP1533695B1 (en) * | 2003-11-19 | 2013-08-07 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Updating data in a mobile terminal |
US20060256615A1 (en) | 2005-05-10 | 2006-11-16 | Larson Thane M | Horizontal and vertical error correction coding (ECC) system and method |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
DE102006003146B4 (de) | 2006-01-23 | 2016-05-12 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks |
KR100842680B1 (ko) | 2007-01-08 | 2008-07-01 | 삼성전자주식회사 | 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템 |
KR100813630B1 (ko) | 2007-02-07 | 2008-03-14 | 삼성전자주식회사 | 독출 성능을 향상할 수 있는 플래시 메모리 시스템 및그것의 독출 방법 |
US7626868B1 (en) | 2007-05-04 | 2009-12-01 | Flashsilicon, Incorporation | Level verification and adjustment for multi-level cell (MLC) non-volatile memory (NVM) |
FR2917920B1 (fr) * | 2007-06-22 | 2009-10-09 | Centre Nat Rech Scient | Procede d'authentification utilisant un decodage de code correcteur d'erreurs a partir d'une matrice publique |
US9152496B2 (en) | 2007-12-21 | 2015-10-06 | Cypress Semiconductor Corporation | High performance flash channel interface |
WO2009151703A2 (en) * | 2008-03-18 | 2009-12-17 | Clevx, Llc | Computing input system with secure storage and method of operation thereof |
US8456919B1 (en) | 2011-11-10 | 2013-06-04 | Sandisk Technologies Inc. | Method and apparatus to provide data including hard bit data and soft bit data to a rank modulation decoder |
US8730723B2 (en) | 2012-03-12 | 2014-05-20 | Flashsilicon Incorporation | Structures and methods of high efficient bit conversion for multi-level cell non-volatile memories |
US9703945B2 (en) | 2012-09-19 | 2017-07-11 | Winbond Electronics Corporation | Secured computing system with asynchronous authentication |
US9225356B2 (en) * | 2012-11-12 | 2015-12-29 | Freescale Semiconductor, Inc. | Programming a non-volatile memory (NVM) system having error correction code (ECC) |
US9076557B2 (en) | 2012-11-19 | 2015-07-07 | Texas Instruments Incorporated | Read margin measurement in a read-only memory |
JP2014191372A (ja) | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム |
US9946474B2 (en) * | 2013-03-27 | 2018-04-17 | Irdeto B.V. | Storing and accessing data |
WO2015106162A1 (en) | 2014-01-09 | 2015-07-16 | SanDisk Technologies, Inc. | Selective copyback for on die buffered non-volatile memory |
US9369282B2 (en) * | 2014-01-29 | 2016-06-14 | Red Hat, Inc. | Mobile device user authentication for accessing protected network resources |
IL231550A0 (en) | 2014-03-17 | 2014-08-31 | Nuvoton Technology Corp | Saving secure information in external memory |
US9438590B2 (en) * | 2014-05-23 | 2016-09-06 | Fujitsu Limited | Privacy preserving biometric authentication based on error correcting codes |
KR20150143150A (ko) * | 2014-06-13 | 2015-12-23 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9438417B2 (en) * | 2014-08-12 | 2016-09-06 | Robert Bosch Gmbh | System and method for shared key agreement over untrusted communication channels |
US9990249B2 (en) * | 2015-12-24 | 2018-06-05 | Intel Corporation | Memory integrity with error detection and correction |
US10594491B2 (en) * | 2015-12-24 | 2020-03-17 | Intel Corporation | Cryptographic system memory management |
US10432232B2 (en) | 2016-03-04 | 2019-10-01 | Sandisk Technologies Llc | Multi-type parity bit generation for encoding and decoding |
US10725860B2 (en) | 2016-03-04 | 2020-07-28 | Sandisk Technologies Llc | Storage system and method for handling a burst of errors |
JP6794297B2 (ja) * | 2016-05-25 | 2020-12-02 | ヌヴォトンテクノロジージャパン株式会社 | 認証装置および認証方法 |
US10026488B2 (en) | 2016-08-18 | 2018-07-17 | Sandisk Technologies Llc | Non-volatile memory with read disturb detection for open blocks |
KR20180022175A (ko) | 2016-08-23 | 2018-03-06 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US10379939B2 (en) | 2017-01-04 | 2019-08-13 | Samsung Electronics Co., Ltd. | Memory apparatus for in-chip error correction |
US10248484B2 (en) | 2017-02-21 | 2019-04-02 | Intel Corporation | Prioritized error-detection and scheduling |
US10540297B2 (en) * | 2017-08-03 | 2020-01-21 | Arm Limited | Memory organization for security and reliability |
-
2019
- 2019-05-28 US US16/423,676 patent/US11475170B2/en active Active
-
2020
- 2020-04-21 TW TW109113285A patent/TWI748419B/zh active
- 2020-05-28 JP JP2020093658A patent/JP7160860B2/ja active Active
- 2020-05-28 CN CN202010469167.8A patent/CN112015582B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112015582B (zh) | 2024-03-12 |
JP2020195134A (ja) | 2020-12-03 |
US11475170B2 (en) | 2022-10-18 |
JP7160860B2 (ja) | 2022-10-25 |
CN112015582A (zh) | 2020-12-01 |
TWI748419B (zh) | 2021-12-01 |
US20200380173A1 (en) | 2020-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9762399B2 (en) | System and method for validating program execution at run-time using control flow signatures | |
US8281229B2 (en) | Firmware verification using system memory error check logic | |
US10509568B2 (en) | Efficient secure boot carried out in information processing apparatus | |
CN111095213A (zh) | 嵌入式程序的安全引导方法、装置、设备及存储介质 | |
JP7113115B2 (ja) | シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 | |
US11270003B2 (en) | Semiconductor device including secure patchable ROM and patch method thereof | |
JP7038185B2 (ja) | レジスタ内容のインテグリティを検証するシステム、および、その方法 | |
US20230273977A1 (en) | Managing ownership of an electronic device | |
JP6622360B2 (ja) | 情報処理装置 | |
TWI748419B (zh) | 用於記憶體錯誤修正之系統及方法 | |
EP3454216B1 (en) | Method for protecting unauthorized data access from a memory | |
US11113399B2 (en) | Electronic apparatus and control method of electronic apparatus | |
TWI747268B (zh) | 用於排位元錯誤修正嘗試之優先順序的系統以及方法 | |
US20130091324A1 (en) | Data processing apparatus and validity verification method | |
US20240193275A1 (en) | Electronic device and secure booting method thereof |