JP2004157643A - Terminal device, program, and recording medium - Google Patents
Terminal device, program, and recording medium Download PDFInfo
- Publication number
- JP2004157643A JP2004157643A JP2002320953A JP2002320953A JP2004157643A JP 2004157643 A JP2004157643 A JP 2004157643A JP 2002320953 A JP2002320953 A JP 2002320953A JP 2002320953 A JP2002320953 A JP 2002320953A JP 2004157643 A JP2004157643 A JP 2004157643A
- Authority
- JP
- Japan
- Prior art keywords
- data
- execution
- application program
- terminal device
- executing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
Description
【0001】
【発明の属する技術分野】
端末装置に記憶されているデータのセキュリティを確保し、ユーザのプライバシーを保護する技術に関する。
【0002】
【従来の技術】
プログラム実行機能を有する携帯電話機やパーソナルコンピュータ装置(以下、「PC」という)などの端末装置が普及している。また、この種の端末装置にゲーム機能やスケジューラ機能などを実現させるためのアプリケーションプログラム(以下、「AP」とする)が提供されている。このようなAPには、端末装置の販売以前にその不揮発性メモリに書き込まれて提供されるものと、AP単独で提供され、端末装置の販売後にその不揮発性メモリに書き込まれるものとがある。以下では、前者を「ネイティブAP」と称し、後者を「非ネイティブAP」と称する。非ネイティブAPの一例としては、インターネットを介して提供されるAPや、CD−ROM(Compact Disk−Read Only Memory)のようなコンピュータ装置読み取り可能な記録媒体に記録されて提供されるAPなどが挙げられる。ユーザは各自のニーズに応じて非ネイティブAPを端末装置に記憶させることにより、その端末装置の機能を自由に追加および変更することができる。
【0003】
一般にAPは、ユーザのニーズに応じた機能を端末装置に実現させるためのものであるから、ユーザにとって有益なものである。しかしながら、APの提供者に悪意がある場合には、そのAPを実行することでユーザが予期せぬ不利益を被ってしまう虞がある。具体的には、端末装置に記憶されている重要なデータ(例えば、ユーザの個人情報)がAPの実行過程で勝手に読み出され、そのAPの提供者へ送信されてしまうような事態が生じ得る。ネイティブAPについては、例えば、端末装置の製品出荷時点での製品検査により、そのような事態が生じないことが端末装置の製造者によって確認されている。一方、非ネイティブAPについては、必ずしも、そのような確認が為されているわけではない。このような確認がなされていない非ネイティブAPについては、そのAPを実行することで、ユーザが予期せぬ不利益を被ることがないとは言い切れない。
【0004】
ユーザが予期せぬ不利益を被らないようにするために、非ネイティブAPの利用を禁止し、ネイティブAPのみをユーザに利用させるようにすることが考えられる。しかし、非ネイティブAPを利用することが禁止されてしまうと、ユーザは自らのニーズに応じて端末装置の機能を自由に追加することや変更することができず、甚だ不便である。
【0005】
そこで、非ネイティブAPを実行する場合には、その実行過程において端末装置に記憶されている重要なデータが自由に読み書きされないようにする仕組みを設けることが考えられる。このような仕組みを設けておけば、実行する非ネイティブAPが悪意のある者により提供されたものであっても、端末装置に記憶されている重要なデータを盗み出されることはなく、ユーザが予期せぬ不利益を被ることはない。
【0006】
このような重要なデータへのアクセス制限を実現するための技術の一つとして、オブジェクト指向技術が注目されている。オブジェクト指向技術を用いてAPを実行する環境(以下、「実行環境」という)においては、次のような仕組みにより、APの実行過程で端末装置に記憶されているデータを直接読み書きすることが禁止される。まず、オブジェクト指向技術を用いたAPの実行環境では、データと、このデータを操作する際に必須の手続き(以下、「メソッド」とする)とを一体化したオブジェクトが生成される。この実行環境においてAPを実行する場合には、オブジェクトに内包されているメソッドを呼出すことによりそのオブジェクトに内包されているデータを操作することのみが許容される。以下、このオブジェクトとAPとの関係について図10を参照しつつ説明する。
【0007】
図10は、オブジェクトとAPとの関係について説明するための図である。図10に示されるオブジェクトは二つの文字列データ(以下、「文字列1」、「文字列2」という)と二つのメソッドとを内包している。図10のデータ通知メソッドは、このメソッドを呼出したAP(以下、「呼出元AP」という)により指定されたデータ自体をその呼出元APへ引き渡すメソッドである。また、図10のデータ表示メソッドは、呼出元APにより指定されたデータを呼出元APにより指定された書式(例えば、所定の文字数毎に改行するなど)で端末装置の表示部へ表示させるメソッドである。つまり、呼出元APはデータ通知メソッドを呼出すことにより文字列1自体や文字列2自体を取得することや、データ表示メソッドを呼出すことにより文字列1や文字列2を所望の書式で端末装置の表示部に表示させることができる。
【0008】
図10に示すオブジェクトと呼出元APとの関係において注目すべき点は、上記データ表示メソッドを呼出して文字列1や文字列2を端末装置の表示部に表示させる場合には、呼出元APは表示させるデータ自体を取得していない点である。つまり、データ通知メソッドを有さないようにオブジェクトを構成すれば、このオブジェクトに内包されているデータが呼出元APに取得されることはない。以下では、データ通知メソッドを有しないオブジェクトを「完全カプセル化オブジェクト」と称し、データ通知メソッドを少なくとも一つ有するオブジェクトを「非完全カプセル化オブジェクト」と称する。完全カプセル化オブジェクトを用いて端末装置に記憶されている重要なデータを扱うようにすれば、重要なデータがAPの実行過程で盗み出されることはなく、重要なデータのセキュリティが確保される。
【0009】
なお、本出願人は先行技術調査を行ったが、完全カプセル化オブジェクトを用いてデータのセキュリティを確保する技術を開示した先行技術文献はなかった。一方、本出願人は、以上に説明した実行環境と完全カプセル化オブジェクトとを用いることにより、端末装置に記憶されている重要なデータのセキュリティを確保しつつ非ネイティブAPを実行する技術について特許出願(特願2002−143608)を既に行っている。
【0010】
【発明が解決しようとする課題】
ところで、APの実行過程において、データを表示部に表示させる際には、そのデータのデータ長(例えば、文字列データであれば、その文字数)を知ることができると便利な場合がある。一般に、端末装置の表示部には、一行のデータとして表示可能な最大データ長が予め定められており、この最大データ長よりも長いデータをそのまま表示させようとすると表示不能な旨のエラーが通知される場合がある。表示部に表示させるデータのデータ長を事前に知ることができれば、上述したデータ表示メソッドを呼出す際に適切な書式を指定することにより、そのようなエラーの発生を回避することができる。例えば、表示部に表示させるデータのデータ長が上記最大データ長を超えている場合には、最大データ長に対応する文字数毎に改行するように書式を指定してデータ表示メソッドを呼出せばよい。
【0011】
しかし、完全カプセル化オブジェクトに内包されているデータについては、上述したようにAPの実行過程でそのデータ自体を取得することはできないため、そのデータのデータ長を算出することはできない。
【0012】
そこで、この問題を解決するために、内包されているデータ自体を呼出元APへ送ることはないが、そのデータのデータ長を呼出元APへ通知するメソッドを完全カプセル化オブジェクトに設ける、という方法が考えられる。このようなメソッドを完全カプセル化オブジェクトに設けると、APは、このメソッドを呼出すことにより完全カプセル化オブジェクトに内包されているデータのデータ長を知ることができ、そのデータを扱う際の利便性が向上する。
【0013】
ところで、一般にデータはその属性に応じた固有のデータ長を有するものである。例えば、携帯電話機の電話番号ならばそのデータ長は11文字であるし、預金口座の口座番号(以下、「預金口座番号」という)ならばそのデータ長は7文字である。このように、データはその属性に応じた固有のデータ長を有するものであるから、APの実行過程で完全カプセル化オブジェクトに内包されているデータのデータ長が取得されると、そのデータ長に基づいて完全カプセル化オブジェクトに内包されているデータの属性を推定されてしまう虞がある。
【0014】
もっとも、APの実行過程でデータ長からそのデータの属性が推定されたとしても、そのデータ自体が漏洩することはないから、ユーザが直接的に不利益を被ることはない。しかしながら、そのAPを実行する端末装置に、どのような属性のデータが記憶されているかを知られてしまうことは、ユーザのプライバシー保護の観点からは好ましくない。
【0015】
本発明は上記課題に鑑みてなされたものであり、セキュリティを確保する必要のあるデータを扱う際の利便性を向上させつつ、そのデータの属性が推定されないようにする技術を提供することを目的としている。
【0016】
【課題を解決するための手段】
上記課題を解決するため、本発明は、データを記憶する記憶手段と、アプリケーションプログラムを実行するための実行手段と、アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、前記実行手段によるアプリケーションプログラムの実行に先立って、前記記憶手段に記憶されているデータのうち前記実行手段によりアクセスされるデータを特定し、該データと該データの操作に必須のメソッドとを内包するオブジェクトであって、アプリケーションプログラムを実行中の前記実行手段へ該データを引き渡すメソッドを有しないオブジェクトを生成する生成手段と、前記生成手段により生成されたオブジェクトに内包されているデータのデータ長を通知することを、アプリケーションプログラムを実行中の前記実行手段から要求された場合に、該データ長を揺らがせて通知する通知手段とを有する端末装置を提供する。
【0017】
また、上記課題を解決するために、本発明は、コンピュータ装置に、データを記憶する記憶手段と、アプリケーションプログラムを実行するための実行手段と、アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、前記実行手段によるアプリケーションプログラムの実行に先立って、前記記憶手段に記憶されているデータのうち前記実行手段によりアクセスされるデータを特定し、該データと該データの操作に必須のメソッドとを内包するオブジェクトであって、アプリケーションプログラムを実行中の前記実行手段へ該データを引き渡すメソッドを有しないオブジェクトを生成する生成手段と、前記生成手段により生成されたオブジェクトに内包されているデータのデータ長を通知することを、アプリケーションプログラムを実行中の前記実行手段から要求された場合に、該データ長を揺らがせて通知する通知手段とを実現させるためのプログラムと、コンピュータ装置読み取り可能な記録媒体であって、当該プログラムを記録した記録媒体とを提供する。
【0018】
このような端末装置、プログラムおよび記録媒体を用いると、APの実行過程において、端末装置に記憶されているデータが直接アクセスされることが禁止されると共に、該データを内包したオブジェクトであって、該データを呼出元へ通知するメソッドを有さないオブジェクトが生成される。そして、APの実行過程で、このオブジェクトに内包されているデータのデータ長を通知することが要求された場合には、揺らがせたデータ長が通知される。
【0019】
【発明の実施の形態】
以下、図面を参照しつつ本発明の実施形態について説明する。
【0020】
[A.構成]
(1:通信システムの構成)
図1は本発明の実施形態に係る通信システムの構成例を示す図である。図1に示されるように、この通信システムは、コンテンツサーバ10と、インターネット20と、ゲートウェイ装置30と、移動パケット通信網40と、基地局50と、端末装置60とを有している。なお、図1には、一つのコンテンツサーバ10と一つの端末装置60とが例示されているが、実際には、複数のコンテンツサーバ10と複数の端末装置60とが存在する。
【0021】
コンテンツサーバ10は、インターネット20および移動パケット通信網40を介して端末装置60とパケット通信を行う機能を有している。このコンテンツサーバ10には、インターネット20を介して端末装置60へ提供するAPが格納されている。このAPは、オブジェクト指向のコンピュータ言語の一つであるJava(登録商標)により記述されたプログラムであり、Java実行環境で実行可能なJavaバイトコードにより構成されている。以下では、このようなAPを「JavaAP」と称する。このJavaAPは、インターネット20を介して端末装置60へ提供される非ネイティブAPである。
【0022】
ゲートウェイ装置30は、インターネット20における通信プロトコルと移動パケット通信網40における通信プロトコルとを相互変換する機能を備えており、インターネット20と移動パケット通信網40との間のパケット通信を中継するためのものである。
【0023】
移動パケット通信網40は、ゲートウェイ装置30と基地局50とに接続されており、基地局50に収容されている端末装置60に対してパケット通信サービスを提供するためのものである。なお、図1に示す通信システムは、移動パケット通信網40の他に、図示せぬ移動通信網を備えている。この移動通信網は、端末装置60に対して一般的な移動電話の通話サービスを提供するものである。
【0024】
基地局50は、一定の広さ(例えば、基地局50を中心とする半径500メートの広さ)を有する無線セルを形成するものである。基地局50は、自局の形成する無線セル内に在圏する端末装置60を収容し、この端末装置60と無線通信するためのものである。
【0025】
端末装置60はJava実行環境を備えた携帯電話機であり、在圏している無線セルを形成する基地局50と無線通信を行う。この端末装置60は、移動パケット通信網40およびインターネット20を介してコンテンツサーバ10とパケット通信を行う機能を有しており、コンテンツサーバ10から上述したJavaAPをダウンロードすることができる。本実施形態においては、このJavaAPが既に端末装置60にダウンロードされているものとする。
【0026】
(2:端末装置60の構成)
次に、図2を参照しつつ端末装置60の構成を説明する。図2に示されるように、端末装置60は、CPU(Central Processing Unit)210と、操作部220と、表示部230と、無線通信部240と、計時部250と、記憶部260と、これら各要素間のデータ授受を仲介するバス270とを有している。
【0027】
CPU210は、記憶部260に格納されているソフトウェアを実行することにより、端末装置60の各部を制御するものである。操作部220は、数字や文字、操作指示などをユーザに入力させるための複数の操作子を備えており、これらの操作子の操作内容に応じた情報をCPU210へ引き渡す。表示部230は、例えば液晶ディスプレイとその駆動回路であり、CPU210から引き渡された情報に応じた画像を表示する。この表示部230は、一行のデータとして表示可能な最大データ長を予め記憶しており、その最大データ長を超える長さのデータの表示をCPU210から要求された場合には、表示不能な旨のエラーをCPU210へ通知する。
【0028】
無線通信部240は、アンテナ(図示省略)を備えており、基地局50と無線通信するためのものである。この無線通信部240は基地局50から送信されてくる情報を受信し、受信した情報をCPU210へ引き渡すと共に、CPU210から引き渡された情報を基地局50へ送出する。計時部250は、計時機能を備えており、現在時刻を示すデータをCPU210へ供給するためのものである。
【0029】
記憶部260は、RAM(Random Access Memory)261と、ROM(Read Only Memory)262と、不揮発性メモリ263とを有している。RAM261は各種ソフトウェアを実行中のCPU210によりワークエリアとして使用される。
【0030】
ROM262には、オペレーティングシステム(以下、「OS」という)を実現するためのOSソフトウェアや、Java実行環境を構築するためのソフトウェアや、ブラウザソフトウェアや、ネイティブAPが格納されている。このネイティブAPには、自身がネイティブAPであることを示す識別情報が内包されている。このネイティブAPは、OSによる制御の下でCPU210により直接実行される。
【0031】
不揮発性メモリ263は、例えばEEEPROM(Electrically Erasable Programmable Read Only Memory)であり、コンテンツサーバ10からダウンロードされたJavaAPが格納される。また、不揮発性メモリ263には、ユーザの個人情報や、個人情報以外のデータが格納されている。個人情報の一例としては、ユーザの電話番号や預金口座番号などが挙げられる。また、個人情報以外のデータとしては、例えば、ユーザにより制作された画像データ(以下、「自作画像データ」という)が挙げられる。さらに不揮発性メモリ263には、重要度テーブル263aおよびJARストレージ263bが格納されている。
【0032】
ここで、重要度テーブル263aについて図3を参照しつつ説明する。図3に示されるように、重要度テーブル263aには、不揮発性メモリ263に格納されているデータ毎に、そのデータの重要度を示す情報(以下、単に、「重要度」という)が格納されている。図3に示されるように、重要度は“1”または“0”の何れかの値を有するデータであり、重要度の値が“1”である場合には、「重要度が高いこと」を意味し、重要度の値が“0”である場合には、「重要度が低いこと」を意味している。例えば、図3では、ユーザの電話番号や預金口座番号については重要度が高いデータであることが、一方、自作画像データについては重要度が低いデータであることが例示されている。
【0033】
次に、JARストレージ263bについて説明する。端末装置60へダウンロードされるJavaAPは、JavaAPの本体プログラム(Javaバイトコードで記述されたプログラム)と、このプログラムを実行する際に使用される画像データを格納した画像ファイルや音声データを格納した音声ファイルなどの、いわゆる「リソース」を一つにまとめたJAR(Java ARchive)ファイルとである。JARストレージ263bは、このJARファイルを格納するためのものである。
【0034】
(3:Java実行環境)
次に、ダウンロードされたJavaAPを実行するためのJava実行環境について図4を参照しつつ説明する。図4は、端末装置60におけるJava実行環境を説明するための図である。この図に示されるように、端末装置60には、J2ME(Java 2 platform Micro Edition)に準拠したJava実行環境を実現するためのソフトウェアが組み込まれている。ここで、J2MEとは、小型電子器機向けに定められたJava実行環境の規格である。この端末装置60に組み込まれたソフトウェアには、KVMと、CLDC(Connected Limited DeviceConfiguration)クラスライブラリと、オリジナルJava拡張プロファイルとが含まれている。
【0035】
ここで、KVMは、JVMの一種であり、携帯電話機やPDA等の小型電子機器用に設計されている。JVMとは、JavaAPのようなJavaバイトコードにより構成されているプログラムをCPU210が解釈し実行可能なマシン語コードに変換し、CPU210に実行させるためのものである。また、CLDCクラスライブラリは、携帯電話機やPDAなどの小型電子器機向けの汎用的な機能を提供するためのクラスライブラリである。
【0036】
オリジナルJava拡張プロファイルは、CLDCクラスライブラリを基礎として携帯電話機に特化した機能を提供するためのクラスライブラリである。このオリジナルJava拡張プロファイルには、例えば、ユーザインタフェイスAPI(Application Program Interface)、ネットワーキングAPI、スクラッチパッドAPI、完全カプセル化API、非完全カプセル化APIなどが含まれている。
【0037】
ユーザインタフェイスAPIとは、端末装置60のユーザインタフェイス機能をサポートするためのAPIである。ネットワーキングAPIとは、URL(Uniform Resource Locator)により指定されたネットワークリソースへアクセスするためのAPIである。スクラッチパッドAPIとは、スクラッチパッドに対する書き込みや読み出しをサポートするためのAPIである。スクラッチパッドとは、詳細な図示は省略したが、不揮発性メモリ263内に設けられた記憶領域である。このスクラッチパッドには、JavaAPの実行に応じて発生するデータが格納される。さらに、完全カプセル化APIは、完全カプセル化オブジェクトを生成するためのAPIであり、非完全カプセル化APIは、非完全カプセル化オブジェクトを生成するためのAPIである。
【0038】
CPU210が完全カプセル化APIを実行することにより生成される完全カプセル化オブジェクトには、上述したデータ表示メソッドが内包されている。また、この完全カプセル化オブジェクトには、内包しているデータのデータ長を揺らがせて通知するメソッド(以下、「データ通知メッソド」という)が内包されている。具体的には、本実施形態においては、このデータ通知メソッドが呼出されると、この完全カプセル化オブジェクトに内包されているデータの実際のデータ長に、あるアルゴリズムに基づいて算出される値が加算されて呼出元へ通知される(以下では、このデータ通知メッソドにより通知されるデータ長と実際のデータ長との差を「揺らぎ」と称する)。
【0039】
一方、CPU210が非完全カプセル化APIを実行することにより生成される非完全カプセル化オブジェクトには、上述したデータ通知メソッドが内包されている。JavaAPの実行過程において、CPU210は、このメソッドを呼出し実行することにより、非完全カプセル化オブジェクトに内包されているデータ自体を取得することができる。
【0040】
なお、詳細な図示は省略したが、端末装置60は、上述したCLDCクラスライブラリやオリジナルJava拡張プロファイルの他に、メーカ独自拡張ライブラリを有している。このメーカ独自拡張ライブラリは、端末装置60の製造者がそれぞれ独自の機能を提供するためのクラスライブラリである。
【0041】
JAM(Java Application Manager)は、OSによる制御の下で、端末装置60にダウンロードされたJavaAPの管理や、完全カプセル化オブジェクトや非完全カプセル化オブジェクトの管理を行うためのソフトウェアである。まず、JAMを実行中のCPU210が行うJavaAPの管理について説明する。JavaAPの管理を行うために、CPU210は、JAMに従い、JavaAPのインストールや更新、削除を行う機能、不揮発性メモリ263に格納されているJavaAPの名称をリスト表示する機能、JavaAPの実行管理を行う機能を営む。
【0042】
JavaAPの実行管理を行う機能とは、JavaAPの起動や強制終了を行ったり、JavaAPの実行過程において、CPU210のアクセス可能なリソースを制限する機能である。この機能により、JavaAPを実行中のCPU210が直接アクセスすることができるリソースは、このJavaAPのダウンロード元のコンテンツサーバ10と、このJavaAP専用に設けられたJARストレージ263bおよびRAM261のみに制限される。すなわち、JavaAPを実行中のCPU210は不揮発性メモリ263に格納されているユーザの電話番号や預金口座番号などには直接アクセスすることはできない。これらのデータについては、JavaAPを実行中のCPU210は、これらのデータを内包しているオブジェクトに内包されているメソッドを呼出すことによりアクセスすることができる。このようにJavaAPを実行中のCPU210がアクセスすることができるリソースを制限するのは、JavaAPが非ネイティブAPだからである。
【0043】
次に、CPU210がJAMに従って行うオブジェクトの管理について説明する。CPU210は、JavaAPの実行に先立って、JAMに従って、当該JavaAPにより使用されるデータを内包する完全カプセル化オブジェクトや非完全カプセル化オブジェクトを生成し、生成したオブジェクトをRAM261へ格納する。これは、JavaAPの使用するデータを内包しているオブジェクトをJavaAPがアクセス可能なリソースへ予め格納しておくためである。
【0044】
[B.動作]
次に、本実施形態の動作について説明する。
【0045】
(1:オブジェクト生成処理)
次に、端末装置60において、CPU210により実行されるオブジェクト生成処理について図5を参照しつつ説明する。このオブジェクト生成処理は、上述したように、CPU210がJAMに従って実行する処理である。例えば、画面表示されたAPの一覧リストの中から、実行するAPが操作入力により指定された場合などに実行される。なお、APの実行を指示する形態は、操作入力によるものに限定されるものではない。例えば、他のAPを実行中のCPU210から実行が指示される場合、電子メールなどを用いて端末装置60の外部からAPの実行が指示される場合などもある。
【0046】
図5に示すように、まず、端末装置60のCPU210は、実行することを指示されたAPを特定する(ステップSA1)。次に、CPU210は、ステップSA1で特定したAPがネイティブAPであるか、非ネイティブAPであるかを判定する(ステップSA2)。前述したように、ネイティブAPには、自身がネイティブAPであることを示す識別情報が付与されている。したがって、CPU210は、APに上記識別情報が付与されているか否かを判定することにより、このAPがネイティブAPであるのか、それとも非ネイティブAPであるのかを判定することができる。
【0047】
ステップSA2の判定結果が「Yes」である場合(すなわち、ネイティブAPである場合)は、オブジェクト生成処理を終了すると共に、そのAPを実行する。すなわち、実行するAPがネイティブAPである場合には、オブジェクトの生成は行われない。その理由は、ネイティブAPについては、ユーザにとって不利益な動作を行わないことが確認されているので、そのAPの実行過程においてCPU210がアクセスするリソースを制限する必要がないからである。
【0048】
一方、ステップSA2の判定結果が「No」である場合(すなわち、非ネイティブAPである場合)は、その非ネイティブAP(例えば、ダウンロードされたJavaAP)の内容を解析し、不揮発性メモリ263に格納されているデータのうち、このJavaAPの実行過程でアクセスされるデータを特定する(ステップSA3)。なお、JavaAPの実行過程でアクセスされるデータを特定する際には、このJavaAPのJARファイルに格納されているデータは特定対象から除外する。これは、JARファイルに格納されているデータは、このJavaAPを実行する上で必要となるデータとして当該JavaAPの提供者が用意したデータだからである。
【0049】
次に、CPU210は重要度テーブル263a(図3)を参照して、ステップSA3にて特定したデータを完全カプセル化オブジェクトに内包させるのか、非完全カプセル化オブジェクトに内包させるのかを決定する(ステップSA4)。具体的には、CPU210は、ステップSA3で特定したデータに対応づけられている重要度の値が、“0”である場合には、そのデータを非完全カプセル化オブジェクトに内包させることとし、逆に、重要度の値が、“1”である場合には、そのデータを完全カプセル化オブジェクトに内包させることとする。
【0050】
そして、CPU210は、上記ステップSA4の判定結果に従って、上記ステップSA3において特定したデータを内包する完全カプセル化オブジェクトまたは非完全カプセル化オブジェクトを生成し、当該オブジェクトをRAM261へ格納して(ステップSA5)、オブジェクト生成処理を終了する。
【0051】
なお、上記ステップSA3においてJavaAPの使用するデータが複数特定された場合には、CPU210は、特定されたデータ毎に、当該データ用の完全カプセル化オブジェクトまたは非完全カプセル化オブジェクトを生成してRAM261へ格納する。すなわち、CPU210は、上記ステップSA4およびステップSA5の処理を特定されたデータ毎に繰り返して行う。そして、CPU210は、オブジェクト生成処理を終了した後、実行するAPとして指定されたJavaAPを起動し、このJavaAPに基づく処理を開始する。
【0052】
(2:データ長取得処理)
次に、JavaAPの実行過程で、上記オブジェクト生成処理にて生成したオブジェクトに内包されているデータのデータ長をCPU210が取得するデータ長取得処理について説明する。なお、非完全カプセル化オブジェクトに内包されているデータについては、上述したデータ通知メソッドを用いて、そのデータ自体を取得しデータ長を算出することが可能であるが、これについては本発明との関係が希薄であるのでその説明を省略する。ここでは、完全カプセル化オブジェクトに内包されているデータのデータ長を取得する処理についてのみ説明する。
【0053】
図6は、JavaAPの実行過程において、CPU210が完全カプセル化オブジェクトに内包されているデータ長通知メソッドを呼出し実行することにより、この完全カプセル化オブジェクトに内包されているデータのデータ長を取得するデータ長取得処理の流れを示すフローチャートである。この図に示されるように、CPU210は、まず、計時部250から現在時刻を示すデータを取得する(ステップSB1)。
【0054】
次に、CPU210は、ステップSB1にて取得した現在時刻を示すデータをシードとして、例えば混合合同法などの擬似乱数生成アルゴリズムに従って擬似乱数を一つ生成する(ステップSB2)。なお、ステップSB2で実行される擬似乱数生成アルゴリズムについては、混合合同法に限定されるものではなく、他の擬似乱数生成アルゴリズムであっても良い。
【0055】
次に、CPU210は、ステップSB2にて生成された擬似乱数をシードとして所定の範囲(例えば、0以上3未満の範囲)内の擬似乱数を生成する(ステップSB3)。このように、ステップSB2で生成した擬似乱数をシードとして更に擬似乱数を生成するのは、生成した擬似乱数から統計的に擬似乱数生成アルゴリズムを推定されることを防止するためである。
【0056】
次に、CPU210は、ステップSB3にて生成した擬似乱数の値に基づいて、データ長を呼出元へ通知する際の揺らぎを算出する(ステップSB4)。例えば、CPU210はステップSB3にて生成した擬似乱数の値が0以上かつ1未満の値である場合には、呼出元へ通知する揺らぎを1とし、1以上かつ2未満の値である場合には、この揺らぎを2とし、2以上かつ3未満の値である場合には、この揺らぎを3とする。そして、CPU210は、ステップSB4にて算出した揺らぎを加算したデータ長を呼出元へ通知し(ステップSB5)、データ長取得処理を終了する。
【0057】
以上に説明したように、JavaAPの実行過程でCPU210はデータ長通知メソッドを呼出し実行することにより、完全カプセル化オブジェクトに内包されているデータのデータ長として揺らいだ値を取得することができる。このようにして取得されたデータ長には揺らぎが含まれているから、取得されたデータ長からそのデータの属性が推定されることはない。また、CPU210は、データ表示メソッドを呼出して完全カプセル化オブジェクトに内包されているデータを表示部230に表示させる際に、事前にデータ長通知メソッドを呼出すことにより、そのデータ長を取得することができる。そして、取得したデータ長が上述した最大データ長を超えている場合には、データ表示メソッドを呼出す際に適宜書式を指定すること(例えば、最大データ長に応じた文字数毎に改行するなど)により、表示不能な旨のエラーが発生しないようにすることができる。
【0058】
[C.変形例]
以上、本発明の実施形態について説明したが、本発明は係る実施形態に限定されるものではなく、その技術思想の範囲内で様々な変形が可能である。なお、変形例としては、例えば、以下のようなものが考えられる。
【0059】
(変形例1)
上述した実施形態では、データ長通知メソッドを用いて完全カプセル化オブジェクトに内包されているデータのデータ長を呼出元APへ通知する際に、実際のデータ長よりも大きい値を通知する場合について説明したが、実際のデータ長よりも小さい値が通知されても良い。具体的には、上述したデータ長取得処理のステップSB5にて、CPU210は、ステップSB4で算出した値を実際のデータ長から減算して呼出元APへ通知するとしても良い。ただし、このような場合には、通知されたデータ長と上述した最大データ長とを比較し、実際には最大データ長を超えているデータについて、そのデータのデータ長が最大データ長を超えていないと判定されてしまうといった問題がある。このような問題を解決するために、実際のデータ長よりも小さい値を通知する場合には、揺らぎの大きさの最大値(本変形例においては、「3」、以下、揺らぎの大きさの最大値を「揺らぎの幅」と称する)を呼出元APへ通知することが考えられる。そして、通知されたデータ長に上記揺らぎの幅を加算した値と最大データ長とを比較するようにすれば、実際には最大データ長を超えているデータについて、そのデータのデータ長が最大データ長を超えていないと判定されることが回避される。なお、上述した実施形態他では、実際のデータ長よりも大きい値(実際のデータ長に対して、+1〜+3の値)を通知する場合について説明し、本変形例では、実際のデータ長よりも小さい値(実際のデータ長に対して、−3〜−1の値)を通知する場合について説明した。しかしながら、呼出元へ通知されるデータ長が、実際のデータ長よりも常に大きくなることや、実際のデータ長よりも常に小さくなることに限定されないことは言うまでもない。実際のデータ長に対して−3〜+3の値が通知されるとしても良く、また、実際のデータ長に対して−1〜+3の値や、−3〜+1の値が通知されるとしても良い。例えば、実際のデータ長に対して−3〜+3の値で通知する場合には、図6のステップSB3において、−4より大きく、かつ、+4未満の実数型の擬似乱数を生成する。そして、この擬似乱数の整数部分を揺らぎの値として求め(図6:ステップSB4)、このようにして算出された揺らぎを実際のデータ長に加算することで実現される。また、上述した実施形態および本変形例においては、揺らぎの幅が「3」である場合について説明した。しかしながら、揺らぎの幅をどの程度の大きさとするかは、設計事項の範疇であり、「3」に限定されるものではないことは言うまでもない。
【0060】
また、上述した実施形態では、計時部250により取得された現在時刻をシードとして算出された擬似乱数を用いて揺らぎを算出する場合について説明した。しかしながら、呼出元APへ通知するデータ長を揺らがせることを実現する態様は、擬似乱数を用いる態様に限定されるものではない。
【0061】
例えば、データ毎にAPへ通知するデータ長(以下、「通知データ長」という)を対応付けて不揮発性メモリ263に格納させておき、上記データ長通知メソッドが呼出された場合には、この通知データ長が呼出元APへ通知されるとしても良い。具体的には、実際のデータ長が10文字以上かつ15文字未満であるデータについては、通知データ長の値として15を対応付けて不揮発性メモリ263に格納させておき、上記データ長通知メソッドを呼出すことにより、この通知データ長が呼出元APへ通知されるとすることで実現可能である。このように、データ毎に通知データ長を対応付けて不揮発性メモリ263に格納させておく態様では、擬似乱数を生成する必要がないため計時部250は不要になる。
【0062】
(変形例2)
上述した実施形態では、セキュリティを確保すべき重要度なデータとして、ユーザの携帯電話機の電話番号や預金口座番号を例示した。しかしながら、本発明の適用対象であるデータは、携帯電話機の電話番号や預金口座番号に限定されるものではなく、クレジットカードのカード番号や暗証番号であっても良い。要は、APの実行過程で取り扱われる個人情報であって、固有のデータ長を有するデータであれば良い。
【0063】
(変形例3)
上述した実施形態では、データの文字数をデータ長として用いる場合について説明した。しかしながら、係るデータ長は文字数に限定されるものではなく、そのデータのバイト数や、そのデータを表示部230に表示する際に要するピクセル数であっても良い。データのバイト数やピクセル数を知られてしまうと、1文字当たりのバイト数やピクセル数からそのデータの文字数を算出されてしまうからである。なお、ピクセル数とは液晶ディスプレイなどにおいて、表示するかしないか、もしくはその色や輝度を制御できる最小の単位である。
【0064】
(変形例4)
上述した実施形態では、端末装置60の不揮発性メモリ263に格納されているデータを扱うオブジェクトとして、完全カプセル化オブジェクトと非完全カプセル化オブジェクトとを用いる場合について説明したが、完全カプセル化オブジェクトのみを用いても良い。すなわち、端末装置60の不揮発性メモリ263に格納されているデータについては、常に、完全カプセル化オブジェクトで扱うとしても良い。この場合、上述した重要度テーブル263aは不要となる。また、上述した実施形態では、重要度テーブル263aを用いる構成としたが、電話番号、預金口座番号および自作画像データなどのデータ自体に重要度を付与するようにすれば、重要度テーブル263aを用いる必要はない。
【0065】
また、上述した実施形態では、端末装置60に記憶されているデータの重要度を“0”(重要度が低い)または“1”(重要度が高い)の二つの値を用いて区別し、この重要度の値に基づいて当該データを扱うオブジェクトを完全カプセル化オブジェクトとするか、非完全カプセル化オブジェクトとするかを決定する場合について説明した。しかしながら、例えば、データの重要度を示す値として、“0(重要度「低」)”〜“5(重要度「高」)”までの値を各データに対して付与し、この重要度の値が“0”〜“2”のデータについては、非完全カプセル化オブジェクトで扱い、重要度の値が“3”〜“5”のデータについては、完全カプセル化オブジェクトで扱うとしても良い。更に、完全カプセル化オブジェクトに内包されているデータのデータ長を通知する際に、重要度が高いほど揺らぎの幅を大きくして通知するとしても良い。このようにすると、揺らぎの幅が大きいほど実際のデータ長を知ることが困難になるから、重要度が高いデータほどデータ長からそのデータの属性を推定することが困難になるといった効果を奏する。
【0066】
(変形例5)
上述した実施形態では、JavaAPの実行過程でアクセスされるデータのうち、端末装置60の不揮発性メモリ263に格納されているデータであって重要度の高いデータについてのみ完全カプセル化オブジェクトで扱う場合について説明した。しかしながら、JavaAPの実行過程でユーザにより入力されたデータについても完全カプセル化オブジェクトで扱うとしても良い。また、JavaAPの実行過程でユーザにデータを入力させる際に、そのデータの重要度と対応づけて入力させ、重要度の高いデータについては、完全カプセル化オブジェクトで扱うとしても良い。このように、JavaAPの実行過程でユーザにより入力されるデータを完全カプセル化オブジェクトで扱う理由は、このようなデータにはユーザの個人情報が含まれている可能性があるからである。
【0067】
(変形例6)
上述した実施形態では、不揮発性メモリ263に格納されているデータについてのみ完全カプセル化オブジェクトで扱う場合について説明したが、このようなデータの一部からなる部分データについても完全カプセル化オブジェクトで扱うとしても良い。このような部分データにもユーザの個人情報が含まれている可能性があるからである。
【0068】
(変形例7)
上述した実施形態では、オブジェクト生成処理にて生成したオブジェクトをRAM261へ格納する場合について説明した。しかしながら、オブジェクトの格納先はRAM261に限定されるものではなく、不揮発性メモリ263であっても良い。
【0069】
例えば、図7に示すように、不揮発性メモリ263に個別スクラッチパッド263cや共通スクラッチパッド263dを設けておき、この個別スクラッチパッド263cや共通スクラッチパッド263dへ生成したオブジェクトを格納するとしても良い。なお、個別スクラッチパッドとは、JavaAPの使用するデータをJavaAP毎に格納するための記憶領域であり、共通スクラッチパッドとは、複数のJavaAPに共有されるデータを格納するための記憶領域である。このように、生成したオブジェクトを不揮発性メモリ263へ格納するようにすると、一度生成したオブジェクトを再利用することができるといった効果を奏する。更に、生成したオブジェクトの格納先が共通スクラッチパッド263dである場合には、複数のJavaAPがそのオブジェクトを共同利用できるといった効果も奏する。
【0070】
また、上述した実施形態では、JavaAPの実行に先立って、当該JavaAPの使用するデータを内包するオブジェクトを生成しておく場合について説明したが、JavaAPの実行過程において、データを使用する度毎に当該データを内包するオブジェクトの生成を行うとしても良い。
【0071】
(変形例8)
上述した実施形態では、非ネイティブAPの一例として、インターネットを介してダウンロードされたJavaAPについて説明した。しかしながら、端末装置60にインストールされる非ネイティブAPは、ダウンロードされたJavaAPに限定されるものではなく、例えばCD−ROMなどのコンピュータ装置読み取り可能な記録媒体に記録されて配布されるJavaAPであっても良い。
【0072】
なお、端末装置60にダウンロードされたJavaAPや、記録媒体に記録されて配布されるJavaAPであっても、例えば、移動パケット通信網40を運営する通信事業者やCA(Certificate Authority)のような公正な第三者機関により、その内容が審査され、一定の動作基準を満たしていると認定されたAP(以下、「トラステッドAP」という)であれば、ネイティブAPと同様にアクセス可能なリソースを制限する必要はない。例えば、このようなトラステッドAPにネイティブAPに内包されている識別情報と同一の識別情報を内包させておけば、CPU210は、ネイティブAPと同様にアクセス可能なリソースを制限することなく、トラステッドAPを実行することができる。また、上述した実施形態では、ネイティブAPについてはOSを実行中のCPU210により直接実行される場合について説明した。しかしながら、ネイティブAPについてもJAMを実行中のCPU210により実行されるとすることももちろん可能である。
【0073】
(変形例9)
上述した実施形態では、図8においてハッチングで示すように、KVMと、CLDCクラスライブラリと、オリジナルJava拡張プロファイルとを備えるJ2MEが組み込まれた端末装置60に本発明を適用した場合について説明したが。しかしながら、本発明を適用可能なJava実行環境はJ2MEに準拠したもの限定されるものではない。また、本発明を適用可能な端末装置は、携帯電話機に限定されるものではない。
【0074】
例えば、図8に示すように、オリジナルJava拡張プロファイルの替わりにMIDP(Mobile Information Device Profile)を有する構成であっても良い。また、KVMの代わりにJVMを有し、CLDCクラスライブラリの代わりにCDC(Connected Device Configuration)クラスライブラリを、また、オリジナルJava拡張プロファイルに替えて、例えば、液晶付電話機用プロファイル、TV用プロファイル、カーナビゲーション用プロファイルなどを有する構成であっても良い。さらには、HotSpotを有しJ2SE(Java2 Standard Edition)に準拠するJava実行環境であっても良く、また、HotSpotを有しJ2EE(Java2 Enterprise Edition)に準拠するJava実行環境であっても良い。なお、J2SEとは、PC向けに定められてJava実行環境の規格であり、J2EEとは、サーバコンピュータ装置向けに定められたJava実行環境の規格である。
【0075】
また、以上説明したJava実行環境の変形例から明らかなように、本発明は、例えば、PHS(Personal Handyphone System:登録商標)端末やPDA、カーナビゲーション装置、PCなどの各種電子機器に適用可能である。
【0076】
また、本発明に係る端末装置は、移動パケット通信網40に収容される端末装置60に限定されるものではない。例えば、図9に示すような通信システムにおいて、LAN70内に設けられたPC80A〜PC80Cに本発明を適用することも可能である。
【0077】
(変形例10)
上述した実施形態では、オブジェクト指向技術に基づく実行環境としてJava実行環境を用いる場合について説明したが、他のオブジェクト指向技術に基づく実行環境に本発明を適用することも可能である。但し、本発明はJava実行環境に適用された場合に、特に顕著な効果を奏する。以下、その理由について説明する。
【0078】
オブジェクト指向技術に基づく実行環境においては、APの実行過程でアクセスされるデータはオブジェクト内にカプセル化されている。このカプセル化には、プログラミング言語レベルでのカプセル化と、実行コード(マシン語またはバイトコード)レベルでのカプセル化とがある。前者は、オブジェクトに内包されているデータを直接読み書きするようなソースコードを実行コードへコンパイルしないようにすることで実現される。一方、後者は、オブジェクトに内包されているデータを直接読み書きするような実行コードを実行しないようにすることで実現される。例えば、プログラミング言語C++に基づくカプセル化はプログラミング言語レベルでのカプセル化であり、Javaに基づくカプセル化は実行コードレベルでのカプセル化である。
【0079】
より詳細に説明すると、C++に基づくカプセル化では、オブジェクト内のデータを格納するためのフィールドを全てprivateフィールドとして宣言することで、カプセル化が実現される。なお、privateフィールドとは、直接読み書きすることを禁止するデータを格納するためのフィールドである。このようなオブジェクトを生成した場合、確かに、このオブジェクト内のprivateフィールドに格納されているデータを直接読み書きするようなソースコードはコンパイルされることはないので、当然、実行コードが生成されることもない。しかしながら、このカプセル化は、コンパイラによって保証されているに過ぎず、例えば、悪意のある第三者がコンパイラを改造することにより、オブジェクト内のデータを不正に入手することが可能である。また、コンパイラを改造しなくても、悪意のある第三者がハンドアセンブルなどの手段でオブジェクト内のデータを不正に読み出す実行コードを生成することも不可能ではない。加えて、ポインタを用いて直接メモリにアクセスしてしまえば、オブジェクト内のデータを入手することができてしまう。
【0080】
これに対してJavaの場合、privateフィールドとして宣言されたフィールドは、private属性を有するフィールドであることを示すJavaバイトコードへコンパイルされる。KVMがクラスファイルをRAM261などへ展開する際も、フィールドのprivate属性は保持されている。したがって、仮にコンパイラを改造してオブジェクト内のprivateフィールドに格納されているデータを不正に読み出すようなバイトコードを生成したとしても、KVMがこれを検知するのでオブジェクト内のデータを入手することはできない。また、Javaはポインタをサポートしていないので、ポインタを用いて直接メモリにアクセスし、オブジェクト内のデータを入手することもできない。
【0081】
以上に説明したように、プログラミング言語レベルでのカプセル化が完全であっても、実行コードレベルでのカプセル化が完全でなければ、データを完全にカプセル化したとは言えない。Javaでは、プログラミング言語レベルのみに止まらず、実行コードレベルでの完全なカプセル化を達成することが可能である。このため、本発明の適用対象である実行環境としてはJava実行環境が最も好適である。
【0082】
(変形例11)
上述した実施形態では、完全カプセル化API、非完全カプセル化APIおよびJAMなど、本発明に係る端末装置に特有な機能を実現するためのソフトウェアを端末装置60に予め記憶させておく場合について説明した。しかしながら、コンピュータ装置読み取り可能な記録媒体にこれらのソフトウェアを記録しておき、この記録媒体を用いて、これらのソフトウェアを一般的なコンピュータ装置にインストールすることにより、係るコンピュータ装置に端末装置60と同一の機能を付与することも可能である。
【0083】
【発明の効果】
本発明によれば、セキュリティを確保する必要のあるデータを扱う際の利便性を向上させつつ、そのデータの属性を推定されることが回避されるといった効果を奏する。
【図面の簡単な説明】
【図1】本発明に係る端末装置60を有する通信システムの構成例を示す図である。
【図2】同端末装置60の構成例を示すブロック図である。
【図3】同端末装置60に記憶されている重要度テーブル263aの一例を示す図である。
【図4】同端末装置60に実装されているJava実行環境を示す図である。
【図5】同端末装置60の実行するオブジェクト生成処理の流れを示すフローチャートである。
【図6】同端末装置60の実行するデータ長取得処理の流れを示すフローチャートである。
【図7】変形例7に係る端末装置60の不揮発性メモリ263の一例を示す図である。
【図8】変形例9に係るJava実行環境の一例を示す図である。
【図9】変形例9に係る通信システムの構成例を示す図である。
【図10】オブジェクト指向技術に係るオブジェクトとプログラムとの関係について説明するための図である。
【符号の説明】
10…コンテンツサーバ、20…インターネット、30…ゲートウェイ装置、40…移動パケット通信網、50…基地局、60…端末装置、210…CPU、220…操作部、230…表示部、240…無線通信部、250…計時部、260…記憶部、262…ROM、261…RAM、263…不揮発性メモリ、263a…重要度テーブル、263b…JARストレージ、270…バス。[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a technique for securing the security of data stored in a terminal device and protecting the privacy of a user.
[0002]
[Prior art]
2. Description of the Related Art Terminal devices such as mobile phones and personal computer devices (hereinafter, referred to as “PCs”) having a program execution function have become widespread. Further, an application program (hereinafter, referred to as “AP”) for realizing a game function, a scheduler function, and the like in this type of terminal device is provided. Some of such APs are provided by being written to the non-volatile memory before selling the terminal device, and others are provided by the AP alone and written into the non-volatile memory after the sales of the terminal device. Hereinafter, the former is referred to as a "native AP" and the latter is referred to as a "non-native AP". Examples of the non-native AP include an AP provided via the Internet, and an AP recorded and provided on a computer-readable recording medium such as a CD-ROM (Compact Disk-Read Only Memory). Can be By storing the non-native AP in the terminal device according to each user's needs, the user can freely add and change the functions of the terminal device.
[0003]
Generally, the AP is useful for the user because the terminal device realizes a function corresponding to the user's needs in the terminal device. However, if the AP provider is malicious, executing the AP may cause the user to suffer unexpected disadvantages. Specifically, important data (for example, personal information of the user) stored in the terminal device is read out in the course of executing the AP without permission and transmitted to the provider of the AP. obtain. For the native AP, for example, it is confirmed by a terminal device manufacturer that such a situation does not occur by product inspection at the time of product shipment of the terminal device. On the other hand, for a non-native AP, such confirmation is not necessarily performed. For a non-native AP for which such confirmation has not been made, it cannot be said that executing the AP will not cause the user to suffer unexpected disadvantages.
[0004]
In order to prevent the user from suffering an unexpected disadvantage, it is conceivable to prohibit the use of the non-native AP and allow the user to use only the native AP. However, if the use of the non-native AP is prohibited, the user cannot freely add or change the functions of the terminal device according to his / her own needs, which is extremely inconvenient.
[0005]
Therefore, when a non-native AP is executed, it is conceivable to provide a mechanism for preventing important data stored in the terminal device from being freely read and written during the execution process. By providing such a mechanism, even if the non-native AP to be executed is provided by a malicious person, the important data stored in the terminal device will not be stolen, and the user is not expected to steal. You will not suffer any disadvantage.
[0006]
Object-oriented technology has attracted attention as one of technologies for realizing such access restriction to important data. In an environment in which an AP is executed using an object-oriented technology (hereinafter, referred to as an “execution environment”), it is prohibited to directly read and write data stored in a terminal device during an AP execution process by the following mechanism. Is done. First, in an execution environment of an AP using the object-oriented technology, an object is generated in which data and an essential procedure (hereinafter, referred to as a “method”) for operating the data are integrated. When executing an AP in this execution environment, it is only allowed to operate data contained in an object by calling a method contained in the object. Hereinafter, the relationship between the object and the AP will be described with reference to FIG.
[0007]
FIG. 10 is a diagram for explaining a relationship between an object and an AP. The object shown in FIG. 10 includes two character string data (hereinafter, referred to as “
[0008]
It should be noted that the relationship between the object and the caller AP shown in FIG. 10 is that when the data display method is called to display the
[0009]
The present applicant has conducted a prior art search, but there is no prior art document which discloses a technique for securing data security by using a completely encapsulated object. On the other hand, the present applicant has filed a patent application for a technique for executing a non-native AP while securing the security of important data stored in a terminal device by using the above-described execution environment and fully encapsulated objects. (Japanese Patent Application No. 2002-143608) has already been filed.
[0010]
[Problems to be solved by the invention]
By the way, when displaying data on the display unit during the execution of the AP, it is sometimes convenient to know the data length of the data (for example, the number of characters in the case of character string data). Generally, the maximum length of data that can be displayed as one line of data is predetermined on the display unit of the terminal device. If data longer than this maximum data length is to be displayed as it is, an error indicating that display is impossible is notified. May be done. If the data length of the data to be displayed on the display unit can be known in advance, such an error can be avoided by specifying an appropriate format when calling the above-described data display method. For example, when the data length of the data to be displayed on the display unit exceeds the maximum data length, the data display method may be called by specifying a format so that a line feed is performed every number of characters corresponding to the maximum data length. .
[0011]
However, as for the data included in the completely encapsulated object, the data itself cannot be obtained during the execution of the AP as described above, and therefore, the data length of the data cannot be calculated.
[0012]
Therefore, in order to solve this problem, a method of not transmitting the contained data itself to the caller AP but providing a method for notifying the data length of the data to the caller AP in the completely encapsulated object. Can be considered. When such a method is provided in the fully encapsulated object, the AP can know the data length of the data included in the completely encapsulated object by calling this method, and the convenience in handling the data is improved. improves.
[0013]
Incidentally, data generally has a unique data length corresponding to its attribute. For example, the data length of a telephone number of a mobile phone is 11 characters, and the data length of an account number of a deposit account (hereinafter, referred to as “deposit account number”) is 7 characters. As described above, since the data has a unique data length corresponding to the attribute, when the data length of the data included in the completely encapsulated object is obtained in the execution process of the AP, the data length is reduced. There is a possibility that the attribute of the data included in the completely encapsulated object may be estimated based on the attribute.
[0014]
However, even if the attribute of the data is estimated from the data length in the execution process of the AP, the data itself does not leak, so that the user is not directly disadvantaged. However, it is not preferable from the viewpoint of protecting the privacy of the user that the terminal device that executes the AP knows what attribute data is stored.
[0015]
The present invention has been made in view of the above problems, and has as its object to provide a technique for improving convenience when handling data requiring security and preventing the attribute of the data from being estimated. And
[0016]
[Means for Solving the Problems]
In order to solve the above-described problems, the present invention provides a storage unit for storing data, an execution unit for executing an application program, and the execution unit executing the application program storing data in the storage unit. Rejecting means for rejecting access; and identifying data to be accessed by the execution means among data stored in the storage means prior to execution of the application program by the execution means; Generating means for generating an object including a method essential to the operation of the application program and not having a method for transferring the data to the executing means executing the application program; and an object generated by the generating means. Notify the data length of the contained data Preparative, if requested by the execution means executing the application program, to provide a terminal device and a notifying means for notifying by Yuraga the data length.
[0017]
According to another aspect of the present invention, there is provided a computer device, comprising: a storage unit configured to store data; an execution unit configured to execute an application program; and the execution unit configured to execute the application program. Rejecting means for refusing to access data stored in the storage means, and identifying data to be accessed by the execution means among data stored in the storage means, prior to execution of the application program by the execution means. Generating means for generating an object including the data and a method essential for the operation of the data, wherein the generating means does not have a method for passing the data to the executing means executing the application program; and Contained in the object created by the means A program for realizing a notifying unit for notifying the data length of data when the execution unit executing the application program requests the data length to be changed, and a computer device readable And a recording medium on which the program is recorded.
[0018]
With the use of such a terminal device, a program and a recording medium, direct access to data stored in the terminal device is prohibited during the execution process of the AP, and an object including the data, An object is created that has no method to notify the data to the caller. Then, in the process of executing the AP, when it is requested to notify the data length of the data included in this object, the shaked data length is notified.
[0019]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
[0020]
[A. Constitution]
(1: Configuration of communication system)
FIG. 1 is a diagram illustrating a configuration example of a communication system according to an embodiment of the present invention. As shown in FIG. 1, this communication system includes a
[0021]
The
[0022]
The
[0023]
The mobile
[0024]
The
[0025]
The
[0026]
(2: Configuration of Terminal Device 60)
Next, the configuration of the
[0027]
The
[0028]
The
[0029]
The
[0030]
The
[0031]
The
[0032]
Here, the importance table 263a will be described with reference to FIG. As shown in FIG. 3, information indicating the importance of the data (hereinafter, simply referred to as “importance”) is stored in the importance table 263a for each data stored in the
[0033]
Next, the
[0034]
(3: Java execution environment)
Next, a Java execution environment for executing the downloaded Java AP will be described with reference to FIG. FIG. 4 is a diagram for explaining a Java execution environment in the
[0035]
Here, KVM is a kind of JVM and is designed for small electronic devices such as mobile phones and PDAs. The JVM is a program for interpreting a program constituted by Java bytecode such as JavaAP into a machine language code which can be interpreted by the
[0036]
The original Java extension profile is a class library for providing a function specialized for a mobile phone based on the CLDC class library. The original Java extension profile includes, for example, a user interface API (Application Program Interface), a networking API, a scratchpad API, a completely encapsulated API, an incompletely encapsulated API, and the like.
[0037]
The user interface API is an API for supporting the user interface function of the
[0038]
The above-described data display method is included in the completely encapsulated object generated by the
[0039]
On the other hand, an incompletely encapsulated object generated by the
[0040]
Although not shown in detail, the
[0041]
JAM (Java Application Manager) is software for managing JavaAP downloaded to the
[0042]
The function of managing the execution of the Java AP is a function of activating or forcibly terminating the Java AP, and limiting the resources that can be accessed by the
[0043]
Next, management of objects performed by the
[0044]
[B. motion]
Next, the operation of the present embodiment will be described.
[0045]
(1: Object generation processing)
Next, the object generation processing executed by the
[0046]
As shown in FIG. 5, first, the
[0047]
If the determination result of step SA2 is “Yes” (that is, if it is a native AP), the object generation process ends and the AP is executed. That is, if the AP to be executed is a native AP, no object is generated. The reason is that it is confirmed that the native AP does not perform a disadvantageous operation for the user, so that it is not necessary to limit the resources accessed by the
[0048]
On the other hand, if the determination result in step SA2 is “No” (that is, if it is a non-native AP), the content of the non-native AP (for example, downloaded Java AP) is analyzed and stored in the
[0049]
Next, with reference to the importance table 263a (FIG. 3), the
[0050]
Then, the
[0051]
When a plurality of pieces of data used by the Java AP are specified in step SA3, the
[0052]
(2: Data length acquisition processing)
Next, a description will be given of a data length acquisition process in which the
[0053]
FIG. 6 shows data obtained by the
[0054]
Next, the
[0055]
Next, the
[0056]
Next,
[0057]
As described above, the
[0058]
[C. Modification]
Although the embodiments of the present invention have been described above, the present invention is not limited to the embodiments, and various modifications can be made within the scope of the technical idea. Note that, for example, the following modifications can be considered.
[0059]
(Modification 1)
In the above-described embodiment, a case where a value larger than the actual data length is notified when the data length of the data included in the completely encapsulated object is notified to the calling AP using the data length notification method will be described. However, a value smaller than the actual data length may be notified. Specifically, in step SB5 of the data length acquisition process described above, the
[0060]
In the above-described embodiment, a case has been described in which the fluctuation is calculated using the pseudo-random number calculated using the current time acquired by the
[0061]
For example, the data length to be notified to the AP (hereinafter, referred to as “notification data length”) is stored in the
[0062]
(Modification 2)
In the above-described embodiment, the telephone number of the user's mobile phone and the bank account number are exemplified as important data for which security should be ensured. However, the data to which the present invention is applied is not limited to the telephone number of the mobile phone or the account number of the bank, but may be a card number of a credit card or a personal identification number. In short, it is sufficient that the personal information is handled in the execution process of the AP and is data having a unique data length.
[0063]
(Modification 3)
In the above-described embodiment, the case where the number of characters of data is used as the data length has been described. However, the data length is not limited to the number of characters, but may be the number of bytes of the data or the number of pixels required to display the data on the
[0064]
(Modification 4)
In the above-described embodiment, a case has been described in which a completely encapsulated object and an incompletely encapsulated object are used as objects that handle data stored in the
[0065]
In the above-described embodiment, the importance of the data stored in the
[0066]
(Modification 5)
In the above-described embodiment, a case in which only the data stored in the
[0067]
(Modification 6)
In the above-described embodiment, a case has been described in which only data stored in the
[0068]
(Modification 7)
In the above-described embodiment, the case where the object generated in the object generation processing is stored in the
[0069]
For example, as shown in FIG. 7, an
[0070]
Further, in the above-described embodiment, a case has been described in which an object including data used by the Java AP is generated prior to the execution of the Java AP. However, in the execution process of the Java AP, the object is generated each time data is used. An object including data may be generated.
[0071]
(Modification 8)
In the above-described embodiment, the Java AP downloaded via the Internet has been described as an example of the non-native AP. However, the non-native AP installed in the
[0072]
It should be noted that even a Java AP downloaded to the
[0073]
(Modification 9)
In the above-described embodiment, a case has been described in which the present invention is applied to the
[0074]
For example, as shown in FIG. 8, a configuration having a MIDP (Mobile Information Device Profile) instead of the original Java extension profile may be used. In addition, a JVM is provided in place of the KVM, a CDC (Connected Device Configuration) class library is provided in place of the CLDC class library, and a liquid crystal phone profile, a TV profile, a car profile, and the like are replaced with the original Java extended profile. A configuration having a navigation profile or the like may be used. Furthermore, a Java execution environment having HotSpot and compliant with J2SE (Java2 Standard Edition) may be used, or a Java execution environment having HotSpot and compliant with J2EE (Java2 Enterprise Edition) may be used. Note that J2SE is a standard for a Java execution environment defined for a PC, and J2EE is a standard for a Java execution environment defined for a server computer.
[0075]
Further, as is apparent from the above-described modified examples of the Java execution environment, the present invention can be applied to various electronic devices such as a PHS (Personal Handyphone System: registered trademark) terminal, a PDA, a car navigation device, and a PC. is there.
[0076]
Further, the terminal device according to the present invention is not limited to the
[0077]
(Modification 10)
In the embodiment described above, the case where the Java execution environment is used as the execution environment based on the object-oriented technology has been described. However, the present invention can be applied to an execution environment based on another object-oriented technology. However, the present invention has a particularly remarkable effect when applied to a Java runtime environment. Hereinafter, the reason will be described.
[0078]
In an execution environment based on object-oriented technology, data accessed during the execution of an AP is encapsulated in an object. This encapsulation includes encapsulation at the programming language level and encapsulation at the execution code (machine language or bytecode) level. The former is realized by not compiling source code that directly reads and writes data contained in an object into executable code. On the other hand, the latter is realized by not executing an execution code that directly reads and writes data included in an object. For example, encapsulation based on the programming language C ++ is encapsulation at the programming language level, and encapsulation based on Java is encapsulation at the executable code level.
[0079]
More specifically, in encapsulation based on C ++, encapsulation is realized by declaring all fields for storing data in an object as private fields. The private field is a field for storing data for which direct reading / writing is prohibited. When such an object is generated, the source code that directly reads and writes the data stored in the private field in the object is not compiled. Nor. However, this encapsulation is only guaranteed by the compiler; for example, a malicious third party can illegally obtain the data in the object by modifying the compiler. Further, without modifying the compiler, it is not impossible for a malicious third party to generate execution code that illegally reads data in the object by means such as hand assembly. In addition, if the memory is directly accessed using the pointer, the data in the object can be obtained.
[0080]
In the case of Java, on the other hand, a field declared as a private field is compiled into Java bytecode indicating that the field has a private attribute. When the KVM expands the class file to the
[0081]
As described above, even if the encapsulation at the programming language level is complete, if the encapsulation at the executable code level is not complete, it cannot be said that the data has been completely encapsulated. In Java, it is possible to achieve complete encapsulation not only at the programming language level but also at the executable code level. For this reason, the Java execution environment is most suitable as the execution environment to which the present invention is applied.
[0082]
(Modification 11)
In the above-described embodiment, a case has been described in which software for realizing functions unique to the terminal device according to the present invention, such as a completely encapsulated API, an incompletely encapsulated API, and a JAM, is stored in the
[0083]
【The invention's effect】
ADVANTAGE OF THE INVENTION According to this invention, while handling the data which needs to ensure security, there exists an effect that the attribute of the data is avoided being estimated while improving the convenience.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration example of a communication system having a
FIG. 2 is a block diagram showing a configuration example of the
FIG. 3 is a diagram showing an example of an importance table 263a stored in the
FIG. 4 is a diagram showing a Java execution environment implemented in the
FIG. 5 is a flowchart showing a flow of an object generation process executed by the
FIG. 6 is a flowchart showing a flow of a data length acquisition process executed by the
FIG. 7 is a diagram illustrating an example of a
FIG. 8 is a diagram illustrating an example of a Java execution environment according to a ninth modification.
FIG. 9 is a diagram illustrating a configuration example of a communication system according to a modification 9;
FIG. 10 is a diagram for explaining a relationship between an object and a program according to the object-oriented technology.
[Explanation of symbols]
Claims (10)
アプリケーションプログラムを実行するための実行手段と、
アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、
前記実行手段によるアプリケーションプログラムの実行に先立って、前記記憶手段に記憶されているデータのうち前記実行手段によりアクセスされるデータを特定し、該データと該データの操作に必須のメソッドとを内包するオブジェクトであって、アプリケーションプログラムを実行中の前記実行手段へ該データを引き渡すメソッドを有しないオブジェクトを生成する生成手段と、
前記生成手段により生成されたオブジェクトに内包されているデータのデータ長を通知することを、アプリケーションプログラムを実行中の前記実行手段から要求された場合に、該データ長を揺らがせて通知する通知手段と
を有する端末装置。Storage means for storing data;
An execution means for executing the application program;
Rejection means for rejecting the execution means executing the application program from accessing data stored in the storage means;
Prior to execution of an application program by the execution means, data to be accessed by the execution means among data stored in the storage means is specified, and the data and a method essential for operation of the data are included. Generating means for generating an object which does not have a method for passing the data to the executing means executing the application program;
Notifying means for fluctuating and notifying the data length of the data included in the object generated by the generating means, when requested by the executing means executing the application program, A terminal device comprising:
ユーザにとって不利益な動作を行わないことが確認されていないプログラムであると前記判定手段により判定された場合にのみ、該アプリケーションプログラムの実行に先立って、前記記憶手段に記憶されているデータのうち該アプリケーションプログラムの実行過程でアクセスされるデータを内包した前記オブジェクトを前記生成手段により生成する一方、該アプリケーションプログラムの実行過程で該データが直接アクセスされることを前記拒絶手段により拒絶し、該アプリケーションプログラムを前記実行手段により実行する
ことを特徴とする請求項1に記載の端末装置。A determination unit that determines whether the application program instructed to be executed is a program that has been confirmed not to perform a disadvantageous operation for the user,
Only when it is determined by the determination unit that the program has not been confirmed not to perform a disadvantageous operation for the user, prior to execution of the application program, the data stored in the storage unit The object including data to be accessed during the execution of the application program is generated by the generation unit, and the object is prevented from being directly accessed during the execution of the application program by the rejection unit. 2. The terminal device according to claim 1, wherein the execution unit executes the operation.
前記実行手段は、前記取得手段により取得されたアプリケーションプログラムを実行する
ことを特徴とする請求項1に記載の端末装置。An acquisition unit for acquiring an application program via a communication network,
The terminal device according to claim 1, wherein the execution unit executes the application program acquired by the acquisition unit.
ことを特徴とする請求項1に記載の端末装置。2. The terminal device according to claim 1, wherein the execution unit executes an application program configured by Java bytecode.
ことを特徴とする請求項1に記載の端末装置。2. The terminal device according to claim 1, further comprising an object storage unit for storing the object generated by the generation unit.
ことを特徴とする請求項1に記載の端末装置。2. The terminal device according to claim 1, wherein the generation unit causes the object to include partial data that is a part of data stored in the storage unit. 3.
前記通知手段は、重要度が高いほど揺らぎの幅を大きくしてデータ長を通知する
ことを特徴とする請求項1に記載の端末装置。The storage unit stores the data and the importance of the data in association with each other,
The terminal device according to claim 1, wherein the notifying unit notifies the data length by increasing a fluctuation width as the importance is higher.
前記生成手段は、前記入力手段により入力されたデータについても前記オブジェクトに内包させる
ことを特徴とする請求項1に記載の端末装置。An input unit for allowing a user to input data operated by the execution unit during execution of an application program,
2. The terminal device according to claim 1, wherein the generation unit causes the object input also to include data input by the input unit. 3.
データを記憶する記憶手段と、
アプリケーションプログラムを実行するための実行手段と、
アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、
前記実行手段によるアプリケーションプログラムの実行に先立って、前記記憶手段に記憶されているデータのうち前記実行手段によりアクセスされるデータを特定し、該データと該データの操作に必須のメソッドとを内包するオブジェクトであって、アプリケーションプログラムを実行中の前記実行手段へ該データを引き渡すメソッドを有しないオブジェクトを生成する生成手段と、
前記生成手段により生成されたオブジェクトに内包されているデータのデータ長を通知することを、アプリケーションプログラムを実行中の前記実行手段から要求された場合に、該データ長を揺らがせて通知する通知手段と
を実現させるためのプログラム。Computer equipment,
Storage means for storing data;
An execution means for executing the application program;
Rejection means for rejecting the execution means executing the application program from accessing data stored in the storage means;
Prior to execution of an application program by the execution means, data to be accessed by the execution means among data stored in the storage means is specified, and the data and a method essential for operation of the data are included. Generating means for generating an object which does not have a method for passing the data to the executing means executing the application program;
Notifying means for fluctuating and notifying the data length of the data included in the object generated by the generating means, when requested by the executing means executing the application program, And a program to realize it.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002320953A JP4652660B2 (en) | 2002-11-05 | 2002-11-05 | Terminal device, program, and recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002320953A JP4652660B2 (en) | 2002-11-05 | 2002-11-05 | Terminal device, program, and recording medium |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004157643A true JP2004157643A (en) | 2004-06-03 |
JP4652660B2 JP4652660B2 (en) | 2011-03-16 |
Family
ID=32801644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002320953A Expired - Fee Related JP4652660B2 (en) | 2002-11-05 | 2002-11-05 | Terminal device, program, and recording medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4652660B2 (en) |
-
2002
- 2002-11-05 JP JP2002320953A patent/JP4652660B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP4652660B2 (en) | 2011-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8087078B2 (en) | Communication device | |
US7644444B2 (en) | Communication device, program and recording media | |
KR101409634B1 (en) | Methods and apparatus for content protection in a wireless network | |
CA2604445C (en) | A method and system for implementing customizable container services as component wireless applications | |
JP5037422B2 (en) | Image forming apparatus, access control method, and access control program | |
KR100883699B1 (en) | Execution of unverified programs in a wireless device operating environment | |
JP2005157657A (en) | Application data management method for portable terminal and portable terminal | |
US20070083378A1 (en) | Secure application programming interface | |
CN110045998B (en) | Method and device for loading dynamic library | |
US20030066059A1 (en) | Method for executing java application midlet using communication among java applications | |
ES2243914T3 (en) | INFORMATION AND PROGRAM PROCESSING DEVICE. | |
JP4652660B2 (en) | Terminal device, program, and recording medium | |
JP4680485B2 (en) | Terminal device, program, and recording medium | |
JP2004302516A (en) | Terminal device and program | |
JP6375235B2 (en) | Information processing apparatus, data delivery method and program for program | |
JP4612010B2 (en) | Data processing apparatus, program, and recording medium | |
JP4138591B2 (en) | Terminal device | |
KR20040102996A (en) | Graphic User Interface Providing System And Method Wireless Terminal Applications | |
JP5477425B2 (en) | Information processing apparatus, access control method, access control program, and recording medium | |
Zamani et al. | Android Basic Architecture including Operating System using their Application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080422 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080616 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080722 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080922 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090109 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090120 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20090220 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101119 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101216 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4652660 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131224 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |