(57)【特許請求の範囲】
【請求項１】
不揮発性の主記憶装置と不揮発性の二次記憶装置とを有し、ページング方式で記憶されているデータをページごとに前記不揮発性の主記憶装置に記憶させる情報処理装置であっ
て、
前記ページのフラグが機密を示すか否かを判定する判定手段と、
前記判定手段において前記フラグが機密を示すと判定された場合、前記ページ内のデー
タを前記不揮発性の主記憶装置に記憶させることを禁止する制御手段と、を有し、前記制御手段は、前記ページ内のデータが揮発性の記憶装置に記憶されており、かつ前記判定手段において前記フラグが機密を示すと判定された場合、前記ページ内のデータを前記不揮発性の主記憶装置に記憶させることを禁止することを特徴とする情報処理装置。
【請求項２】
前記判定手段において前記フラグが機密を示すと判定され、前記ページ内のデータを揮発性の主記憶装置に記憶させた場合、当該記憶されたデータのページのフラグを、機密を示すフラグに設定する設定手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
データを暗号化する暗号化手段を更に有し、
前記制御手段は、前記判定手段において前記フラグが機密を示すと判定され、かつ前記ページ内のデータを前記不揮発性の二次記憶装置に記憶させる場合、前記ページ内のデータを、前記暗号化手段で暗号化して前記不揮発性の二次記憶装置に記憶させることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
不揮発性の主記憶装置と不揮発性の二次記憶装置とを有し、ページング方式におけるデータをページごとに前記不揮発性の主記憶装置に記憶させる情報処理方法であって、
前記ページのフラグが機密を示すか否かを判定する判定工程と、
前記判定工程において前記フラグが機密を示すと判定された場合、前記ページ内のデー
タを前記不揮発性の主記憶装置に記憶させることを禁止する制御工程と、を有し、
前記制御工程では、前記ページ内のデータが揮発性の記憶装置に記憶されており、かつ前記判定手段において前記フラグが機密を示すと判定された場合、前記ページ内のデータを前記不揮発性の主記憶装置に記憶させることを禁止することを特徴とする情報処理方法。
【請求項５】
コンピュータを、
不揮発性の主記憶装置と不揮発性の二次記憶装置とを有し、ページング方式におけるデータをページごとに前記不揮発性の主記憶装置に記憶させる情報処理装置であって、
前記ページのフラグが機密を示すか否かを判定する判定手段と、
前記判定手段において前記フラグが機密を示すと判定された場合、前記ページ内のデータを前記不揮発性の主記憶装置に記憶させることを禁止する制御手段と、を有し、前記制御手段は、前記ページ内のデータが揮発性の記憶装置に記憶されており、かつ前記判定手段において前記フラグが機密を示すと判定された場合、前記ページ内のデータを前記不揮発性の主記憶装置に記憶させることを禁止することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性の主記憶装置を備えた情報処理装置に関する。
【背景技術】
【０００２】
不揮発性で高速な読み書きが可能なメモリが実用化され、パーソナルコンピュータなどの情報処理装置内における主記憶装置としての実装が現実的になってきている。不揮発性の主記憶装置としては、磁気抵抗メモリ（ＭＲＡＭ）、強誘電体メモリ（ＦｅＲＡＭ）、抵抗変化メモリ（ＲｅＲＡＭ）、相変化メモリ（ＰＲＡＭ）などがある。
【０００３】
不揮発性の主記憶装置は、メモリに通電を行うことなくデータを記憶し続けることができる。そのため、不揮発性の主記憶装置を実装した情報処理装置のサスペンド時の電力消費は、揮発性の主記憶装置を実装した情報処理装置に比べてほぼ不要になる。
【０００４】
また、常に、コンピュータプログラムを不揮発性の主記憶装置に保持し続けることができるため、プログラム実行前のロード処理を省略することができ、情報処理装置の起動時間を短縮することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２０４５０７号公報
【特許文献２】特開２０１２−１６８７３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、不揮発性の主記憶装置を実装した情報処理装置のデメリットとして、記憶されている情報の漏えい防止が難しいことが挙げられる。
【０００７】
すなわち、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）などの揮発性の主記憶装置を実装した情報処理装置においては、メモリへの電源供給が停止した場合には、主記憶装置内に記憶されている情報は自然に失われる。
【０００８】
しかしながら、不揮発性の主記憶装置を実装した情報処理装置においては、電源供給が停止しても、主記憶装置内に記憶されている情報は保持されてしまう。よって、電源供給を停止した後、情報が保持されたままの主記憶装置を、情報処理装置から物理的に取り外すことも可能である。
【０００９】
すなわち、不揮発性の主記憶装置を実装した情報処理装置においては、主記憶装置の抜き取りによる情報漏えいのリスクが高くなってしまうという課題がある。
【００１０】
特に、一般的なオペレーティング・システムにおいては、メモリを有効に活用するためのメモリ管理機構が備わっているが、当該メモリ管理機構の処理に起因して情報漏えいが起きる可能性がある。例えば、Ｌｉｎｕｘ（登録商標）のメモリ管理機構では、ユーザもしくはユーザ・プログラムの指示がなかったとしても、オペレーティング・システムの自動的な処理によって、主記憶装置同士や外部記憶装置との間で、データのコピーがなされてしまうことがある。
【００１１】
つまり、コンピュータに対してユーザからの明示的な指示がなかったとしても、機密性の高いデータが不揮発性の主記憶装置に記憶されてしまう可能性がある。
【００１２】
上記の情報漏えいの防止策としては、主記憶装置内に記憶されている情報を暗号化するという方法がある。特許文献１には、ＭＲＡＭを実装した情報処理装置における情報漏えい防止技術が開示されている。特許文献１に開示されている技術では、スクランブル情報によって暗号化されたデータをＭＲＡＭに記憶する。暗号化されたデータは、復号用の鍵情報がないと復号することは出来ないようになっている。
【００１３】
しかしながら、特許文献１に開示されている技術においては、スクランブル処理・スクランブル解除処理のための仕組みが必要である。よって、ＭＲＡＭ内のデータを直接利用することができず、データの読み込みおよび書き込みの処理速度が低下するおそれがある。
【００１４】
また、引用文献２には、揮発性のメモリ部と不揮発性のメモリ部とで構成された情報処理装置において、情報漏えいを防止することが開示されている。具体的な情報漏えいを防止する仕組みとしては、データの一部を揮発性のメモリ部に記憶させる。上記処理によって、仮に、不揮発性のメモリ部に記憶されたデータが漏えいしたとしても、データの一部は揮発性のメモリ部に記憶されているため、全てのデータが漏えいすることは防止することが出来る。引用文献２に開示されている技術では、メモリ部に記憶されているデータを暗号化するわけではないので、処理速度が損なわれる可能性は低い。
【００１５】
しかしながら、データの一部については漏えいのリスクがあり、引用文献２に開示されている技術では、保護技術としては必ずしも完全ではなかった。
【００１６】
本発明は、上記課題を鑑みてなされたものであり、不揮発性の主記憶装置を備えた情報処理装置において、データの書き込みおよび読み込みに関する処理速度の低下を抑えつつ、機密データの漏えいを防止することを目的とする。
【課題を解決するための手段】
【００１７】
本発明における情報処理装置は、不揮発性の主記憶装置と不揮発性の二次記憶装置とを有し、ページング方式で記憶されているデータをページごとに前記不揮発性の主記憶装置に記憶させる情報処理装置であって、前記ページのフラグが機密を示すか否かを判定する判定手段と、前記判定手段において前記フラグが機密を示すと判定された場合、前記ページ内のデータを前記不揮発性の主記憶装置に記憶させることを禁止する制御手段と、を有し、前記制御手段は、前記ページ内のデータが揮発性の記憶装置に記憶されており、かつ前記判定手段において前記フラグが機密を示すと判定された場合、前記ページ内のデータを前記不揮発性の主記憶装置に記憶させることを禁止することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、不揮発性の主記憶装置を備えた情報処理装置において、データの書き込みおよび読み込みに関する処理速度の低下を抑えつつ、機密データの漏えいを防止することができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態における情報処理装置の構成を示す図である。
【図２】本実施形態におけるメモリ管理機構の構成を示す図である。
【図３】本実施形態におけるメモリ確保部の処理を示したフローチャートである。
【図４】本実施形態におけるデータコピー制限部の処理を示したフローチャートである。
【図５】本実施形態を構成する各記憶装置におけるフラグの状態を示す図である。
【発明を実施するための形態】
【００２０】
図１は、本実施形態における情報処理装置の概略構成を示す図である。
【００２１】
１００は、本実施形態における情報処理装置の各構成装置を制御するためのＣＰＵ１００である。
【００２２】
１０１は、主記憶装置として機能し、コンピュータプログラムや各種データなどを記憶することが可能な揮発性の主記憶装置１０１である。揮発性の主記憶装置１０１の具体例としては、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）などがある。揮発性の主記憶装置１０１は、通電状態においては、データを保持することが出来るが、通電が停止されると、データは消失してしまう。
【００２３】
１０２は、主記憶装置として機能し、揮発性の主記憶装置１０１と同様に、コンピュータプログラムや各種データなどを記憶することが可能な不揮発性の主記憶装置１０２である。揮発性の主記憶装置１０１に記憶されたデータは、通電が停止されると消失してしまうが、不揮発性の主記憶装置１０２は、通電が停止されたとしても、データを保持することが可能である。不揮発性の主記憶装置１０２の具体例としては、磁気抵抗メモリ（ＭＲＡＭ）、強誘電体メモリ（ＦｅＲＡＭ）、抵抗変化メモリ（ＲｅＲＡＭ）、相変化メモリ（ＰＲＡＭ）などがある。
【００２４】
１０３は、コンピュータプログラムや各種データを記憶することが出来る不揮発性の外部記憶装置１０３である。不揮発性の外部記憶装置１０４は、二次記憶装置として機能する。不揮発性の外部記憶装置１０３の具体例としては、ハードディスク・ドライブ（ＨＤＤ）やソリッド・ステイト・ドライブ（ＳＳＤ）などである。
【００２５】
デバイス１０４は、ＣＰＵ１００によって初期化される周辺機器であって、ＰＣＩ接続のグラフィックボードやＵＳＢ接続のスキャナ、プリンタなど様々な機器である。尚、デバイス１０４は、複数の周辺機器から構成されても良い。
【００２６】
セキュリティ・チップ１０５は、ＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）などの、暗号化のための機構を備えた耐タンパ性の機器である。
【００２７】
ＣＰＵ１００は、不揮発性の外部記憶装置１０３に含まれるコンピュータプログラムを揮発性の主記憶装置１０１または不揮発性の主記憶装置１０２に展開する。
【００２８】
ただし、不揮発性の主記憶装置１０２に既にプログラムが存在する場合、展開を省略してもよい。ＣＰＵ１００は、揮発性の主記憶装置１０１または不揮発性の主記憶装置１０２からコンピュータプログラムをフェッチして処理を実行する。
【００２９】
図２は、本実施形態におけるメモリ管理機構の構成を示す図である。
【００３０】
図２に示す通り、本実施形態におけるメモリ管理機構は、メモリ確保部２００、データコピー制限部２０１、データ出力制限部２０２、データ入力制限部２０３、データ退避部２０４、データ復帰部２０５から構成されている。尚、メモリ管理機構を構成する各機構は、オペレーティング・システム２０７の制御によって実現され、情報処理装置のメモリ管理を担う。
【００３１】
各機構は、オペレーティング・システム２０７から要求を受け付け、主記憶装置２０６へアクセスすることで、主記憶装置２０６を構成する揮発性の主記憶装置１０１及び不揮発性の主記憶装置１０２を利用する。また、データ出力制限部２０２及びデータ入力制限部２０３、データ退避部２０４、データ復帰部２０５は、不揮発性の外部記憶装置１０３を利用する。
【００３２】
システムが起動すると、ブートローダはオペレーティング・システム２０７を不揮発性の主記憶装置１０２にロードする。オペレーティング・システム２０７は、不揮発性の主記憶装置１０２の領域を用いて、オペレーティング・システム２０７自身の初期化を行う。  
【００３３】
オペレーティング・システム２０７は、揮発性の主記憶装置１０１と不揮発性の主記憶装置１０２を利用可能な状態にする。オペレーティング・システム２０７は、揮発性の主記憶装置１０１と不揮発性の主記憶装置１０２の物理メモリをページ・フレームに分割する。そして、物理アドレス空間のページに対応付ける。各ページを管理するために、機密性を示すフラグを含めた、ページの状態を示す管理テーブルを割り当てる。当該フラグによってページ内のデータの処理が管理されることになる。このようなメモリ管理方式は、一般的に、ページング方式と呼ばれている。
【００３４】
図３は、本実施形態におけるメモリ確保部の処理を示したフローチャートである。また、本実施形態におけるディマンド・ページングのメモリ確保処理を示す。以下、各ステップの処理について説明する。
【００３５】
（ステップＳ３００）本ステップから処理を開始する。
【００３６】
（ステップＳ３０１）ステップＳ３０１においては、メモリ確保部２００は、ユーザもしくはユーザ・プログラムがシステムコールによりメモリ確保要求を行ったことを検知する。メモリ確保要求は、オペレーティング・システム２０７を介して受け付ける。
【００３７】
（ステップＳ３０２）ステップＳ３０２においては、ステップＳ３０１におけるメモリ確保要求に基づき、メモリ確保部２００は、仮想メモリのメモリ領域を確保する。
【００３８】
（ステップＳ３０３）ステップＳ３０３においては、メモリ確保部２００は、ユーザもしくはユーザ・プログラムがシステムコールに基づき、機密情報の指定を受け付ける。本システムコールは、仮想メモリ領域を機密データ用とする要求であり、オペレーティング・システム２０７から受け付ける。尚、機密情報の指定は、仮想メモリ領域の一部を指定するものであっても良いし、仮想メモリ領域の全体を指定するものであっても良い。また、本システムコールは、ステップＳ３０１のシステムコールと統一しても良い。
【００３９】
（ステップＳ３０４）ステップＳ３０４においては、メモリ確保部２００は、ステップＳ３０３において機密情報の指定があるか否かを判定する。機密情報の指定があると判定された場合は、ステップＳ３０５に処理を進める。機密情報の指定がないと判定された場合は、ステップＳ３０６に処理を進める。
【００４０】
（ステップＳ３０５）ステップＳ３０５において、メモリ確保部２００は、機密とする領域情報を主記憶装置２０６に記憶する。
【００４１】
（ステップＳ３０６）ステップＳ３０６においては、メモリ確保部２００は、ページフォルト例外を受け付ける。ユーザもしくはユーザ・プログラムの確保した領域に書き込みが行われると、メモリ確保部２００は、ＣＰＵ１００からページフォルト例外を受け付けることになる。
【００４２】
（ステップＳ３０７）ステップＳ３０７においては、メモリ確保部２００は、制御手段として機能し、ステップＳ３０４において機密情報の指定があったか否かを判定する。機密情報の指定があった場合、ステップＳ３０８に処理を進める。機密情報の指定がなかった場合、ステップＳ３０９に処理を進める。
【００４３】
（ステップＳ３０８）ステップＳ３０８においては、ページフォルト例外対象の仮想メモリアドレスと主記憶装置２０６に記憶された機密とする領域情報とが重なるか否かを判定する。ページフォルト例外対象の仮想メモリアドレスと領域情報が重なると判定された場合、ステップＳ３１０に処理を進める。ページフォルト例外対象の仮想メモリアドレスと領域情報が重ならないと判定された場合、ステップＳ３０９に処理を進める。
【００４４】
（ステップＳ３０９）ステップＳ３０９においては、メモリ確保部２００は、不揮発性の主記憶装置１０２の空き容量が不足しているか否かを判定する。空き容量が不足していると判定された場合は、ステップＳ３１１に処理を進める。空き容量が不足していないと判定された場合は、ステップＳ３１０に処理を進める。尚、本ステップにおける処理は、空き容量が十分かどうかという指標だけではなく、主記憶装置の転送速度を考慮し、メモリ確保を行うべき主記憶装置を決定してもよい。
【００４５】
（ステップＳ３１０）ステップＳ３１０においては、メモリ確保部２００は、不揮発性の主記憶装置１０２から、物理メモリ領域を確保する。物理メモリ確保後、ステップＳ３１２に処理を進める。
【００４６】
（ステップＳ３１１）ステップＳ３１１においては、メモリ確保部２００は、機密データ用の領域として、揮発性の主記憶装置１０１から物理メモリを確保する。物理メモリ確保後、ステップＳ３１２に処理を進める。
【００４７】
（ステップＳ３１２）ステップＳ３１２においては、メモリ確保部２００は、機密データとしてメモリを確保した場合、機密性のフラグをセット（設定）する。具体的な処理としては、元の物理メモリのデータを新たに確保した物理メモリへコピーし、仮想メモリの関連付けを新たに確保した物理メモリ領域へ変更し、機密フラグをセットする。元の物理メモリが、他の仮想メモリと関連付けられていない場合、メモリ確保部２００は元の物理メモリ領域を解放する。また、仮想メモリ領域に対応する物理メモリ領域が揮発性の主記憶装置１０１に属する場合で、物理メモリと仮想メモリが１対１で関連付けされているなら機密フラグをセットすることで完了する。１対多で関連付けされているなら、元データが不揮発性の主記憶装置１０２に属する場合と同様に処理を行う。
【００４８】
（ステップＳ３１３）ステップＳ３１３においては、メモリ確保部２００は、仮想メモリアドレスと、確保された物理メモリアドレスとを関連付ける。
【００４９】
（ステップＳ３１４）本ステップで処理を終了させる。
尚、メモリ確保部２００は、上述のステップＳ３１０において、オペレーティング・システム２０７から直接、機密として物理メモリを確保する要求を受け付け、揮発性の主記憶装置１０１から物理メモリを確保してもよい。
【００５０】
図４は、本実施形態におけるデータコピー制限部の処理を示したフローチャートである。
【００５１】
（ステップＳ４００）本ステップから処理を開始する。
【００５２】
（ステップＳ４０１）ステップＳ４０１において、データコピー制限部２０１は、主記憶装置２０６内でのメモリコピー要求をオペレーティング・システム２０７から受け付ける。
【００５３】
（ステップＳ４０２）ステップＳ４０２においては、コピー元の物理メモリアドレスが揮発性の主記憶装置１０１であるか否かを判定する。本ステップにおいて、コピー元が揮発性の主記憶装置１０１に属すると判定された場合は、ステップＳ４０４に処理を進める。また、コピー元が揮発性の主記憶装置１０１に属すると判定されなかった場合、すなわち、不揮発性の主記憶装置１０２に属すると判定された場合は、ステップＳ４０３に処理を進める。
【００５４】
（ステップＳ４０３）ステップＳ４０３においては、データコピー制限部２０１が判定手段として機能し、コピー元のデータのページに機密性のフラグがセットされているか否かを判定する。機密フラグがセットされている場合、不揮発性の記憶手段に記憶させることは禁止すべきであるため、ステップＳ４０６に処理を進める。機密フラグがセットされていない場合、ステップＳ４０４に処理を進める。
【００５５】
（ステップＳ４０４）ステップＳ４０４においては、データコピー制限部２０１は、不揮発性の主記憶装置１０２が、データを記録させるために記憶容量不足か否かを判定する。記憶容量不足である場合、ステップＳ４０６に処理を進める。記憶容量不足でない場合、ステップＳ４０５に処理を進める。
【００５６】
（ステップＳ４０５）ステップＳ４０５においては、データコピー制限部２０１は不揮発性の主記憶装置１０２から物理メモリを確保する。
【００５７】
（ステップＳ４０６）ステップＳ４０６においては、データコピー制限部２０１は揮発性の主記憶装置１０１から物理メモリを確保する。
【００５８】
（ステップＳ４０７）ステップＳ４０５において、データコピー制限部２０１はコピー元の物理メモリのデータを新たに確保した物理メモリへコピーする。
【００５９】
（ステップＳ４０６）本ステップで処理を終了させる。
【００６０】
以上の処理により、データコピー制限部２０１は、異なる種類の主記憶装置の間でデータのコピー処理を制限することで、機密データと一般データの混在を防ぐことが可能となる。また、機密データの管理をページのフラグで管理するため、Ｌｉｎｕｘ（登録商標）などのページング方式を採用している一般的なオペレーティング・システムにおいて容易な実装が可能となる。
【００６１】
尚、データコピー制限部２０１は、メモリコピー処理だけでなく、移動処理及びマージ処理も、同一種類の主記憶内で処理するよう制限する。ここでのマージ処理は、データの重複する物理メモリ領域が存在する場合、ひとつの物理メモリ領域にまとめ、他の物理メモリ領域を解放する処理である。データコピー制限部２０１は、メモリ領域の内容が同一であっても、主記憶装置の種類が異なる場合は、マージ処理を行わない。
【００６２】
オペレーティング・システム２０７は、不揮発性の外部記憶装置１０３へ通常のデータを書き込む際に、データをまとまったサイズで出力するため、データを一時的に主記憶装置２０６へキャッシュする。データ出力制限部２０２は、このキャッシュ出力処理に制限を行う。データ出力制限部２０２は、揮発性の主記憶装置１０１内のデータを一時的にキャッシュする場合、キャッシュするメモリを揮発性の主記憶装置１０１からのみ確保し、データをキャッシュへ出力し、キャッシュから不揮発性の外部記憶装置１０３へ出力する。これにより、揮発性の主記憶装置１０１の機密データの漏えいを防ぐ。
【００６３】
オペレーティング・システム２０７は、オペレーティング・システム２０７もしくはアプリケーションが不揮発性の外部記憶装置１０３のデータを利用する場合、キャッシュとして主記憶へ読み込む。データ入力制限部２０３は、キャッシュとしてのデータ入力を制限することで、不揮発性の外部記憶装置１０３の機密データの漏えいを防ぐ。データ入力制限部２０３は、不揮発性の外部記憶装置１０３内のデータをキャッシュとして読み込む要求をオペレーティング・システム２０７から受け付ける。対象データが暗号化装置やオペレーティング・システム２０７によって暗号化されている場合、データ入力制限部２０３は、不揮発性の主記憶装置１０２へのキャッシュを制限する。データ入力制限部２０３は、揮発性の主記憶装置から物理メモリを確保して対象データをキャッシュとして読み込み、機密フラグをセットする。データ入力制限部２０３は、ＵＳＢストレージなどのデバイス１０６におけるキャッシュとしてのデータ入力も、同様に制限する。
【００６４】
データ退避部２０４もしくはデータ復帰部２０５は、オペレーティング・システム２０７を初期化する際に、不揮発性の主記憶装置１０２の領域を一定サイズ確保し、スワップデバイスとしてオペレーティング・システム２０７に登録する。また、不揮発性の外部記憶装置１０３の領域も、スワップデバイスとしてオペレーティング・システム２０７に複数登録する。その中のひとつを、機密データ用のスワップデバイスとする。本実施形態において不揮発性の外部記憶装置１０３のスワップデバイスは、常に十分な空き容量が存在すると仮定する。
【００６５】
図５は、本実施形態を構成する各記憶装置におけるフラグの状態を示す図である。
【００６６】
主記憶装置において、機密データは常に機密フラグがセットされた状態であり、一般データは常に機密フラグがクリアされた状態である。不揮発性の外部記憶装置１０３において、機密データ及び一般データはフラグを所持しない。データの移動・スワップは、揮発性の主記憶装置１０１・不揮発性の主記憶装置１０２間及び、不揮発性の主記憶装置１０２・不揮発性の外部記憶装置１０３間で行う。不揮発性の主記憶装置１０２において、機密データは、暗号化された上でスワップデバイス内に記憶される。不揮発性の外部記憶装置１０３において、機密データ及び一般データは、スワップデバイス内に記憶される。
【００６７】
オペレーティング・システム２０７は、ページ回収処理として、データ退避部２０４及びデータ復帰部２０５にスワップアウトもしくはスワップインを要求するか、ページ移動を行う。この判断は、データの機密性及び記憶装置の状態に応じて行われる。
【００６８】
揮発性の主記憶装置１０１に対するスワップアウトの判断について示す。オペレーティング・システム２０７は、揮発性の主記憶装置１０１のページをリスト管理することで、ページ回収順を決定する。このリストは、先頭から順にページごとの使用頻度を示す。オペレーティング・システム２０７は、最低使用頻度のページから順に回収処理を行う。オペレーティング・システム２０７は、揮発性記主憶装置１０１に含まれる機密データと一般データの割合を記憶する。オペレーティング・システム２０７は、揮発性の主記憶装置１０１の空き容量が足りなくなると、ページ回収処理を行う。ページ回収対象が機密データであり、一般データの割合が多い場合、オペレーティング・システム２０７は対象データを不揮発性の主記憶装置１０２へスワップアウトしないと判断し、対象データをリストの後方へ移動させる。ページ回収対象が機密データであり、一般データの割合が少ない場合、オペレーティング・システム２０７は対象データを不揮発性の主記憶装置１０２へスワップアウトすると判断する。ページ回収対象が一般データであれば、一般データの割合に関わらず、オペレーティング・システム２０７は対象データを不揮発性の主記憶装置１０２へ移動する。
【００６９】
不揮発性の主記憶装置１０２に対するスワップアウトの判断について示す。オペレーティング・システム２０７は、不揮発性の主記憶装置１０２のページもリスト管理する。ただし、揮発性の主記憶装置１０１のリストとは異なるリストを用いる。ページ回収対象が一般データであり、揮発性の主記憶装置１０１の空き容量が十分にあれば、オペレーティング・システム２０７は対象データを揮発性の主記憶装置１０１へ移動する。ページ回収対象が一般データであり、揮発性の主記憶装置１０１の空き容量が十分になければ、オペレーティング・システム２０７は対象データを不揮発性の外部記憶装置１０３へスワップアウトすると判断する。ページ回収対象が機密データであり、揮発性の主記憶装置１０１の空き容量が十分にあれば、オペレーティング・システム２０７は対象データを揮発性の主記憶装置１０１へスワップインすると判断する。ページ回収対象が機密データであり、揮発性の主記憶装置１０１の空き容量が十分になければ、オペレーティング・システム２０７は対象データを不揮発性の外部記憶装置１０３へスワップアウトすると判断する。
【００７０】
主記憶装置間のページ移動は、オペレーティング・システム２０７が、図４のフローチャートに従って対象データを不揮発性の主記憶装置１０２へコピーし、元データを削除することで実現する。オペレーティング・システム２０７は、機密フラグにより、ページ回収対象が機密データか一般データかを判断する。
【００７１】
復号の処理に比べ不揮発性の外部記憶装置１０３への出力処理の方が高速な場合、揮発性の主記憶装置１０１の空き容量に関わらず、暗号化された機密データを揮発性の主記憶装置１０１から不揮発性の外部記憶装置１０３へスワップアウトしても良い。
【００７２】
データ退避部２０４は、オペレーティング・システム２０７からスワップアウト要求を受け付ける。スワップアウト対象が揮発性の主記憶装置１０１の機密データの場合、データを暗号化するためのメモリ領域を揮発性の主記憶装置１０１から確保する。そして、オペレーティング・システム２０７が生成する共通鍵を用いて、確保したメモリ領域上で機密データを暗号化する。不揮発性の主記憶装置１０２のスワップデバイスで新たなページを確保し、暗号化したデータと元の機密データのフラグをコピーし、仮想アドレスを変更した上で元の機密データを解放する。スワップアウト対象が不揮発性の主記憶装置１０２の機密データの場合は以下の処理を行う。すなわち、不揮発性の外部記憶装置１０３の機密データ用のスワップデバイスへ機密データを出力し、仮想アドレスを変更した上で不揮発性の主記憶装置１０２のスワップデバイスの機密データを解放する。スワップアウト対象が不揮発性の主記憶装置１０２の一般データの場合、不揮発性の外部記憶装置１０３の機密データ用以外のスワップデバイスへ一般データを出力する。そして、仮想アドレスを変更した上で元の一般データを解放する。
【００７３】
暗号化にＴＰＭを利用する場合、オペレーティング・システム２０７はコールド・ブートの際に、揮発性の主記憶装置１０１からスワップアウト対象にはならないメモリ領域を確保して、そのメモリ領域に適当な共通鍵を生成する。ＴＰＭは、生成した共通鍵をＴＰＭ内部の公開鍵を用いて暗号化し、ＴＰＭ内部のＰＣＲレジスタ（Ｐｌａｔｆｏｒｍ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ）へ保存する。データ退避部２０４及びデータ復帰部２０５は、生成した共通鍵を用いて暗号化・復号を行う。揮発性の主記憶装置１０１のイメージを生成する際は、共通鍵を暗号化した上でスワップアウトする必要がある。そのため、共通鍵を保存したメモリ領域を揮発性の主記憶装置１０１内でコピーし、共通鍵を保存したオリジナルのメモリ領域をスワップアウト対象に変更し、コピーした共通鍵によりスワップアウトを行う。サスペンドからブートする際に、オペレーティング・システム２０７は、揮発性の主記憶装置１０１からメモリ領域を確保し、ＴＰＭから公開鍵を取得する。ＴＰＭは、ＴＰＭ内部のＰＣＲレジスタに保存した共通鍵を、ＴＰＭ内部の公開鍵により復号する。共通鍵を保存したメモリ領域は、スワップアウト対象から除外する。
【００７４】
データ退避部２０４及びデータ復帰部２０５は、機密データを暗号化・復号する際に、圧縮・伸張を行っても良い。
【００７５】
不揮発性の主記憶装置１０２のスワップデバイスのサイズは、動的に変更しても良い。オペレーティング・システム２０７は一定時間ごとにスワップデバイスのサイズを監視する。スワップデバイスの使用量が一定サイズ以上になると、オペレーティング・システム２０７が不揮発性の主記憶装置１０２から新たな領域を確保してスワップデバイスに追加登録することで、スワップデバイスのサイズを拡大する。オペレーティング・システム２０７は、スワップデバイスの使用量が一定サイズ以下になると、スワップデバイスから解放可能な領域を解放することでスワップデバイスのサイズを縮小する。
【００７６】
データ復帰部２０５は、オペレーティング・システム２０７からスワップイン要求を受け付ける。スワップイン対象が不揮発性の主記憶装置１０２の暗号化された機密データの場合、データを復号するためのメモリ領域を揮発性の主記憶装置１０１から確保する。そして、オペレーティング・システム２０７が生成する共通鍵を用いて、確保したメモリ領域上で機密データを復号する。機密フラグもコピーし、仮想アドレスを変更した上で復号元の機密データを解放する。スワップイン対象が不揮発性の主記憶装置１０２の機密データの場合、不揮発性の主記憶装置１０２のスワップデバイスからメモリ領域を確保し、機密データを読み込む。機密フラグをセットし、仮想アドレスを変更した上で不揮発性の外部記憶装置１０３の機密データを解放する。スワップイン対象が不揮発性の主記憶装置１０２の一般データの場合、不揮発性の主記憶装置１０２のスワップデバイス以外からメモリ領域を確保し、一般データを読み込む。機密フラグをセットせず、仮想アドレスを変更した上で不揮発性の外部記憶装置１０３の一般データを解放する。不揮発性の主記憶装置１０２のデータが機密かどうかは、データを格納するスワップデバイスが機密データ用かどうかにより判断する。
【００７７】
オペレーティング・システム２０７は、メモリ領域の解放やプロセスの終了によりスワップアウトされたデータが不要になった場合、該当するスワップアウト先のデータを破棄する。機密データが不揮発性の主記憶装置１０２で暗号化され、さらに不揮発性の外部記憶装置１０３へスワップアウトされている場合、不揮発性の主記憶装置１０２と不揮発性の外部記憶装置１０３の両方のデータを破棄する。
【００７８】
オペレーティング・システム２０７は、不揮発性の外部記憶装置１０３の複数のスワップデバイスをひとつにまとめても良い。この場合、スワップアウトされたデータが機密かどうかを識別可能にする必要がある。例えば、スワップ先を指し示すスワップアウトページ識別子に、スワップアウトされたデータが機密かどうかを示すフラグを加えれば良い。もしくは、スワップデバイスの各データが機密かどうかを示すビットマップを作成しても良い。
【００７９】
サスペンド時は、オペレーティング・システム２０７が揮発性の主記憶装置１０１の全ての機密データを不揮発性の主記憶装置１０２に暗号化を行った上でスワップアウトし、全ての一般データを不揮発性の主記憶装置１０２に移動する。不揮発性の主記憶装置１０２に十分な空き容量がない場合は、不揮発性の主記憶装置１０２のデータを不揮発性の外部記憶装置１０３にスワップアウトする。そして、サスペンドから復帰する際に、機密データを不揮発性の主記憶装置１０２から揮発性の主記憶装置１０１に復号を行った上でスワップインし、必要であれば不揮発性外部記憶１０３から不揮発性の主記憶装置１０２にスワップインする。もしくは、ページが要求された段階でスワップインする。これにより、電源断を伴うサスペンドであっても、揮発性の主記憶装置１０１内のデータが失われない。
【００８０】
以上のように本実施形態では、揮発性主記憶と不揮発性主記憶を備えた装置に対し、機密フラグを用いて機密データを管理することで、機密データの漏えいを効率的に防止することができる。
【００８１】
本実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が、コンピュータが読み取り可能なコンピュータプログラムを読み出して実行する処理である。
【００８２】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。  
【図１】
0006399821.tif 000002
【図２】
0006399821.tif 000003
【図３】
0006399821.tif 000004
【図４】
0006399821.tif 000005
【図５】
0006399821.tif 000006