JP2020195134A - メモリエラーを訂正するためのシステム及び方法 - Google Patents

メモリエラーを訂正するためのシステム及び方法 Download PDF

Info

Publication number
JP2020195134A
JP2020195134A JP2020093658A JP2020093658A JP2020195134A JP 2020195134 A JP2020195134 A JP 2020195134A JP 2020093658 A JP2020093658 A JP 2020093658A JP 2020093658 A JP2020093658 A JP 2020093658A JP 2020195134 A JP2020195134 A JP 2020195134A
Authority
JP
Japan
Prior art keywords
memory
authentication
character
correction
correct
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.)
Granted
Application number
JP2020093658A
Other languages
English (en)
Other versions
JP7160860B2 (ja
Inventor
ハーシュマン ジヴ
Hershman Ziv
ハーシュマン ジヴ
マルガリータ イーラン
Margalit Iilan
マルガリータ イーラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nuvoton Technology Corp
Original Assignee
Nuvoton Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nuvoton Technology Corp filed Critical Nuvoton Technology Corp
Publication of JP2020195134A publication Critical patent/JP2020195134A/ja
Application granted granted Critical
Publication of JP7160860B2 publication Critical patent/JP7160860B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/76Protecting 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1044Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting 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/79Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/84Masking faults in memories by using spares or by reconfiguring using programmable devices with improved access time or stability
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/883Masking 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding 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

【課題】集積回路のメモリコンテンツを保護するシステム及び方法を提供する。【解決手段】本発明は、メモリと、メモリコンテンツ認証機能と、エラー訂正機能とを含む集積回路を備える自己訂正メモリシステムを提供する。認証機能は、認証待ちコンテンツと標準コンテンツとを比較し、両者が同じであると、「正しい」ことを出力し、その以外の場合は、「正しくない」ことを出力する。訂正機能は、メモリにおける少なくとも1つの誤りのある文字エンティティに対して少なくとも一種の可能な訂正を行い、正しいと思われる文字エンティティを生成し、認証機能を呼び出して、正しいと思われる文字エンティティに適用し、検証された出力が「正しい」である場合、メモリにおける誤りのある文字エンティティを正しいと思われる文字エンティティに置き換えて、メモリコンテンツ認証機能に関連する信頼レベルから導出された信頼レベルでエラー訂正を生成する。【選択図】図1

Description

本発明は、集積回路に関わり、特に、集積回路(IC)のメモリコンテンツを保護するシステム及び方法に関する。
本発明の一般的な分野における従来のシステムには、以下の特許文献が含まれる、
US6838331B2、US9525546B2、US20070089034A1、US20080168319A1、US20090164704A1、US20080222491A1、US7266747B2、US20060256615A1、US7937639B2(Infineon 2006)、US20170255512A1、US10026488B2(Sandisk)、US20180239665A1、US20180246783A1(Sandisk 2016)及びUS20180091308(Durham)。
ウィキペディア(Wikipedia)のデータ整理に関する項目(https://en.wikipedia.org/wiki/Data_scrubbing)は、データの完全性(データの破損を減らす)が重要であると述べる。例えば、メモリ、ディスクアレイ、ファイルシステム、FPGA又はその他の場所でのデータの書き込み、読み取り、記憶、送信及び処理を行うように構成されたオペレーティングシステム、ストレージシステム又はデータ送信システムにおけるハードウェア又はソフトウェアの障害を防ぐために使用される。完全性を促進するために、データの不一致をチェックすることにより、データ整理を実行する。データ整理はエラー訂正の一種であり、バックグラウンドタスクを使用してメモリのチェック及びエラーの検出を定期的に行う、その後、使用可能な冗長データ(例えば、エラーが検出されたデータのチェックサム及び/又はコピー)を使用して、検出されたエラーを訂正する。データ整理を実行しないと、訂正可能な単一のエラーは、複数の訂正不可能なエラーに蓄積する傾向があるため、データエラーが訂正できるほど小さい時にデータ整理を実行することは有益である。
本明細書で記載された全ての刊行物と特許文献、及びそこに直接的または間接的に引用された刊行物及び特許文献の開示は、それぞれに参照により本明細書に組み込まれる。
US6838331B2 US9525546B2 US20070089034A1 US20080168319A1 US20090164704A1 US20080222491A1 US7266747B2 US20060256615A1 US7937639B2(Infineon 2006) US20170255512A1 US10026488B2(Sandisk) US20180239665A1 US20180246783A1(Sandisk 2016) US20180091308(Durham)
ウィキペディア(Wikipedia)のデータ整理に関する項目(https://en.wikipedia.org/wiki/Data_scrubbing)
本発明の目的は、集積回路(IC)のメモリコンテンツを保護するシステム及び方法を提供することである。
いくつかの実施例は、エラーを識別するだけでなく、様々な可能な訂正を認証する(又は認証しない)ために、メモリ認証機能(memory authentication functionality)を使用して、メモリエラーの可能な訂正をテストするシステムを提供する。
いくつかの実施例は、少なくとも1つの可能なエラー訂正を適用し、集積回路の既存の検証機能を使用して、この可能なエラー訂正が正しいかどうかを認証することを含むエラー訂正方法を提供する。
いくつかの実施例は、従来のエラー訂正のソリューションとは異なり、メモリのコストを増加させないエラー訂正のソリューションを提供する(エラー訂正コード(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)」ことを出力し、
エラー訂正機能は、少なくとも1つの可能な訂正をメモリにおける少なくとも1つの誤りのある文字エンティティ(erroneous word entity)に適用して、正しいと思われる文字エンティティを生成し、メモリコンテンツ認証機能を呼び出して、正しいと思われる文字エンティティに適用し、メモリコンテンツ認証機能の出力が「正しい」である場合、メモリにおける誤りのある文字エンティティを正しいと思われる文字エンティティに置き換えて、認証に関連する信頼レベルから導出された信頼レベルに達するエラー訂正を生成することを特徴とする自己訂正メモリシステム。
認証待ちコンテンツを標準コンテンツと比較することは、実際の生のコンテンツを直接比較するのではなく、通常、そのダイジェストなどの認証待ちコンテンツのいくつかの派生物を計算し、その派生物を標準コンテンツと比較する。
実施例2
上述の実施例のいずれかに記載のシステムによると、認証機能は、暗号化された強力な認証を実行するように作動できる。
実施例3
上述の実施例のいずれかに記載のシステムによると、認証機能は、文字認証を実行するように作動してもい。
実施例4
上述の実施例のいずれかに記載のシステムによると、エラー訂正機能は、少なくとも1つの可能な訂正をメモリにおける少なくとも1つの誤りのある文字に適用して、正しいと思われる文字を生成し、文字認証を呼び出して正しいと思われる文字に適用し、文字認証の出力が「正しい」である場合、強力な認証を呼び出して、正しいと思われる文字に適用し、強力な認証の出力が「正しい」である場合、メモリにおける誤りのある文字をこの正しいと思われる文字に置き換えて、強力な認証及び文字認証に関連する信頼レベルから導出された信頼レベルに達するエラー訂正を生成するように配置される。
実施例5
上述の実施例のいずれかに記載のシステムによると、文字認証をメモリにおける少なくとも1つの文字に適用することで、前記誤りのある文字を検出し、「正しくない」の出力を生成する任意の文字は誤りがあると見なされ、「正しい」の出力を生成する任意の文字は誤りがないと見なされる。
実施例6
上述の実施例のいずれかに記載のシステムによると、少なくとも1つの可能な訂正は、誤りのある文字エンティティにおける少なくとも1ビットを0から1にまたは1から0にフリップする(flip)ことを含む。
実施例7a
上述の実施例のいずれかに記載のシステムによると、可能な訂正が複数の誤りのある文字に適用されて、複数の正しいと思われる文字を生成する。それに、強力な認証を何度も呼び出して複数の正しいと思われる文字をそれぞれ含む複数のメモリイメージ又はチャンクに適用するのではなく、強力な認証を一度呼び出して訂正されたメモリイメージ又はチャンクに適用して、訂正されたメモリイメージ又はチャンクにおける全ての複数の誤りのある文字をそれぞれ正しいと思われる文字に置換、この結果、メモリ及び/又は訂正時間を節約する。
実施例7b
上述の実施例のいずれかに記載のシステムによると、可能な訂正が複数の誤りのある文字に適用されて、複数の正しいと思われる文字を生成する。また、強力な認証を何度も呼び出して複数の正しいと思われる文字をそれぞれ含む複数のメモリイメージ又はチャンクに適用するのではなく、強力な認証を一度呼び出して複数の正しいと思われる文字の全てに適用し、この結果、メモリ及び/又は訂正時間を節約する。
実施例8
上述の実施例のいずれかに記載のシステムによると、第1の可能な訂正及び第2の可能な訂正は、少なくとも1つの誤りのある文字に適用され、第1の可能な訂正で誤りのある文字におけるフリップされた任意のビットは、第2の可能な訂正が誤りのある文字に適用される前にフリップされない、これにより、第2の可能な訂正を同じ誤りのある文字に適用する前に、誤りのある文字の第1の可能な訂正を取り消す(undo)。
実施例9
上述の実施例のいずれかに記載のシステムによると、全ての可能な訂正が少なくとも1つの誤りのある文字に適用される。
実施例10
上述の実施例のいずれかに記載のシステムによると、全ての可能な訂正が適用される誤りのある文字は、訂正不可能な誤りのある文字を含む。当該訂正不可能な誤りのある文字は、全ての可能な訂正を試みたが、まだ正しい文字認証に失敗ため、訂正不可能(uncorrectable)と見なされる。
実施例11
上述の実施例のいずれかに記載のシステムによると、全ての可能な訂正より少ない訂正を含む可能な訂正のサブセットを判定するために、少なくとも1つのヒューリスティック法(heuristic)を採用し、ここで、サブセットには,正しい文字認証をもたらす可能な訂正がなくても、サブセットにおける可能な訂正が少なくとも1つの誤りのある文字に適用される。
特定の使用例で正しい訂正をより早く見つけるために、ヒューリスティック法を使用して候補訂正(可能な訂正とも呼ぶ)のサブセットを生成したり、候補訂正に優先順位(prioritize)を付けたりすることができ、可能性の低い訂正は後でのみテストされる(例えば、可能性のより高い訂正が検証に失敗場合のみ)。
通常、優先する可能な訂正の特定のサブセットが検証に失敗と、システムは残りの可能な訂正を実行しない(事前に検証に成功する可能性が低いと見なされるため、低い優先度と見なされる)。
実施例12
上述の実施例のいずれかに記載のシステムによると、認証待ちメモリコンテンツと標準コンテンツとを比較することは、時点t2で特定のメモリ位置に記憶されている認証待ちメモリコンテンツに強力な認証を適用して、計算された認証値を生成し、且つこの計算された認証値と記憶された結果とを比較することである。記憶された結果は、期待される認証値とも呼ばれ、期待される認証値は、前記時点t2よりも前の時点t1で特定のメモリ位置のメモリコンテンツに強力な認証を適用することで生成される。
実施例13
集積回路のターゲットメモリ(不揮発性または揮発性)に常駐するメモリコンテンツにエラー訂正機能を提供する方法であり、この方法は少なくとも以下のステップを含む、
(b)ターゲットメモリに常駐するメモリコンテンツのエラーを検出する。
(c)それぞれがエラーの可能な訂正からなる少なくともいくつかのビット置換によって、少なくとも1つのオンザフライシグネチャマッチ(on−the−fly signature match)を検索して、強力な認証を成功させる提案の訂正を定義する。
(d)少なくとも1つのオンザフライシグネチャマッチを見つけると、提案された訂正の最終検証として全体的な認証を使用する。
(e)コードを修正して最終検証に成功するために、パワーフェイルセーフコードリカバリ更新プロセス(power−fail safe code recovery update process)を使用する場合、ターゲットメモリをラボに持ち込む必要がない。
実施例14
上述の実施例のいずれかに記載の方法によると、メモリの訂正ニーズを示す出力指示を提供することをさらに含む。例えば、メモリコンテンツの訂正は既に失敗したため、少なくとも1つのターゲットメモリをラボに持ち込んで完全な再プログラミングする必要がある。
実施例15
上述の実施例のいずれかに記載の方法によると、出力指示を提供する前に、検索がエラーのシングルビット置換(single−bit permutation)のみに対して実行される。
実施例16
上述の実施例のいずれかに記載の方法によると、出力指示を提供する前に、エラーの全てのシングルビット置換及びダブルビット置換に対して検索を実行する。
実施例17
上述の実施例のいずれかに記載の方法によると、出力指示を提供する前に、エラーの全てのシングルビット置換に対して検索を実行し、少なくとも1つのオンザフライシグネチャマッチも見つけないと、エラーの少なくともいくつかのダブルビット置換に対して検索を再度実行する。
実施例18
上述の実施例のいずれかに記載の方法によると、検出の前に、強力な認証を一度実行し及びオンザフライの文字認証によって、ターゲットメモリに常駐するメモリコンテンツを保護することをさらに含む。
実施例19
上述の実施例のいずれかに記載の方法によると、一度実行される強力な認証は、集積回路がアクティブでない状態からウェイクアップされた直後に実行される強力な認証を含む。
実施例20
上述の実施例のいずれかに記載の方法によると、一度実行される強力な認証は、集積回路の起動の直後に実行される強力な認証を含む。
実施例21
上述の実施例のいずれかに記載の方法によると、一度実行される強力な認証は、集積回路がスリープ状態を終了した直後に実行される強力な認証を含む。
実施例22
上述の実施例のいずれかに記載の方法によると、メモリコンテンツは、ターゲットメモリに記憶されたコードを含む。
実施例23
上述の実施例のいずれかに記載のシステムによると、エラー訂正機能は、少なくとも1つの可能な訂正をメモリにおける少なくとも1つの誤りのある文字に適用するために作動でき、エラー訂正機能は、正しいと思われる文字を生成し、続いてメモリコンテンツ認証機能を呼び出して、正しいと思われる文字に適用し、且つメモリコンテンツ認証機能の出力が「正しい」である場合、メモリにおける誤りのある文字をこの正しいと思われる文字に置き換える。
実施例24
上述の実施例のいずれかに記載のシステムによると、エラー訂正機能は、少なくとも1つの可能な訂正を少なくとも1つの誤りのある文字エンティティの文字認証に適用するために作動でき、エラー訂正機能は、正しいと思われる文字エンティティを生成し、且つメモリコンテンツ認証機能を呼び出して、正しいと思われる文字エンティティに適用し、メモリコンテンツ認証機能の出力が「正しい」である場合、メモリにおける誤りのある文字認証をこの正しいと思われる文字認証に置き換える。
実施例25
上述の実施例のいずれかに記載のシステムによると、前の時点t1は、メモリのファームウェア更新が発生した時間である。
実施例26
命令を含むコンピュータプログラムであって、プロセッサが前記命令を実行すると、前記命令は、前記プロセッサを上述の1つ又は複数の方法における1つ又は複数の動作を実行させることを特徴とするコンピュータプログラム。
実施例27
少なくとも1つのプロセッサを備えるシステムであって、通常、対応する専用のハードウェアと協同して作動し、本明細書に記載の1つ又は複数の方法における少なくとも1つの動作を実行するように構成されるシステム。
以下の用語は、先行技術文献に記載されている任意の定義により解釈されたり、明細書に記載されている任意の定義により解釈されたり、それぞれの範囲に以下の内容を含んだりことができる。
アクセス制御(Access Control)
通常、プロセッサとメモリ間のインターフェイスに関連付けられている任意の従来のアクセス制御機能を含むように意図され、ハードウェアとファームウェアを含む仮想ロジックエンティティとして実行できる。
ターゲットメモリ(Target Memory)
集積回路(ICとも呼ばれる)における任意のメモリアレイを含んでもよい、メモリアレイは通常、使用中及びフリーのメモリのページを含む。現在使用されていないフリーのページは、保留ページ(Reserved page)と見なされる。
メモリページの更新時に非常に短期的なウェアハウス(warehouse)として、保留ページを使用する場合、メソッドは通常、保留ページに含まれるコンテンツが書き込まれたコンテンツであることを検証することである(例えば、保留ページのコンテンツと保留ページにコピーされたデータをリアルタイムで比較し、両者が同じであることを確保する)。そうでない場合は、保留ページのコンテンツが削除され、保留ページに改めて書き込んでやり直す。検証は、保留ページに書き込んだ後に、直ちに保留ページを読み取ることを含み、その結果、保留ページ又は空白ページに記憶されるデータが正しくなり、例えば、書き込まれたデータと完全に等しい。
強力な認証(Strong Authentication)
メモリコンテンツを検証するためのアルゴリズム又はプロセスを含んでもよい。大きなコード又は持続的なデータセグメントでは、ダイジェスト/セキュリティキーに基づくHASH関数を採用することができる。
強力な認証に使用される認証コードは、SHA(SHA−1、SHA−2)又はHMACなどの安全なハッシュ関数に基づいてもよい、例えば、https://en.wikipedia.org/wiki/Secure_Hash_Algorithmsを参照。
通常、本明細書の「強力な認証」は、従来の2D水平/垂直エラー訂正方式のように、特定の対応する行または列が検証されるイメージチャンクを確保するだけではない、保護されるコンテンツのデータ全体の一部又はデータ全体のイメージ又はイメージチャンク(コードに限定されるわけではない)を保証する単一の値を生成して、認証待ちデータ全体の一部又はデータ全体のイメージ又はイメージチャンクのコンテンツの完全性を保証する。
通常、強力な認証は、文字認証よりも高い信頼度でメモリコンテンツを認証する。従って、本明細書の「強力な認証」は、小さいダイジェスト(本明細書の「文字認証」アルゴリズムにより生成されるダイジェストと比較する)を生成する任意のアルゴリズムまたは任意のメッセージ認証コード方式を含むことが意図されている。従って、文字認証に対して、本明細書の「強力な認証」は、不可逆、即ち、ダイジェストから元の平文を改めて生成することは不可能であると見なされる。
通常、メモリコンテンツ(認証によって識別される)における特定のデータ文字のエラーを訂正又は修正した後、且つデータ及び強力な認証を訂正されたデータ及び強力な認証に置き換えた後、全てのメモリコンテンツに使用される強力な認証は再計算され、再計算された結果は、記憶される事前計算された強力な認証又はダイジェストと比較される。
強力な認証は通常、特定のデータ本体に適用される(少なくとも1つの誤りのある文字がそれぞれ提案された正しい文字に置き換えられる)。例えば、再計算された強力な認証と比較するデータ本体に応じて、メモリイメージ全体またはその一部のみに適用される。また、再計算された強力な認証と比較する事前計算された強力な認証のデータがメモリイメージ全体(通常、誤りのある文字を提案された正しい文字に置き換える)にあるか、又はメモリーブロックのみに(以上のように)事前計算されているかによって異なりる。
再計算された強力な認証のデータと事前計算された強力な認証のデータ(期待される強力な認証のデータとも呼ばれる)とが完全に等しい場合、強力な認証を「成功」と見なされる。
「強力な認証」は、ファームウェアがリクエストする時に発生する可能性があり、ファームウェアのリクエストは通常、アプリケーションシステム、つまり集積回路を利用して組み込んだ高いレベルのシステムから発生する(図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で事前計算された/記憶(期待)された同じメモリゾーン(memory zone)の「強力な認証のデータ」との間に一致する又は一致しない(等しいまたは等しくない)ことがあるかの判定を含んでもよい。
通常、事前計算された強力な認証のデータは、メモリ空間又はアレイ(本明細書の実施例を使用してその完全性の保護を求める)のコンテンツ全体に対する強力な認証のダイジェストを含む。
スタックフラッシュ(Stacked flash)
1つのチップを含んでもよい、前記チップは「垂直」又は「3D」チップとして分類され、複数の(数十層の場合もある)メモリ層又は結晶粒を積層することで超高密度ストレージを生成してビットコストを低減する。ビットコストスケーリング(bit cost scaling,BiCS)又はパンチアンドプラグ プロセス(punch and plug process)を使用できる。本明細書の実施例は、通常、メモリに適用され、スタックフラッシュ及び他のフラッシュ/不揮発メモリ(NVM)技術を含むが、これに限定されなくてもよい。
オーバーヘッド(Overhead)
メモリ容量における冗長性を含んでもよいが、これは通常、結晶粒の面積及び製品コストの面で不利である。例えば、エラー訂正コード(ECC)を使用してエラー訂正を実行するとは、通常、ECCのXビットをデータ/検証情報のYビットに適用し、エラー訂正に使用されるオーバーヘッド又は追加のメモリ容量(Y/X)*100%に変換することを意味する。
文字エンティティ(word entity)
文字自体(文字ビットとも呼ばれる)と、文字に関する文字検証のデータ(検証ビットとも呼ばれる)と、メモリに記憶される文字に関するデータを含んでもよい。文字認証は、この明細書では「対応する」文字認証データと呼ばれる。いくつかの実施例によれば、文字部分のビットと認証部分のビットとがそれぞれスキャン又はフリップされるが、通常、文字に対して計算を実行し、認証比較に対して本明細書に記載される全てのものを実行する。
本明細書は、以下のような略称を採用する。
ECC(エラー訂正コードを示す)、FW(ファームウェアを示す)、NVM(不揮発メモリを示す)、ASIC(アプリケーション固有の集積回路を示す)、DSP(デジタル信号処理を示す)、HMAC(ハッシュベースのメッセージ認証コードを示す)、IC(集積回路を示す)及びHW(ハードウェアを示す)。
上記の実施例及び他の実施例については、次のセクションで詳細に説明する。本文又は図面で使用される商標は、それぞれが所有者のものであり、本明細書で使用される目的は、如何に本発明の1つの例を実行するかを解釈又は説明するのみである。
明細書では、特に明記しない限り、以下の説明から明らかなように、「処理」、「計算」、「推定」、「選択」、「ランキング」、「判断」、「生成」、「再評価」、「分類」、「ステレオマッチング(stereo−matching)」、「検出」、「組み合わせ」及び「取得」、又はその類似用語とは、操作、変換およびその組み合わせが実際のデータとして表される少なくとも1つのコンピュータ、コンピュータシステム、プロセッサまたは類似の電子計算装置の動作、プログラムまたはその組み合わせ、例えばコンピュータシステムのスタック、メモリおよびその組み合わせ、あるいはその他のこのような情報記憶、転送または表示装置内の電子数を意味する。「コンピュータ」という用語は、非限定的な例として、パーソナルコンピュータ、サーバー、組み込みコア、コンピューティングシステム、通信デバイス、プロセッサ(例えば、デジタル信号プロセッサー(DSP)、マイクロコントローラー、フィールドプログラマブルゲートアレイ(field programmable gate array,FPGA)、アプリケーション固有の集積回路(ASIC)など)及びその他の電子計算デバイスを含んでもよいが、これに限定されなくてもよい。
本明細書でそれぞれに記載された要素は、必ずしも異なる要素ではなく、代替的に同じ構造であってもよい。要素または特徴が存在できる記載は、(a)要素または特徴が存在する実施例を含むことを意図している、(b)要素または特徴が存在しない実施例、(c)要素または特徴が選択的に存在する実施例、例えば、構成要素または特徴が存在するかどうかをユーザが設定または選択できる。
本発明のいくつかの実施例は、以下の図面に示される。
図1は、本発明の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に限定されない、あるいは、そのソフトウェアプログラムコードが少なくとも1つの有形または無形のコンピュータ読取可能媒体に記憶され、且つ少なくとも1つのプロセッサまたはその任意の適切な組合せによって実行される。
特定の機能コンポーネントは、1つの特定のソフトウェアコードシーケンス又は複数のこのようなソフトウェアコードにより形成されてもよい。これらのソフトウェアコードは、機能コンポーネントを参照して本明細書で説明するように共同で機能したり、作動したり又は利用したりする。例えば、コンポーネントは、オブジェクト(objects)、プロシージャ(procedures)、機能(functions)、ルーチン(routines)及びプログラム(programs)など、複数のコードシーケンスにわたって分散でき、通常、協同的に作動するいくつかのコンピューターファイルから発生する可能性がある。
適切であれば、本明細書で説明する任意のロジック機能は、リアルタイムアプリケーションとして実施でき、ASICやDSP又はその適切な組み合わせなどを採用でき、これに限定されない、適切なアーキテクチャオプションを採用できる。実際には、本明細書で記載される任意のハードウェアコンポーネントは、同じ場所に位置し又は位置が互いに離れるウエハなどの1つ又は複数のハードウェアデバイスを含んでもよい。
ICメーカーは、集積回路のメモリのコンテンツの保護を求める。
本明細書の実施例は、多くの異なる技術のメモリに応用できる。したがって、本明細書で使用される「フラッシュ」という用語は、例としてのみ使用される。
本発明は、ICにおけるメモリコンテンツの完全性を保証するシステムについて詳しく説明する。通常、このようなメモリへのアクセスは制御され、ダイジェストは、制御され且つ承認されたメモリ更新にサインするために使用できる。従って、その制御されたアクセスの結果ではないメモリの変更は、悪意のあるものか、又は恐らく、一時的な物理的または電気的障害(例えば、物理的なメモリ自体の障害)によるものかなど、望ましくないエラーである。本明細書のシステムは、エラーの可能な訂正をテストするように作動し、集積回路が組み込まれたコンピュータ又は他の製品の「順序外」時間(out−of−order time)を低減する。通常、(1つ又は複数のレベル)認証機能は、集積回路が他の目的で可能な訂正を検証し又は承認し、例えば、文字認証を使用してエラーを発見し、提案された訂正を最初に検証し、且つ強力な認証を使用して最終的に提案された訂正を検証する。
いくつかの実施例は、図1に示されるような集積回路を提供することにより、又は既存のICにソフトウェア18を追加するなど、既存の集積回路を変更することにより、エラー検出および回復(エラー訂正とも呼ばれる)を集積回路に提供する。ソフトウェア18は、同じICの別の通常は独立したメモリ空間に常駐できる。そのICは、システムが保護しようとするメモリ空間へのアクセス許可を持ち、通常は、認証を実行するように作動できる。例えば、文字認証及び強力な認証の少なくとも一方は、本明細書で説明するエラー訂正及び検証の少なくとも一方を完成するために使用される。
いくつかの実施例は、集積回路にエラー検出及び回復機能を提供する。前記機能は、メモリコンテンツが変更されたイベントを識別するための検出(例えば、従来の認証に基づく)ことを含み、且つIC(及びICに組み込まれた装置、例えばPC)が通常通りに操作を続行して、できるだけ装置のエンドユーザーのオーバーヘッドを低減するために、これらのイベントから回復する。これは、特定のイベント(例として、エンドユーザーが処理しているPC)が故障し、エンドユーザーがコンピューターをラボに持ち込んで修理する必要があることを意味するため、特に有利である。本明細書に記載のいくつかの実施例によれば、メモリ故障を有するコンポーネント自体は自動的に訂正できて、システムのセキュリティを維持するため、以上の問題はない。
エラー訂正機能は、HW及びFWの適切な組み合わせで実行できる。メモリは通常、認証及び文字認証の構造をサポートするように構成される。通常、オンザフライの文字認証はハードウェアに実行される(メモリを読み取る時)。強力な認証は通常、ファームウェアに実行され、適切な暗号化されたHWを使用してプロセスを高速化する。FW又はHWにビットフリッピング(bit flipping)及び一致性チェック(consistency check)を実行できる。NVMの消去及び書き換えなどの複雑な操作を考慮して、メモリコンテンツの実際の更新は、通常、ファームウェアにより完成される。
図1のシステムは、より高いレベルのシステム16に組み込むことができるいくつかの実施例にかかる集積回路を示す。図1のより高いレベルのシステム16は、本明細書で説明される機能(例えば、強力な認証などの認証)を実行するためのリクエストの1つの可能なソースである。追加的または代替的に、より高いレベルのシステムは、図1のメモリアレイ2を介してその元のコンテンツ(例えば、メモリアレイ2に記憶されたコード)を合法的に取得できるアクセスパスとして機能し、又は後で更新され、即ち、メモリアレイのコンテンツが異なるコンテンツに置き換えられる。
アクセス制御機能(例えば、図1に示す))は、通常、HWとFWの組み合わせである。通常、アクセスできるメモリゾーンとアクセスできないメモリゾーンを定義するHWがある。ファームウェアは、いくつかの特権レベルで、メモリアクセスを制御するHWにアクセスできる。したがって、メモリコンテンツの更新は、そのアクセスの許可が存在することをFWに「納得させる」ことによって行われ、この場合、FWはロジックゲートを開き、メモリを更新する。
例えば図7の方法に従って、可能なエラー訂正をテストする機能は、ハードウェアまたはファームウェアで実行できる別個のステートマシン(state machine)を含んでもよい(図1のハードウェア6及びファームウェア7の少なくとも一方を参照)。同様に、エラー訂正機能のロジックは、ハードウェアとファームウェアの適切な組み合わせに組み込まれてもよい。
図1、図9、図10及び図11の実施例の全て又は任意のサブセットを組み合わせて、及び/又は前述の図2で説明したフローのすべてまたは任意のサブセットと組み合わせて、図1のシステム又はそこで説明したブロックの任意のサブセットを提供できる。
図2は、メモリオーバーヘッドの面で経済的である認証機能とエラー訂正とを組み合わせる提案又は方法を説明する。従来のECCは、各データを記憶するためのECCビットのメモリ容量を必要とするため、本明細書の実施例は、既存の設計に存在する又は新しい設計に提供されるオンザフライの認証を利用することで、エラー検出又は訂正コードの使用または記憶を排除し、セキュリティレベルを損なうことなくエラー訂正に使用する。
ECCを使用する場合、攻撃者はデータ及びそのECCを同時に修正し、データ及びECCがそれぞれ互いに一致するように修正されるため、エラーがリアルタイムで認識されない、文字認識又は強力な認証を実行した場合にのみ、システムはエラーを検証できるため、セキュリティレベルは通常、影響を受けない。
「オーバーヘッド」という用語は、本明細書では、認証、又はエラー訂正、又は任意の適切な場所に記憶できる他のメモリ管理プロセスによって生じたストレージのニーズを含む。例えば、文字認証(文字レベル認証とも呼ばれる)又は文字ECCでは、より広い文字長さを利用してメモリを生成するため、文字を読み取るときに、認証/ECCビットにもアクセスできるように、認証/ECCは文字のすぐ隣に記憶される。又は、ハードウェアシステムでは、必要な実際のペイロード(認証/ECCビットとは対照的に)を読み取る同時に、1つの追加のメモリコンポーネントの読み取りを実行して、より大きい文字長さを有効に許容する。この後、メモリ全体の文字長を実際のペイロードに専用でき、その実際のペイロードの認証/ECCビットは他の場所に記憶される。
図2の方法は、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
操作ステップ10
メモリに記憶されたコードなどのメモリコンテンツが、「強力な認証」及び「文字認証」に保護される集積回路を提供する。
「強力な認証」を起動する(例えば、大きなコードセグメントでHMACまたはCMACを実行する)。例えば、コールドフラッシュコンテンツ(cold flash content)の置換に対する。
オンザフライの「文字認証」(例えば、128ビットのペイロード+16ビットの認証)。例えば、ホットフラッシュコンテンツ(hot flash content)の置換に対して、フラッシュから直接コードを実行する。
オンザフライの暗号化、復号化、および認証は、以下の特許文献に記載されており、その公開内容は参照によりここに組み込まれる。https://patents.google.com/patent/US9525546B2/en。
操作ステップ20
オンザフライの文字認証が失敗するたびに(例えば、実行中に)、集積回路は停止する(例えば、次の起動まで)又は自動的に再び起動する。例えば、メモリ空間に確保するコードがあるとする。従って、メモリからの読み取りは通常、ICのプロセッサがそのメモリ空間からコードをフェッチしていることを意味する。これは、通常、文字認証の失敗が識別された場合、対象のプロセッサが変更されたコードのみフェッチすることを意味する。このとき、変更されたコードの実行を防止するために、プロセッサは停止する可能性があり、通常はリカバリを開始する必要がある。回復動作は、例えば、ROMにおけるコードのような100%安全であることがわかっている別のコードにジャンプすること、又は
ソフトウェアまたはハードウェアのいずれかによって、ここで説明するエラー訂正及び検証の少なくとも一方をトリガするリセットをROMから再開することを含んでもよい。
操作ステップ30
次に起動する時(又は上記の例に従って)に、全ての「文字認証」は、メモリコンテンツを保護するための「強力な認証」計算の一部としてチェックされる。「文字認証」が起動認証中に失敗した場合(実行時とは逆)、エラー検出を構成するため、集積回路は、例えば図3の操作ステップ140〜170の全て又は任意のサブセットを実行することによって、メモリコンテンツで見つかったエラーを訂正しようとする。
操作ステップ80
メモリがコード実行メモリ(code execution memory)である場合、例えばエラー訂正を行うと(例えば、図3の操作ステップ140〜170の全て又は任意のサブセットを実行する)、訂正されたコードを解析できる。この場合、適切なパワーフェイルセーフコードリカバリ更新フロー(Power−fail safe Code recovery update flow)が実行される。コードが成功に修正されると、プロセッサは、通常の操作として実行を再開できる。
図3の方法は、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
操作ステップ140
破損した文字(例えば起動認証中に「文字認証」がこの文字で失敗したためにエラーが検出された文字)の全てのビット置換(例えば、説明された実施例では128+16のビット置換)をチェックして、一致を検索する。データと認証との間に適切な比率が存在する可能性があることを強調する。128ビット及び16ビットのパラメータは単なる例示である。
専用HWまたはSWは、速やかに全ての置換をスキャンできる。例えば、メモリ上、またはメモリ制御およびインターフェイス ユニットの一部として、フラッシュなどのメモリへの書き込み/読み取りを繰り返し行う必要がない。
いくつかの実施例によれば、専用のバッファは、破損した文字のデータ構造を記憶でき、また、破損した文字はビットごとに操作され得る。この後、専用のファームウェアコードまたはハードウェアステートマシンを使用して、データ構造の順列をスキャンし、一度に1ビット(例えば、図10の「1ビットをフリップ」のステップを参照)又は1ビット以上をフリップする。置き換えのたびに、当時の、操作された、ビットフリップ反転されたデータ構造に文字認証の計算を行う。通常、置換のスキャンはファームウェアによって実行され、又は代替的に、専用のハードウェアによって実行できる。
操作ステップ150
一致が見つかった場合、訂正または修正された(例えば、誤りのあるコンテンツに対する提案された訂正)誤りのあるデータ又はコンテンツを「強力な認証」計算の一部としてダイジェストできる。認証アルゴリズムと訂正されたビット数によっては、複数の一致が見つかる可能性がある。この場合、一致するビットの組み合わせの全ての置換(ビットパターンとも呼ばれ)を試し、正しい「強力な認証」を生成する置換が採用される。通常、正しいとは、訂正またはコードを使用した(または適用した)「強力な認証」の結果が、メモリの元のコンテンツを使用した(または適用された)強力な認証の事前計算の結果と等しいことを意味する。
例えば、1ビットエラーの場合、この方法は、最初のビット、例えばビット0をフリップし、続いて認証をチェックし、その後、一致が見つかるまでビット1、2などの後続のビットをチェックすることを含む。2ビットエラーの場合、一度に一対のビットをフリップできる、且つ通常は、それぞれ2ビットの可能な値の各ペアを考慮する。
操作ステップ160
それ以外の場合は、例えば、再検索によって、今回はエラーの少なくともいくつかのダブルビット置換に対して、複数のエラーを訂正することが好ましい。1つ以上のエラー(1つ以上のビットを含む)は訂正可能であるが、いくつかの実施例によれば、複数のビットを含むエラーは、その計算が1ビットのエラーの計算よりも複雑で、その計算が約X/2(たとえば144/2)回のチェックが必要であるため修正できない。
操作ステップ170
図1に示すように、エラーを訂正できない場合、通常、例えば高いレベルのソフトウェアを介してエンドユーザーにアラートを提供する。
図4は、メモリがページベースの不揮発性メモリ(page−based nonvolatile memory)であるときに、エラー訂正および検証を実行する方法である。通常、このようなメモリでは、削除の操作はページ全体(又はメモリ全体)しか操作できない。従って、訂正が必要なエラーが見つかった場合、通常は訂正を適用できるように、ページの調整が実行される。例えば、訂正を適用する際に、訂正データを有するページをいくつかの保留ページにコピーする。より一般的には、本発明は、メモリ使用制限で行われる修正を含む。
図4の方法は、例えば、エラーが検出された時にすぐに(以下の操作ステップ220)、又は次のICのブート(IC boot)時(以下の操作ステップ230)などの任意の適切な時間に実行されてもよい。
図4の方法は、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
操作ステップ210
訂正待ちフラッシュページを識別する。複数のページは訂正の必要がある場合、訂正が必要な文字(アドレス+データ)を不揮発性メモリに保留(又はこの文字の指示)する。次に、操作ステップ220を実行してすぐに訂正し、又は操作ステップ230を実行して次の起動後に修正する。
操作ステップ220
例えば、ページごとに図5の操作ステップ310〜350の全てを実行することで、各訂正待ちページを訂正する。
操作ステップ230
ブート時、フラッシュコード認証が実行される前に、ブートコード(boot code)は、例えば使用可能とマークされたページが存在するかをチェックし、使用可能な場合、ブートコードは、ブートを続行する前に、操作ステップ310〜350の全て又は任意のサブセットを完了できる、そうでない場合、いくつかのより高いレベルのファームウェアは、「ガベージコレクション(garbage collection)」を実行できる。例えば、可能な限り最小のメモリ空間を占めるようにメモリコンテンツを圧縮するため、一時的なエラー訂正のために少なくとも1ページを解放する。
図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の外部で1つのメモリイメージ(memory image)を準備し、当該メモリイメージをICに「注入」して、コンテンツに添付された認証コードと共にプログラミングする。
操作ステップ1003
メモリの読み取りを含め、通常どおりメモリを使用する。各メモリの読み取りには、
次のものが含まれる。
先ずは、現在のコンテンツに文字認証の計算を行い、これは再計算の「文字認証」とも呼ばれる。
続いて、操作ステップ1001で記憶された事前計算の文字認証データをメモリから読み取り、計算された認証データと事前計算された文字認証データとを比較する。
再計算された「文字認証データ」がメモリから読み取られた事前計算された「文字認証データ」と等しい場合は、全てのデータが正常であるため、操作を続行する。等しくない場合は、エラーが識別されたと想定して、エラー訂正シーケンスを開始する。
可能なエラー訂正のテストを含む適切なエラー訂正シーケンスフローは図7に示されるように、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでも良い。また、エラー訂正機能によって制御または実行することもできる、そのエラー訂正機能はソフトウェアで実行され、図1のプロセッサ1に常駐することができる。
操作ステップ1006
訂正待ちコンテンツにエラー修正を実行する。当該訂正待ちコンテンツは、文字と、文字に関連する文字認証とを含む。文字と文字認証とは組み合わせである(例えば、順次の組み合わせ)ため、結合されたビットのストリングが提供される。エラー訂正は、全てのビットをスキャンすることと、結合されたビットのストリングにおける各ビット(ターゲットが1ビットエラーを訂正する場合)及び各ビットのペア(ターゲットが2ビットエラーを訂正する場合)の少なくとも一方をフリップし、文字認証データを再確認することとを含む。エラーが、文字に存在するではなく、文字認証データに存在する可能性があるため、メモリに記憶されたメモリ文字認証データと比較しない。代替的に、1ビットをフリップして、文字認証データを再計算し、再計算された文字認証を使用可能な文字認証データと比較する。例えば、Xビットの読み取りデータとYビットの認証データをメモリから読み取り、この組み合わせられた構造でビットをフリップする。フリップされたビットがXビットのデータにあると、訂正後のデータのXビットの認証を再計算し、再計算された認証データをメモリから読み取られたYビットの認証データと比較する。
フリップされたビットがYビットの認証データのビットである場合、メモリから読み取られたXビットの認証データを再計算し、訂正されたYビットの認証データと比較する。
一致が見つかった場合(比較された文字認証データが等しいことが見つかった場合)、文字と文字認証データが「一致している」ことを意味しているため、操作ステップ1009に進む。一致が見つからない場合は、次のビット(又はそのペア)をフリップし、上記の再計算と比較の操作を繰り返す。ここおよび他の場所で、「次の」という用語は、実際的に隣接していても、適切なヒューリスティック法により定義されたビット間の順序付けによって、順次または次々と見なされるビットであってもよい。
操作ステップ1008
このステップに入ると、通常、ビットフリップ(または2ビットエラーの場合にそのペアフリップ)が実行可能な訂正を生成しなかったため、文字レベルでエラー訂正が失敗した。従って、このメモリコンテンツを訂正不可能なメモリコンテンツにマークする。例えば、図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は通常、既存のメモリ構造(レガシーメモリ構造とも呼ばれる)を備えており、ソフトウェアで論理的に再配置または管理して、ここで説明するエラー訂正プロセスで計算された文字認証を記憶する。このような場合、エラーの検出と訂正は、通常、上記のようなオンザフライではなく、オフラインで実行される。
既存の(またはレガシーの)ICがレガシーの認証機能を使用してメモリコンテンツをいくつかの標準コンテンツ(たとえば、最近の認証メモリーの更新直後に計算されたダイジェスト)と比較する場合でも、可能なエラー訂正をテストするためのインタフェースが認証機能または「認証サービス」から取得した認証機能を有することを保証するために、任意の適切な実施方式を採用することができる。実施方式は通常、認証機能が提案されたテスト待ちエラーを標準コンテンツと比較することを保証できる。例えば 次のように、
(1)FWは、メモリからデータ文字及び文字認証データを読み取ることができる。
(2)FWは、それ自体でデータ文字の認証データを計算する、又はいくつかの専用のハードウェアを使用してデータ文字の認証を計算することができる。
(3)FWは、計算の結果をメモリから読み取られた認証データと比較し、データ構造が一致しているかどうか、またはエラーがあるかどうかを確認する。
(4)FWがエラーを識別した場合、FWは、本明細書に記載されるビットフリッピングプロセス(bit flipping process)を実行して、上記の操作(2)のように認証データを計算することができる。
(5)メモリを介してエラー訂正が完了されると、FWは、それ自体で又はいくつかのハードウェアを使用してメモリコンテンツ全体のダイジェストを計算できる。これらのハードウェアは、システムの設計者が選択した任意のMACアルゴリズムの実行を加速または容易にすることができる。
本明細書のいくつかの実施例の利点は、エラー訂正が上記の追加の認証(通常は強力な認証及び文字認証)を必要とするオーバーヘッドを生成しないことである。
本明細書のいくつかの実施例の別の利点は、本明細書で説明されるようなエラーの推測的な訂正(様々な可能なエラー訂正のテスト)は、ビット数にハードリミットを設定しないことである。逆に、従来のエラー訂正方式は、ある種のエラー訂正コードを実行する。例えば、特定のXビットのデータサイズに対して、いくつかの事前に決定されたエラー数、バイナリの組み合わせの数、および選択された方法は、エラー訂正コードに必要なビット数を指定する。一度実行すると、事前に決定された数のビットエラーのみを訂正できない。エラーを訂正する実際的な複雑さは、通常、訂正しようとするビット数が増えるにつれて増大する。ただし、必要に応じて、特定のユースケースが妥当であれば、非常に強力な認証を使用して訂正された任意の数のエラーを検証して、任意の数のビットエラーを訂正できる。
本明細書のいくつかの実施例の別の利点は、認証を利用して検証が行われ、高レベルの信頼性を有する正しいエラー訂正を生成する。例えば、強力な認証を使用して提案された訂正を検証する場合、これは通常、「訂正されたデータ」(つまり、提案された訂正)に対する強力な認証の結果が、予想される強力な認証と一致すること(例えば、等しい)を示すと、暗号レベルの信頼度は、訂正されたデータに対して確かに正しいことを意味する。
ECC(エラー訂正コード)を実行する従来の技術システムと比較して、本明細書のいくつかの実施例の別の利点は、悪意のあるコンテンツの変更を防止することである。ただし、悪意のある攻撃は、データとエラー訂正コードの両方が相互に一致した方法で置き換えて、エラーが訂正されたように見える一方で、実際にはコンテンツまたはコードが不良または悪意のあるものである可能性がある。逆に、ここで説明するエラー訂正に使用される認証の利点によって、ここでの方法は暗号的に強力であるため、攻撃者は、上記のようにデータと認証コードを悪意を持って置き換えることができなくなる。
オンザフライの認証を使用することは、エラーが含まれていることが判明しない限り、パフォーマンスが損なわれない(認証は並行して行われる)、及び/又は既に読み取られたデータを遅延なくすぐに使用できるため、特に有利である可能性がある。
コードを実行するメモリや、持続的な又は頻繁に変更されない大きなデータブロブなどのメモリコンテンツへのアクセスが制御されている場合、例えば安全または制御された(ファームウェア)更新によってのみ変更されるメモリコンテンツは、特にメモリが保護されていない又は外部にある場合、図2のフローから利点を得られる。図2のフローから利点を得られるメモリには、EEPROM、ハードディスク、NANDフラッシュ、NORフラッシュ、SDRAM、SRAMが含まれるが、これらに限定されない。
安全な(ファームウェア)更新以外に、メモリへのアクセスを制御するためのさまざまなソリューションが存在する。特に、メモリコンテンツへのアクセスを厳密に制御できるさまざまなテクノロジが知られている。たとえば、コンテンツを実行のみのメモリ、又はコンテンツの読み取りのみが可能で、いくつかのアクセス権限を取得または認証した後、専用ゲートウェイを介して更新しまたは書き込み、または特定のアクセス権限を持っている場合にのみ変更可能なアクセス制御設定を変更した後にのみ書き込み可能なメモリ。
メモリコンテンツは頻繁に変更されない、例えば、いくつかのメモリコンテンツは、通常、十分に低い頻度で変更されて、ここで説明するシステムと方法により生成されるオーバーヘッドにコスト効率を持たせる。例えば、ソフトウェアの更新が定期的またはときどき発生するため、コードは数か月ごとに一回だけ変更され、または、いくつかのデータが数日または数週間ごとに一回だけ変化され、或いはそれらの間隔で平均的に変化する場合がある。逆に、いくつかのデータはソフトウェアによって操作される可能性があるため、プログラムが実行または動作されるたびに変化する可能性がある。
多くの変化型が可能である。例えば、いくつかの実施例によれば、エラーがある場合、当該エラーを訂正(修正とも呼ばれる)し、その後、メモリを直ちに修復する。続いて、どんなプロセスが実行されても、実行を続ける。
追加的または代替的に、装置が実行を継続できるように、実際のメモリコンテンツの修復を後で延期することにより、オーバーレイパッチ(overlay patch)を提供する。これは、NVMの処理時間は長くなり、装置がこの操作をオンラインで実行しようとするときに遅延を引き起こす可能性があるため、装置がこの操作をオフラインで完了し、後で実行されると、装置が実行を継続できるようになる点では有益である。専用のオーバーライドパッチでキャッシュ(不揮発性または揮発性)されたコンテンツは通常、同じICにおいて任意のコンピューターメモリに常駐できる。ターゲットメモリが必要な場合に引き出されて修復されるように、ターゲットメモリを使用する任意のプロセッサはそのメモリにアクセスしてもよい。
可能な変化型の別の例は、強力な認証及び文字認証のレベルを含むが、これに限定されない、可能なエラー訂正を個別的に又は任意の適切な組み合わせでテストするために、任意の適切な認証を使用してもよい。
フローは、強力な認証によってメモリに存在するエラーのみを識別することを要求する場合、存在するエラーが識別されると、各メモリビットがフリップされた後に、強力な認証がビットフリップ(またはそのペア)を検証できる。しかしながら、強力な認証は重い、つまりかかる時間は長くて、リソースを消費する操作であるが、小型のメモリゾーンにとっては完全に実行できるため、2つのレベルの認証を提供する必要がない場合がある。
多くの使用例では、2つのレベルを使用することは、このプログラムを保証するのに有効である。本明細書では、2つのレベルとは、文字認証及び強力な認証を意味し、両者はレベルが異なり、つまり、文字認証は、かかる時間がより短い及び/又はより少ないリソースを消費する。強力な認証は、かかる時間がより長い及び/又はより多いリソースを消費する。
大型のメモリゾーンの場合、文字認証(一般的に)を有すると、通常はより高い効率的なプロセスになる。これは、文字ベース(文字レベル)にエラーが検出され、文字レベルに提案された基本検証(推測的な修正も呼ばれる(speculative corrections))も行われる場合があるためである。したがって、文字レベルの認証は省略される実施例と比較して、認証又は検証の訂正のために強力な認証をあまり頻繁に実行する必要はない。
例(1)
提案された訂正を推測し、提案された訂正を適用してから、強力な認証で訂正を検証する。これが失敗した場合は、再試行し、別の訂正を推測する。
例(2)
提案された訂正を推測し、文字認証をチェックする。これが失敗した場合は、成功される文字認証を得るまで、別の提案された訂正を推測し、再び文字認証を使用してチェックする。この後、訂正される最終の検証として強力な認証を使用する。当該強力な認証は、文字認証がなくても使用できる。
別の可能な変化型は、任意の適切な方法を使用して、メモリコンテンツに対して検証された提案の訂正を実際に行うことができることである。例えば、メモリコンテンツがコードである場合、検証された提案の訂正をコードに適用するために、パワーフェイルセーフのコード回復更新プロセスを使用してコードを修正する。前記コードは、例えば認証に失敗したため、エラーが発見されたコードである。
変化型は、パフォーマンス、領域、実行時間及び信頼性のあるトレードオフに応じて、設計できる。例えば、以下のように
A:より大きな「オンザフライのコード文字」は、以下の結果を生成できる。
(1)より小さいフラッシュ領域とフェッチスループットのオーバーヘッド(throughput overhead)(特定の「冗長性」幅の場合)。
(2)より長いビット修正時間(すべてのビットをスキャンするため)。
(3)より大きなフェッチレイテンシ(fetch latency)(実行前にチェックを待機している場合、US20140082721の方法を使用できる、この特許文献は(https://patents.google.com/patent/US20140082721A1/en?oq=13%2f965%2c256))、前記特許文献を引用して本明細書に組み合わせて、以下のようなコンピューティング装置を説明する。
プログラムの実行時に使用されるデータ項目のシーケンスを受信するように接続された入力ブリッジと、出力ブリッジと、前記入力ブリッジから前記データ項目のシーケンスを受信し、前記プログラムを実行して、前記出力ブリッジを前記データ項目のシーケンスにおける特定のデータ項目に応答させて信号を出力させるように接続された処理コアと、前記処理コアが前記プログラムを実行している間に前記データ項目のシーケンスを受信して認証し、前記特定のデータ項目が認証されるまで前記出力ブリッジによる信号の出力を禁止するようにする認証ロジックとを、備えるコンピューティング装置。
B:より小さい選択に比べて、より大きな「オンザフライの冗長文字」は、以下の結果を生成できる。
(1)より安全で信頼性の高い、より速い修正。
(2)より大きなフラッシュ領域とフェッチスループットのオーバーヘッド。
C:より小さい選択に比べて、より大きな「強力な認証」サイズ(ビット単位)は、以下の結果を生成できる。
(1)より安全な、つまり、認証された元のコンテンツ又はメモリの認証されたコンテンツが正しいという信頼度が高まる。
(2)より大きいフラッシュ領域のオーバーヘッド(通常は無視できる)。
(3)SHA256−512 HMACは良い選択のようだ。
D:より大きい選択に比べて、より小さいコードセグメンテーション(code segmentation)(コードをそれぞれに「強力な認証」を有するセグメントに分割する場合)は、以下の結果を生成できる。
(1)より大きい領域のオーバーヘッド。
(2)より速い訂正時間。
(3)HASHが累積的である場合、つまりブート/サイクルランタイムを維持できる。即ち、コード全体に1つのHASHを使用する同時に、中間結果を保持して訂正プロセスをスピードアップする。
1つのアドバイスは、トレードオフパラメータを動的に決定することである。例えば、異なる(大きいまたは小さい)「オンザフライ冗長文字」及び/又は異なる(大きいまたは小さい)「強い認証」サイズ及び/又は異なる(大きいまたは小さい)セグメンテーション(コードを「強力な認証」を有するセグメントに分割する場合)。フラッシュ統計メッセージごとおよび/またはウェアレベル(wear level)ごとに、例えば、ターゲットメモリーが劣化した場合、上記のトレードオフパラメータをターゲットメモリが劣化していない時よりも速く及び/又はロバストなエラー訂正に変更する。例えば、劣化したフラッシュの動作は、劣化していないフラッシュの動作と比較して、遅くなるためである。
いくつかの実施例によれば、統計的訂正を伴うオンザフライの「文字認証」が提供される。ターゲットメモリ全体ですべてのシングルビットフリップオプション(可能な訂正)のブルートフォース別名ダムスキャンを実行するのではなく、代わりに、特定の文字でエラーが検出された場合は、「ショートカット」(基本型の実施例に対して)を採用する。
特定の文字のすべてのシングルビットフリップをスキャンし又は検索して、特定の文字を再び訂正しようとし、ペイロード文字が認証された文字と一致するように訂正できる場合は、メモリコンテンツの完全性に対する最高の検証として、強力な認証を呼び出す。
従って、本発明の実施例は、特に以下のことを含む。
実施例(A)
ターゲットメモリコンテンツの少なくとも一部の完全性を検証するために、ターゲットメモリ全体の少なくとも一部のビットフリップオプションのスキャンを含む強力な認証を呼び出すことを含む認証とエラー訂正を組み合わせる方法。
実施例(B)
実施例(A)の方法によれば、スキャンは、ターゲットメモリ全体に対して実行される。
実施例(C)
統計的訂正の実施例を有するオンザフライ「文字認証」は、実施例(A)の方法によれば、文字認証が使用され、特定の文字に認証エラーが検出された場合、ターゲットメモリ全体ではなく、特定の文字のみスキャンして、特定の文字を訂正しようとする。ペイロード文字が認証文字と一致する場合は、メモリコンテンツの完全性に対する最高の検証として、強力な認証を呼び出す。
統計的訂正において、メモリコンテンツの訂正が成功する保証はない。
図1では、「他のプロセッサ機能」は、図示したプロセッサが、ここに記載された特定の機能以外の主要な機能を持ち、タイマー、通信チャネル、コンバータの全部または任意のサブセットなどの周辺機器を使用してもよい。
図10の「1ビットをフリップする」のステップは、例えば、普通のロジック設計者及びソフトウェア設計者が知られた任意の適切な置換スキャンプロセスを使用して、ハードウェア、ソフトウェア、およびその組み合わせで実行できる。
図9及び図10の少なくとも一方の「計算認証」のステップは、オンラインの文字認証計算を含んでもよい。文字認証は、異なる強度のレベルを持ち、通常、強度及びパフォーマンスの間には、トレードオフがある。強度を極端にすると、文字認証が修正の最終的な判定になる可能性があると想定できる。このような場合、強力な認証はオプション(optional)になる。従って、文字認証を単独で使用し、又は強力な認証を単独で使用し、両者を同時に使用してもよい。この場合、文字認証を簡略化でき(低いレベルの強度で実行できるため、より良いパフォーマンスを生成する)、強力な認証に依存して最終的な判定をする。
ファームウェアは、本明細書のいくつかの実施例を実現するために使用される場合、当該ファームウェアをフラッシュまたはROMなどの不揮発性メモリに記憶してもよい。
代替的に、本明細書で説明するいくつかの実施例は、ハードウェアで部分的または排他的に(即ち、ファームウェアなしで)実行でき、その場合、本明細書で説明する変数、パラメータ、逐次演算及び計算の一部またはすべてがハードウェアで実施できる。
「強制的」、「要求」、「必要」などの用語とは、明確にするために本明細書で説明する特定の実施方式またはアプリケーションのコンテキスト内で行われた実施方式の選択を指し、限定を意図するものではない。代替的な実施方式において、同じ要素が必要ではなくと定義されている場合や、完全に削除されている場合もある。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…プロセッサ
2…メモリアレイ
6…ハードウェア
7…ファームウェア
10…集積回路
16…システム
18…ソフトウェア

Claims (27)

  1. メモリと、メモリコンテンツ認証機能ユニットと、エラー訂正機能ユニットとを含む集積回路と、
    を備え、
    前記メモリは、メモリコンテンツを記憶し、
    前記メモリコンテンツ認証機能ユニットは、認証待ちメモリコンテンツと標準コンテンツとを比較し、前記認証待ちメモリコンテンツが前記標準コンテンツと同じである場合、「正しい」ことを出力し、前記認証待ちメモリコンテンツが前記標準コンテンツと同じではない場合、「正しくない」ことを出力し、
    前記エラー訂正機能ユニットは、少なくとも1つの可能な訂正を前記メモリにおける少なくとも1つの誤りのある文字エンティティに適用して、正しいと思われる文字エンティティを生成し、前記メモリコンテンツ認証機能ユニットを呼び出して、文字認証を前記正しいと思われる文字エンティティに適用し、前記メモリコンテンツ認証機能ユニットの出力が「正しい」である場合、前記メモリにおける前記誤りのある文字エンティティを前記正しいと思われる文字エンティティに置き換えて、前記メモリコンテンツ認証機能ユニットに関連する信頼レベルから導出された信頼レベルでエラー訂正を生成することを特徴とする自己訂正メモリシステム。
  2. 前記メモリコンテンツ認証機能ユニットは、暗号化された強力な認証を実行するように作動することを特徴とする請求項1に記載の自己訂正メモリシステム。
  3. 前記メモリコンテンツ認証機能ユニットは、文字認証を実行するように作動することを特徴とする請求項2に記載の自己訂正メモリシステム。
  4. 前記エラー訂正機能ユニットは、
    前記少なくとも1つの可能な訂正を前記メモリにおける少なくとも1つの誤りのある文字に適用して、正しいと思われる文字を生成し、
    前記メモリコンテンツ認証機能ユニットを呼び出して、前記文字認証を前記正しいと思われる文字に適用し、
    前記メモリコンテンツ認証機能ユニットの出力が「正しい」である場合、前記暗号化された強力な認証を呼び出して、前記正しいと思われる文字を含むメモリイメージ又はチャンク全体に適用し、
    前記暗号化された強力な認証の出力が「正しい」である場合、前記メモリにおける前記少なくとも1つの誤りのある文字を前記正しいと思われる文字に置き換えて、前記暗号化された強力な認証及び前記文字認証の少なくとも一方に関連する信頼レベルから導出された信頼レベルで前記エラー訂正を実行するように配置されることを特徴とする請求項3に記載の自己訂正メモリシステム。
  5. 前記文字認証を前記メモリにおける少なくとも1つの文字に適用することで、前記少なくとも1つの誤りのある文字を検出し、
    「正しくない」の出力を生成する任意の文字は誤りがあると見なされ、「正しい」の出力を生成する任意の文字は誤りがないと見なされることを特徴とする請求項4に記載の自己訂正メモリシステム。
  6. 前記少なくとも1つの可能な訂正は、
    前記誤りのある文字エンティティにおける少なくとも1ビットを0から1にまたは1から0にフリップすることを含むことを特徴とする請求項1に記載の自己訂正メモリシステム。
  7. 前記可能な訂正が複数の誤りのある文字に適用されて、前記複数の正しいと思われる文字を生成し、それに、前記暗号化された強力な認証を何度も呼び出して前記複数の正しいと思われる文字をそれぞれ含む複数のメモリイメージ又はチャンクに適用するのではなく、前記暗号化された強力な認証を一度呼び出して訂正されたメモリイメージ又はチャンクに適用して、前記訂正されたメモリイメージ又はチャンクにおける全ての前記複数の誤りのある文字をそれぞれ前記正しいと思われる文字に置換して、メモリ及び訂正時間の少なくとも一方を節約することを特徴とする請求項2に記載の自己訂正メモリシステム。
  8. 第1の可能な訂正及び第2の可能な訂正は、少なくとも1つの誤りのある文字に適用され、前記第1の可能な訂正で前記誤りのある文字におけるフリップされた任意のビットは、前記第2の可能な訂正が前記誤りのある文字に適用される前にフリップされないため、前記第2の可能な訂正を同じ前記誤りのある文字に適用する前に、前記誤りのある文字の前記第1の可能な訂正を元に戻すことを特徴とする請求項1に記載の自己訂正メモリシステム。
  9. 全ての前記可能な訂正が前記少なくとも1つの誤りのある文字に適用されることを特徴とする請求項8に記載の自己訂正メモリシステム。
  10. 全ての前記可能な訂正が適用される前記誤りのある文字は、
    全ての前記可能な訂正が前記誤りのある文字に適用されても、正しい文字認証を生成できない訂正不可能と見なされる誤りのある文字を含むことを特徴とする請求項9に記載の自己訂正メモリシステム。
  11. 全ての前記可能な訂正より少ない訂正を含む前記可能な訂正のサブセットを判定するために、少なくとも1つのヒューリスティック法を採用し、
    前記サブセットには,正しい前記文字認証をもたらす前記可能な訂正がなくても、前記サブセットにおける前記可能な訂正が前記少なくとも1つの誤りのある文字に適用されることを特徴とする請求項8に記載の自己訂正メモリシステム。
  12. 前記メモリコンテンツと前記標準コンテンツとを比較して認証する前記メモリコンテンツ認証機能ユニットは、時点t2で特定のメモリ位置に記憶される前記メモリコンテンツに前記暗号化された強力な認証を適用して、計算された認証値を生成し、且つ前記計算された認証値と期待される認証値とを比較し、
    前記時点t2よりも前の時点t1で、前記メモリコンテンツの信頼性が正しいと判定された場合、前記暗号化された強力な認証を前記特定のメモリ位置における前記メモリコンテンツに適用して、前記期待される認証値を生成することを特徴とする請求項2に記載の自己訂正メモリシステム。
  13. 前記エラー訂正機能ユニットは、少なくとも1つの可能な訂正を前記メモリにおける少なくとも1つの誤りのある文字に適用し、1つの正しいと思われる文字を生成し、前記メモリコンテンツ認証機能ユニットを呼び出して、前記正しいと思われる文字に認証を適用し、前記メモリコンテンツ認証機能ユニットの出力が「正しい」である場合、前記メモリにおける前記誤りのある文字を前記正しいと思われる文字に置換することを特徴とする請求項1に記載の自己訂正メモリシステム。
  14. 前記エラー訂正機能ユニットは、少なくとも1つの可能な訂正を少なくとも1つの誤りのある文字エンティティの文字認証に適用し、1つの正しいと思われる文字エンティティを生成し、前記メモリコンテンツ認証機能ユニットを呼び出して、前記正しいと思われる文字エンティティに認証を適用し、前記メモリコンテンツ認証機能ユニットの出力が「正しい」である場合、前記メモリにおける前記誤りのある文字エンティティの文字認証を前記正しいと思われる文字エンティティの文字認証に置換することを特徴とする請求項1に記載の自己訂正メモリシステム。
  15. 前記時点t1は、前記メモリのファームウェア更新が発生した時点であることを特徴とする請求項12に記載の自己訂正メモリシステム。
  16. 前に順序付けられた前記能な訂正が後に順序付けられた前記能な訂正よりも事前に訂正される可能性が高くなって、所望の合計修正時間を短縮するように、少なくとも1つのヒューリスティック法を採用して、前記可能な訂正が順序付けられることを特徴とする請求項1に記載の自己訂正メモリシステム。
  17. 集積回路のターゲットメモリに常駐するメモリコンテンツにエラー訂正機能を提供する方法であって、
    前記ターゲットメモリに常駐する前記メモリコンテンツのエラーを検出することと、
    それぞれが前記エラーの可能な訂正からなる少なくともいくつかのビット置換によって、少なくとも1つのオンザフライシグネチャマッチを検索して、強力な認証を成功させる提案の訂正を定義することと、
    前記少なくとも1つのオンザフライシグネチャマッチを見つけると、前記提案された訂正の最終検証として全体的な認証を使用することと、
    前記最終検証に成功すると、パワーフェイルセーフコードリカバリ更新プロセスを使用して、前記エラーを訂正するため、前記ターゲットメモリにエラー訂正を提供して、前記ターゲットメモリをラボに持ち込む必要がないことと、
    を含むことを特徴とする方法。
  18. メモリの訂正ニーズの出力指示を提供し、前記メモリコンテンツの訂正が既に失敗した場合、出力指示は、前記少なくとも1つのターゲットメモリをラボに持ち込んで、完全に再プログラミングするように指示することとを更に含むことを特徴とする請求項17に記載の方法。
  19. 前記出力指示を提供する前に、前記検索は前記エラーのシングルビット置換のみに対して実行されることを特徴とする請求項18に記載の方法。
  20. 前記出力指示を提供する前に、前記検索は前記エラーの全てのシングルビット置換及びダブルビット置換に対して実行されることを特徴とする請求項18に記載の方法。
  21. 前記出力指示を提供する前に、前記検索は前記エラーの全てのシングルビット置換に対して実行され、前記少なくとも1つのオンザフライシグネチャマッチを見つけないと、今回の前記検索は前記エラーの少なくともいくつかのダブルビット置換に対して再度実行されることを特徴とする請求項18に記載の方法。
  22. 前記検出の前に、前記強力な認証を一度実行し及びオンザフライの文字認証を実行して、前記ターゲットメモリに常駐する前記メモリコンテンツを保護することとを更に含むことを特徴とする請求項17に記載の方法。
  23. 前記強力な認証は、前記集積回路がアクティブでない状態からウェイクアップされた直後に実行される前記強力な認証を含むことを特徴とする請求項22に記載の方法。
  24. 前記強力な認証は、前記集積回路の起動の直後に実行される前記強力な認証を含むことを特徴とする請求項23に記載の方法。
  25. 前記強力な認証は、前記集積回路がスリープ状態を終了した直後に実行される前記強力な認証を含むことを特徴とする請求項23に記載の方法。
  26. 前記メモリコンテンツは、前記ターゲットメモリに記憶されたコードを含むことを特徴とする請求項23に記載の方法。
  27. 前記出力指示を提供する前に、前記検索は前記エラーのシングルビット置換に対して何度も実行されることを特徴とする請求項18に記載の方法。
JP2020093658A 2019-05-28 2020-05-28 メモリエラーを訂正するためのシステム及び方法 Active JP7160860B2 (ja)

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
JP2020195134A true JP2020195134A (ja) 2020-12-03
JP7160860B2 JP7160860B2 (ja) 2022-10-25

Family

ID=73506215

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020093658A Active JP7160860B2 (ja) 2019-05-28 2020-05-28 メモリエラーを訂正するためのシステム及び方法

Country Status (4)

Country Link
US (1) US11475170B2 (ja)
JP (1) JP7160860B2 (ja)
CN (1) CN112015582B (ja)
TW (1) TWI748419B (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007515708A (ja) * 2003-11-19 2007-06-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 携帯端末内のデータ更新方法
JP2014191372A (ja) * 2013-03-26 2014-10-06 Mega Chips Corp 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム
US20180189132A1 (en) * 2017-01-04 2018-07-05 Samsung Electronics Co., Ltd. Memory apparatus for in-chip error correction
US20190043600A1 (en) * 2017-08-03 2019-02-07 Arm Ltd Memory organization for security and reliability

Family Cites Families (34)

* Cited by examiner, † Cited by third party
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
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
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
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
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 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10248484B2 (en) 2017-02-21 2019-04-02 Intel Corporation Prioritized error-detection and scheduling

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007515708A (ja) * 2003-11-19 2007-06-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 携帯端末内のデータ更新方法
JP2014191372A (ja) * 2013-03-26 2014-10-06 Mega Chips Corp 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム
US20180189132A1 (en) * 2017-01-04 2018-07-05 Samsung Electronics Co., Ltd. Memory apparatus for in-chip error correction
US20190043600A1 (en) * 2017-08-03 2019-02-07 Arm Ltd Memory organization for security and reliability

Also Published As

Publication number Publication date
TWI748419B (zh) 2021-12-01
CN112015582B (zh) 2024-03-12
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
US8281229B2 (en) Firmware verification using system memory error check logic
JP6373888B2 (ja) 情報処理装置及び制御方法
US7401234B2 (en) Autonomous memory checker for runtime security assurance and method therefore
US20210149681A1 (en) Secure Firmware Management with Hierarchical Boot Sequence using Last Known Good Firmware
JP7113115B2 (ja) シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法
US11960632B2 (en) Data attestation in memory
US20200410097A1 (en) Confirming a version of firmware loaded to a processor-based device
CN109445705B (zh) 固件认证方法及固态硬盘
CN112685338A (zh) 包括安全可修补rom的半导体装置及其修补方法
TWI760752B (zh) 應用加速驗證映像檔方法的系統
CN113486360B (zh) 基于risc-v的安全启动方法及系统
JP7038185B2 (ja) レジスタ内容のインテグリティを検証するシステム、および、その方法
EP3454216B1 (en) Method for protecting unauthorized data access from a memory
JP6622360B2 (ja) 情報処理装置
US20180204006A1 (en) Fast authentication of code in a low-power system
JP2020195134A (ja) メモリエラーを訂正するためのシステム及び方法
WO2016024967A1 (en) Secure non-volatile random access memory
CN111695164B (zh) 电子设备及其控制方法
JP7097407B2 (ja) ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法
US20230129942A1 (en) Method for locking a rewritable non-volatile memory and electronic device implementing said method
US20240152284A1 (en) Storage controller and method of providing firmware image
CN117935894A (zh) 安全计算机存储器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220512

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221013

R150 Certificate of patent or registration of utility model

Ref document number: 7160860

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150