IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 新唐科技股▲ふん▼有限公司の特許一覧

特許7160860メモリエラーを訂正するためのシステム及び方法
<>
  • 特許-メモリエラーを訂正するためのシステム及び方法 図1
  • 特許-メモリエラーを訂正するためのシステム及び方法 図2
  • 特許-メモリエラーを訂正するためのシステム及び方法 図3
  • 特許-メモリエラーを訂正するためのシステム及び方法 図4
  • 特許-メモリエラーを訂正するためのシステム及び方法 図5
  • 特許-メモリエラーを訂正するためのシステム及び方法 図6
  • 特許-メモリエラーを訂正するためのシステム及び方法 図7
  • 特許-メモリエラーを訂正するためのシステム及び方法 図8
  • 特許-メモリエラーを訂正するためのシステム及び方法 図9
  • 特許-メモリエラーを訂正するためのシステム及び方法 図10
  • 特許-メモリエラーを訂正するためのシステム及び方法 図11
  • 特許-メモリエラーを訂正するためのシステム及び方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-17
(45)【発行日】2022-10-25
(54)【発明の名称】メモリエラーを訂正するためのシステム及び方法
(51)【国際特許分類】
   H04L 9/32 20060101AFI20221018BHJP
   G09C 1/00 20060101ALI20221018BHJP
   G06F 11/10 20060101ALI20221018BHJP
【FI】
H04L9/32 200A
G09C1/00 640D
G06F11/10 612
【請求項の数】 13
(21)【出願番号】P 2020093658
(22)【出願日】2020-05-28
(65)【公開番号】P2020195134
(43)【公開日】2020-12-03
【審査請求日】2020-05-28
(31)【優先権主張番号】16/423,676
(32)【優先日】2019-05-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【弁理士】
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ジヴ ハーシュマン
(72)【発明者】
【氏名】イーラン マルガリータ
【審査官】行田 悦資
(56)【参考文献】
【文献】米国特許出願公開第2018/0189132(US,A1)
【文献】特表2007-515708(JP,A)
【文献】米国特許出願公開第2019/0043600(US,A1)
【文献】特開2014-191372(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G09C 1/00
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
メモリと、メモリコンテンツ認証機能ユニットと、エラー訂正機能ユニットとを含む集積回路と、
を備え、
前記メモリは、メモリコンテンツを記憶し、前記メモリコンテンツは、複数の文字と、複数の文字に対応する複数の第一認証データとを含み、前記第一認証データは、複数の文字を第一認証により得られ、前記メモリは、前記メモリのコンテンツを予め第二認証をして得られた第二認証データをさらに保存し、前記第二認証の認証信頼度は、前記第一認証の認証信頼度よりも高く、
前記メモリの読み出し動作を実行する際、前記メモリコンテンツ認証機能ユニットは、前記メモリの中の現在のコンテンツの少なくとも1文字に対して前記第一認証を行い、前記第一認証により得られた第三認証データと前記メモリから読み出された前記第一認証データとを比較し、
前記第三認証データと読み出された前記第一認証データが一致しない場合、前記エラー訂正機能ユニットは、前記現在のコンテンツを更新するためにエラー訂正を行い、更新された前記現在のコンテンツの少なくとも1文字に対して前記第一認証を行い、当該第一認証された前記第三認証データと前記メモリから読み出された前記第一認証データとを比較し、
前記メモリコンテンツ認証機能ユニットは、前記第三認証データと読み出された前記第一認証データとが一致する場合、さらに前記現在のコンテンツに対して前記第二認証を行い、前記第二認証により得られた第認証データと前記第二認証データとを比較して、前記現在のコンテンツが信頼できるか否かを判断し、
前記メモリコンテンツ認証機能ユニットによる前記第二認証は、暗号化された強認証(cryptographically strong authentication)であり、当該暗号化された強認証は、SHA又はHMACによるセキュリティハッシュ関数認証を含み、
前記メモリコンテンツ認証機能ユニットによる前記第一認証は文字認証であり、かつ、前記第一認証に比べて、前記第二認証は不可逆的な認証であり、
前記エラー訂正機能ユニットは、
少なくとも1つの可能な訂正を前記メモリにおける少なくとも1つの誤りのある文字に適用して、正しいと思われる文字を生成し、
前記メモリコンテンツ認証機能ユニットを呼び出して、前記文字認証を前記正しいと思われる文字に適用し、
前記メモリコンテンツ認証機能ユニットの出力が「正しい」である場合、前記暗号化された強認証を呼び出して、前記正しいと思われる文字を含むメモリイメージ又はチャンク全体に適用し、
前記暗号化された強認証の出力が「正しい」である場合、前記メモリにおける前記少なくとも1つの誤りのある文字を前記正しいと思われる文字に置き換えることを特徴とする自己訂正メモリシステム。
【請求項2】
前記文字認証を前記メモリにおける少なくとも1つの文字に適用することで、前記少なくとも1つの誤りのある文字を検出し、
「正しくない」の出力を生成する任意の文字は誤りがあると見なされ、「正しい」の出力を生成する任意の文字は誤りがないと見なされることを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項3】
前記少なくとも1つの可能な訂正は、
前記誤りのある文字における少なくとも1ビットを0から1にまたは1から0にフリップすることを含むことを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項4】
可能な訂正が複数の誤りのある文字に適用されて、前記複数の正しいと思われる文字を生成し、それに、前記暗号化された強認証を何度も呼び出して前記複数の正しいと思われる文字をそれぞれ含む複数のメモリイメージ又はチャンクに適用するのではなく、前記暗号化された強認証を一度呼び出して訂正されたメモリイメージ又はチャンクに適用して、前記訂正されたメモリイメージ又はチャンクにおける全ての前記複数の誤りのある文字をそれぞれ前記正しいと思われる文字に置換して、メモリ及び訂正時間の少なくとも一方を節約することを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項5】
第1の可能な訂正及び第2の可能な訂正は、少なくとも1つの誤りのある文字に適用され、前記第1の可能な訂正で前記誤りのある文字におけるフリップされた任意のビットは、前記第2の可能な訂正が前記誤りのある文字に適用される前にフリップされないため、前記第2の可能な訂正を同じ前記誤りのある文字に適用する前に、前記誤りのある文字の前記第1の可能な訂正を元に戻すことを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項6】
全ての前記可能な訂正が前記少なくとも1つの誤りのある文字に適用されることを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項7】
全ての前記可能な訂正が適用される前記誤りのある文字は、
全ての前記可能な訂正が前記誤りのある文字に適用されても、正しい文字認証を生成できない訂正不可能と見なされる誤りのある文字を含むことを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項8】
全ての前記可能な訂正より少ない訂正を含む前記可能な訂正のサブセットを判定するために、少なくとも1つのヒューリスティック法を採用し、
前記サブセットには,正しい前記文字認証をもたらす前記可能な訂正がなくても、前記サブセットにおける前記可能な訂正が前記少なくとも1つの誤りのある文字に適用されることを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項9】
前記メモリコンテンツと前記標準コンテンツとを比較して認証する前記メモリコンテンツ認証機能ユニットは、時点t2で特定のメモリ位置に記憶される前記メモリコンテンツに前記暗号化された強認証を適用して、計算された認証値を生成し、且つ前記計算された認証値と期待される認証値とを比較し、
前記時点t2よりも前の時点t1で、前記メモリコンテンツの信頼性が正しいと判定された場合、前記暗号化された強認証を前記特定のメモリ位置における前記メモリコンテンツに適用して、前記期待される認証値を生成することを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項10】
前記エラー訂正機能ユニットは、少なくとも1つの可能な訂正を前記メモリにおける少なくとも1つの誤りのある文字に適用し、1つの正しいと思われる文字を生成し、前記メモリコンテンツ認証機能ユニットを呼び出して、前記正しいと思われる文字に認証を適用し、前記メモリコンテンツ認証機能ユニットの出力が「正しい」である場合、前記メモリにおける前記誤りのある文字を前記正しいと思われる文字に置換することを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項11】
前記エラー訂正機能ユニットは、少なくとも1つの可能な訂正を少なくとも1つの誤りのある文字の文字認証に適用し、1つの正しいと思われる文字を生成し、前記メモリコンテンツ認証機能ユニットを呼び出して、前記正しいと思われる文字に認証を適用し、前記メモリコンテンツ認証機能ユニットの出力が「正しい」である場合、前記メモリにおける前記誤りのある文字の文字認証を前記正しいと思われる文字の文字認証に置換することを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項12】
前記時点t1は、前記メモリのファームウェア更新が発生した時点であることを特徴とする請求項に記載の自己訂正メモリシステム。
【請求項13】
前に順序付けられた前記可能な訂正が後に順序付けられた前記可能な訂正よりも事前に訂正される可能性が高くなって、合計の修正時間を短縮するように、少なくとも1つのヒューリスティック法を採用して、前記可能な訂正が順序付けられることを特徴とする請求項に記載の自己訂正メモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、集積回路に関わり、特に、集積回路(IC)のメモリコンテンツを保護するシステム及び方法に関する。
【背景技術】
【0002】
本発明の一般的な分野における従来のシステムには、以下の特許文献が含まれる、
US6838331B2、US9525546B2、US20070089034A1、US20080168319A1、US20090164704A1、US20080222491A1、US7266747B2、US20060256615A1、US7937639B2(Infineon 2006)、US20170255512A1、US10026488B2(Sandisk)、US20180239665A1、US20180246783A1(Sandisk 2016)及びUS20180091308(Durham)。
【0003】
ウィキペディア(Wikipedia)のデータ整理に関する項目(https://en.wikipedia.org/wiki/Data_scrubbing)は、データの完全性(データの破損を減らす)が重要であると述べる。例えば、メモリ、ディスクアレイ、ファイルシステム、FPGA又はその他の場所でのデータの書き込み、読み取り、記憶、送信及び処理を行うように構成されたオペレーティングシステム、ストレージシステム又はデータ送信システムにおけるハードウェア又はソフトウェアの障害を防ぐために使用される。完全性を促進するために、データの不一致をチェックすることにより、データ整理を実行する。データ整理はエラー訂正の一種であり、バックグラウンドタスクを使用してメモリのチェック及びエラーの検出を定期的に行う、その後、使用可能な冗長データ(例えば、エラーが検出されたデータのチェックサム及び/又はコピー)を使用して、検出されたエラーを訂正する。データ整理を実行しないと、訂正可能な単一のエラーは、複数の訂正不可能なエラーに蓄積する傾向があるため、データエラーが訂正できるほど小さい時にデータ整理を実行することは有益である。
【0004】
本明細書で記載された全ての刊行物と特許文献、及びそこに直接的または間接的に引用された刊行物及び特許文献の開示は、それぞれに参照により本明細書に組み込まれる。
【先行技術文献】
【特許文献】
【0005】
【文献】US6838331B2
【文献】US9525546B2
【文献】US20070089034A1
【文献】US20080168319A1
【文献】US20090164704A1
【文献】US20080222491A1
【文献】US7266747B2
【文献】US20060256615A1
【文献】US7937639B2(Infineon 2006)
【文献】US20170255512A1
【文献】US10026488B2(Sandisk)
【文献】US20180239665A1
【文献】US20180246783A1(Sandisk 2016)
【文献】US20180091308(Durham)
【非特許文献】
【0006】
【文献】ウィキペディア(Wikipedia)のデータ整理に関する項目(https://en.wikipedia.org/wiki/Data_scrubbing)
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、集積回路(IC)のメモリコンテンツを保護するシステム及び方法を提供することである。
【課題を解決するための手段】
【0008】
いくつかの実施例は、エラーを識別するだけでなく、様々な可能な訂正を認証する(又は認証しない)ために、メモリ認証機能(memory authentication functionality)を使用して、メモリエラーの可能な訂正をテストするシステムを提供する。
【0009】
いくつかの実施例は、少なくとも1つの可能なエラー訂正を適用し、集積回路の既存の検証機能を使用して、この可能なエラー訂正が正しいかどうかを認証することを含むエラー訂正方法を提供する。
【0010】
いくつかの実施例は、従来のエラー訂正のソリューションとは異なり、メモリのコストを増加させないエラー訂正のソリューションを提供する(エラー訂正コード(error correction code,ECC)に対して、y個のデータ量ごとにxビットを記憶する必要がある)。これは、データの「評価」が従来機能の検証を利用するためであり、例えば、セキュリティと完全性を感知する(security-and integrity-aware)メモリ管理は、必然的にその自体のオーバーヘッドを伴い、且つ本明細書で説明するようにこれを利用してエラー訂正を行い、この結果、通常は検証以外のオーバーヘッドが必要ない。
【0011】
本明細書の実施例の適用性は、特に、プロセッサ及びメモリを有する任意の機能を実行する任意の一般的なマイクロコントローラまで広げる。これらの機能は通常、プロセッサにより実行されるファームウェア(firmware,FW)によって作動され、FWは、メモリに常駐し、その自体が、保護を求めるメモリコンテンツに含まれる可能性がある。
【0012】
本明細書のいくつかの実施例は、レガシーICと共に使用されることができる同時に、レガシーIC自体のレガシー検証(legacy auth)の一部を利用し、その暗号計算がハードウェア(hardware,HW)又はファームウェアで行うことができる。通常、検証ダイジェストを記憶するためのハードウェアを提供し、通常のCPU命令を使用するファームウェアを使用することも、ハードウェアアクセラレータを使用することもできる。例えば、ハッシュベースのメッセージ検証コード(Hash-based message authentication code,HMAC)を強力な認証に使用し、レガシーICがHMACを実行するために作動する暗号化されたハードウェアの一部を有する場合、レガシーハードウェアが対象ICのプロセッサのアクセスに使用できれば、これによって、プロセッサが実行しているファームウェアにアクセス可能な場合、ファームウェアはレガシーICで当該レガシーハードウェアを利用できる。
【0013】
追加的または代替的に、ICのレガシーハードウェア及び/又はファームウェアのアクセス制御機能を採用できる。
【0014】
追加的または代替的に、本明細書の実施例は、既存のICのレガシーハードウェア及び/又はファームウェアを採用せずに、適切なファームウェアで本明細書に記載される機能の一部又は全部を実施し、そのファームウェアが既存のICのレガシーファームウェアの可変コード(mutable code)に追加される。
【0015】
従って、少なくとも以下の実施例を提供する。
【0016】
実施例1
メモリと、メモリコンテンツ認証機能と、エラー訂正機能とを含む集積回路と、を備え、
メモリコンテンツ認証機能は、認証待ちメモリコンテンツと標準コンテンツとを比較し、認証待ちメモリコンテンツが標準コンテンツと同じであると認証された場合、メモリコンテンツ認証機能は、「正しい(authentic)」ことを出力し、そうでない場合は「正しくない(non-authentic)」ことを出力し、
エラー訂正機能は、少なくとも1つの可能な訂正をメモリにおける少なくとも1つの誤りのある文字エンティティ(erroneous word entity)に適用して、正しいと思われる文字エンティティを生成し、メモリコンテンツ認証機能を呼び出して、正しいと思われる文字エンティティに適用し、メモリコンテンツ認証機能の出力が「正しい」である場合、メモリにおける誤りのある文字エンティティを正しいと思われる文字エンティティに置き換えて、認証に関連する信頼レベルから導出された信頼レベルに達するエラー訂正を生成することを特徴とする自己訂正メモリシステム。
【0017】
認証待ちコンテンツを標準コンテンツと比較することは、実際の生のコンテンツを直接比較するのではなく、通常、そのダイジェストなどの認証待ちコンテンツのいくつかの派生物を計算し、その派生物を標準コンテンツと比較する。
【0018】
実施例2
上述の実施例のいずれかに記載のシステムによると、認証機能は、暗号化された強力な認証を実行するように作動できる。
【0019】
実施例3
上述の実施例のいずれかに記載のシステムによると、認証機能は、文字認証を実行するように作動してもい。
【0020】
実施例4
上述の実施例のいずれかに記載のシステムによると、エラー訂正機能は、少なくとも1つの可能な訂正をメモリにおける少なくとも1つの誤りのある文字に適用して、正しいと思われる文字を生成し、文字認証を呼び出して正しいと思われる文字に適用し、文字認証の出力が「正しい」である場合、強力な認証を呼び出して、正しいと思われる文字に適用し、強力な認証の出力が「正しい」である場合、メモリにおける誤りのある文字をこの正しいと思われる文字に置き換えて、強力な認証及び文字認証に関連する信頼レベルから導出された信頼レベルに達するエラー訂正を生成するように配置される。
【0021】
実施例5
上述の実施例のいずれかに記載のシステムによると、文字認証をメモリにおける少なくとも1つの文字に適用することで、前記誤りのある文字を検出し、「正しくない」の出力を生成する任意の文字は誤りがあると見なされ、「正しい」の出力を生成する任意の文字は誤りがないと見なされる。
【0022】
実施例6
上述の実施例のいずれかに記載のシステムによると、少なくとも1つの可能な訂正は、誤りのある文字エンティティにおける少なくとも1ビットを0から1にまたは1から0にフリップする(flip)ことを含む。
【0023】
実施例7a
上述の実施例のいずれかに記載のシステムによると、可能な訂正が複数の誤りのある文字に適用されて、複数の正しいと思われる文字を生成する。それに、強力な認証を何度も呼び出して複数の正しいと思われる文字をそれぞれ含む複数のメモリイメージ又はチャンクに適用するのではなく、強力な認証を一度呼び出して訂正されたメモリイメージ又はチャンクに適用して、訂正されたメモリイメージ又はチャンクにおける全ての複数の誤りのある文字をそれぞれ正しいと思われる文字に置換、この結果、メモリ及び/又は訂正時間を節約する。
【0024】
実施例7b
上述の実施例のいずれかに記載のシステムによると、可能な訂正が複数の誤りのある文字に適用されて、複数の正しいと思われる文字を生成する。また、強力な認証を何度も呼び出して複数の正しいと思われる文字をそれぞれ含む複数のメモリイメージ又はチャンクに適用するのではなく、強力な認証を一度呼び出して複数の正しいと思われる文字の全てに適用し、この結果、メモリ及び/又は訂正時間を節約する。
【0025】
実施例8
上述の実施例のいずれかに記載のシステムによると、第1の可能な訂正及び第2の可能な訂正は、少なくとも1つの誤りのある文字に適用され、第1の可能な訂正で誤りのある文字におけるフリップされた任意のビットは、第2の可能な訂正が誤りのある文字に適用される前にフリップされない、これにより、第2の可能な訂正を同じ誤りのある文字に適用する前に、誤りのある文字の第1の可能な訂正を取り消す(undo)。
【0026】
実施例9
上述の実施例のいずれかに記載のシステムによると、全ての可能な訂正が少なくとも1つの誤りのある文字に適用される。
【0027】
実施例10
上述の実施例のいずれかに記載のシステムによると、全ての可能な訂正が適用される誤りのある文字は、訂正不可能な誤りのある文字を含む。当該訂正不可能な誤りのある文字は、全ての可能な訂正を試みたが、まだ正しい文字認証に失敗ため、訂正不可能(uncorrectable)と見なされる。
【0028】
実施例11
上述の実施例のいずれかに記載のシステムによると、全ての可能な訂正より少ない訂正を含む可能な訂正のサブセットを判定するために、少なくとも1つのヒューリスティック法(heuristic)を採用し、ここで、サブセットには,正しい文字認証をもたらす可能な訂正がなくても、サブセットにおける可能な訂正が少なくとも1つの誤りのある文字に適用される。
【0029】
特定の使用例で正しい訂正をより早く見つけるために、ヒューリスティック法を使用して候補訂正(可能な訂正とも呼ぶ)のサブセットを生成したり、候補訂正に優先順位(prioritize)を付けたりすることができ、可能性の低い訂正は後でのみテストされる(例えば、可能性のより高い訂正が検証に失敗場合のみ)。
【0030】
通常、優先する可能な訂正の特定のサブセットが検証に失敗と、システムは残りの可能な訂正を実行しない(事前に検証に成功する可能性が低いと見なされるため、低い優先度と見なされる)。
【0031】
実施例12
上述の実施例のいずれかに記載のシステムによると、認証待ちメモリコンテンツと標準コンテンツとを比較することは、時点t2で特定のメモリ位置に記憶されている認証待ちメモリコンテンツに強力な認証を適用して、計算された認証値を生成し、且つこの計算された認証値と記憶された結果とを比較することである。記憶された結果は、期待される認証値とも呼ばれ、期待される認証値は、前記時点t2よりも前の時点t1で特定のメモリ位置のメモリコンテンツに強力な認証を適用することで生成される。
【0032】
実施例13
集積回路のターゲットメモリ(不揮発性または揮発性)に常駐するメモリコンテンツにエラー訂正機能を提供する方法であり、この方法は少なくとも以下のステップを含む、
(b)ターゲットメモリに常駐するメモリコンテンツのエラーを検出する。
(c)それぞれがエラーの可能な訂正からなる少なくともいくつかのビット置換によって、少なくとも1つのオンザフライシグネチャマッチ(on-the-fly signature match)を検索して、強力な認証を成功させる提案の訂正を定義する。
(d)少なくとも1つのオンザフライシグネチャマッチを見つけると、提案された訂正の最終検証として全体的な認証を使用する。
(e)コードを修正して最終検証に成功するために、パワーフェイルセーフコードリカバリ更新プロセス(power-fail safe code recovery update process)を使用する場合、ターゲットメモリをラボに持ち込む必要がない。
【0033】
実施例14
上述の実施例のいずれかに記載の方法によると、メモリの訂正ニーズを示す出力指示を提供することをさらに含む。例えば、メモリコンテンツの訂正は既に失敗したため、少なくとも1つのターゲットメモリをラボに持ち込んで完全な再プログラミングする必要がある。
【0034】
実施例15
上述の実施例のいずれかに記載の方法によると、出力指示を提供する前に、検索がエラーのシングルビット置換(single-bit permutation)のみに対して実行される。
【0035】
実施例16
上述の実施例のいずれかに記載の方法によると、出力指示を提供する前に、エラーの全てのシングルビット置換及びダブルビット置換に対して検索を実行する。
【0036】
実施例17
上述の実施例のいずれかに記載の方法によると、出力指示を提供する前に、エラーの全てのシングルビット置換に対して検索を実行し、少なくとも1つのオンザフライシグネチャマッチも見つけないと、エラーの少なくともいくつかのダブルビット置換に対して検索を再度実行する。
【0037】
実施例18
上述の実施例のいずれかに記載の方法によると、検出の前に、強力な認証を一度実行し及びオンザフライの文字認証によって、ターゲットメモリに常駐するメモリコンテンツを保護することをさらに含む。
【0038】
実施例19
上述の実施例のいずれかに記載の方法によると、一度実行される強力な認証は、集積回路がアクティブでない状態からウェイクアップされた直後に実行される強力な認証を含む。
【0039】
実施例20
上述の実施例のいずれかに記載の方法によると、一度実行される強力な認証は、集積回路の起動の直後に実行される強力な認証を含む。
【0040】
実施例21
上述の実施例のいずれかに記載の方法によると、一度実行される強力な認証は、集積回路がスリープ状態を終了した直後に実行される強力な認証を含む。
【0041】
実施例22
上述の実施例のいずれかに記載の方法によると、メモリコンテンツは、ターゲットメモリに記憶されたコードを含む。
【0042】
実施例23
上述の実施例のいずれかに記載のシステムによると、エラー訂正機能は、少なくとも1つの可能な訂正をメモリにおける少なくとも1つの誤りのある文字に適用するために作動でき、エラー訂正機能は、正しいと思われる文字を生成し、続いてメモリコンテンツ認証機能を呼び出して、正しいと思われる文字に適用し、且つメモリコンテンツ認証機能の出力が「正しい」である場合、メモリにおける誤りのある文字をこの正しいと思われる文字に置き換える。
【0043】
実施例24
上述の実施例のいずれかに記載のシステムによると、エラー訂正機能は、少なくとも1つの可能な訂正を少なくとも1つの誤りのある文字エンティティの文字認証に適用するために作動でき、エラー訂正機能は、正しいと思われる文字エンティティを生成し、且つメモリコンテンツ認証機能を呼び出して、正しいと思われる文字エンティティに適用し、メモリコンテンツ認証機能の出力が「正しい」である場合、メモリにおける誤りのある文字認証をこの正しいと思われる文字認証に置き換える。
【0044】
実施例25
上述の実施例のいずれかに記載のシステムによると、前の時点t1は、メモリのファームウェア更新が発生した時間である。
【0045】
実施例26
命令を含むコンピュータプログラムであって、プロセッサが前記命令を実行すると、前記命令は、前記プロセッサを上述の1つ又は複数の方法における1つ又は複数の動作を実行させることを特徴とするコンピュータプログラム。
【0046】
実施例27
少なくとも1つのプロセッサを備えるシステムであって、通常、対応する専用のハードウェアと協同して作動し、本明細書に記載の1つ又は複数の方法における少なくとも1つの動作を実行するように構成されるシステム。
【0047】
以下の用語は、先行技術文献に記載されている任意の定義により解釈されたり、明細書に記載されている任意の定義により解釈されたり、それぞれの範囲に以下の内容を含んだりことができる。
【0048】
アクセス制御(Access Control)
通常、プロセッサとメモリ間のインターフェイスに関連付けられている任意の従来のアクセス制御機能を含むように意図され、ハードウェアとファームウェアを含む仮想ロジックエンティティとして実行できる。
【0049】
ターゲットメモリ(Target Memory)
集積回路(ICとも呼ばれる)における任意のメモリアレイを含んでもよい、メモリアレイは通常、使用中及びフリーのメモリのページを含む。現在使用されていないフリーのページは、保留ページ(Reserved page)と見なされる。
【0050】
メモリページの更新時に非常に短期的なウェアハウス(warehouse)として、保留ページを使用する場合、メソッドは通常、保留ページに含まれるコンテンツが書き込まれたコンテンツであることを検証することである(例えば、保留ページのコンテンツと保留ページにコピーされたデータをリアルタイムで比較し、両者が同じであることを確保する)。そうでない場合は、保留ページのコンテンツが削除され、保留ページに改めて書き込んでやり直す。検証は、保留ページに書き込んだ後に、直ちに保留ページを読み取ることを含み、その結果、保留ページ又は空白ページに記憶されるデータが正しくなり、例えば、書き込まれたデータと完全に等しい。
【0051】
強力な認証(Strong Authentication)
メモリコンテンツを検証するためのアルゴリズム又はプロセスを含んでもよい。大きなコード又は持続的なデータセグメントでは、ダイジェスト/セキュリティキーに基づくHASH関数を採用することができる。
【0052】
強力な認証に使用される認証コードは、SHA(SHA-1、SHA-2)又はHMACなどの安全なハッシュ関数に基づいてもよい、例えば、https://en.wikipedia.org/wiki/Secure_Hash_Algorithmsを参照。
【0053】
通常、本明細書の「強力な認証」は、従来の2D水平/垂直エラー訂正方式のように、特定の対応する行または列が検証されるイメージチャンクを確保するだけではない、保護されるコンテンツのデータ全体の一部又はデータ全体のイメージ又はイメージチャンク(コードに限定されるわけではない)を保証する単一の値を生成して、認証待ちデータ全体の一部又はデータ全体のイメージ又はイメージチャンクのコンテンツの完全性を保証する。
【0054】
通常、強力な認証は、文字認証よりも高い信頼度でメモリコンテンツを認証する。従って、本明細書の「強力な認証」は、小さいダイジェスト(本明細書の「文字認証」アルゴリズムにより生成されるダイジェストと比較する)を生成する任意のアルゴリズムまたは任意のメッセージ認証コード方式を含むことが意図されている。従って、文字認証に対して、本明細書の「強力な認証」は、不可逆、即ち、ダイジェストから元の平文を改めて生成することは不可能であると見なされる。
【0055】
通常、メモリコンテンツ(認証によって識別される)における特定のデータ文字のエラーを訂正又は修正した後、且つデータ及び強力な認証を訂正されたデータ及び強力な認証に置き換えた後、全てのメモリコンテンツに使用される強力な認証は再計算され、再計算された結果は、記憶される事前計算された強力な認証又はダイジェストと比較される。
【0056】
強力な認証は通常、特定のデータ本体に適用される(少なくとも1つの誤りのある文字がそれぞれ提案された正しい文字に置き換えられる)。例えば、再計算された強力な認証と比較するデータ本体に応じて、メモリイメージ全体またはその一部のみに適用される。また、再計算された強力な認証と比較する事前計算された強力な認証のデータがメモリイメージ全体(通常、誤りのある文字を提案された正しい文字に置き換える)にあるか、又はメモリーブロックのみに(以上のように)事前計算されているかによって異なりる。
【0057】
再計算された強力な認証のデータと事前計算された強力な認証のデータ(期待される強力な認証のデータとも呼ばれる)とが完全に等しい場合、強力な認証を「成功」と見なされる。
【0058】
「強力な認証」は、ファームウェアがリクエストする時に発生する可能性があり、ファームウェアのリクエストは通常、アプリケーションシステム、つまり集積回路を利用して組み込んだ高いレベルのシステムから発生する(図1を参照)。追加的または代替的に、「強力な認証」は、特定のIC(集積回路)で実行されるアプリケーションファームウェアのリクエストに応じて実行され、特定のICにはエラーを訂正しようとするメモリコンテンツが含まれる。通常、リクエストを受信することは、他のいくつかのIC又はシステム要素で識別されたなどのイベントに起因する特定のトリガー(例えば、図12に従い)に応答して、その自体を再認証することができる。従って、高いレベルのシステムは、本明細書に説明される機能(例えば、強力な認証)のリクエストを実行する可能性のあるソースであり、ICにおけるファームウェア及びハードウェアイベントも同様である。
【0059】
文字(Word)
メモリよりもはるかに小さい任意のデータの断片を含んでもよい。例えば、数千の文字を含む可能性のあるメモリアレイにおける16ビットのデータ、又は128ビットのデータ、256ビットのデータ或いはそれ以上である。通常、文字はメモリから取得される最小データの断片であり、独自の認証コードを持っている。
【0060】
文字認証(Word Authentication)
シグネチャマッチとも呼ばれ、認証待ち「文字」のダイジェストを含んでもよい。
【0061】
オンザフライシグネチャマッチ(on-the-fly signature match)
文字を読み取るたびに、文字認証を同時に読み取る。通常、ビット構造の長さは、データの長さに認証の長さを加えたものである。同時に、読み取られた文字に基づいて認証を再計算して、計算された認証データと読み取られた文字の認証とを比較する。再計算された認証データがメモリから読み取られた認証データと等しい場合、一致であると判断する。
【0062】
全体的な認証(Overall Authentication)
システムが管理しようとするメモリのコンテンツ全体に対する強力な認証を含んでもよい。通常、いつでも、特にデータが訂正された後、コンテンツのダイジェストと事前計算されたデータとが同じであれば、再認証時に、現在のコンテンツは、当時の事前計算されたコンテンツと同じであると見なすことができ、よって、データが訂正された直後に実行される強力な認証が成功した場合、提案された訂正又は修正は正しく、認証又は確認されたものである。
【0063】
ダイジェスト(digest)
コンテンツからハッシュ(hash)を生成するアルゴリズム(例えば、強力な認証などに使用される)を含んでもよい、前記ハッシュは、認証待ちコンテンツの完全性を確認できる。例えば、コンテンツが既に変更されたのか、又は(アクセスが制御されたメモリの場合)不正な変更が加えられたか、又は改ざんされたのかを確認する。従って、ダイジェスト及びハッシュは、本明細書で通常、交換可能に使用され、両方とも名詞と動詞で使用される。
【0064】
HMACアルゴリズム
通常、メッセージ認証コード(message authentication code,MAC)アルゴリズムであり、内部的にハッシュを使用して(暗号化ではなく)MACを生成する。
【0065】
オンザフライ(on-the-fly)
例えば、別の実行中のプロセスと同時に実行する。例えば、認証中に、認証待ちデータを読み取り同時にダイジェストを計算し、このダイジェストを期待される値と比較することができ、又は(コンテンツの)書き込み操作中にダイジェストを計算し、このダイジェストをメモリに書き込むことができる。
【0066】
例えば、以下の特許文献には、オンザフライの暗号化、復号化および認証証が記載されており、その公開内容は参照によりここに組み込まれる。https://patents.google.com/patent/us9525546b2/en。
【0067】
エラー検証(Error Verification)
時点t2で計算されたメモリの「強力な認証のデータ」と、時点t2よりも前の時点t1で事前計算された/記憶(期待)された同じメモリゾーン(memory zone)の「強力な認証のデータ」との間に一致する又は一致しない(等しいまたは等しくない)ことがあるかの判定を含んでもよい。
【0068】
通常、事前計算された強力な認証のデータは、メモリ空間又はアレイ(本明細書の実施例を使用してその完全性の保護を求める)のコンテンツ全体に対する強力な認証のダイジェストを含む。
【0069】
スタックフラッシュ(Stacked flash)
1つのチップを含んでもよい、前記チップは「垂直」又は「3D」チップとして分類され、複数の(数十層の場合もある)メモリ層又は結晶粒を積層することで超高密度ストレージを生成してビットコストを低減する。ビットコストスケーリング(bit cost scaling,BiCS)又はパンチアンドプラグ プロセス(punch and plug process)を使用できる。本明細書の実施例は、通常、メモリに適用され、スタックフラッシュ及び他のフラッシュ/不揮発メモリ(NVM)技術を含むが、これに限定されなくてもよい。
【0070】
オーバーヘッド(Overhead)
メモリ容量における冗長性を含んでもよいが、これは通常、結晶粒の面積及び製品コストの面で不利である。例えば、エラー訂正コード(ECC)を使用してエラー訂正を実行するとは、通常、ECCのXビットをデータ/検証情報のYビットに適用し、エラー訂正に使用されるオーバーヘッド又は追加のメモリ容量(Y/X)*100%に変換することを意味する。
【0071】
文字エンティティ(word entity)
文字自体(文字ビットとも呼ばれる)と、文字に関する文字検証のデータ(検証ビットとも呼ばれる)と、メモリに記憶される文字に関するデータを含んでもよい。文字認証は、この明細書では「対応する」文字認証データと呼ばれる。いくつかの実施例によれば、文字部分のビットと認証部分のビットとがそれぞれスキャン又はフリップされるが、通常、文字に対して計算を実行し、認証比較に対して本明細書に記載される全てのものを実行する。
【0072】
本明細書は、以下のような略称を採用する。
ECC(エラー訂正コードを示す)、FW(ファームウェアを示す)、NVM(不揮発メモリを示す)、ASIC(アプリケーション固有の集積回路を示す)、DSP(デジタル信号処理を示す)、HMAC(ハッシュベースのメッセージ認証コードを示す)、IC(集積回路を示す)及びHW(ハードウェアを示す)。
【0073】
上記の実施例及び他の実施例については、次のセクションで詳細に説明する。本文又は図面で使用される商標は、それぞれが所有者のものであり、本明細書で使用される目的は、如何に本発明の1つの例を実行するかを解釈又は説明するのみである。
【0074】
明細書では、特に明記しない限り、以下の説明から明らかなように、「処理」、「計算」、「推定」、「選択」、「ランキング」、「判断」、「生成」、「再評価」、「分類」、「ステレオマッチング(stereo-matching)」、「検出」、「組み合わせ」及び「取得」、又はその類似用語とは、操作、変換およびその組み合わせが実際のデータとして表される少なくとも1つのコンピュータ、コンピュータシステム、プロセッサまたは類似の電子計算装置の動作、プログラムまたはその組み合わせ、例えばコンピュータシステムのスタック、メモリおよびその組み合わせ、あるいはその他のこのような情報記憶、転送または表示装置内の電子数を意味する。「コンピュータ」という用語は、非限定的な例として、パーソナルコンピュータ、サーバー、組み込みコア、コンピューティングシステム、通信デバイス、プロセッサ(例えば、デジタル信号プロセッサー(DSP)、マイクロコントローラー、フィールドプログラマブルゲートアレイ(field programmable gate array,FPGA)、アプリケーション固有の集積回路(ASIC)など)及びその他の電子計算デバイスを含んでもよいが、これに限定されなくてもよい。
【0075】
本明細書でそれぞれに記載された要素は、必ずしも異なる要素ではなく、代替的に同じ構造であってもよい。要素または特徴が存在できる記載は、(a)要素または特徴が存在する実施例を含むことを意図している、(b)要素または特徴が存在しない実施例、(c)要素または特徴が選択的に存在する実施例、例えば、構成要素または特徴が存在するかどうかをユーザが設定または選択できる。
【図面の簡単な説明】
【0076】
本発明のいくつかの実施例は、以下の図面に示される。
図1図1は、本発明の1つの実施例にかかる集積回路を示す図であり、当該集積回路は、いくつかの実現しようとする機能(「他の機能」とも呼ばれる)を有し、且つエラー訂正機能を有し、当該エラー訂正機能は、認証を利用して可能なエラー訂正をテストする機能を含む。
図2図2は、認証とエラー訂正とを組み合わせるフローの簡略化されたフローチャート図である。
図3図3は、図2の操作ステップ30を実行するための例示的なフローの簡略化されたフローチャート図である。
図4図4は、メモリがページベースの不揮発性メモリであるときに、エラー訂正および検証を実行するための例示的なフローの簡略化されたフローチャート図である。
図5図5は、図2の操作ステップ220を実行するための例示的なフローの簡略化されたフローチャート図である。
図6図6は、図1の集積回路の動作のフローの簡略化されたフローチャート図である。
図7図7は、可能なエラー訂正のテストを含む適切なエラー訂正シーケンスフローの簡略化されたフローチャート図である。
図8図8は、図7の操作ステップ10012を実行するための例示的なフローの簡略化されたフローチャート図である。
図9図9は、図1のメモリゾーン3を示す図であり、文字認証比較機能も示している。ペイロード(payload)と認証のサイズは例としてのみ示され、他の値を持つことができる。
図10図10は、いくつかの実施例にかかるスキャン及びエラー訂正機能を示す図である。ビットを、順次にフリップする、又は任意の適切なヒューリスティック法に基づいて順番にフリップすることができる。
図11図11は、図1のメモリゾーン3を示す図であり、強力な認証比較機能も示している。
図12図12は、いくつかの実施例にかかる強力な認証サイクルがどのようにトリガーされるかを示す図である。
【発明を実施するための形態】
【0077】
本発明の範囲に含まれる方法およびシステムは、例として具体的に示された機能ブロックの一部(例えば、任意の適切なサブセット)又は全部を含んでもよい、例えば任意の適切な順序で例示されている。
【0078】
本明細書で記載及び説明される計算、機能、又はロジックコンポーネントは、例えば、ハードウェア回路のような様々な形態で実施できるが、カスタムVLSI回路、ゲートアレイ又はプログラマブルハードウェアデバイスに限定されない、また、例えばFPGAに限定されない、あるいは、そのソフトウェアプログラムコードが少なくとも1つの有形または無形のコンピュータ読取可能媒体に記憶され、且つ少なくとも1つのプロセッサまたはその任意の適切な組合せによって実行される。
【0079】
特定の機能コンポーネントは、1つの特定のソフトウェアコードシーケンス又は複数のこのようなソフトウェアコードにより形成されてもよい。これらのソフトウェアコードは、機能コンポーネントを参照して本明細書で説明するように共同で機能したり、作動したり又は利用したりする。例えば、コンポーネントは、オブジェクト(objects)、プロシージャ(procedures)、機能(functions)、ルーチン(routines)及びプログラム(programs)など、複数のコードシーケンスにわたって分散でき、通常、協同的に作動するいくつかのコンピューターファイルから発生する可能性がある。
【0080】
適切であれば、本明細書で説明する任意のロジック機能は、リアルタイムアプリケーションとして実施でき、ASICやDSP又はその適切な組み合わせなどを採用でき、これに限定されない、適切なアーキテクチャオプションを採用できる。実際には、本明細書で記載される任意のハードウェアコンポーネントは、同じ場所に位置し又は位置が互いに離れるウエハなどの1つ又は複数のハードウェアデバイスを含んでもよい。
【0081】
ICメーカーは、集積回路のメモリのコンテンツの保護を求める。
【0082】
本明細書の実施例は、多くの異なる技術のメモリに応用できる。したがって、本明細書で使用される「フラッシュ」という用語は、例としてのみ使用される。
【0083】
本発明は、ICにおけるメモリコンテンツの完全性を保証するシステムについて詳しく説明する。通常、このようなメモリへのアクセスは制御され、ダイジェストは、制御され且つ承認されたメモリ更新にサインするために使用できる。従って、その制御されたアクセスの結果ではないメモリの変更は、悪意のあるものか、又は恐らく、一時的な物理的または電気的障害(例えば、物理的なメモリ自体の障害)によるものかなど、望ましくないエラーである。本明細書のシステムは、エラーの可能な訂正をテストするように作動し、集積回路が組み込まれたコンピュータ又は他の製品の「順序外」時間(out-of-order time)を低減する。通常、(1つ又は複数のレベル)認証機能は、集積回路が他の目的で可能な訂正を検証し又は承認し、例えば、文字認証を使用してエラーを発見し、提案された訂正を最初に検証し、且つ強力な認証を使用して最終的に提案された訂正を検証する。
【0084】
いくつかの実施例は、図1に示されるような集積回路を提供することにより、又は既存のICにソフトウェア18を追加するなど、既存の集積回路を変更することにより、エラー検出および回復(エラー訂正とも呼ばれる)を集積回路に提供する。ソフトウェア18は、同じICの別の通常は独立したメモリ空間に常駐できる。そのICは、システムが保護しようとするメモリ空間へのアクセス許可を持ち、通常は、認証を実行するように作動できる。例えば、文字認証及び強力な認証の少なくとも一方は、本明細書で説明するエラー訂正及び検証の少なくとも一方を完成するために使用される。
【0085】
いくつかの実施例は、集積回路にエラー検出及び回復機能を提供する。前記機能は、メモリコンテンツが変更されたイベントを識別するための検出(例えば、従来の認証に基づく)ことを含み、且つIC(及びICに組み込まれた装置、例えばPC)が通常通りに操作を続行して、できるだけ装置のエンドユーザーのオーバーヘッドを低減するために、これらのイベントから回復する。これは、特定のイベント(例として、エンドユーザーが処理しているPC)が故障し、エンドユーザーがコンピューターをラボに持ち込んで修理する必要があることを意味するため、特に有利である。本明細書に記載のいくつかの実施例によれば、メモリ故障を有するコンポーネント自体は自動的に訂正できて、システムのセキュリティを維持するため、以上の問題はない。
【0086】
エラー訂正機能は、HW及びFWの適切な組み合わせで実行できる。メモリは通常、認証及び文字認証の構造をサポートするように構成される。通常、オンザフライの文字認証はハードウェアに実行される(メモリを読み取る時)。強力な認証は通常、ファームウェアに実行され、適切な暗号化されたHWを使用してプロセスを高速化する。FW又はHWにビットフリッピング(bit flipping)及び一致性チェック(consistency check)を実行できる。NVMの消去及び書き換えなどの複雑な操作を考慮して、メモリコンテンツの実際の更新は、通常、ファームウェアにより完成される。
【0087】
図1のシステムは、より高いレベルのシステム16に組み込むことができるいくつかの実施例にかかる集積回路を示す。図1のより高いレベルのシステム16は、本明細書で説明される機能(例えば、強力な認証などの認証)を実行するためのリクエストの1つの可能なソースである。追加的または代替的に、より高いレベルのシステムは、図1のメモリアレイ2を介してその元のコンテンツ(例えば、メモリアレイ2に記憶されたコード)を合法的に取得できるアクセスパスとして機能し、又は後で更新され、即ち、メモリアレイのコンテンツが異なるコンテンツに置き換えられる。
【0088】
アクセス制御機能(例えば、図1に示す))は、通常、HWとFWの組み合わせである。通常、アクセスできるメモリゾーンとアクセスできないメモリゾーンを定義するHWがある。ファームウェアは、いくつかの特権レベルで、メモリアクセスを制御するHWにアクセスできる。したがって、メモリコンテンツの更新は、そのアクセスの許可が存在することをFWに「納得させる」ことによって行われ、この場合、FWはロジックゲートを開き、メモリを更新する。
【0089】
例えば図7の方法に従って、可能なエラー訂正をテストする機能は、ハードウェアまたはファームウェアで実行できる別個のステートマシン(state machine)を含んでもよい(図1のハードウェア6及びファームウェア7の少なくとも一方を参照)。同様に、エラー訂正機能のロジックは、ハードウェアとファームウェアの適切な組み合わせに組み込まれてもよい。
【0090】
図1図9図10及び図11の実施例の全て又は任意のサブセットを組み合わせて、及び/又は前述の図2で説明したフローのすべてまたは任意のサブセットと組み合わせて、図1のシステム又はそこで説明したブロックの任意のサブセットを提供できる。
【0091】
図2は、メモリオーバーヘッドの面で経済的である認証機能とエラー訂正とを組み合わせる提案又は方法を説明する。従来のECCは、各データを記憶するためのECCビットのメモリ容量を必要とするため、本明細書の実施例は、既存の設計に存在する又は新しい設計に提供されるオンザフライの認証を利用することで、エラー検出又は訂正コードの使用または記憶を排除し、セキュリティレベルを損なうことなくエラー訂正に使用する。
【0092】
ECCを使用する場合、攻撃者はデータ及びそのECCを同時に修正し、データ及びECCがそれぞれ互いに一致するように修正されるため、エラーがリアルタイムで認識されない、文字認識又は強力な認証を実行した場合にのみ、システムはエラーを検証できるため、セキュリティレベルは通常、影響を受けない。
【0093】
「オーバーヘッド」という用語は、本明細書では、認証、又はエラー訂正、又は任意の適切な場所に記憶できる他のメモリ管理プロセスによって生じたストレージのニーズを含む。例えば、文字認証(文字レベル認証とも呼ばれる)又は文字ECCでは、より広い文字長さを利用してメモリを生成するため、文字を読み取るときに、認証/ECCビットにもアクセスできるように、認証/ECCは文字のすぐ隣に記憶される。又は、ハードウェアシステムでは、必要な実際のペイロード(認証/ECCビットとは対照的に)を読み取る同時に、1つの追加のメモリコンポーネントの読み取りを実行して、より大きい文字長さを有効に許容する。この後、メモリ全体の文字長を実際のペイロードに専用でき、その実際のペイロードの認証/ECCビットは他の場所に記憶される。
【0094】
図2の方法は、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
【0095】
操作ステップ10
メモリに記憶されたコードなどのメモリコンテンツが、「強力な認証」及び「文字認証」に保護される集積回路を提供する。
【0096】
「強力な認証」を起動する(例えば、大きなコードセグメントでHMACまたはCMACを実行する)。例えば、コールドフラッシュコンテンツ(cold flash content)の置換に対する。
【0097】
オンザフライの「文字認証」(例えば、128ビットのペイロード+16ビットの認証)。例えば、ホットフラッシュコンテンツ(hot flash content)の置換に対して、フラッシュから直接コードを実行する。
【0098】
オンザフライの暗号化、復号化、および認証は、以下の特許文献に記載されており、その公開内容は参照によりここに組み込まれる。https://patents.google.com/patent/US9525546B2/en。
【0099】
操作ステップ20
オンザフライの文字認証が失敗するたびに(例えば、実行中に)、集積回路は停止する(例えば、次の起動まで)又は自動的に再び起動する。例えば、メモリ空間に確保するコードがあるとする。従って、メモリからの読み取りは通常、ICのプロセッサがそのメモリ空間からコードをフェッチしていることを意味する。これは、通常、文字認証の失敗が識別された場合、対象のプロセッサが変更されたコードのみフェッチすることを意味する。このとき、変更されたコードの実行を防止するために、プロセッサは停止する可能性があり、通常はリカバリを開始する必要がある。回復動作は、例えば、ROMにおけるコードのような100%安全であることがわかっている別のコードにジャンプすること、又は
ソフトウェアまたはハードウェアのいずれかによって、ここで説明するエラー訂正及び検証の少なくとも一方をトリガするリセットをROMから再開することを含んでもよい。
【0100】
操作ステップ30
次に起動する時(又は上記の例に従って)に、全ての「文字認証」は、メモリコンテンツを保護するための「強力な認証」計算の一部としてチェックされる。「文字認証」が起動認証中に失敗した場合(実行時とは逆)、エラー検出を構成するため、集積回路は、例えば図3の操作ステップ140~170の全て又は任意のサブセットを実行することによって、メモリコンテンツで見つかったエラーを訂正しようとする。
【0101】
操作ステップ80
メモリがコード実行メモリ(code execution memory)である場合、例えばエラー訂正を行うと(例えば、図3の操作ステップ140~170の全て又は任意のサブセットを実行する)、訂正されたコードを解析できる。この場合、適切なパワーフェイルセーフコードリカバリ更新フロー(Power-fail safe Code recovery update flow)が実行される。コードが成功に修正されると、プロセッサは、通常の操作として実行を再開できる。
【0102】
図3の方法は、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
【0103】
操作ステップ140
破損した文字(例えば起動認証中に「文字認証」がこの文字で失敗したためにエラーが検出された文字)の全てのビット置換(例えば、説明された実施例では128+16のビット置換)をチェックして、一致を検索する。データと認証との間に適切な比率が存在する可能性があることを強調する。128ビット及び16ビットのパラメータは単なる例示である。
【0104】
専用HWまたはSWは、速やかに全ての置換をスキャンできる。例えば、メモリ上、またはメモリ制御およびインターフェイス ユニットの一部として、フラッシュなどのメモリへの書き込み/読み取りを繰り返し行う必要がない。
【0105】
いくつかの実施例によれば、専用のバッファは、破損した文字のデータ構造を記憶でき、また、破損した文字はビットごとに操作され得る。この後、専用のファームウェアコードまたはハードウェアステートマシンを使用して、データ構造の順列をスキャンし、一度に1ビット(例えば、図10の「1ビットをフリップ」のステップを参照)又は1ビット以上をフリップする。置き換えのたびに、当時の、操作された、ビットフリップ反転されたデータ構造に文字認証の計算を行う。通常、置換のスキャンはファームウェアによって実行され、又は代替的に、専用のハードウェアによって実行できる。
【0106】
操作ステップ150
一致が見つかった場合、訂正または修正された(例えば、誤りのあるコンテンツに対する提案された訂正)誤りのあるデータ又はコンテンツを「強力な認証」計算の一部としてダイジェストできる。認証アルゴリズムと訂正されたビット数によっては、複数の一致が見つかる可能性がある。この場合、一致するビットの組み合わせの全ての置換(ビットパターンとも呼ばれ)を試し、正しい「強力な認証」を生成する置換が採用される。通常、正しいとは、訂正またはコードを使用した(または適用した)「強力な認証」の結果が、メモリの元のコンテンツを使用した(または適用された)強力な認証の事前計算の結果と等しいことを意味する。
【0107】
例えば、1ビットエラーの場合、この方法は、最初のビット、例えばビット0をフリップし、続いて認証をチェックし、その後、一致が見つかるまでビット1、2などの後続のビットをチェックすることを含む。2ビットエラーの場合、一度に一対のビットをフリップできる、且つ通常は、それぞれ2ビットの可能な値の各ペアを考慮する。
【0108】
操作ステップ160
それ以外の場合は、例えば、再検索によって、今回はエラーの少なくともいくつかのダブルビット置換に対して、複数のエラーを訂正することが好ましい。1つ以上のエラー(1つ以上のビットを含む)は訂正可能であるが、いくつかの実施例によれば、複数のビットを含むエラーは、その計算が1ビットのエラーの計算よりも複雑で、その計算が約X/2(たとえば144/2)回のチェックが必要であるため修正できない。
【0109】
操作ステップ170
図1に示すように、エラーを訂正できない場合、通常、例えば高いレベルのソフトウェアを介してエンドユーザーにアラートを提供する。
【0110】
図4は、メモリがページベースの不揮発性メモリ(page-based nonvolatile memory)であるときに、エラー訂正および検証を実行する方法である。通常、このようなメモリでは、削除の操作はページ全体(又はメモリ全体)しか操作できない。従って、訂正が必要なエラーが見つかった場合、通常は訂正を適用できるように、ページの調整が実行される。例えば、訂正を適用する際に、訂正データを有するページをいくつかの保留ページにコピーする。より一般的には、本発明は、メモリ使用制限で行われる修正を含む。
【0111】
図4の方法は、例えば、エラーが検出された時にすぐに(以下の操作ステップ220)、又は次のICのブート(IC boot)時(以下の操作ステップ230)などの任意の適切な時間に実行されてもよい。
【0112】
図4の方法は、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
【0113】
操作ステップ210
訂正待ちフラッシュページを識別する。複数のページは訂正の必要がある場合、訂正が必要な文字(アドレス+データ)を不揮発性メモリに保留(又はこの文字の指示)する。次に、操作ステップ220を実行してすぐに訂正し、又は操作ステップ230を実行して次の起動後に修正する。
【0114】
操作ステップ220
例えば、ページごとに図5の操作ステップ310~350の全てを実行することで、各訂正待ちページを訂正する。
【0115】
操作ステップ230
ブート時、フラッシュコード認証が実行される前に、ブートコード(boot code)は、例えば使用可能とマークされたページが存在するかをチェックし、使用可能な場合、ブートコードは、ブートを続行する前に、操作ステップ310~350の全て又は任意のサブセットを完了できる、そうでない場合、いくつかのより高いレベルのファームウェアは、「ガベージコレクション(garbage collection)」を実行できる。例えば、可能な限り最小のメモリ空間を占めるようにメモリコンテンツを圧縮するため、一時的なエラー訂正のために少なくとも1ページを解放する。
【0116】
図5の方法は、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
【0117】
操作ステップ310
保留された事前定義のフラッシュ ページにフラッシュページのアドレス及び訂正されたデート(コード)を書き込み、正しく書き込まれるかを検証する。
【0118】
操作ステップ320
保留ページに、例えば、このページに有効な情報を含む、または使用中で消去しない他のファームウェアを示すビットを設定する。このビットは、本発明のシステムが中断された場合(例えば、ユーザーが電源をオフした後、操作を再開しようとする)にも有用である。
【0119】
操作ステップ330
例えば、図4の操作ステップ210でエラーが検出されたページなどの元のフラッシュページを消去する。
【0120】
操作ステップ340
保留されたフラッシュページからの訂正されたデータで元のフラッシュページを更新し、正しく書き込まれるかを検証する。
【0121】
操作ステップ350
保留されたページを消去して、他のページのエラーを訂正するために将来そのページを使用できるようにする。
【0122】
先に図2のエラー検出および訂正方法をトリガーする変化型は、次のものを含んでもよい。
【0123】
(I)オンザフライ(on-the-fly)
文字認証の失敗にメモリのチェックですぐに応答し、ターゲットメモリから読み取り中に文字認証の不一致が見つかった場合、プロセッサの次の実行シーケンスの前に上記のプロセスを実行する。
【0124】
例えば、メモリからのコードが実行されており、コードフェツチで文字認証の失敗が識別された場合、コードの実行が停止して、例えばメモリ空間の全体またはアレイをスキャンして失敗やエラーを検査きるようになる。その後、コードの実行が一時的に終了し、プロセッサの実行シーケンスで次に実行される操作が実行され、又はコードの先頭から実行が再開される。データがコードでない場合、データの読み取り中にエラーが発生する可能性がある。この場合、プロセッサは再び停止し、メモリのスキャン/訂正/検証がトリガーされる可能性がある。
【0125】
(II)起動(Power-up)
各集積回路がアクティブでない状態からウェイクアップされるイベントでトリガーされる。例えば、起動又はスリープ状態からアクティブ状態に変更した後、強力な認証を再計算し、事前計算された強力な認証のデータと比較し、再計算された強力な認証と事前計算された強力な認証との間に不一致が発生した場合、上記のエラー訂正メカニズムを有効にする。
【0126】
(III)定期的なデータ整理(Periodic aka scrubbing)
場合によっては、強力な認証を再計算し、再計算の結果を事前計算された強力な認証と比較し、再計算された強力な認証と事前計算された強力な認証との間に不一致が発生した場合、本明細書で記載されるメモリエラー訂正のプロセスを有効にできる。トリガーは、例えば、上記の操作を実行するための時間的な指示を与えるいくつかのプログラム可能なタイマーを使用して実行できる。集積回路の正常の操作が妨害されて中断されるため、このメカニズムは通常、損失をもたらすが、より大きな保護を取得できる。
【0127】
(IV)初期化(Initiated)
外部イベントによってトリガーされる。例えば、装置(集積回路とも呼ばれる)は、ハッカー攻撃又は他のいくつかの機能エラーの原因となる試みを認識した(例えば、ICに存在する可能性のあるハードウェアまたはファームウェアのハッカー検出機能を使用する)場合、強力な認証を再計算して、事前計算された強力な認証と比較し、再計算された強力な認証のデータと事前計算された強力な認証のデータとの間に不一致が存在した場合、本明細書で説明するメモリエラー訂正のプロセスを有効にできる。
【0128】
(V)アクセストリガー
メモリがアクセスされるたびにターゲットメモリ全体をチェックする。この実施例は、例えば頻繁に実行されないコードにとっては適切である。メモリへのアクセスが少なく、リアルタイムのデータ完全性が極めて重要である場合、パフォーマンスのオーバーヘッドが比較的重要ではない。
【0129】
任意の特定の装置に上記の変化型の全て又は任意のサブセットを提供できる。
【0130】
図6に示すように、図1にかかる集積回路の操作の流れは、図1のプロセッサ1によって制御又は実行することができる。流れは、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでもよい。
【0131】
操作ステップ1001
複数の文字が含まれるコードなどのコンテンツをメモリゾーンに入力する。各文字に対して、書き込み中に「文字認証データ(word auth)」を計算し、「文字認証データ」を文字に隣接して記憶する。
【0132】
操作ステップ1002
メモリコンテンツに対して「強力な認証」を実行し、結果をメモリのどこかに記憶し(例えば、強力な認証を実行する機能を備えたメモリイメージをオフラインで準備するエンティティなどによって事前に計算される)、セキュリティメモリアレイ2が常駐するICに提供される。
【0133】
通常は、ICの外部で1つのメモリイメージ(memory image)を準備し、当該メモリイメージをICに「注入」して、コンテンツに添付された認証コードと共にプログラミングする。
【0134】
操作ステップ1003
メモリの読み取りを含め、通常どおりメモリを使用する。各メモリの読み取りには、
次のものが含まれる。
【0135】
先ずは、現在のコンテンツに文字認証の計算を行い、これは再計算の「文字認証」とも呼ばれる。
【0136】
続いて、操作ステップ1001で記憶された事前計算の文字認証データをメモリから読み取り、計算された認証データと事前計算された文字認証データとを比較する。
【0137】
再計算された「文字認証データ」がメモリから読み取られた事前計算された「文字認証データ」と等しい場合は、全てのデータが正常であるため、操作を続行する。等しくない場合は、エラーが識別されたと想定して、エラー訂正シーケンスを開始する。
【0138】
可能なエラー訂正のテストを含む適切なエラー訂正シーケンスフローは図7に示されるように、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでも良い。また、エラー訂正機能によって制御または実行することもできる、そのエラー訂正機能はソフトウェアで実行され、図1のプロセッサ1に常駐することができる。
【0139】
操作ステップ1006
訂正待ちコンテンツにエラー修正を実行する。当該訂正待ちコンテンツは、文字と、文字に関連する文字認証とを含む。文字と文字認証とは組み合わせである(例えば、順次の組み合わせ)ため、結合されたビットのストリングが提供される。エラー訂正は、全てのビットをスキャンすることと、結合されたビットのストリングにおける各ビット(ターゲットが1ビットエラーを訂正する場合)及び各ビットのペア(ターゲットが2ビットエラーを訂正する場合)の少なくとも一方をフリップし、文字認証データを再確認することとを含む。エラーが、文字に存在するではなく、文字認証データに存在する可能性があるため、メモリに記憶されたメモリ文字認証データと比較しない。代替的に、1ビットをフリップして、文字認証データを再計算し、再計算された文字認証を使用可能な文字認証データと比較する。例えば、Xビットの読み取りデータとYビットの認証データをメモリから読み取り、この組み合わせられた構造でビットをフリップする。フリップされたビットがXビットのデータにあると、訂正後のデータのXビットの認証を再計算し、再計算された認証データをメモリから読み取られたYビットの認証データと比較する。
【0140】
フリップされたビットがYビットの認証データのビットである場合、メモリから読み取られたXビットの認証データを再計算し、訂正されたYビットの認証データと比較する。
【0141】
一致が見つかった場合(比較された文字認証データが等しいことが見つかった場合)、文字と文字認証データが「一致している」ことを意味しているため、操作ステップ1009に進む。一致が見つからない場合は、次のビット(又はそのペア)をフリップし、上記の再計算と比較の操作を繰り返す。ここおよび他の場所で、「次の」という用語は、実際的に隣接していても、適切なヒューリスティック法により定義されたビット間の順序付けによって、順次または次々と見なされるビットであってもよい。
【0142】
操作ステップ1008
このステップに入ると、通常、ビットフリップ(または2ビットエラーの場合にそのペアフリップ)が実行可能な訂正を生成しなかったため、文字レベルでエラー訂正が失敗した。従って、このメモリコンテンツを訂正不可能なメモリコンテンツにマークする。例えば、図1に示すようにより高いレベルのソフトウェアに警告し、システムを停止することで、プロセッサ1及びその組み合わせは(例えば、適切な出力指示を生成することにより)より高いレベルの回復を促すことができる。例えば、集積回路が取り付けられた装置をに送ってテクニカルサポートを行う。
【0143】
操作ステップ1009
「強力な認証」を行い、例えばメモリゾーン全体のHMACなどのダイジェストを計算して、強力な認証結果を生成する。通常、強力な認証は、ダイジェスト/ MAC /サインを生成する。
【0144】
操作ステップ10010
強力な認証結果を操作ステップ1002でメモリに記憶された事前計算の強力な認証結果と比較する。結果が等しい場合、強力な認証は一致である。それ以外の場合(等しくない)は、強力な認証は不一致である。
【0145】
操作ステップ10011
強力な認証は一致であり、訂正後にメモリコンテンツが合格であることを示す場合は、通常どおりこのメモリを使用し続ける。例えば、操作ステップ1003を実行する。
【0146】
操作ステップ10012
それ以外の場合、即ち、強力な認証は不一致である場合、例えば図8のような不一致プロセスを実行する。図8に示すように、操作ステップ10012における不一致プロセスの適切なフローは、以下の操作の全て又は適切に順序付けられた任意のサブセットを含んでも良い。また、次のように、エラー訂正機能によって制御または実現できる。
【0147】
操作ステップ10012.5
操作ステップ1006をやり直すことにより、図1のメモリアレイ2全体をスキャンするが、識別されたすべてのエラーを修正する。
【0148】
操作ステップ10013
操作ステップ1009~10011をやり直すことにより、強力な認証をやり直す。
【0149】
操作ステップ10014
強力な認証が失敗した場合(つまり、不一致の場合)、訂正できないと想定して、より高いレベルの回復が必要になる場合がある。従って、このメモリコンテンツを訂正不可能なメモリコンテンツにマークする。例えば、図1に示すようにより高いレベルのソフトウェアに警告し、システムを停止することで、プロセッサ1及びその組み合わせは(例えば、適切な出力指示を生成することにより)より高いレベルの回復を促すことができる。例えば、集積回路が取り付けられた装置をに送ってテクニカルサポートを行う。
【0150】
例えば図7の方法に従って、可能なエラー訂正をテストする機能は、ハードウェアまたはファームウェアで実行できる別個のステートマシンを含んでもよい。この機能は、認証機能から「認証サービス」を取得し、これには通常、修正を試みた後の文字認証の検証(例えば、上記の操作ステップ1006)、強力な認証を使用したメモリ全体の検証(例えば、上記の操作ステップ1009~10012)、又は両者の組み合わせが含まれる。
【0151】
以上のすべてまたは大部分のハードウェアの実行は、通常、最高のパフォーマンスが得られる。これは、フロー全体がハードウェアで実行すると、メモリを使用している間にハードウェアによってオンザフライの検証が実行され、エラーがなければパフォーマンスは低下しないためである。
【0152】
ほとんどすべての実行がファームウェアで行われている場合、オンザフライの文字検証を省略でき、代わりに、定期的、時々又は両者の組み合わせでメモリスキャンを実行してエラーをチェックした後に、エラーが見つかった場合、訂正及び検証を実行する(例えば、上記の操作ステップ1006~10012)。
【0153】
すべての実行がファームウェアで行われている場合、既存のIC(レガシーICとも呼ばれる)を使用できる。既存のICは通常、既存のメモリ構造(レガシーメモリ構造とも呼ばれる)を備えており、ソフトウェアで論理的に再配置または管理して、ここで説明するエラー訂正プロセスで計算された文字認証を記憶する。このような場合、エラーの検出と訂正は、通常、上記のようなオンザフライではなく、オフラインで実行される。
【0154】
既存の(またはレガシーの)ICがレガシーの認証機能を使用してメモリコンテンツをいくつかの標準コンテンツ(たとえば、最近の認証メモリーの更新直後に計算されたダイジェスト)と比較する場合でも、可能なエラー訂正をテストするためのインタフェースが認証機能または「認証サービス」から取得した認証機能を有することを保証するために、任意の適切な実施方式を採用することができる。実施方式は通常、認証機能が提案されたテスト待ちエラーを標準コンテンツと比較することを保証できる。例えば 次のように、
【0155】
(1)FWは、メモリからデータ文字及び文字認証データを読み取ることができる。
【0156】
(2)FWは、それ自体でデータ文字の認証データを計算する、又はいくつかの専用のハードウェアを使用してデータ文字の認証を計算することができる。
【0157】
(3)FWは、計算の結果をメモリから読み取られた認証データと比較し、データ構造が一致しているかどうか、またはエラーがあるかどうかを確認する。
【0158】
(4)FWがエラーを識別した場合、FWは、本明細書に記載されるビットフリッピングプロセス(bit flipping process)を実行して、上記の操作(2)のように認証データを計算することができる。
【0159】
(5)メモリを介してエラー訂正が完了されると、FWは、それ自体で又はいくつかのハードウェアを使用してメモリコンテンツ全体のダイジェストを計算できる。これらのハードウェアは、システムの設計者が選択した任意のMACアルゴリズムの実行を加速または容易にすることができる。
【0160】
本明細書のいくつかの実施例の利点は、エラー訂正が上記の追加の認証(通常は強力な認証及び文字認証)を必要とするオーバーヘッドを生成しないことである。
【0161】
本明細書のいくつかの実施例の別の利点は、本明細書で説明されるようなエラーの推測的な訂正(様々な可能なエラー訂正のテスト)は、ビット数にハードリミットを設定しないことである。逆に、従来のエラー訂正方式は、ある種のエラー訂正コードを実行する。例えば、特定のXビットのデータサイズに対して、いくつかの事前に決定されたエラー数、バイナリの組み合わせの数、および選択された方法は、エラー訂正コードに必要なビット数を指定する。一度実行すると、事前に決定された数のビットエラーのみを訂正できない。エラーを訂正する実際的な複雑さは、通常、訂正しようとするビット数が増えるにつれて増大する。ただし、必要に応じて、特定のユースケースが妥当であれば、非常に強力な認証を使用して訂正された任意の数のエラーを検証して、任意の数のビットエラーを訂正できる。
【0162】
本明細書のいくつかの実施例の別の利点は、認証を利用して検証が行われ、高レベルの信頼性を有する正しいエラー訂正を生成する。例えば、強力な認証を使用して提案された訂正を検証する場合、これは通常、「訂正されたデータ」(つまり、提案された訂正)に対する強力な認証の結果が、予想される強力な認証と一致すること(例えば、等しい)を示すと、暗号レベルの信頼度は、訂正されたデータに対して確かに正しいことを意味する。
【0163】
ECC(エラー訂正コード)を実行する従来の技術システムと比較して、本明細書のいくつかの実施例の別の利点は、悪意のあるコンテンツの変更を防止することである。ただし、悪意のある攻撃は、データとエラー訂正コードの両方が相互に一致した方法で置き換えて、エラーが訂正されたように見える一方で、実際にはコンテンツまたはコードが不良または悪意のあるものである可能性がある。逆に、ここで説明するエラー訂正に使用される認証の利点によって、ここでの方法は暗号的に強力であるため、攻撃者は、上記のようにデータと認証コードを悪意を持って置き換えることができなくなる。
【0164】
オンザフライの認証を使用することは、エラーが含まれていることが判明しない限り、パフォーマンスが損なわれない(認証は並行して行われる)、及び/又は既に読み取られたデータを遅延なくすぐに使用できるため、特に有利である可能性がある。
【0165】
コードを実行するメモリや、持続的な又は頻繁に変更されない大きなデータブロブなどのメモリコンテンツへのアクセスが制御されている場合、例えば安全または制御された(ファームウェア)更新によってのみ変更されるメモリコンテンツは、特にメモリが保護されていない又は外部にある場合、図2のフローから利点を得られる。図2のフローから利点を得られるメモリには、EEPROM、ハードディスク、NANDフラッシュ、NORフラッシュ、SDRAM、SRAMが含まれるが、これらに限定されない。
【0166】
安全な(ファームウェア)更新以外に、メモリへのアクセスを制御するためのさまざまなソリューションが存在する。特に、メモリコンテンツへのアクセスを厳密に制御できるさまざまなテクノロジが知られている。たとえば、コンテンツを実行のみのメモリ、又はコンテンツの読み取りのみが可能で、いくつかのアクセス権限を取得または認証した後、専用ゲートウェイを介して更新しまたは書き込み、または特定のアクセス権限を持っている場合にのみ変更可能なアクセス制御設定を変更した後にのみ書き込み可能なメモリ。
【0167】
メモリコンテンツは頻繁に変更されない、例えば、いくつかのメモリコンテンツは、通常、十分に低い頻度で変更されて、ここで説明するシステムと方法により生成されるオーバーヘッドにコスト効率を持たせる。例えば、ソフトウェアの更新が定期的またはときどき発生するため、コードは数か月ごとに一回だけ変更され、または、いくつかのデータが数日または数週間ごとに一回だけ変化され、或いはそれらの間隔で平均的に変化する場合がある。逆に、いくつかのデータはソフトウェアによって操作される可能性があるため、プログラムが実行または動作されるたびに変化する可能性がある。
【0168】
多くの変化型が可能である。例えば、いくつかの実施例によれば、エラーがある場合、当該エラーを訂正(修正とも呼ばれる)し、その後、メモリを直ちに修復する。続いて、どんなプロセスが実行されても、実行を続ける。
【0169】
追加的または代替的に、装置が実行を継続できるように、実際のメモリコンテンツの修復を後で延期することにより、オーバーレイパッチ(overlay patch)を提供する。これは、NVMの処理時間は長くなり、装置がこの操作をオンラインで実行しようとするときに遅延を引き起こす可能性があるため、装置がこの操作をオフラインで完了し、後で実行されると、装置が実行を継続できるようになる点では有益である。専用のオーバーライドパッチでキャッシュ(不揮発性または揮発性)されたコンテンツは通常、同じICにおいて任意のコンピューターメモリに常駐できる。ターゲットメモリが必要な場合に引き出されて修復されるように、ターゲットメモリを使用する任意のプロセッサはそのメモリにアクセスしてもよい。
【0170】
可能な変化型の別の例は、強力な認証及び文字認証のレベルを含むが、これに限定されない、可能なエラー訂正を個別的に又は任意の適切な組み合わせでテストするために、任意の適切な認証を使用してもよい。
【0171】
フローは、強力な認証によってメモリに存在するエラーのみを識別することを要求する場合、存在するエラーが識別されると、各メモリビットがフリップされた後に、強力な認証がビットフリップ(またはそのペア)を検証できる。しかしながら、強力な認証は重い、つまりかかる時間は長くて、リソースを消費する操作であるが、小型のメモリゾーンにとっては完全に実行できるため、2つのレベルの認証を提供する必要がない場合がある。
【0172】
多くの使用例では、2つのレベルを使用することは、このプログラムを保証するのに有効である。本明細書では、2つのレベルとは、文字認証及び強力な認証を意味し、両者はレベルが異なり、つまり、文字認証は、かかる時間がより短い及び/又はより少ないリソースを消費する。強力な認証は、かかる時間がより長い及び/又はより多いリソースを消費する。
【0173】
大型のメモリゾーンの場合、文字認証(一般的に)を有すると、通常はより高い効率的なプロセスになる。これは、文字ベース(文字レベル)にエラーが検出され、文字レベルに提案された基本検証(推測的な修正も呼ばれる(speculative corrections))も行われる場合があるためである。したがって、文字レベルの認証は省略される実施例と比較して、認証又は検証の訂正のために強力な認証をあまり頻繁に実行する必要はない。
【0174】
例(1)
提案された訂正を推測し、提案された訂正を適用してから、強力な認証で訂正を検証する。これが失敗した場合は、再試行し、別の訂正を推測する。
【0175】
例(2)
提案された訂正を推測し、文字認証をチェックする。これが失敗した場合は、成功される文字認証を得るまで、別の提案された訂正を推測し、再び文字認証を使用してチェックする。この後、訂正される最終の検証として強力な認証を使用する。当該強力な認証は、文字認証がなくても使用できる。
【0176】
別の可能な変化型は、任意の適切な方法を使用して、メモリコンテンツに対して検証された提案の訂正を実際に行うことができることである。例えば、メモリコンテンツがコードである場合、検証された提案の訂正をコードに適用するために、パワーフェイルセーフのコード回復更新プロセスを使用してコードを修正する。前記コードは、例えば認証に失敗したため、エラーが発見されたコードである。
【0177】
変化型は、パフォーマンス、領域、実行時間及び信頼性のあるトレードオフに応じて、設計できる。例えば、以下のように
【0178】
A:より大きな「オンザフライのコード文字」は、以下の結果を生成できる。
【0179】
(1)より小さいフラッシュ領域とフェッチスループットのオーバーヘッド(throughput overhead)(特定の「冗長性」幅の場合)。
【0180】
(2)より長いビット修正時間(すべてのビットをスキャンするため)。
【0181】
(3)より大きなフェッチレイテンシ(fetch latency)(実行前にチェックを待機している場合、US20140082721の方法を使用できる、この特許文献は(https://patents.google.com/patent/US20140082721A1/en?oq=13%2f965%2c256))、前記特許文献を引用して本明細書に組み合わせて、以下のようなコンピューティング装置を説明する。
【0182】
プログラムの実行時に使用されるデータ項目のシーケンスを受信するように接続された入力ブリッジと、出力ブリッジと、前記入力ブリッジから前記データ項目のシーケンスを受信し、前記プログラムを実行して、前記出力ブリッジを前記データ項目のシーケンスにおける特定のデータ項目に応答させて信号を出力させるように接続された処理コアと、前記処理コアが前記プログラムを実行している間に前記データ項目のシーケンスを受信して認証し、前記特定のデータ項目が認証されるまで前記出力ブリッジによる信号の出力を禁止するようにする認証ロジックとを、備えるコンピューティング装置。
【0183】
B:より小さい選択に比べて、より大きな「オンザフライの冗長文字」は、以下の結果を生成できる。
【0184】
(1)より安全で信頼性の高い、より速い修正。
【0185】
(2)より大きなフラッシュ領域とフェッチスループットのオーバーヘッド。
【0186】
C:より小さい選択に比べて、より大きな「強力な認証」サイズ(ビット単位)は、以下の結果を生成できる。
【0187】
(1)より安全な、つまり、認証された元のコンテンツ又はメモリの認証されたコンテンツが正しいという信頼度が高まる。
(2)より大きいフラッシュ領域のオーバーヘッド(通常は無視できる)。
(3)SHA256-512 HMACは良い選択のようだ。
【0188】
D:より大きい選択に比べて、より小さいコードセグメンテーション(code segmentation)(コードをそれぞれに「強力な認証」を有するセグメントに分割する場合)は、以下の結果を生成できる。
(1)より大きい領域のオーバーヘッド。
(2)より速い訂正時間。
(3)HASHが累積的である場合、つまりブート/サイクルランタイムを維持できる。即ち、コード全体に1つのHASHを使用する同時に、中間結果を保持して訂正プロセスをスピードアップする。
【0189】
1つのアドバイスは、トレードオフパラメータを動的に決定することである。例えば、異なる(大きいまたは小さい)「オンザフライ冗長文字」及び/又は異なる(大きいまたは小さい)「強い認証」サイズ及び/又は異なる(大きいまたは小さい)セグメンテーション(コードを「強力な認証」を有するセグメントに分割する場合)。フラッシュ統計メッセージごとおよび/またはウェアレベル(wear level)ごとに、例えば、ターゲットメモリーが劣化した場合、上記のトレードオフパラメータをターゲットメモリが劣化していない時よりも速く及び/又はロバストなエラー訂正に変更する。例えば、劣化したフラッシュの動作は、劣化していないフラッシュの動作と比較して、遅くなるためである。
【0190】
いくつかの実施例によれば、統計的訂正を伴うオンザフライの「文字認証」が提供される。ターゲットメモリ全体ですべてのシングルビットフリップオプション(可能な訂正)のブルートフォース別名ダムスキャンを実行するのではなく、代わりに、特定の文字でエラーが検出された場合は、「ショートカット」(基本型の実施例に対して)を採用する。
【0191】
特定の文字のすべてのシングルビットフリップをスキャンし又は検索して、特定の文字を再び訂正しようとし、ペイロード文字が認証された文字と一致するように訂正できる場合は、メモリコンテンツの完全性に対する最高の検証として、強力な認証を呼び出す。
【0192】
従って、本発明の実施例は、特に以下のことを含む。
【0193】
実施例(A)
ターゲットメモリコンテンツの少なくとも一部の完全性を検証するために、ターゲットメモリ全体の少なくとも一部のビットフリップオプションのスキャンを含む強力な認証を呼び出すことを含む認証とエラー訂正を組み合わせる方法。
【0194】
実施例(B)
実施例(A)の方法によれば、スキャンは、ターゲットメモリ全体に対して実行される。
【0195】
実施例(C)
統計的訂正の実施例を有するオンザフライ「文字認証」は、実施例(A)の方法によれば、文字認証が使用され、特定の文字に認証エラーが検出された場合、ターゲットメモリ全体ではなく、特定の文字のみスキャンして、特定の文字を訂正しようとする。ペイロード文字が認証文字と一致する場合は、メモリコンテンツの完全性に対する最高の検証として、強力な認証を呼び出す。
【0196】
統計的訂正において、メモリコンテンツの訂正が成功する保証はない。
【0197】
図1では、「他のプロセッサ機能」は、図示したプロセッサが、ここに記載された特定の機能以外の主要な機能を持ち、タイマー、通信チャネル、コンバータの全部または任意のサブセットなどの周辺機器を使用してもよい。
【0198】
図10の「1ビットをフリップする」のステップは、例えば、普通のロジック設計者及びソフトウェア設計者が知られた任意の適切な置換スキャンプロセスを使用して、ハードウェア、ソフトウェア、およびその組み合わせで実行できる。
【0199】
図9及び図10の少なくとも一方の「計算認証」のステップは、オンラインの文字認証計算を含んでもよい。文字認証は、異なる強度のレベルを持ち、通常、強度及びパフォーマンスの間には、トレードオフがある。強度を極端にすると、文字認証が修正の最終的な判定になる可能性があると想定できる。このような場合、強力な認証はオプション(optional)になる。従って、文字認証を単独で使用し、又は強力な認証を単独で使用し、両者を同時に使用してもよい。この場合、文字認証を簡略化でき(低いレベルの強度で実行できるため、より良いパフォーマンスを生成する)、強力な認証に依存して最終的な判定をする。
【0200】
ファームウェアは、本明細書のいくつかの実施例を実現するために使用される場合、当該ファームウェアをフラッシュまたはROMなどの不揮発性メモリに記憶してもよい。
【0201】
代替的に、本明細書で説明するいくつかの実施例は、ハードウェアで部分的または排他的に(即ち、ファームウェアなしで)実行でき、その場合、本明細書で説明する変数、パラメータ、逐次演算及び計算の一部またはすべてがハードウェアで実施できる。
【0202】
「強制的」、「要求」、「必要」などの用語とは、明確にするために本明細書で説明する特定の実施方式またはアプリケーションのコンテキスト内で行われた実施方式の選択を指し、限定を意図するものではない。代替的な実施方式において、同じ要素が必要ではなくと定義されている場合や、完全に削除されている場合もある。
【0203】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0204】
1…プロセッサ
2…メモリアレイ
6…ハードウェア
7…ファームウェア
10…集積回路
16…システム
18…ソフトウェア
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12