(57)【要約】【課題】端末装置に記憶されている重要なデータを非ネイティブアプリケーションプログラムが利用することを可能にしつつ、この重要なデータのセキュリティを確保する。【解決手段】端末装置に、アプリケーションプログラムにしたがって命令コードを実行させる際に、命令コードが本端末装置において実行を制限されている命令コードであるか否かを判定させる。そして、実行を制限されている命令コードであり、かつ、該命令コードを実行することにより本端末装置に記憶されているデータの少なくとも一部分がアクセスされる場合には、該命令コードの実行を禁止する。【選択図】        図１０
2004302516.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する第１の記憶手段と、
アプリケーションプログラムに従って命令コードを実行する実行手段と、
前記実行手段により実行可能な命令コードのうち、本端末装置において実行を制限されている命令コードを特定するデータを記憶する第２の記憶手段と、
前記アプリケーションプログラムに従って前記実行手段により実行される命令コードが実行を制限されている命令コードであるか否かを前記第２の記憶手段の記憶内容に基づいて判定する判定手段と、
実行を制限されている命令コードであると前記判定手段により判定され、かつ、該命令コードを実行することにより前記データの少なくとも一部分がアクセスされる場合には、該命令コードを前記実行手段が実行することを禁止する禁止手段と
を有する端末装置。
【請求項２】
前記判定手段は、前記実行手段により実行されるアプリケーションプログラムがユーザにとって不利益な動作を行わないことが確認されていないアプリケーションプログラムである場合にのみ、該アプリケーションプログラムに従って実行される命令コードが実行を制限されている命令コードであるか否かを前記第２の記憶手段の記憶内容に基づいて判定する
ことを特徴とする請求項１に記載の端末装置。
【請求項３】
通信網を介して通信する通信手段を備え、
前記判定手段は、前記実行手段により実行されるアプリケーションプログラムが前記通信手段により前記通信網を介して取得されたアプリケーションプログラムである場合にのみ、該アプリケーションプログラムに従って実行される命令コードが実行を制限されている命令コードであるか否かを前記第２の記憶手段の記憶内容に基づいて判定する
ことを特徴とする請求項１に記載の端末装置。
【請求項４】
前記第１の記憶手段は、データに該データのセキュリティを保護するか否かを示す識別子を対応付けて記憶し、
前記禁止手段は、前記判定手段より実行を制限されている命令コードであると判定され、かつ、該命令コードにより前記第１の記憶手段にセキュリティを保護する旨の識別子を対応付けて記憶されている前記データの少なくとも一部分がアクセスされる場合には、該命令コードを前記実行手段が実行することを禁止する
ことを特徴とする請求項１に記載の端末装置。
【請求項５】
データを記憶するとともに、自装置において実行を制限されている命令コードを特定するデータを記憶したコンピュータ装置に、
アプリケーションプログラムに従って命令コードを実行する実行手段と、
前記アプリケーションプログラムに従って前記実行手段により実行される命令コードが実行を制限されている命令コードであるか否かを該コンピュータ装置の記憶内容に基づいて判定する判定手段と、
実行を制限されている命令コードであると前記判定手段により判定され、かつ、該命令コードを実行することにより前記データの少なくとも一部分がアクセスされる場合には、該命令コードを前記実行手段が実行することを禁止する禁止手段と
を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
端末装置に記憶されているデータのセキュリティを確保し、ユーザのプライバシーを保護する技術に関する。
【０００２】
【従来の技術】
プログラム実行機能を有する携帯電話機やパーソナルコンピュータ装置（以下、「ＰＣ」という）などの端末装置が普及している。ユーザは、この種の端末装置にアプリケーションプログラムを実行させることにより、ゲームやスケジューラなどの様々なアプリケーションを利用することができる。このようなアプリケーションプログラムには、端末装置の販売以前にその不揮発性記憶部に書き込まれて提供されるものと、アプリケーションプログラム単独で提供され、端末装置の販売後にユーザによりインストールされるものとがある。以下では、前者を「ネイティブアプリケーションプログラム」と称し、後者を「非ネイティブアプリケーションプログラム」と称する。非ネイティブアプリケーションプログラムの一例としては、インターネットを介して提供されるアプリケーションプログラムや、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）のようなコンピュータ装置読み取り可能な記録媒体に記録されて提供されるアプリケーションプログラムが挙げられる。ユーザは各自のニーズに応じた非ネイティブアプリケーションプログラムをインストールすることにより、端末装置の機能を自由に追加および変更することができる。
【０００３】
一般にアプリケーションプログラムは、ユーザのニーズに応じた機能を端末装置に実現させるためのものであるから、ユーザにとって有益なものである。しかしながら、アプリケーションプログラムの提供者（コンテンツプロバイダ；以下、「ＣＰ」と称する）に悪意がある場合には、そのアプリケーションプログラムを実行することでユーザが予期せぬ不利益を被ってしまう虞がある。具体的には、端末装置に記憶されている重要なデータ（例えば、ユーザの個人情報）がアプリケーションプログラムの実行過程で勝手に読み出され、ＣＰへ送信されてしまうような事態が生じ得る。ネイティブアプリケーションプログラムについては、例えば、端末装置の製品出荷時点での製品検査により、そのような事態が生じないことが端末装置の製造者によって確認されている。一方、非ネイティブアプリケーションプログラムについては、必ずしも、そのような確認が為されているわけではない。つまり、非ネイティブアプリケーションプログラムについては、そのアプリケーションプログラムを実行することで、ユーザが予期せぬ不利益を被ることがないとは言い切れない。
【０００４】
ユーザが予期せぬ不利益を被らないようにするために、非ネイティブアプリケーションプログラムの利用を禁止し、ネイティブアプリケーションプログラムのみを利用させることが考えられる。しかし、非ネイティブアプリケーションプログラムの利用を禁止されてしまうと、ユーザは各自のニーズに応じて端末装置の機能を自由に追加することや変更することができず、甚だ不便である。そこで、非ネイティブアプリケーションプログラムの利用を可能にしつつ、その非ネイティブアプリケーションプログラムの実行過程でユーザが予期せぬ不利益を被らないようにするための技術として特許文献１に開示されている技術がある。
【０００５】
特許文献１に開示されている技術では、データとそのデータを処理するためのプログラムとを論理的に一体化したオブジェクトを提供することにより、プログラムの提供が行われる。そして、このようなプログラムの利用を所望するユーザは、このプログラムを内包しているオブジェクトと、このプログラムを実行する際に必要となるリソース（メモリなどのハードウェア資源や、メモリに格納されているデータなどのソフトウェア資源）を取り決めるための契約を結び、この契約により定められらリソースのみを利用させる。このようにして、プログラムに利用させるリソースを予め制限することにより、そのプログラムの実行過程で他のリソースが利用されることを禁止し、他のリソースについてのセキュリティを確保している。以下では、オブジェクトに内包されているデータを処理するために、そのデータとともに一体化されたプログラムを「メソッド」と称する。
【０００６】
【特許文献１】
特開２００２−２４５０１２号公報
【０００７】
【発明が解決しようとする課題】
上述したように、特許文献１に開示されている技術によれば、非ネイティブアプリケーションプログラムの実行過程で端末装置１０に記憶されている重要なデータへアクセスすることを禁止する旨の契約を結んだ上で、この非ネイティブアプリケーションプログラムを実行し、この重要なデータのセキュリティを確保することができる。
【０００８】
しかしながら、非ネイティブアプリケーションプログラムの実行過程で利用可能なリソースが制限されてしまうと、非ネイティブアプリケーションプログラムを設計する際の設計自由度が狭められてしまう。このように設計自由度を狭められてしまうと、その非ネイティブアプリケーションプログラムを実行することにより実現される機能も自ずから制限されてしまう。このような機能制限が伴う非ネイティブアプリケーションプログラムでは、ユーザの多用なニーズにきめ細やかに対応することはできないといった問題点がある。
【０００９】
本発明は上記問題に鑑みて為されたものであり、端末装置に記憶されている重要なデータを非ネイティブアプリケーションプログラムが利用することを可能にしつつ、この重要なデータのセキュリティを確保する技術を提供することを目的としている。
【００１０】
【課題を解決するための手段】
上記課題を解決するため、本発明は、データを記憶する第１の記憶手段と、アプリケーションプログラムに従って命令コードを実行する実行手段と、前記実行手段により実行可能な命令コードのうち、本端末装置において実行を制限されている命令コードを特定するデータを記憶する第２の記憶手段と、前記アプリケーションプログラムに従って前記実行手段により実行される命令コードが実行を制限されている命令コードであるか否かを前記第２の記憶手段の記憶内容に基づいて判定する判定手段と、実行を制限されている命令コードであると前記判定手段により判定され、かつ、該命令コードを実行することにより前記データの少なくとも一部分がアクセスされる場合には、該命令コードを前記実行手段が実行することを禁止する禁止手段とを有する端末装置を提供する。
【００１１】
このような端末装置によれば、アプリケーションプログラムに従って実行される命令コードのうち、実行を制限されている命令コードについては、その命令コードを実行することにより該端末装置に記憶されているデータが操作される場合には、その命令コードは実行されない。
【００１２】
また、上記課題を解決するために、本発明は、データを記憶するとともに、自装置において実行を制限されている命令コードを特定するデータを記憶したコンピュータ装置に、アプリケーションプログラムに従って命令コードを実行する実行手段と、前記アプリケーションプログラムに従って前記実行手段により実行される命令コードが実行を制限されている命令コードであるか否かを該コンピュータ装置の記憶内容に基づいて判定する判定手段と、実行を制限されている命令コードであると前記判定手段により判定され、かつ、該命令コードを実行することにより前記データの少なくとも一部分がアクセスされる場合には、該命令コードを前記実行手段が実行することを禁止する禁止手段とを実現させるためのプログラムを提供する。
【００１３】
このようなプログラムによれば、係るプログラムに従って作動するとともに、データと自装置で実行を制限されている命令コードを特定する識別子とを記憶したコンピュータ装置においては、アプリケーションプログラムに従って実行される命令コードのうち、実行を制限されている命令コードについては、その命令コードを実行することにより該コンピュータ装置に記憶されているデータが操作される場合には、その命令コードは実行されない。
【００１４】
【発明の実施の形態】
以下、図面を参照しつつ本発明の実施形態について説明する。
【００１５】
［Ａ．構成］
（１：通信システムの構成）
図１は、本実施形態に係る端末装置１０を有する通信システムの全体構成の一例を示す図である。図１に示されるコンテンツサーバ４０は、一般的なコンピュータ装置と同一の構成を有するものであり、インターネット３０に接続されている。このコンテンツサーバ４０は、端末装置１０へ提供するためのアプリケーションプログラム（以下、「ＡＰＰ」と称する）を記憶している。このＡＰＰは、オブジェクト指向のプログラム言語の１つであるＪａｖａ（登録商標）で記述さたものであり、後述するＪａｖａ実行環境で解釈および実行可能なＪａｖａバイトコードで構成されている。以下では、このようなＡＰＰを「ＪａｖａＡＰＰ」と称する。このＪａｖａＡＰＰは、インターネット３０を介して端末装置１０へ提供される非ネイティブＡＰＰである。
【００１６】
移動パケット通信網２０は、当該移動パケット通信網２０に収容される端末装置１０に対して、パケット通信サービスを提供するためのものである。この移動パケット通信網２０は、基地局２１とゲートウェイ（以下、「ＧＷ」と称する）装置２２とを有している。基地局２１は、移動パケット通信網２０のサービスエリア内に多数設置されている。この基地局２１は、一定の広さ（例えば、当該基地局２１を中心とする半径５００メートルの範囲）を有する無線セルを形成し、この無線セルに在圏する端末装置１０と無線通信を行うためのものである。ＧＷ装置２２は、移動パケット通信網２０における通信プロトコルとインターネット３０における通信プロトコルとを相互変換し、移動パケット通信網２０とインターネット３０との間の通信を仲介するためのものである。
【００１７】
端末装置１０は、Ｊａｖａ実行環境を備えた携帯電話機である。この端末装置１０には、図２に示される電話帳テーブルや図３に示される着信履歴テーブルなどの端末装置１０を利用するユーザの個人情報が格納されている。図２に示されるように、電話帳テーブルには、このユーザと通話する通信先を一意に特定するための識別子（例えば、通信相手の氏名や名称：以下、「通信先識別子」と称する）に対応付けて、その通信先の電話番号が格納されている。以下では、互いに対応付けられている通信先識別子と電話番号との組を「電話帳データ」と称する。また、図３に示されるように、着信履歴テーブルには、この端末装置１０に対して発信を行った通信先の電話番号（以下、「着信電話番号」と称する）が着信した時刻の順に格納されている。なお、本実施形態では、セキュリティを保護すべきユーザの個人情報の一例として、電話帳テーブルや着信履歴テーブルに格納されているデータについて説明するが、ユーザ自身の電話番号や、このユーザの銀行口座番号およびクレジット番号などであっても良いことは勿論である。
【００１８】
また、端末装置１０は、移動パケット通信網２０とインターネット３０とを介してコンテンツサーバ４０からＪａｖａＡＰＰをダウンロードし、このＪａｖａＡＰＰを上記Ｊａｖａ実行環境を用いて実行することができる。本実施形態においては、このＪａｖａＡＰＰは、図４に示されるフローチャートに示される着信通知処理を端末装置１０に実行させるものであるとする。具体的には、このＪａｖａＡＰＰを実行中の端末装置１０は、図５に示される画面を表示し、この画面の領域５２０にユーザの所望に応じた画像を表示するとともに、通話着信を待ち受けている。そして、通話着信があった場合に、上記着信履歴テーブルから最新の着信電話番号を取得するとともに、この着信電話番号に対応する電話帳データを上記電話帳テーブル（図２参照）から取得し、その電話帳データを領域５１０（図５参照）へ表示することにより、通話着信をユーザに報知する。
【００１９】
（２：端末装置１０の構成）
次に、端末装置１０のハードウェア構成を、図６を参照しつつ説明する。図６に示されるように、端末装置１０は、制御部６１０と、表示部６２０と、操作部６３０と、無線通信部６４０と、記憶部６５０と、これら各構成要素間のデータ授受を仲介するバス６６０とを有している。
【００２０】
制御部６１０は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、記憶部６５０に格納されているソフトウェアを実行することにより端末装置１０の各部を制御するものである。表示部６２０は、例えば液晶ディスプレイとその駆動回路であり、制御部６１０から引渡された画像データに応じた画像を表示する。操作部６３０は、数字や文字、操作指示などをユーザに入力させるための複数の操作子を備えており、これらの操作子の操作内容に応じたデータを制御部６１０へ引渡す。
【００２１】
無線通信部６４０は、図示せぬアンテナを備えており、端末装置１０の在圏する無線セルを形成する基地局２１と無線通信するためのものである。この無線通信部６４０は、基地局２１から送信されてくるデータを受信し、受信したデータを制御部６１０へ引渡すとともに、制御部６１０から引渡されたデータを基地局２１へ送出する。
【００２２】
記憶部６５０は、揮発性記憶部６５１と不揮発性記憶部６５２とを有している。揮発性記憶部６５１は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ソフトウェアを実行中の制御部６１０によりワークエリアとして使用される。この揮発性記憶部６５１には、ＪａｖａＡＰＰの実行過程において、図７に示されるデータ管理テーブル６５１ａが書き込まれる。このデータ管理テーブル６５１ａには、ＪａｖａＡＰＰの実行過程で生成されたオブジェクトを一意に特定するデータ（以下、「参照データ」と称する）に対応付けて、“０”または“１”のいずれか一の値を有する保護フラグが格納される。本実施形態においては、「参照データ」として、揮発性記憶部６５１内でのオブジェクトの格納位置を示すアドレスを用いるものとする。また、保護フラグは、上記オブジェクトに内包されているデータがセキュリティの保護を要するデータであるか否かを示すものである。本実施形態では、値が“０”である保護フラグを対応付けられているオブジェクトには、セキュリティを保護する必要のないデータが内包されており、逆に、値が“１”である保護フラグを対応付けられているオブジェクトには、セキュリティを保護する必要の有るデータが内包されているものとする。
【００２３】
不揮発性記憶部６５２は、例えばＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であり、端末装置１０を利用するユーザの有するデータ毎に上記保護フラグを予め対応付けて格納している。例えば、電話帳テーブル（図２参照）や着信履歴テーブル（図３参照）などの個人情報には、セキュリティの保護を要することを示す保護フラグが対応付けられており、ユーザの自作画像データなどの個人情報以外のデータには、セキュリティの保護を要さないことを示す保護フラグが対応づけられている。なお、不揮発性記憶部６５２に格納されている全てのデータについてセキュリティを保護する場合には、上記保護フラグを対応づけておく必要はない。
【００２４】
加えて、不揮発性記憶部６５２には、図８に示すコマンド管理テーブル６５２ａを格納している。このコマンド管理テーブル６５２ａについては後に詳細に説明する。また、この不揮発性記憶部６５２には、Ｊａｖａ実行環境を構築するためのソフトウェアやＯＳを実現するためのＯＳソフトウェアやネイティブＡＰＰなどが格納されている。このネイティブＡＰＰの一例としては、電話帳テーブルに格納されている電話帳データをユーザに閲覧させたり更新させたりするための電話帳管理ＡＰＰが挙げられる。
【００２５】
また、詳細な図示は省略するが、上記不揮発性記憶部６５２には、コンテンツサーバ４０からダウンロードしたＪａｖａＡＰＰを格納するための記憶領域がＪａｖａＡＰＰ毎に設けられている。この記憶領域には、上記ＪａｖａＡＰＰのＪＡＲ（Ｊａｖａ  ＡＲｃｈｉｖｅ）が格納される。ＪＡＲファイルとは、ＪａｖａＡＰＰの本体プログラム（Ｊａｖａバイトコードで記述されたプログラム）と、このプログラムを実行する際に使用される画像データを格納した画像ファイルや音声データを格納した音声ファイルなどを１つにまとめたファイルである。
【００２６】
（３：Ｊａｖａ実行環境）
次に、Ｊａｖａ実行環境を構築するために端末装置１０に組み込まれているソフトウェアについて図９を参照しつつ説明する。図９は、端末装置１０におけるＪａｖａ実行環境を説明するための図である。この図に示されるように、端末装置１０には、Ｊ２ＭＥ（Ｊａｖａ  ２  ｐｌａｔｆｏｒｍ  Ｍｉｃｒｏ  Ｅｄｉｔｉｏｎ）に準拠したＪａｖａ実行環境を実現するためのソフトウェアが組み込まれている。ここで、Ｊ２ＭＥとは、小型電子器機向けに定められたＪａｖａ実行環境の規格である。図９に示されるように、上記Ｊ２ＭＥを実現するためのソフトウェアには、ＫＶＭと、ＣＬＤＣ（Ｃｏｎｎｅｃｔｅｄ  Ｌｉｍｉｔｅｄ  Ｄｅｖｉｃｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ）クラスライブラリと、オリジナルＪａｖａ拡張プロファイルと、ＪＡＭ（Ｊａｖａ  Ａｐｐｌｉｃａｔｉｏｎ  Ｍａｎａｇｅｒ）とが含まれている。なお、詳細な図示は省略したが、端末装置１０は、上述したＣＬＤＣクラスライブラリやオリジナルＪａｖａ拡張プロファイルの他に、メーカ独自拡張ライブラリを有している。このメーカ独自拡張ライブラリは、端末装置１０の製造者がそれぞれ独自の機能を提供するためのクラスライブラリである。また、本実施形態では、Ｊ２ＭＥに準拠したＪａｖａ実行環境を有する端末装置１０に本発明を適用する場合について説明するが、Ｊ２ＳＥ（Ｊａｖａ２  Ｓｔａｎｄａｒｄ  Ｅｄｉｔｉｏｎ）やＪ２ＥＥ（Ｊａｖａ２  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ）に準拠したＪａｖａ実行環境を有する端末装置に本発明を適用するとしても勿論良い。Ｊ２ＳＥとは、ＰＣ向けに定められたＪａｖａ実行環境の規格であり、Ｊ２ＥＥとは、例えばコンテンツサーバ４０のようなサーバ装置向けに定められたＪａｖａ実行環境の規格である。
【００２７】
まず、ＣＬＤＣクラスライブラリとオリジナルＪａｖａ拡張プロファイルについて説明する。ＣＬＤＣクラスライブラリは、携帯電話機やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）などの小型電子器機向けの汎用的な機能を提供するためのクラスライブラリである。オリジナルＪａｖａ拡張プロファイルは、ＣＬＤＣクラスライブラリを基礎として本実施形態に係る端末装置１０に特化した機能を提供するためのクラスライブラリである。このオリジナルＪａｖａ拡張プロファイルには、例えば、画面表示ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）、イベント取得ＡＰＩ、ネットワーキングＡＰＩ、スクラッチパッドＡＰＩ、Ｘ−Ｓｔｒｉｎｇ生成ＡＰＩなどが含まれている。ＪａｖａＡＰＰを実行中の制御部６１０は、そのＪａｖａＡＰＰを構成するＪａｖａバイトコードに従って、これらＡＰＩを呼出すことにより、これらＡＰＩの提供する機能を利用することができる。なお、本明細書および図面においては「ＡＰＩ」はクラス（プログラム）と同義である。
【００２８】
画面表示ＡＰＩとは、表示部６２０への画像の表示をサポートするためのＡＰＩである。イベント取得ＡＰＩとは、通話着信や操作部６３０への操作指示の入力などのイベントの発生をＪａｖａＡＰＰを実行中の制御部６１０に通知することをサポートするＡＰＩである。ネットワーキングＡＰＩとは、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）により指定されたネットワークリソース（例えば、コンテンツサーバ４０）へアクセスするためのＡＰＩである。スクラッチパッドＡＰＩとは、スクラッチパッドに対する書き込みや読み出しをサポートするためのＡＰＩである。なお、スクラッチパッドとは、詳細な図示は省略したが、不揮発性記憶部６５２内にＪａｖａＡＰＰ毎に設けられた記憶領域であり、そのＪａｖａＡＰＰの実行に応じて発生するデータが格納される。
【００２９】
Ｘ−Ｓｔｒｉｎｇ生成ＡＰＩは、不揮発性記憶部６５２に格納されているデータをＪａｖａＡＰＰを実行中の制御部６１０に利用させるためのＡＰＩである。本実施形態に係るＸ−Ｓｔｒｉｎｇ生成ＡＰＩは、電話帳テーブルに格納されている電話帳データをＪａｖａＡＰＰを実行中の制御部６１０に利用させるためのＡＰＩであるとする。より詳細に説明すると、このＸ−Ｓｔｒｉｎｇ生成ＡＰＩを呼出すことにより、最新の着信電話番号に対応した電話帳データを内包したＸ−Ｓｔｒｉｎｇオブジェクトが生成され、揮発性記憶部６５１へ格納されるものとする。加えて、このＸ−Ｓｔｒｉｎｇオブジェクトの参照データに対応付けて、このＸ−Ｓｔｒｉｎｇオブジェクトに内包されている電話帳データに対応付けられている保護フラグ（すなわち、“１”）がデータ管理テーブル６５１ａ（図７参照）へ格納されるものとする。ここで、Ｘ−Ｓｔｒｉｎｇオブジェクトとは、文字列データを格納する一般的なＳｔｒｉｎｇオブジェクトに内包されているメソッドのうち、比較メソッドやデータ長通知メソッドを削除したものである。比較メソッドとは、引渡された文字列データと、Ｓｔｒｉｎｇオブジェクトに内包している文字列データとを比較しその比較結果を呼出し元へ通知するメソッドである。またデータ長通知メソッドとは、Ｓｔｒｉｎｇオブジェクトに内包されている文字列データのデータ長（例えば、文字数）を呼出し元へ通知するメソッドである。Ｘ−Ｓｔｒｉｎｇオブジェクトがこれらのメソッドを有していない理由は、これらのメソッドが呼出されることにより、このＸ−Ｓｔｒｉｎｇオブジェクトに内包されている文字列データの内容を推定されてしまう虞があるからである。なお、本実施形態においては、Ｘ−Ｓｔｒｉｎｇオブジェクトを用いて文字列データのセキュリティを確保する場合について説明したが、本発明の適用対象は文字列データに限定されるものではない。例えば整数型のデータや浮動小数点型のデータであっても良いことは勿論である。
【００３０】
そして、上記Ｘ−Ｓｔｒｉｎｇ生成ＡＰＩを呼出すことにより、最新の着信電話番号データを内包したＸ−Ｓｔｒｉｎｇオブジェクトの参照データが制御部６１０へ引渡される。以降、制御部６１０は、例えば、この参照データを引数として上記画面表示ＡＰＩを呼出すことにより、この参照データで示されるＸ−Ｓｔｒｉｎｇオブジェクトに内包されている電話帳データを表示部６２０に表示させることができる。なお、本実施形態においては、Ｘ−Ｓｔｒｉｎｇオブジェクトに最新の着信電話番号に対応する電話帳データを内包させる場合について説明したが、係る電話帳データの一部分（例えば、この電話帳データに内包されている電話番号のみや、通信先識別子のみ）を内包させるとしても勿論良い。これらのデータについても、ユーザの個人情報であることには変わりないからである。
【００３１】
ここで、図８に戻って、コマンド管理テーブル６５２ａについて説明する。このコマンド管理テーブル６５２ａには、上述した各種ＡＰＩのうち、ネットワーキングＡＰＩを特定する識別子（例えば、ネットワーキングＡＰＩの名称：以下、「ＡＰＩ識別子」と称する）とスクラッチパッドＡＰＩのＡＰＩ識別子とが格納されている。上述したように、ＪａｖａＡＰＰを実行中の制御部６１０は、ネットワーキングＡＰＩを呼出すことにより、データをＣＰへ送信することができる。また、制御部６１０は、スクラッチパッドＡＰＩを呼出すことにより、スクラッチパッドへデータを書き込んだり、スクラッチパッドに格納されているデータを自由に操作することができる。つまり、これらのＡＰＩは、操作対象のデータを端末装置１０の外部へ漏洩させてしまう虞があるＡＰＩである。このように、コマンド管理テーブル６５２ａには、セキュリティの保護を要するデータの操作に不適切なＡＰＩ、すなわち、個人情報などの重要なデータのセキュリティを保護するために本端末装置１０において実行を制限する必要のあるＡＰＩを特定するＡＰＩ識別子が格納されている。なお、コマンド管理テーブル６５２ａに格納させておくＡＰＩ識別子は、ネットワーキングＡＰＩやスクラッチパッドＡＰＩのＡＰＩ識別子に限定されるものではない。例えば、キャスト処理を行うＡＰＩ（以下、「キャストＡＰＩ」と称する）のＡＰＩ識別子であっても良い。キャスト処理とは、あるオブジェクトを他の型のオブジェクトへ変換するＡＰＩである。このようなキャスト処理が行われると、Ｘ−ＳｔｒｉｎｇオブジェクトをＳｔｒｉｎｇオブジェクトへ変換することが可能になり、Ｘ−Ｓｔｒｉｎｇオブジェクトに内包させていた電話帳データのセキュリティを確保できなくなる虞があるからである。
【００３２】
ＫＶＭは、ＪＶＭの１種であり、携帯電話機やＰＤＡ等の小型電子機器用に設計されている。ＪＶＭとは、ＪａｖａＡＰＰを構成しているＪａｖａバイトコードを制御部６１０が解釈可能な命令コード（例えば、制御部６１０のマシン語コード）に変換し、制御部６１０に実行させるためのものである。このＫＶＭは、ＪａｖａＡＰＰを構成しているＪａｖａバイトコードを解釈し実行する際に、本発明に特有な態様でＪａｖａバイトコードの解釈および実行を行う。
【００３３】
具体的には、ＫＶＭは、実行対象のＪａｖａバイトコードが本端末装置１０において実行を制限されているＡＰＩを呼出す旨のＪａｖａバイトコードであるか否かを上記コマンド管理テーブル６５２ａ（図８参照）の格納内容に基づいて判定する。そして、実行を制限されているＡＰＩを呼出す旨のＪａｖａバイトコードであると判定した場合には、ＫＶＭは、そのＡＰＩにより操作されるデータがセキュリティを保護する必要のあるデータであるか否かを上記データ管理テーブル６５１ａ（図７参照）の格納内容に基づいて判定し、セキュリティを保護する必要のあるデータであると判定した場合には、そのＪａｖａバイトコードの解釈実行を行わない。本実施形態に係る端末装置１０は、このようにして、セキュリティを保護すべきデータが端末装置１０の外部へ漏洩することを防止し、そのデータのセキュリティを確保している。
【００３４】
図９に戻って、ＪＡＭは、ＯＳによる制御の下で、端末装置１０に記憶されているＪａｖａＡＰＰの管理を行うためのソフトウェアである。具体的には、制御部６１０は、ＪａｖａＡＰＰの管理を行うために、ＪＡＭに従いＪａｖａＡＰＰのインストールや、削除を行う機能、不揮発性記憶部６５２に格納されているＪａｖａＡＰＰの名称をリスト表示する機能、ＪａｖａＡＰＰの実行管理を行う機能を営む。
【００３５】
ＪａｖａＡＰＰの実行管理を行う機能とは、ＪａｖａＡＰＰの実行の開始および終了を行う機能である。より詳細に説明すると、ユーザにＪａｖａＡＰＰの実行を指示されると、まず、制御部６１０はＪＡＭに従ってそのＪａｖａＡＰＰを実行するためのワークエリアを揮発性記憶部６５１内に確保する。このワークエリアには、ユーザに実行を指示されたＪａｖａＡＰＰを構成するＪａｖａバイトコードが展開されたり、このＪａｖａＡＰＰを実行中にユーザにより入力されたデータが格納される。次に、制御部６１０は、そのＪａｖａＡＰＰを構成しているＪａｖａバイトコードを揮発性記憶部６５１内に確保したワークエリアへ展開し、そのＪａｖａバイトコードをＫＶＭに従って解釈し実行する。そして、ユーザにＪａｖａＡＰＰの終了を指示されると制御部６１０は、ＫＶＭによるＪａｖａバイトコードの解釈および実行を終了するとともに、そのＪａｖａＡＰＰを実行するために揮発性記憶部６５１内に確保したワークエリアを開放し、そのＪａｖａＡＰＰの実行を終了する。
【００３６】
［Ｂ．動作］
次に、本実施形態の動作について説明する。以下では、本実施形態に係る端末装置の特徴を顕著に示す動作について説明する。
【００３７】
（動作例１：ＪａｖａＡＰＰ実行動作）
ユーザによりＪａｖａＡＰＰの実行を指示されると、制御部６１０はＪＡＭにしたがってこのＪａｖａＡＰＰを構成するＪａｖａバイトコードを揮発性記憶部６５１へ展開する。そして、制御部６１０は、ＫＶＭにしたがってこのＪａｖａバイトコードを解釈および実行することにより、そのＪａｖａＡＰＰを実行する。例えば、制御部６１０は、図４に示される着信通知処理を実現するＪａｖａＡＰＰを実行する場合には、ステップＳＡ１〜ステップＳＡ５の各ステップにおいて、そのステップを実現するＪａｖａバイトコードをＫＶＭにしたがって解釈し実行する。以下では、まず、ステップＳＡ１〜ステップＳＡ５（図４参照）の各ステップにおいて、制御部６１０がＫＶＭにしたがって実行するＪａｖａバイトコード解釈・実行動作について図１０を参照しつつ説明する。
【００３８】
図１０は、制御部６１０がＫＶＭにしたがって実行するＪａｖａＡＰＰ解釈・実行動作の流れを示すフローチャートである。図１０に示されるように、制御部６１０は、まず、実行対象のＪａｖａバイトコードが実行を制限されているＡＰＩを呼出す旨のＪａｖａバイトコードであるか否かをコマンド管理テーブル６５２ａ（図８参照）の格納内容に基づいて判定する（ステップＳＢ１）。具体的には、制御部６１０は、そのＪａｖａバイトコードを解釈し実行することにより呼出されるＡＰＩのＡＰＩ識別子がコマンド管理テーブル６５２ａに格納されている場合には、実行を制限されているＡＰＩを呼出す旨のＪａｖａバイトコードであると判定し、逆に、そのＡＰＩ識別子がコマンド管理テーブル６５２ａに格納されていない場合には、実行を制限されているＡＰＩを呼出す旨のＪａｖａバイトコードではないと判定する。
【００３９】
ステップＳＢ１の判定結果が“Ｎｏ”である場合には、制御部６１０は、実行対象のＪａｖａバイトコードを解釈し命令コードへ変換する（ステップＳＢ３）。逆に、ステップＳＢ１の判定結果が“Ｙｅｓ”である場合には、制御部６１０は、実行対象のＪａｖａバイトコードで呼出されているＡＰＩを用いてアクセスしようとしているデータが、セキュリティの保護を要するデータであるか否かをデータ管理テーブル６５１ａ（図７参照）の格納内容に基づいて判定する（ステップＳＢ２）。具体的には、制御部６１０は、そのデータを示す参照データに、セキュリティの保護を要する旨の保護フラグ（すなわち“１”）が対応づけられている場合には、セキュリティの保護を要するデータであると判定し、逆に、セキュリティの保護を要さない旨の保護フラグ（すなわち“０”）が対応づけられている場合には、セキュリティの保護を要さないデータであると判定する。
【００４０】
ステップＳＢ２の判定結果が“Ｎｏ”である場合には、制御部６１０は上述したステップＳＢ３を行い、ステップＳＢ３にて得られた命令コードを実行する（ステップＳＢ４）。逆に、ステップＳＢ２の判定結果が“Ｙｅｓ”である場合には、制御部６１０は、例外処理を行う（ステップＳＢ５）。この例外処理の一例としては、例えば、このＪａｖａＡＰＰは不正な動作を行う虞がある旨の通知をユーザに報知することなどが挙げられる。なお、本実施形態においては、実行を制限されているＡＰＩを呼出す旨のＪａｖａバイトコードについては、そのＡＰＩにより操作されるデータがセキュリティの保護を要するデータである場合に、そのＪａｖａバイトコードの解釈および実行を行わないようにする場合について説明した。しかしながら、係るＪａｖａバイトコードの解釈および実行を行い、その実行過程で上記セキュリティの保護を要するデータへのアクセスが発生した時点で上記例外処理を行うとしても勿論良い。
【００４１】
本動作例においては、図４に示されるように、このＪａｖａＡＰＰには、実行を制限されているＡＰＩを呼出す旨のＪａｖａバイトコードは内包されていないので、ステップＳＡ１〜ステップＳＡ５の各ステップで上記ステップＳＢ３およびステップＳＢ４が実行され、これら各ステップを実現するＪａｖａバイトコードが実行される。
【００４２】
図４に戻って、ＪａｖａＡＰＰに内包されているＪａｖａバイトコードを制御部６１０が実行することにより実現される着信通知処理について説明する。図４に示されるように、制御部６１０は、まず、画面表示ＡＰＩを呼出し、図５に示される画面を表示部６２０に表示させ（ステップＳＡ１）、イベント取得ＡＰＩを呼出し、通話着信があったか否かを判定する（ステップＳＡ２）。そして、制御部６１０は、ステップＳＡ２の判定結果が“Ｎｏ”である場合には、後述するステップＳＡ５の処理を実行し、逆に、ステップＳＡ２の判定結果が“Ｙｅｓ”である場合にはＸ−Ｓｔｒｉｎｇ生成ＡＰＩを呼出し、その通話着信についての電話帳データを内包したＸ−Ｓｔｒｉｎｇオブジェクトの参照データを取得する（ステップＳＡ３）。
【００４３】
ここで、ステップＳＡ３にて呼出されるＸ−Ｓｔｒｉｎｇ生成ＡＰＩを実行中の制御部６１０により実行される電話帳データ取得処理について図１１を参照しつつ説明する。図１１は、電話帳データ取得処理の流れを示すフローチャートである。図１１に示されるように、制御部６１０は、まず、着信履歴テーブル（図３参照）から最新の着信電話番号を取得し（ステップＳＣ１）、取得した着信電話番号と同一の電話番号を内包した電話帳データを電話帳テーブル（図２参照）から取得する（ステップＳＣ２）。
【００４４】
次に、制御部６１０は、ステップＳＣ２にて取得した電話帳データを内包したＸ−Ｓｔｒｉｎｇオブジェクトを生成し（ステップＳＣ３）、このＸ−Ｓｔｒｉｎｇオブジェクトの参照データと、このＸ−Ｓｔｒｉｎｇオブジェクトに内包されている電話帳データの保護フラグとを対応づけて、データ管理テーブル６５１ａへ格納する（ステップＳＣ４）。
【００４５】
そして、制御部６１０は、ステップＳＣ３にて生成したＸ−Ｓｔｒｉｎｇオブジェクトの参照データを呼出し元のＪａｖａＡＰＰへ引渡し、Ｘ−Ｓｔｒｉｎｇ生成ＡＰＩの実行を終了する（ステップＳＣ５）。
【００４６】
図４に戻って、ステップＳＡ３にてＸ−Ｓｔｒｉｎｇ生成ＡＰＩを呼出すことにより、通話着信についての電話帳データを内包したＸ−Ｓｔｒｉｎｇオブジェクトの参照データを取得した制御部６１０は、この参照データを表示部６２０へ引渡し、この参照データで示されるＸ−Ｓｔｒｉｎｇオブジェクトに内包されている電話帳データを図５に示す画面の領域５１０へ表示させる（ステップＳＡ４）。
【００４７】
（動作例２：実行を制限されているＡＰＩを呼出すＪａｖａＡＰＰを実行する場合の動作）
次いで、図１２に示す着信通知処理を実現するＪａｖａＡＰＰを制御部６１０が実行する場合について説明する。図１２に示される着信通知処理が図４に示される着信通知処理と異なっている点は、ステップＳＡ６を有する点のみである。このステップＳＡ６は、ステップＳＡ３にて取得した通信先識別子をネットワーキングＡＰＩを用いてＪａｖａＡＰＰの提供元のコンテンツサーバ４０へ送信するステップである。つまり、図１２に示される着信通知処理を実現するＪａｖａＡＰＰは、通話着信があった場合に、その通話着信についての電話帳データを盗み出しコンテンツサーバ４０へ送信するものであり、悪意のあるＣＰにより提供されたＪａｖａＡＰＰである。なお、このようなＪａｖａＡＰＰを実行する場合であっても、ステップＳＡ６以外のステップについては、図４に示される着信通知処理と同一の処理が行われる。このため、これらのステップにおける制御部６１０の動作については説明を省略し、ステップＳＡ６を実現するＪａｖａバイトコードをＫＶＭにしたがって解釈し実行する際の制御部６１０の動作についてのみ、図１２を参照しつつ説明する。
【００４８】
ステップＳＡ６（図１２参照）を実現するＪａｖａバイトコードは、ネットワーキングＡＰＩを呼出す旨のＪａｖａバイトコードであるから、上述したステップＳＢ１における判定結果は“Ｙｅｓ”となり（図８および図１０参照）、制御部６１０は上述したステップＳＢ２の処理を行う。
【００４９】
ネットワーキングＡＰＩを用いてコンテンツサーバ４０へ送信されるデータは、電話帳データであるから、上述したステップＳＢ２における判定結果は“Ｙｅｓ”となり、制御部６１０は上述した例外処理を行う（ステップＳＢ５）。その結果、ステップＳＡ６（図１２参照）を実現するＪａｖａバイトコードが実行されることはなく、電話帳データを盗み出されることが防止される。
【００５０】
以上説明したように、非ネイティブＡＰＰの実行過程で端末装置１０に記憶されている重要なデータを利用することが可能になるとともに、この重要なデータのセキュリティを確保することが可能になる。
【００５１】
［Ｃ．変形例］
以上、本発明の実施形態について説明したが、本発明は係る実施形態に限定されるものではなく、その技術思想の範囲内で様々な変形が可能である。なお、変形例としては、例えば、以下のようなものが考えられる。
【００５２】
（変形例１）上述した実施形態では、非ネイティブＡＰＰの一例として、Ｊａｖａバイトコードで構成されたＡＰＰについて説明したが、非ネイティブＡＰＰを記述するプログラミング言語はＪａｖａに限定されるものではない。他のプログラミング言語（例えば、Ｃ＋＋やＣ言語）であっても良い。一般に、これらのプログラミング言語で記述されたＡＰＰは、その提供時点で命令コードに変換されている。このような場合には、上述したＫＶＭに替えて、図１０に示されるフローチャートに従った動作を行うプログラムを端末装置１０に記憶させておく必要がある。なお、このようにして提供されるＡＰＰは既に命令コードで構成されているため、ステップＳＢ３の処理を行う必要はない。
【００５３】
（変形例２）上述した実施形態では、Ｊａｖａ実行環境を有する携帯電話機に本発明を提供する場合について説明した。一般に携帯電話機には、電話帳テーブルや着信履歴テーブルなどの個人情報が記憶されているため、本発明を適用した場合に最も顕著な効果が得られる。しかしながら、本発明の適用対象は係る携帯電話機に限定されるものではない。例えば、Ｊａｖａ実行環境を備えたＰＤＡやＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ：登録商標）端末であっても良く、Ｊａｖａ実行環境を有するＰＣであって、図１３に示されるように、ＧＷ装置５０を介してインターネット３０に接続されたＬＡＮ６０を構成するもＰＣ７０Ａ〜７０Ｃであっても良い。要は、Ｊａｖａ実行環境を備え、ＪａｖａＡＰＰを実行する機能を有するコンピュータ装置であれば、いずれであっても良い。
【００５４】
（変形例３）上述した実施形態では、非ネイティブＡＰＰの一例として、インターネットを介してダウンロードされたＪａｖａＡＰＰについて説明した。しかしながら、端末装置１０にインストールされる非ネイティブＡＰＰは、ダウンロードされたＪａｖａＡＰＰに限定されるものではなく、例えばＣＤ−ＲＯＭなどのコンピュータ装置読み取り可能な記録媒体に記録されて配布されるＪａｖａＡＰＰであっても良い。
【００５５】
なお、インターネットを介して提供されるＡＰＰや、記録媒体に記録されて配布されるＡＰＰであっても、例えば、移動パケット通信網２０を運営する通信事業者やＣＡ（Ｃｅｒｔｉｆｉｃａｔｅ  Ａｕｔｈｏｒｉｔｙ）のような公正な第三者機関により、その内容が審査され、一定の動作基準を満たしていると認定されたＡＰＰ（以下、「トラステッドＡＰＰ」という）であれば、ネイティブＡＰＰと同様にアクセス可能なリソースを制限する必要はない。
【００５６】
例えば、トラステッドＡＰＰには、自身がトラステッドＡＰＰであることを示す識別情報を内包させておくとともに、図１４に示されるＪａｖａバイトコード解釈実行動作を制御部６１０に実行させるとしても良い。図１４に示されるＪａｖａバイトコード解釈・実行動作が図１０に示されるＪａｖａバイトコード解釈・実行動作と異なっている点は、上述したステップＳＢ１の前に、ステップＳＢ０を行う点のみである。このステップＳＢ０においては、制御部６１０は実行対象のＪａｖａＡＰＰがトラステッドＡＰＰであるか否かを判定する。具体的には、制御部６１０は、実行対象のＪａｖａＡＰＰに上記識別情報が内包されている場合にのみ、そのＪａｖａＡＰＰをトラステッドＡＰＰと判定する。そして、ステップＳＢ０の判定結果が“Ｙｅｓ”である場合には、制御部６１０は、無条件に上述したステップＳＢ３を実行し、そのＪａｖａＡＰＰを構成しているＪａｖａバイトコードを解釈し実行する。これは、トラステッドＡＰＰについては、ユーザにとって不利益な動作を行わないことが確認されているため、その実行過程でのリソースへのアクセス態様を制限する必要がないからである。
【００５７】
（変形例４）上述した実施形態では、Ｘ−Ｓｔｒｉｎｇ生成ＡＰＩやＫＶＭなど、本発明に係る端末装置に特有な機能を実現するためのソフトウェアを端末装置１０に予め記憶させておく場合について説明した。しかしながら、コンピュータ装置読み取り可能な記録媒体にこれらのソフトウェアを記録しておき、この記録媒体を用いて、これらのソフトウェアを一般的なコンピュータ装置にインストールすることにより、係るコンピュータ装置に端末装置１０と同一の機能を付与することも可能である。
【００５８】
【発明の効果】
本発明によれば、端末装置に記憶されている重要なデータを非ネイティブＡＰＰに利用させることを可能にしつつ、この重要なデータのセキュリティを確保することができるといった効果を奏する。
【図面の簡単な説明】
【図１】本発明に係る端末装置１０を有する通信システムの構成例を示す図である。
【図２】端末装置１０に記憶されている電話帳テーブルの一例を示す図である。
【図３】端末装置１０に記憶されている着信履歴テーブルの一例を示す図である。
【図４】同端末装置１０に記憶されているＪａｖａＡＰＰに従って端末装置１０が行う着信通知処理の流れを示すフローチャートである。
【図５】同端末装置１０に表示される画面の画面フォーマットの一例を示す図である。
【図６】同端末装置１０の構成の一例を示す図である。
【図７】同端末装置１０の揮発性記憶部６５１へ書き込まれるデータ管理テーブルの一例を示す図である。
【図８】同端末装置１０の不揮発性記憶部６５２に格納されているコード管理テーブルの一例を示す図である。
【図９】同端末装置１０に組み込まれているＪａｖａ実行環境を説明するための図である。
【図１０】同端末装置１０の制御部６１０がＫＶＭに従って行うＪａｖａバイトコード解釈実行処理の流れを示す図である。
【図１１】同端末装置１０の制御部６１０がＸ−Ｓｔｒｉｎｇ生成ＡＰＩに従って行う電話帳データ取得処理の流れを示すフローチャートである。
【図１２】同端末装置１０に記憶されているＪａｖａＡＰＰに従って端末装置１０が行う着信通知処理の流れを示すフローチャートである。
【図１３】変形例２に係る通信システムの構成例を示す図である。
【図１４】変形例３に係るＪａｖａバイトコード解釈実行処理の流れを示すフローチャートである。
【符号の説明】
１０…端末装置、２０…移動パケット通信網、２１…基地局、２２…ゲートウェイ装置、３０…インターネット、４０…コンテンツサーバ、６１０…制御部、６２０…表示部、６３０…操作部、６４０…無線通信部、６５０…記憶部、６５１…揮発性記憶部、６５２…不揮発性記憶部、６５１ａ…データ管理テーブル、６６５２ａ…コマンド管理テーブル、６６０…バス。
【図１】
2004302516.tif 000003
【図２】
2004302516.tif 000004
【図３】
2004302516.tif 000005
【図４】
2004302516.tif 000006
【図５】
2004302516.tif 000007
【図６】
2004302516.tif 000008
【図７】
2004302516.tif 000009
【図８】
2004302516.tif 000010
【図９】
2004302516.tif 000011
【図１０】
2004302516.tif 000012
【図１１】
2004302516.tif 000013
【図１２】
2004302516.tif 000014
【図１３】
2004302516.tif 000015
【図１４】
2004302516.tif 000016