(57)【要約】  インターフェース回路と、インターフェース回路に通信可能に結合されたモニタ回路と、を含む装置。前記モニタ回路は、インターフェース回路を介してモニタ回路に通信可能に結合されたメモリに発行されたコマンドを識別することと、コマンドが許可されているか否かを決定することと、コマンドが許可されていないという決定に基づいて、コマンドをキャンセルすることと、を行うように構成されている。【選択図】  図１
2021507369.tif 000002
【特許請求の範囲】
【請求項１】
インターフェース回路と、
前記インターフェース回路に通信可能に結合されたモニタ回路と、を備えた装置であって、
前記モニタ回路が、
前記インターフェース回路を介して前記モニタ回路に通信可能に結合されたメモリに発行されたコマンドを識別することと、
前記コマンドが許可されているか否かを決定することと、
前記コマンドが許可されていないという決定に基づいて、前記コマンドをキャンセルすることと、を行うように構成されている装置。
【請求項２】
前記モニタ回路は、前記コマンドをキャンセルするために、
前記モニタ回路に、受信されたチップ選択信号を修正させて、修正されたチップ選択信号を生成させることと、
前記修正されたチップ選択信号を前記メモリに送信することと、を行うように更に構成されている、請求項１に記載の装置。
【請求項３】
前記モニタ回路は、前記コマンドをキャンセルするために、前記修正されたチップ選択信号の完了前に、前記メモリによって使用されるクロックバスにクロックパルスを加えるように更に構成されている、請求項２に記載の装置。
【請求項４】
前記モニタ回路は、前記コマンドをキャンセルするために、前記メモリによって使用される前記クロックバスに前記クロックパルスが加えられる前に、前記コマンドのソースをリセットするように更に構成されている、請求項３に記載の装置。
【請求項５】
前記モニタ回路は、前記コマンドをキャンセルするために、前記修正されたチップ選択信号の完了前に、前記コマンドのソースをリセットするように更に構成されている、請求項２〜４のいずれか一項に記載の装置。
【請求項６】
前記モニタ回路は、前記コマンドをキャンセルするために、前記受信されたチップ選択信号の完了後に、前記修正されたチップ選択信号を完了するように更に構成されている、請求項２〜５のいずれか一項に記載の装置。
【請求項７】
前記モニタ回路は、前記コマンドをキャンセルするために、前記コマンドが書き込みコマンド又は消去コマンドであるという決定に応答して、前記修正されたチップ選択信号を完了するように更に構成されている、請求項２〜６のいずれか一項に記載の装置。
【請求項８】
前記モニタ回路は、前記コマンドをキャンセルするために、前記コマンドのソースから後のチップ選択信号が受信される前に、前記修正されたチップ選択信号を完了するように更に構成されている、請求項２〜７のいずれか一項に記載の装置。
【請求項９】
前記モニタ回路は、前記コマンドをキャンセルするために、前記コマンドが読み出しコマンドであるという決定に基づいて、前記コマンドの前記ソースから後のチップ選択信号を受信する前に、前記修正されたチップ選択信号を完了するように更に構成されている、請求項２〜８のいずれか一項に記載の装置。
【請求項１０】
前記モニタ回路が、
前記モニタ回路に通信可能に結合されたメモリに発行された読み出しコマンドを識別することと、
前記メモリからの内容を信頼されたコピーと比較して、前記メモリからの前記内容及び前記信頼されたコピーが同一であるか否かを決定することと、
前記メモリからの前記内容が前記信頼されたコピーと同じではないという決定に基づいて、是正措置を講じることと、を行うように更に構成されている、請求項１〜９のいずれか一項に記載の装置。
【請求項１１】
前記モニタ回路が、
プロセッサと、
命令を含む非一時的な機械可読媒体と、を含み、前記命令は、前記プロセッサによって読み込まれて実行されると、前記モニタ回路に、前記モニタ回路に通信可能に結合されたメモリに発行された前記コマンドを識別することと、前記コマンドが許可されているか否かを決定することと、前記コマンドをキャンセルすることと、を行わせる、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
インターフェース回路を介してモニタ回路に通信可能に結合されたメモリに発行されたコマンドを識別するステップと、
前記コマンドが許可されているか否かを決定するステップと、
前記コマンドが許可されていないという決定に基づいて、前記コマンドをキャンセルするステップと、を含む方法。
【請求項１３】
前記コマンドをキャンセルするステップは、
受信されたチップ選択信号を修正して、修正されたチップ選択信号を生成するステップと、
前記修正されたチップ選択信号を前記メモリに送信するステップと、を含む、請求項１２に記載の方法。
【請求項１４】
前記コマンドをキャンセルするステップは、前記修正されたチップ選択信号の完了前に、前記メモリによって使用されるクロックバスにクロックパルスを加えることを含む、請求項１３に記載の方法。
【請求項１５】
前記コマンドをキャンセルするステップは、前記メモリによって使用される前記クロックバスに前記クロックパルスが加えられる前に、前記コマンドのソースをリセットするステップを更に含む、請求項１４に記載の方法。
【請求項１６】
前記コマンドをキャンセルするステップは、前記修正されたチップ選択信号の完了前に、前記コマンドのソースをリセットするステップを含む、請求項１３又は１４に記載の方法。
【請求項１７】
前記コマンドをキャンセルするステップは、前記受信されたチップ選択信号の完了後に、前記修正されたチップ選択信号を完了するステップを含む、請求項１３〜１６のいずれか一項に記載の方法。
【請求項１８】
前記コマンドをキャンセルするステップは、前記コマンドが書き込みコマンド又は消去コマンドであるという決定に応答して、前記修正されたチップ選択信号を完了するステップを含む、請求項１３〜１７のいずれか一項に記載の方法。
【請求項１９】
前記コマンドをキャンセルするステップは、前記コマンドのソースから後のチップ選択信号が受信される前に、前記修正されたチップ選択信号を完了するステップを含む、請求項１３〜１８のいずれか一項に記載の方法。
【請求項２０】
前記コマンドをキャンセルするステップは、前記コマンドが読み出しコマンドであるという決定に基づいて、前記コマンドの前記ソースから後のチップ選択信号を受信する前に、前記修正されたチップ選択信号を完了するステップを含む、請求項１３〜１９のいずれか一項に記載の方法。
【請求項２１】
前記モニタ回路が、
前記モニタ回路に通信可能に結合されたメモリに発行された読み出しコマンドを識別するステップと、
前記メモリからの内容を信頼されたコピーと比較して、前記メモリからの前記内容及び前記信頼されたコピーが同一であるか否かを決定するステップと、
前記メモリからの前記内容が前記信頼されたコピーと同じではないという決定に基づいて、是正措置を講じるステップと、を行うように更に構成されている、請求項１２に記載の方法。
【請求項２２】
請求項１〜１１に記載の装置のいずれかを備える、マイクロコントローラ。
【請求項２３】
マイクロコントローラと、メモリと、請求項１〜１１に記載の装置のいずれかと、を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権出願）
本出願は、２０１７年１２月１５日に提出された米国特許仮出願第６２／５９９，２８８号の優先権を主張し、その出願の内容は、参照によりその全体が本明細書に組み込まれる。
【０００２】
（発明の分野）
本開示は、電子デバイス用のフラッシュメモリの制御及びセキュリティに関し、より具体的には、透過的に取り付けられたフラッシュメモリセキュリティに関する。
【背景技術】
【０００３】
フラッシュメモリは、コンピューティングデバイスとその要素との間でデータを記憶及び転送するために使用される不揮発性メモリである。フラッシュメモリは、電子的に再プログラムされ、消去される能力を有する。フラッシュメモリは、ユニバーサルシリアルバス（universal serial bus、「ＵＳＢ」）ドライブ、ポータブル音楽プレーヤ、スマートフォン、デジタルカメラ、又はソリッドステートドライブなどの電子デバイス又はコンピューティングデバイス内に実装され得る。
【０００４】
フラッシュメモリは、電子的に消去可能なプログラマブル読み出し専用メモリ（electronically erasable programmable read only memory、「ＥＥＰＲＯＭ」）の一種であり得る。フラッシュメモリは、ＵＳＢジャンプドライブなどのスタンドアロンメモリ記憶デバイスを実装し得る。ＥＥＰＲＯＭは、電子デバイスを使用してデジタルデータを消去又は書き込むデータメモリデバイスの一種である。フラッシュメモリは、大きいブロックでプログラムされ、消去される、ＥＥＰＲＯＭの別個のサブタイプであってもよい。
【０００５】
ＥＥＰＲＯＭの内容は、無許可の読み出し又は書き込み操作を受け易い場合がある。例えば、ウイルスが、無許可の書き込みで、ＥＥＰＲＯＭ上に記憶されたファームウェア中に改変をインストールし得る。別の例では、ウイルスが、無許可の読み出しで機密内容にアクセスし得る。ＥＥＰＲＯＭの一般的な例として、フラッシュメモリ又はフラッシュメモリコントローラは、そのような無許可の読み出し又は書き込み操作に対抗するネイティブハードウェアベースの保護又はリアルタイム保護を欠く場合がある。本開示の実施形態は、無許可の読み出し又は書き込み操作に対抗するハードウェアベースの保護又はリアルタイム保護を提供し得る。
【発明の概要】
【０００６】
本開示の実施形態は、装置を含む。該装置は、インターフェース回路と、インターフェース回路に通信可能に結合されたモニタ回路と、を含む。モニタ回路は、インターフェース回路を介してモニタ回路に通信可能に結合されたメモリに発行されたコマンドを識別することと、コマンドが許可されているか否かを決定することと、コマンドが許可されていないという決定に基づいて、コマンドをキャンセルすることと、を行うように構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、モニタ回路に、受信されたチップ選択信号を修正して、修正されたチップ選択信号を生成することと、修正されたチップ選択信号をメモリに送信することと、を行わせるように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、修正されたチップ選択信号の完了前に、メモリによって使用されるクロックバスにクロックパルスを加えるように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、メモリによって使用されるクロックバスにクロックパルスが加えられる前に、コマンドのソースをリセットするように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、修正されたチップ選択信号の完了前に、コマンドのソースをリセットするように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、受信されたチップ選択信号の完了後に、修正されたチップ選択信号を完了するように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、コマンドが書き込みコマンド又は消去コマンドであるという決定に応答して、修正されたチップ選択信号を完了するように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、コマンドのソースから後のチップ選択信号が受信される前に、修正されたチップ選択信号を完了するように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために、コマンドが読み出しコマンドであるという決定に基づいて、コマンドのソースから後のチップ選択信号を受信する前に、修正されたチップ選択信号を完了するように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、モニタ回路に通信可能に結合されたメモリに発行された読み出しコマンドを識別することと、メモリからの内容を信頼されたコピーと比較して、メモリからの内容及び信頼されたコピーが同一であるか否かを決定することと、メモリからの内容が信頼されたコピーと同じではないという決定に基づいて、是正措置を講じることと、を行うように更に構成され得る。上記実施形態のいずれかと組み合わせて、モニタ回路は、プロセッサ及び非一時的な機械可読媒体を含み得る。媒体は、命令を含み得、命令は、プロセッサによって読み込まれて実行されると、モニタ回路に、モニタ回路に通信可能に結合されたメモリに発行されたコマンドを識別することと、コマンドが許可されているか否かを決定することと、コマンドをキャンセルすることと、を行わせる。
【０００７】
本開示の実施形態は、上記の実施形態のモニタ回路のうちのいずれかによって実施される方法を含み得る。
【図面の簡単な説明】
【０００８】
【図１】本開示の実施形態による、透過的に取り付けられたフラッシュメモリセキュリティを提供するためのシステムの例示である。
【図２】本開示の実施形態による、透過的に取り付けられたフラッシュメモリセキュリティを提供するためのシステムの一部分のより詳細な例示である。
【図３】本開示の実施形態による、コントローラからメモリへの例示的なコマンドのタイミングの例示である。
【図４】本開示の実施形態による、標的フラッシュメモリ１０８の無許可アクセスに対する是正措置を講じるための、完了チップ選択信号の発行を禁止するシステムの操作の例示である。
【図５】本開示の実施形態による、メモリの無許可アクセスに対する是正措置を講じるための、完了チップ選択信号の発行を禁止するシステムの更なる操作の例示である。
【図６】本開示の実施形態による、フラッシュメモリの無許可アクセスに対する是正措置を講じるための、完了チップ選択信号の発行を禁止するシステムの更に別の操作の例示である。
【図７】本開示の実施形態による、標的フラッシュメモリの無許可アクセスに対する是正措置を講じるための、チップ選択信号の完了を加速するシステムの操作の例示である。
【図８】本開示の実施形態による、透過的に取り付けられたフラッシュメモリセキュリティを実施するための例示的な方法の例示である。
【図９Ａ】本開示の実施形態による、メモリの内容を監視する例示的な構成を例示する。
【図９Ｂ】本開示の実施形態による、メモリの内容を監視する例示的な構成を例示する。
【図１０】本開示の実施形態による、メモリの内容を監視するための例示的な方法を例示する。
【発明を実施するための形態】
【０００９】
図１は、本開示の実施形態による、透過的に取り付けられたフラッシュメモリセキュリティを提供するためのシステム１００の例示である。システム１００は、保護を受けるメモリに透過的に取り付けられるか、又は通信可能に結合されるように構成されたモニタ１０２を含み得る。モニタ１０２は、保護を受けるメモリのセキュリティを実施するために、アナログ回路、デジタル回路、組み合わせ論理、命令若しくはハードウェア記述言語によって顕在化される回路、プロセッサによる実行のための命令、又はそれらの任意の組み合わせによる実施態様を含む、半導体デバイス、フィールドプログラマブルゲートアレイ、特定用途向け集積回路、モジュール、又は他の回路として実装され得る。モニタ１０２は、それ自体の内部に処理ハードウェアを含んでもよく、又はシステム１００の他の箇所の他の処理ハードウェアに依存してもよい。一実施形態では、モニタ１０２は、プロセッサ１２０及びメモリ１２２を含み得る。実行用命令は、プロセッサ１２０による実行のためにメモリ１２２内に読み込まれ得、実行されると、モニタ１０２に、本開示に説明されるモニタ１０２の操作及び構成を実施させる。モニタ１０２は、メモリへのインターフェース１０１、１０３を含み得る。モニタ１０２によるメモリへの通信又はメモリからの通信は、インターフェース１０１、１０３を通じて実施され得る。インターフェース１０１、１０３は、アナログ回路、デジタル回路、ファームウェア、又はそれらの任意の好適な組み合わせを有する回路によって実装され得る。
【００１０】
モニタ１０２は、保護される任意の好適なメモリに対するメモリセキュリティを提供するように構成され得る。そのようなメモリは、データがブロック内でアクセスされるか、又はデータがチップイネーブル、チップ選択、又は他の選択若しくはイネーブル信号を介してアクセスされる、任意のメモリを含み得る。このようなメモリは、例えば、フラッシュメモリ、ＵＳＢメモリ、パラレルメモリ、又はシリアルペリフェラルインターフェース（serial peripheral interface、「ＳＰＩ」）メモリデバイスを含み得る。保護されるメモリは、取り付けられたメモリであり得、メモリは、システム１００の他の要素などの別のコンピューティングデバイス又は電子デバイスの外部周辺機器として取り付けられる。例えば、モニタ１０２は、標的フラッシュメモリ１０８のメモリセキュリティを提供するように構成され得る。システム１００は、モニタ１０２によって保護され得る任意の好適な組み合わせ、数、及び種類のメモリを含み得る。具体的には、システム１００は、複数のフラッシュメモリを含んでもよく、業界標準ＳＰＩバスを使用してシステム１００の残りの部分に通信可能に結合され得る。一実施形態では、モニタ１０２の単一インスタンスは、標的フラッシュメモリ１０８の複数のインスタンスへのアクセスを保護し得る。別の実施形態では、システム１００は、標的フラッシュメモリ１０８の各インスタンスを保護するためにモニタ１０２のインスタンスを含み得る。
【００１１】
システム１００は、コンピュータ、タブレット、ラップトップ、サーバ、サーバアプリケーション、スマートフォン、アプライアンス、マイクロコントローラ、又は消費者電子機器などの、任意の好適なコンピューティングデバイス又は電子デバイスを、完全に又は部分的に実装し得る。システム１００は、システム中央処理装置（central processing unit、「ＣＰＵ」）１０６などのプロセッサを含み得る。システムＣＰＵ１０６は、任意の好適な数及び種類の処理コアを有する任意の好適なプロセッサによって実装され得る。システム１００の要素は、ＳＰＩ、拡張ＳＰＩ（enhanced SPI、「ｅＳＰＩ」）、スレーブアタッチドフラッシュシェアリング（slave attached flash sharing、「ＳＡＦＳ」）、Ｉ２Ｃ、アドバンストマイクロコントローラバスアーキテクチャ（アドバンスト・マイクロコントローラ・バス・アーキテクチャ、「ＡＭＢＡ」）、又は汎用入力及び出力（general purpose input and output、「ＧＰＩＯ」）などの任意の好適なバス又はプロトコルを通じて互いに通信可能に結合され得る。
【００１２】
システム１００は、標的フラッシュメモリ１０８などのメモリにアクセスし得る任意の好適な数及び種類の要素を含み得る。そのような要素は、システムＣＰＵ１０６、標的フラッシュメモリ１０８に独立してアクセスし得る他の要素、又はシステムＣＰＵ１０６からシステム１００の一部の管理をオフロードするように構成された要素を含み得る。標的フラッシュメモリ１０８にアクセスするように構成された要素は、コントローラ１１０によって表される。コントローラ１１０は、プロセッサ１２４、メモリ１２６、集積回路デバイス、アナログ回路、デジタル回路、又はそれらの任意の好適な組み合わせによって実装され得る。コントローラ１１０は、例えば、ベースボード管理コントローラ（baseboard management controller、「ＢＭＣ」）を実装し得る。コントローラ１１０は、標的フラッシュメモリ１０８の試行されたアクセスを、例えば、それ自体、システムＣＰＵ１０６、又は他の要素（図示せず）の代わりに、実施し得る。
【００１３】
標的フラッシュメモリ１０８の書き込み又は読み出しなどの試行されたアクセスは、図１に示されているか否かにかかわらず、任意の実体によって行われ得る。標的フラッシュメモリ１０８の無許可の試行されたアクセスは、例えば、システムＣＰＵ１０６上で動作するソフトウェアによって、コントローラ１１０によって、又はコントローラ１１０の要求を行う他の要素によって、行われ得る。試行されたアクセスのソースにかかわらず、モニタ１０２は、標的フラッシュメモリ１０８の試行されたアクセスを監視するように構成され得る。例えば、ブート時及び定期的に、コントローラ１１０は、標的フラッシュ１０８内のコントローラコード１２８にアクセスすることを試行して、メモリ１２６内に読み込み、次いで、プロセッサ１２４を用いてコントローラコード１２８を実行し得る。コントローラコード１２８は、例えば、実行するためのコンパイルされたオブジェクトコード、又はコントローラ１１０用の他の命令若しくはソフトウェアを含み得る。コントローラ１１０用のブートコードは、メモリ１２６内に記憶され得、そのようなブートコードは、プロセッサ１２４によって実行されると、コントローラ１１０に、標的フラッシュ１０８内のコントローラコード１２８にアクセスすることを試行させ得る。コントローラ１１０は、プロセッサ１２４によって実行されるメモリ１２６に実行のための命令をコピーするために、標的フラッシュ１０８内のコントローラコード１２８を読み出すことを試行するように構成され得る。
【００１４】
一実施形態では、モニタ１０２は、透過的な様式で標的フラッシュメモリ１０８の保護を提供し得る。モニタ１０２によって提供されるセキュリティ、又はモニタ１０２自体も、モニタ１０２又はその操作がシステム１００の他の部分又は第三者に対して観察されないという点で、透過的であり得る。システム１００の他の部分又は第三者は、モニタ１０２によって標的フラッシュメモリ１０８に実装されたセキュリティ機構及び対策を認識することができない。
【００１５】
一実施形態では、コントローラ１１０は、ＳＰＩバスを使用して標的フラッシュメモリ１０８にアクセスすることを試行し得る。ＳＰＩバスが使用されると、チップ選択（chip select、「ＣＳ」）信号が、試行された読み出し又は書き込みのためにアクセスされるべき特定のメモリデバイスを識別するために使用され得る。ＣＳ信号はまた、チップイネーブル信号としても知られ得る。様々な他のバスは、そのようなメモリデバイスが、試行されたアクセスのために使用されるべきメモリデバイスのグループを識別するために、ＣＳ信号、チップイネーブル信号、又は等価物を使用し得る。そのようなフラッシュメモリデバイスのグループからの所与のフラッシュメモリデバイスが使用されることになる場合、アクティブＣＳ信号は、所与のフラッシュメモリデバイスに送られ得るが、他のフラッシュメモリデバイスへのＣＳ信号は、非アクティブに保持され得る。ＣＳ信号は、アクティブハイであってもよく、又はアクティブローであってもよい。本開示の例では、ＣＳ信号は、アクティブローであり得る。ＣＳ信号は、任意の好適なスイッチ又は構造（図示せず）を介して適切なフラッシュメモリデバイスに送られ得る。
【００１６】
一実施形態では、モニタ１０２は、標的フラッシュメモリ１０８に送信されるべきＣＳ信号を傍受するように構成され得る。モニタ１０２は、任意の好適な様式で、そのようなＣＳ信号（図１でマスターＣＳと示される）を傍受するように構成され得る。一実施形態では、モニタ１０２は、コントローラ１１０又は標的フラッシュメモリ１０８にアクセスする他の要素と標的フラッシュメモリ１０８との間のインターフェース内に実装され得る。別の実施形態では、コントローラ１１０によって発行されたＣＳ信号は、標的フラッシュメモリ１０８に転送される前に、モニタ１０２にデイジーチェーン接続され得る。コントローラ１１０は、ＣＳ信号がモニタ１０２を介して送られることを認識しない間、ＣＳ信号を発行し得る。モニタ１０２は、必要に応じてＣＳ信号を修正し、結果的に得られた修正された信号（図１でフラッシュＣＳと示される）を送るように構成され得る。コントローラ１１０は、ＣＳ信号が最初にモニタ１０２を介して送られることになるという任意の他の指示を認識又は受信せずに、ＣＳ信号を標的フラッシュメモリ１０８に発行し得る。図２に示されるように、他の信号は、コントローラ１１０から標的フラッシュメモリ１０８に直接送られ得る。そのような他の信号は、モニタ１０２にコピーされ得る。システムＣＰＵ１０６若しくはコントローラ１１０にリセット若しくは抹消信号を発行することによって、標的フラッシュメモリ１０８にコントローラ１１０から送信されたクロックを修正することによって、又は他の技術によって、標的フラッシュメモリ１０８に送信されたときのＣＳ信号の修正を介して、モニタ１０２は、標的フラッシュメモリ１０８を無許可アクセスから保護するように構成され得る。
【００１７】
モニタ１０２は、別のフラッシュメモリデバイス又は他の種類のメモリデバイスに通信可能に結合され得る。そのようなメモリデバイスは、基本入力／出力システム（basic input/output system、「ＢＩＯＳ」）フラッシュ１０４として表され得る。メモリ１０４は、任意の好適な数及び種類のデータを含み得る。更に、メモリ１０４の内容は、標的フラッシュ１０８などの他のメモリ内で複製され得る。メモリ１０４は、例えば、モニタコード１１６を含み得る。モニタコード１１６は、命令、実行テーブル、スクリプト、オブジェクトコード、又はモニタ１０２に操作させる他の情報を含み得る。メモリ１０４は、メモリ１０４を操作するために、ユニファイドエクステンシブルファームウェアインターフェイス（Unified Extensible Firmware Interface、「ＵＥＦＩ」）ＢＩＯＳ１１４を含み得る。更に、メモリ１０４は、ゴールデンイメージとしても既知の信頼されたコードイメージ１１２を含み得る。信頼されたコードイメージ１１２は、システム１００内の他の箇所でアクセスされ得る情報の既知の、安全な、又は信頼されたコピーを含み得る。例えば、信頼されたコードイメージ１１２は、ＵＥＦＩ  ＢＩＯＳ１１４のコピー、モニタコード１１６のコピー、及びコントローラコード１２８のコピーを含み得る。モニタ１０２は、システム１００内のそのような内容の他のインスタンスに対するチェックのために、システム１００内のそのような内容のそのような他のインスタンスの読み出しコピーに対するチェックのために、及び内容が損なわれたと決定された場合にシステム１００内のそのような内容のインスタンスを復元するために、信頼されたコードイメージ１１２内の内容を使用するように構成され得る。
【００１８】
モニタ１０２は、標的フラッシュメモリ１０８の試行されたアクセスを評価するように構成され得る。試行されたアクセスは、標的アドレス、試行されたコマンド、試行元のアドレス、又は任意の他の好適な基準に基づいて監視され得る。
【００１９】
例えば、フラッシュメモリに対する特定のコマンドは、標的フラッシュメモリ１０８の特定の状態で無条件に禁止されると考えられ得る。例えば、チップ消去操作は、標的フラッシュメモリ１０８が重要な情報を有するとして指定されているときに、無許可であり得る。別の例では、標的フラッシュメモリ１０８が読み出し専用として指定されている場合、読み出し操作のみが許可され得る。書き込み及び消去コマンドは、抑止され得る。モニタ１０２は、標的フラッシュメモリ１０８のアドレス空間全体にわたって標的フラッシュメモリ１０８内の特定の機密アドレスを監視するように構成され得る。特定のコマンドが、標的フラッシュメモリ１０８の所与の領域内で禁止され得る。領域は、マルウェアの、重要なデータの、又はメモリデバイス全体にわたる、予想される標的に従って定義され得る。
【００２０】
モニタ１０２は、標的フラッシュメモリ１０８の試行されたアクセスが無許可である場合、是正措置を講じるように構成され得る。モニタ１０２によって講じられる是正措置は、以下で更に詳細に論じられるように、試行されたアクセスに対する標的フラッシュメモリ１０８又はシステム１００の他の要素の応答を扱う際に顕在化され得る。モニタ１０２によって講じられる是正措置は、標的フラッシュメモリ１０８上でのコマンドの試行された実行の際に行われ得る。他のセキュリティ解決策は、標的フラッシュメモリ１０８自体、又は標的フラッシュメモリ１０８と通信するマスターデバイスなどの、メモリアクセスの終了時に是正措置を講じることを含む。多くのそのようなマスターデバイスに関して、マスターデバイスが、セキュリティ解決策のための一貫した、標準化された、又は均一な様式で再設計されることを期待することは困難である。フラッシュメモリにアクセスし得るそのようなデバイスの多くの作成者及びソースが存在する。更に、フラッシュもマスターデバイスも、特に、フラッシュ空間全体にわたるアドレス又は領域の保護のために、十分なハードウェアベース又はリアルタイムセーフガードを有していない。
【００２１】
一実施形態では、モニタ１０２によって講じられる是正措置は、コントローラ１１０から受信され、次いで、標的フラッシュメモリ１０８に渡される、ＣＳ信号の修正を含み得る。ＣＳ信号の修正は、エラー条件を引き起こし得る。別の実施形態では、モニタ１０２によって講じられる是正措置は、標的フラッシュメモリ１０８、システムＣＰＵ１０６、及びコントローラ１１０のうちの１つ以上に発行されたリセット又は抹消信号を含み得る。リセット信号は、受信者に、リセット、ソフトリブート、又は電源遮断及び電源投入サイクルの実施を行わせ得る。更に別の実施形態では、是正措置は、標的フラッシュメモリ１０８とコントローラ１１０との間の双方向ＳＰＩクロックの取り扱いを含み得る。双方向ＳＰＩクロックの取り扱いは、実行されるコマンドのキャンセルを引き起こし得る。是正措置は、悪意のないアクセスには影響を与えず、コントローラ１１０又はターゲットフラッシュメモリ１０８の実装に変更を必要としない場合がある。
【００２２】
図２は、本開示の実施形態による、システム１００の一部分のより詳細な例示である。
【００２３】
コントローラ１１０は、任意の好適な数のバスを介して標的フラッシュメモリ１０８に通信可能に結合され得る。例えば、コントローラ１１０は、標的フラッシュメモリ１０８にＣＳ信号を発行するように構成され得る。しかしながら、上述のように、このＣＳ信号は、転送され、かつ場合によっては修正される前に、モニタ１０２を介して標的フラッシュメモリ１０８に送られ得る。標的フラッシュメモリ１０８及びコントローラ１１０は、それらが同じＣＳ信号「ＣＳ」を受信及び送信することを各々認識し得る。しかしながら、ＣＳ信号は、インターフェース１０３（図示せず）を介して、モニタ１０２の代わりに、「マスターＣＳ」として送られてもよい。モニタ１０２は、受信した際のマスターＣＳ信号、修正された際のマスターＣＳ信号、又は遅延した際のマスターＣＳ信号を、インターフェース１０１（図示せず）を介して標的フラッシュメモリ１０８に転送し得る。標的フラッシュ１０８に送信されるＣＳ信号は、「フラッシュＣＳ」として示され得る。標的フラッシュメモリ１０８は、そのＣＳ入力が低くなるとコマンドを処理し、そのＣＳ入力が高くなるとコマンドを終了するように構成され得る。他の実施態様では、標的フラッシュメモリ１０８は、そのＣＳ入力が高くなるとコマンドを開始し、そのＣＳ入力が低くなるとコマンドを終了してもよい。
【００２４】
標的フラッシュメモリ１０８は、コントローラ１１０からインターフェース１０３（図示せず）を介してクロック信号（「ｃｌｋ」）を受信するように構成され得る。クロック信号は、標的フラッシュメモリ１０８とコントローラ１１０との間のコマンド及びデータを含む情報の転送を順序付けるように構成され得る。標的フラッシュメモリ１０８及びコントローラ１１０は、クロック信号バスによって直接接続され得る。一実施形態では、モニタ１０２もまた、クロック信号バスに接続され得る。したがって、モニタ１０２は、クロック信号バス上で送信された、コントローラ１１０からのクロック信号を受信し、また、標的フラッシュメモリ１０８とコントローラ１１０との間のクロック信号バス上でクロック信号を発行するように構成され得る。
【００２５】
標的フラッシュメモリ１０８は、標的フラッシュメモリ１０８とコントローラ１１０との間のデータバス（「ＩＯ［３：０］」）上でデータを受信及び送信するように構成され得る。したがって、所与のクロックサイクルでは、４ビットの情報が標的フラッシュメモリ１０８とコントローラ１１０との間で転送され得る。標的フラッシュメモリ１０８のコマンドは、コントローラ１１０から標的フラッシュメモリ１０８へのデータバス上で指定され得る。標的フラッシュメモリ１０８に書き込まれるデータは、コントローラ１１０から標的フラッシュメモリ１０８へのデータバス上で指定され得る。標的フラッシュメモリ１０８から読み出されるデータは、標的フラッシュメモリ１０８からコントローラ１１０へのデータバス上で指定され得る。一実施形態では、モニタ１０２はまた、コントローラ１１０と標的フラッシュメモリ１０８との間でどの情報が共有されているかを確認するために、インターフェース１０３（図示せず）を介してデータバスに接続され得る。
【００２６】
一実施形態では、標的フラッシュ１０８及びコントローラ１０８は、特定の動作モードの間、互いに選択的に分離され得る。例えば、モニタ１０２がクロックバス上でクロック信号を発行するとき、又はモニタ１０２がデータバス上でデータを発行するとき、これらの信号は、標的フラッシュ１０８で受信されるが、コントローラ１１０では受信されないことを意図され得る。更に、コントローラ１１０は、コントローラ１１０がリセットに保持されている間、又は標的フラッシュ１０８がリセット状態に保持されたときに、標的フラッシュ１０８をインターフェースするために使用される、コントローラ１１０のピンを浮遊させるように構成され得る。システム１００は、リセット中、又はモニタ１０２がコントローラ１１０と共有されるバス上でデータを書き込んでいる間、コントローラ１１０のピンを分離するための任意の好適な要素を含み得る。例えば、システム１００は、分離論理２３０を含み得る。分離論理２３０は、リセット中、又はモニタ１０２が、例えば、クロックバス又はデータバスにデータを書き込んでいるときに、コントローラ１１０のピンを分離するように構成され得る。分離論理２３０は、デジタル回路、アナログ回路、又はそれらの任意の好適な組み合わせによって実装され得る。例えば、分離論理２３０は、クロックバス上のスイッチ２３２、及びデータバスのスイッチ２３４を含み得る。スイッチ２３２、２３４の操作は、例えば、モニタ１０２によって発行された分離制御信号によって制御され得る。スイッチ２３２は、コントローラ１１０のクロックピンと、モニタ１０２のクロックピン及び標的フラッシュ１０８のクロックピンへのバスラインの接続点との間のクロックバス上に配置され得る。スイッチ２３４は、コントローラ１１０のデータピンと、モニタ１０２のデータピン及び標的フラッシュ１０８のデータピンへのバスラインの接続点との間のデータバス上に配置され得る。モニタ１０２によって発行された分離制御信号は、コントローラ１１０が標的フラッシュ１０８にデータを書き込むか、又はそこからデータを受信するときに、スイッチ２３２、２３４を閉じ得る。そのような場合、コントローラ１１０は、標的フラッシュ１０８から分離されなくてもよい。モニタ１０２によって発行された分離制御信号は、コントローラ１１０がリセットされたとき、又はモニタ１０２が標的フラッシュ１０８にデータを書き込むときに、スイッチ２３２、２３４を開き得る。そのような場合、コントローラ１１０は、標的フラッシュ１０８から分離され得る。
【００２７】
いくつかの実施形態では、標的フラッシュメモリ１０８は、リセットピンを含まなくてもよい。標的フラッシュメモリ１０８は、標的フラッシュメモリ１０８の操作に電力供給するＶｃｃのための電力入力を有し得る。システム１００は、Ｖｃｃと標的フラッシュメモリ１０８との間に接続されたスイッチ２１２を含み得る。スイッチ２１２は、トランジスタによるなどの任意の好適な様式で実装され得る。モニタ２０２は、リセット信号を介してスイッチ２１２を制御するように構成され得る。リセット信号は、持続的ではなくてもよいが、スイッチ２１２を開き、続いてスイッチ２１２を閉じて、標的フラッシュメモリ１０８を電力サイクルするのに十分であり得る。リセット信号の長さは、スイッチ２１２に、標的フラッシュメモリ１０８を電力サイクルさせるための任意の好適な長さであり得る。したがって、標的フラッシュメモリ１０８へのＶｃｃ送達を制御するスイッチ２１２は、標的フラッシュメモリ１０８のリセット機構を実装し得るが、任意の他の好適な実施態様が使用されてもよい。
【００２８】
一実施形態では、モニタ１０２は、コントローラ１１０によって発行されたコマンドを終了することによって是正措置を実施するように構成され得る。コマンドは、標的フラッシュメモリ１０８がコマンドを完了し終える前に終了され得る。更なる実施形態では、コマンドは、コントローラ１１０をリセットすることによって終了され得る。更なる実施形態では、コマンドは、標的フラッシュメモリ１０８をリセットすることによって終了され得る。様々な実施形態では、標的フラッシュメモリ１０８、コントローラ１１０のうちの１つがリセットされ得る。様々な他の実施形態では、標的フラッシュメモリ１０８及びコントローラ１１０の両方がリセットされ得る。リセット信号は、コントローラ１１０に、電力サイクリング、ハードリブート、ソフトリブート、又はコントローラ１１０に固有の他のリセット操作を介してコントローラ１１０自体をリセットさせる任意の好適な持続時間を有し得る。更に、リセット信号は、スイッチ２１２に、Ｖｃｃを標的フラッシュメモリ１０８に対して接続解除及び再接続させて、電力サイクルを引き起こさせる任意の好適な持続時間を有し得る。
【００２９】
一実施形態では、モニタ１０２は、標的フラッシュメモリ１０８にコマンドを破棄させる様式で、コントローラ１１０によって発行されたコマンドの実行を破損させることによって、是正措置を実施するように構成され得る。更なる実施形態では、モニタ１０２は、クロックバス上に予期せぬ量のクロックパルスを挿入することによってコントローラ１１０によって発行されたコマンドの実行を破損させるように構成され得る。別の更なる実施形態では、モニタ１０２は、コントローラ１１０がクロックバス上に一定量のクロックパルスを発行したときにＣＳ信号を完了することによってコントローラ１１０によって発行されたコマンドの実行を破損させるように構成され得、このとき、標的フラッシュメモリ１０４は、完了したＣＳ信号を予期しないことになる。予期せぬ量のクロックパルスは、所与の通信位相について、標的フラッシュメモリ１０８でのクロックパルスの予期される量を超え得る。予期せぬ量のクロックパルスは、例えば、奇数のクロック信号を含み得るが、任意の好適な追加のクロック信号が使用されてもよい。別の更なる実施形態では、モニタ１０２は、コントローラ１１０がコマンドの完了時に送信することになる、コントローラ１１０から受信されたＣＳ信号のインスタンスを遅延させることによって、コントローラ１１０によって発行されたコマンドの実行を破損させるように構成され得る。これは、コマンドの操作を延長させ得る。更に別の更なる実施形態では、モニタ１０２は、コントローラ１１０がＣＳ信号を実際に完了したときよりも早く、コントローラ１１０から受信されたＣＳ信号のインスタンスを完了することによって、コントローラ１１０によって発行されたコマンドの実行を破損させるように構成され得る。これは、例えば、読み出し又は書き込みコマンドを遮断し得る。
【００３０】
図３は、本開示の実施形態による、コントローラ１１０から標的フラッシュメモリ１０８への例示的なコマンドのタイミングの例示である。図３は、モニタ１０２が是正措置を講じないシステム１００の操作を例示する。図３には、コントローラ１１０から標的フラッシュメモリ１０８へのＣＳ信号、クロック信号、及びデータバスのタイミング図が例示される。コントローラ１１０は、マスター又はマスターデバイスとして参照され得、コントローラ１１０からの信号は、マスター信号として参照され得る。
【００３１】
３０２において、ＣＳ信号は、アクティブローになり得、標的フラッシュメモリ１０８が操作を実施することを合図し得る。ＣＳ信号は、３０４でのコマンドの完了までアクティブローであり得る。３０４において、ＣＳ信号の立ち上がりエッジが非アクティブハイになると、措置は、標的フラッシュメモリ１０８によって完了され得る。そのような措置は、書き込み又は消去の完了であり得る。ＣＳ信号がアクティブローである間、コマンドの識別情報が、データバスを介して通信され得る。コマンドの第１のビットは、コントローラ１１０が第１のクロックパルスを発行する前にコントローラ１１０によって発行され得る。更に、データバスは、読み出し操作において、標的フラッシュメモリ１０８から読み出されたデータをコントローラ１１０に通信し得る。書き込まれるデータは、他の機構を介して通信されてもよい。加えて、クロック信号パルスは、コントローラ１１０から標的フラッシュメモリ１０８に発行され得る。情報は、そのようなクロックパルス毎に、標的フラッシュメモリ１０８とコントローラ１１０との間で読み出されるか、又は書き込まれ得る。
【００３２】
３０６は、ＣＳ信号がアクティブローになった後、かつ第１のクロックパルスの前に、コマンドの実行のための準備を実施するためにコントローラ１１０に典型的に必要とされる時間の長さを例示する。３０８は、ＣＳ信号がアクティブローになった後、かつ第１のクロックパルスの前に、コマンドの実行のための準備を実施するために標的フラッシュメモリ１０８に必要とされる時間の長さを例示する。３１０は、最後のクロックパルスの後、かつＣＳ信号が非アクティブハイになる前に、コントローラ１１０に対する保持時間に典型的に必要とされる時間の長さを例示する。３１２は、最後のクロックパルスの後、かつＣＳ信号が非アクティブハイになる前に、標的フラッシュメモリ１０８に対する保持時間に典型的に必要とされる時間の長さを例示する。図３に示されるように、準備及び保持要件は、コントローラ１１０と比較して、標的フラッシュメモリ１０８の時間がより短い場合がある。一実施形態では、モニタ１０２は、第１のクロックパルスの前、かつコントローラ１１０から標的フラッシュメモリ１０８に発行される最後のクロックパルスの後に、制御装置１１０の準備及び保持時間の間、是正措置を適用する否かの決定を行い、かつそのような是正措置を講じるように構成され得る。
【００３３】
標的フラッシュメモリ１０８は、常時生成され、かつコントローラ１１０に提供される状態信号出力を含まなくてもよい。コントローラ１１０が、大量の時間を要するコマンド（書き込み又は消去など）を発行すると、コントローラ１１０は、標的フラッシュメモリ１０８にポーリングコマンドを発行し得る。そのようなコマンドは、「読み出し状態」を含み得る。このコマンドは、標的フラッシュメモリ１０８によって生成された応答のビット位置０で「ビジー」と呼ばれるビットを検査し得る。応答は、元の読み出し又は書き込みコマンドに応答して、標的フラッシュメモリ１０８によって生成され得る。書き込みコマンドは、典型的には、フラッシュ参照データシートで「プログラム」と呼ばれ得るが、本開示は、「書き込み」という用語を使用し得る。
【００３４】
図４は、本開示の実施形態による、標的フラッシュメモリ１０８の無許可アクセスに対する是正措置を講じるための、完了ＣＳ信号の発行を禁止するシステム１００の操作の例示である。モニタ１０２は、ＣＳ信号を発行することによって是正措置を行うように構成され得、ＣＳ信号の完了は、コントローラ１１０によって生成されたマスターＣＳ信号と比較して遅延される。モニタ１０２は、コントローラ１１０によって生成されたマスターＣＳ信号と比較して、コマンドの完了時に、標的フラッシュメモリ１０８によって受信されたＣＳ信号を非アクティブハイに戻すことを禁止するか、又は遅延させるように構成され得る。これは、ＣＳ信号がコントローラ１１０の通常操作を超えてアクティブローである時間を引き延ばすか、又は延長するため、「引き延ばし（stretch）」技術と称され得る。引き延ばし技術は、無許可の書き込み、消去、又はチップ消去コマンドに対する是正措置を講じるために使用され得る。引き延ばし技術は、ＣＳ信号の立ち上がりエッジ時に作用する標的フラッシュメモリ１０８の利点を利用し得る。ＣＳ信号がアクティブローである時間を引き延ばすことによって、モニタ１０２は、措置をキャンセルするために他の対策を講じることを可能にされ得る。
【００３５】
図４には、コントローラ１１０によって生成され、モニタ１０２に提供されるマスターＣＳ信号が例示されている。また、モニタ１０２によっても観察される、コントローラ１１０から標的フラッシュメモリ１０８に送信されるクロック及びデータ信号も例示されている。加えて、図４は、修正されたままのマスターＣＳ信号（モニタ１０２が信号を修正した場合）であり、標的フラッシュメモリ１０８に提供される、フラッシュＣＳ信号を例示している。
【００３６】
４０２では、マスターＣＳ信号は、アクティブローに遷移し得、アクティブローＣＳ信号は、フラッシュＣＳを介して、モニタ１０２から標的フラッシュメモリ１０８への僅かな遅延の後に転送され得る。モニタ１０２は、実施されるべきコマンドが、４０４で無許可であるか、又は不良な書き込み若しくは消去コマンドであると決定し得、したがって是正措置を講じ得る。４０６では、マスターＣＳ信号は、非アクティブハイに戻り得る。しかしながら、モニタ１０２は、マスターＣＳ信号がフラッシュＣＳとして出力されることを抑止し得る。代わりに、モニタ１０２は、フラッシュＣＳ信号をアクティブローとして保持し続け得る。
【００３７】
４０８では、コントローラ１１０は、マスターＣＳ信号をアクティブローに設定し、標的フラッシュメモリ１０８が以前のコマンドを用いて終了しているかどうかを確認するためにポーリングコマンドを発行し得る。しかしながら、以前のコマンドは、フラッシュＣＳ信号がアクティブローである時間を延長することによって、モニタ１０２によって効果的に抑止されている。モニタ１０２は、標的フラッシュメモリ１０８に無効応答を生成させ得る。例えば、標的フラッシュメモリ１０８は、コマンドを完了するために非アクティブハイＣＳ信号を受信する前に偶数クロックサイクルを予期し得る。予期せぬ量のクロックサイクルは、書き込み又は消去を実施せずに、エラー条件を生じさせるか、又は別様に無効応答を生成し得る。例えば、モニタ１０２は、４１０で奇数クロックサイクルの際にフラッシュＣＳ用の非アクティブハイ立ち上がりエッジを発行し得る。奇数クロック信号は、例えば、ポーリングのために奇数クロック信号を発行するコントローラ１１０と併せて立ち上がり得る。奇数クロック信号は、モニタ１０２によって挿入されてもよい。続いて、標的フラッシュメモリ１０８は、そのＣＳ信号入力上での立ち上がりエッジと組み合わせて奇数クロックサイクルを確認し、コントローラ１１０に無効又はエラー応答を生成し得る。標的フラッシュメモリ１０８は、任意の他の量の予期せぬクロック信号に対する無効又はエラー応答を生成し得る。したがって、コントローラ１１０は、その標的フラッシュメモリ１０８の無許可の試行されたアクセスに応答して、エラー又は無効条件のみを確認し得る。したがって、コントローラ１１０による無許可試行は、モニタ１０２によってブロックされ得る。無許可試行のコマンドは、コントローラ１１０によるポーリング操作の際に効果的にキャンセルされ得る。
【００３８】
この引き延ばし技術は、コントローラ１１０が、標的フラッシュメモリ１０８に更なるコマンドを発行する前に追跡ポーリングコマンドを通常必要とする消去又は書き込みコマンドを発行するように構成されている状況で使用され得る。この技術は、標的フラッシュメモリ１０８又はコントローラ１１０をリセットする必要がない場合がある。引き延ばし技術の結果として、ポーリング結果は、完全に失敗するか、破損されるか、又は誤っている可能性がある。ポーリングコマンドに対する適切な応答の代わりに、コントローラ１１０は、標的フラッシュメモリ１０８からポーリングコマンドへの応答の代わりに、標的フラッシュメモリ１０８の「ビジー」状態を認識し得る。これは、コントローラ１１０に再びポーリングを試させ得る。第２の試行されたポーリングの際、引き延ばし技術が、チップ選択信号が完了することを可能にした後、標的フラッシュメモリ１０８は、ポーリングに応答することができ、もはや「１」の「ビジー」状態を有するように見えなくなる可能性がある。そのような後続のポーリングでは、標的フラッシュメモリ１０８は、コマンドが完了しなかったとしても、コマンドが完了したことのエラー又は指示に応じ得る。そのような指示は、完了したコマンドとしてコントローラ１１０によって解釈され得る、更なる処理が試行されていない、ヌル応答又は応答を含み得る。
【００３９】
図５は、本開示の実施形態による、標的フラッシュメモリ１０８の無許可アクセスに対する是正措置を講じるための、完了ＣＳ信号の発行を禁止するシステム１００の更なる操作の例示である。図５は、モニタ１０２によって実施され得る追加の引き延ばし技術を例示する。図５では、モニタ１０２は、標的フラッシュメモリ１０８がＣＳ信号の立ち上がりエッジを受信する前に偶数クロックパルスを受信する要件を再び使用することによって是正措置を講じ得る。図４では、モニタ１０２は、コントローラ１１０によって標的フラッシュメモリ１０８に送信されるべき、奇数クロックサイクルなどの予期せぬ量のクロックサイクルを待機することによってそのような要件を使用した。対照的に、図５では、モニタ１０２は、余剰クロックサイクルを生成し、それを標的フラッシュメモリ１０８に送信し得る。
【００４０】
図５には、コントローラ１１０によって生成され、モニタ１０２に提供されるマスターＣＳ信号が例示されている。また、モニタ１０２によっても観察される、コントローラ１１０から標的フラッシュメモリ１０８に送信されるデータ信号も例示されている。図５はまた、モニタ１０２によって観察され、変更可能である、コントローラ１１０から標的フラッシュメモリ１０８に送信されるクロック信号も例示している。加えて、図５は、修正されたままのマスターＣＳ信号（モニタ１０２が信号を修正した場合）を表し、標的フラッシュメモリ１０８に提供される、フラッシュＣＳ信号を例示している。また、図５には、モニタ１０２からコントローラ１１０に発行され得るリセット又は抹消信号が例示されている。
【００４１】
５０２では、マスターＣＳ信号は、アクティブローに遷移し得、アクティブローＣＳ信号は、フラッシュＣＳを介して、モニタ１０２から標的フラッシュメモリ１０８への僅かな遅延後に転送され得る。モニタ１０２は、実施されるべきコマンドが、５０４で無許可であるか、又は不良な書き込み若しくは消去コマンドであると決定し得、したがって是正措置を講じ得る。５０６では、マスターＣＳ信号は、非アクティブハイに戻り得る。しかしながら、モニタ１０２は、マスターＣＳ信号がフラッシュＣＳとして出力されることを抑止し得る。代わりに、モニタ１０２は、フラッシュＣＳ信号をアクティブローとして保持し続け得る。５０６の後、マスターＣＳ信号は、５１４まで無視され得る。
【００４２】
５０８では、余剰クロックパルスが標的フラッシュメモリ１０８に到達するように、余剰クロックパルスがモニタ１０２によってクロックバス中に挿入され得る。標的フラッシュメモリ１０８は、ＣＳ信号の立ち上がりエッジを非アクティブハイに遷移させる前に、正確な数のクロック信号を予期している場合がある。ＣＳ信号の立ち上がりエッジが非アクティブハイに遷移する前に、正しい数よりも多い、又はそれよりも少ないクロック信号が到着する場合、標的フラッシュメモリ１０８はエラーを生成するか、又はコマンドを破棄し得る。
【００４３】
５１０では、モニタ１０２は、リセット信号をコントローラ１１０に送信し得る。５１２では、モニタ１０２は、フラッシュＣＳを非アクティブハイに遷移させ得る。標的フラッシュメモリ１０８は、非アクティブハイＣＳ信号の立ち上がりエッジを受信する際、及びＣＳ信号の立ち上がりエッジの前に誤った数のクロックサイクルを受信した際、エラー又は無効条件に入り得る。条件は、標的フラッシュメモリ１０８のリセットを必要としない場合がある。したがって、コントローラ１１０は、その標的フラッシュメモリ１０８の無許可の試行されたアクセスに応答して、エラー又は無効条件のみを確認し得る。したがって、コントローラ１１０による無許可試行は、モニタ１０２によってブロックされ得る。無許可試行のコマンドは、効果的にキャンセルされ得る。５１４では、通常操作は、追加のトラフィックを用いて再開し得る。
【００４４】
図５の引き延ばし技術は、消去又は書き込みコマンドが正確な数のクロックパルスを有しなければならない、いくつかのフラッシュデバイスの要件を利用する。誤った数のクロックパルスが受信された場合、コマンドは、標的フラッシュメモリ１０８によって実行されない場合がある。例えば、チップ消去コマンドは、厳密に１バイトの長さであることが必要とされ得る。追加のクロックパルスがクロックバス中に挿入された場合、標的フラッシュメモリ１０８は、クロック余剰パルスに基づいて追加のデータビットを読み出し得る。ブロック又はセクタ消去コマンドは、厳密に１つのコマンドバイト、及び正しい数のアドレスバイトを有することを必要とされ得る。追加のクロックパルスがクロックバス中に挿入された場合、標的フラッシュメモリ１０８は、クロック余剰パルスに基づいてコマンド又はアドレス内の追加のデータビットを読み出し得る。書き込みコマンドが、整数バイトの書き込みを試行するために必要とされる場合があり、部分バイトが端に含められる場合に廃棄されることになる。それゆえに、これらのタイプの任意のコマンドは、単一余剰クロックなどの予期せぬ量のクロックパルスを標的フラッシュメモリ１０８によって確認させることによってキャンセルされ得る。
【００４５】
更に、図５の引き延ばし技術は、違反コントローラ１１０をリセットするが、標的フラッシュメモリ１０８を電力サイクリングせずに、どのようにコマンドがキャンセルされ得るかを例示している。コントローラ１１０がリセットされている間、コントローラ１１０は、クロックラインをそれがリセットされている間に浮遊し得（又は単に抵抗的に引き込む）、モニタ１０２がクロックバス中に追加のクロックパルスを挿入することを可能にする。したがって、リセット信号は、モニタ１０２がクロックパルスを挿入し、フラッシュＣＳが非アクティブハイに遷移することを可能にする前に、マスターデバイスをリセットし得る。そのような構成は、標的フラッシュメモリ１０８をリセットする必要なく、進行中のコマンドが標的フラッシュメモリ１０８によって破棄されることの保証を提供し得る。
【００４６】
図６は、本開示の実施形態による、フラッシュメモリの無許可アクセスに対する是正措置を講じるための、完了ＣＳ信号の発行を禁止するシステム１００の更に別の操作の例示である。図６は、モニタ１０２によって実施され得る更に追加の引き延ばし技術を例示する。図６では、モニタ１０２は、標的フラッシュメモリ１０８をリセットすることによって是正措置を講じ得る。更に、モニタ１０２は、コントローラ１１０をリセットすることによって是正措置を講じ得る。
【００４７】
図６には、コントローラ１１０によって生成され、モニタ１０２に提供されるマスターＣＳ信号が例示されている。また、モニタ１０２によっても観察される、コントローラ１１０から標的フラッシュメモリ１０８に送信されるデータ及びクロック信号も例示されている。加えて、図６は、修正されたままのマスターＣＳ信号（モニタ１０２が信号を修正した場合）を表し、標的フラッシュメモリ１０８に提供される、フラッシュＣＳ信号を例示している。また、図６には、モニタ１０２からコントローラ１１０及びスイッチ２１２に発行され得るリセット信号が例示されている。
【００４８】
６０２では、マスターＣＳ信号は、アクティブローに遷移し得、アクティブローＣＳ信号は、フラッシュＣＳを介して、モニタ１０２から標的フラッシュメモリ１０８に僅かな遅延後に転送され得る。モニタ１０２は、実施されるべきコマンドが、６０４で無許可であるか、又は不良な書き込み若しくは消去コマンドであると決定し得、したがって是正措置を講じ得る。６０６では、マスターＣＳ信号は、非アクティブハイに戻り得る。しかしながら、モニタ１０２は、マスターＣＳ信号がフラッシュＣＳに送られることを抑止し得る。代わりに、モニタ１０２は、フラッシュＣＳ信号をアクティブローとして保持し続け得る。６０６の後、マスターＣＳ信号は、６１０まで無視され得る。
【００４９】
６０８では、リセット信号は、標的フラッシュメモリ１０８の電力サイクルリセットを引き起こすために、モニタ１０２によってスイッチ２１２に発行され得る。更に、リセット信号は、モニタ１０２によってコントローラ１１０に発行され得る。クロック、データ及びマスターＣＳの中間状態は、６０８の終了時のリセットのクリア後まで無視され得る。したがって、コントローラ１１０は、その標的フラッシュメモリ１０８の無許可の試行されたアクセスに応答して、リセットのみを確認し得る。したがって、コントローラ１１０による無許可試行は、モニタ１０２によってブロックされ得る。無許可試行のコマンドは、効果的にキャンセルされ得る。追加のコマンドの形態の新しいトラフィックは、６１０でコントローラ１１０によって発行され得る。そのような新しいトラフィックを取り扱うとき、モニタ１０２は、別の不良又は無許可コマンドが検出されるまで、コントローラ１１０からのマスターＣＳ信号を伝搬又はそれに追従し得る。
【００５０】
図６の引き延ばし技術は、是正措置が講じられる多種多様な状況に使用され得る。しかしながら、是正措置は、コントローラ１１０のリセットが実施され得るため、比較的極端な対策であり得る。図６の引き延ばし技術は、例えば、コマンドが実際に達成されたことを確実にするためにその後にポーリングを伴わない、短いコマンドに使用され得る。これらは、いくつかのモード設定コマンドを含み得る。
【００５１】
図７は、本開示の実施形態による、標的フラッシュメモリ１０８の無許可アクセスに対する是正措置を講じるための、ＣＳ信号の完了を加速するシステム１００の操作の例示である。モニタ１０２は、ＣＳ信号を発行することによって是正措置を行うように構成され得、ＣＳ信号の完了は、コントローラ１０２によって生成されたＣＳ信号と比較して加速される。モニタ１０２は、コントローラ１１０がＣＳ信号を実際に終了しようと試行する前に、標的フラッシュメモリ１０８に対する有効なＣＳ信号を終了するように構成され得る。結果は、標的フラッシュメモリ１０８で受信されたＣＳ信号が、コマンドの完了前に非アクティブハイに戻り、コマンドを完了させないようにすることをもたらし得る。これは、ＣＳ信号がアクティブローである時間を、コントローラ１１０によって通常使用されることになる時間よりも短い時間に短縮するか、又は減らすため、「短縮（shrink）」技術と呼ばれ得る。短縮技術は、無許可の読み出しコマンドに対して補正措置を講じるために使用され得る。短縮技術は、ＣＳ信号の立ち上がりエッジ時に作用する標的フラッシュメモリ１０８の利点を利用し得る。ＣＳ信号がアクティブローである時間を短縮することによって、モニタ１０２は、コマンドを割り込み、無許可措置をキャンセルし得る。
【００５２】
図７には、コントローラ１１０によって生成され、モニタ１０２に提供されるマスターＣＳ信号が例示されている。また、モニタ１０２によっても観察される、コントローラ１１０から標的フラッシュメモリ１０８に送信されるクロック及びデータ信号も例示されている。加えて、図７は、修正されたままのマスターＣＳ信号（モニタ１０２が信号を修正した場合）を表し、標的フラッシュメモリ１０８に提供される、フラッシュＣＳ信号を例示している。リセット信号は、この技術では使用されなくてもよい。
【００５３】
７０２では、マスターＣＳ信号は、アクティブローに遷移し得、アクティブローＣＳ信号は、マスターＣＳを介して、モニタ１０２から標的フラッシュメモリ１０８への僅かな遅延後に転送され得る。７０４では、読み出しコマンドは、コントローラ１１０によって発行され得る。７０６では、コントローラ１１０は、内容が読み出されることになるアドレスを指定し得る。モニタ１０２は、コントローラ１１０によって読み出されることから保護されたアドレスとして、アドレスが無許可又は不良アドレスであると決定し得る。したがって、モニタ１０２は、コマンドが無許可の読み出しコマンドであると決定し得る。モニタ１０２は、それに応じて是正措置を講じ得る。
【００５４】
７０８では、モニタ１０２は、マスターＣＳ上の非アクティブハイ信号を標的フラッシュメモリ１０８に発行することによって、コマンドの操作を終了し得る。非アクティブハイへの遷移を受信する標的フラッシュメモリ１０８は、コマンドが終了したものとして作用し得る。コントローラ１１０又はモニタ１０２は、以下で更に詳細に論じられる、「ターンアラウンド」又は「ダミー」クロックサイクルを発行し得る。そのようなダミークロックサイクルの後、コントローラ１１０は、標的フラッシュメモリ１０８からの返信を予期し得る。しかしながら、データバスの内容は、マスターＣＳ上の信号が非アクティブハイであることに応答して無効であるか、又は浮遊し得る。したがって、コントローラ１１０によって受信されたデータは、無用であり得る。７１０では、コントローラ１１０は、ＣＳ＿ＩＮ上での非アクティブハイへの遷移を発行し得る。これは、モニタ１０２によって抑止され、標的フラッシュメモリ１０８に転送されなくてもよい。
【００５５】
この短縮技術は、読み出しコマンドの実行内の遅延の必要性を利用し得る。そのような遅延は、初期アクセス時間及び双方向データバス上での伝送方向の変更の両方に必要とされ得る。双方向データバス上の伝送方向を変更するために必要とされるサイクルは、「ターンアラウンド」サイクルと呼ばれ得る。この遅延は、より低速のクロック速度、又は最大速度での特定の数の人工又は「ダミー」クロックサイクルのいずれかによって提供される。
【００５６】
図８は、本開示の実施形態による、透過的に取り付けられたフラッシュメモリセキュリティを実施するための例示的な方法８００の例示である。方法８００は、モニタ１０２などの任意の好適な機構によって実施され得る。方法８００のステップは、任意の好適な順番で実施されてもよく、ステップ８０５などの任意のステップで開始されてもよい。方法８００の様々なステップは、繰り返されるか、省略されるか、又は再帰的に実施されてもよい。方法８００の複数のインスタンスは、並列又は再帰的に実施されてもよい。方法８００は、完全に又は部分的に、アナログ回路、デジタル回路、組み合わせ論理、命令若しくはハードウェア記述言語によって顕在化される回路、プロセッサによる実行のための命令、又はそれらの任意の組み合わせで具現化され得る。命令は、非一時的な機械可読媒体上にあってもよい。命令は、プロセッサによって読み込まれて実行されると、プロセッサに、モニタ１０２などのシステム１００の様々な部分の機能を実施させ得る。
【００５７】
ステップ８０５では、モニタがブート又は初期化され得る。ステップ８１０では、メモリにアクセスし得るマスター要素が、リセット信号をマスター要素に発行及び保持することによってリセット状態に保持され得る。ステップ８１５では、モニタの内容が有効性をチェックされ得る。内容が有効ではない場合、それらは、メモリ内の信頼されたイメージから復元され得る。ステップ８２０では、マスター要素によってアクセスされるメモリの内容が有効性をチェックされ得る。内容が有効ではない場合、それらは、メモリ内の信頼されたイメージから復元され得る。ステップ８２５では、メモリの保護の定義が読み込まれ得る。マスター要素は、リセットから解放され得る。
【００５８】
ステップ８３０では、メモリの試行されたアクセスが行われたか否かを決定し得る。そうである場合、方法８００は、ステップ８３５に進み得る。そうでない場合、方法８００は、ステップ８７５に進み得る。
【００５９】
ステップ８３５では、メモリの試行されたアクセスが許可されたか否かを決定し得る。例えば、全てのチップ消去コマンドは、許容されない場合がある。所与のアドレスへの読み出し又は書き込みは、アドレス及び読み出し又は書き込みに基づいて可能にされるか、又は禁止され得る。試行されたアクセスが許可された場合、アクセスが可能にされ得、方法８００は、ステップ８７５に進み得る。試行されたアクセスが許可されなかった場合、方法８００は、ステップ８４０に進み得る。
【００６０】
ステップ８４０では、好適な是正措置が決定され得る。是正措置は、試行されたアクセスの性質に基づき得る。試行されたアクセスが読み出し操作であった場合、方法８００は、ステップ８４５に進み得る。試行されたアクセスが書き込み操作であった場合、方法８００は、ステップ８５０に進み得る。
【００６１】
ステップ８４５では、アクセスされたメモリに送信されたＣＳ信号は、コマンドが依然として実行されている間に完了され得る。これは、短縮操作であり得、メモリに無効情報を提供させ得る。方法８００は、ステップ８７５に進み得る。
【００６２】
ステップ８５０〜ステップ８７０では、好適な書き込みコマンドキャンセルが決定され得る。ステップ８５０では、書き込みコマンドが追跡ポーリングを必要とするか否かを決定し得る。そうである場合、方法８００は、８５５に進み得る。そうでない場合、方法８００は、ステップ８６０に進み得る。
【００６３】
ステップ８５５では、ＣＳ信号が、アクセスされたメモリに送信され得る。ＣＳ信号の完了は、アクセスされたメモリに対して一時的に防止され得る。奇数クロックサイクル、又は予期せぬクロックサイクルが、メモリのクロックバスに送信されることが可能にされるか、又は奇数若しくは予期せぬクロックサイクルが、メモリのクロックバス中に挿入され得る。ＣＳの完了は、受信されたＣＳ信号と比較して、抑止又は遅延され得るが、奇数又は予期せぬクロックサイクルは、メモリに対して可視である。その後、メモリに対して発行されたＣＳ信号が完了され得る。方法８００は、ステップ８７５に進み得る。
【００６４】
ステップ８６０では、コマンドが、例えば、コマンド、オペランド、又は標的アドレスにおいて、正確な数のビットを必要とするか否かが決定され得る。そうである場合、方法８００は、ステップ８６５に進み得る。そうでない場合、方法８００は、ステップ８７０に進み得る。
【００６５】
ステップ８６５では、ＣＳ信号が、アクセスされたメモリに送信され得る。マスターは、リセットされ得る。余剰又は予期せぬクロックサイクルは、マスターからのＣＳ信号の完了を防止又は抑止しながら、モニタによってメモリへのクロック信号バス中に挿入され得る。その後、メモリに対して発行されたＣＳ信号が完了され得る。方法８００は、ステップ８７５に進み得る。
【００６６】
ステップ８７０では、ＣＳ信号が、アクセスされたメモリに送信され得る。マスター及びメモリは、マスターから受信されたＣＳ信号の完了を防止又は抑止しながら、リセットし得る。メモリは、メモリに電力ダウン及び電力アップサイクルに入らせることによってリセットされ得る。余剰又は予期せぬクロックサイクルは、マスターからのＣＳ信号の完了を防止又は抑止しながら、モニタによってメモリへのクロック信号バス中に挿入され得る。その後、メモリに対して発行されたＣＳ信号が完了され得る。方法８００は、ステップ８７５に進み得る。
【００６７】
ステップ８７５では、方法８００が繰り返すか否かが決定され得る。決定は、構成設定、リセット信号若しくは入力、又はユーザ入力、あるいは任意の他の好適な基準に基づき得る。方法８００が繰り返す場合、方法８００は、例えば、ステップ８３０で繰り返し得る。そうでなければ、ステップ８８０で、方法８００は、終了してもよい。
【００６８】
図１に戻ると、モニタ１０２は、コントローラ１１０などの要素が標的フラッシュメモリ１０８へのアクセスを試行する際、標的フラッシュメモリ１０８の保護をリアルタイムで提供するように構成され得る。更に、モニタ１０２は、それ自体が様々なセキュリティ対策によって保護され得る。加えて、モニタ１０２は、標的フラッシュメモリ１０８のリアルタイム保護を提供するために、様々なリソースを利用するように構成され得る。
【００６９】
一実施形態では、モニタコード１１６は、メモリ１０４内に記憶され得る。モニタ１０２の起動時に、モニタコード１１６が、システム１００のメモリ内に読み込まれ、実行され得る。ブート時に、モニタ１０２は、メモリ１０４からモニタコード１１６を読み込み得る。モニタ１０２は、モニタコード１１６が、モニタコード１１６を読み込む前に正しく署名されていることをチェックするように構成され得る。モニタコード１１６が正しく署名されていないか、又は別様に認証に失敗した場合、モニタ１０２は、信頼されたコードイメージ１１２からモニタコードをコピーするように構成され得る。デジタル署名及び認証は、例えば、Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ（「ＲＳＡ」）鍵などの暗号鍵、共有秘密暗号化技術、又は公開秘密鍵対などの任意の好適な様式で実施され得る。更に、モニタ１０２は、コントローラコード１２８が標的フラッシュ１０８から読み出される際、ＵＥＦＩ  ＢＩＯＳ  １１４及びコントローラコード１２８などのシステム１００の他の要素を検証するように構成され得る。認証は、デジタル署名をチェックすること、又は要素の実質を、信頼されたコードイメージ１１２に記憶された既知の真値と比較することを含み得る。モニタ１０２が、任意のそのような要素が認証されていないと決定した場合、モニタ１０２は、信頼されたコードイメージ１１２から要素をコピーするように構成され得る。
【００７０】
一実施形態では、ランタイム中、モニタ１０２は、標的フラッシュメモリ１０８にアクセスする全ての試行をフィルタリングするように構成され得る。モニタ１０２は、標的フラッシュメモリ１０８の保護を、その上のメモリのアドレス又は領域に基づいて、施行するように構成され得る。どのアドレス又はメモリの領域が保護されるべきかの定義、及びそのようなアドレス又はメモリの領域を保護するための基準は、アクセス設定１３４によって定義され得る。アクセス設定１３４は、メモリ１０４内又は信頼されたコードイメージ１１２内などの任意の好適な場所に記憶され得る。アクセス設定１３４は、暗号化され得る。
【００７１】
上述されたように、モニタ１０２は、モニタコードを読み込む前にブートする際、モニタコード１１６を認証するように構成され得、他の内容をチェックするように構成され得る。モニタ１０２は、そのような要素を、例えば、信頼されたコードイメージ１１２と比較するように構成され得る。モニタ１０２は、例えば、要素の各々のビット毎若しくはバイト毎の内容、署名、又はチェックサムを、信頼されたコードイメージ１１２内の信頼されたバージョンのものと比較することによって、そのような内容を比較するように構成され得る。モニタ１０２によってチェックされるべき標的フラッシュメモリ１０８の内容は、標的フラッシュメモリ１０８の利用可能な内容又は記憶の特定のサブセット又はアドレス範囲であり得る。特定のサブセット又はアドレス範囲は、アクセス設定１３４内で定義され得る。標的フラッシュメモリ１０８の内容が破損し、予期される内容と一致しない場合、モニタ１０２は、信頼されたコードイメージ１１２を用いてそのような内容を復元するように構成され得る。モニタ１０２は、メモリ１０４の一部分又は標的フラッシュ１０８の他のインスタンスなどの、他のフラッシュメモリのためのそのようなチェックを実施するように構成され得る。例えば、モニタ１０２は、ＵＥＦＩ  ＢＩＯＳ  １１４の認証をチェックし、ＵＥＦＩ  ＢＩＯＳ  １１４が破損した場合、信頼されたコードイメージ１１２からＵＥＦＩ  ＢＩＯＳ  １１４を復元するように構成され得る。
【００７２】
一実施形態では、モニタ１０２のブート中、モニタ１０２は、リセット信号を発行することによって、システムＣＰＵ１０６及びコントローラ１１０をリセットモードに保持するように構成され得る。別の実施形態では、ランタイム中、モニタ１０２は、システムＣＰＵ１０６によるメモリ１０４のアクセスを監視するように構成され得る。コントローラ１１０によって標的フラッシュメモリ１０８に対して試行されたアクセスのモニタ１０２による施行と同様に、モニタ１０２は、メモリ１０４上で実施されることになるシステムＣＰＵ１０６によるコマンドが許可されているか否かを評価するように構成され得る。モニタ１０２は、上記のように任意の好適な様式で是正措置を実施するように構成され得る。
【００７３】
モニタ１０２は、任意の好適な基準に従って、メモリ１０４のシステムＣＰＵ１０６によって、又は標的フラッシュメモリ１０８のコントローラ１１０によって、試行されたアクセスを評価するように構成され得る。例えば、モニタ１０２は、所与のフラッシュメモリにアクセスし得る各実体の許容可能な又は許容不可能な読み出し、書き込み、又は他のアクセス領域を画定するように構成され得る。モニタ１０２は、メモリ領域又はキャッシュが書き込まれているか、又は更新を必要としていることを示す、いわゆる「ダーティビット」の消去又は書き込みの試行を評価するように構成され得る。モニタ１０２は、無効ブロックサイズに対する消去サイズエラーを生成するか、又は保護レジスタ設定の違反などの違反にアクセスすることになるか、無効若しくは範囲外のアドレスに対するものであるか、又はタイムアウトを引き起こすことになる、試行を評価するように構成され得る。大量消去コマンドは、標的アドレスにかかわらず、モニタ１０２によってキャンセルされ得る。
【００７４】
コントローラ１１０と標的フラッシュメモリ１０８との間のものなどのＳＰＩバスについて、大量消去コマンドは、モニタ１０２によって防止され得る。境界外又は保護領域への書き込み、読み出し、又は消去が防止され得る。標的フラッシュメモリ１０８の内容が破損した場合、内容は、信頼されたコードイメージ１１２からモニタ１０２によって復元され得る。
【００７５】
試行された読み出しが標的フラッシュメモリ１０８の有効アドレスになされた場合、モニタ１０２は、読み出しコマンドを更に評価するように構成され得る。更なる評価は、例えば、信頼されたコードイメージ１１２内に記憶され得る既知の信頼された内容に対して標的フラッシュメモリ１０８の内容をチェックすることを含み得る。標的フラッシュメモリ１０８上で実施される読み出しコマンド、及び結果的に得られたデータは、モニタ１０２によって捕捉され得る。モニタ１０２は、シフトレジスタ、先入れ先出し（first-in-first-out、ＦＩＦＯ）メモリ、又はモニタ１０２の他の好適なデータ構造内に読み出したデータを配置し得る。読み出しコマンドは、同様のコマンド又は操作が信頼されたコードイメージ１１２上で実施され得るように変換され得る。読み出しコマンドは、メモリ１０４などの別のメモリ内の信頼されたコードイメージ１１２上で実施され得る。モニタ１０２は、これらのソースの各々からのデータを比較し得る。データが同じでない場合、コントローラ１１０などの標的フラッシュメモリ１０８の試行された読み出しを行う要素は、リセットされ得る。他の是正措置が、必要に応じて講じられ得る。
【００７６】
図９Ａ及び図９Ｂは、本開示の実施形態による、標的フラッシュ１０８の内容をチェックするモニタ１０２の例示的な構成を例示する。モニタ１０２は、任意の好適な時間で標的フラッシュ１０８の内容をチェックするように構成され得る。図９Ａ及び図９Ｂでは、コントローラ１１０は、フラッシュメモリ９０２及びフラッシュメモリ９０４などのいくつかの異なるフラッシュメモリにアクセスするように構成され得る。フラッシュメモリ９０４は、図９Ａ及び図９Ｂの特定の例ではアクセスされない場合がある。読み出されることになる特定のフラッシュメモリは、例えば、マルチプレクサ９０６、又は任意の他の好適なスイッチ、接続、若しくは選択機構を用いて選択され得る。フラッシュ９０２は、コントローラコード１１２などの内容を含み得る。内容はまた、信頼されたコードイメージ１１２中にメモリ１０４内に記憶され得る。
【００７７】
図９Ａでは、モニタ１０２は、ブートアップでフラッシュメモリ９０２から内容を読み出し得る。モニタ１０２は、フラッシュメモリ９０２内の内容を、信頼されたコードイメージ１１２からのそのような内容の信頼された既知のコピーコードと比較し得る。比較は、ビット毎、バイト毎、又は署名若しくはチェックサムに基づいて実施され得る。フラッシュメモリ９０２の内容が信頼されたコードイメージ１１２中に記憶されたものと同じである場合、モニタ１０２は、フラッシュメモリ９０２の内容を認証し得る。そうでなければ、モニタ１０２は、フラッシュメモリ９０２内の内容を、信頼されたコードイメージ１１２からの信頼されたコピーで置換するなどの、是正措置を講じ得る。メモリのチェックは、定期的に、ユーザからの要求に応じて、又は任意の他の好適な時間で実施され得る。
【００７８】
図９Ｂでは、モニタ１０２は、コントローラ１１０によって行われる試行された読み出し操作中に内容を認証し得る。コントローラ１１０は、フラッシュメモリ９０２内に記憶された内容を読み出すことを試行し得る。しかしながら、マルウェア又は別の悪意のあるエージェントは、フラッシュメモリ９０６などの異なるフラッシュメモリを、フラッシュメモリ９０２の代わりに不正に読み出させる場合があった。これは、マルチプレクサ９０６への選択信号になりすまして、フラッシュメモリ９０２の代わりにフラッシュメモリ９０６から読み出しを行わせるなどによって、様々な攻撃を介して実施され得る。フラッシュメモリ９０６は、コントローラ１１０によって読み出されるアドレスにマルウェア内容を含み得る。モニタ１０２は、フラッシュメモリ９０２内に内容を記憶するように指定されたアドレスから試行された読み出しを確認することで、読み出しトランザクションを認証し得る。読み出し中、モニタ１０２は、メモリ１０４から信頼されたイメージ１１２を読み出し、それをフラッシュ（モニタ１０２がフラッシュ９０２であると考える）から読み出されたデータと比較し得る。この比較は、ビット毎、バイト毎、又は署名若しくはチェックサムに基づき得る。モニタ１０２は、読み出し操作の内容が信頼されたコードイメージ１１２の内容と同じではないと決定することで、内容が損なわれているか、又は破損しているかを決定し得る。モニタ１０２は、警報を発するなどの是正措置を講じ得る。図９Ｂに示されるマルウェア攻撃は、データをブート又は始動時に単に認証するのではなく、メモリの指定された領域から読み出されたデータを継続的にリアルタイムで監視するモニタ１０２の利益を例示する。マルウェア攻撃は、第１の認証チェック後に生じ得る。
【００７９】
図１０は、本開示の実施形態による、メモリ内に記憶された内容を認証するための例示的な方法１０００の例示である。方法１０００は、モニタ１０２などの任意の好適な機構によって実施され得る。方法１０００のステップは、任意の好適な順番で実施されてもよく、ステップ１００５などの任意のステップで開始されてもよい。方法１０００の様々なステップは、繰り返されるか、省略されるか、又は再帰的に実施されてもよい。方法１０００の複数のインスタンスは、並列又は再帰的に実施されてもよい。方法１０００は、完全に又は部分的に、アナログ回路、デジタル回路、組み合わせ論理、命令若しくはハードウェア記述言語によって顕在化される回路、プロセッサによる実行のための命令、又はそれらの任意の組み合わせによって具現化され得る。命令は、非一時的な機械可読媒体上にあってもよい。命令は、プロセッサによって読み込まれて実行されると、プロセッサに、モニタ１０２などのシステム１００の様々な部分の機能を実施させ得る。
【００８０】
ステップ１００５では、認証のためにチェックされることになるメモリ内の内容が読み出され得る。ステップ１０１０では、内容が真正であるか否かが決定され得る。決定は、内容を、他の箇所に記憶された内容の信頼されたコピーと比較することによって行われ得る。比較は、例えば、ビット毎、バイト毎、署名、又はチェックサム比較で実施され得る。内容が認証された場合、方法１０００は、ステップ１０２０に進み得る。内容が認証されない場合、方法１０００は、ステップ１０１５に進み得る。
【００８１】
ステップ１０１５では、正しい内容が、信頼されたコピーから、不正な内容が記憶されたメモリにコピーされ得る。方法１０００は、ステップ１０２０に進み得る。
【００８２】
ステップ１０２０では、内容の試行された読み出しがメモリ内の保護された場所から行われたか否かが決定され得る。そうでない場合、方法１０００は、ステップ１０４５に進み得る。そうである場合、方法１０００は、ステップ１０２５に進み得る。
【００８３】
ステップ１０２５では、内容は、メモリ内の保護された場所から読み出され得る。ステップ１０３０では、メモリから読み出されたときの内容が、信頼されたイメージ内の内容の既知の信頼されたコピーとのメモリ内の保護された場所の内容の比較に基づいて真正であるか否かが決定され得る。比較は、ビット毎、バイト毎、署名、又はチェックサム比較などの任意の好適な比較によって実施され得る。内容が認証された場合、方法１０００は、ステップ１０３５に進み得る。内容が認証されない場合、方法１０００は、ステップ１０４０に進み得る。
【００８４】
ステップ１０３５では、読み出し内容へのアクセスが可能にされ得る。方法１０００は、ステップ１０４５に進み得る。ステップ１０４０では、任意の好適な是正措置が、読み出された内容へのアクセスを防止し得る。例えば、読み出し内容が真正ではないと決定すると、リセット信号が、内容にアクセスしようと試行した実体に送信され得る。内容の真正コピーが、メモリ内のアクセスされた場所にコピーされ得る。警報が、発せられてもよい。方法１０００は、ステップ１０４５に進み得る。
【００８５】
ステップ１０４５では、方法１０００が繰り返すか否かが決定され得る。決定は、構成設定、リセット信号若しくは入力、又はユーザ入力、あるいは任意の他の好適な基準に基づき得る。方法１０００が繰り返す場合、方法１０００は、例えば、ステップ１０２０で繰り返し得る。そうでなければ、ステップ１０５０で、方法１０００は、終了してもよい。
【００８６】
本開示の実施形態は、装置を含み得る。装置は、インターフェース回路と、インターフェース回路に通信可能に結合されたモニタ回路と、を含む。インターフェース回路は、アナログ回路、デジタル回路、又はプロセッサによる実行のための命令のうちの任意の好適な組み合わせによって実装され得る。モニタ回路は、アナログ回路、デジタル回路、又はプロセッサによる実行のための命令のうちの任意の好適な組み合わせによって実装され得る。モニタ回路は、インターフェース回路を介してモニタ回路に通信可能に結合されたメモリに発行されたコマンドを識別するように構成される。コマンドは、例えば、読み出し、書き込み、又は消去コマンドを含み得る。メモリは、フラッシュメモリ、又は任意の他の好適なメモリを含み得る。コマンドは、任意の好適な実体から発信され得る。モニタ回路は、コマンドが許可されているか否かを決定するように更に構成される。モニタ回路は、任意の好適な基準を介してコマンドが許可されているか否かを決定するように構成され得る。基準は、コマンドの性質（読み出し、書き込み、若しくは消去のいずれか）、又はコマンドの宛先若しくはアドレスに基づき得る。所与のアドレスに対する異なるアドレス又は異なるコマンドは、異なる基準によって保護され得る。モニタ回路は、コマンドが許可されているか否かを決定するように構成される。モニタ回路は、コマンドが許可されている場合にコマンドを可能にし、コマンドが許可されていない場合に是正措置を講じるように構成されている。モニタ回路は、コマンドをキャンセルすること、メモリ若しくはコマンドを発行した実体にリセットを発行すること、又は警報フラグ若しくはビットをユーザ若しくはシステムに発するなどの、任意の好適な是正措置を講じるように構成され得る。
【００８７】
上記の実施形態のいずれかと組み合わせて、モニタ回路は、メモリにアクセスするコマンドを作製する実体とメモリとの間を透過的な様式で操作するように構成され得る。コマンドを傍受及び評価するためのモニタ回路の透過的な操作は、コマンドを作製する実体に対して透過的であってもよい。コマンドを傍受及び評価するためのモニタ回路の透過的な操作は、メモリに対して透過的であってもよい。モニタ回路は、例えば、デイジーチェーン配置によるか、又は実体とメモリとの間のバスを調べることによるなどの任意の好適な様式でコマンドを受信するように構成され得る。
【００８８】
上記の実施形態のいずれかと組み合わせて、モニタ回路は、コマンドをキャンセルするために任意の好適な措置を講じるように更に構成され得る。コマンドをキャンセルするために、モニタ回路は、受信されたチップ選択信号を修正して、修正されたチップ選択信号を生成することと、修正されたチップ選択信号をメモリに送信することと、を行うように構成され得る。コマンドをキャンセルするために、モニタ回路は、単独で、又はコマンドをキャンセルする上記の例のいずれかと組み合わせて、修正されたチップ選択信号の完了前に、メモリによって使用されるクロックバスに予期せぬ数のクロックパルスを追加又は許容するように構成され得る。予期せぬ数のクロックパルスは、単独で、又はコマンドをキャンセルする上記の例のうちのいずれかと組み合わせて、奇数クロックパルス、又はメモリによって予期されるクロックパルスよりも多い数のクロックパルスであり得る。コマンドをキャンセルするために、モニタ回路は、単独で、又はコマンドをキャンセルする上記の例のいずれかと組み合わせて、メモリによって使用されるクロックバスにクロックパルスが追加される前に、コマンドのソースをリセットするように構成され得る。コマンドをキャンセルするために、モニタ回路は、単独で、又はコマンドをキャンセルする上記の例のいずれかと組み合わせて、修正されたチップ選択信号の完了前に、コマンドのソースをリセットするように構成され得る。コマンドをキャンセルするために、モニタ回路は、単独で、又はコマンドをキャンセルする上記の例のいずれかと組み合わせて、受信されたチップ選択信号の完了後、修正されたチップ選択信号を完了するように構成され得る。コマンドをキャンセルするために、モニタ回路は、単独で、又はコマンドをキャンセルする上記の例のいずれかと組み合わせて、コマンドが書き込みコマンド又は消去コマンドであるという決定に応答して、コマンドを修正されたチップ選択信号を完了するように構成され得る。コマンドをキャンセルするために、モニタ回路は、単独で、又はコマンドをキャンセルする上記の例のいずれかと組み合わせて、コマンドのソースからの後のチップ選択信号が受信される前に、修正されたチップ選択信号を完了するように構成され得る。コマンドをキャンセルするために、モニタ回路は、単独で、又はコマンドをキャンセルする上記の例のいずれかと組み合わせて、コマンドが読み出しコマンドであるという決定に基づいて、コマンドのソースからの後のチップ選択信号を受信する前に、修正されたチップ選択信号を完了するように構成され得る。
【００８９】
上記実施形態のいずれかと組み合わせて、モニタ回路は、モニタ回路に通信可能に結合されたメモリに発行された読み出しコマンドを識別することと、メモリからの内容を信頼されたコピーと比較して、メモリからの内容及び信頼されたコピーが同一であるか否かを決定することと、メモリからの内容が信頼されたコピーと同じではないという決定に基づいて、是正措置を講じることと、を行うように更に構成され得る。
【００９０】
上記実施形態のいずれかと組み合わせて、モニタ回路は、プロセッサ及び非一時的な機械可読媒体を含み得る。媒体は、命令を含み得、命令は、プロセッサによって読み込まれて実行されると、モニタ回路に、モニタ回路に通信可能に結合されたメモリに発行されたコマンドを識別することと、コマンドが許可されているか否かを決定することと、コマンドをキャンセルすることと、を行わせる。
【００９１】
本開示の実施形態は、上記の実施形態のモニタ回路のうちのいずれかによって実施される方法を含み得る。
【００９２】
本開示は、１つ以上の実施形態に関して記述されており、特に明言されたものとは別に、多くの等価物、代替物、変形物、及び修正が可能であり、本開示の範囲内にあることが認識されるべきである。本開示は様々な修正及び代替の形態が可能である一方で、それらの特定の実施形態の例が、図で示され、本明細書で詳細に記述される。しかしながら、特定の実施形態の例の本明細書の記述は、本明細書で開示された特定の形態に開示を限定する意図はないことが理解されるべきである。
【図１】
2021507369.tif 000003
【図２】
2021507369.tif 000004
【図３】
2021507369.tif 000005
【図４】
2021507369.tif 000006
【図５】
2021507369.tif 000007
【図６】
2021507369.tif 000008
【図７】
2021507369.tif 000009
【図８】
2021507369.tif 000010
【図９Ａ】
2021507369.tif 000011
【図９Ｂ】
2021507369.tif 000012
【図１０】
2021507369.tif 000013
【国際調査報告】
2021507369.tif 000014
2021507369.tif 000015
2021507369.tif 000016