(57)【要約】【課題】不正にコピーされた部分プログラムの実行を防止すること。【解決手段】記憶装置６には、プログラムコード８が分割されて暗号化された分割コード８ａ、８ｂ、・・・が格納されている。ＣＰＵ５の制御により、実行される分割コードが情報処理装置１に送られ、情報処理装置１によって処理されたコードが、メモリ７に展開（ロード）される。復号部２は、分割コードを受け取ると、受け取った分割コードを復号する。配置部３は、復号部２により復号されたコードをメモリ７の既に配置された他のコードにその一部が重なるように配置する。【選択図】図１
2010205116.tif 000002
【特許請求の範囲】
【請求項１】
プログラムコードが分割されて暗号化された分割コードを受け取ると、前記分割コードを復号する復号部と、
前記復号部により復号されたコードをメモリ領域の既に配置された他の前記コードにその一部が重なるように配置する配置部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記配置部は、復号されたコードをメモリ領域の既に配置されたコードに一致するように配置することを特徴とする請求項１記載の情報処理装置。
【請求項３】
論理アドレスと物理アドレスを使い分けてメモリを管理する場合、
前記配置部は、論理メモリ空間において前記論理アドレスの一部が重なるように前記コードを配置することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記配置部は、既に配置されたコードが２つ以上存在する場合、少なくともいずれか１つとその一部が重なるよう配置することを特徴とする請求項１記載の情報処理装置。
【請求項５】
コンピュータが備える、
復号手段が、プログラムコードが分割されて暗号化された分割コードを受け取ると、前記分割コードを復号し、
配置手段が、前記復号手段により復号されたコードをメモリ領域の既に配置された他の前記コードにその一部が重なるように配置する、
ことを特徴とする情報処理方法。
【請求項６】
プログラムコードが分割されて暗号化された分割コードを受け取ると、前記分割コードを復号する復号部と、前記復号部により復号されたコードをメモリ領域の既に配置された他の前記コードにその一部が重なるように配置する配置部と、を備える情報処理装置と、
前記分割コードを格納する格納部と、前記メモリ領域を有するメモリとを備えるクライアント装置と、
を有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、情報処理方法および情報処理システムに関する。
【背景技術】
【０００２】
通常、ソフトウェアのプログラムはＨＤＤ（Hard Disk Drive）等の記憶部にファイルとして格納されており、実行する際にＣＰＵ（Central Processing Unit）によりメモリにロード（配置）されて実行される。
【０００３】
しかし、ＨＤＤに格納されたファイルは容易に解析できるため、内容の秘匿性が要求されるソフトウェア、例えば著作権の保護すべき映像コンテンツの再生に関するアプリケーションにおいては、攻撃者によってプログラムの内容が解析され、その結果、保護すべきコンテンツが不正にコピーされる事態が起こり得る。
【０００４】
このため、例えば、実行するプログラム全体を一度にメモリにロードするのではなく、実行する近傍だけの部分プログラムを、セキュアモジュールを介してメモリにロードする方法が知られている。
【０００５】
また、実行するプログラムコードの一部をその都度サーバ装置から取得し、そのプログラムコードの一部を、実行の都度、命令の順序や構成等は異なるが実行結果は同じであるプログラムコードとする方法が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１３５２６５号公報
【特許文献２】特開２００５−２３５０７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述した方法は、プログラム全体のデータを一度にメモリに配置せず、実行中近傍の部分プログラムのみをメモリに配置する方法である。
しかしながら、それぞれの部分プログラムは、その部分プログラムを実行している際には、暗号化されていない状態でメモリに存在している。このため、部分プログラムがロードされる度に、メモリダンプを行ってその結果を合成する（メモリに記憶されているイメージを単純に足し合わせる）ことで、暗号化されていないプログラムの全体イメージを入手できてしまう。
【０００８】
従って、仮にプログラムの解析が困難であったとしても、こうして入手したプログラムの全体イメージを正規のプログラム実行を終えた後からメモリに復元することで、セキュアモジュールによる監視が行われない状態でプログラムを実行できてしまうという問題がある。
【０００９】
本発明はこのような点に鑑みてなされたものであり、不正にコピーされた部分プログラムの実行を防止することができる情報処理装置、情報処理方法および情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、開示の情報処理装置が提供される。この情報処理装置は、復号部と、配置部とを有している。
復号部は、プログラムコードが分割されて暗号化された分割コードを受け取ると、分割コードを復号する。
【００１１】
配置部は、復号部により復号されたコードをメモリ領域の既に配置された他のコードにその一部が重なるように配置する。
【発明の効果】
【００１２】
開示の情報処理装置によれば、不正にコピーされた部分プログラムの実行を防止することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態の情報処理装置の概要を示す図である。
【図２】実施の形態のシステムのハードウェア構成を示す図である。
【図３】ＬＳＩの機能を示すブロック図である。
【図４】システムの処理を示すフローチャートである。
【図５】部分プログラムをメモリ領域に配置する様子を示す図である。
【図６】システムの処理の具体例を示す図である。
【図７】システムの処理の具体例を示す図である。
【図８】システムの処理の具体例を示す図である。
【図９】第２の実施の形態のシステムを示すブロック図である。
【図１０】論理アドレスと物理アドレスとの関係を示す図である。
【発明を実施するための形態】
【００１４】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態の情報処理装置について説明し、その後、実施の形態をより具体的に説明する。
【００１５】
図１は、実施の形態の情報処理装置の概要を示す図である。
図１に示す情報処理装置１は、復号部２と、配置部３とを有している。なお、情報処理装置１は、バス４を介してＣＰＵ５、記憶装置６およびメモリ７に接続されている。
【００１６】
記憶装置６には、プログラムコード８が分割されて暗号化された分割コード８ａ、８ｂ、・・・が格納されている。
ＣＰＵ５の制御により、実行される分割コードが情報処理装置１に送られ、情報処理装置１によって処理されたコードが、メモリに展開（ロード）される。
【００１７】
復号部２は、分割コードを受け取ると、受け取った分割コードを復号する。
配置部３は、復号部２により復号されたコードをメモリ７の既に配置された他のコードにその一部が重なるように配置する。
【００１８】
図１では、一例として、分割コード８ａが復号されたコード９ａが、メモリ７のある領域に配置されている。この状態において、復号部２が分割コード８ｂを受け取ると、受け取った分割コード８ｂを復号し、コード９ｂを生成する。そして、配置部３は、メモリ７に配置されているコード９ａに、コード９ｂの一部が重なるようにコード９ｂを配置する。
【００１９】
このような情報処理装置１によれば、それぞれの分割コードの実行中のメモリイメージを読み取られてもプログラムコード８全体の実行を防止することができる。
以下、実施の形態をより具体的に説明する。
【００２０】
図２は、実施の形態のシステムのハードウェア構成を示す図である。
システム１００は、クライアント装置１０と、ＬＳＩ２０とを有している。
クライアント装置１０は、ＣＰＵ１１、ＨＤＤ（ハードディスクドライブ）１２、メモリ１３、接続インタフェース１４、グラフィック処理装置１５、入力インタフェース１６、外部補助記憶装置１７および通信インタフェース１８がそれぞれバス１９を介して接続されている。
【００２１】
ＣＰＵ１１は、クライアント装置１０全体の制御を司り、必要に応じてＨＤＤ（記憶装置）１２、メモリ１３に対してアクセスを行う。また、必要に応じてＬＳＩ２０ともアクセスを行う。
【００２２】
ＨＤＤ１２には、暗号化されたプログラム３０が格納されている。プログラム３０としては、特に限定されないが、例えば、著作権の保護対象となる映像コンテンツの再生に関するアプリケーション等が挙げられる。
【００２３】
このプログラム３０は、部分プログラム３０ａ、３０ｂ、３０ｃ、・・・に分けてロードでき、なおかつ暗号化された形式に前処理されている。なお、それぞれの部分プログラムの長さは４００バイトであるとする。
【００２４】
またＨＤＤ１２には、その他、ＣＰＵ１１が動作するために必要なソフトウェアが格納される。
メモリ１３は、ＲＡＭ（Random Access Memory）等を有しており、プログラムをロードして実行する領域を有している。また、メモリ１３には、ＣＰＵ１１による処理に必要な各種データが格納される。
【００２５】
接続インタフェース１４は、クライアント装置１０の周辺機器接続用バスであるＰＣＩバス５０を介してＬＳＩ２０が備える接続インタフェース２４に接続されており、クライアント装置１０とＬＳＩ２０の相互通信を行う機能を提供する。
【００２６】
グラフィック処理装置１５には、モニタ（図示せず）が接続されている。グラフィック処理装置１５は、ＣＰＵ１１からの命令に従って、画像をモニタの画面に表示させる。
入力インタフェース１６には、キーボード（図示せず）とマウス（図示せず）とが接続されている。入力インタフェース１６は、キーボードやマウスから送られてくる信号を、バス１９を介してＣＰＵ１１に送信する。
【００２７】
外部補助記憶装置１７は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置１７で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００２８】
通信インタフェース１８は、ネットワーク４０に接続されている。通信インタフェース１８は、ネットワーク４０を介して、他のコンピュータとの間でデータの送受信を行う。
クライアント装置１０では、ＣＰＵ１１は、プログラム３０のうち実行する部分プログラムだけをメモリ１３に配置して順次実行する。この際、ＬＳＩ２０に実行する部分プログラムを送る。
【００２９】
ＬＳＩ２０は、ＣＰＵ２１、ＲＡＭ２２、暗号モジュール２３、接続インタフェース２４が、それぞれバス２５を介して接続されている。
ＣＰＵ２１は、ＬＳＩ２０全体の制御を司る。また、ＣＰＵ２１は、メモリ１３への部分プログラムのロードや、メモリ１３上で動作しているプログラムの監視を行う機能を備える。
【００３０】
ＲＡＭ２２は、ＣＰＵ２１による処理に必要な各種データが格納される。
暗号モジュール２３は、ＣＰＵ１１から送られてきた（暗号化されている）部分プログラムを復号する。
【００３１】
次に、ＬＳＩの機能を詳しく説明する。
図３は、ＬＳＩの機能を示すブロック図である。
ＬＳＩ２０は、制御部２０１と記憶部２０２と復号部２０３とプログラム配置先決定部２０４とアドレス依存情報書き換え部２０５とメモリアクセス部２０６とプログラム監視部２０７とを有している。
【００３２】
これらのうち、制御部２０１、プログラム配置先決定部２０４、アドレス依存情報書き換え部２０５およびプログラム監視部２０７は、ＣＰＵ２１により実現される機能である。また、記憶部２０２は、ＲＡＭ２２により実現される機能である。また、復号部２０３は、暗号モジュール２３により実現される機能である。以下、各機能を説明する。
【００３３】
制御部２０１は、ＬＳＩ２０の全体制御を司る。
記憶部２０２は、部分プログラムをロードする際、動作に必要な情報を保持したり一時的な作業領域となったりする。
【００３４】
復号部２０３は、暗号化されている部分プログラムを復号する。
プログラム配置先決定部２０４は、記憶部２０２に格納されたプログラムを実行する際に、ＨＤＤ１２に格納された部分プログラムを、メモリ１３のどの領域に配置するかを決定する。
【００３５】
このとき、プログラム配置先決定部２０４は、同時に実行されることがない２つ以上の部分プログラムは、プログラムの実行を管理するためのアドレスに関して、重複するメモリ領域に配置できることを利用する。
【００３６】
アドレス依存情報書き換え部２０５は、部分プログラムに含まれる配置先アドレスに依存する情報を書き換える。例えば、ジャンプするアドレスに関する情報が０番地であり、決定したアドレスが１０番地であった場合、ジャンプするアドレスに関する情報を１０番地に書き換える。
【００３７】
メモリアクセス部２０６は、メモリ１３への書き込みや読み込み機能を提供する。
プログラム監視部２０７は、メモリ１３上で稼働する部分プログラムに対する改ざん監視や相互認証を行う。
【００３８】
以下、システム１００の処理を説明する。
図４は、システムの処理を示すフローチャートである。
まず、プログラム実行開始もしくは既にメモリに配置された部分プログラムの指示により、ＣＰＵ１１が、ＨＤＤ１２から次にロードすべき部分プログラムを取り出し、ＬＳＩ２０に送る（ステップＳ１）。
【００３９】
復号部２０３は、送られてきた部分プログラムを復号する（ステップＳ２）。
プログラム配置先決定部２０４は、これまでに配置した部分プログラムの配置先アドレスの情報を記憶部２０２から取り出す。そして、これまでに部分プログラムが配置されたことのあるメモリ領域と一部が重複するように、今回メモリ１３にロードする部分プログラムの配置先を決定する（ステップＳ３）。
【００４０】
図５は、部分プログラムをメモリ領域に配置する様子を示す図である。
ここでは、部分プログラム３０ａが配置されたメモリ領域の一部に重複する形で部分プログラム３０ｂを配置するように配置先のアドレスが決定されている。
【００４１】
ここで、部分プログラム３０ａを配置している領域に一致するように部分プログラム３０ｂの配置先を決定するのが好ましい。これにより、より安全性を高めることができる。
なお、初回の部分プログラムをロードする場合には、配置先アドレスの決定にあたっては記憶部２０２から（過去の）配置情報は参照しない。この場合は、配置先を予め定めておいてもよいし、ランダムに決定してもよい。
【００４２】
決定した配置先アドレスに係る情報は、記憶部２０２に保持しておく。
再び図４に戻って説明する。
アドレス依存情報書き換え部２０５は、部分プログラムに含まれるジャンプ命令等の配置アドレスに依存する情報を、ステップＳ３にて決定された配置先アドレスに基づいて更新する（ステップＳ４）。
【００４３】
次に、メモリアクセス部２０６は、部分プログラムをメモリ１３に配置する（ステップＳ５）。
その後、メモリ１３上の部分プログラムの実行が開始される（ステップＳ６）。
【００４４】
次に、ＣＰＵ１１は、実行中の部分プログラムが進み、まだロードされていない部分プログラムが存在するか否かを判断する（ステップＳ７）。
まだロードされていない部分プログラムが存在する場合（ステップＳ７のＹｅｓ）、ステップＳ１に移行し、ステップＳ１以降の処理を繰り返し行う。
【００４５】
まだロードされていない部分プログラムが存在しない場合（ステップＳ７のＮｏ）、処理を終了する。
以上の処理によれば、攻撃者が不正にメモリダンプを繰り返すことで、それぞれの部分プログラム実行中のメモリイメージを取得したとしても、それぞれの部分プログラムのイメージを単純に足し合わせた（合成した）だけでは、必ずいずれかの部分プログラムが別の部分プログラムと同時に存在できなくなる。このため、プログラム全体を実行可能な完全な形で再現することができない。従って、プログラムの実行を確実に保護することができる。
【００４６】
以下、システム１００の処理の具体例を説明する。
図６〜図８は、それぞれシステムの処理の具体例を示す図である。
＜部分プログラム３０ａのロード＞
ＣＰＵ１１は、プログラムの実行を開始すると、ＨＤＤ１２に格納されているプログラムのうち、部分プログラム３０ａをＬＳＩ２０に送る。
【００４７】
ＬＳＩ２０は、復号部２０３を用いて部分プログラム３０ａを復号する。
プログラム配置先決定部２０４は、部分プログラム３０ａをメモリ１３のどこに配置すべきかを決定するが、部分プログラム３０ａは最初に配置する部分プログラムであるため、配置先は自由に決定することができる。ここでは、一例として乱数を使い、配置先アドレスとして５００番地が決定されたとする。
【００４８】
図６（ａ）に示すように、メモリアクセス部２０６は、決定した配置先アドレスの情報に従い、部分プログラム３０ａをメモリ１３の５００番地に配置する。なお、本実施の形態では、１ビットが１番地とする。このため、部分プログラム３０ａの終了番地は、９００番地となる。
【００４９】
このとき、ＬＳＩ２０は部分プログラム３０ａの配置位置の情報を記憶部２０２に保持しておく。
図６（ｂ）は、記憶部２０２に保持されているアドレスを管理する管理テーブルを示している。
【００５０】
管理テーブル２０２ａは、部分プログラム３０ａを識別する情報（部分プログラム＃１）の開始アドレスとして５００番地を記録し、終了アドレスとして９００番地を記録する。
【００５１】
＜部分プログラム３０ｂのロード＞
部分プログラム３０ａを実行していき、部分プログラム３０ｂの処理を実行する必要が生じると、ＣＰＵ１１はＨＤＤ１２に格納されている部分プログラム３０ｂをＬＳＩ２０に送る。
【００５２】
ＬＳＩ２０は、復号部２０３を用いて部分プログラム３０ｂを復号する。
プログラム配置先決定部２０４は、部分プログラム３０ｂをメモリ１３のどこに配置すべきかを決定するが、メモリ１３には既に部分プログラム３０ａを配置しているため、部分プログラム３０ａと一部が重複するように部分プログラム３０ｂの配置先を決定する。
【００５３】
まず、プログラム配置先決定部２０４は、配置済みの部分プログラム３０ａの情報を管理テーブル２０２ａから取り出す。
この時点では、部分プログラム３０ａが、メモリの５００番地から９００番地までに配置されている。
【００５４】
従って、プログラム配置先決定部２０４は、部分プログラム３０ｂが部分プログラム３０ａに一部重複するように、部分プログラム３０ｂの配置先先頭アドレスを１０１番地から８９９番地までの間から選ぶ。
【００５５】
この範囲内で配置先を選ぶ方法は複数考えられるが、ここでは乱数を使って４００番地を選択したものとする。
図７（ａ）に示すように、メモリアクセス部２０６は、決定した配置先アドレスの情報に従い、部分プログラム３０ｂをメモリ１３の４００番地に配置する。
【００５６】
このときも、ＬＳＩ２０は、図７（ｂ）に示す管理テーブル２０２ａに部分プログラム３０ｂを識別する情報（部分プログラム＃２）の開始アドレスとして４００番地を記録し、終了アドレスとして８００番地を記録する。
【００５７】
＜部分プログラム３０ｃのロード＞
部分プログラム３０ｂのロードの手順と同様に、ＬＳＩ２０は、部分プログラム３０ｃのロードを行う。
【００５８】
配置先の決定にあたっては、既に配置した部分プログラム３０ａと部分プログラム３０ｂの１つ以上と重複する配置先を選択する。
つまり、部分プログラム３０ｃの先頭アドレスを００１番地から８９９番地までの間から選択する。ここでは、３００番地を選択したものとする。
【００５９】
図８（ａ）に示すように、メモリアクセス部２０６は、決定した配置先アドレスの情報に従い、部分プログラム３０ａをメモリ１３の３００番地に配置する。
このときも、ＬＳＩ２０は、図８（ｂ）に示す管理テーブル２０２ａに部分プログラム３０ｃを識別する情報（部分プログラム＃３）の開始アドレスとして３００番地を記録し、終了アドレスとして７００番地を記録する。
【００６０】
上記の手続きにより、ＨＤＤ１２に格納された部分プログラムは順次メモリ１３にロードされて実行される。
＜不正な部分プログラムのコピー＞
次に、攻撃者が、これまでの部分プログラム３０ａ〜３０ｃの実行を監視し、不正なコピーを実行しようとする事例を説明する。
【００６１】
攻撃者は、メモリ１３の内容をダンプ（出力）することでプログラムの全体像を入手し、後から実行可能なプログラムのコピーを作成しようと試みる。
具体的な手順を以下に示す。
【００６２】
まず部分プログラム３０ａのロードを契機に、そのときのメモリ１３の内容を取得する。これにより、５００番地から９００番地に存在する部分プログラム３０ａを得る。
同様に、部分プログラム３０ｂがロードされた契機で、その時のメモリ１３の内容を取得することで、４００番地から８００番地に存在する部分プログラム３０ｂを得る。同じく、３００番地から７００番地に存在する部分プログラム３０ｃを得る。
【００６３】
次に、得られたそれぞれの部分プログラムを実行可能なプログラム全容とすべく、部分プログラム３０ａ〜３０ｃを１つのプログラムとして合成しようとするが、図８（ａ）に示すように、４００番地から８００番地までは少なくとも２つ以上の部分プログラムが重複しているため、その全てを同時に実行可能とする（存在させる）ことはできない。このため、攻撃者はプログラムの不正なコピーに失敗する。
【００６４】
以上述べたように、実施の形態のシステム１００によれば、実行済みのプログラムコードと重複する領域に、次に実行するプログラムコードを配置するようにした。これにより、攻撃者が不正にメモリダンプを繰り返すことで、それぞれの部分プログラム実行中のメモリイメージを取得したとしても、それぞれの部分プログラムのイメージを単純に足し合わせた（合成した）だけでは、必ずいずれかの部分プログラムが別の部分プログラムと同時に存在できなくなるため、プログラム全体を実行可能な完全な形で再現することができない。
【００６５】
これにより、プログラムをメモリダンプして不正にコピーしたプログラムを実行することを確実に防止することができる。
＜第２の実施の形態＞
次に、第２の実施の形態のシステムについて説明する。
【００６６】
以下、第２の実施の形態のシステムについて、前述した第１の実施の形態のシステム１００との相違点を中心に説明し、同様の事項については、その説明を省略する。
図９は、第２の実施の形態のシステムを示すブロック図である。
【００６７】
図９に示す第２の実施の形態のシステム１００ａは、クライアント装置１０ａのＣＰＵ１１が、論理アドレスと物理アドレスを使い分けて管理するメモリ管理部１１ａを備えている。
【００６８】
メモリ管理部１１ａは、仮想的なアドレスである論理アドレスを生成する。論理アドレスは、プログラムが実際にメモリアクセスを行うときに、対応する実際のメモリの物理アドレスに変換される。プログラムの実行も、この論理アドレスに基づいて行われる。
【００６９】
一方、物理アドレスは、メモリ（物理メモリ）１３に対して割り当てられたアドレスであり、物理的にデータが記録されている位置になる。
図１０は、論理アドレスと物理アドレスとの関係を示す図である。
【００７０】
本実施の形態のプログラムは、それぞれ長さ２００バイトの部分プログラム３０ｄと部分プログラム３０ｅに分かれてロードされる。
プログラム配置先決定部２０４は、部分プログラム３０ｄを論理メモリの４００番地にマッピングする。ここで論理メモリ空間は、例えばＨＤＤ１２等の一部を、あたかも物理メモリの一部であるかのようにして提供される仮想的なメモリ領域である。
【００７１】
メモリアクセス部２０６は、部分プログラム３０ｄを、図１０（ａ）に示すように、論理メモリ１２ａの４００番地に配置する。
メモリ管理部１１ａは、アドレス変換テーブル（図示せず）に基づいて、論理メモリ１２ａの４００番地に配置された部分プログラム３０ｄをメモリ１３の１００００番地に書き込む。
【００７２】
その後、プログラム配置先決定部２０４は、図１０（ｂ）に示すように、部分プログラム３０ｅを論理メモリ１２ａの３００番地にマッピングする。
メモリアクセス部２０６は、部分プログラム３０ｅを、論理メモリ１２ａの３００番地に配置する。
【００７３】
メモリ管理部１１ａは、アドレス変換テーブルに基づいて、論理メモリ１２ａの３００番地に配置された部分プログラム３０ｅをメモリ１３の２００００番地に書き込む。
ここで、図１０（ｃ）に示すように、部分プログラム３０ｄと部分プログラム３０ｅは論理メモリ１２ａ上では一部が重複しているが、メモリ１３上では重複していない。
【００７４】
この状態で攻撃者が不正なコピーを実行しようとする。
まずメモリダンプによって部分プログラム３０ｄと部分プログラム３０ｅのコピーを取得し、それを物理メモリ上に再現することはできる。つまり、プログラム全体のイメージを欠損なくコピーすることは可能である。
【００７５】
しかし、それを論理メモリにマッピングする段階で一部のアドレスが重複してしまう。
具体的には、論理メモリ１２ａの４００番地から５００番地の範囲に対して、メモリ１３の１００００番地と２０１００番地の両方を同時にマッピングすることはできない。
【００７６】
プログラムは論理アドレスに基づいて実行されるため、論理アドレスが重複することでプログラムが実行できなくなる。
本実施の形態のシステム１００ａによれば、論理アドレスにおいてアドレスが重複するように、部分プログラムの配置先を決定することで、メモリダンプによって不正にコピーされた部分プログラムの実行を阻害することができる。
【００７７】
以上、本発明の情報処理装置、情報処理方法および情報処理システムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００７８】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、ＬＳＩ２０の用途は、特に限定されないが、例えば、地上デジタル放送の受信を可能にする権利保護のＬＳＩ等が挙げられる。
【００７９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ＬＳＩ２０が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００８０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８１】
情報処理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【００８２】
１  情報処理装置
２  復号部
３  配置部
４、１９、２５  バス
５、１１、２１  ＣＰＵ
６  記憶装置
７、１３  メモリ
８  プログラムコード
８ａ、８ｂ  分割コード
９ａ、９ｂ  コード
１０、１０ａ  クライアント装置
１１ａ  メモリ管理部
１２ａ  論理メモリ
１４、２４  接続インタフェース
２０  ＬＳＩ
２２  ＲＡＭ
２３  暗号モジュール
３０  プログラム
３０ａ〜３０ｅ  部分プログラム
４０  ネットワーク
１００、１００ａ  システム
２０１  制御部
２０２  記憶部
２０２ａ  管理テーブル
２０３  復号部
２０４  プログラム配置先決定部
２０５  アドレス依存情報書き換え部
２０６  メモリアクセス部
２０７  プログラム監視部
【図１】
2010205116.tif 000003
【図２】
2010205116.tif 000004
【図３】
2010205116.tif 000005
【図４】
2010205116.tif 000006
【図５】
2010205116.tif 000007
【図６】
2010205116.tif 000008
【図７】
2010205116.tif 000009
【図８】
2010205116.tif 000010
【図９】
2010205116.tif 000011
【図１０】
2010205116.tif 000012