(57)【要約】【課題】メモリに格納された秘密であるデータの漏えいの抑制を図ること。【解決手段】情報処理装置１０１は、ページをユーザモードで実行中のプログラムに割り当てたことに応じて、割り当てたページに格納されるデータが秘密であることを示す情報１２２を、割り当てたページに対応付けて記憶する。次に、情報処理装置１０１は、ユーザ空間１１５であるページに格納されたデータをカーネル空間１１４であるページにコピーしたことに応じて、コピー元のページに情報１２２が対応付けられていれば、コピー先のページに情報１２２を対応付けて記憶する。そして、情報処理装置１０１は、情報１２２が対応付けられたページがダンプ対象に含まれる場合、情報１２２が対応付けられたページに格納されたデータを暗号化した暗号化データをダンプする。【選択図】図１
2016224829.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
記憶領域を分割した分割領域をユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報を前記分割領域に対応付けて記憶し、
前記記憶領域のうちのユーザ空間である分割領域に格納されたデータを前記記憶領域のうちのカーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データのコピー先の分割領域に前記情報を対応付けて記憶し、
前記情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データをダンプする、
処理を実行させることを特徴とするダンプ処理プログラム。
【請求項２】
前記記憶領域は、所定のサイズで分割されており、
前記コンピュータに、
前記カーネル空間である特定の分割領域に前記情報を対応付けて記憶し、
前記ユーザ空間である分割領域に格納された前記所定のサイズ未満のデータを前記カーネル空間にコピーする場合、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データを前記特定の分割領域にコピーする、
処理を実行させることを特徴とする請求項１に記載のダンプ処理プログラム。
【請求項３】
前記コンピュータに、
前記情報が対応付けられた分割領域を前記プログラムとは異なる他のプログラムに割り当てたことに応じて、当該分割領域に対応付けられた前記情報を削除し、
前記他のプログラムが前記ユーザモードで実行中のプログラムであれば、前記情報を当該分割領域に対応付けて記憶することを特徴とする請求項１または２に記載のダンプ処理プログラム。
【請求項４】
前記コンピュータに、複数の装置が接続されており、
前記複数の装置の各々の装置に対応して、前記各々の装置から取得されるデータが秘密であるか否かを示す設定情報を記憶しており、
前記分割領域に対応付けて記憶する処理は、
前記複数の装置のうちのいずれかの装置からデータを取得したことに応じて、前記設定情報を参照して前記いずれかの装置から取得したデータが秘密であることが示されていれば、当該データを格納する分割領域に前記情報を対応付けて記憶することを特徴とする請求項１〜３のいずれか一つに記載のダンプ処理プログラム。
【請求項５】
前記設定情報は、前記各々の装置に対応して、前記各々の装置から取得されるデータのダンプ先ファイルを特定する情報を記憶しており、
前記分割領域に対応付けて記憶する処理は、
前記複数の装置のいずれかの装置からデータを取得したことに応じて、前記設定情報を参照して前記いずれかの装置から取得されるデータのダンプ先ファイルを特定する特定情報を、当該データを格納する分割領域に対応付けて記憶し、
前記コピー先の分割領域に前記情報を対応付けて記憶する処理は、
前記ユーザ空間である分割領域に格納されたデータを前記カーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記特定情報が対応付けられていれば、当該データのコピー先の分割領域に前記特定情報を対応付けて記憶し、
前記ダンプする処理は、
前記特定情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを前記特定情報から特定されるダンプ先ファイルにダンプすることを特徴とする請求項４に記載のダンプ処理プログラム。
【請求項６】
記憶領域を分割した分割領域をユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報を前記分割領域に対応付けて記憶し、
前記記憶領域のうちのユーザ空間である分割領域に格納されたデータを前記記憶領域のうちのカーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データのコピー先の分割領域に前記情報を対応付けて記憶し、
前記情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データをダンプする、
制御部を有することを特徴とする情報処理装置。
【請求項７】
コンピュータが、
記憶領域を分割した分割領域をユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報を前記分割領域に対応付けて記憶し、
前記記憶領域のうちのユーザ空間である分割領域に格納されたデータを前記記憶領域のうちのカーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データのコピー先の分割領域に前記情報を対応付けて記憶し、
前記情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データをダンプする、
処理を実行することを特徴とするダンプ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダンプ処理プログラム、情報処理装置、およびダンプ処理方法に関する。
【背景技術】
【０００２】
従来、コンピュータの不具合の調査に用いるため、コンピュータのメモリのデータをダンプする技術がある。また、秘密であるデータを出力する代わりに秘密であるデータを暗号化した暗号化データを出力することにより、秘密であるデータが漏えいすることを抑制する技術がある。関連する先行技術として、例えば、メモリダンプ要求が出されると、予め指定された重要プロセスのデータとして分類された重要データを暗号化し、暗号化した重要データを記憶装置に格納する技術がある。また、例えば、タスクを実行する際にアクセス対象のメモリページについて、メモリ秘密保護属性保持部にメモリ秘密保護属性を設定する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１８６７４９号公報
【特許文献２】特開２００３−２８０９８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、メモリの記憶領域の一部や全部のデータをダンプすると、秘密であるデータが漏えいすることがある。具体的には、例えば、アプリケーションプログラムが扱う秘密であるデータをカーネルが処理する場合、記憶領域の一部となるカーネル空間の記憶領域には、秘密であるデータをコピーしたデータが格納される。そして、秘密であるデータをカーネル空間の記憶領域にコピーすると、コピー先のデータが秘密であることが判断することができなくなる。このため、不具合の調査のためにカーネル空間の記憶領域をダンプすると、コピー先のデータが暗号化されずにダンプされて、秘密であるデータが漏えいすることになる。
【０００５】
１つの側面では、本発明は、記憶領域に格納された秘密であるデータの漏えいを抑制することができるダンプ処理プログラム、情報処理装置、およびダンプ処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、記憶領域を分割した分割領域をユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報を分割領域に対応付けて記憶し、記憶領域のうちのユーザ空間である分割領域に格納されたデータを記憶領域のうちのカーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に情報が対応付けられていれば、当該データのコピー先の分割領域に情報を対応付けて記憶し、情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データをダンプするダンプ処理プログラム、情報処理装置、およびダンプ処理方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、メモリに格納された秘密であるデータの漏えいを抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態１にかかる情報処理装置１０１の動作例を示す説明図である。
【図２】図２は、情報処理装置１０１のハードウェア構成例を示す説明図である。
【図３】図３は、ページ未満の領域を扱うための領域の説明図である。
【図４】図４は、情報処理装置１０１の機能構成例を示す説明図である。
【図５】図５は、管理情報１１３の記憶内容の一例を示す説明図である。
【図６】図６は、秘密情報格納用領域の確保例を示す説明図である。
【図７】図７は、秘密フラグの設定例を示す説明図である。
【図８】図８は、秘密フラグ設定処理手順の一例を示すフローチャートである。
【図９】図９は、メモリクリア処理手順の一例を示すフローチャートである。
【図１０】図１０は、バッファ領域コピー処理手順の一例を示すフローチャートである。
【図１１】図１１は、メモリダンプ採取の一例を示す説明図である。
【図１２】図１２は、メモリダンプ採取処理手順の一例を示すフローチャートである。
【図１３】図１３は、復号処理手順の一例を示すフローチャート（その１）である。
【図１４】図１４は、復号処理手順の一例を示すフローチャート（その２）である。
【図１５】図１５は、実施の形態２にかかるシステム１５００の動作例を示す説明図である。
【図１６】図１６は、実施の形態２にかかる秘密フラグ設定処理手順の一例を示すフローチャートである。
【図１７】図１７は、実施の形態２にかかるメモリダンプ採取処理手順の一例を示すフローチャート（その１）である。
【図１８】図１８は、実施の形態２にかかるメモリダンプ採取処理手順の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のダンプ処理プログラム、情報処理装置、およびダンプ処理方法の実施の形態を詳細に説明する。
【００１０】
図１は、実施の形態１にかかる情報処理装置１０１の動作例を示す説明図である。情報処理装置１０１は、情報処理装置１０１の利用者の情報を含んだデータを用いて処理を行うコンピュータである。情報処理装置１０１は、例えば、サーバである。または、情報処理装置１０１は、パーソナル・コンピュータ（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）でもよい。
【００１１】
ここで、情報処理装置１０１にトラブルが発生した場合、トラブルの原因を調査するために情報処理装置１０１のメモリのデータをファイル化したメモリダンプを用いることがある。
【００１２】
ここで、情報処理装置１０１のメモリ管理の仕組みについて説明する。カーネルは、複数のプロセスを実行する際に効率的にメモリを使うために存在する仮想的なメモリである仮想メモリを複数のプロセスのそれぞれに提供する。また、仮想メモリに対して、実在のメモリを、「物理メモリ」と呼称する。ここで、仮想メモリは、プロセスごとに独立したものとなる。以下に説明する例では、説明の簡略化のため、１つのプログラムが１つのプロセスを有するものとする。
【００１３】
また、カーネルは、物理メモリを分割した分割領域ごとの固まりで管理する。以下、分割領域を、「ページ」と称する。ページのサイズは、単一のサイズでもよいし、異なる複数のサイズであってもよい。また、ページは、どのようなデータサイズでもよく、例えば、４ｋバイト、８ｋバイト、１６ｋバイト等である。そして、仮想メモリに対応する物理メモリを提供するための仕組みとして、ページテーブルが存在する。ページテーブルは、仮想メモリと物理メモリとの対応関係を管理するテーブルである。
【００１４】
図１の例では、情報処理装置１０１は、物理メモリの記憶領域１１１を、ｎ個のページに分割する。そして、情報処理装置１０１は、分割した各ページを管理情報１１３で管理する。管理情報１１３の具体的な例については、図５で説明する。
【００１５】
そして、メモリダンプの採取時に、情報処理装置１０１の利用者の秘密である情報が含まれると、秘密である情報もメモリダンプに含まれることになる。秘密である情報を、以下、「秘密情報」と称する場合がある。ここで、秘密情報は、利用者が第三者に取得されたくないデータであればどのようなデータでもよい。例えば、秘密情報は、利用者の個人情報、利用者の顧客の名簿情報や業務上の未公開の技術文書、また、利用者が他者から預かった機密情報等である。
【００１６】
昨今、情報漏えいに対する社会の意識が高まってきており、メモリダンプ内にコンピュータ利用者の秘密情報を第三者が読み取れる形で含まれることが問題視されるようになっている。このため、メモリダンプ内の秘密情報を第三者に読み取られないように秘匿することが要求される。
【００１７】
秘密情報を秘匿する技術としては、例えば、メモリダンプ要求が出されると、予め指定された重要プログラムのデータとして分類された重要データを暗号化し、暗号化した重要データを記憶装置に格納するものがある。しかしながら、メモリの記憶領域の一部や全部のデータをダンプすると、秘密であるデータが漏えいすることがある。
【００１８】
具体的には、例えば、アプリケーションプログラムが扱う秘密情報をカーネルが処理する場合、記憶領域の一部となるカーネル空間の記憶領域には、秘密情報をコピーしたデータが格納される。そして、秘密情報をカーネル空間の記憶領域にコピーすると、コピー先のデータが秘密であることが判断することができなくなる。このため、不具合の調査のためにカーネル空間の記憶領域をダンプすると、コピー先のデータが暗号化されずにダンプされて、秘密情報が漏えいすることになる。
【００１９】
また、プログラムの割り当てが解放されたメモリのデータは、他のプログラムによって該当のメモリ領域が再割り当てされるまで保持される場合があり、解放されたメモリのダンプが行われると、暗号化されずにダンプすることになる。
【００２０】
そこで、実施の形態１では、ユーザモードで実行中のプログラムに割り当てたページに秘密情報が格納されることを示すフラグを付け、カーネル空間へのページコピー時にフラグもコピーし、ダンプ時にフラグがあれば暗号化する方法について説明する。
【００２１】
ここで、ユーザモードは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の動作モードの１つである。また、ユーザモードと異なる動作モードとして、カーネルモードがある。カーネルモードは、ＣＰＵの制限のない動作モードである。これに対し、ユーザモードは、ＣＰＵの動作に制限がある動作モードである。具体的には、カーネルモードでは、ＣＰＵは、メモリ、周辺機器等の全てにアクセスが可能であり、全ての命令を実行することができる。これに対し、ユーザモードでは、ＣＰＵは、アクセスできるメモリの範囲に制限がある。
【００２２】
ここで、ユーザモードでアクセス可能なメモリの範囲を、「ユーザ空間」と称する。また、ユーザモードでアクセスできないメモリの範囲を、「カーネル空間」と称する。カーネルモードでは、ＣＰＵは、ユーザ空間、カーネル空間のいずれであってもアクセスすることができる。
【００２３】
図１を用いて、実施の形態１における情報処理装置１０１について説明する。情報処理装置１０１は、記憶領域１１１を分割したページを、プログラムの物理メモリとして割り当てる。そして、物理メモリの範囲を示す物理メモリ空間１１２は、カーネル空間１１４とユーザ空間１１５とに分割される。また、カーネル空間には、内部にアプリケーションプログラムのデータを一時的に格納するためのバッファ領域１１６が存在する。
【００２４】
情報処理装置１０１は、ページをユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報１２２を、割り当てたページに対応付けて記憶する。図１では、情報１２２を、黒丸で示す。また、情報１２２と割り当てたページの対応付けとして、情報処理装置１０１は、ページを管理する管理情報１１３内の割り当てたページに対応する個所に情報１２２を格納する。また、情報処理装置１０１は、ページを割り当てた後に情報１２２を対応付けて記憶してもよいし、ページを割り当てる前に情報１２２を対応付けて記憶してもよい。
【００２５】
具体的には、例えば、図１の（ａ）で示すように、情報処理装置１０１は、ページフォルトが発生した際に、ページ１２１＿ｘを、ユーザモードで実行中のプログラムに割り当てたことに応じて、管理情報１１３内のページｘに対応する個所に情報１２２を格納する。
【００２６】
次に、情報処理装置１０１は、ユーザ空間１１５であるページに格納されたデータをカーネル空間１１４であるページにコピーしたことに応じて、コピー元のページに情報１２２が対応付けられていれば、コピー先のページに情報１２２を対応付けて記憶する。ここで、情報処理装置１０１は、データをコピーする前にコピー先のページに情報１２２を対応付けて記憶する。
【００２７】
具体的には、例えば、図１の（ｂ）では、情報処理装置１０１は、カーネルに処理をさせるために、ユーザ空間１１５に割り当てられたページ１２１＿ｘのデータ「ａｂｃ…」を、バッファ領域１１６内のページ１２１＿ｙにコピーしたとする。この場合、情報処理装置１０１は、管理情報１１３内のページ１２１＿ｙに対応する個所に情報１２２を格納する。
【００２８】
そして、情報処理装置１０１は、情報１２２が対応付けられたページがダンプ対象に含まれる場合、情報１２２が対応付けられたページに格納されたデータを暗号化した暗号化データをダンプする。具体的には、例えば、図１の（ｃ）では、仮想メモリ空間を利用しているプログラムがクラッシュしたとする。そして、情報処理装置１０１は、情報処理装置１０１の管理者の指示により、カーネル空間１１４をダンプ対象としてダンプするものとする。この場合、情報１２２が対応付けられたページ１２１＿ｙはカーネル空間１１４に含まれているため、情報処理装置１０１は、ページ１２１＿ｙのデータ「ａｂｃ…」を暗号化し、暗号化した暗号化データをメモリダンプファイル１３１に書き込む。図１の（ｃ）の例では、暗号化データをハッチした領域として示す。
【００２９】
これにより、情報処理装置１０１は、秘密情報であるページ１２１＿ｙのデータ「ａｂｃ…」の漏えいを抑制することができる。次に、情報処理装置１０１のハードウェアについて、図２を用いて説明する。
【００３０】
（情報処理装置１０１のハードウェア）
図２は、情報処理装置１０１のハードウェア構成例を示す説明図である。図２において、情報処理装置１０１は、ＣＰＵ２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を含む。また、情報処理装置１０１は、ディスクドライブ２０４およびディスク２０５と、通信インターフェース２０６と、を含む。また、ＣＰＵ２０１〜ディスクドライブ２０４、通信インターフェース２０６はバス２０７によってそれぞれ接続される。
【００３１】
ＣＰＵ２０１は、情報処理装置１０１の全体の制御を司る演算処理装置である。また、情報処理装置１０１は、複数のＣＰＵを有してもよい。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される揮発性メモリである。
【００３２】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ２０４には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ２０４が磁気ディスクドライブである場合、ディスク２０５には、磁気ディスクを採用することができる。また、ディスクドライブ２０４が光ディスクドライブである場合、ディスク２０５には、光ディスクを採用することができる。また、ディスクドライブ２０４がソリッドステートドライブである場合、ディスク２０５には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００３３】
通信インターフェース２０６は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース２０６は、通信回線を通じてネットワークを介して他の装置、例えば、情報処理装置１０１を利用する利用者端末に接続される。通信インターフェース２０６には、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどを採用することができる。
【００３４】
また、情報処理装置１０１の管理者が情報処理装置１０１を直接操作する場合には、情報処理装置１０１は、図２に示したハードウェアに加え、ディスプレイ、キーボード、マウスといったハードウェアを有する。
【００３５】
次に、メモリの利用効率を高めるために確保される、ページ未満の領域を扱うための領域について、図３を用いて説明する。
【００３６】
図３は、ページ未満の領域を扱うための領域の説明図である。カーネルは、ページ未満の領域を扱うための領域を、カーネル空間に確保する。以下、ページ未満の領域を扱うための領域を、「ｓｌａｂ領域」と呼称する。ｓｌａｂ領域は、ページサイズに満たない小さなデータをコピーする際に使われる。
【００３７】
図３で示すように、ｓｌａｂ領域３０１にデータをコピーする際に、カーネルは、あるプログラムが使用するためのｓｌａｂ領域３０１を事前に確保する。このとき、あるプログラム用に確保したｓｌａｂ領域３０１内の記憶領域３０２のアドレスが、プログラムの仮想メモリ空間３０３上に保存される。記憶領域３０２のアドレスは、実際には、ページテーブル３０４を介して物理メモリ上に保存される。記憶領域３０２にコピーを行う際、記憶領域３０２のアドレスを物理メモリから読み出して、記憶領域３０２にデータをコピーする。
【００３８】
また、仮想メモリ空間３０３上にはプログラムの処理の過程で、記憶領域３０２にコピーするページ３０５のアドレスも保存される。ページ３０５のアドレスは、実際には、ｓｌａｂ領域３０１の場合と同様に、ページテーブル３０４を介して物理メモリ上に保存される。
【００３９】
このように、仮想メモリ空間３０３には、仮想メモリ空間３０３上でコピー元のページ３０５のアドレスと、コピー先の記憶領域３０２のアドレスが保持される。従って、仮想メモリ空間３０３を参照することにより、どのページのデータがどのｓｌａｂ領域にコピーされたのかという関連性を保証することができる。
【００４０】
（情報処理装置１０１の機能構成例）
図４は、情報処理装置１０１の機能構成例を示す説明図である。情報処理装置１０１は、制御部４００を有する。制御部４００は、対応付け記憶部４０１と、コピー先対応付け記憶部４０２と、ダンプ部４０３と、を含む。制御部４００は、記憶装置に記憶されたプログラムをＣＰＵ２０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などである。また、各部の処理結果は、ＣＰＵ２０１のレジスタや、ＣＰＵ２０１のキャッシュメモリ等に格納される。
【００４１】
また、情報処理装置１０１は、管理情報１１３にアクセス可能である。管理情報１１３は、カーネル空間に格納される。
【００４２】
対応付け記憶部４０１は、記憶領域を分割したページをユーザモードで実行中のプログラムに割り当てたことに応じて、ページに格納されるデータが秘密であることを示す情報１２２をページに対応付けて記憶する。また、対応付け記憶部４０１は、記憶領域を分割したページをユーザモードで実行中のプログラムに割り当てたことに応じて、ページに格納されるデータが秘密でないことを示す情報をページに対応付けてもよい。
【００４３】
また、対応付け記憶部４０１は、カーネル空間である特定のページに情報１２２を対応付けて記憶してもよい。特定のページについては、図６で説明する。
【００４４】
また、対応付け記憶部４０１は、情報１２２が対応付けられたページをプログラムとは異なる他のプログラムに割り当てたことに応じて、ページに対応付けられた情報１２２を削除する。そして、対応付け記憶部４０１は、他のプログラムがユーザモードで実行中のプログラムであれば、情報１２２を前述のページに対応付けて記憶してもよい。
【００４５】
コピー先対応付け記憶部４０２は、ユーザ空間であるページに格納されたデータをカーネル空間であるページにコピーしたことに応じて、コピー元のページに情報１２２が対応付けられていれば、コピー先のページに情報１２２を対応付けて記憶する。また、コピー元のページに情報１２２か、ページに格納されるデータが秘密でないことを示す情報のいずれかが対応付くようにし、かつ、同一の記憶領域に２つの情報のいずれかが格納されるものとする。この場合、コピー先対応付け記憶部４０２は、単に、コピー元のページにおける２つの情報のいずれかが格納される領域のデータを、コピー先のページにおける２つの情報のいずれかが格納される領域にコピーしてもよい。
【００４６】
また、コピー先対応付け記憶部４０２は、ユーザ空間であるページに格納された所定のサイズ未満のデータをカーネル空間にコピーする場合、前述のデータのコピー元のページに情報１２２が対応付けられていれば、前述のデータを特定のページにコピーする。
【００４７】
ダンプ部４０３は、情報１２２が対応付けられたページがダンプ対象に含まれる場合、前述のページに格納されたデータを暗号化した暗号化データをダンプする。ここで、暗号化の方式はどのようなものでもよい。例えば、ダンプ部４０３は、暗号化の方式として、共通鍵暗号方式を採用してもよいし、公開鍵暗号方式を採用してもよい。
【００４８】
図５は、管理情報１１３の記憶内容の一例を示す説明図である。管理情報１１３は、物理メモリ上のそれぞれのページについて管理する情報である。ここで、１つのページに対して管理する情報を、ページ管理情報５０１と称する。
【００４９】
ページ管理情報５０１は、該当のページの状態を示すフラグ、例えば、メモリ上のデータをディスクに書き込み中、などの複数の情報を保持することを示すフラグや、使用カウントの情報などを保持している。プログラムがメモリの獲得、解放などを行う延長でカーネルが動き、カーネルは、ページテーブルをたどって仮想メモリから物理メモリを検出し、ページ管理情報５０１を更新する。
【００５０】
さらに、本実施の形態におけるページ管理情報５０１は、ページに格納されたデータが、秘密情報か否かを示す秘密フラグを有する。例えば、秘密フラグは、ページ管理情報５０１の中で、ページの状態を示す状態フラグのうちの１ビットの領域に格納される。図５で示すページ管理情報５０１は、ページ管理情報５０１＿１〜ｎを有する。ページ管理情報５０１＿ｉ、ｊについては、図６で説明する。
【００５１】
例えば、図５で示す秘密フラグは、ページに格納されたデータが秘密であることを示す識別子「１」、または、ページに格納されたデータが秘密でないことを示す識別子「０」のうちのいずれかとなる。識別子「１」が、図１に示した情報１２２に相当する。
【００５２】
このように、ページ単位の領域については、秘密フラグによりページに格納されたデータが秘密情報であるか否かを判断することが可能となる。次に、ページ単位未満の領域に格納されたデータが秘密情報か否かを判断する方法について、図６で説明する。
【００５３】
図６は、秘密情報格納用領域の確保例を示す説明図である。図６で示すｓｌａｂ領域３０１は、図３で説明したように、ページ未満の領域を扱うための領域である。図６で示すように、カーネルは、ｓｌａｂ領域３０１を、秘密情報を格納する秘密情報格納用領域６０１と、秘密でない情報を格納する領域６０２とに分割する。以下、秘密情報を格納する領域を、「秘密情報格納用領域」と呼称する。図６では、秘密情報格納用領域６０１を、ハッチを付与した領域として示す。秘密情報格納用領域６０１となるページが、図４で示した特定のページとなる。
【００５４】
そして、カーネルは、秘密情報格納用領域６０１となるページのページ管理情報５０１の秘密フラグを、常に「１」に設定する。図６の例では、秘密でない情報を格納する領域６０２となるページの１つであるページ６０２ｐ＿ｉは、ページ管理情報５０１＿ｉによって管理されるページであり、秘密フラグが「０」に設定される。また、秘密情報格納用領域６０１となるページの１つであるページ６０１ｐ＿ｊは、ページ管理情報５０１＿ｊによって管理されるページであり、秘密フラグが「１」に設定される。そして、ページ未満のサイズの秘密情報は、秘密情報格納用領域６０１に格納されるようにする。
【００５５】
具体的には、図６で示すように、ページ６０１ｐ＿ｊを分割した各領域に、秘密情報が格納される。同様に、ページ６０２ｐ＿ｉを分割した各領域に、秘密でない情報が格納される。ここで、秘密情報が秘密情報格納用領域６０１に格納される例としては、アプリケーションプログラムのデータであって、ページ未満のデータサイズを有するデータをｓｌａｂ領域３０１に格納する場合である。また、秘密でない情報が領域６０２に格納される例としては、カーネルのデータであって、ページ未満のデータサイズを有するデータをｓｌａｂ領域３０１に格納する場合である。次に、秘密フラグが１に設定される例について、図７を用いて説明する。
【００５６】
図７は、秘密フラグの設定例を示す説明図である。図７の（１）で示すように、プログラム７０１の実行中に、仮想メモリ空間７０２のうちの物理メモリが割り当てられていない仮想メモリ７０３にアクセスをしようとすると、ページフォルトが発生する。ページフォルトが発生すると、カーネル７００のメモリハンドラに処理が渡り、図７の（２）で示すように、メモリハンドラは、ページテーブル３０４を用いて、物理メモリ空間７０４から物理メモリの割り当て処理を行う。
【００５７】
割り当てられる物理メモリ７０５が決定されると、図７の（３）で示すように、カーネル７００は、プログラム７０１がユーザモードで実行されているか否かを判断し、判断結果に基づいて秘密フラグを設定する。具体的には、プログラム７０１がユーザモードで実行されていれば、カーネル７００は、管理情報１１３のうち物理メモリ７０５のページ管理情報５０１の秘密フラグを「１」に設定する。一方、プログラム７０１がカーネルモードで実行されていれば、カーネル７００は、決定した物理メモリのページ管理情報５０１の秘密フラグの設定を行わない。そして、図７の（４）で示すように、プログラム７０１に処理が復帰する。
【００５８】
次に、図８を用いて、秘密フラグを設定する秘密フラグ設定処理を、フローチャートとして説明する。
【００５９】
図８は、秘密フラグ設定処理手順の一例を示すフローチャートである。プログラム７０１は、メモリアクセスを行う（ステップＳ８０１）。次に、ＣＰＵ２０１は、ページフォルトを検出する（ステップＳ８０２）。ページフォルトが発生すると、カーネル７００のメモリハンドラに処理が渡る。そして、メモリハンドラは、ページフォルトが発生した仮想アドレスに対して、メモリ割り当て処理を実行する（ステップＳ８０３）。ここで、メモリ割り当て処理を実行する契機は、ページフォルトの発生以外にも、例えば、以前にプログラム７０１が実行したときに使用したページを記憶しておき、プログラム７０１を再び実行する際に、記憶していたページを割り当ててもよい。
【００６０】
次に、メモリハンドラは、メモリ割り当て処理により、プログラム７０１に割り当てるページを決定する（ステップＳ８０４）。そして、メモリハンドラは、割り当てるページのメモリクリア処理を実行する（ステップＳ８０５）。メモリクリア処理は、図９で説明する。
【００６１】
次に、カーネル７００は、プログラムがユーザモードで実行されているか否かを判断する（ステップＳ８０６）。プログラムがユーザモードで実行されている場合（ステップＳ８０６：Ｙｅｓ）、カーネル７００は、ページ管理情報のうちの割り当てページの秘密フラグを、「１」に設定する（ステップＳ８０７）。
【００６２】
ステップＳ８０７の処理終了後、またはプログラムがユーザモードで実行されていない場合（ステップＳ８０６：Ｎｏ）、カーネル７００は、秘密フラグ設定処理を終了する。この後、プログラム７０１に処理が復帰する。秘密フラグ設定処理を実行することにより、情報処理装置１０１は、秘密情報の秘密フラグを「１」に設定するため、暗号化の対象を特定することができる。
【００６３】
次に、メモリクリア処理のフローチャートについて、図９を用いて説明する。秘密情報を扱うプログラムが終了した場合、終了したプログラムが利用していたページおよび、ページ管理情報５０１は、他のプログラムによって利用されるまで削除されない。そして、他のプログラムがページを利用する場合、メモリハンドラによってメモリの内容がゼロクリアされる。ゼロクリアが終了すると、秘密フラグを「０」に設定し、他のプログラムが使用するために引き渡される。
【００６４】
図９は、メモリクリア処理手順の一例を示すフローチャートである。メモリハンドラは、割り当てたページの内容をゼロクリアする（ステップＳ９０１）。次に、メモリハンドラは、ゼロクリアしたページの秘密フラグを、「０」に設定する（ステップＳ９０２）。ここで、秘密フラグを「０」に設定することは、情報１２２である「１」が設定されていた場合には、「１」を上書きして「０」に設定することになるため、情報１２２を削除することになる。ステップＳ９０２の処理終了後、メモリハンドラは、メモリクリア処理を終了する。
【００６５】
次に、ユーザ空間からカーネル空間内にデータをコピーするバッファ領域コピー処理のフローチャートについて、図１０を用いて説明する。ここで、バッファ領域コピー処理は、カーネル７００により実行される。具体的には、例えば、ユーザモードのプログラムがバッファ領域にデータを格納する場合、カーネル７００に処理が渡り、カーネル７００がバッファ領域コピー処理を行う。このとき、カーネル７００は、依頼元となるプログラムを特定している。図１０では、依頼元となるプログラムがユーザモードで実行中のプログラムであるプログラム７０１の場合の例を示す。
【００６６】
図１０は、バッファ領域コピー処理手順の一例を示すフローチャートである。カーネル７００は、コピー元のメモリのデータのサイズが、ページのサイズ単位か、ページのサイズ未満かのいずれに一致するかを判断する（ステップＳ１００１）。コピー元のメモリのデータのサイズがページのサイズ単位である場合（ステップＳ１００１：ページのサイズ単位）、カーネル７００は、コピー先のページの秘密フラグを、コピー元のページの秘密フラグと同一の値に設定する（ステップＳ１００２）。そして、カーネル７００は、ページのサイズ単位で、コピー元のメモリのデータをバッファ領域にコピーする（ステップＳ１００３）。
【００６７】
一方、コピー元のメモリのデータのサイズがページのサイズ未満である場合（ステップＳ１００１：ページのサイズ未満）、カーネル７００は、秘密情報格納用領域６０１に、コピー元のメモリのデータをコピーする（ステップＳ１００４）。
【００６８】
ステップＳ１００３、またはステップＳ１００４の処理終了後、カーネル７００は、バッファ領域コピー処理を終了する。この後、プログラム７０１に処理が復帰する。バッファ領域コピー処理を実行することにより、情報処理装置１０１は、秘密情報がコピーされたコピー先のページのデータも秘密情報とすることができる。
【００６９】
また、図１０で示す処理において、カーネル７００は、依頼元となるプログラムがユーザモードで実行中のプログラムであるため、秘密情報格納用領域６０１にコピー元のメモリのデータをコピーする処理を行うが、これに限るものではない。例えば、カーネル７００は、依頼元となるプログラムの仮想メモリ空間を参照し、コピー元のメモリのデータに対応するページのページ管理情報５０１の秘密フラグを取得してもよい。そして、カーネル７０００は、取得した秘密フラグが「１」であれば秘密情報格納用領域６０１にコピー元のメモリのデータをコピーし、取得した秘密フラグが「０」であれば秘密でない情報を格納する領域６０２にコピー元のメモリのデータをコピーする。
【００７０】
次に、図１１を用いてメモリダンプ採取の例を示し、図１２を用いてメモリダンプ採取手順の一例を示す。
【００７１】
図１１は、メモリダンプ採取の一例を示す説明図である。システムダウンなどのトラブルが発生すると、メモリダンプの採取処理を行うプログラムが起動する。メモリダンプの採取処理を行うプログラムを、図１１で示すように、メモリダンプ採取プログラム１１０１と呼称する。メモリダンプ採取プログラム１１０１は、ＣＰＵ２０１が実行する。
【００７２】
メモリダンプ採取プログラム１１０１は、物理メモリのデータを１ページずつメモリダンプとしてメモリダンプファイル１１０２に書き出す。メモリダンプ採取プログラム１１０１は、カーネル空間のメモリについて、次のページのページ管理情報５０１の秘密フラグが「１」かどうかのチェックを行う。そして、秘密フラグが「１」ならば、メモリダンプ採取プログラム１１０１は、ＣＰＵ２０１の暗号化機能を用いてページの暗号化をしたうえで、メモリダンプへの出力を行う。なお、秘密情報格納用領域６０１のページについては、ページ管理情報５０１の秘密フラグが「１」となっているので、この手法により判別することが可能である。このように、メモリダンプ採取プログラム１１０１は、秘密情報格納用領域６０１のデータの暗号化有無の判別を別途行わなくてよい。
【００７３】
一方、秘密フラグが「０」のページについて、メモリダンプ採取プログラム１１０１は、暗号化せずにそのままメモリダンプへ出力する。メモリダンプ採取プログラム１１０１は、ページ管理情報５０１の秘密フラグに応じた処理をカーネル空間の全てのページをメモリダンプとして出力するまで繰り返す。一方、ユーザ空間のメモリについて、メモリダンプ採取プログラム１１０１は、メモリダンプ採取の設定で採取しないように選択することもできる。ユーザ空間のメモリを採取する場合、メモリダンプ採取プログラム１１０１は、全てのページを暗号化してメモリダンプへの出力を行う。そして、メモリダンプ採取プログラム１１０１は、カーネル空間、ユーザ空間の全てのページをメモリダンプとして出力すると、メモリダンプ採取処理は終了する。
【００７４】
図１１の例では、メモリダンプファイル１１０２内におけるハッチを付与した領域が、暗号化した領域となる。次に、図１２を用いて、メモリダンプ採取処理のフローチャートについて説明する。
【００７５】
図１２は、メモリダンプ採取処理手順の一例を示すフローチャートである。メモリダンプ採取プログラム１１０１は、カーネル空間の先頭のページを選択する（ステップＳ１２０１）。次に、メモリダンプ採取プログラム１１０１は、選択したページの秘密フラグの値が次に示す値のいずれに一致するかを判断する（ステップＳ１２０２）。次に示す値は、「０」と、「１」と、である。秘密フラグの値が「０」である場合（ステップＳ１２０２：「０」）、メモリダンプ採取プログラム１１０１は、選択したページのデータを暗号化せずにメモリダンプに出力する（ステップＳ１２０３）。
【００７６】
一方、秘密フラグの値が「１」である場合（ステップＳ１２０２：「１」）、メモリダンプ採取プログラム１１０１は、選択したページのデータを暗号化してメモリダンプに出力する（ステップＳ１２０４）。
【００７７】
ステップＳ１２０３、またはステップＳ１２０４の処理終了後、メモリダンプ採取プログラム１１０１は、カーネル空間に次のページがあるか否かを判断する（ステップＳ１２０５）。カーネル空間に次のページがある場合（ステップＳ１２０５：Ｙｅｓ）、メモリダンプ採取プログラム１１０１は、次のページを選択する（ステップＳ１２０６）。そして、メモリダンプ採取プログラム１１０１は、ステップＳ１２０２の処理に移行する。
【００７８】
一方、カーネル空間に次のページがない場合（ステップＳ１２０５：Ｎｏ）、メモリダンプ採取プログラム１１０１は、ユーザ空間のメモリダンプを採取するか否かを判断する（ステップＳ１２０７）。ユーザ空間のメモリダンプを採取する場合（ステップＳ１２０７：Ｙｅｓ）、メモリダンプ採取プログラム１１０１は、ユーザ空間の先頭のページを選択する（ステップＳ１２０８）。
【００７９】
そして、メモリダンプ採取プログラム１１０１は、選択したページのデータを暗号化してメモリダンプに出力する（ステップＳ１２０９）。次に、メモリダンプ採取プログラム１１０１は、ユーザ空間に次のページがあるか否かを判断する（ステップＳ１２１０）。ユーザ空間に次のページがある場合（ステップＳ１２１０：Ｙｅｓ）、メモリダンプ採取プログラム１１０１は、次のページを選択する（ステップＳ１２１１）。そして、メモリダンプ採取プログラム１１０１は、ステップＳ１２０９の処理に移行する。
【００８０】
ユーザ空間のメモリダンプを採取しない場合（ステップＳ１２０７：Ｎｏ）、または、ユーザ空間に次のページがない場合（ステップＳ１２１０：Ｎｏ）、メモリダンプ採取プログラム１１０１は、メモリダンプ採取処理を終了する。メモリダンプ採取処理を実行することにより、情報処理装置１０１は、秘密情報を暗号化してダンプすることができる。
【００８１】
次に、図１２に示したメモリダンプを復号する復号処理について説明する。ここで、採取したメモリダンプには、暗号化された部分、すなわち、ユーザの秘密情報の部分と、暗号化されていない部分とが存在する。メモリダンプを用いたトラブル調査のほとんどのケースでは、ユーザの秘密情報の部分を参照しなくてよく、暗号化された部分を復号する要求が発生することはない。しかしながら、トラブル調査の原因究明のために復号する場合がまれにある。この場合、復号キーを用いて暗号化された部分を復号して、新たなダンプファイルとして出力することになる。ここで、復号処理を実行する装置は、情報処理装置１０１でもよいし、他の装置でもよい。以下の例では、説明の簡略化のため、情報処理装置１０１が復号処理を行うものとする。
【００８２】
暗号化されたメモリダンプを復号する際、情報処理装置１０１は、メモリダンプに含まれるページ管理情報５０１を使用する。ページ管理情報５０１はカーネル空間上にあり、暗号化されない。従って、ページ管理情報５０１内の秘密フラグを参照することにより、対象のページが暗号化されているか否かを判断することができる。また、ユーザ空間については、カーネル空間のメモリよりも調査に使用することが少ないので、ユーザ空間を復号するか否かを判定するようにしてもよい。以下、図１３、図１４を用いて復号処理のフローチャートを示す。
【００８３】
図１３は、復号処理手順の一例を示すフローチャート（その１）である。また、図１４は、復号処理手順の一例を示すフローチャート（その２）である。情報処理装置１０１は、復号キーを読み込む（ステップＳ１３０１）。次に、情報処理装置１０１は、ユーザ空間のメモリを復号するか否かの設定を読み込む（ステップＳ１３０２）。そして、情報処理装置１０１は、カーネル空間の先頭のページを選択する（ステップＳ１３０３）。
【００８４】
次に、情報処理装置１０１は、復号対象のメモリダンプ内における選択したページの秘密フラグの値が次に示す値のいずれに一致するかを判断する（ステップＳ１３０４）。次に示す値は、「０」と、「１」と、である。秘密フラグの値が「１」である場合（ステップＳ１３０４：「１」）、情報処理装置１０１は、復号キーを用いて、選択したページのデータを復号する（ステップＳ１３０５）。
【００８５】
ステップＳ１３０５の処理終了後、または、秘密フラグの値が「０」である場合（ステップＳ１３０４：「０」）、情報処理装置１０１は、新たなダンプファイルへ出力する（ステップＳ１３０６）。具体的には、ステップＳ１３０５の処理終了後であれば、情報処理装置１０１は、復号して得たデータを新たなダンプファイルへ出力する。一方、ステップＳ１３０４：「０」であれば、情報処理装置１０１は、選択したページのデータそのものを新たなダンプファイルへ出力する。
【００８６】
そして、情報処理装置１０１は、カーネル空間に次のページがあるか否かを判断する（ステップＳ１３０７）。カーネル空間に次のページがある場合（ステップＳ１３０７：Ｙｅｓ）、情報処理装置１０１は、次のページを選択する（ステップＳ１３０８）。そして、情報処理装置１０１は、ステップＳ１３０４の処理に移行する。
【００８７】
一方、カーネル空間に次のページがない場合（ステップＳ１３０７：Ｎｏ）、情報処理装置１０１は、ユーザ空間のメモリを復号するか否かを判断する（ステップＳ１４０１）。ユーザ空間のメモリを復号しない場合（ステップＳ１４０１：Ｎｏ）、情報処理装置１０１は、暗号化されたユーザ空間のメモリダンプの内容を、新たなダンプファイルに追加する（ステップＳ１４０２）。ステップＳ１４０２の処理終了後、情報処理装置１０１は、復号処理を終了する。
【００８８】
一方、ユーザ空間のメモリを復号する場合（ステップＳ１４０１：Ｙｅｓ）、情報処理装置１０１は、ユーザ空間の先頭のページを選択する（ステップＳ１４０３）。次に、情報処理装置１０１は、復号キーを用いて、選択したページのデータを復号する（ステップＳ１４０４）。そして、情報処理装置１０１は、復号して得たデータを、新たなダンプファイルへ出力する（ステップＳ１４０５）。次に、情報処理装置１０１は、ユーザ空間に次のページがあるか否かを判断する（ステップＳ１４０６）。ユーザ空間に次のページがある場合（ステップＳ１４０６：Ｙｅｓ）、情報処理装置１０１は、次のページを選択する（ステップＳ１４０７）。そして、情報処理装置１０１は、ステップＳ１４０４の処理に移行する。
【００８９】
一方、ユーザ空間に次のページがない場合（ステップＳ１４０６：Ｎｏ）、情報処理装置１０１は、復号処理を終了する。復号処理を実行することにより、情報処理装置１０１は、暗号化されたダンプファイルを復号できて、復号した秘密情報を原因究明のために用いることができる。
【００９０】
以上説明したように、情報処理装置１０１は、ユーザモードで実行中のプログラムに割り当てたページに秘密情報が格納されることを示すフラグを付け、カーネル空間へのページコピー時にフラグもコピーし、ダンプ時にフラグがあれば暗号化する。これにより、情報処理装置１０１は、カーネル空間内のコピー先の秘密情報を識別することができ、秘密情報の漏えいを抑制することができる。
【００９１】
また、情報処理装置１０１は、秘密情報格納用領域６０１に、ページサイズ未満のデータを格納してもよい。これにより、情報処理装置１０１は、メモリの利用効率を維持したまま、ダンプ時に秘密情報を暗号化することができる。
【００９２】
また、情報処理装置１０１は、情報１２２が対応付けられたページを他のプログラムに割り当てたことに応じてページに対応付けられた情報１２２を削除し、他のプログラムがユーザモードで実行中のプログラムであれば、該当のページに対応付けて記憶してもよい。これにより、情報１２２が対応付けられたページが解放された後でも、別のプログラムに割り当てられる情報１２２が残っているため、情報処理装置１０１は、解放されたメモリに格納された秘密情報を暗号化することができる。
【００９３】
また、情報処理装置１０１は、情報処理装置１０１の運用中にページ管理情報５０１の秘密フラグの設定、および、秘密情報格納用領域６０１への秘密情報の格納を行うため、メモリダンプ採取時に秘密情報が存在する領域を検索するための操作を行わなくてよい。従って、情報処理装置１０１は、メモリダンプ要求が出された際に予め指定された重要プログラムのデータとして分類された重要データを暗号化し、暗号化した重要データを記憶装置に格納する方法に比べて、メモリダンプ採取にかかる時間を短縮することができる。
【００９４】
（実施の形態２）
実施の形態１の手法により、利用者の秘密情報の暗号化を実現することができる。これに加えて、特定の装置からのデータのメモリダンプの別ファイルへの出力、ハードウェアキーを用いたよりセキュアな暗号化などの要求も考えられる。そこで、実施の形態２では、ページ管理情報５０１の秘密フラグを複数のビットで持たせ、データの取得元の装置ごとに異なるフラグの値を設定してメモリダンプ採取の方法を変えることにより、前述した要求を満たすことを目的とする。なお、実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【００９５】
図１５は、実施の形態２にかかるシステム１５００の動作例を示す説明図である。システム１５００は、情報処理装置１５０１と、ＰＣ１、ＰＣ２とを有する。情報処理装置１５０１は、情報処理装置１０１と同様のハードウェアを有する。ＰＣ１と、ＰＣ２とは、情報処理装置１０１が有するハードウェアに加え、ディスプレイ、キーボード、マウスといったハードウェアを有する。
【００９６】
ここで、ＰＣ１、ＰＣ２とは、利用者の秘密情報を扱うコンピュータである。また、ディスク２０５にも、利用者の秘密情報が記憶されている。ここで、ＰＣ１が扱う秘密情報は、ＰＣ２が扱う秘密情報や、ディスク２０５が記憶する秘密情報よりもより重要であり、より漏えいしてはいけないものであるとする。この重要な秘密情報を守るため、ＰＣ１と情報処理装置１５０１とは、専用のネットワークＮＷ１で接続されている。また、ＰＣ２と情報処理装置１５０１とは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークＮＷ２で接続されている。そして、情報処理装置１０１は、ネットワークＮＷ１とネットワークＮＷ２とに対して、異なるネットワークインターフェースカードにより接続する。
【００９７】
ここで、実施の形態２にかかる情報処理装置１５０１の機能構成例については、情報処理装置１０１の機能構成とほぼ同一であるため、図示を省略する。以下に、実施の形態２にかかる対応付け記憶部４０１と、コピー先対応付け記憶部４０２と、ダンプ部４０３との各機能について説明する。以下に記載の対応付け記憶部４０１〜ダンプ部４０３は、実施の形態２にかかるものとする。
【００９８】
情報処理装置１５０１は、情報処理装置１５０１に接続する複数の装置の各々の装置に対応して、各々の装置から取得されるデータが秘密であるか否かを示す設定情報を記憶する。また、情報処理装置１５０１は、各々の装置に対応して、各々の装置から取得されるデータのダンプ先ファイルを特定する情報を含んでもよい。また、設定情報は、各々の装置から取得されるデータが秘密であるか否かを示す値と、ダンプ先ファイルを特定する情報との組み合わせに対応する値を記憶してもよい。
【００９９】
対応付け記憶部４０１は、複数の装置のうちのいずれかの装置からデータを取得したことに応じて、設定情報を参照していずれかの装置から取得したデータが秘密であることが示されていれば、データを格納するページに情報１２２を対応付けて記憶する。
【０１００】
また、対応付け記憶部４０１は、いずれかの装置からデータを取得したことに応じて、設定情報を参照していずれかの装置から取得されるデータのダンプ先ファイルを特定する特定情報を、前述のデータを格納するページに対応付けて記憶してもよい。
【０１０１】
コピー先対応付け記憶部４０２は、ユーザ空間であるページに格納されたデータをカーネル空間であるページにコピーしたことに応じて、コピー元のページに特定情報が対応付けられていれば、コピー先のページに特定情報を対応付けて記憶する。
【０１０２】
ダンプ部４０３は、特定情報が対応付けられたページがダンプ対象に含まれる場合、前述のページに格納されたデータを特定情報から特定されるダンプ先ファイルにダンプする。
【０１０３】
また、ダンプ部４０３は、情報１２２と特定情報とが対応付けられたページがダンプ対象に含まれる場合、前述のページに格納されたデータを暗号化した暗号化データを特定情報から特定されるダンプ先ファイルにダンプしてもよい。
【０１０４】
以下に、図１５で示した例に従って、実施の形態２における一例の動作を説明する。まず、情報処理装置１５０１は、データ取得元の装置ごとにメモリダンプ採取時の扱い方を記載したメモリダンプ設定ファイル１５１１を記憶する。メモリダンプ設定ファイル１５１１は、メモリダンプ採取時の扱い方として、情報処理装置１５０１に接続する複数の装置の各々の装置に対応して、設定情報と特定情報との組み合わせに対応する値を記憶する。
【０１０５】
例えば、メモリダンプ設定ファイル１５１１は、ＰＣ２について、ＰＣ２から取得されるデータが秘密であり、かつ、ＰＣ２から取得されるデータのダンプ先ファイルが主のメモリダンプファイルであることを示す情報を記憶する。
【０１０６】
また、メモリダンプ設定ファイル１５１１は、ユーザの操作により作成される。メモリダンプ設定ファイル１５１１は、情報処理装置１５０１の起動時に読み込まれ、カーネル１５０２が認識することができる。図１５の例では、メモリダンプ設定ファイル１５１１は、ＰＣ１からの通信については特定情報として別ファイルにダンプすること、その他の通信については暗号化することが記載されている。
【０１０７】
情報処理装置１５０１は、カーネル空間内のバッファ領域１５１２の部分に秘密情報格納用領域６０１を複数用意する。例えば、秘密フラグが２ビットであり、設定情報と特定情報との組み合わせに対応する値として、「１０」、「０１」、「００」という３つの値を使用するものとする。そして、「１０」が、ＰＣ１から取得したデータであることを示す値であるとする。また、「０１」が、ＰＣ２またはディスク２０５から取得したデータであることを示す値であるとする。そして、「００」が、秘密でないデータを示す値であるとする。この場合、情報処理装置１５０１は、「１０」用と「０１」用という、２つの秘密情報格納用領域６０１を用意する。図１５では、情報処理装置１５０１は、バッファ領域１５１２内に、秘密情報格納用領域１５２１、秘密情報格納用領域１５２２を用意する。
【０１０８】
そして、カーネル１５０２は、ファイル読み込みやネットワーク通信が発生すると、データの取得元を識別して、メモリダンプ設定ファイル１５１１で定義された内容と照合する。ＰＣ１からの通信であった場合、カーネル１５０２は、データを格納するページのページ管理情報５０１の秘密フラグを「１０」に設定する。一方、ＰＣ２からの通信や、ディスク２０５のファイル読み込みであった場合は、カーネル１５０２は、データを格納するページのページ管理情報５０１の秘密フラグを「０１」に設定する。秘密フラグ設定処理のフローチャートについては、図１６で説明する。
【０１０９】
メモリダンプ採取時には、メモリダンプ採取プログラム１５２３は、ページごとにページ管理情報５０１の秘密フラグを確認し、秘密フラグが「１０」であった場合、主のメモリダンプ１５３１とは別のファイル１５３２にデータを書き出す。そして、メモリダンプ採取プログラム１５２３は、主のメモリダンプ１５３１内の本来データが書き込まれるはずだった領域をゼロクリアする。ここで、別のファイル１５３２にデータを書き出す際、メモリダンプ設定ファイル１５１１にＰＣ１からの通信について別ファイルに暗号化してダンプと記載されている場合、情報処理装置１５０１は、暗号化して別のファイル１５３２に書き込む。
【０１１０】
秘密フラグが「０１」であった場合、メモリダンプ採取プログラム１５２３は、暗号化して主のメモリダンプ１５３１にデータを出力する。メモリダンプ採取処理のフローチャートについては、図１７で説明する。
【０１１１】
図１５の例では、メモリダンプ１５３１内の塗りつぶした領域がゼロクリアされた領域であり、ハッチを付与した領域が暗号化した領域を示す。
【０１１２】
図１６は、実施の形態２にかかる秘密フラグ設定処理手順の一例を示すフローチャートである。カーネル１５０２は、メモリへのデータコピーを検出する（ステップＳ１６０１）。次に、カーネル１５０２は、データ取得元を特定する（ステップＳ１６０２）。そして、カーネル１５０２は、特定したデータ取得元とメモリダンプ設定ファイルとの照合結果を確認する（ステップＳ１６０３）。
【０１１３】
照合結果として、取得元がＰＣ１である場合（ステップＳ１６０３：取得元がＰＣ１）、カーネル１５０２は、コピー先のページの秘密フラグに、「１０」を設定する（ステップＳ１６０４）。また、照合結果として、取得元がＰＣ２またはディスク２０５である場合（ステップＳ１６０３：取得元がＰＣ２またはディスク）、カーネル１５０２は、コピー先のページの秘密フラグに、「０１」を設定する（ステップＳ１６０５）。ステップＳ１６０４、またはステップＳ１６０５の処理終了後、カーネル１５０２は、秘密フラグ設定処理を終了する。
【０１１４】
図１７は、実施の形態２にかかるメモリダンプ採取処理手順の一例を示すフローチャート（その１）である。また、図１８は、実施の形態２にかかるメモリダンプ採取処理手順の一例を示すフローチャート（その２）である。
【０１１５】
メモリダンプ採取プログラム１５２３は、カーネル空間の先頭のページを選択する（ステップＳ１７０１）。次に、メモリダンプ採取プログラム１５２３は、選択したページの秘密フラグの値が次に示す値のいずれに一致するかを判断する（ステップＳ１７０２）。次に示す値は、「１０」と、「００」と、「０１」とである。選択したページの秘密フラグの値が「１０」である場合（ステップＳ１７０２：「１０」）、メモリダンプ採取プログラム１５２３は、選択したページのデータを別のファイルに出力する（ステップＳ１７０３）。そして、メモリダンプ採取プログラム１５２３は、主のメモリダンプの本来書き込まれる領域をゼロ書き込みする（ステップＳ１７０４）。
【０１１６】
選択したページの秘密フラグの値が「００」である場合（ステップＳ１７０２：「００」）、メモリダンプ採取プログラム１５２３は、選択したページのデータを暗号化せずに主のメモリダンプに出力する（ステップＳ１７０５）。また、選択したページの秘密フラグの値が「０１」である場合（ステップＳ１７０２：「０１」）、メモリダンプ採取プログラム１５２３は、選択したページのデータを暗号化して主のメモリダンプに出力する（ステップＳ１７０６）。
【０１１７】
ステップＳ１７０４〜ステップＳ１７０６のうちのいずれか一つを実行終了後、メモリダンプ採取プログラム１５２３は、カーネル空間に次のページがあるか否かを判断する（ステップＳ１７０７）。カーネル空間に次のページがある場合（ステップＳ１７０７：Ｙｅｓ）、メモリダンプ採取プログラム１５２３は、次のページを選択する（ステップＳ１７０８）。そして、メモリダンプ採取プログラム１５２３は、ステップＳ１７０２の処理に移行する。
【０１１８】
一方、カーネル空間に次のページがない場合（ステップＳ１７０７：Ｎｏ）、メモリダンプ採取プログラム１５２３は、ユーザ空間のメモリダンプを採取するか否かを判断する（ステップＳ１８０１）。ユーザ空間のメモリダンプを採取する場合（ステップＳ１８０１：Ｙｅｓ）、メモリダンプ採取プログラム１５２３は、ユーザ空間の先頭のページを選択する（ステップＳ１８０２）。次に、メモリダンプ採取プログラム１５２３は、選択したページの秘密フラグの値が次に示す値のいずれに一致するかを判断する（ステップＳ１８０３）。次に示す値は、「１０」と、「００」または「０１」と、である。
【０１１９】
選択したページの秘密フラグの値が「１０」である場合（ステップＳ１８０３：「１０」）、メモリダンプ採取プログラム１５２３は、選択したページのデータを別のファイルに出力する（ステップＳ１８０４）。そして、メモリダンプ採取プログラム１５２３は、主のメモリダンプの本来書き込まれる領域をゼロ書き込みする（ステップＳ１８０５）。
【０１２０】
選択したページの秘密フラグの値が「００」または「０１」である場合（ステップＳ１８０３：「００」または「０１」）、メモリダンプ採取プログラム１５２３は、選択したページのデータを暗号化して主のメモリダンプに出力する（ステップＳ１８０６）。
【０１２１】
ステップＳ１８０５、またはステップＳ１８０６の処理終了後、メモリダンプ採取プログラム１５２３は、ユーザ空間に次のページがあるか否かを判断する（ステップＳ１８０７）。ユーザ空間に次のページがある場合（ステップＳ１８０７：Ｙｅｓ）、メモリダンプ採取プログラム１５２３は、次のページを選択する（ステップＳ１８０８）。そして、メモリダンプ採取プログラム１５２３は、ステップＳ１８０３の処理に移行する。
【０１２２】
ユーザ空間のメモリダンプを採取しない場合（ステップＳ１８０１：Ｎｏ）、または、ユーザ空間に次のページがない場合（ステップＳ１８０７：Ｎｏ）、メモリダンプ採取プログラム１５２３は、メモリダンプ採取処理を終了する。
【０１２３】
実施の形態２におけるメモリダンプ採取処理により得たメモリダンプの復号処理については、実施の形態１におけるメモリダンプ採取処理と同等であるため、図示を省略する。具体的には、実施の形態２における復号処理では、複数の秘密フラグのそれぞれについて異なる復号キーがあるので、情報処理装置１５０１は、秘密フラグの値に応じた復号キーを用いて、実施の形態１における復号処理を行えばよい。これにより、情報処理装置１５０１は、復号されたメモリダンプを得ることができる。
【０１２４】
以上説明したように、情報処理装置１５０１は、複数の装置のうちのいずれかの装置から取得したデータが秘密であることが示されていれば、データを格納するページに情報１２２を対応付けて記憶してもよい。これにより、情報処理装置１５０１は、秘密情報を有する装置から取得したデータに限定して暗号化することができる。
【０１２５】
また、情報処理装置１５０１は、設定情報を参照していずれかの装置から取得されるデータのダンプ先ファイルを特定する特定情報を、データを格納する分割領域に対応付けて記憶してもよい。これにより、情報処理装置１５０１は、より重要な秘密情報を、主のメモリダンプとは別のダンプ先ファイルに格納することができる。そして、情報処理装置１５０１は、例えば、秘密鍵の流出等により、第三者が主のメモリダンプの復号することが可能になった結果、より重要な秘密情報が第三者に得られてしまうという、より重要な秘密情報の漏えいリスクを下げることができる。
【０１２６】
また、情報処理装置１５０１は、情報１２２と特定情報とが対応付けられたページがダンプ対象に含まれる場合、ページに格納されたデータを暗号化した暗号化データを特定情報から特定されるダンプ先ファイルにダンプしてもよい。これにより、情報処理装置１５０１は、より重要な秘密情報を、主のメモリダンプとは別のダンプ先ファイルに格納し、さらに暗号化することができる。従って、情報処理装置１５０１は、例えば、別のダンプ先ファイルの流出によって、第三者がより重要な秘密情報を暗号化した暗号化データを取得したとしても、第三者は復号が行えないので、より重要な秘密情報の漏えいリスクを下げることができる。
【０１２７】
また、実施の形態１、２で説明したダンプ処理方法は、ページ管理情報の秘密フラグに基づいて秘密情報か否かを判定する方法であり、メモリダンプ固有の方法ではない。従って、プロセスのコアダンプ採取についても、実施の形態１、２で説明したダンプ処理方法を適用することができる。
【０１２８】
なお、実施の形態１、２で説明したダンプ処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ダンプ処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ダンプ処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１２９】
上述した実施の形態１、２に関し、さらに以下の付記を開示する。
【０１３０】
（付記１）コンピュータに、
記憶領域を分割した分割領域をユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報を前記分割領域に対応付けて記憶し、
前記記憶領域のうちのユーザ空間である分割領域に格納されたデータを前記記憶領域のうちのカーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データのコピー先の分割領域に前記情報を対応付けて記憶し、
前記情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データをダンプする、
処理を実行させることを特徴とするダンプ処理プログラム。
【０１３１】
（付記２）前記記憶領域は、所定のサイズで分割されており、
前記コンピュータに、
前記カーネル空間である特定の分割領域に前記情報を対応付けて記憶し、
前記ユーザ空間である分割領域に格納された前記所定のサイズ未満のデータを前記カーネル空間にコピーする場合、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データを前記特定の分割領域にコピーする、
処理を実行させることを特徴とする付記１に記載のダンプ処理プログラム。
【０１３２】
（付記３）前記コンピュータに、
前記情報が対応付けられた分割領域を前記プログラムとは異なる他のプログラムに割り当てたことに応じて、当該分割領域に対応付けられた前記情報を削除し、
前記他のプログラムが前記ユーザモードで実行中のプログラムであれば、前記情報を当該分割領域に対応付けて記憶することを特徴とする付記１または２に記載のダンプ処理プログラム。
【０１３３】
（付記４）前記コンピュータに、複数の装置が接続されており、
前記複数の装置の各々の装置に対応して、前記各々の装置から取得されるデータが秘密であるか否かを示す設定情報を記憶しており、
前記分割領域に対応付けて記憶する処理は、
前記複数の装置のうちのいずれかの装置からデータを取得したことに応じて、前記設定情報を参照して前記いずれかの装置から取得したデータが秘密であることが示されていれば、当該データを格納する分割領域に前記情報を対応付けて記憶することを特徴とする付記１〜３のいずれか一つに記載のダンプ処理プログラム。
【０１３４】
（付記５）前記設定情報は、前記各々の装置に対応して、前記各々の装置から取得されるデータのダンプ先ファイルを特定する情報を記憶しており、
前記分割領域に対応付けて記憶する処理は、
前記複数の装置のいずれかの装置からデータを取得したことに応じて、前記設定情報を参照して前記いずれかの装置から取得されるデータのダンプ先ファイルを特定する特定情報を、当該データを格納する分割領域に対応付けて記憶し、
前記コピー先の分割領域に前記情報を対応付けて記憶する処理は、
前記ユーザ空間である分割領域に格納されたデータを前記カーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記特定情報が対応付けられていれば、当該データのコピー先の分割領域に前記特定情報を対応付けて記憶し、
前記ダンプする処理は、
前記特定情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを前記特定情報から特定されるダンプ先ファイルにダンプすることを特徴とする付記４に記載のダンプ処理プログラム。
【０１３５】
（付記６）前記ダンプする処理は、
前記情報と前記特定情報とが対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データを前記特定情報から特定されるダンプ先ファイルにダンプすることを特徴とする付記５に記載のダンプ処理プログラム。
【０１３６】
（付記７）記憶領域を分割した分割領域をユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報を前記分割領域に対応付けて記憶し、
前記記憶領域のうちのユーザ空間である分割領域に格納されたデータを前記記憶領域のうちのカーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データのコピー先の分割領域に前記情報を対応付けて記憶し、
前記情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データをダンプする、
制御部を有することを特徴とする情報処理装置。
【０１３７】
（付記８）コンピュータが、
記憶領域を分割した分割領域をユーザモードで実行中のプログラムに割り当てたことに応じて、格納されるデータが秘密であることを示す情報を前記分割領域に対応付けて記憶し、
前記記憶領域のうちのユーザ空間である分割領域に格納されたデータを前記記憶領域のうちのカーネル空間である分割領域にコピーしたことに応じて、当該データのコピー元の分割領域に前記情報が対応付けられていれば、当該データのコピー先の分割領域に前記情報を対応付けて記憶し、
前記情報が対応付けられた分割領域がダンプ対象に含まれる場合、当該分割領域に格納されたデータを暗号化した暗号化データをダンプする、
処理を実行することを特徴とするダンプ処理方法。
【符号の説明】
【０１３８】
１０１  情報処理装置
１１３  管理情報
１１４  カーネル空間
１１５  ユーザ空間
１１６  バッファ領域
１２２  情報
４００  制御部
４０１  対応付け記憶部
４０２  コピー先対応付け記憶部
４０３  ダンプ部
５０１  ページ管理情報
【図１】
2016224829.tif 000003
【図２】
2016224829.tif 000004
【図３】
2016224829.tif 000005
【図４】
2016224829.tif 000006
【図５】
2016224829.tif 000007
【図６】
2016224829.tif 000008
【図７】
2016224829.tif 000009
【図８】
2016224829.tif 000010
【図９】
2016224829.tif 000011
【図１０】
2016224829.tif 000012
【図１１】
2016224829.tif 000013
【図１２】
2016224829.tif 000014
【図１３】
2016224829.tif 000015
【図１４】
2016224829.tif 000016
【図１５】
2016224829.tif 000017
【図１６】
2016224829.tif 000018
【図１７】
2016224829.tif 000019
【図１８】
2016224829.tif 000020