JP2004157643A - Terminal device, program, and recording medium - Google Patents

Terminal device, program, and recording medium Download PDF

Info

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
Application number
JP2002320953A
Other languages
Japanese (ja)
Other versions
JP4652660B2 (en
Inventor
Masaru Kamiya
大 神谷
Kazuhiro Yamada
和宏 山田
Takashi Kondo
隆 近藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2002320953A priority Critical patent/JP4652660B2/en
Publication of JP2004157643A publication Critical patent/JP2004157643A/en
Application granted granted Critical
Publication of JP4652660B2 publication Critical patent/JP4652660B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide technology for disabling attributes of data whose security needs to be ensured to be estimated while improving the convenience in handling the data. <P>SOLUTION: A terminal device 60 which rejects direct access to data stored in itself in the execution stage of an AP is made to generate a completely capsulized object including the data and a method essential to handle the data. When the device is requested to report the length of the data included in the completely capsulized object in the execution stage of the AP, the device is made to report a value obtained, for example, by adding an extra value to the data length. <P>COPYRIGHT: (C)2004,JPO

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 “character string 1” and “character string 2”) and two methods. The data notification method in FIG. 10 is a method for transferring the data specified by the AP that has called this method (hereinafter referred to as “calling AP”) to the calling AP. The data display method in FIG. 10 is a method for displaying data specified by the calling AP on a display unit of the terminal device in a format specified by the calling AP (for example, a line feed is performed every predetermined number of characters). is there. That is, the calling AP obtains the character string 1 or the character string 2 itself by calling the data notification method, or obtains the character string 1 or the character string 2 in the desired format by calling the data display method. It can be displayed on the display unit.
[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 character strings 1 and 2 on the display unit of the terminal device, the caller AP The point is that the data to be displayed is not acquired. That is, if the object is configured so as not to have the data notification method, the data included in this object will not be acquired by the calling AP. Hereinafter, an object having no data notification method is referred to as a “fully encapsulated object”, and an object having at least one data notification method is referred to as a “non-fully encapsulated object”. If important data stored in the terminal device is handled using the completely encapsulated object, the important data is not stolen during the execution of the AP, and the security of the important data is ensured.
[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 content server 10, the Internet 20, a gateway device 30, a mobile packet communication network 40, a base station 50, and a terminal device 60. Although FIG. 1 illustrates one content server 10 and one terminal device 60, there are actually a plurality of content servers 10 and a plurality of terminal devices 60.
[0021]
The content server 10 has a function of performing packet communication with the terminal device 60 via the Internet 20 and the mobile packet communication network 40. The content server 10 stores an AP to be provided to the terminal device 60 via the Internet 20. The AP is a program described in Java (registered trademark), which is one of the object-oriented computer languages, and is configured by Java bytecodes that can be executed in a Java execution environment. Hereinafter, such an AP is referred to as “Java AP”. The Java AP is a non-native AP provided to the terminal device 60 via the Internet 20.
[0022]
The gateway device 30 has a function of converting between a communication protocol in the Internet 20 and a communication protocol in the mobile packet communication network 40, and relays packet communication between the Internet 20 and the mobile packet communication network 40. It is.
[0023]
The mobile packet communication network 40 is connected to the gateway device 30 and the base station 50, and provides a packet communication service to the terminal device 60 accommodated in the base station 50. The communication system shown in FIG. 1 includes a mobile communication network (not shown) in addition to the mobile packet communication network 40. This mobile communication network provides a general mobile telephone call service to the terminal device 60.
[0024]
The base station 50 forms a radio cell having a fixed area (for example, a radius of 500 meters around the base station 50). The base station 50 accommodates a terminal device 60 located in a wireless cell formed by the base station 50, and performs wireless communication with the terminal device 60.
[0025]
The terminal device 60 is a mobile phone having a Java execution environment, and performs wireless communication with a base station 50 forming a wireless cell in which the terminal device is located. The terminal device 60 has a function of performing packet communication with the content server 10 via the mobile packet communication network 40 and the Internet 20, and can download the above-described JavaAP from the content server 10. In the present embodiment, it is assumed that the Java AP has already been downloaded to the terminal device 60.
[0026]
(2: Configuration of Terminal Device 60)
Next, the configuration of the terminal device 60 will be described with reference to FIG. As shown in FIG. 2, the terminal device 60 includes a CPU (Central Processing Unit) 210, an operation unit 220, a display unit 230, a wireless communication unit 240, a clock unit 250, a storage unit 260, A bus 270 for mediating data transfer between elements.
[0027]
The CPU 210 controls each unit of the terminal device 60 by executing software stored in the storage unit 260. The operation unit 220 includes a plurality of operators for allowing the user to input numbers, characters, operation instructions, and the like, and passes information corresponding to the operation contents of these operators to the CPU 210. The display unit 230 is, for example, a liquid crystal display and its driving circuit, and displays an image according to the information passed from the CPU 210. The display unit 230 stores in advance a maximum data length that can be displayed as one line of data, and when the CPU 210 requests display of data having a length exceeding the maximum data length, the display unit 230 indicates that the data cannot be displayed. An error is notified to the CPU 210.
[0028]
The wireless communication unit 240 includes an antenna (not shown) and performs wireless communication with the base station 50. The wireless communication unit 240 receives information transmitted from the base station 50, passes the received information to the CPU 210, and sends out the information passed from the CPU 210 to the base station 50. The clock unit 250 has a clock function and supplies data indicating the current time to the CPU 210.
[0029]
The storage unit 260 includes a RAM (Random Access Memory) 261, a ROM (Read Only Memory) 262, and a nonvolatile memory 263. The RAM 261 is used as a work area by the CPU 210 executing various software.
[0030]
The ROM 262 stores OS software for implementing an operating system (hereinafter, referred to as “OS”), software for constructing a Java execution environment, browser software, and a native AP. This native AP contains identification information indicating that it is a native AP. This native AP is directly executed by the CPU 210 under the control of the OS.
[0031]
The nonvolatile memory 263 is, for example, an EEPROM (Electrically Erasable Programmable Read Only Memory), and stores a Java AP downloaded from the content server 10. The non-volatile memory 263 stores personal information of the user and data other than the personal information. Examples of personal information include a user's telephone number and a bank account number. The data other than the personal information includes, for example, image data created by a user (hereinafter, referred to as “self-created image data”). Further, the nonvolatile memory 263 stores an importance table 263a and a JAR storage 263b.
[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 nonvolatile memory 263. ing. As shown in FIG. 3, the importance is data having a value of either “1” or “0”. If the value of the importance is “1”, “the importance is high” In the case where the value of the importance is “0”, it means “the importance is low”. For example, FIG. 3 illustrates that the telephone number and the deposit account number of the user have high importance, while the self-made image data has low importance.
[0033]
Next, the JAR storage 263b will be described. The JavaAP downloaded to the terminal device 60 includes a JavaAP main program (a program described in Java bytecode), an image file storing image data used when executing the program, and a voice storing audio data. A JAR (Java Archive) file in which so-called “resources” such as files are put together. The JAR storage 263b is for storing the JAR file.
[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 terminal device 60. As shown in this figure, the terminal device 60 incorporates software for realizing a Java execution environment compliant with J2ME (Java 2 platform Micro Edition). Here, J2ME is a standard of a Java execution environment defined for small electronic devices. The software incorporated in the terminal device 60 includes a KVM, a CLDC (Connected Limited Device Configuration) class library, and an original Java extension profile.
[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 CPU 210 and causing the CPU 210 to execute the program. The CLDC class library is a class library for providing general-purpose functions for small electronic devices such as mobile phones and PDAs.
[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 terminal device 60. The networking API is an API for accessing a network resource specified by a URL (Uniform Resource Locator). The scratch pad API is an API for supporting writing and reading with respect to the scratch pad. Although not shown in detail, the scratch pad is a storage area provided in the nonvolatile memory 263. Data generated in accordance with the execution of Java AP is stored in the scratch pad. Further, the fully encapsulated API is an API for generating a completely encapsulated object, and the non-completely encapsulated API is an API for generating a non-completely encapsulated object.
[0038]
The above-described data display method is included in the completely encapsulated object generated by the CPU 210 executing the completely encapsulated API. Further, the completely encapsulated object includes a method (hereinafter, referred to as a “data notification method”) for fluctuating and notifying the data length of the included data. Specifically, in this embodiment, when this data notification method is called, a value calculated based on a certain algorithm is added to the actual data length of the data included in the completely encapsulated object. Then, the difference is notified to the calling source (hereinafter, the difference between the data length notified by the data notification method and the actual data length is referred to as “fluctuation”).
[0039]
On the other hand, an incompletely encapsulated object generated by the CPU 210 executing the incompletely encapsulated API includes the above-described data notification method. In the execution process of the Java AP, the CPU 210 can acquire the data itself included in the incompletely encapsulated object by calling and executing this method.
[0040]
Although not shown in detail, the terminal device 60 has a manufacturer-specific extension library in addition to the CLDC class library and the original Java extension profile described above. The manufacturer's own extended library is a class library for the manufacturer of the terminal device 60 to provide its own functions.
[0041]
JAM (Java Application Manager) is software for managing JavaAP downloaded to the terminal device 60 and managing completely encapsulated objects and incompletely encapsulated objects under the control of the OS. First, a description will be given of Java AP management performed by the CPU 210 executing JAM. In order to manage the JavaAP, the CPU 210 installs, updates, or deletes the JavaAP according to the JAM, a function of displaying a list of JavaAP names stored in the nonvolatile memory 263, and a function of managing the execution of the JavaAP. Run.
[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 CPU 210 during the execution of the Java AP. With this function, the resources that can be directly accessed by the CPU 210 executing the Java AP are limited to the content server 10 from which the Java AP is downloaded and the JAR storage 263b and the RAM 261 provided exclusively for the Java AP. That is, the CPU 210 executing the Java AP cannot directly access the user's telephone number, deposit account number, and the like stored in the nonvolatile memory 263. These data can be accessed by the CPU 210 executing Java AP by calling a method included in an object including the data. The resource that can be accessed by the CPU 210 executing the Java AP is limited because the Java AP is a non-native AP.
[0043]
Next, management of objects performed by the CPU 210 according to JAM will be described. Prior to execution of the Java AP, the CPU 210 generates a completely encapsulated object or a non-completely encapsulated object including data used by the Java AP according to the JAM, and stores the generated object in the RAM 261. This is because an object including data used by the Java AP is stored in a resource accessible by the Java AP in advance.
[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 CPU 210 in the terminal device 60 will be described with reference to FIG. This object generation process is a process executed by the CPU 210 according to the JAM as described above. For example, it is executed when an AP to be executed is designated by an operation input from a list of APs displayed on the screen. Note that the form of instructing execution of the AP is not limited to the form by operation input. For example, there is a case where the execution is instructed by the CPU 210 which is executing another AP, and a case where the execution of the AP is instructed from outside the terminal device 60 by using e-mail or the like.
[0046]
As shown in FIG. 5, first, the CPU 210 of the terminal device 60 specifies an AP instructed to execute (step SA1). Next, the CPU 210 determines whether the AP identified in step SA1 is a native AP or a non-native AP (step SA2). As described above, the native AP is provided with identification information indicating that the native AP is a native AP. Therefore, the CPU 210 can determine whether the AP is a native AP or a non-native AP by determining whether or not the identification information is given to the AP.
[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 CPU 210 during the execution of the AP.
[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 nonvolatile memory 263. The data accessed during the execution process of the Java AP is specified from the data (step SA3). When specifying data to be accessed in the course of JavaAP execution, the data stored in the JAR file of the JavaAP is excluded from the specification target. This is because the data stored in the JAR file is data prepared by the provider of the Java AP as data necessary for executing the Java AP.
[0049]
Next, with reference to the importance table 263a (FIG. 3), the CPU 210 determines whether to include the data specified in step SA3 in the completely encapsulated object or in the non-completely encapsulated object (step SA4). ). Specifically, when the value of the importance associated with the data specified in step SA3 is “0”, the CPU 210 determines that the data is included in the non-completely encapsulated object. If the value of the importance is "1", the data is included in the completely encapsulated object.
[0050]
Then, the CPU 210 generates a completely encapsulated object or a non-completely encapsulated object including the data specified in step SA3 according to the determination result in step SA4, and stores the object in the RAM 261 (step SA5). The object generation processing ends.
[0051]
When a plurality of pieces of data used by the Java AP are specified in step SA3, the CPU 210 generates, for each piece of specified data, a completely encapsulated object or a non-completely encapsulated object for the data and stores the generated object in the RAM 261. Store. That is, the CPU 210 repeatedly performs the processing of step SA4 and step SA5 for each specified data. Then, after ending the object generation processing, the CPU 210 activates a Java AP specified as an AP to be executed, and starts processing based on the Java AP.
[0052]
(2: Data length acquisition processing)
Next, a description will be given of a data length acquisition process in which the CPU 210 acquires the data length of the data included in the object generated in the object generation process in the Java AP execution process. In addition, for the data included in the incompletely encapsulated object, it is possible to obtain the data itself and calculate the data length by using the above-described data notification method. Since the relationship is sparse, a description thereof will be omitted. Here, only the process of acquiring the data length of the data included in the completely encapsulated object will be described.
[0053]
FIG. 6 shows data obtained by the CPU 210 calling and executing the data length notifying method included in the fully encapsulated object in the execution process of the Java AP to obtain the data length of the data included in the fully encapsulated object. It is a flowchart which shows the flow of a length acquisition process. As shown in the figure, the CPU 210 first obtains data indicating the current time from the clock unit 250 (step SB1).
[0054]
Next, the CPU 210 generates one pseudo-random number according to a pseudo-random number generation algorithm such as a mixed congruential method using the data indicating the current time acquired in step SB1 as a seed (step SB2). The pseudorandom number generation algorithm executed in step SB2 is not limited to the mixed congruential method, but may be another pseudorandom number generation algorithm.
[0055]
Next, the CPU 210 generates a pseudorandom number within a predetermined range (for example, a range of 0 or more and less than 3) using the pseudorandom number generated in step SB2 as a seed (step SB3). The reason why the pseudorandom number is further generated using the pseudorandom number generated in step SB2 as a seed is to prevent a pseudorandom number generation algorithm from being statistically estimated from the generated pseudorandom number.
[0056]
Next, CPU 210 calculates the fluctuation when notifying the data length to the caller based on the value of the pseudo-random number generated in step SB3 (step SB4). For example, when the value of the pseudo-random number generated in step SB3 is a value equal to or more than 0 and less than 1, CPU 210 sets the fluctuation to be notified to the caller to 1 and a value less than 1 and less than 2 If the fluctuation is 2 and the value is 2 or more and less than 3, the fluctuation is set to 3. Then, CPU 210 notifies the calling source of the data length obtained by adding the fluctuation calculated in step SB4 (step SB5), and ends the data length obtaining process.
[0057]
As described above, the CPU 210 can acquire the value fluctuated as the data length of the data included in the completely encapsulated object by calling and executing the data length notifying method during the execution of the Java AP. Since the data length obtained in this way includes fluctuation, the attribute of the data is not estimated from the obtained data length. Further, when the CPU 210 calls the data display method to display the data included in the completely encapsulated object on the display unit 230, the CPU 210 may acquire the data length by calling the data length notification method in advance. it can. If the acquired data length exceeds the above-described maximum data length, the format is appropriately specified when calling the data display method (for example, a line feed is performed for each number of characters corresponding to the maximum data length). Thus, it is possible to prevent an error indicating that display is not possible.
[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 CPU 210 may subtract the value calculated in step SB4 from the actual data length and notify the calling source AP. However, in such a case, the notified data length is compared with the maximum data length described above, and for data that actually exceeds the maximum data length, the data length of the data exceeds the maximum data length. There is a problem that it is determined that there is none. In order to solve such a problem, when notifying a value smaller than the actual data length, the maximum value of the fluctuation (in the present modification, “3”, hereinafter, the value of the fluctuation It is conceivable to notify the caller AP of the maximum value (referred to as “fluctuation width”). Then, if the maximum data length is compared with the value obtained by adding the fluctuation width to the notified data length, the data length of the data that actually exceeds the maximum data length becomes the maximum data length. The determination that the length is not exceeded is avoided. In the above-described embodiments and the like, a case where a value larger than the actual data length (a value of +1 to +3 with respect to the actual data length) is described. Also, a case where a small value (a value of -3 to -1 with respect to the actual data length) is notified has been described. However, it is needless to say that the data length notified to the calling source is not always limited to be always larger than the actual data length or to be always smaller than the actual data length. A value of -3 to +3 may be notified for the actual data length, and a value of -1 to +3 or a value of -3 to +1 may be notified for the actual data length. good. For example, when notifying the actual data length with a value of -3 to +3, a real-type pseudorandom number greater than -4 and less than +4 is generated in step SB3 in FIG. Then, the integer part of the pseudorandom number is obtained as the value of the fluctuation (FIG. 6: step SB4), and the fluctuation is calculated by adding the fluctuation to the actual data length. Further, in the above-described embodiment and the present modified example, the case where the fluctuation width is “3” has been described. However, it is needless to say that how large the fluctuation width is is a category of the design matter and is not limited to “3”.
[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 clock unit 250 as a seed. However, the mode of realizing the fluctuation of the data length notified to the calling AP is not limited to the mode using pseudorandom numbers.
[0061]
For example, the data length to be notified to the AP (hereinafter, referred to as “notification data length”) is stored in the nonvolatile memory 263 in association with each data, and when the data length notification method is called, the notification is performed. The data length may be notified to the calling AP. Specifically, for data having an actual data length of 10 or more characters and less than 15 characters, 15 is stored in the non-volatile memory 263 in association with the value of the notification data length, and the data length notification method is used. It is possible to realize this by notifying the caller AP of this notification data length by calling. In this manner, in a mode in which the notification data length is stored in the nonvolatile memory 263 in association with each data, the pseudo-random number does not need to be generated, so that the clock unit 250 becomes unnecessary.
[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 display unit 230. This is because if the number of bytes and pixels of data is known, the number of characters of the data is calculated from the number of bytes and pixels per character. The number of pixels is a minimum unit that can be displayed or not on a liquid crystal display or the like, or whose color and brightness can be controlled.
[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 non-volatile memory 263 of the terminal device 60. May be used. That is, the data stored in the nonvolatile memory 263 of the terminal device 60 may be always handled as a completely encapsulated object. In this case, the above-mentioned importance table 263a becomes unnecessary. In the above-described embodiment, the importance table 263a is used. However, the importance table 263a is used if importance is given to data such as a telephone number, a deposit account number, and self-made image data. No need.
[0065]
In the above-described embodiment, the importance of the data stored in the terminal device 60 is distinguished using two values of “0” (low importance) or “1” (high importance), The case has been described where it is determined whether the object handling the data is a completely encapsulated object or an incompletely encapsulated object based on the value of the importance. However, for example, a value from “0 (importance“ low ”)” to “5 (importance“ high ”) is assigned to each data as a value indicating the importance of the data. Data having a value of “0” to “2” may be handled by a non-completely encapsulated object, and data having a value of importance of “3” to “5” may be handled by a completely encapsulated object. When notifying the data length of data contained in a fully encapsulated object, the higher the importance, the smaller the fluctuation width big The notification may be made. In this case, it is more difficult to know the actual data length as the fluctuation width is larger, so that it is more difficult to estimate the attribute of the data from the data length as the importance becomes higher.
[0066]
(Modification 5)
In the above-described embodiment, a case in which only the data stored in the non-volatile memory 263 of the terminal device 60 and having high importance among the data accessed in the execution process of the Java AP are handled by the completely encapsulated object. explained. However, data input by the user during the execution of the Java AP may be handled by the completely encapsulated object. Further, when the user inputs data in the process of executing the Java AP, the data may be input in association with the importance of the data, and data having a high importance may be handled by a completely encapsulated object. As described above, the reason why data input by the user during the execution of the Java AP is handled by the completely encapsulated object is that such data may include personal information of the user.
[0067]
(Modification 6)
In the above-described embodiment, a case has been described in which only data stored in the nonvolatile memory 263 is handled by a completely encapsulated object. However, it is assumed that partial data including a part of such data is also handled by a completely encapsulated object. Is also good. This is because such partial data may also include personal information of the user.
[0068]
(Modification 7)
In the above-described embodiment, the case where the object generated in the object generation processing is stored in the RAM 261 has been described. However, the storage destination of the object is not limited to the RAM 261 and may be the nonvolatile memory 263.
[0069]
For example, as shown in FIG. 7, an individual scratch pad 263c and a common scratch pad 263d may be provided in the nonvolatile memory 263, and the generated object may be stored in the individual scratch pad 263c and the common scratch pad 263d. The individual scratch pad is a storage area for storing data used by the Java AP for each Java AP, and the common scratch pad is a storage area for storing data shared by a plurality of Java APs. By storing the generated object in the non-volatile memory 263 in this manner, an effect is obtained that the once generated object can be reused. Further, when the storage destination of the generated object is the common scratch pad 263d, there is an effect that a plurality of Java APs can share the object.
[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 terminal device 60 is not limited to the downloaded Java AP, but is a Java AP recorded on a computer-readable recording medium such as a CD-ROM and distributed. Is also good.
[0072]
It should be noted that even a Java AP downloaded to the terminal device 60 or a Java AP recorded on a recording medium and distributed, for example, a communication operator operating the mobile packet communication network 40 or a fairness such as CA (Certificate Authority). If the content is examined by a third party and the AP is found to meet certain operating standards (hereinafter referred to as “trusted AP”), the resources that can be accessed are limited in the same way as a native AP do not have to. For example, if such a trusted AP includes the same identification information as the identification information included in the native AP, the CPU 210 can control the trusted AP without limiting the resources that can be accessed similarly to the native AP. Can be performed. Further, in the above-described embodiment, the case where the native AP is directly executed by the CPU 210 executing the OS has been described. However, it is of course possible that the native AP is also executed by the CPU 210 executing JAM.
[0073]
(Modification 9)
In the above-described embodiment, a case has been described in which the present invention is applied to the terminal device 60 in which the J2ME including the KVM, the CLDC class library, and the original Java extension profile is incorporated, as indicated by hatching in FIG. However, the Java execution environment to which the present invention can be applied is not limited to the one conforming to J2ME. The terminal device to which the present invention can be applied is not limited to a mobile phone.
[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 terminal device 60 accommodated in the mobile packet communication network 40. For example, in a communication system as shown in FIG. 9, the present invention can be applied to PCs 80A to 80C provided in the LAN 70.
[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 RAM 261 or the like, the private attribute of the field is retained. Therefore, even if the compiler is modified to generate a bytecode that illegally reads the data stored in the private field in the object, the KVM detects this and cannot obtain the data in the object. . Also, since Java does not support pointers, it is not possible to directly access memory using pointers and obtain data in objects.
[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 terminal device 60 in advance. . However, the software is recorded on a computer-readable recording medium, and the software is installed on a general computer using the recording medium. It is also possible to give the function of.
[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 terminal device 60 according to the present invention.
FIG. 2 is a block diagram showing a configuration example of the terminal device 60.
FIG. 3 is a diagram showing an example of an importance table 263a stored in the terminal device 60.
FIG. 4 is a diagram showing a Java execution environment implemented in the terminal device 60.
FIG. 5 is a flowchart showing a flow of an object generation process executed by the terminal device 60.
FIG. 6 is a flowchart showing a flow of a data length acquisition process executed by the terminal device 60.
FIG. 7 is a diagram illustrating an example of a nonvolatile memory 263 of a terminal device 60 according to Modification 7.
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]
Reference Signs List 10 content server, 20 Internet, 30 gateway device, 40 mobile packet communication network, 50 base station, 60 terminal device, 210 CPU, 220 operating unit, 230 display unit, 240 wireless communication unit .., 250... Clock unit, 260... Storage unit, 262... ROM, 261... RAM, 263... Non-volatile memory, 263 a.

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.
前記実行手段は、Javaバイトコードで構成されているアプリケーションプログラムを実行する
ことを特徴とする請求項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.
コンピュータ装置読み取り可能な記録媒体であって、請求項9に記載のプログラムを記録した記録媒体。A recording medium readable by a computer device, the recording medium recording the program according to claim 9.
JP2002320953A 2002-11-05 2002-11-05 Terminal device, program, and recording medium Expired - Fee Related JP4652660B2 (en)

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)

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