(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを有する物理的に保護された保護実行環境内で出力ページのハッシュ値から保全性検査値を、保全性検査値生成手段によって、生成するステップと、
前記出力ページの保全性検査値を、前記保護実行環境内のメモリに記憶するステップと、
暗号化／復号手段によって、前記出力ページを暗号化し、その結果として暗号化ページを生成するステップと、
前記プロセッサによって、前記暗号化ページを前記保護実行環境の外部にある記憶装置にエクスポートするステップと、
前記暗号化／復号手段によって、前記保護実行環境の外部にある情報源から入力される入力ページを復号し、その結果として復号ページを生成するステップと、
前記保全性検査値生成手段によって、前記復号ページのハッシュ値を保全性検査値として生成するステップと、
前記復号ページの保全性検査値と前記保護実行環境内のメモリに記憶されている保全性検査値とを比較するステップであって、一致する保全性検査値が存在する場合に該復号ページを前記保護実行環境内のメモリに記憶することを可能にするステップと
を含む方法。
【請求項２】
前記入力ページが、前記保護実行環境の外部にある前記記憶装置からインポートされた入力ページであり、
前記復号ページのハッシュ値を前記保全性検査値生成手段が計算によって算出する、請求項１に記載の方法。
【請求項３】
前記出力ページが対称暗号化アルゴリズムを使用して暗号化される、請求項１に記載の方法。
【請求項４】
前記出力ページがさらにランダム生成鍵を使用して暗号化される、請求項３に記載の方法。
【請求項５】
単一のアプリケーションに関係するすべてのページが同じ鍵を使用して暗号化される、請求項４に記載の方法。
【請求項６】
すべての出力ページについて異なる鍵が生成される、請求項４に記載の方法。
【請求項７】
前記鍵を記憶する記憶域を有する、請求項４に記載の方法。
【請求項８】
前記保全性検査値を保全性検査値生成手段によって生成するステップが、
前記出力ページを一方向ハッシュするステップと、
前記出力ページのハッシュ値の所定部分を前記保護実行環境内のメモリに記憶するステップとを含む、請求項１に記載の方法。
【請求項９】
前記所定部分が全ハッシュ値である、請求項８に記載の方法。
【請求項１０】
ページング・サブシステム内でセキュリテイを維持するシステムであって、
バスと、
物理的に保護された保護環境内で保護メモリに結合された保護プロセッサと、
前記保護環境の外の非保護環境内にあり、前記バスによって前記保護環境に結合された非保護記億装置と、
前記保護環境内にあり、前記パスと前記保護プロセッサとの間に結合されたインタフェースであって、
前記非保護記憶装置にエクスポートされるページ及び前記保護環境内にインポートされるページの保全性検査値を該ページのハッシュ値を求めることによって生成する保全性検査値生成手段と、
前記エクスポートされるページを暗号化するとともに前記インポートされるページを復号する暗号化／復号手段と、
前記エクスポートされるページの保全性検査値を前記保護環境内の保護メモリに記憶する記憶手段と、
前記インポートされる入力ページの保全性検査値と前記保護環境内の保護メモリに記憶されている保全性検査値とを比較して一致した保全性検査値が存在するか否かによって該入力ページを記憶するか否かを決定するための保全性検査を行う比較手段と
を備えたインタフェースと、
前記エクスポートされるページの記憶場所を示すページ場所識別子と該ページの保全性検査値を記憶する記憶場所を指すポインタとを記億したページ・テーブルであって、該ページがエクスポートされた場合であってもそのページを探すことができるよう、前記保護環境からエクスポートできるページ・テーブルと
を含むシステム。
【請求項１１】
ページの非保護環境装置への前記エクスポートに応答して、前記保護メモリに前記保全性検査値生成手段によって生成された当該ページの一方向ハッシュ値の所定部分が記憶される、請求項１０に記載のシステム。
【請求項１２】
前記インタフェースが、
前記バスに結合され、暗号鍵を生成する乱数発生器をさらに含む、請求項１０に記載のシステム。
【請求項１３】
前記インタフェースからエクスポートされた各ページに対応する鍵を記憶する鍵記憶域をさらに含む、請求項１２に記載のシステム。
【請求項１４】
前記暗号化／復号手段が対称暗号化アルゴリズムを実施する、請求項１０に記載のシステム。
【請求項１５】
前記暗号化／復号手段が対称暗号化／復号手段である、請求項１０に記載のシステム。
【請求項１６】
前記暗号化／復号手段が非対称暗号化／復号手段である、請求項１０に記載のシステム。
【請求項１７】
前記保護環境が単一チップ上にある、請求項１０に記載のシステム。
【請求項１８】
前記バスに結合された非保護ホスト・プロセッサをさらに含む、請求項１０に記載のシステム。
【請求項１９】
保護環境内で使用するためにソフトウェアをインストールする方法であって、
乱数発生器を使用して暗号鍵を生成するステップと
プロセッサにより、インストールすべきソフトウェアを記憶している記憶手段から前記保護環境内に該インストールすべきソフトウェアのページを読み込むステップと、
保全性検査値生成手段により、該読み込まれたページをハッシュして保全性検査値を生成するステップと、
前記保護環境内のメモリに前記生成された保全性検査値を記憶するステップと、
前記暗号鍵を使用して前記読み込まれたページを、暗号化／復号手段により、暗号化するステップと、
前記読み込まれたページを暗号化された状態で、前記プロセッサにより、前記保護環境の外の記憶装置にエクスポートするステップと、
前記暗号化／復号手段により、前記保護環境の外の記憶装置から入力される入力ページを復号するとともに前記保全性検査値生成手段によりハッシュして該入力ページの保全性検査値を得、この保全性検査値と先に記憶した保全性検査値との比較であって、一致する保全性検査値が存在する場合に前記入力ページを前記保護環境内のメモリに記憶することを可能にするステップと
を含む方法。
【発明の詳細な説明】
発明の背景
（１）発明の分野
本発明は、非保護環境におけるデータ保護に関する。より詳細には、本発明は、保護環境内で使用されるデータおよびプログラムのセキュリティを危険にさらすことなく保護環境内におけるメモリ資源消費を扱うことに関する。
（２）関連技術
資源消費、特にメモリ消費は、コンピュータ・システムにおける一般的な問題である。プログラム用ランダム・アクセス・メモリ（ＲＡＭ）は、コストと空間の両方によって必然的に制約される。プロセッサによって現在アクセスされていないプログラムとデータを保持するために、ハード・ディスク・ドライブ、磁気テープなどの外部メモリ装置が使用される。仮想メモリは、これらの外部メモリ装置を使用して、ＲＡＭの物理メモリ制約を改善し、現在必要なすべてのコードおよびデータを保持するのに十分な空間がＲＡＭ内で使用可能であるという見かけを作り出している。仮想メモリは、ページ・ディレクトリとページ・テーブルとページ・フレームとに基づく階層構造を有する。ページ・フレームは、使用可能なコードまたはデータのブロックを含む。ブロックのサイズは、設計上の考慮事項によって決まる。既存のシステムにおける１つの一般的なページ・フレーム・サイズは、４キロバイトである。したがって、そのようなシステムにおいて外部メモリからＲＡＭに移動可能な最小サイズ・ブロックは４Ｋブロックである。ページ・テーブルには、複数のページ・フレームの基底アドレスが入っている。ページ・テーブルは、ページ・フレームと同じサイズであり、同様に外部メモリにページ・アウトすることができる。
ページ・ディレクトリはページ・テーブルと類似しているが、複数のページ・テーブルの基底アドレスが入れられる点が異なる。一般には、内部メモリ内に保持され、ページ・アウトされない。ページ・ディレクトリの基底アドレスは、内部ＣＰＵ制御レジスタ内に保持される。ページング・システムの機能は、一般に当技術分野で周知である。
また、物理的に保護された環境を作り出すことも可能である。たとえば、物理的に保護された環境を作り出す１つの厳格な方法は、保管庫から外部記憶装置まで延びる配線を備えた保管庫にＣＰＵとそのＲＡＭを収容することであろう。これによってその保管庫内には保護された環境ができるが、外部メモリにページアウトされたデータは容易に危険にさらされる。さらに、たとえばより大きな保管を必要とするなど、物理的に保護された環境を維持するコストと空間の両方の問題が大きくなるため、保護環境における資源消費問題が悪化する。
上記に鑑みて、保護環境のメモリ容量を超えるプログラムおよびデータの置換攻撃および変更攻撃に対する妥当なセキュリティを保証することができることが望ましいであろう。
発明の簡単な概要
物理的に保護された環境から外部記憶装置にページされるページの保全性と機密性を維持する方法およびシステムを開示する。物理的に保護された環境から保護されていない環境にエクスポートするために出力ページを選択する。その出力ページのために保全性検査値を生成し、記憶する。一実施態様では、これは、周知の一方向ハッシュ関数を使用してページの一方向ハッシュを得る形態をとる。次に、暗号法的に強力な暗号化アルゴリズムを使用して出力ページを暗号化する。本発明の一実施態様で使用可能なアルゴリズムの中には、ＩＤＥＡやＤＥＳが含まれる。次に、暗号化された出力ページを外部記憶装置にエクスポートする。暗号化および保全性検査により、非保護環境において出力ページ上のデータのセキュリティが維持される。
【図面の簡単な説明】
第１図は、本発明の一実施形態のシステムを示すブロック図である。
第２図は、本発明の他の実施形態を示すブロック図である。
第３図は、本発明の一実施形態におけるソフトウェアのインストールを示すフローチャートである。
第４ａ図は、本発明の一実施形態の保護環境において使用するためにインストールされたソフトウェアを示す図である。
第４ｂ図は、本発明の一実施形態のページ・ディレクトリ／ページ・テーブル項目を示す図である。
第５ａ図および第５ｂ図は、インストール完了後の本発明の一実施形態におけるページング操作を示すフローチャートである。
発明の詳細な説明
第１図に、物理的に保護された環境１がバス７によって非保護環境２、詳細には外部記憶装置４に結合された、本発明の一実施形態を示す。この物理障壁を設ける様々な方法は一般に当技術分野で周知であり、これには、改竄防止包装材、改竄防止ダイ被覆、および改竄防止ウエハ被覆などがある。物理的セキュリティを維持する他の方法も開発中である。そのような２つの例については、「ＳＥＣＵＲＥ  ＳＥＭＩＣＯＮＤＵＣＴＯＲ  ＤＥＶＩＣＥ」という名称の同時係属特許出願第０８／５７５２９８号および「ＭＥＴＨＯＤ  ＴＯ  ＰＲＥＶＥＮＴ  ＩＮＴＲＵＳＩＯＮＳ  ＩＮＴＯ  ＥＬＥＣＴＲＯＮＩＣ  ＣＩＲＣＵＩＴＲＹ」という名称の第０８／４１２１５９号に記載されており、両者とも本出願の譲受人に譲渡されている。
この物理保護環境１は、バス１７によってランダム・アクセス・メモリ（ＲＡＭ）１４に結合されたプロセッサ１６を含む。バス１７は、たとえばブリッジ・ユニットとすることができるバス・インタフェース・ユニット１９によって、バス７から電気的に分離されており、保護環境内になければならない。第１図に示すように、任意選択のフラッシュ・メモリ１５を設けてバス１７に結合することができる。フラッシュ・メモリは、秘密情報の長期記憶に使用され、その一部は保護環境内で可動しているアプリケーションに割り振ることができる。さらに、一実施形態では、フラッシュ・メモリには保護プロセッサ１６のためのリアル・タイム・カーネルが記憶される。これによって、すべての基本操作を（能動的または受動的）外部介入なしに実行することができ、本明細書に記載のセキュリティ・サービスを介したカーネルへの移動と比較してパフォーマンスが向上する。
保護環境は、データ・セキュリティ・サービスも備える。これについては、保全性検査エンジン１３が保護環境１と非保護環境２との間のデータ・ページングの一方向ハッシュを実行する。これによって、後述する保全性サービスが提供される。保護環境１からデータをページ・アウトする場合、後でデータのそのページをページ・バックするときの比較のために、保全性検査エンジン１３またはその一部から一方向ハッシュ値が保護環境内に保全性検査値（ＩＣＶ）として記憶される。暗号化／復号エンジン１２が、外部記憶装置４または保全性検査エンジン１３に送る前にそれぞれ、インタフェースにおいて出力ページを暗号化し、入力ページを復号し、それによって機密性サービスを提供する。乱数発生器１８がバス１７に結合され、暗号化エンジン１２のためのキーイング材料を生成する。入力ページが暗号化エンジン１２によって復号され、保全性検査エンジン１３に渡され、保全性検査エンジン１３は入力ページの一方向ハッシュ値を計算する。このハッシュ値からＩＣＶが導き出され、そのページに対応するＩＣＶに事前に記憶されていたＩＣＶと比較される。ＩＣＶが一致する場合、そのページは保護されたＲＡＭ１４に入れることができる。
ページ・インおよびページ・アウトは、一般に待ち時間を伴い、ページ・フォールトがある場合はセキュリティ・サービスによって待ち時間が増えるため、暗号化エンジン１２と保全性検査エンジン１３は専用ハードウェアとして実施することが望ましい。しかし、いずれか一方または両方のエンジンをソフトウェアとして実施することも本発明の範囲および企図に含まれる。さらに、パフォーマンス上の理由から、暗号化エンジンは対称暗号化を実施することが好ましい。対称暗号化のための鍵は、セキュリティ・レベルが同じ場合、非対称暗号化の鍵よりもはるかに短くなる傾向がある（たとえば典型的な対称鍵は約５６ビット〜１２８ビットであるのに対し、非対称鍵は５１２ビットを超える傾向がある）。これは、鍵の記憶空間が限られるメモリ制約の厳しい環境では特に重要である。対称暗号化は、一般には非対称暗号化よりも数桁高速である。２つのこのような対称暗号化方式はＩＤＥＡおよびＤＥＳである。その他の暗号法的に強力な暗号化アルゴリズムも、本発明の範囲および企図から逸脱することなく等しく使用可能である。一方向ハッシュ関数は一般に当技術分野で周知である。そのような２つの受容可能なハッシュ関数はＳＨＡ−１およびＭＤ５であるが、他のハッシュ関数も本発明の範囲および企図から逸脱することなく使用可能である。
第２図に、保護環境２０内に追加のサービスを有する本発明の他の実施形態を示す。この実施形態では、保護環境２０は、当技術分野で周知の物理セキュリティ技法を使用して単一チップとして実装される。この物理的に保護されたチップは、マザーボード３０上にあり、ホスト・プロセッサ２６およびホストＲＡＭ２５とバス７を共用する。保護環境バス１７はシステム・バス７からバス・インタフェース・ユニット１９によって電気的に分離される。プロセッサ１６とホスト・プロセッサ２６は両方とも、たとえばパーソナル・コンピュータのハード・ディスクである外部記憶装置４にページ・フレームをページ・アウトする。一実施形態では、保護プロセッサ１６は、１Ｋ増分単位でページングするのに対し、ホスト・プロセッサ２６は４Ｋ増分単位でページングする。保護ＲＡＭ１４は小さい（たとえば１２８Ｋ）ため、メモリ消費が大きな問題でない場合には、一般的に使用されるよりも小さいページ・サイズを使用することが望ましい。そのためには、保護環境２０では１Ｋページ・サイズが望ましいことがわかっている。したがって、プロセッサ１６は、１Ｋページを使用するように設計される。ホスト・プロセッサ２６は、外部メモリ４に記憶されているプロセッサ１６のページを１Ｋデータ・ブロックとして扱う。
保護環境２０は、バス１７に結合された非対称暗号化エンジン２２と対称暗号化エンジン２３の両方を含む。前述のように、バス・インタフェース・ユニット１９が保護環境内にあり、バス１７を非保護環境内に延びるシステム・バス７から電気的に分離する。対称エンジン２３は、機密性サービスの好ましい提供機構であり続ける。非対称エンジン２２は、インストール中にディジタル署名を検証するために使用され、一般に保護環境をより堅固にする。インストールについては後述する。第１図の保護環境１および第２図の保護環境２０は、これらの実施形態間で交換可能であることを認識することが重要である。
一実施形態では、暗号化エンジンは一度に８バイトの暗号化を実行し、保全性検査エンジンは一度に５１２バイトをハッシュする。このような実施形態では、適正なデータ・フローを保証するために、ＦＩＦＯまたは他の何らかの従来のバッファ機構を暗号化エンジンの一部として設ける。それぞれのエンジンのデータ・フロー速度を考えて必要なバッファの容量およびタイプを決定するのは当業者の能力の範囲内にある。
ある時点で、保護環境にソフトウェアをインストールしなければならない。このような「既製の」ソフトウェアは、当然ながら保護環境内で使用される方式では暗号化されていない。典型的には、ソフトウェアはディジタル署名を有し、ディジタル署名検証が保護環境内でサポートされている機能である場合、それを使用してインストールされるソフトウェアの信用性を検証することができる。第３図に、保護システムにおけるプログラムのインストールのフローチャートを示す。機能ブロック１２０で、インストールするアプリケーションのために鍵が生成され、初期設定ベクトルが生成される。鍵の生成は、ランダム・ビットを生成する乱数発生器を使用して行うことができる。所望の鍵の長さに達するまでランダム・ビットを収集する。一実施形態では、乱数発生器は、３２ビットの出力レジスタを有する。プロセッサ１６は、完全な鍵のために十分なランダム・ビットを収集するのに必要な回数だけレジスタを読み取る。鍵は、各アプリケーションについて１つの鍵で生成することができる。すなわち、１つのアプリケーションに付随するすべてのコード・ページおよびデータ・ページが同じ鍵を共用する。ページ間で共用される鍵に関する１つの問題は、たとえば、２つのデータ・ページが同じ内容を有する場合、それらのページは一般に同じ暗号化値に暗号化されることになることである。しかし、この鍵に加えて、初期設定ベクトル（ＩＶ）が暗号化の結果をもたらす。ＩＶは、暗号同期化を行うために一般的に使用される。鍵を修正するようにこのＩＶを修正することによって、結果の暗号化値が変わる。このシステムは、それ自体にメッセージを有効に送るため、暗号化エンジンのための秘密ＩＶを持つことができる。秘密ＩＶを使用し、たとえばページ番号をオフセットとして使用することによって、ページごとに異なる暗号化データが保証される。別法として、ページごとに別の鍵を生成することもできる。これによって、鍵の記憶専用に必要な記憶域は増えるが、暗号化の強度が鍵に帰属し、１つの鍵の下で暗号化されるデータのサンプルが小さいほどデータが暗号解読に対して堅固になるため、データのセキュリティを向上させることができる。
機能ブロック１２１で、インストール・ディスクから１ページの情報が取り出される。第１図または第２図のバス７は、たとえばそのようなインストール・ディスクが入ったディスク・ドライブ（図示せず）またはインターネットなどのその他の情報源に結合される。機能ブロック１２２で、入力ページがハッシュされ、そこからＩＣＶが生成されて記憶される。システムは、ページごとのハッシュ値だけでなく、インストールするソフトウェアの全体的ハッシュ値も生成する必要がある。ページがハッシュされ、その結果のＩＣＶが生成された後、機能ブロック１２３で、ページ・テーブルに項目が加えられる。ページ・テーブル項目は、外部記憶域内のページを探し出せるようにするページ場所識別子を含み、そのページに対応するＩＣＶを指すソフトウェア・ポインタも含めることができる。これについては、第４ｂ図を参照しながら後述する。これは、ページ・テーブルが前もって作成されていることを前提とする。ページ・テーブルの作成は、一般に当技術分野で周知である。ページ・テーブルにページ・フレームを割り振る２つの選択肢について以下に述べる。
鍵が生成され、暗号化エンジンに送られると、暗号化エンジンは前もってハッシュされたページを機能ブロック１２４で暗号化する。機能ブロック１２４で暗号化されたページは、機能ブロック１２５で外部記憶装置４にエクスポートされる。このようにして、インストールされるページは、インストールが完了した後でページ・インされるまで、保護ＲＡＭ１４には入っていない。判断ブロック１２６で、インストール・ディスクまたはその他の情報源から最後のページが取り出されたどうかを判断する。取り出されていない場合、機能ブロック１２０で他のページを取り出すために戻ることによって、インストールが続けられる。最後のページが取り出された場合、判断ブロック１２７で、システムがディジタル署名の検証を必要とするか否かに応じて暗黙的決定が示される。そのような検証を必要とする場合、機能ブロック１２８で、非対称エンジンを使用し、ディジタル署名が復号される。取り出されるソフトウェアの作成元によって生成された結果の全体的ハッシュ値を、算出された全体的ハッシュ値と比較して、インストールされたソフトウェアについて有効なディジタル署名が存在するか検証する。ディジタル署名は典型的には、非対称鍵の秘密部分を使用して暗号化されたインストール・ディスク上のコード全体の一方向ハッシュである。検証のために、非対称エンジンは、この署名を非対称鍵の公開部分を使用して復号することができるようにする。判断ブロック１２９で、署名が真正である場合、機能ブロック１３２でインストールは完了したと見なされる。署名が真正でない場合、機能ブロック１３１で、インストールは拒否され、機能ブロック１３２で、割り振られた外部記憶空間が他の用途のために解放される。システムまたはユーザは、方針として、すべてのソフトウェアがインストールのための署名を有することを要求しない場合もある。したがって、そのようなシステムでは、ソフトウェアをインストールしようとする試みは有効であるものと仮定され、判断ブロック１２７の後、インストールは機能ブロック１３０で完了したものと見なされる。
本発明の一実施形態は、ページ・ディレクトリが常に保護ＲＡＭ１４にあり、ページ・テーブルが各アプリケーションに関連づけられる、ページング階層を使用する。ページ・テーブルは、アプリケーションが使用中でないときにページ・アウトすることができる。たとえば、ディジタル署名の検証時、他のページとまったく同様にページ・テーブル自体をページ・アウトすることができる。ページ・アウト・プロセスについては、第５図を参照しながら以下で詳述する。
他の実施形態では、ページ・ディレクトリとページ・テーブルの両方が（仮想メモリ・サイズ全体について）、保護ＲＡＭ内に保持される。したがって、インストール時、ページは外部記憶域にエクスポートされる前に、それらのページ・テーブルにマップされる（たとえば複数のアプリケーションが１つのページ・テーブルを共用することができる）。他方の実施形態では、まずページ・テーブルをページ・インしてからでなければ必要なページ・フレームを識別してページ・インすることができないのに対し、必要なページのみがセキュリティ・サービスを通過すれば済むため、これによってアプリケーション始動時の待ち時間が短縮される。しかし、メモリ制約のためにこの実施形態が不可能な場合もある。ページ・アウトすることができる単一のページ・テーブルを複数のアプリケーションに共用させることも、本発明の範囲および企図に含まれる。しかし、これによって、（各アプリケーションではなく各ページに鍵が割り当てられない場合）暗号鍵の割当てが複雑になり、ページ・テーブルを共用する第２およびそれ以降のアプリケーションのインストール時に、外部メモリからそのようなページ・テーブルを取り出す必要が生じる可能性がある。
第４ａ図に、４つのソフトウェア１４０、１５０、１６０、１７０（ソフトウェアはコード・ページとデータ・ページの両方を含むものと想定されている）が保護環境を介してインストールされ、ＰＣホストのハード・ディスクとすることができる外部記憶装置４に記憶されている一例を示す。４つのソフトウェアのうちの３つのソフトウェア１４０、１６０、１７０が物理的に保護されたメモリ内にアクティブ・ページを有する。一実施形態では、アクティブ・ページは、各ソフトウェアに対して１つのページ・テーブルと１つまたは複数のページ・フレームを表している。たとえば、ソフトウェア１４０は、保護メモリ内にあるページ・テーブル１４１とページ・フレーム１４２〜１４４を有する。同様に、ソフトウェア１６０および１７０は、保護ＲＡＭ内でアクティブになっているそれぞれページ・テーブル１６１、１７１とページ・フレーム１６２、１７２を有する。それに対して、ソフトウェア１５０はそのページ・テーブルとそのすべてのページ・フレームが外部記憶装置４にページ・アウトされている。
第４ｂ図に、ページ・ディレクトリおよびページ・テーブルの項目の形式を示す。２００が項目に対応するページ・テーブルまたはページ・フレームがある場合で、２０１がそれらがない場合である。第４ａ図のソフトウェア１５０に対応するページ・ディレクトリ項目は、ページ・テーブルがメモリ内に保持されず、ページ・アウトされているものと仮定すれば、非存在形式２０１を有することになる。いずれにしても、ソフトウェア１５０のページ・テーブル項目はすべて非存在形式２０１を有する。したがって、ページが存在しないことを示すビットは保持されるが、残りの３１ビットは、ページ場所識別子と保全性検査値を指すソフトウェア・ポインタとの間で任意に分割することができる。ページ・アウトされたページを探し出すことは非保護システムであっても必要なため、ページ場所識別子の様々な実装が当技術分野で周知である。可能な実装としては、アドレスの一部、またはアドレスのテーブルを指す何らかの索引づけなどを含む。ページ場所識別子として使用されるビット数が少ないほど、ＩＣＶを指すソフトウェア・ポインタに使用可能なビット数が多くなる。したがって、メモリ制約システムでは、これらの機能間でのビット割当ての間の兼ね合いがある。
全ハッシュ値に満たない値をＩＣＶとして使用する他の実装も可能である。しかし、そのような実装は、保全性検査サービスによって実現されるセキュリティを低下させる。そのような一例では、ハッシュ値を切り捨ててＩＣＶを作り出し、そのＩＣＶとページ場所識別子とでページ・テーブル項目を満たす。これによって、ＩＣＶの記憶のために別の保護メモリ・ページを割り振る必要がなくなるため、メモリ消費問題が解決しやすくなるが、保全性に対する重大な脅威が存在すると思われる場合には推奨できない。
第５ａ図および第５ｂ図に、インストール後の保護環境におけるページング操作の一実施形態のフローチャートを示す。機能ブロック５０で、ページが必要なものとして識別される。判断ブロック５１で、そのページが保護メモリ内に存在するか否かが判断される。ページが保護メモリ内に存在する場合、ページ・ヒットになり、それ以上の処置は不要である。ページが保護メモリ内に存在しない場合、ページ・フォールトになる。ページ・フォールトになると、判断ブロック５２で、この必要なページをマップすることができる保護メモリ内の使用可能空間があるか否かが判断される。使用可能な空間がない場合、機能ブロック５３でページ・アウトするページが選択される。最長不使用（ＬＲＵ）法などの様々な選択基準を使用することができる。その他の選択基準も当技術分野で周知である。判断ブロック５４で、出力ページが変更されているか否かが判断される。変更されている場合、機能ブロック５５で出力ページの保全性検査値が計算される。典型的には、これには出力ページの一方向ハッシュ値を計算し、そのハッシュ値をＩＣＶ（全ハッシュ値に満たない値が使用可能であるが、その場合保全性サービスの信頼性が低下する）として使用する必要がある。機能ブロック５６で、保全性検査値が所定の場所に記憶される。この場所は、ハッシュ値を保持するために別に設定されたデータ構造の形態をとることができ、そのデータ構造を指すポインタが出力ページに対応するページ・テーブル項目またはページ・ディレクトリ項目に記憶される。このデータ構造は、保護ＲＡＭに入れることができ、後述するようにページ・アウトの対象とすることができる。
機能ブロック５７で、暗号鍵とＩＶが取り出される。前述のように、暗号鍵とＩＶはインストール時に生成される。機能ブロック５７で取り出された鍵と、固有暗号化を保証するために何らかの値によってオフセットすることができる初期設定ベクトルとを使用して、機能ブロック５８で出力ページが暗号化される。機能ブロック５９で、暗号化ページが外部記憶装置にエクスポートされる。
判断ブロック５４で、出力ページが変更されていなかった場合、または機能ブロック５９で出力ページのエクスポートが完了した後で、システムは保護メモリのうち、その出力ページによって占有されていた部分を上書きできるようにされる。判断ブロック５２で、保護メモリに空間がある場合、または上書きが可能にされた後、機能ブロック６１で、所望のページのページ場所識別子がページ・ディレクトリまたはページ・テーブル内の対応する項目を介して取り出される。機能ブロック６２で、鍵およびＩＶの記憶域から、必要なページに対応する鍵およびＩＶが取り出される。しかし、鍵およびＩＶは同じデータ構造に記憶する必要はない。次に、機能ブロック６３で、外部記憶装置にそのページを求める要求が送られる。機能ブロック６４で、鍵とＩＶを使用して入力ページが復号される。復号されたページは機能ブロック６５でハッシュされ、ＩＣＶが求められる。判断ブロック６６で、入力ページのＩＣＶが前もって記憶されているＩＣＶと比較される。入力ページのＩＣＶが、インストール時または前に使用された後で、エクスポートされたときのそのページに対応する記憶されているＩＣＶと等しい場合、機能ブロック６７で、そのページは保護メモリに入れられ、プロセッサによってそのページに対する実行または操作を行うことができる。ＩＣＶが一致しない場合、機能ブロック６８でページは廃棄され、機能ブロック６９で保護プロセッサにデータ破壊メッセージが送られる。
一実施形態では、特に保護ＲＡＭ空間の制約が厳しい場合、メモリ消費を扱うために追加レベルの間接化技法を使用することができる。たとえば、キーイング情報を含むページ自体をハッシュし、（それ自体のランダム生成鍵およびＩＶを使用して）暗号化し、外部記憶域にエクスポートすることができる。この実施形態では、まずキーイング情報が取り出され、復号され、保全性が検査され、所望の鍵とＩＶが識別されてからでなければページ・テーブルおよび／またはページ・フレームをページ・インすることができないため、始動時の待ち時間が増大する。このシステムの利点は、キーイング材料の記憶が重大な制限にならないことである。このようなページについては、別の鍵とＩＶを生成し、たとえば特定のアプリケーションに付随する鍵およびＩＶを使用しないことが望ましい。同様にＩＣＶを保持するページをページ・アウトすることもできる。したがって、始動待ち時間の増大を犠牲にして、いくつかのレベルの間接化技法を使用することができる。
実施形態によっては、キーイング材料の更新または変更が望ましくなる場合がある。１つの鍵を保持する期間が暗号化期間である。暗号化期間は、固定することも、ユーザの制御下に置くこともできる。いずれの場合も、更新が望ましい場合および／または行われる場合、システムはインストール手続きと同様に実行する。ページ・アウトする場合、ページ・テーブルが保護ＲＡＭに入れられてからでなければそのページを再キーイングすることはできない。各ページ・フレームは、バスから保全性検査エンジンによって要求されるインストール・ディスクから送られるのではなく、外部記憶装置からページ・インされ、通常の方法で復号され、保全性検査される。次に、ページ・フレームは、新しい鍵とＩＶ（そのいずれか一方または両方はアプリケーションごとまたはページごとに生成することができる）を使用して再暗号化され、外部記憶装置にエクスポートし戻される。この更新中にページ・フレームを保護ＲＡＭに入れる必要はない。
以上の説明で、本発明についてその特定の実施形態を参照しながら説明した。しかし、請求の範囲に記載の本発明のより広い主旨および範囲から逸脱することなく、本発明に様々な修正および変更を加えることができることは明らかであろう。したがって、本明細書および図面は、限定的なものではなく例示的なものとみなすべきである。したがって、本発明の範囲は、請求の範囲によってのみ限定すべきである。
【図１】
0004140863.tif 000002
【図２】
0004140863.tif 000003
【図３】
0004140863.tif 000004
【図４ａ】
0004140863.tif 000005
【図４ｂ】
0004140863.tif 000006
【図５ａ】
0004140863.tif 000007
【図５ｂ】
0004140863.tif 000008