(57)【要約】  制御モジュール（１１０）と、メモリ管理ユニット（１０５）と、メモリ・モジュール（１２０）と、少なくとも１つの第１のレジスタ（１４０）と、を含む論理デバイス（１００）。メモリ管理ユニット（１０５）は、制御モジュール（１１０）とメモリ・モジュール（１２０）との間のソフトウェア・コードの流れを制御する。制御モジュール（１１０）は、メモリ・モジュール（１２０）内の少なくとも１つのデータ・メモリ・セクション（１３０）を指定するために、論理デバイス（１００）の起動手順中に第１のレジスタ（１４０）のうちの少なくとも１つをプログラムする。メモリ管理ユニット（１０５）は、データ・メモリ・セクション（１３０）を識別するために、第１のレジスタ（１４０）と通信し、メモリ管理ユニット（１０５）は、データ・メモリ・セクション（１３０）内のストレージから実行可能コードを除外する。起動手順の終了後、第１のレジスタ（１４０）は書込プロテクトされ、論理デバイス（１００）をシャットダウンさせずにメモリ管理ユニット（１０５）を動作不能にすることはできない。
2010525456.tif 000002
【特許請求の範囲】
【請求項１】
論理デバイスであって、
制御モジュールと、
メモリ管理ユニットと、
メモリ・モジュールであって、前記メモリ管理ユニットが、前記制御モジュールと前記メモリ・モジュールとの間のソフトウェア・コードの流れを制御するメモリ・モジュールと、
第１のレジスタ・ユニットを備えるレジスタ・モジュールであって、前記第１のレジスタ・ユニットが、第１のレジスタを備え、前記制御モジュールが、前記メモリ・モジュール内のデータ・メモリ・セクションを指定するために、前記論理デバイスの起動手順中に前記第１のレジスタをプログラムし、前記メモリ管理ユニットが、前記指定されたデータ・メモリ・セクションを識別するために、前記第１のレジスタと通信し、前記メモリ管理ユニットが、前記指定されたデータ・メモリ・セクション内のストレージから実行可能コードを除外するレジスタ・モジュールと、
第２のインジケータを備えるインジケータ・ユニットであって、前記起動手順が終了する前に、前記第２のインジケータが、前記第１のレジスタが書込プロテクトされていることを表示するために、前記制御モジュールによりセットされ、それにより前記第１のレジスタの以降のプログラミングが防止されるインジケータ・ユニットと、
第１のインジケータであって、前記起動手順が終了する前に、前記第１のインジケータが、前記メモリ管理ユニットが動作可能であって、前記論理デバイスをシャットダウンさせずに動作不能にすることができないことを表示するように、前記制御モジュールによりセットされる第１のインジケータと、
を備える論理デバイス。
【請求項２】
前記第１のレジスタを、１回だけプログラムすることができる請求項１に記載の論理デバイス。
【請求項３】
前記レジスタ・モジュールが第２のレジスタ・ユニットをさらに備え、前記第２のレジスタ・ユニットが第２のレジスタを備え、前記第２のレジスタを必要に応じて制限なく書き換えることができる請求項２に記載の論理デバイス。
【請求項４】
同一のメモリ・アドレスが前記第１のレジスタ内および前記第２のレジスタ内に格納されている場合には、前記メモリ管理ユニットがこの状態を前記制御モジュールに通知する請求項３に記載の論理デバイス。
【請求項５】
前記第１のレジスタに対して、前記インジケータ・ユニットが別の関連する第２のインジケータをさらに備え、前記第１のレジスタを、書込プロテクトされる前に複数回プログラムすることができ、前記起動手順が終了する前に、最後に前記第１のレジスタがプログラムされた後で、その関連する第２のインジケータが、前記第１のレジスタがロックされていることを表示するように前記制御モジュールによりセットされ、それにより前記第１のレジスタの以降のプログラミングが防止される請求項１に記載の論理デバイス。
【請求項６】
前記レジスタ・モジュールが第２のレジスタ・ユニットをさらに備え、前記第２のレジスタ・ユニットが少なくとも１つの第２のレジスタを備え、前記制御モジュールが、前記起動手順の前および終了後の両方で、必要に応じて、前記第２のレジスタを複数回プログラムすることができる請求項５に記載の論理デバイス。
【請求項７】
同一のメモリ・アドレスが前記第１のレジスタ内および前記第２のレジスタ内に格納されている場合には、前記メモリ管理ユニットがこの状態を前記制御モジュールに通知する請求項６に記載の論理デバイス。
【請求項８】
論理デバイスであって、
制御モジュールと、
メモリ管理ユニットと、
メモリ・モジュールであって、前記メモリ管理ユニットが、前記制御モジュールと前記メモリ・モジュールとの間のソフトウェア・コードの流れを制御するメモリ・モジュールと、
変換されたメモリ・レジスタを備える変換されたメモリ・レジスタ・ユニットであって、前記変換されたメモリ・レジスタが、前記メモリ・モジュール内のデータ・メモリ・セクションを指定するようにプログラムされ、前記データ・メモリ・セクションが、非実行ソフトウェア・コードだけを含むように指定され、前記変換されたメモリ・レジスタがプロテクトされる変換されたメモリ・レジスタ・ユニットと、
仮想メモリ・レジスタを備える仮想メモリ・レジスタ・ユニットであって、前記制御モジュールが、前記メモリ・モジュール内のデータ・メモリ・セクションを指定するように前記仮想メモリ・レジスタをプログラムし、前記メモリ管理ユニットが、前記データ・メモリ・セクションを識別するために、前記仮想メモリ・レジスタと通信し、前記メモリ管理ユニットが、前記変換されたメモリ・レジスタ内に指定されているメモリ・ストレージ制限を、前記仮想メモリ・レジスタ内に指定されているメモリ・ストレージ制限と比較し、実行可能コードを、同様に、前記変換されたメモリ・レジスタ指定のデータ・メモリ・セクションでない前記仮想メモリ・レジスタ指定のデータ・メモリ・セクション内のストレージから除外する仮想メモリ・レジスタと、
を備える論理デバイス。
【請求項９】
第１のインジケータであって、起動手順が終了する前に、前記メモリ管理ユニットが動作可能であって、前記論理デバイスをシャットダウンさせずに動作不能にすることができないことを表示するように、前記制御モジュールによりセットされる第１のインジケータをさらに備える請求項８に記載の論理デバイス。
【請求項１０】
第２のインジケータを備えるインジケータ・ユニットであって、起動手順が終了する前に前記変換されたメモリ・レジスタが書込プロテクトされ、そのため前記変換されたメモリ・レジスタの以降のプログラミングが防止されることを表示するように、前記第２のインジケータが前記制御モジュールによりセットされるインジケータ・ユニットをさらに備える請求項８に記載の論理デバイス。
【請求項１１】
前記仮想メモリ・レジスタ指定のデータ・メモリ・セクションが、同様に、前記変換されたメモリ・レジスタ指定のデータ・メモリ・セクションでない場合に、前記メモリ管理ユニットがその状態を前記制御モジュールに通知する請求項８に記載の論理デバイス。
【請求項１２】
論理デバイスの起動を開始するステップと、
前記論理デバイスに対して起動手順を開始するステップと、
変換された第１のレジスタ内に第１のレジスタ構成データを書き込むステップであって、前記構成データが、メモリ・モジュールのあるセクションを、非実行ソフトウェア・コードだけを含むことができるデータ・メモリ・セクションとして指定するステップと、
前記第１のレジスタを以降のプログラミングからプロテクトするステップと、
メモリ管理ユニットが能動状態であることを表示するように動作可能インジケータをセットするステップと、
前記論理デバイスに対する前記起動手順を終了するステップと、
前記メモリ管理ユニットを使用して、前記第１のレジスタ内に書き込まれている前記構成データに基づいて、制御モジュールから前記メモリ・モジュールへのソフトウェア・コードの流れを制限するステップと、
を含む方法。
【請求項１３】
前記第１のレジスタが追記型レジスタである請求項１２に記載の方法。
【請求項１４】
前記第１のレジスタが、ロック可能な多重書込レジスタである請求項１２に記載の方法。
【請求項１５】
論理デバイスの起動を開始するステップと、
前記論理デバイスに対する起動手順を開始するステップと、
変換されたメモリ・レジスタ内に適当な構成データを書き込むステップであって、前記構成データが、メモリ・モジュールのあるセクションを、非実行ソフトウェア・コードだけを含むことができるデータ・メモリ・セクションとして指定するステップと、
前記変換されたメモリ・レジスタを以降のプログラミングからプロテクトするステップと、
前記論理デバイスに対する前記起動手順を終了するステップと、
仮想メモリのある領域を仮想メモリの他の領域とスワッピングするステップと、
仮想メモリ内のスワッピングを反映するように、前記仮想メモリに関連する前記仮想メモリ・レジスタを更新するステップと、
前記変換されたメモリ・レジスタ内に格納しているアドレスの属性を、前記仮想メモリ・レジスタ内に格納しているアドレスの属性と比較するステップと、
プロテクト違反を行おうとしたことを発見した場合に、メモリ管理ユニットを使用して、前記属性の比較の結果に基づいて、制御モジュールから前記メモリ・モジュールへのソフトウェア・コードの流れを制限するステップと、
を含む方法。
【請求項１６】
プロテクト違反を行おうとしたことを発見した場合に、前記制御モジュールに、前記仮想メモリ・レジスタ内に格納している前記スワッピングした仮想メモリに関連する前記構成データにより、前記メモリ・モジュールのプロテクトされたメモリ領域に対する潜在的攻撃を通知するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
論理デバイスの起動を開始するステップと、
前記論理デバイスに対する起動手順を開始するステップと、
変換されたメモリ・レジスタ内に適当な構成データを書き込むステップであって、前記構成データが、メモリ・モジュールのあるセクションを、非実行ソフトウェア・コードだけを含むことができるデータ・メモリ・セクションとして指定するステップと、
前記変換されたメモリ・レジスタを以降のプログラミングからプロテクトするステップと、
前記論理デバイスに対する前記起動手順を終了するステップと、
仮想メモリ・レジスタにより、仮想メモリ・アドレスを変換されたメモリ・アドレスに変換するステップと、
前記変換されたアドレスを、前記変換されたメモリ・レジスタ内に格納しているアドレスの属性と比較するステップと、
プロテクト違反を行おうとしたことを発見した場合に、メモリ管理ユニットを使用して、前記属性の比較の結果に基づいて、制御モジュールから前記メモリ・モジュールへのソフトウェア・コードの流れを制限するステップと、
を含む方法。
【請求項１８】
前記プロテクトへの違反を行おうとしたことを発見した場合に、前記制御モジュールに、前記変換されたメモリ・レジスタに関連する前記構成データにより、前記メモリ・モジュールのプロテクトされたメモリ領域に対する潜在的攻撃を通知するステップをさらに含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
コンピュータおよび他のデバイスのような、ネットワークに接続している論理デバイスに関する。
【背景技術】
【０００２】
コンピュータおよび他のデバイスのような現代のネットワークに接続している論理デバイスは、本明細書においては攻撃者と呼ぶアングラ・ソース（ｃｌａｎｄｅｓｔｉｎｅ  ｓｏｕｒｃｅ）からの侵入または攻撃に弱い。攻撃者は、攻撃したシステム上で自分自身のコードを実行するために、埋め込み型システムのソフトウェアの弱点を発見し、使用する。システムのデータ・インタフェースを使用してシステム内のどこかに位置するバッファ内に不正なコードを置く。次に、システムのソフトウェアの弱点を使用してコードの制御をバッファ内に転送する。多くの場合、バッファのオーバーフローまたはスタックのスマッシングを使用して、システム内にこっそり置かれた不正なコードのうちのあるものにあるシステム・コードの実行を指示する。
【０００３】
多くの埋め込み型論理デバイス・システムは、そのマイクロプロセッサ内に内蔵されているメモリ管理機能を使用する。この内蔵メモリ管理機能は、多くの場合、メモリ管理ユニット（ＭＭＵ）である。通常、メモリ管理ユニットは、あるメモリ・アドレスの範囲を指定プロテクトを受けている範囲としてマークを付けるようにプログラムすることができる。メモリ・アドレスまたはメモリ・アドレスのある範囲にメモリ管理ユニットにより指定プロテクトを受けているアドレスとしてラベル付けされた後で、メモリ管理ユニットは、識別したアドレスのうちの１つまたは複数の何らかの無効な使用をチェックするためにこれらのメモリ・アドレスを監視する。あるアドレスの無効な使用が検出された場合には、メモリ管理ユニットは、マイクロプロセッサに警告を行い、マイクロプロセッサは適当な処置を行う。
【０００４】
メモリ管理ユニットが提供する１つの共通のプロテクトは、メモリの指定領域を実行可能コード専用とし、メモリの他の指定領域を非実行コード、すなわちデータ専用にすることである。攻撃者が実行しようとしている不正なコードが、アングラ・ソースからバッファに渡されると、そのコードは、メモリのデータ範囲内に書き込まれ、そのため実行することができない。しかし、その場合、攻撃者は、バッファ内でそのコードを実行しようと試みることもできる。このバッファは非実行メモリというマークが付けられているので、そこに書き込まれた攻撃者からのコードは実行されないが、メモリ管理ユニットに、マイクロプロセッサに警告を送るように指示する。
【０００５】
同様に、攻撃者も、メモリ管理ユニットが攻撃者のコードの実行を防止したことを知っている。この場合、攻撃者は、攻撃者のコードが実行できるように常駐しているバッファのメモリ領域に割り当てられているプロテクトを変更するために、メモリ管理ユニットを再プログラムしようと試みるかもしれない。通常、メモリ管理ユニットは、起動時にメモリ管理ユニットをプログラムするために使用するこれらのソフトウェア・ルーチンを使用して再プログラムすることができる。攻撃者がメモリ管理ユニットを再プログラムする方法を判別すると、そのバッファ内に位置する不正なコードを実行することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術は、システムのメモリ内のメモリ・アドレス範囲を、データとしてまたは実行可能範囲として指定するという方法に依存してきた。この場合、システムは、外部のソースが、データ領域内に実行可能コードを格納するのを防止し、そのコードを実行するのを防止するものと見なされていた。何故なら、それは定義データによるものであるからである。しかし、頭の良い攻撃者であれば、データ・メモリの領域を実行可能領域として再定義することによりこのような技術を無効にすることができる。
【課題を解決するための手段】
【０００７】
攻撃者が、コンピュータのような論理デバイスにデータとして以前に表示されて、その後の攻撃者によりシステムのメモリ内に格納されたコードを実行するのを防止するための新規の技術が開示されている。  本明細書に開示する技術は、システムのメモリ管理ユニット（ＭＭＵ）の再プログラミングを防止するので、アングラ・ソースは、予め指定されたメモリ・アドレス範囲を、データ・メモリから実行可能メモリに変更するために使用することができない。そのため、攻撃者が、システムに以前に表示され、実際には、実行可能コードであったシステムのメモリのデータ領域内に格納しているコードを実行するのを防止することができる。
【０００８】
添付の図面は、種々の例示的実施形態をより詳細に説明し、開示の例示的実施形態およびその固有の利点をよりよく理解してもらうために、当業者が使用することができる視覚的な表示である。これらの図面中、類似の参照番号は、対応する要素を示す。
【図面の簡単な説明】
【０００９】
【図１】種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニットを有する論理デバイスである。
【図２】種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニットを有する他の論理デバイスである。
【図３】種々の例示的実施形態に記載する論理デバイスのメモリ管理ユニットの構成をプロテクトするための方法のフローチャートである。
【図４】論理デバイス・プロセッサに、図１および図２のメモリ・モジュールのプロテクトされたメモリ領域に対する潜在的攻撃を通知するための方法のフローチャートである。
【図５】種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニットを有するさらに他の論理デバイスである。
【図６】種々の例示的実施形態に記載する論理デバイスのメモリ管理ユニットの構成をプロテクトするための他の方法のフローチャートである。
【図７】論理デバイス・プロセッサに、図５のメモリ・モジュールのプロテクトされたメモリ領域に対する潜在的攻撃を通知するための方法のフローチャートである。
【図８】種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニットを有するさらに他の論理デバイスである。
【図９】種々の例示的実施形態に記載する論理デバイスのメモリ管理ユニットの構成をプロテクトするためのさらに他の方法のフローチャートである。
【図１０】論理デバイス・プロセッサに、図８のメモリ・モジュールのプロテクトされたメモリ領域に対する攻撃を通知するためのさらに他の方法のフローチャートである。
【図１１】論理デバイス・プロセッサに、種々の例示的実施形態に記載するメモリ・モジュールのプロテクトされたメモリ領域に対する潜在的攻撃を通知するための方法のフローチャートである。
【図１２】種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニットを有するさらに他の論理デバイスである。
【図１３】論理デバイス・プロセッサに、種々の例示的実施形態に記載するメモリ・モジュールのロックされているメモリ領域に対する潜在的攻撃を通知するための他の方法のフローチャートである。
【図１４】プロセッサに、種々の例示的実施形態に記載するメモリ・モジュールのロックされているメモリ領域に対する潜在的攻撃を通知するための他の方法のフローチャートである。
【発明を実施するための形態】
【００１０】
以下の詳細な説明およびいくつかの図面においては、類似の参照番号は類似の要素を示す。
本明細書においては、「変換されたアドレス」という用語は、二次アドレスとなるおよび物理メモリを直接ポイントするメモリ・アドレスとなる、マッピング変換処理を受けたメモリ・アドレス値を意味する。変換されたアドレスの値は、物理メモリ・アドレスを表すこともできるし、または変換処理に対する入力として使用することもできる。同様に、「変換されたメモリ」は、変換されたアドレスによりアクセスされるメモリである。変換されたメモリのメモリ空間は、物理メモリを表す場合もあるし、表さない場合もある。
【００１１】
図１は、種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニット１０５を有する論理デバイス１００を示す。論理デバイス１００は、本明細書においては、より一般的に制御モジュール１１０と呼ぶことができるプロセッサ１１０と、メモリ管理ユニット１０５と、メモリ管理ユニット・レジスタ・モジュール１１５と、メモリ・モジュール１２０とを備える。メモリ管理ユニット・レジスタ・モジュール１１５は、本明細書においては、レジスタ・モジュール１１５と呼ぶことができる。メモリ・モジュール１２０は、データ・メモリ・セクション１３０および実行可能メモリ・セクション１３５を備える。論理デバイス１００は、さらに、本明細書においては、第１のインジケータ１７５と呼ぶことができる動作可能なインジケータ１７５を備える。レジスタ・モジュール１１５は、第１のレジスタ・ユニット１４０を備える。第１のレジスタ・ユニット１４０は、ハードウェアおよび／またはソフトウェアで実施することができる少なくとも１つの第１のレジスタ１４５を備える。図１の場合には、複数の第１のレジスタ１４５ａ、１４５ｂ、１４５ｃを第１のレジスタ１４５として図示してある。図１の例示的実施形態の場合には、第１のレジスタ１４５は追記型レジスタである。
【００１２】
プロセッサ１１０は、第１の通信バス１５１を介してメモリ管理ユニット１０５と通信する。メモリ管理ユニット１０５は、メモリ・モジュール１２０と通信し、それにより第２の通信バス１５２を介して、データ・メモリ・セクション１３０および実行可能メモリ・セクション１３５の両方と通信する。プロセッサ１１０も、同様に、レジスタ・モジュール１１５内の第１のレジスタ・ユニット１４０と通信し、それにより第３の通信バス１５３を介して、第１のレジスタ・ユニット１４０内の第１のレジスタ１４５と通信する。メモリ管理ユニット１０５は、レジスタ・モジュール１１５内の第１のレジスタ・ユニット１４０と通信し、それにより、第４の通信バス１５４を介して第１のレジスタ・ユニット１４０内の第１のレジスタ１４５と通信する。プロセッサ１１０は、さらに、第６の通信バス１５６を介して動作可能なインジケータ１７５と通信する。
【００１３】
メモリ管理ユニット１０５は、プロセッサ１１０によりメモリ・アクセスを管理するために使用される。メモリ管理ユニット１０５は、通常、下記の機能を有する。すなわち、（１）仮想アドレスの変換されたアドレスへの変換、（２）メモリ・モジュール１２０のプロテクト、および（３）キャッシュ・メモリの制御である。この例示的実施形態の場合には、メモリ管理ユニット１０５は、通常、これらの機能を実行するためにハードウェアで実施される１つまたは複数の第１のレジスタ１４５により制御される。これらの第１のレジスタ１４５は、第３の通信バス１５３により第１のレジスタ１４５に送信された第１のレジスタ構成データ１６０を介して、プロセッサ１１０によりプログラムされる。その後で、第１の制御データ１６５が、第４の通信バス１５４により第１のレジスタ１４５のプログラムされた内容から入手される。第１のレジスタ構成データ１６０は、メモリ・モジュール１２０の種々のセクションを、非実行ソフトウェア・コードだけを含むことができるデータ・メモリ・セクション１３０として指定し、メモリ・モジュール１２０の種々の他のセクションを、実行可能ソフトウェア・コードを含むことができる実行可能メモリ・セクション１３５として指定する属性情報を有する。
【００１４】
起動が開始した後、メモリ管理ユニット１０５のレジスタ１４５を一度だけプログラムすることができる。初期化中、レジスタ１４５は、正常な実行時間の間に使用する保全性チェック値によりプログラムされる。プログラムされると、レジスタ１４５のいずれかをプログラムしようとすると、プロセッサ１１０に警告が送られる。メモリ管理ユニット１０５を動作可能にするために使用する動作可能なインジケータ１７５も、攻撃者がメモリ管理ユニット１０５を動作不能にし、それによりレジスタ１４５の書込プロテクトを動作不能にするのを防止するために、１回だけ書込ができるタイプのものでなければならない。
【００１５】
動作中、プロセッサ１１０は、第１の通信バス１５１を介してメモリ管理ユニット１０５に第１の通信信号１８１を送信する。メモリ管理ユニット１０５は、第２の通信バス１５２を介してメモリ・モジュール１２０に第２の通信信号１８２を送信する。第３の通信信号１８３は、第２の通信バス１５２を介して、メモリ管理ユニット１０５によりメモリ・モジュール１２０から受信される。第４の通信信号１８４は、第１の通信バス１５１を介して、メモリ管理ユニット１０５から受信される。
【００１６】
第１の通信信号１８１は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０内に書き込まれるデータと、メモリ・モジュール１２０の実行可能メモリ・セクション１３５内に書き込まれる実行可能コードと、および／またはメモリ管理ユニット１０５への命令を含むことができる。第２の通信信号１８２は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０内に書き込まれるプロセッサ１１０から受信したデータ、またはメモリ・モジュール１２０の実行可能メモリ・セクション１３５内に書き込まれる実行可能コードを含むことができる。第３の通信信号１８３は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０から読み出したデータ、またはメモリ・モジュール１２０の実行可能メモリ・セクション１３５から読み出した実行可能コードを含むことができる。第４の通信信号１８４は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０から読み出したデータ、メモリ・モジュール１２０の実行可能メモリ・セクション１３５から読み出した実行可能コード、またはプロセッサ１１０からメモリ管理ユニット１０５が受信した命令に対する応答を含むことができる。プログラムすると、レジスタ１４５のうちのいずれかを再プログラムしようとすると、メモリ管理ユニット１０５が、第１の通信バス１５１を介して、第４の通信信号１８４として、プロセッサ１１０に警告を送る。
【００１７】
図２は、種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニット１０５を有する他の論理デバイス１００を示す。上記の図１の代表的な実施形態の要素の他に、図２の例示的実施形態の場合には、レジスタ・モジュール１１５は、さらに、第２のレジスタ・ユニット２４０を備える。第２のレジスタ・ユニット２４０は、ハードウェアおよび／またはソフトウェアで実施することができる少なくとも１つの第２のレジスタ２４５を備える。図２の場合には、複数の第２のレジスタ２４５ａ、２４５ｂ、２４５ｃを第２のレジスタ２４５として図示してある。図２の例示的実施形態の場合には、第２のレジスタ・ユニット２４０の第２のレジスタ２４５は、起動の開始の後で制限なくプログラムすることができる。
【００１８】
第２のレジスタ２４５は、第３の通信バス１５３により第２のレジスタ２４５に送信された第２のレジスタ構成データ２６０を介して、プロセッサ１１０によりプログラムされる。その後で、第２の制御データ２６５が、第４の通信バス２５４により第２のレジスタ２４５のプログラムされた内容から入手される。それ故、レジスタ・モジュール１１５は、二組のレジスタ・ユニット１４０、２４０を備える。すでに説明したように、第１のレジスタ・ユニット１４０内の第１のレジスタ１４５は、起動の開始の後で１回だけプログラムすることができる。一方、第２のレジスタ・ユニット２４０の第２のレジスタ２４５は、起動の開始の後で何回でもプログラムすることができる。レジスタ１４５、２４５内にはメモリの境界が構成されているので、変換されたメモリの一部を２つ以上のレジスタ１４５、２４５により構成することができる。しかし、変換されたメモリの同じ領域が２つ以上のレジスタ１４５、２４５内にプログラムされている場合には、レジスタ１４５のうちの１つだけを、起動の開始の後１回だけ書き込むことができる。すなわち、プロセッサ１１０に警告を送ることができるのは、第１のレジスタ・ユニット２４０内の第１のレジスタ１４５のうちの１つである。それ故、攻撃者は、メモリ管理ユニット１０５に関連する多重書込レジスタ２４５、すなわち第２のレジスタ２４５を再プログラムすることにより、追記型レジスタ１４５、すなわち、第１のレジスタ１４５をバイパスすることができない。図１の例示的実施形態の場合のように、動作可能なインジケータ１７５を、１回だけ書込可能にすることにより再プログラムされるのを防止しなければならない。
【００１９】
図３は、種々の例示的実施形態に記載する論理デバイス１００のメモリ管理ユニット１０５の構成をプロテクトするための方法３００のフローチャートを示す。ブロック３１０において、論理デバイス１００の起動が開始する。次に、ブロック３１０において、制御がブロック３２０に渡される。
【００２０】
ブロック３２０において、論理デバイス１００の起動手順が、起動の開始の後で自動的に開始する。用語「起動手順」が複数の形をしているのは、本明細書においては、１つまたは複数の手順を含んでいることを意味する。次に、ブロック３２０において、制御がブロック３３０に渡される。
【００２１】
ブロック３３０において、第１のレジスタ構成データ１６０が、追記型レジスタ１４５内に書き込まれる。同様に、レジスタ・モジュール１１５が多重書込レジスタ２４５を備えている場合には、第２のレジスタ構成データ２６０も、必要に応じて、多重書込レジスタ２４５内に書き込まれる。起動プロセス中は、ある種の追記型レジスタ１４５に書き込むことができない場合があることに留意されたい。この状況は、図４の一部であると見なされる。次に、ブロック３３０において、制御がブロック３５０に渡される。
【００２２】
ブロック３５０において、追記型インジケータでなければならない動作可能なインジケータ１７５は、メモリ管理ユニット１０５が現在能動状態にあることを表示するようにセットされる。動作可能なインジケータ１７５は、追記型インジケータでなければならないので、攻撃者がメモリ管理ユニット１０５を動作不能にすることが防止され、それにより追記型レジスタ１４５の書込プロテクトを動作不能にすることが防止される。次に、ブロック３５０において、制御がブロック３６０に渡される。
【００２３】
ブロック３６０において、論理デバイス１００の起動手順が終了する。起動プロセスは、ブロック３６０において終了する。第１のレジスタ１４５には、現在書込プロテクトがかかっている。
【００２４】
図４は、論理デバイスのプロセッサ１１０に、図１および図２のメモリ・モジュール１２０のプロテクトされたメモリ領域に対する潜在的攻撃を通知するための方法４００のフローチャートを示す。すべての追記型レジスタ１４５がプログラムされている場合には、ブロック４０５において、制御がブロック４１０に渡される。
【００２５】
１つまたは複数の追記型レジスタ１４５を再プログラムしようとする試みが行われた場合には、ブロック４１０において制御がブロック４７０に渡される。そうでない場合には、ブロック４１０において、制御がブロック４２０に渡される。
【００２６】
メモリ管理ユニット・レジスタ・モジュール１１５が、追記型レジスタ１４５のみを備えている場合には、ブロック４２０において、制御がブロック４０５に渡される。そうでない場合には、ブロック４２０において制御がブロック４３０に渡される。
【００２７】
１つまたは複数の多重書込レジスタ２４５が再プログラムされた場合には、ブロック４３０において、制御がブロック４４０に渡される。そうでない場合には、ブロック４３０において、制御がブロック４０５に戻される。
【００２８】
１つまたは複数の多重書込レジスタ２４５へのプログラミングの試みの変換されたメモリの領域が、追記型レジスタ１４５の１つ内にプログラムされた変換されたメモリと同じものである場合には、ブロック４４０において、制御がブロック４７０に渡される。そうでない場合には、ブロック４４０において、制御がブロック４０５に戻される。
【００２９】
１つまたは複数の追記型レジスタ１４５、または１つまたは複数の多重書込レジスタ２４５を再プログラムしようとした場合には、ブロック４５０において、制御がブロック４６０に渡される。そうでない場合には、ブロック４５０において、制御がブロック４０５に戻される。
【００３０】
１つまたは複数の追記型レジスタ１４５、または１つまたは複数の多重書込レジスタ２４５内にプログラミングしようという試みの変換されたメモリの領域が、追記型レジスタ１４５のうちの１つ内にすでにプログラムされている変換されたメモリと同じものである場合には、ブロック４６０において、制御がブロック４７０に渡される。そうでない場合には、ブロック４６０において、制御がブロック４０５に戻される。
【００３１】
ブロック４７０において、プロセッサ１１０は、レジスタ１４５、２４５内の構成データを介してメモリ・モジュール１２０のロックされている（プロテクトされた）メモリ領域に対する攻撃について通知を受ける。次に、ブロック４７０において、制御がブロック４０５に返される。
【００３２】
図５は、種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニット０５を有するさらに他の論理デバイス１００を示す。図５の例示的実施形態の場合には、攻撃者によるメモリ管理ユニット１０５の構成の再プログラミングは、起動の開始後のプログラミング中に、ロック可能な多重書込レジスタである第１の各レジスタ１４５にロック・プロテクト・モード・オプションを提供することにより防止される。ロック・プロテクト・モードは、多重書込レジスタの最後のプログラミングの後に、各ロック可能な多重書込第１レジスタ１４５に一度だけ適用することができる。メモリ管理ユニット１０５に関連する各ロック可能な多重書込第１レジスタ１４５は、プロセッサ１１０がリセットされた後でロック・プロテクトがかけられるまで、すなわち、起動が再開始するまで、再プログラミング可能である。各ロック可能な多重書込第１レジスタ１４５は、メモリのある領域を非実行およびロック可能として指定するようにプログラムすることができる。この場合、メモリのこの領域は、任意の命令を実行するために使用することはできないし、メモリ管理ユニット１０５が使用するロック可能な多重書込第１レジスタ１４５は、一旦ロックすると再プログラムすることはできない。
【００３３】
図５の論理デバイス１００は、プロセッサ１１０と、メモリ管理ユニット１０５と、メモリ管理ユニット・レジスタ・モジュール１１５と、メモリ・モジュール１２０とを備える。メモリ・モジュール１２０は、データ・メモリ・セクション１３０と、実行可能メモリ・セクション１３５とを備える。論理デバイス１００は、動作可能なインジケータ１７５を備える。レジスタ・モジュール１１５は、ハードウェアおよび／またはソフトウェアで実施するすることができる少なくとも１つのロック可能な多重書込第１レジスタ１４５を備える。図５の場合、複数のロック可能な多重書込第１レジスタ１４５ａ、１４５ｂ、１４５ｃが、第１のレジスタ１４５である。第１レジスタ１４５ａ、１４５ｂ、１４５ｃそれぞれに対して、インジケータ・ユニット１７０は、本明細書においては、第２のインジケータ１７３とも呼ぶことができるプロテクト・インジケータ１７３を備える。図５は、３つのロック可能な多重書込第１レジスタ１４５ａ、１４５ｂ、１４５ｃそれぞれに対する３つのプロテクト・インジケータ１７３ａ、１７３ｂ、１７３ｃを示す。
【００３４】
プロセッサ１１０は、第１の通信バス１５１を介して、メモリ管理ユニット１０５と通信する。メモリ管理ユニット１０５は、メモリ・モジュール１２０と通信し、それにより第２の通信バス１５２を介して、データ・メモリ・セクション１３０および実行可能メモリ・セクション１３５の両方と通信する。プロセッサ１１０は、第３の通信バス１５３を介して、ロック可能な多重書込第１レジスタ１４５と通信する。メモリ管理ユニット１０５は、第４の通信バス１５４を介して、レジスタ・モジュール１１５内のロック可能な多重書込第１レジスタ１４５と通信する。プロセッサ１１０は、インジケータ・ユニット１７０と通信し、それにより、第５の通信バス１５５を介してプロテクト・インジケータ１７３と通信する。プロセッサ１１０は、第６の通信バス１５６を介して動作可能なインジケータ１７５と通信する。
【００３５】
ロック可能な多重書込第１レジスタ１４５は、第３の通信バス１５３により、ロック可能な多重書込第１レジスタ１４５に送信された第１のレジスタ構成データ１６０で、プロセッサ１１０によりプログラムされる。プロセッサ１１０の起動またはリセット後、その対応するプロテクト・インジケータ１７３が、そのロック可能な多重書込第１レジスタ１４５がロックされていることを表示するようにセットされるまで、各ロック可能な多重書込第１レジスタ１４５を、何回でもプログラムすることができる。このようなロックの後では、このロック可能な多重書込第１レジスタ１４５をさらにプログラムすることはできないし、メモリ・モジュール１２０内のその関連するデータ・メモリ・セクション１３０は、非実行として指定されるか、または実行可能として指定される。その後で、第１の制御データ１６５が、第４の通信バス１５４によりロック可能な多重書込第１レジスタ１４５のプログラムされた内容から入手される。ロックされた場合には、ロック可能な多重書込第１レジスタ１４５のいずれかを再プログラムしようとすると、プロセッサ１１０に警告が送られる。メモリ管理ユニット１０５を動作可能にするために使用される動作可能なインジケータ１７５は、  攻撃者が、メモリ管理ユニット１０５を動作不能にし、それによりロック可能な多重書込第１レジスタの書込プロテクトが作用しなくなるのを防止するために、（プロセッサ１１０がリセットされるまでは）１回だけ書込することができるタイプのものでなければならない。
【００３６】
動作中、プロセッサ１１０は、第１の通信バス１５１を介してメモリ管理ユニット１０５に、第１の通信信号１８１を送信する。メモリ管理ユニット１０５は、第２の通信バス１５２を介して、メモリ・モジュール１２０に、第２の通信信号１８２を送信する。第３の通信信号１８３は、第２の通信バス１５２を介して、メモリ管理ユニット１０５によりメモリ・モジュール１２０から受信される。第４の通信信号１８４は、第１の通信バス１５１を介して、プロセッサ１１０によりメモリ・モジュール１２０から受信される。ロック・プロテクト・モード・データ１８５は、第５の通信バス１５５を介してプロテクト・インジケータ１７３から受信される。第１の通信信号１８１は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０内に書き込まれるデータ、メモリ・モジュール１２０の実行可能メモリ・セクション１３５内に書き込まれる実行可能コード、および／またはメモリ管理ユニット１０５への命令を含むことができる。第２の通信信号１８２は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０に書き込まれるプロセッサ１１０から受信したデータ、またはメモリ・モジュール１２０の実行可能メモリ・セクション１３５内に書き込まれる実行可能コードを含むことができる。第３の通信信号１８３は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０から読み出したデータ、またはメモリ・モジュール１２０の実行可能メモリ・セクション１３５から読み出した実行可能コードを含むことができる。第４の通信信号１８４は、メモリ・モジュール１２０のデータ・メモリ・セクション１３０から読み出したデータ、メモリ・モジュール１２０の実行可能メモリ・セクション１３５から読み出した実行可能コード、またはプロセッサ１１０からメモリ管理ユニット１０５が受信した命令に対する応答を含むことができる。ロック・プロテクト・モード・データ１８５は、各ロック可能な多重書込第１レジスタ１４５がロックされているか否かを表示するプロテクト・インジケータ１７３からのデータを含むことができる。
【００３７】
変換されたメモリのある領域が、ロックされているロック可能な多重書込第１レジスタ１４５のうちの１つ内、およびロックされていない他のロック可能な多重書込第１レジスタ１４５内でプログラムされている場合には、警告がプロセッサ１１０に送られる。その場合、攻撃者は、ロックされていないロック可能な多重書込第１レジスタ１４５を再プログラムすることにより、ロックされているロック可能な多重書込第１レジスタ１４５をバイパスすることはできない。ロック・プロテクト・モードによりロック可能な多重書込第１レジスタ１４５が、再プログラムすることができなくなると、メモリ管理ユニット１０５は動作不能にすることはできない。これにより、攻撃者は、メモリ管理ユニット１０５を完全に動作不能にし、次にプロテクトを動作不能にすることができなくなる。
【００３８】
図６は、種々の例示的実施形態に記載する論理デバイス１００のメモリ管理ユニット１０５の構成をプロテクトするための他の方法６００のフローチャートを示す。ブロック６１０において、論理デバイス１００の起動が開始する。ブロック６１０において、制御がブロック６２０に渡される。
【００３９】
ブロック６２０において、論理デバイス１００の起動手順が、起動の開始の後で自動的に開始する。用語「起動手順」が複数の形をしているのは、本明細書においては、１つまたは複数の手順を含んでいることを意味する。次に、ブロック６２０において、制御がブロック６３０に渡される。
【００４０】
少なくとも１つのロック可能な多重書込第１レジスタ１４５に書き込むデータがある場合には、ブロック６３０において、制御がブロック６４０に渡される。そうでない場合には、ブロック６３０において、制御がブロック６５０に渡される。
【００４１】
ブロック６４０において、第１のレジスタ構成データ１６０が、ロック可能な多重書込第１レジスタ１４５内に書き込まれる。次に、ブロック６４０において、制御がブロック６５０に渡される。
【００４２】
少なくとも１つのロック可能な多重書込第１レジスタ１４５をロックすることができる場合には、ブロック６５０において、制御がブロック６６０に渡される。そうでない場合には、ブロック６５０において、制御がブロック６７０に渡される。
【００４３】
ブロック６６０において、ロックすることができる適当なロック可能な多重書込第１レジスタ１４５がロックされ、いまロックされた第１の各レジスタ１４５に関連するプロテクト・インジケータ１７３がセットされる。次に、ブロック６６０において、制御がブロック６７０に渡される。
【００４４】
ロックされるすべてのロック可能な多重書込第１レジスタ１４５がロックされると、ブロック６７０において、制御がブロック６８０に渡される。そうでない場合には、ブロック６７０において、制御がブロック６３０に戻される。
【００４５】
ブロック６８０において、動作可能インジケータ１７５が、攻撃者がメモリ管理ユニット１０５を動作不能にし、それによりロック可能な多重書込第１レジスタ１４５の書込プロテクトを動作不能にするのを防止するようにセットされる。次に、ブロック６８０において、制御がブロック６９０に渡される。
【００４６】
ブロック６９０において、論理デバイス１００の起動手順が終了する。起動プロセスはブロック６９０において終了する。
図７は、論理デバイス１００のプロセッサ１１０に、図５のメモリ・モジュール１２０のプロテクトされたメモリ領域に対する潜在的攻撃を通知する方法７００のフローチャートを示す。１つまたは複数のロック可能な多重書込第１レジスタ１４５を再プログラムしようとすると、ブロック７１０において、制御がブロック７２０に渡される。そうでない場合には、ブロック７１０において、その条件チェックを繰り返し行うために制御がブロック７１０に戻される。
【００４７】
ブロック７２０において、論理デバイス１００のプロセッサ１１０は、ロック可能な多重書込第１レジスタ１４５内の構成データにより、メモリ・モジュール１２０のプロテクトされたメモリ領域に対する攻撃の通知を受ける。次に、ブロック７２０において、プロセスが終了する。
【００４８】
図８は、種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニット１０５を有するさらに他の論理デバイス１００を示す。図８の例示的実施形態の場合には、攻撃者によるメモリ管理ユニット１０５の構成の再プログラミングは、起動またはリセットの後のプログラミング中に、ロック可能な多重書込第１レジスタであるすべての第１のレジスタ１４５に、オプションであるロック・プロテクト・モードを提供することにより防止される。ロック・プロテクト・モードは、すべてのロック可能な多重書込第１レジスタ１４５に一度だけ適用することができる。メモリ管理ユニット１０５に関連するロック可能な多重書込第１レジスタ１４５は、プロセッサ１１０をリセットした後でロック・プロテクトがかかるまで再プログラミング可能である。各ロック可能な多重書込第１レジスタ１４５は、メモリのある領域を非実行およびロック可能として指定するためにプログラムすることができる。この場合、メモリのこの領域は、いずれの命令を実行するためにも使用することができないし、メモリ管理ユニット１０５が使用するロック可能な多重書込第１レジスタ１４５は、再プログラムすることはできない。
【００４９】
プロセッサ１１０の起動またはリセットの後では、各ロック可能な多重書込第１レジスタ１４５を、すべてのロック可能な多重書込第１レジスタ１４５がロックされていることを示すように、プロテクト・インジケータ１７３がセットされるまで、何回でもプログラムすることができる。このようなロックの後では、ロック可能な多重書込第１レジスタ１４５をそれ以上プログラムすることはできないし、メモリ・モジュール１２０内のその関連するデータ・メモリ・セクション１３０は、非実行およびロック可能として指定される。その後で、第１の制御データ１６５は、第４の通信バス１５４により、ロック可能な多重書込第１レジスタ１４５のプログラムされた内容から入手することができる。ロックされた場合には、ロック可能な多重書込第１レジスタ１４５のいずれかを再プログラムしようとすると、プロセッサ１１０に警告が送られる。メモリ管理ユニット１０５を動作可能にするために使用される動作可能なインジケータ１７５は、攻撃者が、メモリ管理ユニット１０５を動作不能にし、それによりロック可能な多重書込第１レジスタ１４５の書込プロテクトが機能しなくなるのを防止するために、１回だけ書込することができるタイプのものでなければならない。
【００５０】
他の実施形態の場合には、両方ともレジスタ内でビットとして実施することができるプロテクト・インジケータ１７３または同様に動作可能なインジケータ１７５は、ロック可能な多重書込第１レジスタ１４５の再プログラミングを阻止する機能、およびメモリ管理ユニット１０５を無効にする再プログラミングを阻止する機能の両方を実行することができる。
【００５１】
図８の他の例示的実施形態の場合には、図２に示すように、少なくとも１つの第２のレジスタ２４５を備える第２のレジスタ・ユニット２４０が追加される。１つのプロテクト・インジケータ１７３を、ロック可能な多重書込第１レジスタ１４５が再プログラムされるのを防止するために使用することができる。一方、その間、第２のレジスタ２４５はロックされていないままでいることができ、それ故、再プログラミング可能である。この実施形態の場合には、図２のところで説明したのと同様に、同じ変換されたメモリが、ロックされているレジスタ１４５およびロックされていないレジスタ２４５の両方内でプログラムされるのを防止するためにチェックを行う必要がある。このような試みを行おうとすると、プロセッサ１１０に警告が送られ、それにより攻撃者が、ロックされていない第２のレジスタ２４５を再プログラムすることにより、ロックされているロック可能な多重書込第１レジスタ１４５をバイパスするのを防止する。
【００５２】
図９は、種々の例示的実施形態に記載する論理デバイス１００のメモリ管理ユニット１０５の構成をプロテクトするためのさらに他の方法９００のフローチャートを示す。ブロック９１０において、論理デバイス１００の起動が開始する。次に、ブロック９１０において、制御がブロック９２０に渡される。
【００５３】
ブロック９２０において、起動の開始後に論理デバイス１００の起動手順が自動的に開始する。用語「起動手順」が複数の形をしているのは、本明細書においては、１つまたは複数の手順を含んでいることを意味する。次に、ブロック９２０において、制御がブロック９３０に渡される。
【００５４】
少なくとも１つのロック可能な多重書込第１レジスタ１４５に書き込むデータがある場合には、ブロック９３０において、制御がブロック９４０に渡される。そうでない場合には、ブロック９３０において、制御がブロック９５０に渡される。
【００５５】
ブロック９４０において、第１のレジスタ構成データ１６０が、ロック可能な多重書込第１レジスタ１４５に書き込まれる。次に、ブロック６４０において、制御がブロック９３０に戻される。
【００５６】
ブロック９５０において、ロック可能な多重書込第１レジスタ１４５がロックされ、プロテクト・インジケータ１７３がセットされる。次に、ブロック９５０において、制御がブロック９６０に渡される。
【００５７】
ブロック９６０において、攻撃者が、メモリ管理ユニット１０５を動作不能にし、それによりロック可能な多重書込第１レジスタ１４５の書込プロテクトを無効にするのを防止するように、動作可能インジケータ１７５がセットされる。ロック可能な多重書込第１レジスタ１４５およびメモリ管理ユニット１０５の両方がプロテクトされていること（すなわち、ロックされていること）を表示するように、プロテクト・インジケータ１７３または動作可能インジケータ１７５をセットすることにより、任意選択として、ブロック９５０および９６０を結合することができることに留意されたい。次に、ブロック９６０において、制御がブロック９７０に渡される。
【００５８】
ブロック９７０において、論理デバイス１００の起動手順が終了する。この起動手順はブロック９７０において終了する。
図１０は、論理デバイス１００のプロセッサ１１０に、図８のメモリ・モジュール１２０のプロテクトされたメモリ領域に対する攻撃を通知するためのさらに他の方法１０００のフローチャートである。１つまたは複数のロック可能な多重書込第１レジスタ１４５を再プログラムしようとすると、ブロック１０１０において、制御がブロック１０５０に渡される。そうでない場合には、ブロック１０１０において、制御がブロック１０２０に渡される。
【００５９】
メモリ管理ユニット・レジスタ・モジュール１１５のレジスタが、ロック可能な多重書込第１レジスタ１４５しか備えていない場合には、ブロック１０２０において、制御がブロック１０１０に戻される。そうでない場合には、ブロック１０２０において、制御がブロック１０３０に渡される。
【００６０】
１つまたは複数の第２のレジスタ２４５が再プログラムされていた場合には、ブロック１０３０において、制御がブロック１０４０に渡される。そうでない場合には、ブロック１０３０において、制御がブロック１０１０に戻される。
【００６１】
１つまたは複数の第２のレジスタ２４５内のプログラムされている変換されたメモリの領域が、１つまたは複数のロックされているロック可能な多重書込第１レジスタ１４５内のプログラムされている変換されたメモリと同じものである場合には、ブロック１０４０において、制御がブロック１０５０に渡される。そうでない場合には、ブロック１０４０において、制御がブロック１０１０に戻される。
【００６２】
ブロック１０５０において、論理デバイス１００のプロセッサ１１０に、ロックされていない第２のレジスタ２４５および／またはロックされているロック可能な多重書込第１レジスタ１４５内の構成データにより、メモリ・モジュール１２０のロックされたメモリ領域に対する攻撃の通知が行われる。ブロック１０５０において、制御がブロック１０１０に戻される。
【００６３】
ある種のオペレーティング・システムが必要とする仮想メモリの動的割当ては、メモリ管理ユニット１０５の構成を制御するレジスタのロックに関していくつかの問題を抱えている場合がある。例えば、あるオペレーティング・システムが一度に２つのプロセスを稼働している場合には、オペレーティング・システムは、両方のプロセスを変換されたメモリの別々の領域内に置くことができるが、異なる時点では、プロセスを仮想メモリの同じ領域内に置く。オペレーティング・システムがコンテキストの切替を行う場合には、オペレーティング・システムは、現在のプロセス・マッピングに対するメモリ管理ユニット１０５の構成を制御するレジスタの内容と他のプロセスに対するメモリ管理ユニット１０５の構成を制御する内容とをスワップする。このスワップのために、１つまたは複数のレジスタをロックしていない状態に維持する必要がある。
【００６４】
攻撃者は、仮想メモリからロックされているレジスタによりプロテクトされた変換されたメモリにマッピングすることにより、ロックされていないレジスタをプログラムして、このレジスタを利用することができる。次に、攻撃者は、プロテクトされた変換されたメモリを変更するためにこの仮想メモリを修正することができる。すでに説明したように、メモリ管理ユニット１０５の構成に対するこのタイプの攻撃を防止するために、ロックしていないレジスタをプログラムする場合には、仮想メモリに関連するロックしていないレジスタ内の変換されたアドレスと変換されたメモリに関連するロックしてあるレジスタ内の変換されたアドレスとの比較が行われる。
【００６５】
図１１は、論理デバイスのプロセッサ１１０に、種々の例示的実施形態に記載してあるメモリ・モジュール１２０のプロテクトされたメモリ領域１３０に対する潜在的攻撃を通知するための方法１１００のフローチャートである。図１１のブロック１１１０において、仮想メモリのある領域が、第１のプロセス１２１１（図１２参照）と第２のプロセス１２１２（図１２参照）とをスワップしている論理デバイス１００のプロセッサ１１０に関連することができるような仮想メモリの他の領域とスワップされる。次に、ブロック１１１０において、制御がブロック１１２０に渡される。
【００６６】
ブロック１１２０において、例えば、仮想メモリ・レジスタ１２４５（図１２参照）であってもよい仮想メモリと関連するレジスタの内容が、仮想メモリ内のスワッピングを反映するように更新される。次に、ブロック１１２０において、制御がブロック１１３０に渡される。
【００６７】
ブロック１１３０において、仮想メモリに関連する仮想メモリ・レジスタ１２４５の内容が、他の仮想メモリ・レジスタ１２４５の内容と比較される。次に、ブロック１１３０において、制御がブロック１１４０に渡される。
【００６８】
他の仮想メモリ・レジスタ１２４５内で同じ変換されたアドレスを発見した場合には、ブロック１１４０において、制御がブロック１１５０に渡される。そうでない場合には、ブロック１１４０において、制御がブロック１１１０に戻される。
【００６９】
ブロック１１５０において、論理デバイス１００のプロセッサ１１０に、プロテクトされていない仮想メモリ・レジスタ１２４５内の構成データにより、メモリ・モジュール１２０のロックされているメモリ領域に対する攻撃の通知が行われる。次に、ブロック１１５０において、制御がブロック１１１０に戻される。数個のレジスタしか含んでいない小さなメモリ管理ユニット１０５のアーキテクチャにおいては、この比較は比較的簡単に迅速に行われる。しかし、多数のレジスタを備える論理デバイス１００の場合には、この比較は多くのリソースを必要とする場合がある。
【００７０】
図１２は、種々の例示的実施形態に記載するプロテクト構成を備えるメモリ管理ユニット１０５を有するさらに他の論理デバイス１００である。今説明したメモリ管理ユニット１０５のレジスタの変換されたメモリの比較の代わりに、変換されたメモリ・レジスタ・ユニット１２３０内の一組の変換されたメモリ・レジスタ１２３５を、変換されたメモリをプロテクトするために使用することができる。仮想メモリ・レジスタ１２４５内の仮想メモリ・アドレスの属性が、変換されたメモリ・レジスタ１２３５内に位置する変換されたメモリに対するプロテクトと比較される。プロテクト違反が発見された場合には、プロセッサ１１０に警告が送られる。すでに説明したように、仮想メモリのスワッピングは、第１のプロセス１２１１に対する第２のプロセス１２１２のスワッピングと関連づけることができる。
【００７１】
変換されたメモリ・レジスタ１２３５は、変換されたメモリ・レジスタ１２３５がこのようにプロテクトされていることを示すために使用する１つまたは複数のプロテクト・インジケータ１７３を備えるインジケータ・ユニット１７０を正しくセットしてある上記方法により再プログラミングからプロテクトすることができる。プロテクト・インジケータ１７３は、変換されたメモリ・レジスタ１２３５の再プログラミングを防止するために、追記型のものでなければならない。メモリ管理ユニット１０５を動作可能にするために上記のように使用される動作可能なインジケータ１７５も、攻撃者がメモリ管理ユニット１０５を動作不能にし、それによりレジスタ１４５の書込プロテクトを不能にするのを防止するために、追記型のものでなければならない。さらに、タイミングの問題のために、変換されたメモリ・レジスタ１２３５および仮想メモリ・レジスタ１２４５内のデータが有効であるかないかを表示するために、一組のビットを使用する必要がある場合がある。
【００７２】
図１３は、論理デバイス１００のプロセッサ１１０に、種々の例示的実施形態に記載するメモリ・モジュール１２０のロックされたメモリ領域１３０に対する潜在的攻撃を通知するための他の方法１３００のフローチャートである。図１３のブロック１３１０において、仮想メモリのある領域が、例えば、第２のプロセス１２１２のための第１のプロセス１２１１をスワッピングしている論理デバイス１００のプロセッサ１１０に関連づけることができる仮想メモリの他の領域とスワッピングされる。次に、ブロック１３１０において、制御がブロック１３２０に渡される。
【００７３】
ブロック１３２０において、例えば、図１２の仮想メモリ・レジスタ１２４５であってもよい仮想メモリと関連するレジスタの内容が、仮想メモリ内のスワッピングを反映するように更新される。ブロック１３２０において、制御がブロック１３４０に渡される。
【００７４】
ブロック１３４０において、変換されたメモリ・レジスタ１２３５内に格納しているプロテクトされた変換されたアドレスの属性が、仮想メモリ・アドレスに対する仮想メモリ・レジスタ１２４５内に格納しているアドレスの属性と比較される。ブロック１３４０において、制御がブロック１３５０に渡される。
【００７５】
ブロック１３４０の比較の際にプロテクト違反が行われたことが分かった場合には、ブロック１３５０において、制御がブロック１３６０に渡される。そうでない場合には、ブロック１３５０において、制御がブロック１３１０に戻される。
【００７６】
ブロック１３６０において、論理デバイス１００のプロセッサ１１０に、仮想メモリ・レジスタ１２４５内に格納しているスワッピングした仮想メモリに関連する構成データにより、メモリ・モジュール１２０のプロテクトされたメモリ領域に対する攻撃の通知が行われる。次に、ブロック１３６０において、制御がブロック１３１０に戻される。
【００７７】
図１４は、プロセッサ１１０に、種々の例示的実施形態に記載するメモリ・モジュール１２０のロックされたメモリ領域１３０に対する潜在的攻撃を通知するための他の方法１４００のフローチャートである。図１４のブロック１４１０において、仮想メモリ・レジスタ１２４５により、仮想メモリ・アドレスが変換されたメモリ・アドレスに変換される。次に、ブロック１４１０において、制御がブロック１４２０に渡される。
【００７８】
ブロック１４２０において、変換されたメモリ・アドレスが、変換されたメモリ・レジスタ１２３５内に格納しているプロテクトされた変換されたアドレスの属性と比較される。次に、ブロック１４２０において、制御がブロック１４３０に渡される。
【００７９】
ブロック１４２０の比較の際にプロテクト違反が行われたことが分かった場合には、ブロック１４３０において、制御がブロック１４４０に渡される。そうでない場合には、ブロック１４３０において、制御がブロック１４１０に戻される。
【００８０】
ブロック１４４０において、プロセッサ１１０に、変換されたメモリ・レジスタ１２３５内に格納している変換されたメモリに関連する構成データにより、メモリ・モジュール１２０のプロテクトされたメモリ領域に対する攻撃の通知が行われる。次に、ブロック１４４０において、制御がブロック１４１０に戻される。
【００８１】
図示し、および／または本明細書に記載する実施形態以外のこれらの開示に一致する等価の実施形態も使用することができる。より詳細には、実施態様により、プロセッサ１１０は、制御モジュール１１０の種々のタイプのうちの任意のタイプのものであってもよい。他のデバイスの中で、制御モジュール１１０は、それに予めプログラムされた命令からの制御を実施するフラッシュ・メモリ・ユニットであってもよい。また、プロセッサ１１０または制御モジュール１１０は、すでに説明したように、１つのプロセッサとだけではなく、複数のメモリ管理ユニット１０５と相互作用を行うことができる。
【００８２】
今日使用しているある種のメモリ管理ユニットは、ユニットのレジスタのうちの１つを変更するために動作不能にする必要がある。メモリ管理ユニットが、最初に動作不能にされ、このレジスタが変更され、次にメモリ管理ユニットが再度動作可能にされる。本明細書に記載するいくつかの例示として実施形態は、二組のレジスタを備えていて、一方の組のレジスタはロックされ、他方の組のレジスタはロックされない。ロックされていないレジスタを変更するために、動作中、メモリ管理ユニットを動作不能にしなければならない場合には、攻撃者は、同じ時間中にロックされているレジスタを変更することができる。この状況は、２つのメモリ管理ユニットのイネーブル・ビットを提供することにより防止することができる。一方のビットは、ロックされているレジスタのためだけのものであり、他方のビットは、ロックされていないレジスタのためだけのものである。この場合、ロックされているレジスタに対するイネーブル・ビットがセットされると、ロックされているレジスタを変更することはできない。しかし、ロックしていないレジスタに対するメモリ管理ユニットのイネーブル・ビットは、ロックされていないレジスタを変更したい場合には、いつでも変更することができる。
【００８３】
通常の当業者であれば理解することができると思うが、実行および非実行以外のメモリ・アドレスの属性も本明細書に記載する実施形態によりプロテクトすることができる。より詳細には、読取専用、書込専用、読取および書込等の属性を有するメモリ・アドレスもプロテクトすることができる。
【００８４】
この場合のように、多くのデータ処理製品においては、上記システムをハードウェア構成要素およびソフトウェア構成要素の組合わせとして実施することができる。さらに、例示的実施形態を使用するために必要な機能を、上記の技術により実行するために情報処理装置（例えば、とりわけ、図１の要素を備える論理デバイス１００など）をプログラミングする際に使用するコンピュータ読み取り可能媒体（フロッピー（登録商標）・ディスク、従来のハード・ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュＲＯＭ、不揮発性ＲＯＭおよびＲＡＭなど）内で実施することができる。
【００８５】
本明細書においては、「プログラム記憶媒体」という用語は、フロッピー（登録商標）・ディスク、従来のハード・ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュＲＯＭ、不揮発性ＲＯＭおよびＲＡＭのような任意のタイプの論理デバイス・メモリを含むが、これらに限定されないと広義に定義されている。
【００８６】
例示的実施形態において、攻撃者が、論理デバイスにデータとして以前に提示し、攻撃者によりシステムのメモリ内に後で格納されたコードを実行するのを防止するための技術を開示してきた。本明細書に記載する技術は、システムのメモリ管理ユニット１０５を再プログラミングするのを防止するので、予め指定されたメモリ・アドレス範囲を、データ・メモリから実行可能メモリに変更するために、アングラ・ソースにより使用することができない。そのため、攻撃者が、システムにデータとして以前に提示し、実際には実行可能コードであったシステムのメモリのデータ領域内に格納しているコードを実行することができない。
【００８７】
本明細書に詳細に説明した例示的実施形態は、単に例示としてのものであって、本発明を制限するためのものではない。当業者であれば、添付の特許請求の範囲内に依然として含まれる等価の実施形態になる上記実施形態の形状および詳細を種々に変更することができることを理解することができるだろう。
【図１】
2010525456.tif 000003
【図２】
2010525456.tif 000004
【図３】
2010525456.tif 000005
【図４】
2010525456.tif 000006
【図５】
2010525456.tif 000007
【図６】
2010525456.tif 000008
【図７】
2010525456.tif 000009
【図８】
2010525456.tif 000010
【図９】
2010525456.tif 000011
【図１０】
2010525456.tif 000012
【図１１】
2010525456.tif 000013
【図１２】
2010525456.tif 000014
【図１３】
2010525456.tif 000015
【図１４】
2010525456.tif 000016
【国際調査報告】
2010525456.tif 000017
2010525456.tif 000018