(58)【調査した分野】(Int.Cl.,DB名)
アプリケーションソフトウェアを不揮発性メモリに記憶しRAMにプログラムを展開して実行する携帯端末装置であって、コア部分が複数のプログラムに分割されて公開鍵と対になる秘密鍵によって暗号化されたアプリケーションソフトウェアを受け取り、復号処理プログラムを実行することによって前記アプリケーションソフトウェアの前記コア部分の複数のプログラムを前記公開鍵を用いて順次に復号化して、前記RAMの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことで前記アプリケーションソフトウェアのコア部分を実行し、不揮発性メモリはフラッシュメモリであり、かつ、前記公開鍵を通信ネットワークを介して認証局から受信する通信手段を備え、前記コア部分が複数のプログラムに分割されて、該分割された部分のハッシュ値と合わせて暗号化され、前記復号処理プログラムが、該暗号化された部分をプログラムとハッシュ値とに復号化し、次に前記復号化されたプログラムのハッシュ値を計算し該ハッシュ値を前記復号化されたハッシュ値と照合し、前記復号処理プログラムが、前記RAMの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返す、動的リンク機能を有し、前記動的リンク機能は、暗号化した各コア部分のプログラムに組み込んだことを特徴とする携帯端末装置。
携帯端末装置において不揮発性メモリに記憶したアプリケーションソフトウェアのプログラムをRAMに展開して実行する復号処理プログラムであって、前記アプリケーションソフトウェアのコア部分が複数のプログラムに分割されて公開鍵と対になる秘密鍵によって暗号化されており、コア部分の暗号化された前記複数のプログラムを前記公開鍵を用いて順次に復号化して、前記RAMの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返し、前記不揮発性メモリはフラッシュメモリであり、かつ、前記公開鍵を通信ネットワークを介して認証局から受信する通信手段を備え、前記コア部分が複数のプログラムに分割されて、該分割された部分のハッシュ値と合わせて暗号化され、前記復号処理プログラムが、該暗号化された部分をプログラムとハッシュ値とに復号化し、次に前記復号化されたプログラムのハッシュ値を計算し該ハッシュ値を前記復号化されたハッシュ値と照合し、前記復号処理プログラムが、前記RAMの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返す、動的リンク機能を有し、前記動的リンク機能は、暗号化した各コア部分のプログラムに組み込んだことを特徴とする復号処理プログラム。
【発明を実施するための形態】
【0022】
以下、本発明の実施の形態について説明する。
[第1の実施形態]
図1は、第1の実施形態による情報処理システム1の構成を示すブロック図である。情報処理システム1は、アプリ供給装置10と、携帯端末装置20と、通信ネットワーク100を備えている。通信ネットワーク100には認証局200が接続している。
図2に、情報処理システム1におけるアプリ供給装置10と携帯端末装置20の構成を示す。
【0023】
(アプリ供給装置)
図2(a)に、アプリ供給装置10の構成を示す。アプリ供給装置10は、CPU(Central Processing Unit)で構成した制御手段11、ROM12(Read Only Memory)、RAM(Ramdom Access Memory)13、バス14、インターフェイス(I/F)15、通信部16、入出力部17、ディスプレイ18、磁気ディスク19を備えている。
【0024】
制御手段11、ROM12、RAM13、インターフェイス15は、バス14によって
相互に接続する。通信部16、入出力部17、ディスプレイ18及び磁気ディスク19は、インターフェイス15によってバス14に接続する。ROM12は、不揮発性の読み出し専用メモリである。ROM12には、オペレーティングシステム(以下、「OS」という。)などの基本ソフトウェアが記憶されている。
【0025】
制御手段11は、ROM12に記憶されているOSや、磁気ディスク19から読み出されてRAM13に展開されたプログラムに従って、各種の処理を実行する。RAM13は、記憶しているデータの書き換えが可能な揮発性のメモリであって、制御手段11が各種の処理を実行する上において必要なプログラムなどを記憶する。
【0026】
インターフェイス15は、通信部16、入出力部17、ディスプレイ18及び磁気ディスク19の間における情報の入出力を管理する。インターフェイス15は、バス14を介して、制御手段11、ROM12及びRAM13との間でデータを交換する。通信部16は、通信ネットワーク100を介して認証局200や携帯端末装置20との間の通信を媒介する。通信ネットワーク100は無線通信に限られず、有線通信回線も通信ネットワーク100に含まれる。
【0027】
入出力部17は、例えばキーボードやポインティングデバイスなどであり、ユーザの操作に応じて、ユーザからの各種の指令、その他必要な情報などを入力する。ディスプレイ18は、例えばLCD(液晶表示装置)であり、文字や画像など各種情報を表示する。磁気ディスク19には、暗号化/復号化プログラム(例えば暗号化処理ルーチン及び復号処理ルーチンなど)、アプリケーションソフトウェアD10のプログラム、鍵Ko、各鍵の属性情報、プログラムの実行に必要なデータが記憶されている。
【0028】
アプリ供給装置10は、携帯端末装置20に提供するアプリケーションソフトウェアD10のプログラムを、
図3のデータ構造のように、そのプログラムのコア部分と、残りのプログラム部分とに分割する。プログラムのコア部分とは、アプリケーションソフトウェアD10のプログラムにおいて重要な処理を行うプログラム部分や、解読を防ぎたい重要なデータである。次に、そのプログラムのコア部分を、更に複数の、コアの分割プログラム部分Cに分割し、各プログラム部分を以下のようにして個別に暗号化することで、例えば、暗号化されたコアモジュールD11、D12、D13、D14のデータを作成する。
【0029】
アプリ供給装置10は、複数個作成したコアの分割プログラム部分Cを、個別に、秘密鍵Kgを用いて暗号化して暗号化データE(C,Ko)を作成する。すなわち、第1のコアの分割プログラム部分Cの暗号化データE(C,Ko)である暗号化されたコアモジュールD11と、第2のコアの分割プログラム部分Cの暗号化データE(C,Ko)である暗号化されたコアモジュールD12と、第3のコアの分割プログラム部分Cの暗号化されたコアモジュールD13と、第4のコアの分割プログラム部分Cの暗号化されたコアモジュールD14を作成する。
【0030】
そして、アプリ供給装置10は、暗号化されたコアモジュールD11、D12、D13、D14と、アプリケーションソフトウェアD10の残りのプログラム部分の、アプリの非コアプログラムD15と、復号処理プログラムD16のデータを合わせてアプリケーションソフトウェアD10のデータを作成し携帯端末装置20に渡す。
【0031】
(携帯端末装置)
図2(b)に、携帯端末装置20の構成を示す。携帯端末装置20は、制御手段21とRAM22とROM23と不揮発性メモリ24とインターフェイス25をバス26に接続して備え、インターフェイス25に通信部27と無線LAN通信部28とUSB入出力部29を接続して備える。不揮発性メモリ24は、フラッシュメモリで構成することができ
る。また、不揮発性メモリ24には、その他に、携帯端末装置20に内蔵されるハードディスクや、可搬媒体の形態のROM、ハードディスク、フレキシブルディスク、光磁気ディスク、CD−ROM等の記憶媒体を用いることもできる。
【0032】
制御手段21は、ROM23に記憶されているOSや、不揮発性メモリ24から読み出されたアプリケーションソフトウェアD10がRAM22上にリンクして展開されたプログラムに従って、各種の処理を実行する。RAM22は、記憶しているデータの書き換えが可能な揮発性のメモリであって、制御手段21が各種の処理を実行する上において必要なプログラムなどを記憶する。
【0033】
インターフェイス25は、バス26を介して、制御手段21、ROM23及びRAM22との間でデータを交換する。通信部27は、通信ネットワーク100を介して、アプリ供給装置10および認証局200との間の無線通信を媒介する。
【0034】
ROM23には、例えば制御手段21の制御プログラム(例えば、復号処理ルーチンなど)が記憶されている。不揮発性メモリ24には、制御手段21が実行するプログラム、プログラムの実行に必要なデータ、複数のファイル、認証用又はセキュアメッセージング(SM)用の鍵Ko及びその属性情報(鍵Koの暗号アルゴリズム、鍵サイズなど)が記憶されている。
【0035】
携帯端末装置20は、複数のアプリ供給装置10がプログラムのコア部分を暗号化したアプリケーションソフトウェアD10に対応することが可能であり、各アプリ供給装置10が暗号化したアプリケーションソフトウェアD10毎に、認証局200から、そのアプリ供給装置10のID番号に対して発行された公開鍵証明書を受信し、その公開鍵証明書に収められたアプリ供給装置10の公開鍵KoをRAM22に記憶する。すなわち、携帯端末装置20は、複数のアプリ供給装置10毎に、複数の鍵Koを取得してRAM22に記憶する。
【0036】
(インストール用のアプリケーションソフトウェアのデータ構造)
図3に、アプリ供給装置10が作成して携帯端末装置20にインストールするアプリケーションソフトウェアD10のデータ構造を示す。このアプリケーションソフトウェアD10は、アプリ供給装置10から携帯端末装置20に送付され、携帯端末装置20の不揮発性メモリ24に記憶させる。
【0037】
インストール用のアプリケーションソフトウェアD10は、アプリ供給装置10が、重要な処理を行うコア部分を複数のコアモジュールD11、D12、D13、D14に分解して、個々のコアモジュール毎に暗号化したコアモジュールを作成する。
【0038】
そして、暗号化したコアモジュールを、平文の、アプリの非コアプログラムD15と合わせ、更に、復号処理プログラムD16を加えて、インストール用のアプリケーションソフトウェアD10のデータを構成する。復号処理プログラムD16は、暗号化したコアモジュールD11、D12、D13、D14を複合化し、更にプログラムをリンクするプログラムである。こうして、暗号化された複数のコアモジュールD11、D12、D13、D14と復号処理プログラムD16をセットにして、アプリの非コアプログラムD15と合わせて1つのアプリケーションソフトウェアD10を構成する。
【0039】
アプリケーションソフトウェアD10をこのデータ構造にすることで、アプリケーションソフトウェアD10を解析しようとするクラッカーが、携帯端末装置20の不揮発性メモリ24からアプリケーションソフトウェアD10を読み出しても、そのプログラムが暗号化されているので解読できない効果がある。
【0040】
また、携帯端末装置20は、復号処理プログラムD16を実行することで、
図4のように、アプリケーションソフトウェアD10の暗号化されたコアモジュールD11、D12、D13、D14の1つを、復号化して携帯端末装置20のRAM22上のアプリのコア領域22aに以前のプログラムに上書きして展開する。
【0041】
そして、復号処理プログラムD16が、携帯端末装置20に、その上書きしたプログラムを実行させた上で、次の、暗号化されたコアモジュールを復号化して、再びアプリのコア領域22aに先のプログラムに上書きして展開する。
【0042】
こうして、携帯端末装置20は、復号処理プログラムD16のプログラムに従って、RAM22上の同じアプリのコア領域22aに、次々とコアモジュールのプログラムを上書きする動的リンク処理を行う。
【0043】
なお、この復号処理プログラムD16のプログラムの、コアモジュールのプログラムをアプリのコア領域22aへ上書きさせる動的リンク機能は、暗号化した各コアモジュールD11、D12、D13、D14内のプログラムに組み込んだ形で実装しても良い。
【0044】
すなわち、復号化された各コアモジュールに、次のコアモジュールのプログラムを、RAM22上のアプリのコア領域22aへ上書きする処理を行う動的リンク機能を持たせる。それにより、次のコアモジュールのプログラムをアプリのコア領域22aに上書きして展開して、先のプログラムの実行後に、アプリのコア領域22aへ上書きした次のプログラムの実行を開始する。次に、次のコアモジュールのプログラムを、その同じアプリのコア領域22aに上書きする。そうして、順次に複数のプログラムをRAM22上の同じアプリのコア領域22aに上書きして実行させる。
【0045】
以上のように、次に実行するプログラムをリンクする機能を、各コアモジュールのプログラム内に組み込んでも良い。
【0046】
複数の暗号化したコアモジュールD11、D12、D13、D14は、アプリ供給装置10が作成する。すなわち、アプリ供給装置10が、公開鍵暗号方式を利用して、アプリケーションソフトウェアD10のプログラムのコア部分を複数に分割して、各部分毎に暗号化してコアモジュールD11、D12、D13、D14を作成する。
【0047】
そして、携帯端末装置20は、復号処理プログラムD16を実行することで、インストール用のアプリケーションソフトウェアD10のコアモジュールD11、D12、D13、D14を、アプリケーションソフトウェアD10の動作に応じて動的に復号化して、先に実行したプログラムが書き込まれていたRAM22上のアプリのコア領域22aに、次のコアモジュールのプログラムを上書きし、そのように上書きしたプログラムを実行する。
【0048】
(情報処理システム全体の動作の概要)
以下に、本実施形態の情報処理システム1全体の動作の概要を説明する。
(電子署名の公開鍵の登録)
先ず、アプリ供給装置10が予め、鍵生成アルゴリズムを実行して電子署名の公開鍵Koおよび秘密鍵Kgを生成する。そして、その公開鍵Koを第三者機関を介して公開する。
【0049】
(インストール用のアプリケーションソフトウェアを暗号化して作成)
アプリ供給装置10は、アプリケーションソフトウェアD10のプログラムを、
図3の
ブロック図のように、そのプログラムのコア部分と、残りのプログラム部分の、アプリの非コアプログラムD15に分割する。次に、そのプログラムのコア部分は、複数のコアモジュールに分割し、その各々のコアの分割プログラム部分Cを、秘密鍵Kgを用いて暗号化して暗号化データE(C,Ko)を作成する。各コアの分割プログラム部分Cの暗号化データE(C,Ko)をコアモジュールD11、D12、D13、D14とする。
【0050】
そして、アプリ供給装置10は、アプリケーションソフトウェアD10として、そのコアモジュールD11、D12、D13、D14と、公開鍵Koを含む復号処理プログラムD16と、アプリの非コアプログラムD15とを合わせたデータを作成し携帯端末装置20に送付する。
【0051】
(インストール用のアプリケーションソフトウェアの復号化)
図4に、携帯端末装置20において、アプリケーションソフトウェアD10を不揮発性メモリ24に格納した後に、そのプログラムをRAM22上へ展開して実行する動作を行うデータの流れを示す。特に、コアモジュールD1、D2、D3、D4は、それらを復号化処理して、RAM22の同じ記憶領域のアプリのコア領域に順次に上書きして実行する。
【0052】
携帯端末装置20は、アプリ供給装置10から送付されたアプリケーションソフトウェアD10を不揮発性メモリ24に記憶する。アプリケーションソフトウェアD10は、公開鍵Koを含む復号処理プログラムD16と、暗号化された複数のコアモジュールD11、D12、D13、D14と、そのアプリケーションソフトウェアD10の残りのアプリの非コアプログラムD15から成る。そして、携帯端末装置20がそのアプリケーションソフトウェアD10を実行する際に、その機能の実行が必要になったプログラムのデータを、必要な都度RAM22上に展開して記憶する。
【0053】
特に、暗号化したデータであるコアモジュールD1、D2、D3、D4は、それを復号化したコアの分割プログラム部分CはRAM22上のアプリのコア領域22aにのみ記憶する。そして、1つのコアの分割プログラム部分Cのプログラムの実行を終えたら、次の各コアの分割プログラム部分Cの暗号化データE(C,Ko)を公開鍵Koを用いて復号してコアの分割プログラム部分Cを作成し、そのコアの分割プログラム部分Cを、先に実行したコアの分割プログラム部分Cを記憶していたRAM22上の同じアプリのコア領域22aに上書きする。それにより、先のモジュールのプログラムの記憶を消去する。
【0054】
このように、複数の復号化したコアの分割プログラム部分Cを同じRAM22上のアプリのコア領域22aに上書きして展開することで、アプリケーションソフトウェアD10のセキュリティを高くすることができる効果がある。
【0055】
また、アプリケーションソフトウェアD10のプログラムのコア部分を複数のコアの分割プログラム部分Cに分割して、RAM22上の同じ領域であるアプリのコア領域22aに上書きして実行するので、プログラムを実行するためにRAM22を占有する記憶領域を小さくできRAM22の記憶容量を節約できる効果がある。そして、携帯端末装置20のRAM22の記憶領域の容量にかかわらず、長い大きなコア部分のプログラムを実行させることができる効果がある。
【0056】
以下、
図5のフローチャートを参照して、本実施形態の情報処理システム1のアプリ供給装置10動作と携帯端末装置20の動作を説明する。
【0057】
(アプリ供給装置の動作)
図5に、アプリ供給装置10において、制御手段11がアプリケーションソフトウェア
D10のプログラムのコア部分を複数のモジュールに分解して、それぞれを暗号化する暗号化処理ルーチンのフローチャートを示す。
【0058】
(アプリケーションソフトウェアの暗号化処理)
暗号化処理ルーチンは、アプリケーションソフトウェアD10のプログラムのコア部分を分解した複数のモジュールの1つであるコアの分割プログラム部分Cを暗号化する。
図5には、更に、携帯端末装置20の制御手段21が暗号化データE(C,Ko)を復号化処理する復号処理ルーチンのフローチャートも示す。
【0059】
(ステップS1:プログラムのモジュール分割処理)
アプリ供給装置10の制御手段11は、アプリケーションソフトウェアD10のプログラムを、
図3のブロック図のように、プログラムのコア部分と、残りのプログラム部分とに分割し、更に、そのコア部分を複数のコアの分割プログラム部分Cに分割する。
【0060】
(ステップS2:暗号化処理)
次に、制御手段11が、コア部分を複数に分割した各コアの分割プログラム部分C毎に、以下の暗号化処理を行う。すなわち、制御手段11が、署名生成アルゴリズムの最初のプログラムで、例えばSHA−1関数などの一方向ハッシュ関数で、コアの分割プログラム部分Cの不可逆変換処理を行いハッシュ値H1を計算する。次に、制御手段11が、署名生成アルゴリズムの次のプログラムで、秘密鍵Kgを用いてコアの分割プログラム部分Cとそのハッシュ値を暗号化して暗号化データE(C,Ko)を作成する。
【0061】
こうして、複数に分割した各コアの分割プログラム部分Cから暗号化データE(C,Ko)を作成する。作成した各暗号化データE(C,Ko)を、コアモジュールD11、D12、D13、D14とする。コアモジュールD11、D12、D13、D14の全てを作成した場合は、ステップS3へ進む。
【0062】
(ステップS3)
制御手段11は、公開鍵Koを含む復号処理プログラムD16と、アプリケーションソフトウェアのコア部分の暗号化されたコアモジュールD11、D12、D13、D14と、アプリの非コアプログラムD15とで構成したアプリケーションソフトウェアD10のデータを作成し、携帯端末装置20に送付する。
【0063】
アプリケーションソフトウェアD10をアプリ供給装置10から携帯端末装置20へ送付する方法の1つとして、Webサーバから通信ネットワーク100を介する通信により、ユーザの携帯端末装置20へデータを送信することができる。携帯端末装置20は、通信部27や無線LAN通信部28でそのデータを受信する。また、USBメモリや、不揮発性メモリ24等の物理的媒体にアプリケーションソフトウェアD10のデータを記憶させて携帯端末装置20に送付することができる。すなわち、USBメモリを携帯端末装置20のUSB入出力部29で読み込ませたり、不揮発性メモリ24を携帯端末装置20に直接に実装することもできる。
【0064】
(携帯端末装置の動作)
図5に、携帯端末装置20において、制御手段21が暗号化されたアプリケーションソフトウェアD10を復号化してRAM22上に展開してプログラムを実行する手順のフローチャートを示す。
【0065】
(ステップS31)
携帯端末装置20の制御手段21は、認証局200から、アプリ供給装置10のID番号に対して発行された公開鍵証明書を受信し、公開鍵証明書に収められた公開鍵KoをR
AM22に記憶する。この動作は、次のステップS32の、アプリケーションソフトウェアD10の取り込みの後に行っても良い。
【0066】
(ステップS32)
次に、制御手段21は、アプリ供給装置10から送信されたアプリケーションソフトウェアD10を不揮発性メモリ24に記憶する。すなわち、アプリケーションソフトウェアD10の、公開鍵Koを含む復号処理プログラムD16と、アプリケーションソフトウェアのコア部分の暗号化されたコアモジュールD11、D12、D13、D14と、アプリの非コアプログラムD15のデータを不揮発性メモリ24に記憶する。
【0067】
(ステップS33)
次に、制御手段21は、復号処理プログラムD16が含む公開鍵Koの正当性を、認証局200から受け取った公開鍵証明書から読み出してRAM22に記憶した公開鍵Koと照合して検証する。その認証ができない場合、そのアプリケーションソフトウェアD10の実行を中止する。認証が正常に行えた場合は、ステップS34へ進む。
【0068】
(ステップS34)
制御手段21は、ユーザからの、アプリケーションソフトウェアD10の動作開始指令を受けて、以下のようにして、アプリケーションソフトウェアD10のプログラムを動作させる。先ず、制御手段21は、不揮発性メモリ24から、実行すべきアプリケーションソフトウェアD10の、アプリの非コアプログラムD15を読み出して、RAM22上のアプリの非コア領域22bに動的に展開する。
【0069】
(ステップS35)
次に、制御手段21が、アプリの非コアプログラムD15のプログラムを実行する。そのプログラムの実行中にコアモジュールを実行する必要が生じた際に、ステップS36以降の復号化処理ルーチンを実行する。
【0070】
(ステップS36:復号化処理ルーチン)
制御手段21は、コアモジュールの実行要求が生じた際に、復号処理プログラムD16のプログラムをRAM22上のアプリの非コア領域22bに動的に展開して動作させる。
【0071】
復号処理プログラムD16のプログラムは、暗号化されたコアモジュールD11、D12、D13、D14のうちで該当するモジュールを不揮発性メモリ24から読出し、その暗号化データE(C,Ko)を以下のようにして復号化する。
【0072】
復号処理プログラムD16のプログラムは、その暗号化データE(C,Ko)を、RAM22に記憶した公開鍵Koを用いて復号化して、コアの分割プログラム部分Cとハッシュ値H1とを得る。得られたハッシュ値H1は制御手段21のレジスタに記憶する。そして、コアの分割プログラム部分Cは、RAM22上の、先に実行していたコアモジュールのプログラムと同じ領域のアプリのコア領域22aに上書きして記憶する。次に、ステップS37へ進む。
【0073】
こうして、先にコアの分割プログラム部分Cを記憶していたRAM22上のアプリのコア領域22aに、次のコアの分割プログラム部分Cを上書きすることで、RAM22から、先に記憶していたコアの分割プログラム部分Cを抹消する。
【0074】
(ステップS37)
次に、制御手段21は、アプリのコア領域22aに展開したコアの分割プログラム部分Cにハッシュ関数を作用させてハッシュ値H2を計算する。そして、そのハッシュ値H2
を、先に復号化したハッシュ値H1と照合する。ハッシュ値H1とH2が一致すれば、コアの分割プログラム部分Cの改ざんが無いと判定し、ステップS38に進む。ハッシュ値H1とH2が一致しなければ、そのアプリケーションソフトウェアD10の実行を中止してステップS31に戻る。
【0075】
(ステップS38)
次に、制御手段21は、RAM22上のアプリのコア領域22aに展開しておいたコアの分割プログラム部分Cのプログラムを実行する。そのプログラムの実行後に、ステップS36に戻り、復号処理プログラムD16を実行して、次に実行すべき、コアモジュールD11、D12、D13、D14のいずれかを不揮発性メモリ24から読出す。
【0076】
そして、その読み出したモジュールの暗号化データE(C,Ko)を、公開鍵Koを用いて復号化して、コアの分割プログラム部分Cと、そのハッシュ値H1とを得、コアの分割プログラム部分Cを、RAM22上の、先に実行していたコアモジュールのプログラムと同じ領域のアプリのコア領域22aに上書きして記憶する。そして、次のステップS37に進む。
【0077】
こうして、制御手段21が、ステップS36からステップS38までの動作を繰り返し、コアモジュールD11、D12、D13、D14の最後のモジュールまで、復号化処理ルーチンをを実行することで、暗号化されたコアモジュールD11、D12、D13、D14を復号化したプログラムを、RAM22上の同じ記憶領域であるアプリのコア領域22aに、次々と上書きすることで、直前のコアモジュールのプログラムをアプリのコア領域22aから抹消する。
【0078】
このようにコアモジュールD11、D12、D13、D14を順次に復号化してRAM22上の同じ記憶領域に上書きして以前のデータを抹消するので、実行させるために復号化させたコアモジュールD11、D12、D13、D14のデータがRAM22に存在する時間は、1つのコアモジュールの実行開始時の複合化の時から、次のコアモジュールの実行開始時の複合化の時までの間の短い時間のみである。こうすることで、アプリケーションソフトウェアD10を解析しようとするクラッカーによるプログラムの解析を極めて難しくできる効果がある。
【0079】
以上のように、第1の実施形態に係る情報処理システム1において、アプリ供給装置10は、秘密鍵Kgを用いてアプリケーションソフトウェアD10のコア部分を複数のコアの分割プログラム部分Cに分割して、それぞれのコアの分割プログラム部分Cを暗号化データE(C,Ko)に変換し、その暗号化データE(C,Ko)のコアモジュールD11、D12、D13、D14と、アプリの非コアプログラムD15と、公開鍵Koと、復号処理プログラムD16を合わせたデータからなるアプリケーションソフトウェアD10を携帯端末装置20へ送付する。
【0080】
一方、携帯端末装置20では、制御手段21が、アプリ供給装置10から受信したアプリケーションソフトウェアD10を不揮発性メモリ24に記憶する。
【0081】
そして、制御手段21は、ユーザからの、アプリケーションソフトウェアD10の動作開始指令を受けて、アプリケーションソフトウェアD10のプログラムを動的にRAM上に展開して実行する。アプリケーションソフトウェアD10の、コアの分割プログラム部分Cのプログラムの実行が必要になった場合に、復号処理プログラムD16を実行して、該当するコアモジュールD11、D12、D13、D14の暗号化データE(C,Ko)を、公開鍵Koを用いて復号化する。
【0082】
その復号化したコアの分割プログラム部分Cは、RAM22上のアプリのコア領域22aに同じ記憶領域に次々と上書きして直前のコアモジュールのプログラムをRAM22から抹消する。そして、アプリのコア領域22aのコアの分割プログラム部分Cのプログラムを実行する。
【0083】
こうして、携帯端末装置20のRAM22上のアプリのコア領域22aに展開したコアの分割プログラム部分Cのプログラムは、そのアプリケーションソフトウェアD10の動作に必要な期間のみRAM22上に存在する。
【0084】
なお、そのアプリケーションソフトウェアD10の動作が停止(一時停止動作を含む)した場合に、RAM22上のアプリのコア領域22aからコアの分割プログラム部分Cを消去するモジュールデータ読出し限定手段も設ける。このモジュールデータ読出し限定手段が、非常時にアプリのコア領域22aからデータを消去することで、RAM22上のアプリのコア領域22aに記憶されているコアの分割プログラム部分Cは、非常時にも、そのデータのオーナーであるアプリケーションソフトウェアD10以外の外部のプログラムから読み取ることができない効果がある。
【0085】
このように、本実施形態は、アプリケーションソフトウェアD10の流通の利便性を高めるとともに、携帯端末装置20が、クラッカーによる盗聴及び鍵の漏洩を防ぐ高いセキュリティ品質で、改ざんされていない正しいアプリケーションソフトウェアD10を注意深く判別して実行することができるので、アプリケーションソフトウェアD10の流通を促進できる効果がある。
【0086】
[第2の実施形態]
本発明の第2の実施形態として、復号処理プログラムD16は外部ライブラリソフトウェアとして、アプリケーションソフトウェアD10とは別にして携帯端末装置20に送付し、復号処理プログラムD16を含まないアプリケーションソフトウェアD10を、復号処理プログラムD16とは別に携帯端末装置20に送付することができる。そうして、外部ライブラリソフトウェアとした復号処理プログラムD16を複数のアプリケーションソフトウェアD10に共有させて実行させる。それ以外は、第1の実施形態と同様に構成する。
【0087】
(変形例1)
第2の実施形態の変形例1として、公開鍵Koは、外部ライブラリソフトウェアとした復号処理プログラムD16に含ませず、携帯端末装置20は、公開鍵Koを、各アプリ供給装置10が暗号化したアプリケーションソフトウェアD10毎に、認証局200から取得してRAM22に記憶して用いるようにしても良い。
【0088】
各アプリ供給装置10は、アプリケーションソフトウェアD10のコア部分をコアの分割プログラム部分Cに分割して、それぞれのコアの分割プログラム部分Cを、公開鍵Koに対応する秘密鍵Kgを用いて暗号化データE(C,Ko)に変換し、コアモジュールD11、D12、D13、D14として、アプリの非コアプログラムD15と合わせたデータからなるアプリケーションソフトウェアD10を携帯端末装置20へ送付する。
【0089】
携帯端末装置20は、制御手段21が、外部ライブラリソフトウェアとした復号処理プログラムD16を実行し、復号化すべきアプリケーションソフトウェアD10のコアモジュールD11、D12、D13、D14に対応する公開鍵KoをRAM22から読み出して、コアモジュールD11、D12、D13、D14を順次に復号化してRAM22上のアプリのコア領域22aに上書きして展開する。
【0090】
こうして、携帯端末装置20の制御手段21が、外部ライブラリソフトウェアの復号処理プログラムD16を読み込んで、そのプログラムを実行させて、一方、各アプリケーションソフトウェアD10毎に対応付けられた公開鍵Koを別途取得して、その公開鍵Koを用いてコアモジュールD11、D12、D13、D14を順次に復号化してRAM22上のアプリのコア領域22aに上書きして展開する。
【0091】
これにより、異なるアプリ供給装置10が作成したアプリケーションソフトウェアD10を、共通の復号処理プログラムD16を共用する一方、アプリ供給装置10毎に、異なる秘密鍵Kgで暗号化したアプリケーションソフトウェアD10のコアモジュールD11、D12、D13、D14を、それらの秘密鍵Kgに対応した異なる公開鍵Koで復号化して実行させることができる。