説明

情報処理装置、情報処理方法および情報処理システム

【課題】不正にコピーされた部分プログラムの実行を防止すること。
【解決手段】記憶装置6には、プログラムコード8が分割されて暗号化された分割コード8a、8b、・・・が格納されている。CPU5の制御により、実行される分割コードが情報処理装置1に送られ、情報処理装置1によって処理されたコードが、メモリ7に展開(ロード)される。復号部2は、分割コードを受け取ると、受け取った分割コードを復号する。配置部3は、復号部2により復号されたコードをメモリ7の既に配置された他のコードにその一部が重なるように配置する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置、情報処理方法および情報処理システムに関する。
【背景技術】
【0002】
通常、ソフトウェアのプログラムはHDD(Hard Disk Drive)等の記憶部にファイルとして格納されており、実行する際にCPU(Central Processing Unit)によりメモリにロード(配置)されて実行される。
【0003】
しかし、HDDに格納されたファイルは容易に解析できるため、内容の秘匿性が要求されるソフトウェア、例えば著作権の保護すべき映像コンテンツの再生に関するアプリケーションにおいては、攻撃者によってプログラムの内容が解析され、その結果、保護すべきコンテンツが不正にコピーされる事態が起こり得る。
【0004】
このため、例えば、実行するプログラム全体を一度にメモリにロードするのではなく、実行する近傍だけの部分プログラムを、セキュアモジュールを介してメモリにロードする方法が知られている。
【0005】
また、実行するプログラムコードの一部をその都度サーバ装置から取得し、そのプログラムコードの一部を、実行の都度、命令の順序や構成等は異なるが実行結果は同じであるプログラムコードとする方法が知られている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−135265号公報
【特許文献2】特開2005−235076号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
前述した方法は、プログラム全体のデータを一度にメモリに配置せず、実行中近傍の部分プログラムのみをメモリに配置する方法である。
しかしながら、それぞれの部分プログラムは、その部分プログラムを実行している際には、暗号化されていない状態でメモリに存在している。このため、部分プログラムがロードされる度に、メモリダンプを行ってその結果を合成する(メモリに記憶されているイメージを単純に足し合わせる)ことで、暗号化されていないプログラムの全体イメージを入手できてしまう。
【0008】
従って、仮にプログラムの解析が困難であったとしても、こうして入手したプログラムの全体イメージを正規のプログラム実行を終えた後からメモリに復元することで、セキュアモジュールによる監視が行われない状態でプログラムを実行できてしまうという問題がある。
【0009】
本発明はこのような点に鑑みてなされたものであり、不正にコピーされた部分プログラムの実行を防止することができる情報処理装置、情報処理方法および情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、開示の情報処理装置が提供される。この情報処理装置は、復号部と、配置部とを有している。
復号部は、プログラムコードが分割されて暗号化された分割コードを受け取ると、分割コードを復号する。
【0011】
配置部は、復号部により復号されたコードをメモリ領域の既に配置された他のコードにその一部が重なるように配置する。
【発明の効果】
【0012】
開示の情報処理装置によれば、不正にコピーされた部分プログラムの実行を防止することができる。
【図面の簡単な説明】
【0013】
【図1】実施の形態の情報処理装置の概要を示す図である。
【図2】実施の形態のシステムのハードウェア構成を示す図である。
【図3】LSIの機能を示すブロック図である。
【図4】システムの処理を示すフローチャートである。
【図5】部分プログラムをメモリ領域に配置する様子を示す図である。
【図6】システムの処理の具体例を示す図である。
【図7】システムの処理の具体例を示す図である。
【図8】システムの処理の具体例を示す図である。
【図9】第2の実施の形態のシステムを示すブロック図である。
【図10】論理アドレスと物理アドレスとの関係を示す図である。
【発明を実施するための形態】
【0014】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態の情報処理装置について説明し、その後、実施の形態をより具体的に説明する。
【0015】
図1は、実施の形態の情報処理装置の概要を示す図である。
図1に示す情報処理装置1は、復号部2と、配置部3とを有している。なお、情報処理装置1は、バス4を介してCPU5、記憶装置6およびメモリ7に接続されている。
【0016】
記憶装置6には、プログラムコード8が分割されて暗号化された分割コード8a、8b、・・・が格納されている。
CPU5の制御により、実行される分割コードが情報処理装置1に送られ、情報処理装置1によって処理されたコードが、メモリに展開(ロード)される。
【0017】
復号部2は、分割コードを受け取ると、受け取った分割コードを復号する。
配置部3は、復号部2により復号されたコードをメモリ7の既に配置された他のコードにその一部が重なるように配置する。
【0018】
図1では、一例として、分割コード8aが復号されたコード9aが、メモリ7のある領域に配置されている。この状態において、復号部2が分割コード8bを受け取ると、受け取った分割コード8bを復号し、コード9bを生成する。そして、配置部3は、メモリ7に配置されているコード9aに、コード9bの一部が重なるようにコード9bを配置する。
【0019】
このような情報処理装置1によれば、それぞれの分割コードの実行中のメモリイメージを読み取られてもプログラムコード8全体の実行を防止することができる。
以下、実施の形態をより具体的に説明する。
【0020】
図2は、実施の形態のシステムのハードウェア構成を示す図である。
システム100は、クライアント装置10と、LSI20とを有している。
クライアント装置10は、CPU11、HDD(ハードディスクドライブ)12、メモリ13、接続インタフェース14、グラフィック処理装置15、入力インタフェース16、外部補助記憶装置17および通信インタフェース18がそれぞれバス19を介して接続されている。
【0021】
CPU11は、クライアント装置10全体の制御を司り、必要に応じてHDD(記憶装置)12、メモリ13に対してアクセスを行う。また、必要に応じてLSI20ともアクセスを行う。
【0022】
HDD12には、暗号化されたプログラム30が格納されている。プログラム30としては、特に限定されないが、例えば、著作権の保護対象となる映像コンテンツの再生に関するアプリケーション等が挙げられる。
【0023】
このプログラム30は、部分プログラム30a、30b、30c、・・・に分けてロードでき、なおかつ暗号化された形式に前処理されている。なお、それぞれの部分プログラムの長さは400バイトであるとする。
【0024】
またHDD12には、その他、CPU11が動作するために必要なソフトウェアが格納される。
メモリ13は、RAM(Random Access Memory)等を有しており、プログラムをロードして実行する領域を有している。また、メモリ13には、CPU11による処理に必要な各種データが格納される。
【0025】
接続インタフェース14は、クライアント装置10の周辺機器接続用バスであるPCIバス50を介してLSI20が備える接続インタフェース24に接続されており、クライアント装置10とLSI20の相互通信を行う機能を提供する。
【0026】
グラフィック処理装置15には、モニタ(図示せず)が接続されている。グラフィック処理装置15は、CPU11からの命令に従って、画像をモニタの画面に表示させる。
入力インタフェース16には、キーボード(図示せず)とマウス(図示せず)とが接続されている。入力インタフェース16は、キーボードやマウスから送られてくる信号を、バス19を介してCPU11に送信する。
【0027】
外部補助記憶装置17は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置17で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、HDD、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
【0028】
通信インタフェース18は、ネットワーク40に接続されている。通信インタフェース18は、ネットワーク40を介して、他のコンピュータとの間でデータの送受信を行う。
クライアント装置10では、CPU11は、プログラム30のうち実行する部分プログラムだけをメモリ13に配置して順次実行する。この際、LSI20に実行する部分プログラムを送る。
【0029】
LSI20は、CPU21、RAM22、暗号モジュール23、接続インタフェース24が、それぞれバス25を介して接続されている。
CPU21は、LSI20全体の制御を司る。また、CPU21は、メモリ13への部分プログラムのロードや、メモリ13上で動作しているプログラムの監視を行う機能を備える。
【0030】
RAM22は、CPU21による処理に必要な各種データが格納される。
暗号モジュール23は、CPU11から送られてきた(暗号化されている)部分プログラムを復号する。
【0031】
次に、LSIの機能を詳しく説明する。
図3は、LSIの機能を示すブロック図である。
LSI20は、制御部201と記憶部202と復号部203とプログラム配置先決定部204とアドレス依存情報書き換え部205とメモリアクセス部206とプログラム監視部207とを有している。
【0032】
これらのうち、制御部201、プログラム配置先決定部204、アドレス依存情報書き換え部205およびプログラム監視部207は、CPU21により実現される機能である。また、記憶部202は、RAM22により実現される機能である。また、復号部203は、暗号モジュール23により実現される機能である。以下、各機能を説明する。
【0033】
制御部201は、LSI20の全体制御を司る。
記憶部202は、部分プログラムをロードする際、動作に必要な情報を保持したり一時的な作業領域となったりする。
【0034】
復号部203は、暗号化されている部分プログラムを復号する。
プログラム配置先決定部204は、記憶部202に格納されたプログラムを実行する際に、HDD12に格納された部分プログラムを、メモリ13のどの領域に配置するかを決定する。
【0035】
このとき、プログラム配置先決定部204は、同時に実行されることがない2つ以上の部分プログラムは、プログラムの実行を管理するためのアドレスに関して、重複するメモリ領域に配置できることを利用する。
【0036】
アドレス依存情報書き換え部205は、部分プログラムに含まれる配置先アドレスに依存する情報を書き換える。例えば、ジャンプするアドレスに関する情報が0番地であり、決定したアドレスが10番地であった場合、ジャンプするアドレスに関する情報を10番地に書き換える。
【0037】
メモリアクセス部206は、メモリ13への書き込みや読み込み機能を提供する。
プログラム監視部207は、メモリ13上で稼働する部分プログラムに対する改ざん監視や相互認証を行う。
【0038】
以下、システム100の処理を説明する。
図4は、システムの処理を示すフローチャートである。
まず、プログラム実行開始もしくは既にメモリに配置された部分プログラムの指示により、CPU11が、HDD12から次にロードすべき部分プログラムを取り出し、LSI20に送る(ステップS1)。
【0039】
復号部203は、送られてきた部分プログラムを復号する(ステップS2)。
プログラム配置先決定部204は、これまでに配置した部分プログラムの配置先アドレスの情報を記憶部202から取り出す。そして、これまでに部分プログラムが配置されたことのあるメモリ領域と一部が重複するように、今回メモリ13にロードする部分プログラムの配置先を決定する(ステップS3)。
【0040】
図5は、部分プログラムをメモリ領域に配置する様子を示す図である。
ここでは、部分プログラム30aが配置されたメモリ領域の一部に重複する形で部分プログラム30bを配置するように配置先のアドレスが決定されている。
【0041】
ここで、部分プログラム30aを配置している領域に一致するように部分プログラム30bの配置先を決定するのが好ましい。これにより、より安全性を高めることができる。
なお、初回の部分プログラムをロードする場合には、配置先アドレスの決定にあたっては記憶部202から(過去の)配置情報は参照しない。この場合は、配置先を予め定めておいてもよいし、ランダムに決定してもよい。
【0042】
決定した配置先アドレスに係る情報は、記憶部202に保持しておく。
再び図4に戻って説明する。
アドレス依存情報書き換え部205は、部分プログラムに含まれるジャンプ命令等の配置アドレスに依存する情報を、ステップS3にて決定された配置先アドレスに基づいて更新する(ステップS4)。
【0043】
次に、メモリアクセス部206は、部分プログラムをメモリ13に配置する(ステップS5)。
その後、メモリ13上の部分プログラムの実行が開始される(ステップS6)。
【0044】
次に、CPU11は、実行中の部分プログラムが進み、まだロードされていない部分プログラムが存在するか否かを判断する(ステップS7)。
まだロードされていない部分プログラムが存在する場合(ステップS7のYes)、ステップS1に移行し、ステップS1以降の処理を繰り返し行う。
【0045】
まだロードされていない部分プログラムが存在しない場合(ステップS7のNo)、処理を終了する。
以上の処理によれば、攻撃者が不正にメモリダンプを繰り返すことで、それぞれの部分プログラム実行中のメモリイメージを取得したとしても、それぞれの部分プログラムのイメージを単純に足し合わせた(合成した)だけでは、必ずいずれかの部分プログラムが別の部分プログラムと同時に存在できなくなる。このため、プログラム全体を実行可能な完全な形で再現することができない。従って、プログラムの実行を確実に保護することができる。
【0046】
以下、システム100の処理の具体例を説明する。
図6〜図8は、それぞれシステムの処理の具体例を示す図である。
<部分プログラム30aのロード>
CPU11は、プログラムの実行を開始すると、HDD12に格納されているプログラムのうち、部分プログラム30aをLSI20に送る。
【0047】
LSI20は、復号部203を用いて部分プログラム30aを復号する。
プログラム配置先決定部204は、部分プログラム30aをメモリ13のどこに配置すべきかを決定するが、部分プログラム30aは最初に配置する部分プログラムであるため、配置先は自由に決定することができる。ここでは、一例として乱数を使い、配置先アドレスとして500番地が決定されたとする。
【0048】
図6(a)に示すように、メモリアクセス部206は、決定した配置先アドレスの情報に従い、部分プログラム30aをメモリ13の500番地に配置する。なお、本実施の形態では、1ビットが1番地とする。このため、部分プログラム30aの終了番地は、900番地となる。
【0049】
このとき、LSI20は部分プログラム30aの配置位置の情報を記憶部202に保持しておく。
図6(b)は、記憶部202に保持されているアドレスを管理する管理テーブルを示している。
【0050】
管理テーブル202aは、部分プログラム30aを識別する情報(部分プログラム#1)の開始アドレスとして500番地を記録し、終了アドレスとして900番地を記録する。
【0051】
<部分プログラム30bのロード>
部分プログラム30aを実行していき、部分プログラム30bの処理を実行する必要が生じると、CPU11はHDD12に格納されている部分プログラム30bをLSI20に送る。
【0052】
LSI20は、復号部203を用いて部分プログラム30bを復号する。
プログラム配置先決定部204は、部分プログラム30bをメモリ13のどこに配置すべきかを決定するが、メモリ13には既に部分プログラム30aを配置しているため、部分プログラム30aと一部が重複するように部分プログラム30bの配置先を決定する。
【0053】
まず、プログラム配置先決定部204は、配置済みの部分プログラム30aの情報を管理テーブル202aから取り出す。
この時点では、部分プログラム30aが、メモリの500番地から900番地までに配置されている。
【0054】
従って、プログラム配置先決定部204は、部分プログラム30bが部分プログラム30aに一部重複するように、部分プログラム30bの配置先先頭アドレスを101番地から899番地までの間から選ぶ。
【0055】
この範囲内で配置先を選ぶ方法は複数考えられるが、ここでは乱数を使って400番地を選択したものとする。
図7(a)に示すように、メモリアクセス部206は、決定した配置先アドレスの情報に従い、部分プログラム30bをメモリ13の400番地に配置する。
【0056】
このときも、LSI20は、図7(b)に示す管理テーブル202aに部分プログラム30bを識別する情報(部分プログラム#2)の開始アドレスとして400番地を記録し、終了アドレスとして800番地を記録する。
【0057】
<部分プログラム30cのロード>
部分プログラム30bのロードの手順と同様に、LSI20は、部分プログラム30cのロードを行う。
【0058】
配置先の決定にあたっては、既に配置した部分プログラム30aと部分プログラム30bの1つ以上と重複する配置先を選択する。
つまり、部分プログラム30cの先頭アドレスを001番地から899番地までの間から選択する。ここでは、300番地を選択したものとする。
【0059】
図8(a)に示すように、メモリアクセス部206は、決定した配置先アドレスの情報に従い、部分プログラム30aをメモリ13の300番地に配置する。
このときも、LSI20は、図8(b)に示す管理テーブル202aに部分プログラム30cを識別する情報(部分プログラム#3)の開始アドレスとして300番地を記録し、終了アドレスとして700番地を記録する。
【0060】
上記の手続きにより、HDD12に格納された部分プログラムは順次メモリ13にロードされて実行される。
<不正な部分プログラムのコピー>
次に、攻撃者が、これまでの部分プログラム30a〜30cの実行を監視し、不正なコピーを実行しようとする事例を説明する。
【0061】
攻撃者は、メモリ13の内容をダンプ(出力)することでプログラムの全体像を入手し、後から実行可能なプログラムのコピーを作成しようと試みる。
具体的な手順を以下に示す。
【0062】
まず部分プログラム30aのロードを契機に、そのときのメモリ13の内容を取得する。これにより、500番地から900番地に存在する部分プログラム30aを得る。
同様に、部分プログラム30bがロードされた契機で、その時のメモリ13の内容を取得することで、400番地から800番地に存在する部分プログラム30bを得る。同じく、300番地から700番地に存在する部分プログラム30cを得る。
【0063】
次に、得られたそれぞれの部分プログラムを実行可能なプログラム全容とすべく、部分プログラム30a〜30cを1つのプログラムとして合成しようとするが、図8(a)に示すように、400番地から800番地までは少なくとも2つ以上の部分プログラムが重複しているため、その全てを同時に実行可能とする(存在させる)ことはできない。このため、攻撃者はプログラムの不正なコピーに失敗する。
【0064】
以上述べたように、実施の形態のシステム100によれば、実行済みのプログラムコードと重複する領域に、次に実行するプログラムコードを配置するようにした。これにより、攻撃者が不正にメモリダンプを繰り返すことで、それぞれの部分プログラム実行中のメモリイメージを取得したとしても、それぞれの部分プログラムのイメージを単純に足し合わせた(合成した)だけでは、必ずいずれかの部分プログラムが別の部分プログラムと同時に存在できなくなるため、プログラム全体を実行可能な完全な形で再現することができない。
【0065】
これにより、プログラムをメモリダンプして不正にコピーしたプログラムを実行することを確実に防止することができる。
<第2の実施の形態>
次に、第2の実施の形態のシステムについて説明する。
【0066】
以下、第2の実施の形態のシステムについて、前述した第1の実施の形態のシステム100との相違点を中心に説明し、同様の事項については、その説明を省略する。
図9は、第2の実施の形態のシステムを示すブロック図である。
【0067】
図9に示す第2の実施の形態のシステム100aは、クライアント装置10aのCPU11が、論理アドレスと物理アドレスを使い分けて管理するメモリ管理部11aを備えている。
【0068】
メモリ管理部11aは、仮想的なアドレスである論理アドレスを生成する。論理アドレスは、プログラムが実際にメモリアクセスを行うときに、対応する実際のメモリの物理アドレスに変換される。プログラムの実行も、この論理アドレスに基づいて行われる。
【0069】
一方、物理アドレスは、メモリ(物理メモリ)13に対して割り当てられたアドレスであり、物理的にデータが記録されている位置になる。
図10は、論理アドレスと物理アドレスとの関係を示す図である。
【0070】
本実施の形態のプログラムは、それぞれ長さ200バイトの部分プログラム30dと部分プログラム30eに分かれてロードされる。
プログラム配置先決定部204は、部分プログラム30dを論理メモリの400番地にマッピングする。ここで論理メモリ空間は、例えばHDD12等の一部を、あたかも物理メモリの一部であるかのようにして提供される仮想的なメモリ領域である。
【0071】
メモリアクセス部206は、部分プログラム30dを、図10(a)に示すように、論理メモリ12aの400番地に配置する。
メモリ管理部11aは、アドレス変換テーブル(図示せず)に基づいて、論理メモリ12aの400番地に配置された部分プログラム30dをメモリ13の10000番地に書き込む。
【0072】
その後、プログラム配置先決定部204は、図10(b)に示すように、部分プログラム30eを論理メモリ12aの300番地にマッピングする。
メモリアクセス部206は、部分プログラム30eを、論理メモリ12aの300番地に配置する。
【0073】
メモリ管理部11aは、アドレス変換テーブルに基づいて、論理メモリ12aの300番地に配置された部分プログラム30eをメモリ13の20000番地に書き込む。
ここで、図10(c)に示すように、部分プログラム30dと部分プログラム30eは論理メモリ12a上では一部が重複しているが、メモリ13上では重複していない。
【0074】
この状態で攻撃者が不正なコピーを実行しようとする。
まずメモリダンプによって部分プログラム30dと部分プログラム30eのコピーを取得し、それを物理メモリ上に再現することはできる。つまり、プログラム全体のイメージを欠損なくコピーすることは可能である。
【0075】
しかし、それを論理メモリにマッピングする段階で一部のアドレスが重複してしまう。
具体的には、論理メモリ12aの400番地から500番地の範囲に対して、メモリ13の10000番地と20100番地の両方を同時にマッピングすることはできない。
【0076】
プログラムは論理アドレスに基づいて実行されるため、論理アドレスが重複することでプログラムが実行できなくなる。
本実施の形態のシステム100aによれば、論理アドレスにおいてアドレスが重複するように、部分プログラムの配置先を決定することで、メモリダンプによって不正にコピーされた部分プログラムの実行を阻害することができる。
【0077】
以上、本発明の情報処理装置、情報処理方法および情報処理システムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【0078】
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、LSI20の用途は、特に限定されないが、例えば、地上デジタル放送の受信を可能にする権利保護のLSI等が挙げられる。
【0079】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、LSI20が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
【0080】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0081】
情報処理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【0082】
1 情報処理装置
2 復号部
3 配置部
4、19、25 バス
5、11、21 CPU
6 記憶装置
7、13 メモリ
8 プログラムコード
8a、8b 分割コード
9a、9b コード
10、10a クライアント装置
11a メモリ管理部
12a 論理メモリ
14、24 接続インタフェース
20 LSI
22 RAM
23 暗号モジュール
30 プログラム
30a〜30e 部分プログラム
40 ネットワーク
100、100a システム
201 制御部
202 記憶部
202a 管理テーブル
203 復号部
204 プログラム配置先決定部
205 アドレス依存情報書き換え部
206 メモリアクセス部
207 プログラム監視部

【特許請求の範囲】
【請求項1】
プログラムコードが分割されて暗号化された分割コードを受け取ると、前記分割コードを復号する復号部と、
前記復号部により復号されたコードをメモリ領域の既に配置された他の前記コードにその一部が重なるように配置する配置部と、
を有することを特徴とする情報処理装置。
【請求項2】
前記配置部は、復号されたコードをメモリ領域の既に配置されたコードに一致するように配置することを特徴とする請求項1記載の情報処理装置。
【請求項3】
論理アドレスと物理アドレスを使い分けてメモリを管理する場合、
前記配置部は、論理メモリ空間において前記論理アドレスの一部が重なるように前記コードを配置することを特徴とする請求項1記載の情報処理装置。
【請求項4】
前記配置部は、既に配置されたコードが2つ以上存在する場合、少なくともいずれか1つとその一部が重なるよう配置することを特徴とする請求項1記載の情報処理装置。
【請求項5】
コンピュータが備える、
復号手段が、プログラムコードが分割されて暗号化された分割コードを受け取ると、前記分割コードを復号し、
配置手段が、前記復号手段により復号されたコードをメモリ領域の既に配置された他の前記コードにその一部が重なるように配置する、
ことを特徴とする情報処理方法。
【請求項6】
プログラムコードが分割されて暗号化された分割コードを受け取ると、前記分割コードを復号する復号部と、前記復号部により復号されたコードをメモリ領域の既に配置された他の前記コードにその一部が重なるように配置する配置部と、を備える情報処理装置と、
前記分割コードを格納する格納部と、前記メモリ領域を有するメモリとを備えるクライアント装置と、
を有することを特徴とする情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate