CN112015582B - 自修正存储器系统、提供错误修正至存储器内容的方法 - Google Patents
自修正存储器系统、提供错误修正至存储器内容的方法 Download PDFInfo
- Publication number
- CN112015582B CN112015582B CN202010469167.8A CN202010469167A CN112015582B CN 112015582 B CN112015582 B CN 112015582B CN 202010469167 A CN202010469167 A CN 202010469167A CN 112015582 B CN112015582 B CN 112015582B
- Authority
- CN
- China
- Prior art keywords
- authentication
- memory
- character
- content
- correction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 308
- 238000012937 correction Methods 0.000 title claims abstract description 181
- 238000000034 method Methods 0.000 title abstract description 58
- 230000006870 function Effects 0.000 claims abstract description 88
- 238000012795 verification Methods 0.000 claims abstract description 35
- 230000002427 irreversible effect Effects 0.000 claims description 2
- 230000008439 repair process Effects 0.000 description 18
- 238000012360 testing method Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000005201 scrubbing Methods 0.000 description 3
- VIEYMVWPECAOCY-UHFFFAOYSA-N 7-amino-4-(chloromethyl)chromen-2-one Chemical compound ClCC1=CC(=O)OC2=CC(N)=CC=C21 VIEYMVWPECAOCY-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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或其他地方广泛写入、读取、储存、传输及数据处理。为了促进完整性,借由检查数据中的不一致来执行数据清理。数据清理是一种错误修正,它使用背景工作以周期地检查存储器及检测错误,然后使用允许的冗余数据(例如,检测到错误的数据的校验码和/或者副本)修正任何检测到的错误。如果没有数据清理,可修正的单个错误往往会累积成多个不可修正的错误,因此,在数据错误仍然足够小而可以被修正时进行数据清理是有利的。
在说明书中提及的所有出版物及专利文件的揭露内容,以及其中直接或间接引用的出版物和专利文件的揭露内容,均通过引用并入本文。不承认此类出版物和专利文件对可专利性的重要性。
发明内容
某些实施例试图提供一种系统,用于使用存储器认证功能(memoryauthentication 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)元素或特征选择性地存在于其中的实施例,例如使用者可以配置或选择是否元件或特征存在。
附图说明
在以下图式中说明本发明的某些实施例:
图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:软件
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:操作步骤
具体实施方式
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的方法,可以包含单独的状态机(statemachine),其状态机可以用硬件或固件来实施(参见图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 nonvolatilememory)时,用于实行错误修正及验证的方法。通常,在这样的存储器中,擦除操作只能擦除整个页面(或整个存储器)。因此,当发现需要修正的错误时,通常执行页面调整以使修正能够被施加,例如,当施加修正时,将具有修正数据的页面复制到某些保留页面。更一般地,应当理解,本发明包括在存储器使用限制下进行的修正。
可以在任何合适的时间执行图4的方法,例如在检测到错误时立即(下面的操作步骤220),或是在下一次IC开启时(下面的操作步骤230)。
如图4所示,图4的方法可以包括以下操作的全部或适当的排序的任何子集。
操作步骤210:识别出待修正的快闪存储器页面。如果有一个页面以上需要修正,则将需要修正的字符(地址+数据)保留(或是此字符的指示)在非易失性存储器中。接下来,执行操作220以立即修正,或执行操作230以在下次开机后修正。
操作步骤220:修正每个待修正的页面,例如,借由针对每个页面执行图5所示的操作步骤310至操作步骤350的全部。
操作步骤230:在开机期间,在执行快闪存储器代码认证之前,开机代码(bootcode)检查是否存在已知为例如标记为可用的页面,且如果这样,则在继续开机之前启机代码可完成操作步骤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:较大的“即时代码字符”会产生以下结果:
更小的快闪存储器区域及获取吞吐量负担(throughput overhead)(对于给定的“冗余”宽度)
更长的比特修正时间(为了扫描所有比特)
较大的获取延迟(如果在执行之前等待检查,则可以使用US20140082721的方法,此申请中专利文件(https://patents.google.com/patent/US20140082721A1/en?oq=13%2f965%2c256),借由引用将其公开内容并入本文描述了一种计算装置,包括:一输入桥,其耦合以接收一数据项序列,以供该装置在执行一程序时使用;一输出桥;一处理核心,耦合以从该输入桥接收该数据项序列,且执行该程序,以使该输出桥回应于该数据项序列中的一给定数据项,输出一信号;以及一认证逻辑,用于在该处理核心执行该程序时,接收及认证该数据项序列,并禁止借由该输出桥输出该信号,直到该给定数据项已被认证为止。
B:相对于较小的选择,较大的“即时冗余字符”产生以下结果:
更安全,更可靠,更快速的修正
较大的快闪存储器区域以及获取吞吐量负担
C:相对于较小的选择,较大的“强认证”大小(以比特为单位)会产生以下结果:
更安全,亦即对已认证的原始内容或存储器的校证内容是正确的置信度更大
较大的快闪存储器区域负担(通常可以忽略)
SHA256-512 HMAC似乎是一个不错的选择
D:与较大的选择相比,较小的代码分段(将代码分成每个具有“强认证”的分段时)会产生以下结果:
较大的区域负担
更快的修正时间
如果HASH是累积的,即可以保留开启/循环运行时间,亦即对整个代码使用一个HASH,同时保留中间结果以加快修正程序。
一种建议是动态地确定权衡参数,例如,选择不同(较大或较小)的“即时冗余字”及/或不同(较大或较小)的“强认证”大小及/或不同(较大或较小)的分段(将代码分为具有“强认证”的每个分段时)。每个快闪存储器统计消息及/或每个磨损级别(wear level),例如,当目标存储器老化时,将上述权衡参数更改为比目标存储器较年轻时更快及/或更强健的错误修正,例如,由于较旧及/或更磨损的快闪存储器,相对于较年轻及/或较少磨损的快闪存储器的操作较慢。
根据某些实施例,提供了具有统计修正的即时“字符认证”。与其对整个目标存储器中的所有单比特翻转选项(可能的修正)执行蛮力的,也称为基本型扫描相反,如果在给定的字符中检测到错误,则采取“捷径”(相对于基本型实施例)。
尝试借由扫描或搜寻给定字符的所有单比特翻转再次尝试修正给定的字符,且如果当负载字符可以被修正为与认证的字符一致时,则启用强认证作为对存储器内容的完整性的最高验证。
因此,本发明的实施例尤其包括:
实施例(A):一种用于组合认证及错误修正的方法,包括:
启用强认证,以验证目标存储器内容的至少一部分的完整性,包括扫描整个目标存储器中至少一些的至少一些字符翻转选项。
实施例(B):根据实施例(A)的方法,其中对整个目标存储器执行扫描。
实施例(C):具有统计修正实施例的即时“字符认证”,根据实施例(A)的方法,其中采用字符认证,并且其中如果在给定字符中检测到认证错误,则仅对给定字符执行扫描,而不是整个目标存储器,从而尝试修正给定的字符,以及如果当负载字符与认证字符保持一致时,则启用强认证作为存储器内容完整性的最高验证。
应当理解,在统计修正中,不能保证成功修正存储器内容。
在图1中,“其他处理器功能”可以理解,所说明的处理器可以具有除本文所描述的特定功能以外的任何主要功能,并且可以使用任何周边设备,例如但不限于计时器、通讯通道、转换器的全部或任何子集。
在图10中“翻转一比特”的步骤,例如可以使用普通逻辑设计者及软件设计者已知的任何合适的置换扫描程序以硬件、软件及其组合来实施。
在图9以及图10的至少一者的“计算认证”的步骤,可以包含线上的字符认证计算。应当理解,字符认证可以具有不同的强度等级;通常,强度及性能之间需要进行权衡。如果将强度发挥到极致,则可以假设字符认证可能是修正的最终裁定。在这种情况下,强认证变为可选的(optional)。因此,可以单独使用字符认证,或者可以单独使用强认证,或者可以同时使用两者,在这种情况下,可以简化字符认证(可以以较低级别的强度执行,从而产生更好的性能),则依靠强认证做出最终裁定。
如果固件用于实现本文中的某些实施例,则可以将其保存在非易失性存储器中,例如快闪存储器或ROM。
替代地,本文描述的某些实施例可以部分地或排他地(亦即,没有固件)在硬件中实施,在这种情况下,本文描述的一些或全部变数,参数,序列操作及计算可以在硬件中。
应当理解,诸如“强制性”、“要求”、“需要”及“必须”之类的术语是指为了清楚起见而在本文描述的特定实施方式或应用的背景下做出的实施方式选择,并且不旨在进行限制,因为,在替代实施方式中,相同的元件可能被定义为非强制性和非要求的,甚至可能被完全消除。
在分离的实施例的上下文中描述的本发明的特征,包括操作,也可以在单个实施例中组合提供。例如,系统实施例旨在包括相应的流程实施例,反之亦然。特征也可以与本领域中已知的特征相结合,且特别地,尽管不限于在背景技术部分或其中提到的出版物中所描述的那些。
相反,为简短在单个实施例的上下文中或以某种顺序描述的本发明的特征,包括操作,可以分离地或以任何合适的子组合的方式提供,包括本领域已知的特征(特别是,但不限于在背景技术部分或其中提到的出版物中描述的内容),或以其他不同顺序排列。“例如”用于表示不旨在限制的示例。
每种方法可以包含说明或描述的一些或全部操作,以适当的,例如本文说明或描述方式排序。
Claims (16)
1.一种自修正存储器系统,其特征在于,包含:
一集成电路,包含:存储器、存储器内容认证功能单元和错误修正功能单元;
一存储器,储存一存储器内容,存储器内容包括多个字符以及与多个字符对应的多个第一认证数据,第一认证数据由多个字符得到;存储器还存储第二认证数据,第二认证数据是预先对存储器内容进行第二认证得到;第二认证的认证可靠性高于第一认证的认证可靠性;
在进行存储器读取操作时,存储器内容认证功能单元对存储器中当前内容的至少一个字符进行第一认证,并将第一认证获得的第三认证数据与从存储器读取的第一认证数据进行比较;当第三认证数据和读取的第一认证数据不匹配时,错误修正功能单元执行纠错以更新当前内容,对更新的当前内容的至少一个字符执行第一认证,并从存储器中读取第一认证数据,当第三认证数据和读取的第一认证数据匹配时,存储器内容认证功能单元进一步对当前内容进行第二认证,并将第二认证获得的第四认证数据与第二认证数据进行比较,以确定当前内容是否可信;
存储器内容认证功能单元的第二认证为加密的强认证,加密的强认证包括SHA或HMAC的安全哈希函数认证;
存储器内容认证功能单元的第一认证为字符认证,第二认证与第一认证相比是不可逆的认证;
错误修正功能单元,对所述存储器中的至少一个错误字符应用至少一种可能的校正以产生被认为是正确的字符;
调用存储器内容认证功能单元,对可能正确的字符进行字符认证;
如果存储器内容认证功能单元的输出是“正确的”,则调用加密的强认证将其应用于包含假定正确字符的整个内存图像或块;
自修正存储器系统,如果所述加密的强认证的输出是“正确的”,则将所述存储器中的所述至少一个错误字符替换为所述假定正确的字符。
2.如权利要求1所述的自修正存储器系统,其特征在于,该存储器内容认证功能单元用于执行一加密的强认证。
3.如权利要求2所述的自修正存储器系统,其特征在于,该存储器内容认证功能单元用于执行一字符认证。
4.如权利要求3所述的自修正存储器系统,其特征在于,该错误修正功能单元配置用于:
施加该至少一可能的修正至该存储器中的至少一错误字符,该错误修正功能产生可能的正确字符;
呼叫该存储器内容认证功能单元,以施加该字符认证于该可能的正确字符;
当该存储器内容认证功能单元的输出为“认证的”,随后呼叫该加密的强认证以施加于包含该可能的正确字符的一全存储器映像或区块;以及
当该加密的强认证的输出为“认证的”,使用该可能的正确字符取代该存储器中的该至少一错误字符,从而基于与该加密的强认证以及该字符验证的至少一者相关的置信水平导出的置信水平,执行该错误修正。
5.如权利要求4所述的自修正存储器系统,其特征在于,借由施加该字符认证至该存储器中的至少一字符,以检测该至少一错误字符;以及
导致“非认证的”的输出的任意字符被认为是错误的,且导致“认证的”的输出的任意字符被认为是非错误的。
6.如权利要求1所述的自修正存储器系统,其特征在于,该至少一可能的修正包含在该错误字符实体中的至少一比特的从0至1或从1至0的一翻转。
7.如权利要求2所述的自修正存储器系统,其特征在于,该可能的修正会施加至多个错误字符,以产生多个可能的正确字符,且其中呼叫该加密的强认证一次并施加于一修改的存储器映像或区块,分别地使用该可能的正确字符取代在该修改的存储器映像或区块的所有该多个错误字符,而不是呼叫该加密的强认证多次并分别地施加于分别地包含该多个可能的正确字符的多个存储器映像或区块,从而节省存储器以及修正时间的至少一者。
8.如权利要求1所述的自修正存储器系统,其特征在于,一第一可能的修正以及一第二可能的修正施加到至少一错误字符,且其中在该第一可能的修正中该错误字符中的被翻转的任意比特,在该第二可能的修正施加至该错误字符之前不被翻转,从而在施加该第二可能的修正至相同的该错误字符之前,撤销该错误字符的该第一可能的修正。
9.如权利要求8所述的自修正存储器系统,其特征在于,所有该可能的修正施加到该至少一错误字符。
10.如权利要求9所述的自修正存储器系统,其特征在于,被施加所有该可能的修正的该错误字符包含:
当所有该可能的修正施加在该错误字符上都无法导致正确的字符认证,该错误字符被视为一不可修正的错误字符。
11.如权利要求8所述的自修正存储器系统,其特征在于,采用至少一试探法,以判断该可能的修正的一子集,该可能的修正的该子集包含少于所有该可能的修正,且只有在该子集中的该可能的修正会施加至该至少一错误字符,即使在该子集中没有该可能的修正导致正确的该字符认证。
12.如权利要求2所述的自修正存储器系统,其特征在于,用于比较该存储器内容及标准内容以进行认证的该存储器内容认证功能单元施加该加密的强认证至在一时间t2储存在一给定存储位置的该存储器内容,从而产生一计算认证值,且比较该计算认证值及一期望认证值,其中在早于该时间t2的一先前时间t1,且该存储器内容的真实性被认定是正确时,施加该加密的强认证至在该给定存储位置的该存储器内容产生该期望认证值。
13.如权利要求1所述的自修正存储器系统,其特征在于,该错误修正功能单元施加至少一可能的修正至该存储器中的至少一错误字符,该错误修正功能单元产生一可能的正确字符,该错误修正功能单元呼叫该存储器内容认证功能单元,以施加认证于该可能的正确字符,且当该存储器内容认证功能单元的输出为“认证的”,使用该可能的正确字符取代该存储器中的该错误字符。
14.如权利要求1所述的自修正存储器系统,其特征在于,该错误修正功能单元施加至少一可能的修正到至少一错误字符实体的字符认证,该错误修正功能单元产生一可能的正确字符实体,该错误修正功能单元呼叫该存储器内容认证功能单元以施加认证于该可能的正确字符实体,且当该存储器内容认证功能的输出为“认证的”,使用该可能的正确字符实体的字符认证以取代该存储器中的该错误字符实体的字符认证。
15.如权利要求12所述的自修正存储器系统,其特征在于,该先前时间t1为该存储器的一固件更新发生的一时间。
16.如权利要求1所述的自修正存储器系统,其特征在于,采用至少一试探法,以排序该可能的修正,使得较早排序的该可能的修正比稍后排序该可能的修正具有较大的一预先的机会被修正,从而缩短期望的总修正时间。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/423,676 US11475170B2 (en) | 2019-05-28 | 2019-05-28 | System and method for correction of memory errors |
US16/423,676 | 2019-05-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112015582A CN112015582A (zh) | 2020-12-01 |
CN112015582B true CN112015582B (zh) | 2024-03-12 |
Family
ID=73506215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010469167.8A Active CN112015582B (zh) | 2019-05-28 | 2020-05-28 | 自修正存储器系统、提供错误修正至存储器内容的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11475170B2 (zh) |
JP (1) | JP7160860B2 (zh) |
CN (1) | CN112015582B (zh) |
TW (1) | TWI748419B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007515708A (ja) * | 2003-11-19 | 2007-06-14 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 携帯端末内のデータ更新方法 |
CN103810055A (zh) * | 2012-11-12 | 2014-05-21 | 飞思卡尔半导体公司 | 编程具有错误校正码(ecc)的非易失性存储器(nvm)系统 |
KR20150143150A (ko) * | 2014-06-13 | 2015-12-23 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100751199B1 (ko) * | 1999-07-06 | 2007-08-22 | 소니 가부시끼 가이샤 | 관리 장치 및 데이터 처리 장치 |
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 |
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 |
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 | 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム |
CN104756120B (zh) * | 2013-03-27 | 2019-04-23 | 爱迪德技术有限公司 | 存储和访问数据 |
US10055294B2 (en) | 2014-01-09 | 2018-08-21 | Sandisk Technologies Llc | 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 |
US9438417B2 (en) * | 2014-08-12 | 2016-09-06 | Robert Bosch Gmbh | System and method for shared key agreement over untrusted communication channels |
US10594491B2 (en) * | 2015-12-24 | 2020-03-17 | Intel Corporation | Cryptographic system memory management |
US9990249B2 (en) * | 2015-12-24 | 2018-06-05 | Intel Corporation | Memory integrity with error detection and correction |
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
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007515708A (ja) * | 2003-11-19 | 2007-06-14 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 携帯端末内のデータ更新方法 |
CN103810055A (zh) * | 2012-11-12 | 2014-05-21 | 飞思卡尔半导体公司 | 编程具有错误校正码(ecc)的非易失性存储器(nvm)系统 |
KR20150143150A (ko) * | 2014-06-13 | 2015-12-23 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
TWI748419B (zh) | 2021-12-01 |
JP2020195134A (ja) | 2020-12-03 |
TW202046334A (zh) | 2020-12-16 |
CN112015582A (zh) | 2020-12-01 |
US11475170B2 (en) | 2022-10-18 |
US20200380173A1 (en) | 2020-12-03 |
JP7160860B2 (ja) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7401234B2 (en) | Autonomous memory checker for runtime security assurance and method therefore | |
US10509568B2 (en) | Efficient secure boot carried out in information processing apparatus | |
US8281229B2 (en) | Firmware verification using system memory error check logic | |
US20210149681A1 (en) | Secure Firmware Management with Hierarchical Boot Sequence using Last Known Good Firmware | |
JP7113115B2 (ja) | シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 | |
CN112685338A (zh) | 包括安全可修补rom的半导体装置及其修补方法 | |
CN113486360B (zh) | 基于risc-v的安全启动方法及系统 | |
US10846421B2 (en) | Method for protecting unauthorized data access from a memory | |
JP7038185B2 (ja) | レジスタ内容のインテグリティを検証するシステム、および、その方法 | |
CN112015582B (zh) | 自修正存储器系统、提供错误修正至存储器内容的方法 | |
JP6622360B2 (ja) | 情報処理装置 | |
US11113399B2 (en) | Electronic apparatus and control method of electronic apparatus | |
CN112015335B (zh) | 安排至少一比特的试错尝试修正的优先顺序的方法及系统 | |
US20060265578A1 (en) | Detection of a sequencing error in the execution of a program | |
US20230129942A1 (en) | Method for locking a rewritable non-volatile memory and electronic device implementing said method | |
CN112817619B (zh) | 电脑系统及其安全管理方法以及电脑软件产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |