(57)【要約】【課題】  無許可のプログラムコード改変を防止するためのシステムおよび方法を提供すること。【解決手段】  インテグリ制御システムは、アドレスビットを使用して、システムメモリに記憶されているデータの暗号化および／または保護を可能にする。暗号化機構および保護機構は、データバスを介してＣＰＵに結合され、データバスを介してメモリに結合される。システムメモリに記憶すべきまたはシステムメモリから取り出すべきデータの位置を決定するアドレスバスは、複数のアドレスラインを備えている。アドレスラインのうち少なくとも１本は、暗号化機構が、データをメモリに記憶する前に暗号化し、メモリから取り出した後に復号化できるようにする。もう１本のアドレスラインは、保護機構がデータのハッシュを生成できるようにする。ハッシュは、データがシステムメモリに記憶されている間に改変されたかどうかを判定するために記憶され使用される。【選択図】  図８
2006065851.tif 000002
【特許請求の範囲】
【請求項１】
メモリにデータを記憶するシステムであって、
ＣＰＵと、
データバスを介して前記ＣＰＵに結合され、データバスを介して前記メモリに結合されているセキュリティ機構と、
複数のアドレスラインを有し、前記アドレスラインのうち少なくとも１本が、前記セキュリティ機構が前記データに対して前記メモリへの記憶前にセキュリティを提供できるようにするアドレスバスとを備えることを特徴とするシステム。
【請求項２】
前記アドレスライン上で設定される値は、メモリ管理ユニットによって決定されることを特徴とする請求項１に記載のシステム。
【請求項３】
前記値は、前記メモリ管理ユニットによって維持されるテーブルの関数であることを特徴とする請求項２に記載のシステム。
【請求項４】
前記セキュリティ機構は、暗号化機構を備えることを特徴とする請求項１に記載のシステム。
【請求項５】
前記セキュリティ機構は、前記データの関数としてインテグリティチェック値を生成するインテグリティチェック機構を含むことを特徴とする請求項１に記載のシステム。
【請求項６】
前記インテグリティチェック機構は、ハッシュ関数を実行することを特徴とする請求項５に記載のシステム。
【請求項７】
前記インテグリティチェック値は、安全なメモリに記憶されることを特徴とする請求項５に記載のシステム。
【請求項８】
前記安全なメモリは、前記ＣＰＵと同一の集積回路上にあることを特徴とする請求項７に記載のシステム。
【請求項９】
前記データは、キャッシュから移動した後、システムメモリに記憶される前に暗号化されることを特徴とする請求項４に記載のシステム。
【請求項１０】
前記アドレスラインは、前記インテグリティチェック値が安全なメモリのどこに記憶されているのかの指示を提供することを特徴とする請求項７に記載のシステム。
【請求項１１】
前記インテグリティチェック値は、キャッシュメモリの１ラインに対して生成されることを特徴とする請求項７に記載のシステム。
【請求項１２】
データバスを介して前記ＣＰＵに結合されデータバスを介して前記メモリに結合された復号化機構をさらに備え、前記暗号化機構がデータを前記メモリへの記憶前に暗号化できるようにする前記アドレスラインのうちの前記少なくとも１本は、メモリから前記データを取り出す際に前記データの復号化を可能にするために使用されることを特徴とする請求項４に記載のシステム。
【請求項１３】
前記インテグリティチェック値は、前記データをシステムメモリから取り出す際に生成される第２のインテグリティチェック値と比較されることを特徴とする請求項６に記載のシステム。
【請求項１４】
前記セキュリティ機構を使用可能にする前記少なくとも１本のアドレスラインは、上位アドレスラインであることを特徴とする請求項１に記載のシステム。
【請求項１５】
メモリにデータを記憶する方法であって、
データバスを介してＣＰＵと通信し、データバスを介して前記メモリと通信するセキュリティ機構を提供するステップと、
前記セキュリティ機構において、複数のアドレスラインを有するアドレスバスの少なくとも１本のアドレスラインからイネーブル信号を受け取るステップと、
前記イネーブル信号に応答して前記データにセキュリティを適用するステップとを備えることを特徴とする方法。
【請求項１６】
前記イネーブル信号は、メモリ管理ユニットによって決定されることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記セキュリティ機構は暗号化機構を含み、前記適用されるセキュリティは暗号化であることを特徴とする請求項１５に記載の方法。
【請求項１８】
前記セキュリティ機構はインテグリティチェック機構を含み、前記適用されるセキュリティは前記データの関数としてのインテグリティチェック値の生成であり、前記アドレスラインの少なくとももう１本のラインは前記インテグリティチェック機構を使用可能にすることを特徴とする請求項１５に記載の方法。
【請求項１９】
前記インテグリティチェック機構は、ハッシュ関数を実行することを特徴とする請求項１８に記載の方法。
【請求項２０】
前記インテグリティチェック値を安全なメモリに記憶するステップを備えることを特徴とする請求項１８に記載の方法。
【請求項２１】
前記安全なメモリを前記ＣＰＵと同一の集積回路上に設けるステップを備えることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記データは、キャッシュから移動した後、システムメモリに記憶される前に暗号化されることを特徴とする請求項１７に記載の方法。
【請求項２３】
前記アドレスラインは、前記インテグリティチェック値が安全なメモリのどこに記憶されているのかの指示を提供することを特徴とする請求項２０に記載の方法。
【請求項２４】
前記インテグリティチェック値は、キャッシュメモリの１ラインに対して生成されることを特徴とする請求項２０に記載の方法。
【請求項２５】
データをメモリから取り出す際に、前記データを復号化するステップをさらに備えることを特徴とする請求項１７に記載の方法。
【請求項２６】
前記インテグリティチェック値を、前記データをシステムメモリから取り出す際に生成される第２のインテグリティチェック値と比較するステップを含むことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、コンピュータシステム内でプログラムコードを安全に実行するためのシステムおよび方法に関する。
【背景技術】
【０００２】
本出願は、本願の譲受人に譲渡された以下の同時係属の米国特許出願に関する。２００４年８月２７日出願の米国特許出願第＿号（ＭＳＦＴ−３８５８／３０８７６７  ０１）「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｕｓｉｎｇ  Ａｄｄｒｅｓｓ  Ｂｉｔｓ  ｔｏ  Ｆｏｒｍ  ａｎ  Ｉｎｄｅｘ  ｉｎｔｏ  Ｓｅｃｕｒｅ  Ｍｅｍｏｒｙ」、２００４年８月２７日出願の米国特許出願第＿号（ＭＳＦＴ−３８５９／３０８７６８  ０１）「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｕｓｉｎｇ  Ａｄｄｒｅｓｓ  Ｂｉｔｓ  ｔｏ  Ａｆｆｅｃｔ  Ｅｎｃｒｙｐｔｉｏｎ」、２００４年８月２７日出願の米国特許出願第＿号（ＭＳＦＴ−３８６０／３０８７６９  ０１）「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｕｓｉｎｇ  Ａｄｄｒｅｓｓ  Ｌｉｎｅｓ  Ｔｏ  Ｃｏｎｔｒｏｌ  Ｍｅｍｏｒｙ  Ｕｓａｇｅ」、２００４年８月２７日出願の米国特許出願第＿号（ＭＳＦＴ−３８６１／３０８７７０  ０１）「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ａｐｐｌｙｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｔｏ  Ｍｅｍｏｒｙ  Ｒｅａｄｓ  ａｎｄ  Ｗｒｉｔｅｓ」。
【０００３】
今日のコンピュータシステムは、コンピュータシステムの正常な動作を混乱させ不能にすることができる様々な攻撃にさらされている。コンピュータウィルス、ワーム、およびトロイの木馬プログラムは様々な形の攻撃の例である。コンピュータシステムの無節操なユーザから直接攻撃されることもある。こうした攻撃は、しばしばコンピュータシステムで実行される既存のプログラムコードを改変しようとする試み、またはコンピュータシステム内での正常なプログラム実行の様々な段階に新しい無許可プログラムコードを注入しようとする試みの形をとる。こうした悪意ある攻撃を防止するためのシステムおよび方法がますます重要になってきている。
【０００４】
典型的なコンピュータシステムは、コンピュータハードウェア、オペレーティングシステム、および１つまたは複数のアプリケーションプログラムを含んでいる。コンピュータハードウェアは通常、プロセッサ（ときには「中央処理装置」または「ＣＰＵ」とも呼ばれる）、メモリ、および様々な構成要素間での通信を円滑に進める１本または複数のシステムバスを備えている。典型的なコンピュータシステムの他の構成要素には、入出力コントローラ、メモリコントローラ、グラフィックス処理ユニット、オーディオコントローラ、および電源がある。
【０００５】
こうしたシステムは一般に、小容量のオンチップメモリ（キャッシュメモリと呼ばれる）およびはるかに大容量のオフチップメモリ（システムメモリと呼ばれる）を備える。こうしたシステム中のオフチップメモリは、一般に信頼できると見なされていない（キャッシュメモリも信頼できると見なされないことがあるが、攻撃者がキャッシュメモリの内容を読み取るのを防止するハードウェア機構を介して保護することははるかに容易であり得る）。すなわち、大容量のシステムメモリに記憶されたデータは攻撃を受けやすく、データの所有者が意図しなかった方式でデータが簡単に改変されることが起こり得る。こうした攻撃によって、プログラムが意図していない方式で動作し、またはコピー保護方式が破られてしまうかもしれない。
【０００６】
データが確実にシステムメモリから取り出されセキュリティ保護されるようにしようとするいくつかのシステムが開発されてきた。具体的には、システムは、広範囲の暗号化技法とともに、メモリ内のデータの改変を検出する、改ざんを明らかにする他の機構を利用してきた。
【０００７】
オペレーティングシステムは、コンピュータシステムのアプリケーションプログラムと使用しているハードウェアの間のインターフェースと考えることができる。通常オペレーティングシステムは、コンピュータシステムプロセッサ上で実行され、コンピュータシステムの物理的な構成要素および様々なアプリケーションプログラムによるそれら構成要素の使用を管理する、様々なソフトウェアルーチンを含んでいる。
【０００８】
コンピュータシステムのプロセッサはしばしば、オペレーティングシステムおよび任意のアプリケーションプログラムによるメモリの使用を管理するメモリ管理ユニットを含む。コンピュータシステムに対する攻撃の多くは、メモリ内のプログラムを標的にする。たとえば、セキュリティチェックを実行するコード部分は、プログラムのその部分がメモリに記憶される際に、それを単に置き換えるだけで無効にすることができるかもしれない。他のハッキングによって、コンピュータゲームを改変し、その挙動を変更することもできるかもしれない。たとえば、マルチプレーヤーゲームでプレーヤーが自分のローカルマシン上のコードを変更することにより公正を欠く有利な立場を得ることができるようになる脆弱性が見つかる状況を考えてみる。こうした公正を欠く有利な立場は、そうでなければ評判のよいゲームの評判を傷つけることになりかねない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
こうしたことをすべて考慮すると、無許可のプログラムコード改変を防止することが大いに望ましいと言える。
【課題を解決するための手段】
【００１０】
本発明は、システムメモリ内に記憶されているデータのセキュリティを維持する安全なコンピューティング環境を提供する。このシステムは、ＣＰＵと、データバスを介してＣＰＵに結合されデータバスを介してメモリに結合されたセキュリティ機構とを含む。アドレスバスはシステムメモリ内のデータ記憶位置を決定し、複数のアドレスラインを含む。アドレスラインのうち少なくとも１本は、セキュリティ機構が、データをメモリ内に記憶する前にデータをセキュリティ保護することができるようにする。ＣＰＵおよびセキュリティ機構は、同一の集積回路上にあってもよい。セキュリティ機構は、暗号化および復号化機構を含むことができる。システムは、データの関数としてインテグリティチェック値（ｉｎｔｅｇｒｉｔｙ  ｃｈｅｃｋ  ｖａｌｕｅ）を生成するインテグリティチェック機構（ｉｎｔｅｇｒｉｔｙ  ｃｈｅｃｋ  ｍｅｃｈａｎｉｓｍ）を含むこともできる。アドレスラインの別の１本は、インテグリティチェック機構を使用可能にすることができる。インテグリティチェック値は、データがシステムメモリ内に記憶されている間に改変されたかどうかを判定するのに使用することができる縮小サイズの値を作成するデータのハッシュ値（暗号化形式または平文形式あるいはその両方）であることが好ましい。インテグリティチェック値は、安全なメモリ（ｓｅｃｕｒｅ  ｍｅｍｏｒｙ）内に記憶されることが好ましく、そのメモリはＣＰＵと同一の集積回路上にあってもよい。
【００１１】
以上述べてきた概要ならびに本発明の以下の詳細説明は、添付図面と併せて読めばより理解できる。本発明を説明するために、本発明の例示的構造が図に示してあるが、本発明は開示されている特定の方法および手段に限定されるものではない。
【発明を実施するための最良の形態】
【００１２】
本発明は、コンピュータシステムメモリ内のプログラムコードを含むデータをリバースエンジニアリングし、逆アセンブルし、修正し、またはその他の改変をしようとする試みを伴うコンピュータシステムへの攻撃を防止する助けとなる、安全なコンピューティング環境を提供する。本発明は、信頼できないメモリと、暗号化および／または検証機構を備えるセキュリティエンジンを有するプロセッサとを含むコンピュータシステムまたはコンピューティング装置において実施することができる。システムは、アドレスビットを使用して、データをシステムメモリに記憶する前にそのデータに対してセキュリティ動作を実施するようセキュリティエンジンに通知する。たとえば、アドレスビットは、システムメモリの具体的なページを暗号化するよう指示することができる。さらに、たとえば、アドレスビットは、メモリの具体的なページを保護する（すなわち検証可能な形で変更させない）よう指示することができる。保護の場合には、ハッシュ値などデータの関数である検証情報は、改ざんに強い安全なメモリに記憶することが好ましい。一般に、安全なメモリは、セキュリティ境界内にあると考えることができる。通常セキュリティ境界は、安全なメモリをＣＰＵと同一の集積回路上に置くことによって提供される。検証情報は、信頼できないシステムメモリからデータが取り出された後にそのデータから再生され、記憶されている検証情報と比較される。この２つの情報に差があれば、データが改変されたことを示している。
【００１３】
図１は、本発明のある態様を実施することができるマルチメディアコンソール１００の機能的構成要素を示している。マルチメディアコンソール１００は、１次（レベル１）キャッシュ１０２、２次（レベル２）キャッシュ１０４、およびメモリ管理ユニット（ＭＭＵ）１０３を有する中央処理装置（ＣＰＵ）１０１を備える。１次キャッシュ１０２および２次キャッシュ１０４は、一時的にデータを記憶し、それによってメモリアクセスサイクル数を削減し、その結果処理速度およびスループットを改善する。ＣＰＵ１０１は、２つ以上のコアを含むことができ、したがって追加の１次および２次キャッシュ１０２および１０４を含むことができる。ＭＭＵ１０３は、ＣＰＵが要求するメモリアクセスを処理する任を負う。ＭＭＵ１０３が実施する他の機能には、仮想アドレスから物理アドレスへの変換（すなわち仮想メモリ管理）、メモリ保護、キャッシュコントロールなどがある。
【００１４】
グラフィックス処理ユニット（ＧＰＵ）１０８およびビデオエンコーダ／ビデオコーデック（コーダ／デコーダ）１１４は、高速かつ高解像度のグラフィックス処理のためのビデオ処理パイプラインを形成する。データは、バスを介してグラフィックス処理ユニット１０８からビデオエンコーダ／ビデオコーデック１１４に運ばれる。ビデオ処理パイプラインは、テレビまたは他のディスプレイに送出するために、データをＡ／Ｖ（オーディオ／ビデオ）ポート１４０に出力する。メモリコントローラ１１０は、ＲＡＭ（ランダムアクセスメモリ）など、ただしそれだけに限定されない様々なタイプのメモリ１１２にプロセッサが円滑にアクセスできるように、ＧＰＵ１０８に接続されている。
【００１５】
マルチメディアコンソール１００は、入出力コントローラ１２０、システム管理コントローラ１２２、オーディオ処理ユニット１２３、ネットワークインターフェースコントローラ１２４、第１のＵＳＢホストコントローラ１２６、第２のＵＳＢコントローラ１２８、およびフロントパネル入出力サブアセンブリ１３０を含み、それらはモジュール１１８上で実装されることが好ましい。ＵＳＢコントローラ１２６および１２８は、周辺装置コントローラ１４２（１）〜１４２（２）、ワイアレスアダプタ１４８、および外部メモリ装置１４６（たとえば、フラッシュメモリ、外部ＣＤ／ＤＶＤ  ＲＯＭドライブ、リムーバブルメディアなど）に対してホストとして働く。ネットワークインターフェース１２４および／またはワイアレスアダプタ１４８は、ネットワークへのアクセス（たとえば、インターネット、ホームネットワークなど）を提供し、イーサネット（登録商標）カード、モデム、ブルートゥースモジュール、ケーブルモデムなどを含む、広範囲の様々な有線または無線のインターフェース構成要素のどれでもよい。
【００１６】
不揮発性メモリ１４３、たとえばフラッシュメモリが、ブート処理時にロードされるアプリケーションデータを記憶するために設けられている。メディアドライブ１４４が設けられており、それにはＤＶＤ／ＣＤドライブ、ハードドライブ、または他のリムーバブルメディアドライブなどが含まれ得る。メディアドライブ１４４は、マルチメディアコンソール１００の内部にあっても外部にあってもよい。アプリケーションデータは、実行、再生などのために、マルチメディアコンソール１００によりメディアドライブ１４４を介してアクセス可能である。メディアドライブ１４４は、シリアルＡＴＡバスまたは他の高速接続（たとえばＩＥＥＥ１３９４）などのバスを介して、入出力コントローラ１２０に接続されている。
【００１７】
システム管理コントローラ１２２は、マルチメディアコンソール１００の可用性を確保することに関係する様々なサービス機能を提供する。オーディオ処理ユニット１２３およびオーディオコーデック１３２は、高忠実度ステレオ処理に対応するオーディオ処理パイプラインを形成する。オーディオデータは、オーディオ処理ユニット１２３とオーディオコーデック１３２の間を、通信リンクを介して運ばれる。オーディオ処理パイプラインは、オーディオ機能を有する外部のオーディオプレーヤまたは装置による再生のために、データをＡ／Ｖポート１４０に出力する。
【００１８】
フロントパネル入出力アセンブリ１３０は、電源ボタン１５０およびイジェクトボタン１５２、ならびに任意のＬＥＤ（発光ダイオード）またはマルチメディアコンソール１００の外面に出ている他のインディケータの機能をサポートする。システム電源モジュール１３６は、マルチメディアコンソール１００の構成要素に電力を供給する。ファン１３８は、マルチメディアコンソール１００内の回路を冷却する。
【００１９】
ＣＰＵ１０１、ＧＰＵ１０８、メモリコントローラ１１０、およびマルチメディアコンソール１００内の他の様々な構成要素は、シリアルバス、パラレルバス、メモリバス、周辺バス、および様々なバスアーキテクチャのうち任意のものを使用するプロセッサバスまたはローカルバスを含めて１本または複数のバスを介して相互接続されている。
【００２０】
マルチメディアコンソール１００の電源が入ると、アプリケーションデータを、不揮発性メモリ１４３からメモリ１１２および／またはキャッシュ１０２、１０４にロードし、ＣＰＵ１０１上で実行することができる。アプリケーションは、マルチメディアコンソール１００上で利用可能な様々なメディアタイプに移行する際に、一貫したユーザ経験を提供するグラフィカルユーザインターフェースを提示することができる。動作にあたっては、メディアドライブ１４４内に含まれるアプリケーションおよび／または他のメディアを、メディアドライブ１４４から立ち上げまたは再生して、マルチメディアコンソール１００に追加機能を提供することができる。
【００２１】
単にこのシステムをテレビまたは他のディスプレイに接続するだけで、マルチメディアコンソール１００をスタンドアローンシステムとして動作させることができる。このスタンドアローンモードでは、マルチメディアコンソール１００によって、１人または複数のユーザが、システムと対話し、映画を見、または音楽を聴くことができるようになる。しかし、マルチメディアコンソール１００をさらにネットワークインターフェース１２４またはワイアレスアダプタ１４８を介して広帯域接続の統合が利用可能になれば、より大きなネットワークコミュニティへの参加者として動作させることができる。
【００２２】
図２は、システムの様々な構成要素を統合して、コード改変、リバースエンジニアリング、改ざんなどを防止するセキュリティ機能を提供する、図１のシステムのさらなる態様を示している。統合装置２０は、ＣＰＵ１０１、ＭＭＵ１０３、キャッシュ１０４、セキュリティエンジン１０５、およびバスインターフェース１０７を備える。様々な構成要素がアドレスバス２８およびデータバス２６を介して相互接続されている。ＭＭＵ１０３は、ＣＰＵ１０１の必要に応じてキャッシュライン（たとえば２２）が確実にキャッシュ１０４において出し入れされるように、キャッシュ１０４に記憶されている記憶内容を制御する。キャッシュ１０４に記憶されているデータは、ＣＰＵ１０１によって操作され、したがって平文（ｃｌｅａｒ）として記憶される。本発明の一態様によれば、キャッシュラインがシステムメモリ１１２に記憶されるとき、データはセキュリティエンジン１０５を通過し、メモリ１１２との間を行き来する際にそれを暗号化および復号化することができる。図２では、キャッシュライン２２がキャッシュ１０４内にある間は平文として記憶されているが、メモリ１１２に記憶される際にはキャッシュライン２２’として暗号化されることを示している。
【００２３】
システムメモリ１１２は、信頼できないと見なされている。すなわち、システムメモリは、攻撃者によって損なわれ、その内容全体が明らかにされ改変される可能性がある。さらに、バスインターフェース１０７をシステムメモリ１１２に接続しているアドレスバスおよびデータバス２８、２６が監視される可能性もある。一方、統合装置２０は安全であると見なされている。装置２０の内部にあるバス２８、２６を監視することはできない。キャッシュ１０４はセキュリティエンジン１０５とＣＰＵ１０１の間にあり、やはり信頼できると見なされている。下記でより詳しく述べるように、キャッシュ１０４からシステムメモリ１１２への書込みはすべてセキュリティエンジン１０５によってセキュリティ保護される。システムは、システムＲＡＭ１１２に加えて、信頼できると見なされている安全なメモリ２３も含む。この安全なメモリ２３は、そのバス２８、２６が監視されるのを防止するために、統合装置２０の内部にあることが好ましい。
【００２４】
メモリ管理ユニット１０３は、ＣＰＵ１０１が効率よく動作し続けられるように、必要なデータが確実にキャッシュ１０４に存在するようにするタスクを扱う。そのために、必要とされる命令およびデータがメモリ１１２にあるとき、ＭＭＵ１０３は、キャッシュ１０４との間でデータを交換する。本発明の一態様によれば、セキュリティエンジン１０５は、キャッシュ１０４とシステムメモリ１１２の間を移動すべきデータに適用すべきセキュリティのレベルを決定する。たとえば、セキュリティ保護されたキャッシュライン２２’としての、キャッシュライン２２のメモリへの移動である。
【００２５】
システムメモリ１１２に移動するキャッシュ１０４のあらゆるラインは、それ自体にセキュリティが適用されることが潜在的に可能なので、システム全体への重大な性能の打撃を避けるためにセキュリティが可能な限り迅速に適用されることが重要である。言い換えれば、信頼できないシステムメモリ１１２に書き込まれたデータにセキュリティを提供することが望ましいが、そうしたセキュリティ追加の代償として重大な性能低下をまねくことは望ましくない。本発明の一態様は、アドレスバスを使用して、セキュリティの適用を制御するための効率的な機構を提供するものである。そのために、システム例で使用されているメモリ管理方式が、セキュリティの適用を決定するのにアドレス機構がどのように使用されるのかを理解するのに有用である。一般に、メモリ管理は、プログラムアドレス空間を物理アドレス空間に変換する様々なアドレス方式を利用する。ＰｏｗｅｒＰＣシステムで使用されているこうしたアドレス方式の１つでは、有効アドレスから実アドレスへの変換を使用する。図３は、ＰｏｗｅｒＰＣ環境で実施されるアドレス変換を説明する助けとなる。異なるプロセッサ環境では、適宜他のアドレス方式を使用することができる。
【００２６】
図３を参照すると、有効アドレス３０２は、セグメントルックアサイドバッファ（ｓｅｇｍｅｎｔ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）３０４や変換ルックアサイドバッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）３０８など１つまたは複数のアドレス変換テーブルを用いて実アドレス３１０に変換される。プログラムは一般に、連続したアドレス空間（有効アドレス空間と呼ばれる）で動作するが、物理アドレス空間は複数のアプリケーションを収容し、それらによって共用されなければならない。したがって、物理アドレス空間はシステムによって管理され、任意の数の様々なプログラムまたはプログラムの一部分を含むことができる。様々なプログラムの必要性を満たすために、あるシステムでは、プログラムが、連続して見えるがそのプログラムおよびデータの物理的な位置を追跡するメモリ管理ユニットによって管理されているアドレス空間で動作することができる。プログラムはいわゆる有効アドレス空間で動作する。有効アドレス空間は、仮想アドレス空間（すなわちプログラムのすべてを同時に収容することができるアドレス連続体）に変換される。
【００２７】
有効アドレスは、命令フェッチまたはデータアクセスのためにＣＰＵ１０１によって生成されるアドレスである。アドレス変換機構は、その有効アドレス３０２を実アドレス３１０に変換しようと試みる。次いで実アドレス３１０は、メモリ１１２をアクセスするのに使用される。アドレス変換の第１ステップは、有効アドレス３０２を仮想アドレス３０６に変換することである。第２のステップは、仮想アドレス３０６を実アドレス３１０に変換することである。図４は、有効アドレス３０２から仮想アドレス３０６に変換するプロセスをさらに詳細に示している。セグメントルックアサイドバッファ（ＳＬＢ）３０４は、有効セグメントＩＤ（Ｅｆｆｅｃｔｉｖｅ  Ｓｅｇｍｅｎｔ  ＩＤ：ＥＳＩＤ）４０２と仮想セグメントＩＤ（Ｖｉｒｔｕａｌ  Ｓｅｇｍｅｎｔ  ＩＤ：ＶＳＩＤ）４１０の間のマッピングを指定する。ＳＬＢ３０４のエントリの数は実装に依存する。ＳＬＢ３０４の内容は一般にオペレーティングシステムによって管理される。テーブル３０４の各ＳＬＢエントリは、１つのＥＳＩＤ４０２を１つのＶＳＩＤ４１０にマッピングする。その場合、ＶＳＩＤが仮想アドレス３０６の上位ビットを構成する。残りの下位ビット、ページアドレス情報４０４およびバイトアドレス情報４０６は、有効アドレス３０２から仮想アドレス３０６に直接マッピングされる。
【００２８】
アドレス変換の第２ステップは、仮想アドレスを実アドレスに変換することである。仮想アドレスから実アドレスへの変換にはページテーブル３０８’を使用する。概念的には、あらゆる参照を変換するために、ページテーブル３０８’がアドレス再配置ハードウェアによって探索される。性能上の理由により、ハードウェアは通常、最近使用されたページテーブルエントリを保持する変換ルックアサイドバッファ（ＴＬＢ）３０８を維持する。ページテーブル３０８’を探索する前にＴＬＢ３０８を探索する。あるいは、ページテーブルは、テーブルではなく、必要に応じてＴＬＢエントリを生成するアルゴリズムでもよい。この構成では、アドレス変換がＴＬＢ３０８中に見つからない場合は、１つまたは複数のＴＬＢエントリを生成し、それを使用してＴＬＢ３０８中のエントリを更新することができる。
【００２９】
図５は、仮想アドレスから実アドレスへのマッピングについてさらに詳細に示している。ページテーブル３０８’（上述の通りこのページテーブルの一部分はＴＬＢ３０８にキャッシュされる）は、仮想ページ番号と実ページ番号の間のマッピングを指定する可変サイズのデータ構造である。一般にページテーブル３０８’のサイズは４ＫＢの倍数であり、その開始アドレスはそのサイズの倍数であり、アクセスが制限された記憶域に配置されている。すなわちページテーブルはオペレーティングシステムからのみアクセス可能である。ＶＳＩＤ４１０および仮想ページ番号４０４は、ページテーブル３０８’に対するインデックスを形成する。その場合、ページテーブル３０８’は対応する実ページ番号５０２を有する。実ページ番号５０２は、実アドレスの上位ビットを形成する。バイトアドレス情報４０６は仮想アドレス３０６から直接変換される。
【００３０】
図６は、仮想ページ番号から実ページ番号へのマッピング動作を示している。仮想ページ番号３０６は、対応するページテーブルエントリ６０２を検索するために使用される。各ページテーブルエントリ、たとえば５０２ａ、５０２ｂ、５０２ｃは、実ページ番号およびページ保護ビット６０４を含む。ページ保護ビット６０４は、たとえばページの読取り、書込みなどができるかどうかを示す。ページテーブルエントリの上位２６ビット（すなわち０〜２５）は、実ページ番号５０２を形成する。これらの上位ビットは、実ページアドレスを形成することに加えて、このページのセキュリティレベルを示すこともできる。具体的に言うと、ビット０〜１１（ビット６０６）中の様々なビットは、ページが暗号化されているか、保護されているか、あるいはそのどちらでもないかを指示する。さらに、これらのビットは、メモリのページを暗号化し保護するための他の情報を提供する。実ページ番号に記憶されセキュリティビットを含む情報は、アドレス３１０の一部分を形成する。
【００３１】
図７に移ると、本発明の一態様によるセキュリティシステムがさらに示してある。図７は、セキュリティシステムによって実施される機能のいくつかを示すブロック図を示している。ただし、実装形態の態様は様々である。たとえば、判断ボックス７１８は論理回路として実装することができる。他の特徴も様々な方式で実装することができる。いずれにせよ、この図は、本発明の諸態様によって実施される一般的な機能を示すのに役立つ。
【００３２】
先に指摘したように、ビット０および１は、アドレスされた位置が保護されているのか、それとも暗号化されているのかを示す。本発明の例示的実施形態では、単一のページテーブルエントリが単一ページ内のすべてのメモリアドレスによって共用されているので、保護はページレベルで制御される。したがって、それらのメモリ位置はすべて同一のセキュリティレベルに属する。ビット０が設定されると保護が使用可能になる。同様に、ビット１が設定されると暗号化が使用可能になる。
【００３３】
暗号化が使用可能でない場合は、ゲート７２２が使用可能に、ゲート７２０が使用禁止になり、データ７００は平文ブロック７２４としてメモリ１１２に記憶される。一方、暗号化が使用可能になっている場合は、データ７００は平文ブロック７２６として暗号化エンジン７１４に入る。セキュリティエンジン状態７１０、たとえば暗号化キーなどが、暗号化エンジン７１４によって適用されて暗号文ブロック７２６’が作成される。適用される暗号化技法は、ＡＥＳまたはその何らかの変形など周知の暗号化アルゴリズムのどれでもよい。重要な点は、暗号化エンジンが、ページテーブルに記憶されているアドレス情報によって駆動されることである。したがって、メモリのページを、アドレス情報を介して直接暗号化されるように設定することができる。
【００３４】
保護が使用可能な場合は（暗号化されることもされないこともある）、安全なメモリのオフセットが決定されデータのハッシュも使用可能になる。安全なメモリのオフセットは、アドレス情報の組合せとすることができる。この場合、たとえば、上位ビット、たとえばビット３〜８に記憶されているビットが、下位ビット２６〜３４と組み合わされて安全なメモリ中へのオフセットが提供される。このオフセットは、インテグリティチェック値を安全なメモリ内のどこに記憶しなければならないかを示す。安全なメモリのオフセットに加えて、ハッシュ関数がデータ７００に適用される。ハッシュは、暗号文、平文、またはその両方の関数であってよい。具体的なハッシュ関数は安全なハッシュ関数でよく、データ７００の関数であるがサイズが縮小されたどのようなハッシュ関数でもよい。計算されたハッシュ７２８は、安全なメモリ７１６内の、安全なメモリのオフセット７１２で示される位置に記憶される。その後、データ（暗号文７２６’または平文７２４としての）がメモリ１１２（安全でないメモリ）に記憶されるとき、ハッシュ値を使用してそのデータがメモリ１１２内で改変されたかどうかを判定することができる。ハッシュ値は、データがメモリ１１２から取り出される際に再計算され、整合性を判定するために記憶されているハッシュ値と比較される。値が整合しない場合は、データがメモリ１１２に記憶されている間に無許可の変更を受けたことを示していることになる。
【００３５】
図８は、暗号化および／または保護されたデータをメモリ１１２から取り出すという逆の動作を示している。この場合、暗号化された７２６’  または平文７２４いずれかのデータが、メモリ１１２から取り出される。この場合も、実アドレスの上位ビットが、適用すべきセキュリティのタイプを指示する。ビット１がセットされている場合、データは暗号文として（すなわち、データは以前に暗号文として記憶されていた）ゲート８２０を通過する。ビット１がセットされていない場合は、平文７２４がゲート８２２を通過し、キャッシュ１０４に記憶される。また、セットされたビット１で指示される暗号文７２６’が、復号化エンジン７１４に送り込まれ、そこで平文７２６に復号化されキャッシュ１０４に記憶される。
【００３６】
保護ビット０がセットされている場合、メモリ１１２から取り出されたデータのハッシュ値８０２が計算される。この例では、平文７２６のデータがハッシュされるが、暗号文データ７２６’および／または平文データにハッシュ関数を適用することもできる。さらに、暗号化なしで保護方式を使用することもできる。計算されたハッシュ８０２は、安全なメモリのオフセット７１２で示される安全なメモリ７１６から取り出された記憶されているハッシュ７２８と比較される。記憶されているハッシュ７２８と計算されたハッシュが同一でない場合は、メモリが改変されたことを示すセキュリティ例外８０８が生成される。
【００３７】
図２に戻ると、バスインターフェースをシステムメモリ１１２に接続するアドレスバス２８が、メモリ１１２をアドレスするために使用される上位ビットを切り捨てることが好ましい。このアドレスは、メモリ１１２をアドレスするために使用される実アドレスなので、物理アドレスと呼ばれる。本明細書に記載の実装形態の例では、上位１２ビット（０〜１１）を切り捨てることが好ましい。そうした切り捨てによって残されたビット１２〜４１が物理アドレスを構成する。
【００３８】
本発明は、アドレスビットを利用してメモリ１１２に記憶されているデータに適用するべきセキュリティ手段を指示することにより、システムメモリ１１２に記憶されているデータの完全性およびセキュリティを確保するシステムおよび方法を提供する。セキュリティ手段は、データを特定のセキュリティ手段と関連付ける別のテーブルを必要とせず、アドレス変換テーブルに直接記憶することができる。
【００３９】
上記のシステムおよび方法は例を説明したものにすぎず、特定のアドレス方式またはプロセッサアーキテクチャが必要なことを示すものではない。そうではなく、この例は、一般にアドレスビットを使用してセキュリティ手段を決定することを示すものである。
【００４０】
後述する本発明の実施形態の諸要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれら任意の組合せによって実装することができる。ハードウェアという用語は一般に、電子的、電磁気的、光学的、電気光学的、機械的、電気機械的部品など物理構造を有する要素を指し、ソフトウェアという用語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、数式、関数、式などを指す。ファームウェアという用語は一般に、ハードウェア構造（たとえばフラッシュメモリ、ＲＯＭ、ＥＲＯＭ）で実装または実施される、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、数式、関数、式などを指す。ファームウェアの例として、マイクロコード、書込み可能な制御記憶、およびマイクロプログラム式構造がある。本発明の一実施形態の諸要素は、ソフトウェアまたはファームウェアで実装される場合、本質的に、必要なタスクを実行するコードセグメントである。ソフトウェア／ファームウェアは、本発明の一実施形態に記載の動作を実行する実際のコード、あるいはその動作をエミュレートまたはシミュレートするコードを含むことができる。プログラムまたはコードセグメントは、プロセッサまたはマシンからアクセス可能な媒体に記憶することができ、あるいは搬送波中で実施されるコンピュータデータ信号または搬送波で変調された信号により伝送媒体を介して伝送することができる。「プロセッサから読取り可能またはアクセス可能な媒体」あるいは「マシンから読取り可能またはアクセス可能な媒体」は、情報を記憶、伝送、または転送することができるどのような媒体を含むこともできる。プロセッサから読取り可能な、またはマシンからアクセス可能な媒体の例として、電子回路、半導体メモリ装置、読取り専用メモリ（ＲＯＭ）、フラッシュメモリ、消去可能ＲＯＭ（ＥＲＯＭ）、フロッピー（登録商標）ディスケット、コンパクトディスク（ＣＤ）ＲＯＭ、光ディスク、ハードディスク、光ファイバ媒体、無線周波数（ＲＦ）リンクなどがある。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、空気、電磁波、ＲＦリンクなどの伝送媒体を介して伝搬することができるどのような信号も含まれ得る。コードセグメントは、インターネット、イントラネットなどのコンピュータネットワークを介してダウンロードすることができる。マシンからアクセス可能な媒体は、製造品中で実施することができる。マシンからアクセス可能な媒体は、マシンからアクセスされたとき、後述する動作をマシンに実行させるデータを含むことができる。マシンからアクセス可能な媒体は、埋め込まれたプログラムコードを含むこともできる。プログラムコードは、後述する動作を実行するための、マシンで読取り可能なコードを含むことができる。「データ」という用語は、ここでは、マシンで読取り可能な目的で符号化されたどのようなタイプの情報も指す。したがって、それには、プログラム、コード、データ、ファイルなどが含まれ得る。
【００４１】
本発明の実施形態の全部または一部は、ハードウェア、ソフトウェア、またはファームウェア、あるいはそれらの任意の組合せによって実施することができる。ハードウェア、ソフトウェア、またはファームウェアの要素は、互いに結合されたいくつかのモジュールを有することができる。ハードウェアモジュールは、機械的、電気的、光学的、電磁気的、または任意の物理的接続により別のモジュールに結合される。ソフトウェアモジュールは、関数、手順、方法、サブプログラムまたはサブルーチンのコール、ジャンプ、リンク、パラメータ、変数、および引数の引渡し、関数からの戻りなどにより別のモジュールに結合される。ソフトウェアモジュールは、変数、パラメータ、引数、ポインタなどを受け取るために、かつ／または、結果、更新済み変数、ポインタなどを生成または引渡しするために、別のモジュールに結合される。ファームウェアモジュールは、上記のハードウェアおよびソフトウェア結合方法の任意の組合せにより、別のモジュールに結合される。ハードウェア、ソフトウェア、またはファームウェアのモジュールは、別のハードウェア、ソフトウェア、またはファームウェアのモジュールのどれに結合されてもよい。モジュールは、プラットフォーム上で走っているオペレーティングシステムと対話するためのソフトウェアドライバまたはインターフェースであってもよい。モジュールは、ハードウェア装置を構成し、セットアップし、初期化し、それとの間でデータを送受信するためのハードウェアドライバでもよい。装置は、ハードウェア、ソフトウェア、およびファームウェアのモジュールのどのような組合せを含むこともできる。
【００４２】
本発明の諸実施形態は、通常はフローチャート、フロー図、構造図、またはブロック図で示されるプロセスとして記述することができる。フローチャートは動作を逐次プロセスとして記述するが、動作の多くは、並行してすなわち同時に実施することができる。さらに、動作の順序を並べ替えることもできる。プロセスは、その動作が完了すると終了する。
【００４３】
本発明の新規な教示および利点から本質的に逸脱せずに、例示的な実施形態において多くの追加修正が可能であることも当業者には容易に理解されよう。こうしたいかなる修正も、添付の特許請求の範囲によって定義される本発明の範囲内に含まれるものである。
【図面の簡単な説明】
【００４４】
【図１】本発明の諸態様を実施することができる例示的なコンピュータ環境のブロック図である。
【図２】図１のコンピューティング環境などのコンピューティング環境に組み込まれているセキュリティエンジンを示すブロック図である。
【図３】コンピューティング環境の一例におけるアドレス空間の変換を示すブロック図である。
【図４】有効アドレスを仮想アドレスに変換する諸態様をさらに示すブロック図である。
【図５】仮想アドレスを実アドレスに変換する諸態様をさらに示すブロック図である。
【図６】コンピューティングシステムのセキュリティの特徴を指示するようにアドレスビットが設定された本発明の諸態様をさらに示すブロック図である。
【図７】メモリ内に記憶されているデータを暗号化し保護するためのセキュリティエンジンの一態様を示すブロック図である。
【図８】メモリ内に記憶されているデータを復号化し検査するためのセキュリティエンジンの一態様を示すブロック図である。
【符号の説明】
【００４５】
２３    安全なメモリ
１００  マルチメディアコンソール
１０１  中央処理装置（ＣＰＵ）
１０２  １次キャッシュ
１０３  ＭＭＵ
１０４  ２次キャッシュ
１０５  セキュリティエンジン
１０７  バスインターフェース
１０８  グラフィックス処理ユニット
１１０  メモリコントローラ
１１２  システムＲＡＭ
１１４  ビデオエンコーダ／ビデオコーデック
１２０  入出力コントローラ
１２２  システム管理コントローラ
１２３  オーディオ
１２４  ネットワークインターフェース
１２６  ＵＳＢコントローラ
１２８  ＵＳＢコントローラ
１３０  フロントパネル入出力サブアセンブリ
１３２  オーディオコーデック
１３６  システム電源モジュール
１３８  ファン
１４０  オーディオ／ビデオポート
１４２（１）  コントローラ
１４２（２）  コントローラ
１４３  不揮発性メモリ
１４４  メディアドライブ
１４６  メモリユニット
１４８  ワイアレスアダプタ
【図１】
2006065851.tif 000003
【図２】
2006065851.tif 000004
【図３】
2006065851.tif 000005
【図４】
2006065851.tif 000006
【図５】
2006065851.tif 000007
【図６】
2006065851.tif 000008
【図７】
2006065851.tif 000009
【図８】
2006065851.tif 000010