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