(57)【要約】【課題】利便性の高い方法で、携帯端末装置のアプリケーションソフトウェアが第３者による解読され難くする。【解決手段】アプリケーションソフトウェアを不揮発性メモリに記憶しＲＡＭにプログラムを展開して実行する携帯端末装置に、コア部分が複数のプログラムに分割されて、公開鍵と対になる秘密鍵によって暗号化されたアプリケーションソフトウェアを受け取らせ、復号処理プログラムを実行させて、前記アプリケーションソフトウェアの前記複数のコアモジュールを前記公開鍵を用いて順次に復号化して、前記ＲＡＭの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことで前記アプリケーションソフトウェアのコア部分を実行させる。【選択図】図５
2014160383.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションソフトウェアを不揮発性メモリに記憶しＲＡＭにプログラムを展開して実行する携帯端末装置であって、コア部分が複数のプログラムに分割されて公開鍵と対になる秘密鍵によって暗号化されたアプリケーションソフトウェアを受け取り、復号処理プログラムを実行することによって前記アプリケーションソフトウェアの前記コア部分の複数のプログラムを前記公開鍵を用いて順次に復号化して、前記ＲＡＭの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことで前記アプリケーションソフトウェアのコア部分を実行することを特徴とする携帯端末装置。
【請求項２】
請求項１記載の携帯端末装置であって、前記公開鍵を通信ネットワークを介して認証局から受信する通信手段を備えたことを特徴とする携帯端末装置。
【請求項３】
請求項１又は２に記載の携帯端末装置であって、前記コア部分が複数のプログラムに分割されて、該分割された部分のハッシュ値と合わせて暗号化され、前記復号処理プログラムが、該暗号化された部分をプログラムとハッシュ値とに復号化し、次に前記復号化されたプログラムのハッシュ値を計算し該ハッシュ値を前記復号化されたハッシュ値と照合することを特徴とする携帯端末装置。
【請求項４】
請求項１乃至３の何れか一項に記載の携帯端末装置であって、前記復号処理プログラムが、前記ＲＡＭの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことを特徴とする携帯端末装置。
【請求項５】
請求項１乃至４の何れか一項に記載の携帯端末装置であって、前記アプリケーションソフトウェアが、前記復号処理プログラムと前記公開鍵を含むアプリケーションソフトウェアであることを特徴とする携帯端末装置。
【請求項６】
携帯端末装置において不揮発性メモリに記憶したアプリケーションソフトウェアのプログラムをＲＡＭに展開して実行する復号処理プログラムであって、前記アプリケーションソフトウェアのコア部分が複数のプログラムに分割されて公開鍵と対になる秘密鍵によって暗号化されており、コア部分の暗号化された前記複数のプログラムを前記公開鍵を用いて順次に復号化して、前記ＲＡＭの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことを特徴とする復号処理プログラム。
【請求項７】
請求項６記載の復号処理プログラムであって、前記分割された複数のプログラムと、該プログラムのハッシュ値とが合わせて暗号化されており、前記復号処理プログラムが、暗号化された前記複数のプログラムとハッシュ値を復号化し、次に前記復号化されたプログラムのハッシュ値を計算し該ハッシュ値を前記復号化されたハッシュ値と照合することを特徴とする復号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフトウェアを実行する携帯端末装置であって、その携帯端末装置用のアプリケーションソフトウェアが外部から解析され改ざんされることを防止する機能を持つ携帯端末装置、及び、暗号化したアプリケーションソフトウェアを携帯端末装置で復号化させる復号処理プログラムに関する。
【背景技術】
【０００２】
近年、携帯端末装置は、スマートホン、電子タブレット等と様々な形態のものが普及してきており、これら様々な携帯端末装置において多様なアプリケーションソフトウェアが利用されている。特に、これらの携帯端末装置を用いてユーザがさまざまな動画像や音声を楽しむアプリケーションソフトウェアが広く普及している。携帯端末装置を動画像、音声の再生装置として使うことは、固定的な携帯端末装置のハードウェアを必要としないため、手軽に動画像、音声の再生が楽しめるという利点がある。
【０００３】
しかしながら画像／音声のデータを通信回線を通じて携帯端末装置に配布する場合に、それら画像／音声の著作権をいかにして保護するかという課題がある。特許文献１などでは、それらの画像や音楽の著作物のデータを、不正コピーから保護するために暗号化して、携帯端末装置上で動作するアプリケーションソフトウェアでその暗号化データを復号化させていた。しかし、そのアプリケーションソフトウェアのプログラムが不正に解析されて不正に改造されてしまうと、著作物の不正コピーが可能になってしまう問題があった。
【０００４】
また、その他の種類のアプリケーションソフトウェアについても同様にそのプログラムが不正に解析されて不正に改造される可能性がある弱点があり、携帯端末装置を通じた高度な情報サービスの適用の妨げになっていた。
【０００５】
この問題を解決するために、特許文献２などでは、ソフトウェアも暗号化することで、ソフトウェアが解読、改竄されることを防止する技術が開示されている。この技術は耐タンパソフトウェア技術と呼ばれている（DavidAucsmith et.al;“Tamper Resistant Software：An Implementation”，Proceedingof the 1996 Intel Software Developer's Conference）。
【０００６】
耐タンパソフトウェア技術は、アプリケーションソフトウェアのうち保護を要する部分を実行開始時には暗号化しておき、その部分を実行する前に復号化し、実行終了後に再び暗号化することにより、逆アセンブラ、デバッガなどの解析ツールによる解析を困難にする技術である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平９−３０７５４５号公報
【特許文献２】特開２００４−２８０６７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した耐タンパソフトウェア技術は、高度なソフトウェアのセキュリティ技術であるが、スマートホン、電子タブレット等の携帯端末装置の利用者に、操作性の高い利便性を与えつつ種々のアプリケーションソフトウェアを供給する場合に、ソフトウェアの難読化機能が過剰であると、アプリケーションソフトウェアの流通の利便性を損なうという問題
があった。
【０００９】
本発明は、このような実情を鑑みて提案されたものであり、処理を簡易化した利便性の高い方法で、アプリケーションソフトウェアを難読化しセキュリティを高めて供給することで、アプリケーションソフトウェアの流通の利便性を高めることを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上記課題を解決するために、アプリケーションソフトウェアを不揮発性メモリに記憶しＲＡＭにプログラムを展開して実行する携帯端末装置であって、コア部分が複数のプログラムに分割されて公開鍵と対になる秘密鍵によって暗号化されたアプリケーションソフトウェアを受け取り、復号処理プログラムを実行することによって前記アプリケーションソフトウェアの前記コア部分の複数のプログラムを前記公開鍵を用いて順次に復号化して、前記ＲＡＭの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことで前記アプリケーションソフトウェアのコア部分を実行することを特徴とする携帯端末装置である。
【００１１】
これにより、本発明の携帯端末装置は、不揮発性メモリに記憶したアプリケーションソフトウェアのコア部分が暗号化されているのでクラッカーに解読されず、また、復号化したコア部分の複数のプログラムがＲＡＭ上の同じ記憶領域に順次に上書きされて実行されるので、ＲＡＭ上に短時間しか存在しないので、クラッカーによりアプリケーションソフトウェアが解読されて改ざんされる恐れを少なくし高いセキュリティでアプリケーションソフトウェアを利用することができる。
【００１２】
また、本発明は、上記の携帯端末装置であって、前記公開鍵を通信ネットワークを介して認証局から受信する通信手段を備えたことを特徴とする携帯端末装置である。
【００１３】
これにより、本発明の携帯端末装置は、認証局から公開鍵を受信して、改ざんされたアプリケーションソフトウェアが不正な公開鍵を用いて暗号化されて正規なアプリケーションソフトウェアに偽装して流通されることを防止できる。
【００１４】
また、本発明は、上記の携帯端末装置であって、前記コア部分が複数のプログラムに分割されて、該分割された部分のハッシュ値と合わせて暗号化され、前記復号処理プログラムが、該暗号化された部分をプログラムとハッシュ値とに復号化し、次に前記復号化されたプログラムのハッシュ値を計算し該ハッシュ値を前記復号化されたハッシュ値と照合することを特徴とする携帯端末装置である。
【００１５】
これにより、本発明の携帯端末装置は、不正に改ざんされたアプリケーションソフトウェアを発見し正規のアプリケーションソフトウェアのみを用いることができる。
【００１６】
また、本発明は、上記の携帯端末装置であって、前記復号処理プログラムが、前記ＲＡＭの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことを特徴とする携帯端末装置である。
【００１７】
また、本発明は、上記の携帯端末装置であって、前記アプリケーションソフトウェアが、前記復号処理プログラムと前記公開鍵を含むアプリケーションソフトウェアであることを特徴とする携帯端末装置である。
【００１８】
また、本発明は、携帯端末装置において不揮発性メモリに記憶したアプリケーションソフトウェアのプログラムをＲＡＭに展開して実行する復号処理プログラムであって、前記アプリケーションソフトウェアのコア部分が複数のプログラムに分割されて公開鍵と対に
なる秘密鍵によって暗号化されており、コア部分の暗号化された前記複数のプログラムを前記公開鍵を用いて順次に復号化して、前記ＲＡＭの同じ記憶領域に以前のプログラムに上書きして書き込んで実行する処理を繰り返すことを特徴とする復号処理プログラムである。
【００１９】
また、本発明は、上記の復号処理プログラムであって、前記分割された複数のプログラムと、該プログラムのハッシュ値とが合わせて暗号化されており、前記復号処理プログラムが、暗号化された前記複数のプログラムとハッシュ値を復号化し、次に前記復号化されたプログラムのハッシュ値を計算し該ハッシュ値を前記復号化されたハッシュ値と照合することを特徴とする復号処理プログラムである。
【発明の効果】
【００２０】
本発明は、携帯端末装置が不揮発性メモリに記憶したアプリケーションソフトウェアのコア部分が暗号化されているので、アプリケーションソフトウェアがクラッカーに解読されず、また、コアモジュールが復号化されてＲＡＭ上に展開されるが、その複合化されたプログラムがＲＡＭ上の同じ記憶領域に頻繁に上書きされるので、ＲＡＭ上にコアモジュールのプログラムが短時間しか存在しないので、クラッカーによりアプリケーションソフトウェアの解読を困難にし、その改ざんの恐れを少なくし携帯端末装置において高いセキュリティでアプリケーションソフトウェアを利用できる。それにより、利便性が高く、アプリケーションソフトウェアの流通を促進できる効果がある。
【図面の簡単な説明】
【００２１】
【図１】第１の実施形態の情報処理システムの構成を示すブロック図である。
【図２】（ａ）第１の実施形態の情報処理システムにおけるアプリ供給装置の構成を示すブロック図である。（ｂ）第１の実施形態の情報処理システムにおける携帯端末装置の構成を示すブロック図である。
【図３】第１の実施形態のアプリ供給装置が作成するアプリケーションソフトウェアのデータ構造を示す図である。
【図４】第１の実施形態の情報処理システムにおいて携帯端末装置が、アプリケーションソフトウェアのデータをＲＡＭの記憶領域上へ展開するデータの流れを示すブロック図である。
【図５】第１の実施形態の情報処理システムにおけるアプリ供給装置の動作及び携帯端末装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について説明する。
［第１の実施形態］
図１は、第１の実施形態による情報処理システム１の構成を示すブロック図である。情報処理システム１は、アプリ供給装置１０と、携帯端末装置２０と、通信ネットワーク１００を備えている。通信ネットワーク１００には認証局２００が接続している。図２に、情報処理システム１におけるアプリ供給装置１０と携帯端末装置２０の構成を示す。
【００２３】
（アプリ供給装置）
図２（ａ）に、アプリ供給装置１０の構成を示す。アプリ供給装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で構成した制御手段１１、ＲＯＭ１２（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３、バス１４、インターフェイス（Ｉ／Ｆ）１５、通信部１６、入出力部１７、ディスプレイ１８、磁気ディスク１９を備えている。
【００２４】
制御手段１１、ＲＯＭ１２、ＲＡＭ１３、インターフェイス１５は、バス１４によって
相互に接続する。通信部１６、入出力部１７、ディスプレイ１８及び磁気ディスク１９は、インターフェイス１５によってバス１４に接続する。ＲＯＭ１２は、不揮発性の読み出し専用メモリである。ＲＯＭ１２には、オペレーティングシステム（以下、「ＯＳ」という。）などの基本ソフトウェアが記憶されている。
【００２５】
制御手段１１は、ＲＯＭ１２に記憶されているＯＳや、磁気ディスク１９から読み出されてＲＡＭ１３に展開されたプログラムに従って、各種の処理を実行する。ＲＡＭ１３は、記憶しているデータの書き換えが可能な揮発性のメモリであって、制御手段１１が各種の処理を実行する上において必要なプログラムなどを記憶する。
【００２６】
インターフェイス１５は、通信部１６、入出力部１７、ディスプレイ１８及び磁気ディスク１９の間における情報の入出力を管理する。インターフェイス１５は、バス１４を介して、制御手段１１、ＲＯＭ１２及びＲＡＭ１３との間でデータを交換する。通信部１６は、通信ネットワーク１００を介して認証局２００や携帯端末装置２０との間の通信を媒介する。通信ネットワーク１００は無線通信に限られず、有線通信回線も通信ネットワーク１００に含まれる。
【００２７】
入出力部１７は、例えばキーボードやポインティングデバイスなどであり、ユーザの操作に応じて、ユーザからの各種の指令、その他必要な情報などを入力する。ディスプレイ１８は、例えばＬＣＤ（液晶表示装置）であり、文字や画像など各種情報を表示する。磁気ディスク１９には、暗号化／復号化プログラム（例えば暗号化処理ルーチン及び復号処理ルーチンなど）、アプリケーションソフトウェアＤ１０のプログラム、鍵Ｋｏ、各鍵の属性情報、プログラムの実行に必要なデータが記憶されている。
【００２８】
アプリ供給装置１０は、携帯端末装置２０に提供するアプリケーションソフトウェアＤ１０のプログラムを、図３のデータ構造のように、そのプログラムのコア部分と、残りのプログラム部分とに分割する。プログラムのコア部分とは、アプリケーションソフトウェアＤ１０のプログラムにおいて重要な処理を行うプログラム部分や、解読を防ぎたい重要なデータである。次に、そのプログラムのコア部分を、更に複数の、コアの分割プログラム部分Ｃに分割し、各プログラム部分を以下のようにして個別に暗号化することで、例えば、暗号化されたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４のデータを作成する。
【００２９】
アプリ供給装置１０は、複数個作成したコアの分割プログラム部分Ｃを、個別に、秘密鍵Ｋｇを用いて暗号化して暗号化データＥ（Ｃ，Ｋｏ）を作成する。すなわち、第１のコアの分割プログラム部分Ｃの暗号化データＥ（Ｃ，Ｋｏ）である暗号化されたコアモジュールＤ１１と、第２のコアの分割プログラム部分Ｃの暗号化データＥ（Ｃ，Ｋｏ）である暗号化されたコアモジュールＤ１２と、第３のコアの分割プログラム部分Ｃの暗号化されたコアモジュールＤ１３と、第４のコアの分割プログラム部分Ｃの暗号化されたコアモジュールＤ１４を作成する。
【００３０】
そして、アプリ供給装置１０は、暗号化されたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４と、アプリケーションソフトウェアＤ１０の残りのプログラム部分の、アプリの非コアプログラムＤ１５と、復号処理プログラムＤ１６のデータを合わせてアプリケーションソフトウェアＤ１０のデータを作成し携帯端末装置２０に渡す。
【００３１】
（携帯端末装置）
図２（ｂ）に、携帯端末装置２０の構成を示す。携帯端末装置２０は、制御手段２１とＲＡＭ２２とＲＯＭ２３と不揮発性メモリ２４とインターフェイス２５をバス２６に接続して備え、インターフェイス２５に通信部２７と無線ＬＡＮ通信部２８とＵＳＢ入出力部２９を接続して備える。不揮発性メモリ２４は、フラッシュメモリで構成することができ
る。また、不揮発性メモリ２４には、その他に、携帯端末装置２０に内蔵されるハードディスクや、可搬媒体の形態のＲＯＭ、ハードディスク、フレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記憶媒体を用いることもできる。
【００３２】
制御手段２１は、ＲＯＭ２３に記憶されているＯＳや、不揮発性メモリ２４から読み出されたアプリケーションソフトウェアＤ１０がＲＡＭ２２上にリンクして展開されたプログラムに従って、各種の処理を実行する。ＲＡＭ２２は、記憶しているデータの書き換えが可能な揮発性のメモリであって、制御手段２１が各種の処理を実行する上において必要なプログラムなどを記憶する。
【００３３】
インターフェイス２５は、バス２６を介して、制御手段２１、ＲＯＭ２３及びＲＡＭ２２との間でデータを交換する。通信部２７は、通信ネットワーク１００を介して、アプリ供給装置１０および認証局２００との間の無線通信を媒介する。
【００３４】
ＲＯＭ２３には、例えば制御手段２１の制御プログラム（例えば、復号処理ルーチンなど）が記憶されている。不揮発性メモリ２４には、制御手段２１が実行するプログラム、プログラムの実行に必要なデータ、複数のファイル、認証用又はセキュアメッセージング（ＳＭ）用の鍵Ｋｏ及びその属性情報（鍵Ｋｏの暗号アルゴリズム、鍵サイズなど）が記憶されている。
【００３５】
携帯端末装置２０は、複数のアプリ供給装置１０がプログラムのコア部分を暗号化したアプリケーションソフトウェアＤ１０に対応することが可能であり、各アプリ供給装置１０が暗号化したアプリケーションソフトウェアＤ１０毎に、認証局２００から、そのアプリ供給装置１０のＩＤ番号に対して発行された公開鍵証明書を受信し、その公開鍵証明書に収められたアプリ供給装置１０の公開鍵ＫｏをＲＡＭ２２に記憶する。すなわち、携帯端末装置２０は、複数のアプリ供給装置１０毎に、複数の鍵Ｋｏを取得してＲＡＭ２２に記憶する。
【００３６】
（インストール用のアプリケーションソフトウェアのデータ構造）
図３に、アプリ供給装置１０が作成して携帯端末装置２０にインストールするアプリケーションソフトウェアＤ１０のデータ構造を示す。このアプリケーションソフトウェアＤ１０は、アプリ供給装置１０から携帯端末装置２０に送付され、携帯端末装置２０の不揮発性メモリ２４に記憶させる。
【００３７】
インストール用のアプリケーションソフトウェアＤ１０は、アプリ供給装置１０が、重要な処理を行うコア部分を複数のコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４に分解して、個々のコアモジュール毎に暗号化したコアモジュールを作成する。
【００３８】
そして、暗号化したコアモジュールを、平文の、アプリの非コアプログラムＤ１５と合わせ、更に、復号処理プログラムＤ１６を加えて、インストール用のアプリケーションソフトウェアＤ１０のデータを構成する。復号処理プログラムＤ１６は、暗号化したコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を複合化し、更にプログラムをリンクするプログラムである。こうして、暗号化された複数のコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４と復号処理プログラムＤ１６をセットにして、アプリの非コアプログラムＤ１５と合わせて１つのアプリケーションソフトウェアＤ１０を構成する。
【００３９】
アプリケーションソフトウェアＤ１０をこのデータ構造にすることで、アプリケーションソフトウェアＤ１０を解析しようとするクラッカーが、携帯端末装置２０の不揮発性メモリ２４からアプリケーションソフトウェアＤ１０を読み出しても、そのプログラムが暗号化されているので解読できない効果がある。
【００４０】
また、携帯端末装置２０は、復号処理プログラムＤ１６を実行することで、図４のように、アプリケーションソフトウェアＤ１０の暗号化されたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４の１つを、復号化して携帯端末装置２０のＲＡＭ２２上のアプリのコア領域２２ａに以前のプログラムに上書きして展開する。
【００４１】
そして、復号処理プログラムＤ１６が、携帯端末装置２０に、その上書きしたプログラムを実行させた上で、次の、暗号化されたコアモジュールを復号化して、再びアプリのコア領域２２ａに先のプログラムに上書きして展開する。
【００４２】
こうして、携帯端末装置２０は、復号処理プログラムＤ１６のプログラムに従って、ＲＡＭ２２上の同じアプリのコア領域２２ａに、次々とコアモジュールのプログラムを上書きする動的リンク処理を行う。
【００４３】
なお、この復号処理プログラムＤ１６のプログラムの、コアモジュールのプログラムをアプリのコア領域２２ａへ上書きさせる動的リンク機能は、暗号化した各コアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４内のプログラムに組み込んだ形で実装しても良い。
【００４４】
すなわち、復号化された各コアモジュールに、次のコアモジュールのプログラムを、ＲＡＭ２２上のアプリのコア領域２２ａへ上書きする処理を行う動的リンク機能を持たせる。それにより、次のコアモジュールのプログラムをアプリのコア領域２２ａに上書きして展開して、先のプログラムの実行後に、アプリのコア領域２２ａへ上書きした次のプログラムの実行を開始する。次に、次のコアモジュールのプログラムを、その同じアプリのコア領域２２ａに上書きする。そうして、順次に複数のプログラムをＲＡＭ２２上の同じアプリのコア領域２２ａに上書きして実行させる。
【００４５】
以上のように、次に実行するプログラムをリンクする機能を、各コアモジュールのプログラム内に組み込んでも良い。
【００４６】
複数の暗号化したコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４は、アプリ供給装置１０が作成する。すなわち、アプリ供給装置１０が、公開鍵暗号方式を利用して、アプリケーションソフトウェアＤ１０のプログラムのコア部分を複数に分割して、各部分毎に暗号化してコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を作成する。
【００４７】
そして、携帯端末装置２０は、復号処理プログラムＤ１６を実行することで、インストール用のアプリケーションソフトウェアＤ１０のコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を、アプリケーションソフトウェアＤ１０の動作に応じて動的に復号化して、先に実行したプログラムが書き込まれていたＲＡＭ２２上のアプリのコア領域２２ａに、次のコアモジュールのプログラムを上書きし、そのように上書きしたプログラムを実行する。
【００４８】
（情報処理システム全体の動作の概要）
以下に、本実施形態の情報処理システム１全体の動作の概要を説明する。
（電子署名の公開鍵の登録）
先ず、アプリ供給装置１０が予め、鍵生成アルゴリズムを実行して電子署名の公開鍵Ｋｏおよび秘密鍵Ｋｇを生成する。そして、その公開鍵Ｋｏを第三者機関を介して公開する。
【００４９】
（インストール用のアプリケーションソフトウェアを暗号化して作成）
アプリ供給装置１０は、アプリケーションソフトウェアＤ１０のプログラムを、図３の
ブロック図のように、そのプログラムのコア部分と、残りのプログラム部分の、アプリの非コアプログラムＤ１５に分割する。次に、そのプログラムのコア部分は、複数のコアモジュールに分割し、その各々のコアの分割プログラム部分Ｃを、秘密鍵Ｋｇを用いて暗号化して暗号化データＥ（Ｃ，Ｋｏ）を作成する。各コアの分割プログラム部分Ｃの暗号化データＥ（Ｃ，Ｋｏ）をコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４とする。
【００５０】
そして、アプリ供給装置１０は、アプリケーションソフトウェアＤ１０として、そのコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４と、公開鍵Ｋｏを含む復号処理プログラムＤ１６と、アプリの非コアプログラムＤ１５とを合わせたデータを作成し携帯端末装置２０に送付する。
【００５１】
（インストール用のアプリケーションソフトウェアの復号化）
図４に、携帯端末装置２０において、アプリケーションソフトウェアＤ１０を不揮発性メモリ２４に格納した後に、そのプログラムをＲＡＭ２２上へ展開して実行する動作を行うデータの流れを示す。特に、コアモジュールＤ１、Ｄ２、Ｄ３、Ｄ４は、それらを復号化処理して、ＲＡＭ２２の同じ記憶領域のアプリのコア領域に順次に上書きして実行する。
【００５２】
携帯端末装置２０は、アプリ供給装置１０から送付されたアプリケーションソフトウェアＤ１０を不揮発性メモリ２４に記憶する。アプリケーションソフトウェアＤ１０は、公開鍵Ｋｏを含む復号処理プログラムＤ１６と、暗号化された複数のコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４と、そのアプリケーションソフトウェアＤ１０の残りのアプリの非コアプログラムＤ１５から成る。そして、携帯端末装置２０がそのアプリケーションソフトウェアＤ１０を実行する際に、その機能の実行が必要になったプログラムのデータを、必要な都度ＲＡＭ２２上に展開して記憶する。
【００５３】
特に、暗号化したデータであるコアモジュールＤ１、Ｄ２、Ｄ３、Ｄ４は、それを復号化したコアの分割プログラム部分ＣはＲＡＭ２２上のアプリのコア領域２２ａにのみ記憶する。そして、１つのコアの分割プログラム部分Ｃのプログラムの実行を終えたら、次の各コアの分割プログラム部分Ｃの暗号化データＥ（Ｃ，Ｋｏ）を公開鍵Ｋｏを用いて復号してコアの分割プログラム部分Ｃを作成し、そのコアの分割プログラム部分Ｃを、先に実行したコアの分割プログラム部分Ｃを記憶していたＲＡＭ２２上の同じアプリのコア領域２２ａに上書きする。それにより、先のモジュールのプログラムの記憶を消去する。
【００５４】
このように、複数の復号化したコアの分割プログラム部分Ｃを同じＲＡＭ２２上のアプリのコア領域２２ａに上書きして展開することで、アプリケーションソフトウェアＤ１０のセキュリティを高くすることができる効果がある。
【００５５】
また、アプリケーションソフトウェアＤ１０のプログラムのコア部分を複数のコアの分割プログラム部分Ｃに分割して、ＲＡＭ２２上の同じ領域であるアプリのコア領域２２ａに上書きして実行するので、プログラムを実行するためにＲＡＭ２２を占有する記憶領域を小さくできＲＡＭ２２の記憶容量を節約できる効果がある。そして、携帯端末装置２０のＲＡＭ２２の記憶領域の容量にかかわらず、長い大きなコア部分のプログラムを実行させることができる効果がある。
【００５６】
以下、図５のフローチャートを参照して、本実施形態の情報処理システム１のアプリ供給装置１０動作と携帯端末装置２０の動作を説明する。
【００５７】
（アプリ供給装置の動作）
図５に、アプリ供給装置１０において、制御手段１１がアプリケーションソフトウェア
Ｄ１０のプログラムのコア部分を複数のモジュールに分解して、それぞれを暗号化する暗号化処理ルーチンのフローチャートを示す。
【００５８】
（アプリケーションソフトウェアの暗号化処理）
暗号化処理ルーチンは、アプリケーションソフトウェアＤ１０のプログラムのコア部分を分解した複数のモジュールの１つであるコアの分割プログラム部分Ｃを暗号化する。図５には、更に、携帯端末装置２０の制御手段２１が暗号化データＥ（Ｃ，Ｋｏ）を復号化処理する復号処理ルーチンのフローチャートも示す。
【００５９】
（ステップＳ１：プログラムのモジュール分割処理）
アプリ供給装置１０の制御手段１１は、アプリケーションソフトウェアＤ１０のプログラムを、図３のブロック図のように、プログラムのコア部分と、残りのプログラム部分とに分割し、更に、そのコア部分を複数のコアの分割プログラム部分Ｃに分割する。
【００６０】
（ステップＳ２：暗号化処理）
次に、制御手段１１が、コア部分を複数に分割した各コアの分割プログラム部分Ｃ毎に、以下の暗号化処理を行う。すなわち、制御手段１１が、署名生成アルゴリズムの最初のプログラムで、例えばＳＨＡ−１関数などの一方向ハッシュ関数で、コアの分割プログラム部分Ｃの不可逆変換処理を行いハッシュ値Ｈ１を計算する。次に、制御手段１１が、署名生成アルゴリズムの次のプログラムで、秘密鍵Ｋｇを用いてコアの分割プログラム部分Ｃとそのハッシュ値を暗号化して暗号化データＥ（Ｃ，Ｋｏ）を作成する。
【００６１】
こうして、複数に分割した各コアの分割プログラム部分Ｃから暗号化データＥ（Ｃ，Ｋｏ）を作成する。作成した各暗号化データＥ（Ｃ，Ｋｏ）を、コアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４とする。コアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４の全てを作成した場合は、ステップＳ３へ進む。
【００６２】
（ステップＳ３）
制御手段１１は、公開鍵Ｋｏを含む復号処理プログラムＤ１６と、アプリケーションソフトウェアのコア部分の暗号化されたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４と、アプリの非コアプログラムＤ１５とで構成したアプリケーションソフトウェアＤ１０のデータを作成し、携帯端末装置２０に送付する。
【００６３】
アプリケーションソフトウェアＤ１０をアプリ供給装置１０から携帯端末装置２０へ送付する方法の１つとして、Ｗｅｂサーバから通信ネットワーク１００を介する通信により、ユーザの携帯端末装置２０へデータを送信することができる。携帯端末装置２０は、通信部２７や無線ＬＡＮ通信部２８でそのデータを受信する。また、ＵＳＢメモリや、不揮発性メモリ２４等の物理的媒体にアプリケーションソフトウェアＤ１０のデータを記憶させて携帯端末装置２０に送付することができる。すなわち、ＵＳＢメモリを携帯端末装置２０のＵＳＢ入出力部２９で読み込ませたり、不揮発性メモリ２４を携帯端末装置２０に直接に実装することもできる。
【００６４】
（携帯端末装置の動作）
図５に、携帯端末装置２０において、制御手段２１が暗号化されたアプリケーションソフトウェアＤ１０を復号化してＲＡＭ２２上に展開してプログラムを実行する手順のフローチャートを示す。
【００６５】
（ステップＳ３１）
携帯端末装置２０の制御手段２１は、認証局２００から、アプリ供給装置１０のＩＤ番号に対して発行された公開鍵証明書を受信し、公開鍵証明書に収められた公開鍵ＫｏをＲ
ＡＭ２２に記憶する。この動作は、次のステップＳ３２の、アプリケーションソフトウェアＤ１０の取り込みの後に行っても良い。
【００６６】
（ステップＳ３２）
次に、制御手段２１は、アプリ供給装置１０から送信されたアプリケーションソフトウェアＤ１０を不揮発性メモリ２４に記憶する。すなわち、アプリケーションソフトウェアＤ１０の、公開鍵Ｋｏを含む復号処理プログラムＤ１６と、アプリケーションソフトウェアのコア部分の暗号化されたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４と、アプリの非コアプログラムＤ１５のデータを不揮発性メモリ２４に記憶する。
【００６７】
（ステップＳ３３）
次に、制御手段２１は、復号処理プログラムＤ１６が含む公開鍵Ｋｏの正当性を、認証局２００から受け取った公開鍵証明書から読み出してＲＡＭ２２に記憶した公開鍵Ｋｏと照合して検証する。その認証ができない場合、そのアプリケーションソフトウェアＤ１０の実行を中止する。認証が正常に行えた場合は、ステップＳ３４へ進む。
【００６８】
（ステップＳ３４）
制御手段２１は、ユーザからの、アプリケーションソフトウェアＤ１０の動作開始指令を受けて、以下のようにして、アプリケーションソフトウェアＤ１０のプログラムを動作させる。先ず、制御手段２１は、不揮発性メモリ２４から、実行すべきアプリケーションソフトウェアＤ１０の、アプリの非コアプログラムＤ１５を読み出して、ＲＡＭ２２上のアプリの非コア領域２２ｂに動的に展開する。
【００６９】
（ステップＳ３５）
次に、制御手段２１が、アプリの非コアプログラムＤ１５のプログラムを実行する。そのプログラムの実行中にコアモジュールを実行する必要が生じた際に、ステップＳ３６以降の復号化処理ルーチンを実行する。
【００７０】
（ステップＳ３６：復号化処理ルーチン）
制御手段２１は、コアモジュールの実行要求が生じた際に、復号処理プログラムＤ１６のプログラムをＲＡＭ２２上のアプリの非コア領域２２ｂに動的に展開して動作させる。
【００７１】
復号処理プログラムＤ１６のプログラムは、暗号化されたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４のうちで該当するモジュールを不揮発性メモリ２４から読出し、その暗号化データＥ（Ｃ，Ｋｏ）を以下のようにして復号化する。
【００７２】
復号処理プログラムＤ１６のプログラムは、その暗号化データＥ（Ｃ，Ｋｏ）を、ＲＡＭ２２に記憶した公開鍵Ｋｏを用いて復号化して、コアの分割プログラム部分Ｃとハッシュ値Ｈ１とを得る。得られたハッシュ値Ｈ１は制御手段２１のレジスタに記憶する。そして、コアの分割プログラム部分Ｃは、ＲＡＭ２２上の、先に実行していたコアモジュールのプログラムと同じ領域のアプリのコア領域２２ａに上書きして記憶する。次に、ステップＳ３７へ進む。
【００７３】
こうして、先にコアの分割プログラム部分Ｃを記憶していたＲＡＭ２２上のアプリのコア領域２２ａに、次のコアの分割プログラム部分Ｃを上書きすることで、ＲＡＭ２２から、先に記憶していたコアの分割プログラム部分Ｃを抹消する。
【００７４】
（ステップＳ３７）
次に、制御手段２１は、アプリのコア領域２２ａに展開したコアの分割プログラム部分Ｃにハッシュ関数を作用させてハッシュ値Ｈ２を計算する。そして、そのハッシュ値Ｈ２
を、先に復号化したハッシュ値Ｈ１と照合する。ハッシュ値Ｈ１とＨ２が一致すれば、コアの分割プログラム部分Ｃの改ざんが無いと判定し、ステップＳ３８に進む。ハッシュ値Ｈ１とＨ２が一致しなければ、そのアプリケーションソフトウェアＤ１０の実行を中止してステップＳ３１に戻る。
【００７５】
（ステップＳ３８）
次に、制御手段２１は、ＲＡＭ２２上のアプリのコア領域２２ａに展開しておいたコアの分割プログラム部分Ｃのプログラムを実行する。そのプログラムの実行後に、ステップＳ３６に戻り、復号処理プログラムＤ１６を実行して、次に実行すべき、コアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４のいずれかを不揮発性メモリ２４から読出す。
【００７６】
そして、その読み出したモジュールの暗号化データＥ（Ｃ，Ｋｏ）を、公開鍵Ｋｏを用いて復号化して、コアの分割プログラム部分Ｃと、そのハッシュ値Ｈ１とを得、コアの分割プログラム部分Ｃを、ＲＡＭ２２上の、先に実行していたコアモジュールのプログラムと同じ領域のアプリのコア領域２２ａに上書きして記憶する。そして、次のステップＳ３７に進む。
【００７７】
こうして、制御手段２１が、ステップＳ３６からステップＳ３８までの動作を繰り返し、コアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４の最後のモジュールまで、復号化処理ルーチンをを実行することで、暗号化されたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を復号化したプログラムを、ＲＡＭ２２上の同じ記憶領域であるアプリのコア領域２２ａに、次々と上書きすることで、直前のコアモジュールのプログラムをアプリのコア領域２２ａから抹消する。
【００７８】
このようにコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を順次に復号化してＲＡＭ２２上の同じ記憶領域に上書きして以前のデータを抹消するので、実行させるために復号化させたコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４のデータがＲＡＭ２２に存在する時間は、１つのコアモジュールの実行開始時の複合化の時から、次のコアモジュールの実行開始時の複合化の時までの間の短い時間のみである。こうすることで、アプリケーションソフトウェアＤ１０を解析しようとするクラッカーによるプログラムの解析を極めて難しくできる効果がある。
【００７９】
以上のように、第１の実施形態に係る情報処理システム１において、アプリ供給装置１０は、秘密鍵Ｋｇを用いてアプリケーションソフトウェアＤ１０のコア部分を複数のコアの分割プログラム部分Ｃに分割して、それぞれのコアの分割プログラム部分Ｃを暗号化データＥ（Ｃ，Ｋｏ）に変換し、その暗号化データＥ（Ｃ，Ｋｏ）のコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４と、アプリの非コアプログラムＤ１５と、公開鍵Ｋｏと、復号処理プログラムＤ１６を合わせたデータからなるアプリケーションソフトウェアＤ１０を携帯端末装置２０へ送付する。
【００８０】
一方、携帯端末装置２０では、制御手段２１が、アプリ供給装置１０から受信したアプリケーションソフトウェアＤ１０を不揮発性メモリ２４に記憶する。
【００８１】
そして、制御手段２１は、ユーザからの、アプリケーションソフトウェアＤ１０の動作開始指令を受けて、アプリケーションソフトウェアＤ１０のプログラムを動的にＲＡＭ上に展開して実行する。アプリケーションソフトウェアＤ１０の、コアの分割プログラム部分Ｃのプログラムの実行が必要になった場合に、復号処理プログラムＤ１６を実行して、該当するコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４の暗号化データＥ（Ｃ，Ｋｏ）を、公開鍵Ｋｏを用いて復号化する。
【００８２】
その復号化したコアの分割プログラム部分Ｃは、ＲＡＭ２２上のアプリのコア領域２２ａに同じ記憶領域に次々と上書きして直前のコアモジュールのプログラムをＲＡＭ２２から抹消する。そして、アプリのコア領域２２ａのコアの分割プログラム部分Ｃのプログラムを実行する。
【００８３】
こうして、携帯端末装置２０のＲＡＭ２２上のアプリのコア領域２２ａに展開したコアの分割プログラム部分Ｃのプログラムは、そのアプリケーションソフトウェアＤ１０の動作に必要な期間のみＲＡＭ２２上に存在する。
【００８４】
なお、そのアプリケーションソフトウェアＤ１０の動作が停止（一時停止動作を含む）した場合に、ＲＡＭ２２上のアプリのコア領域２２ａからコアの分割プログラム部分Ｃを消去するモジュールデータ読出し限定手段も設ける。このモジュールデータ読出し限定手段が、非常時にアプリのコア領域２２ａからデータを消去することで、ＲＡＭ２２上のアプリのコア領域２２ａに記憶されているコアの分割プログラム部分Ｃは、非常時にも、そのデータのオーナーであるアプリケーションソフトウェアＤ１０以外の外部のプログラムから読み取ることができない効果がある。
【００８５】
このように、本実施形態は、アプリケーションソフトウェアＤ１０の流通の利便性を高めるとともに、携帯端末装置２０が、クラッカーによる盗聴及び鍵の漏洩を防ぐ高いセキュリティ品質で、改ざんされていない正しいアプリケーションソフトウェアＤ１０を注意深く判別して実行することができるので、アプリケーションソフトウェアＤ１０の流通を促進できる効果がある。
【００８６】
［第２の実施形態］
本発明の第２の実施形態として、復号処理プログラムＤ１６は外部ライブラリソフトウェアとして、アプリケーションソフトウェアＤ１０とは別にして携帯端末装置２０に送付し、復号処理プログラムＤ１６を含まないアプリケーションソフトウェアＤ１０を、復号処理プログラムＤ１６とは別に携帯端末装置２０に送付することができる。そうして、外部ライブラリソフトウェアとした復号処理プログラムＤ１６を複数のアプリケーションソフトウェアＤ１０に共有させて実行させる。それ以外は、第１の実施形態と同様に構成する。
【００８７】
（変形例１）
第２の実施形態の変形例１として、公開鍵Ｋｏは、外部ライブラリソフトウェアとした復号処理プログラムＤ１６に含ませず、携帯端末装置２０は、公開鍵Ｋｏを、各アプリ供給装置１０が暗号化したアプリケーションソフトウェアＤ１０毎に、認証局２００から取得してＲＡＭ２２に記憶して用いるようにしても良い。
【００８８】
各アプリ供給装置１０は、アプリケーションソフトウェアＤ１０のコア部分をコアの分割プログラム部分Ｃに分割して、それぞれのコアの分割プログラム部分Ｃを、公開鍵Ｋｏに対応する秘密鍵Ｋｇを用いて暗号化データＥ（Ｃ，Ｋｏ）に変換し、コアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４として、アプリの非コアプログラムＤ１５と合わせたデータからなるアプリケーションソフトウェアＤ１０を携帯端末装置２０へ送付する。
【００８９】
携帯端末装置２０は、制御手段２１が、外部ライブラリソフトウェアとした復号処理プログラムＤ１６を実行し、復号化すべきアプリケーションソフトウェアＤ１０のコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４に対応する公開鍵ＫｏをＲＡＭ２２から読み出して、コアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を順次に復号化してＲＡＭ２２上のアプリのコア領域２２ａに上書きして展開する。
【００９０】
こうして、携帯端末装置２０の制御手段２１が、外部ライブラリソフトウェアの復号処理プログラムＤ１６を読み込んで、そのプログラムを実行させて、一方、各アプリケーションソフトウェアＤ１０毎に対応付けられた公開鍵Ｋｏを別途取得して、その公開鍵Ｋｏを用いてコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を順次に復号化してＲＡＭ２２上のアプリのコア領域２２ａに上書きして展開する。
【００９１】
これにより、異なるアプリ供給装置１０が作成したアプリケーションソフトウェアＤ１０を、共通の復号処理プログラムＤ１６を共用する一方、アプリ供給装置１０毎に、異なる秘密鍵Ｋｇで暗号化したアプリケーションソフトウェアＤ１０のコアモジュールＤ１１、Ｄ１２、Ｄ１３、Ｄ１４を、それらの秘密鍵Ｋｇに対応した異なる公開鍵Ｋｏで復号化して実行させることができる。
【符号の説明】
【００９２】
１・・・情報処理システム
１０・・・アプリ供給装置
１１・・・制御手段
１２・・・ＲＯＭ
１３・・・ＲＡＭ
１４・・・バス
１５・・・インターフェイス
１６・・・通信部
１７・・・入出力部
１８・・・ディスプレイ
１９・・・磁気ディスク
２０・・・携帯端末装置
２１・・・制御手段
２２・・・ＲＡＭ
２２ａ・・・アプリのコア領域
２２ｂ・・・アプリの非コア領域
２３・・・ＲＯＭ
２４・・・不揮発性メモリ
２５・・・インターフェイス
２６・・・バス
２７・・・通信部
２８・・・無線ＬＡＮ通信部
２９・・・ＵＳＢ入出力部
１００・・・通信ネットワーク
２００・・・認証局
Ｃ・・・コアの分割プログラム部分
Ｄ１０・・・アプリケーションソフトウェア
Ｄ１１、Ｄ１２、Ｄ１３、Ｄ１４・・・暗号化されたコアモジュール
Ｄ１５・・・アプリの非コアプログラム
Ｄ１６・・・復号処理プログラム
Ｅ（Ｃ，Ｋｏ）・・・暗号化データ
Ｋｇ・・・秘密鍵
Ｋｏ・・・公開鍵
【図１】
2014160383.tif 000003
【図２】
2014160383.tif 000004
【図３】
2014160383.tif 000005
【図４】
2014160383.tif 000006
【図５】
2014160383.tif 000007