【手続補正書】
【提出日】平成18年7月24日(2006.7.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
暗号化された形で保存されているプログラムをコンピュータシステム上での実行のために復号する暗号化データ復号装置であって、
プログラムを、暗号化された複数の部分プログラムの集合の形で保持している記憶手段と、
前記部分プログラムの各々について、復号後の実行用メモリ空間における配置エリアを示すメモリ配置情報を読み込むメモリ配置情報読込手段と、
前記部分プログラムを順次読み出して復号する復号手段と、
前記復号手段によって復号された部分プログラムを、前記メモリ配置情報に従って前記実行用メモリ空間内の配置エリアに配置するロード手段と、を有し、
前記メモリ配置情報は、前記複数の部分プログラムのうち少なくとも１つについて、当該部分プログラムの少なくとも一部が、当該部分プログラムの復号より前に別の部分プログラムが配置されていた配置エリアに上書きされるような内容となっていること、
を特徴とする暗号化データ復号装置。
【請求項２】
前記メモリ配置情報の少なくとも一部は暗号化された状態で保持されており、
前記ロード手段は、前記暗号化されたメモリ配置情報を復号した後、復号された部分プログラムを配置エリアに配置すること、
を特徴とする請求項１に記載の暗号化データ復号装置。
【請求項３】
前記ロード手段は、部分プログラムを配置エリアに配置する際、当該配置エリアのサイズが当該部分プログラムのサイズよりも大きければ、サイズ差によって生じる当該配置エリアの空き領域にダミーデータを書き込むこと、
を特徴とする請求項１または２に記載の暗号化データ復号装置。
【請求項４】
前記ロード手段は、ある配置エリアに配置された部分プログラムの実行が終了した後、当該配置エリアに次の部分プログラムの配置が行われない場合、当該配置エリアに配置されている部分プログラムを消去すること、
を特徴とする請求項１乃至３のいずれかに記載の暗号化データ復号装置。
【請求項５】
前記復号手段は、部分プログラムを復号する場合、それ以前に復号されて前記実行用メモリ空間に配置されている１個以上の他の部分プログラムに埋め込まれた暗号鍵を取得して、当該復号対象の部分プログラムの復号に用いること、
を特徴とする請求項１乃至４のいずれかに記載の暗号化データ復号装置。
【請求項６】
前記ロード手段は、最初に復号される部分プログラムの実行用メモリ空間への配置に先立って、前記配置エリアの絶対アドレスを動的に決定すること、
を特徴とする請求項１乃至５のいずれかに記載の暗号化データ復号装置。
【請求項７】
メモリ配置決定手段をさらに有し、
前記ロード手段は、前記部分プログラムを配置した配置位置の情報を保持するメモリ管理情報保持部をさらに有し、
前記メモリ配置決定手段は、前記メモリ管理情報保持部が保持する情報に基づいて前記メモリ配置情報を生成すること、
を特徴とする請求項６に記載の暗号化データ復号装置。
【請求項８】
前記メモリ配置決定手段は、実行のたびに生成する乱数に基づいて前記メモリ配置情報を生成すること、
を特徴とする請求項７に記載の暗号化データ復号装置。
【請求項９】
前記メモリ管理情報保持部は、前記ロード手段が前記部分プログラムを配置した順番の情報をさらに保持しており、
前記メモリ配置決定手段は、前記順番の情報に基づいてメモリ配置情報を生成すること、
を特徴とする請求項７に記載の暗号化データ復号装置。
【請求項１０】
前記復号手段による復号は復号支援プログラムを用いて行われ、
前記復号支援プログラムの正当性を確認する復号プログラム確認手段をさらに有し、
前記復号手段は、復号に先立って、前記復号プログラム確認手段に前記復号支援プログラムの正当性確認を行わせ、正当性が認証された場合にのみ復号を行うこと、
を特徴とする請求項１乃至９のいずれかに記載の暗号化データ復号装置。
【請求項１１】
割込みが検知された場合に、不正アクセス防止処理として、前記実行用メモリ空間上に配置済みの部分プログラムを消去する不正アクセス防止手段をさらに有すること、
を特徴とする請求項１乃至９のいずれかに記載の暗号化データ復号装置。
【請求項１２】
割込みが検知された場合に、意図的に発生させられた割込みか否かを判定し、意図的に発生させられた割込みではない場合に、不正アクセス防止処理として、前記実行用メモリ空間上に配置済みの部分プログラムを消去する不正アクセス防止手段をさらに有すること、
を特徴とする請求項１乃至１１のいずれかに記載の暗号化データ復号装置。
【請求項１３】
前記不正アクセス防止手段は、前記不正アクセス防止処理を実行する際にダミープログラムを実行させること、
を特徴とする請求項１１または１２に記載の暗号化データ復号装置。
【請求項１４】
前記記憶手段における部分プログラムの格納位置を示す格納位置情報が正当か否かを判定する格納位置情報認証手段をさらに有し、
前記復号手段は、格納位置情報認証手段によって格納位置情報が正当と判定された場合に、前記記憶手段から部分プログラムを読み出して復号すること、
を特徴とする請求項１乃至１３のいずれかに記載の暗号化データ復号装置。
【請求項１５】
暗号化された形で保存されているプログラムをコンピュータシステム上での実行のために復号する暗号化データ復号方法であって、
記憶手段に保持されている部分プログラムの各々について、復号後の実行用メモリ空間におけるメモリ配置エリアを示すメモリ配置情報を読み込むメモリ配置情報読込ステップと、
前記部分プログラムを順次読み出して復号する復号ステップと、
前記復号ステップにおいて復号された部分プログラムを、前記メモリ配置情報に従って前記実行用メモリ空間内の配置エリアに配置するロードステップと、を有し、
前記メモリ配置情報は、前記複数の部分プログラムのうち少なくとも１つについて、当該部分プログラムの少なくとも一部が、当該部分プログラムの復号より前に別の部分プログラムが配置されていた配置エリアに上書きされるような内容となっていること、
を有することを特徴とする暗号化データ復号方法。
【請求項１６】
暗号化された形で保存されているプログラムをコンピュータシステム上での実行のために復号する暗号化データ復号装置としてコンピュータを動作させるためのプログラムであって、
前記暗号化データ復号装置が、
記憶手段に保持されている部分プログラムの各々について、復号後の実行用メモリ空間におけるメモリ配置エリアを示すメモリ配置情報を読み込むメモリ配置情報読込手段と、
前記記憶手段に保持されている前記部分プログラムを順次読み出して復号する復号手段と、
前記復号手段によって復号された部分プログラムを、前記メモリ配置情報に従って前記実行用メモリ空間内の配置エリアに配置するロード手段と、を有し、
前記メモリ配置情報は、前記複数の部分プログラムのうち少なくとも１つについて、当該部分プログラムの少なくとも一部が、当該部分プログラムの復号より前に別の部分プログラムが配置されていた配置エリアに上書きされるような内容となっていること、
を特徴とするプログラム。
【請求項１７】
コンピュータシステム上での実行を前提としてプログラムを暗号化する暗号化プログラム生成装置であって、
プログラムを実行用メモリ空間に配置され実行される部分プログラムの単位で分割するプログラム分割手段と、
前記プログラムを分割された複数の部分プログラムの集合の形で暗号化するプログラム暗号化手段と、
前記プログラム暗号化手段が暗号化した複数の部分プログラムの各々について、復号後に配置される前記実行用メモリ空間における配置エリアを示すメモリ配置情報を生成するメモリ配置情報生成手段と、を有し、
前記メモリ配置情報は、前記複数の部分プログラムのうち少なくとも１つについて、当該部分プログラムの少なくとも一部が、当該部分プログラムの復号より前に別の部分プログラムが配置されていた配置エリアに上書きされるような内容となっていること、
を特徴とする暗号化プログラム生成装置。
【請求項１８】
前記プログラム分割手段は、前記複数の部分プログラムの少なくとも１つに対し、他の部分プログラムの復号処理に用いられる情報を埋め込み、部分プログラムが復号される際には、それ以前に復号された他の部分プログラムに埋め込まれていた情報が用いられること、
を特徴とする請求項１７に記載の暗号化プログラム生成装置。
【請求項１９】
前記部分プログラムの復号処理に用いられる情報は、他の部分プログラムの復号処理に用いられる暗号鍵の一部または全部であること、
を特徴とする請求項１７または１８に記載の暗号化プログラム生成装置。
【請求項２０】
前記部分プログラムの復号処理に用いられる情報は、他の部分プログラムの復号処理に用いられる暗号鍵の一部または全部を生成するための暗号鍵生成プログラムであること、
を特徴とする請求項１８または１９に記載の暗号化プログラム生成装置。
【請求項２１】
前記部分プログラムの復号処理に用いられる情報は、他の部分プログラムの復号処理に用いられる暗号鍵を復号するための鍵用暗号鍵であって、
部分プログラムの復号処理は、それ以前に復号されて前記実行用メモリ空間に配置されている他の部分プログラムから取得される鍵用暗号鍵を用いて復号された暗号鍵を用いて行われること、
を特徴とする請求項１８または１９のいずれかに記載の暗号化プログラム生成装置。
【請求項２２】
前記メモリ配置情報生成手段は、最初に復号される部分プログラムの実行用メモリ空間への配置に先立って、前記配置エリアの絶対アドレスを動的に決定すること、
を特徴とする請求項１７乃至２１のいずれかに記載の暗号化プログラム生成装置。
【請求項２３】
前記メモリ配置情報生成手段は、実行のたびに生成する乱数に基づいて前記メモリ配置情報を生成すること、
を特徴とする請求項１７乃至２２のいずれかに記載の暗号化プログラム生成装置。
【請求項２４】
コンピュータシステム上での実行を前提としてプログラムを暗号化する暗号化プログラム生成方法であって、
プログラムを実行用メモリ空間に配置され実行される部分プログラムの単位で分割するプログラム分割ステップと、
前記プログラムを分割された複数の部分プログラムの集合の形で暗号化するプログラム暗号化ステップと、
前記プログラム暗号化ステップにおいて暗号化された複数の部分プログラムの各々について、復号後に配置される前記実行用メモリ空間における配置エリアを示すメモリ配置情報を生成するメモリ配置情報生成ステップと、を有し、
前記メモリ配置情報は、前記複数の部分プログラムのうち少なくとも１つについて、当該部分プログラムの少なくとも一部が、当該部分プログラムの復号より前に別の部分プログラムが配置されていた配置エリアに上書きされるような内容となっていること、
を特徴とする暗号化プログラム生成方法。
【請求項２５】
コンピュータシステム上での実行を前提としてプログラムを暗号化する暗号化プログラム生成装置としてコンピュータを動作させるためのプログラムであって、
前記暗号化プログラム生成装置が、
プログラムを実行用メモリ空間に配置され実行される部分プログラムの単位で分割するプログラム分割手段と、
前記プログラムを分割された複数の部分プログラムの集合の形で暗号化するプログラム暗号化手段と、
前記プログラム暗号化手段が暗号化した複数の部分プログラムの各々について、復号後に配置される前記実行用メモリ空間における配置エリアを示すメモリ配置情報を生成するメモリ配置情報生成手段と、を有し、
前記メモリ配置情報は、前記複数の部分プログラムのうち少なくとも１つについて、当該部分プログラムの少なくとも一部が、当該部分プログラムの復号より前に別の部分プログラムが配置されていた配置エリアに上書きされるような内容となっていること、
を特徴とするプログラム。