(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムを実行する演算処理部を備え、
前記演算処理部は、前記コンピュータプログラムを実行することにより、前記演算処理部の実行コードのうち監視対象の実行コードを使用して所定の関数値を算出し、前記算出された関数値を使用して鍵を生成し、前記生成された鍵を使用して暗号処理を実行する、情報処理装置であって、
前記コンピュータプログラムは、前記監視対象の実行コードを使用して算出された前記所定の関数値を予め有し、
前記演算処理部は、前記コンピュータプログラムに予め有される前記所定の関数値を使用して暗号鍵を生成し、当該生成された暗号鍵を使用して暗号化処理を実行し、
前記演算処理部は、前記監視対象の実行コードを使用して前記所定の関数値を算出し、当該算出された関数値を使用して復号鍵を生成し、当該生成された復号鍵を使用して復号化処理を実行する、
情報処理装置。
【請求項２】
コンピュータプログラムを実行する演算処理部が、前記コンピュータプログラムを実行することにより、前記演算処理部の実行コードのうち監視対象の実行コードを使用して所定の関数値を算出し、前記算出された関数値を使用して鍵を生成し、前記生成された鍵を使用して暗号処理を実行する、情報処理方法であって、
前記コンピュータプログラムは、前記監視対象の実行コードを使用して算出された前記所定の関数値を予め有し、
前記演算処理部は、前記コンピュータプログラムに予め有される前記所定の関数値を使用して暗号鍵を生成し、当該生成された暗号鍵を使用して暗号化処理を実行し、
前記演算処理部は、前記監視対象の実行コードを使用して前記所定の関数値を算出し、当該算出された関数値を使用して復号鍵を生成し、当該生成された復号鍵を使用して復号化処理を実行する、
情報処理方法。
【請求項３】
コンピュータに、
前記コンピュータの実行コードのうち監視対象部の実行コードを使用して所定の関数値を算出する監視ステップと、
前記監視ステップにより算出された関数値を使用して鍵を生成する鍵生成ステップと、
前記鍵生成ステップにより生成された鍵を使用して暗号処理を実行する暗号処理ステップと、を実行させるためのコンピュータプログラムであって、
前記コンピュータプログラムは、前記監視対象の実行コードを使用して算出された前記所定の関数値を予め有し、
前記コンピュータプログラムに予め有される前記所定の関数値を使用して暗号鍵を生成し、当該生成された暗号鍵を使用して暗号化処理を実行するステップと、
前記監視対象の実行コードを使用して前記所定の関数値を算出し、当該算出された関数値を使用して復号鍵を生成し、当該生成された復号鍵を使用して復号化処理を実行するステップと、
を前記コンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来、ソフトウェアの静的解析や動的解析に対する難読化技術が知られている。例えば、非特許文献１には動的解析に対する難読化技術が記載される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】服部太郎、双紙正和、宮地充子、「動的解析に対し耐タンパ性を持つ難読化手法の提案（An Obfuscation Technique with Tampar-resistance against Dynamic Analysis）」、社団法人情報処理学会、情報処理学会研究報告、Vol.2006 No.26、pp.239-244、2006年3月16日
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、ソフトウェアの動的解析に対する従来の難読化技術では、攻撃者がデバッガを使用してソフトウェアの実行を制御（一時停止、再開）しながらソフトウェアの実行過程を解析する場合には、十分な効果が得られない可能性があった。
【０００５】
一般に、暗号処理プログラムは、各種プログラムの実行コードの中で特徴があり攻撃対象となりやすい。攻撃者はデバッガを使用して、暗号処理プログラムの実行コードを実行させ、暗号処理プログラムの実行コードの実行前後にプロセスを停止させ、メモリ上に現れた情報や鍵などを取得する。このようなデバッガを使用した攻撃は、実行コード中にどのような複雑性があろうとも成立する点に強みがあり、静的解析の対策のみでは防御が難しい。そのようなデバッガを使用した動的解析の対策として、プログラム中に監視用スレッドを設け、監視対象プロセスを設定し、監視対象プロセスが実行された時に実行時間を計測し、一定時間以上の実行時間が経過した場合にはデバッガの使用が疑われるので監視対象プロセスを強制終了させる方法が挙げられる。しかしながら、この方法では、正当なデバッガの使用時においても強制終了されるため、一般には不向きである。また、監視用スレッドの特定が比較的容易であるため、監視用スレッドを排除するように実行コードが書き換えられる可能性がある。また、デバッガによりプログラムを停止させるために実行コードに挿入されるブレイクポイント命令をサーチする方法があるが、この方法ではデバッガの仕様やプログラム開発環境の違いによって適用できない可能性がある。
【０００６】
本発明は、このような事情を考慮してなされたものであり、デバッガを使用したソフトウェアの動的解析を困難にすることができる情報処理装置、情報処理方法、及びコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
（１）本発明の一態様は、コンピュータプログラムを実行する演算処理部を備え、前記演算処理部は、前記コンピュータプログラムを実行することにより、前記演算処理部の実行コードのうち監視対象の実行コードを使用して所定の関数値を算出し、前記算出された関数値を使用して鍵を生成し、前記生成された鍵を使用して暗号処理を実行する、情報処理装置であって、前記コンピュータプログラムは、前記監視対象の実行コードを使用して算出された前記所定の関数値を予め有し、前記演算処理部は、前記コンピュータプログラムに予め有される前記所定の関数値を使用して暗号鍵を生成し、当該生成された暗号鍵を使用して暗号化処理を実行し、前記演算処理部は、前記監視対象の実行コードを使用して前記所定の関数値を算出し、当該算出された関数値を使用して復号鍵を生成し、当該生成された復号鍵を使用して復号化処理を実行する、情報処理装置である。
【０００８】
（２）本発明の一態様は、コンピュータプログラムを実行する演算処理部が、前記コンピュータプログラムを実行することにより、前記演算処理部の実行コードのうち監視対象の実行コードを使用して所定の関数値を算出し、前記算出された関数値を使用して鍵を生成し、前記生成された鍵を使用して暗号処理を実行する、情報処理方法であって、前記コンピュータプログラムは、前記監視対象の実行コードを使用して算出された前記所定の関数値を予め有し、前記演算処理部は、前記コンピュータプログラムに予め有される前記所定の関数値を使用して暗号鍵を生成し、当該生成された暗号鍵を使用して暗号化処理を実行し、前記演算処理部は、前記監視対象の実行コードを使用して前記所定の関数値を算出し、当該算出された関数値を使用して復号鍵を生成し、当該生成された復号鍵を使用して復号化処理を実行する、情報処理方法である。
【０００９】
（３）本発明の一態様は、コンピュータに、前記コンピュータの実行コードのうち監視対象部の実行コードを使用して所定の関数値を算出する監視ステップと、前記監視ステップにより算出された関数値を使用して鍵を生成する鍵生成ステップと、前記鍵生成ステップにより生成された鍵を使用して暗号処理を実行する暗号処理ステップと、を実行させるためのコンピュータプログラムであって、前記コンピュータプログラムは、前記監視対象の実行コードを使用して算出された前記所定の関数値を予め有し、前記コンピュータプログラムに予め有される前記所定の関数値を使用して暗号鍵を生成し、当該生成された暗号鍵を使用して暗号化処理を実行するステップと、前記監視対象の実行コードを使用して前記所定の関数値を算出し、当該算出された関数値を使用して復号鍵を生成し、当該生成された復号鍵を使用して復号化処理を実行するステップと、を前記コンピュータに実行させるためのコンピュータプログラムである。
【発明の効果】
【００１０】
本発明によれば、デバッガを使用したソフトウェアの動的解析を困難にすることができるという効果が得られる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態に係る情報処理装置１を示す構成図である。
【図２】本発明の第１実施形態に係るプログラム２０の処理の流れを示すシーケンス図である。
【図３】本発明の第２実施形態に係るプログラム２０の処理の流れを示すシーケンス図である。
【図４】本発明の第２実施形態に係るプログラム２０の処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照し、本発明の実施形態について説明する。
【００１３】
［第１実施形態］
図１は、本発明の第１実施形態に係る情報処理装置１を示す構成図である。図１において、情報処理装置１は、ＣＰＵ（Central Processing Unit）＿１１とプログラム記憶部１２とデータ記憶部１３と入力部１４と出力部１５とを備える。これら各部はデータを交換できるように構成される。ＣＰＵ＿１１は演算処理部の例である。
【００１４】
ＣＰＵ＿１１は、コンピュータプログラムを実行する。プログラム記憶部１２は、ＣＰＵ＿１１によって実行されるコンピュータプログラムを記憶する。プログラム記憶部１２は、プログラム２０を記憶する。プログラム２０は、ＣＰＵ＿１１によって実行されるコンピュータプログラムである。データ記憶部１３はデータを記憶する。ＣＰＵ＿１１は、データ記憶部１３にアクセスする。
【００１５】
入力部１４はデータの入力を行う。出力部１５はデータの出力を行う。入力部１４は、例えば、キーボード、テンキー、マウス等の入力デバイスを備える。出力部１５は、例えば、液晶表示装置等の表示デバイスを備える。また、データ入力とデータ表示の両方が可能なタッチパネルを備えてもよい。なお、入力部１４は情報処理装置１外部の通信装置の通信によりデータの入力を行ってもよい。出力部１５は情報処理装置１外部の通信装置の通信によりデータの出力を行ってもよい。又は、情報処理装置１が通信装置を備えて通信によりデータの入出力を行ってもよい。
【００１６】
情報処理装置１として、汎用のコンピュータ装置を使用してもよく、又は、専用のハードウェア装置として構成してもよい。また、情報処理装置１として、スマートフォン等の携帯通信端末装置、タブレット型のコンピュータ装置、据置き型のパーソナルコンピュータ装置などを使用してもよい。
【００１７】
プログラム２０は、鍵生成部２１と暗号処理部２２と監視部２３と監視対象部２４とを有する。ＣＰＵ＿１１がプログラム２０を実行することにより、各部２１、２２、２３、２４の機能が実現される。
【００１８】
次に、図２を参照して、第１実施形態に係る情報処理装置１の動作を説明する。図２は、第１実施形態に係るプログラム２０の処理の流れを示すシーケンス図である。
【００１９】
（ステップＳ１）ＣＰＵ＿１１がプログラム２０を実行し、プログラム２０中のエントリーポイントで鍵生成部２１と監視部２３とを起動する。これにより、ＣＰＵ＿１１上で実行中のプロセスとして、鍵生成部２１に対応する鍵生成プロセスと監視部２３に対応する監視プロセスとが発生する。
【００２０】
（ステップＳ２）鍵生成プロセスが監視プロセスへ検出依頼を行う。
【００２１】
（ステップＳ３）監視プロセスは、鍵生成プロセスからの検出依頼に応じて、検出値算出処理を行う。この検出値算出処理において、監視プロセスは、ＣＰＵ＿１１の実行コードのうち監視対象部２４の実行コードを使用して所定の関数値を算出する。プログラム２０中の監視対象部２４の実行コードの格納場所は、予め監視部２３に設定される。監視プロセスは、監視対象部２４の実行コードの格納場所から監視対象部２４の実行コードを取得して、所定の関数値を算出する。所定の関数値の例として、ハッシュ（hash）値、ＣＲＣ（Cyclic Redundancy Check）値などが挙げられる。例えば、監視プロセスは、監視対象部２４の実行コードのハッシュ値を算出し、算出したハッシュ値を検出結果の検出値とする。
【００２２】
（ステップＳ４）監視プロセスは、ステップＳ３で算出した所定の関数値を検出結果の検出値として鍵生成プロセスへ回答する。
【００２３】
（ステップＳ５）鍵生成プロセスは、監視プロセスから回答された検出値を使用して鍵を生成する。この鍵生成処理では、監視プロセスから回答された検出値のみを使用して鍵を生成してもよく、又は、監視プロセスから回答された検出値と他の値とを使用して鍵を生成してもよい。例えば、鍵生成プロセスは、予め鍵生成部２１に保持される固定値と、監視プロセスから回答された検出値とを使用して鍵を生成する。予め鍵生成部２１に保持される固定値は、例えば静的な鍵情報として鍵生成部２１に格納される。
【００２４】
（ステップＳ６）鍵生成プロセスは、暗号処理部２２を起動する。これにより、ＣＰＵ＿１１上で実行中のプロセスとして、暗号処理部２２に対応する暗号処理プロセスが発生する。鍵生成プロセスは、生成した鍵を暗号処理プロセスへ供給する。次いで、鍵生成プロセスは、暗号処理プロセスへ供給した鍵を、自己のワークメモリから削除する。
【００２５】
（ステップＳ７）暗号処理プロセスは、鍵生成プロセスから供給された鍵を使用して暗号処理を実行する。この暗号処理は、データの暗号化、又は、暗号化データの復号化である。
【００２６】
（ステップＳ８）暗号処理プロセスは、暗号処理結果を出力する。ステップＳ７の暗号処理がデータの暗号化の場合には、暗号処理結果として暗号化データが出力される。ステップＳ７の暗号処理が暗号化データの復号化の場合には、暗号処理結果として復号化データが出力される。
【００２７】
なお、監視対象部２４は複数あってもよい。監視対象部２４が複数ある場合には、上記ステップＳ３において、監視プロセスは、各監視対象部２４の実行コード毎に、所定の関数値を算出する。ここでは所定の関数値はハッシュ値であるとする。次いで、監視プロセスは、算出した各ハッシュ値を全て連結した連結データのハッシュ値を算出する。次いで、ステップＳ４において、監視プロセスは、該連結データのハッシュ値を検出結果の検出値として鍵生成プロセスへ回答する。
【００２８】
上述した第１実施形態によれば、暗号処理に使用される鍵は、プログラム２０中の監視対象部２４の実行コードから算出された所定の関数値である検出値を使用して生成される。したがって、プログラム２０中の監視対象部２４の実行コードに対してデバッグポイントが追加されると、暗号処理に使用される鍵が変わる。これにより、デバッグポイントの追加前の鍵による暗号処理結果と、デバッグポイントの追加後の鍵による暗号処理結果とが異なるので、デバッグポイントの追加後の鍵による暗号処理結果が使用される処理が失敗し、デバッガを使用したソフトウェアの動的解析を困難にさせることができる。例えば、デバッグポイントの追加前の鍵による暗号化データに対して、デバッグポイントの追加後の鍵による復号化が行われると、当該復号結果である復号化データは正しく復号化されないので、当該復号化データが使用される処理が失敗する。
【００２９】
また、デバッガを使用する攻撃者が処理の失敗を認識できる時期は、監視プロセスではなく、監視プロセスの後の鍵生成プロセスと暗号処理プロセスとを経過した後である。このため、攻撃者に対して、処理の失敗の原因が監視プロセスの検出値算出結果であると特定することを困難にさせることができる。
【００３０】
また、鍵生成部２１に予め格納される静的な鍵情報と、監視プロセスによる動的な検出値とを使用して鍵を生成することにより、ソフトウェアの静的解析によって鍵の解析を行うことを困難にさせることができる。
【００３１】
［第２実施形態］
第２実施形態を説明する。第２実施形態に係る情報処理装置１は、上述した図１と同様の構成であり、ＣＰＵ＿１１とプログラム記憶部１２とデータ記憶部１３と入力部１４と出力部１５とを備える。プログラム記憶部１２は、上述した図１と同様に、プログラム２０を記憶する。プログラム２０は、鍵生成部２１と暗号処理部２２と監視部２３と監視対象部２４とを有する。
【００３２】
次に、図３及び図４を参照して、第２実施形態に係る情報処理装置１の動作を説明する。図３及び図４は、第２実施形態に係るプログラム２０の処理の流れを示すシーケンス図である。第２実施形態では、暗号化処理に使用される暗号鍵の生成方法（図３）と、復号化処理に使用される復号鍵の生成方法（図４）とを分けている。
【００３３】
はじめに図３を参照して、暗号化処理に使用される暗号鍵の生成方法を説明する。
【００３４】
（ステップＳ１１）ＣＰＵ＿１１がプログラム２０を実行し、プログラム２０中のエントリーポイントで鍵生成部２１と監視部２３とを起動する。これにより、ＣＰＵ＿１１上で実行中のプロセスとして、鍵生成部２１に対応する鍵生成プロセスと監視部２３に対応する監視プロセスとが発生する。
【００３５】
（ステップＳ１２）鍵生成プロセスが監視プロセスへ検出依頼（暗号鍵生成）を行う。
【００３６】
（ステップＳ１３）監視プロセスは、鍵生成プロセスからの検出依頼（暗号鍵生成）に応じて、事前検出値を取得する。事前検出値は、監視対象部２４の実行コードを使用して事前に算出された所定の関数値である。所定の関数値の例として、上述した第１実施形態と同様に、ハッシュ値、ＣＲＣ値などが挙げられる。以下の第２実施形態の説明では、所定の関数値はハッシュ値であるとする。事前検出値は、予め、プログラム２０に格納される。プログラム２０中の事前検出値の格納場所は、予め監視部２３に設定される。監視対象部２４の実行コードを使用して算出されたハッシュ値は、予め、プログラム２０中の事前検出値の格納場所に格納される。監視プロセスは、事前検出値の格納場所から事前検出値を取得する。
【００３７】
（ステップＳ１４）監視プロセスは、ステップＳ１３で取得した事前検出値を検出結果として鍵生成プロセスへ回答する。
【００３８】
（ステップＳ１５）鍵生成プロセスは、監視プロセスから回答された事前検出値を使用して暗号鍵を生成する。この暗号鍵生成処理では、上述した第１実施形態と同様に、監視プロセスから回答された事前検出値のみを使用して暗号鍵を生成してもよく、又は、監視プロセスから回答された事前検出値と他の値とを使用して暗号鍵を生成してもよい。以下の第２実施形態の説明では、鍵生成プロセスは、予め鍵生成部２１に保持される固定値と、監視プロセスから回答された事前検出値とを使用して暗号鍵を生成するとする。予め鍵生成部２１に保持される固定値は、例えば静的な鍵情報として鍵生成部２１に格納される。
【００３９】
（ステップＳ１６）鍵生成プロセスは、暗号処理部２２を起動する。これにより、ＣＰＵ＿１１上で実行中のプロセスとして、暗号処理部２２に対応する暗号処理プロセスが発生する。鍵生成プロセスは、生成した暗号鍵を暗号処理プロセスへ供給する。次いで、鍵生成プロセスは、暗号処理プロセスへ供給した暗号鍵を、自己のワークメモリから削除する。
【００４０】
（ステップＳ１７）暗号処理プロセスは、鍵生成プロセスから供給された暗号鍵を使用して暗号化処理を実行する。
【００４１】
（ステップＳ１８）暗号処理プロセスは、暗号化処理結果として暗号化データを出力する。
【００４２】
次に図４を参照して、復号化処理に使用される復号鍵の生成方法を説明する。
【００４３】
（ステップＳ２１）ＣＰＵ＿１１がプログラム２０を実行し、プログラム２０中のエントリーポイントで鍵生成部２１と監視部２３とを起動する。これにより、ＣＰＵ＿１１上で実行中のプロセスとして、鍵生成部２１に対応する鍵生成プロセスと監視部２３に対応する監視プロセスとが発生する。
【００４４】
（ステップＳ２２）鍵生成プロセスが監視プロセスへ検出依頼（復号鍵生成）を行う。
【００４５】
（ステップＳ２３）監視プロセスは、鍵生成プロセスからの検出依頼（復号鍵生成）に応じて、検出値算出処理を行う。この検出値算出処理は、上述した第１実施形態の図２のステップＳ３と同様である。ここでは、監視プロセスは、監視対象部２４の実行コードのハッシュ値を算出し、算出したハッシュ値を検出結果の検出値とする。
【００４６】
（ステップＳ２４）監視プロセスは、ステップＳ２３で算出したハッシュ値を検出結果の検出値として鍵生成プロセスへ回答する。
【００４７】
（ステップＳ２５）鍵生成プロセスは、監視プロセスから回答された検出値を使用して復号鍵を生成する。ここでは、鍵生成プロセスは、予め鍵生成部２１に保持される固定値と、監視プロセスから回答された検出値とを使用して復号鍵を生成する。復号鍵の生成に使用される固定値は、上記ステップＳ１５において暗号鍵の生成に使用された固定値と同じである。
【００４８】
（ステップＳ２６）鍵生成プロセスは、暗号処理部２２を起動する。これにより、ＣＰＵ＿１１上で実行中のプロセスとして、暗号処理部２２に対応する暗号処理プロセスが発生する。鍵生成プロセスは、生成した復号鍵を暗号処理プロセスへ供給する。次いで、鍵生成プロセスは、暗号処理プロセスへ供給した復号鍵を、自己のワークメモリから削除する。
【００４９】
（ステップＳ２７）暗号処理プロセスは、鍵生成プロセスから供給された復号鍵を使用して復号化処理を実行する。
【００５０】
（ステップＳ２８）暗号処理プロセスは、復号化処理結果として復号化データを出力する。
【００５１】
上述した第２実施形態によれば、暗号化処理に使用される暗号鍵は、プログラム２０に予め格納された事前検出値を使用して生成される。事前検出値は、監視対象部２４の実行コードを使用して事前に算出された所定の関数値である。一方、復号化処理に使用される復号鍵は、プログラム２０中の監視対象部２４の実行コードから算出された所定の関数値である検出値を使用して生成される。したがって、プログラム２０中の監視対象部２４の実行コードに対してデバッグポイントが追加されると、暗号鍵とは異なる鍵として復号鍵が生成される。これにより、事前検出値を使用して生成された暗号鍵による暗号化データに対して、デバッグポイントの追加後の復号鍵による復号化が行われると、当該復号結果である復号化データは正しく復号化されないので、当該復号化データが使用される処理が失敗する。
【００５２】
また、デバッガを使用する攻撃者が処理の失敗を認識できる時期は、監視プロセスではなく、監視プロセスの後の鍵生成プロセスと暗号処理プロセスとを経過した後である。このため、攻撃者に対して、処理の失敗の原因が監視プロセスの検出値算出結果であると特定することを困難にさせることができる。
【００５３】
また、鍵生成部２１に予め格納される静的な鍵情報と、監視プロセスによる動的な検出値とを使用して復号鍵を生成することにより、ソフトウェアの静的解析によって復号鍵の解析を行うことを困難にさせることができる。
【００５４】
上述したように第１、第２実施形態によれば、デバッガを使用したソフトウェアの動的解析を困難にすることができるという効果が得られる。
【００５５】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００５６】
例えば、監視対象部２４の実行コードが暗号化されてプログラム２０中に格納されてもよい。この場合、監視プロセスは、監視対象部２４の実行コードの暗号化データが復号化された復号化データを使用して検出値を算出する。又は、上述した第２実施形態と同様に、暗号鍵の生成にはプログラム２０に予め格納された事前検出値を使用し、復号鍵の生成には監視対象部２４の実行コードの暗号化データが復号化された復号化データを使用して算出された検出値を使用してもよい。なお、該事前検出値は、監視対象部２４の実行コードの暗号化データが復号化された復号化データを使用して事前に算出される。これにより、該事前検出値と、監視プロセスにより算出される正解の検出値との同一性を保つ。
【００５７】
また、図２、図３、図４に示す各ステップを実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disk）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００５８】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００５９】
１…情報処理装置、１１…ＣＰＵ（演算処理部）、１２…プログラム記憶部、１３…データ記憶部、１４…入力部、１５…出力部、２０…プログラム（コンピュータプログラム）、２１…鍵生成部、２２…暗号処理部、２３…監視部、２４…監視対象部
【図１】
0006478724.tif 000002
【図２】
0006478724.tif 000003
【図３】
0006478724.tif 000004
【図４】
0006478724.tif 000005