JP2008521111A - 電子デバイス内の安全なプログラム解釈方法 - Google Patents

電子デバイス内の安全なプログラム解釈方法 Download PDF

Info

Publication number
JP2008521111A
JP2008521111A JP2007542018A JP2007542018A JP2008521111A JP 2008521111 A JP2008521111 A JP 2008521111A JP 2007542018 A JP2007542018 A JP 2007542018A JP 2007542018 A JP2007542018 A JP 2007542018A JP 2008521111 A JP2008521111 A JP 2008521111A
Authority
JP
Japan
Prior art keywords
electronic device
program
interpreted
stub executable
capability
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
JP2007542018A
Other languages
English (en)
Other versions
JP2008521111A5 (ja
JP4638505B2 (ja
Inventor
タルッカラ ラウリ
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.)
Nokia Oyj
Original Assignee
Nokia Oyj
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
Priority claimed from FI20041517A external-priority patent/FI20041517A0/fi
Application filed by Nokia Oyj filed Critical Nokia Oyj
Publication of JP2008521111A publication Critical patent/JP2008521111A/ja
Publication of JP2008521111A5 publication Critical patent/JP2008521111A5/ja
Application granted granted Critical
Publication of JP4638505B2 publication Critical patent/JP4638505B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

電子デバイス内の安全なプログラム解釈方法に関する。解釈対象プログラムがロードされ、スタブ実行可能ファイルがプロトタイプ・スタブ実行可能ファイルを使用して形成される。スタブ実行可能ファイルは、解釈対象プログラムと関連付けられる。また、少なくとも1つの第2のケイパビリティが、解釈対象プログラムに割り当てられ、スタブ実行可能ファイルにも割り当てられる。スタブ実行可能ファイルは、共有インタープリタ・ライブラリ内の少なくとも1つの関数を呼び出して解釈対象プログラムを解釈する。インタープリタ・エンジンは、解釈対象プログラムが外部の解釈対象プログラム・コード・セクションを参照しているかどうかをチェックする。インタープリタ・エンジンは、外部の解釈対象プログラム・コード・セクションに関する少なくとも1つの第2のケイパビリティを推論する。インタープリタ・エンジンは、少なくとも1つの第1のケイパビリティが少なくとも1つの第2のケイパビリティのサブセットでない場合は、外部の解釈対象プログラム・コード・セクションの実行を許可しないようにする。
【選択図】 図3

Description

本発明は解釈型プログラミング言語に関するものである。特に、本発明は電子デバイス内の安全なプログラム解釈方法に関するものである。
電子通信デバイスではセキュリティが重要な要素となっている。現代のモバイル端末は、シンプルな携帯電話からパーソナル・コンピュータと同様のアプリケーションを備える多目的通信デバイスへと進化を遂げている。これらの通信デバイスには、インターネット・ブラウジング、Eメール、マルチメディア・コール等のような様々なサービスが装備されている。モバイル端末向けの1つの重要な技術には、Java(登録商標)、Perl、PHP、Python等のような様々な解釈型言語がある。これらの解釈型言語を用いることにより、モバイル端末で利用可能な付加価値サービス及びゲームの種類は飛躍的に増加している。これらの解釈型言語を使用して開発されるソフトウェアは、別個のプログラムと共有のライブラリとを含んでいる。これらのプログラム及びライブラリは、ネットワーク・サーバから無線を介してモバイル端末にダウンロードすることができる。
ソフトウェアのダウンロードは主に、前記モバイル端末に設けられたブラウザを利用して行われる。ユーザが前記ネットワークからダウンロードするアプリケーションを信頼できることが重要となる。適切なセキュリティ手順が前記モバイル端末に適用されない限り、悪意のあるコードを前記モバイル端末に仕掛けることは非常に簡単である。悪意のあるコードは、モバイル端末の様々な不具合を引き起こす恐れがある。例えば、電話がユーザへの適切な通知なしに課金サービスの番号にセットアップされる恐れがあり、前記モバイル端末から情報が収集され盗まれる恐れもあり、前記モバイル端末がある種のモバイル決済システムをサポートしている場合には、前記ユーザになりすまして課金購入が行われる恐れもある。
これまでに報告された悪意のあるプログラムのいくつかの実例には、別のプラットフォーム上のインタープリタ内で実行される解釈型言語を使用して作成されたものが存在する。これらの悪意のあるプログラムは、解釈型環境又はホスト環境あるいはその両方を標的としている。前記悪意のあるプログラムの動作が可能になった理由は、前記インタープリタの実行環境がそれらのプログラムを他の解釈対象プログラム又はホスト・プラットフォームから適切に隔離することができなかったためである。
本願の文脈において、アプリケーションの隔離は、前記プログラムの永続的な状態と実行時の振る舞いとを分離するものとして定義される。各プログラムは互いのデータを自発的に共有することができ、あるいは他のプログラムの振る舞いに反応することができる。
当業界の専門家に周知の現行機能としては、データ・ケージング、実行時のプロセスの隔離、ケイパビリティ・フレームワーク(capability framework)、プロセス識別子、プロセス間通信(IPC)認証、トラステッド・コンピューティング・ベース、境界防衛、及びオペレーティング・システムのソフトウェア・インストール・プログラムが挙げられる。
プログラムは、これらの機能を連動させて互いに隔離され、トラステッド・コンピューティング・ベースから隔離され、重要なシステム・インターフェイスから隔離される。現行のオペレーティング・システムの特筆すべき特徴は、ポリシーが前記プロセスの境界で強制される故に、前記システムがプロセスの隔離に基づいており、したがってプログラムの隔離に基づいている点である。トラステッド・コンピューティング・ベースを用いることによって、各プログラムが各々の特権を高める能力も否認される。
安全なカーネルは、ネイティブ・プログラムを互いに隔離する。つまり、リソースに対するケイパビリティ又はアクセス権を互いに隔離されていないプログラムに付与することが不可能となる。ケイパビリティを互いに隔離されていないアプリケーションに付与することが可能である場合は、前記ケイパビリティが悪意のあるコードに「漏洩」しないという保証はないことになる。アプリケーションの隔離は本質的に、前記ケイパビリティ・フレームワークの極めて重要な基盤といえる。
上述の各セキュリティ機能は、悪意のある又は欠陥のあるプログラムが前記プラットフォーム、データ、又は前記システム上の他のプログラムに損害を与えるのを防止する際に役立つ。これらの機能は、アプリケーションの隔離がネイティブ・プログラムに対して適用されるように設計されている。前記システム仕様は現時点で、アプリケーションの隔離を解釈対象プログラムに適用する手法については示唆していない。本発明はこれを達成する方法を提案する。
本発明は、電子デバイス内の安全なプログラム解釈方法に関するものである。前記方法は、前記電子デバイス内の少なくとも1つの共有インタープリタ・ライブラリとプロトタイプ・スタブ実行可能ファイル(executable)とを提供するステップと、解釈対象プログラムを前記電子デバイスにロードするステップと、前記電子デバイス内の前記プロトタイプ・スタブ実行可能ファイルを使用してスタブ実行可能ファイルを形成するステップと、前記電子デバイス内の前記スタブ実行可能ファイルを前記解釈対象プログラムと関連付けるステップと、少なくとも1つの第2のケイパビリティを前記スタブ実行可能ファイルに割り当てるステップと、前記スタブ実行可能ファイルを前記電子デバイス内で実行するステップとを含む。
本発明は、電子デバイスであって、インタープリタ・エンジンを実装するように構成された少なくとも1つの共有インタープリタ・ライブラリと、解釈対象プログラムを前記電子デバイスにロードし、プロトタイプ・スタブ実行可能ファイルを使用してスタブ実行可能ファイルを形成し、少なくとも1つの第2のケイパビリティを前記スタブ実行可能ファイルに割り当て、前記少なくとも1つの第2のケイパビリティを前記スタブ実行可能ファイルと関連付けるように構成されたインストーラ・エンティティと、前記スタブ実行可能ファイルを実行するように構成されたオペレーティング・システム・エンティティとを備える電子デバイスにも関する。
本発明は、コンピュータ・プログラムであって、データ処理システム上で実行されたときに、解釈対象プログラムをロードするステップと、プロトタイプ・スタブ実行可能ファイルを使用してスタブ実行可能ファイルを形成するステップと、前記スタブ実行可能ファイルを前記解釈対象プログラムと関連付けるステップと、少なくとも1つの第2のケイパビリティを前記解釈対象プログラムに割り当てるステップと、前記少なくとも1つの第2のケイパビリティを前記スタブ実行可能ファイルと関連付けるステップと、前記スタブ実行可能ファイルを実行するステップと、前記スタブ実行可能ファイルが前記解釈対象プログラムを少なくとも1つの共有インタープリタ・ライブラリに示すステップと、前記スタブ実行可能ファイルが前記共有インタープリタ・ライブラリ内の少なくとも1つの関数を呼び出して前記解釈対象プログラムを解釈するステップとを実施するように適合されたコードを含むコンピュータ・プログラムにも関する。
本発明は、コンピュータ・プログラムであって、データ処理システム上で実行されたときに、前記コンピュータ・プログラムに関連する少なくとも1つのケイパビリティを解釈対象プログラムに提供するステップと、解釈対象プログラムに関する情報を前記コンピュータ・プログラムに割り当てられた安全なソースから取得するステップと、前記解釈対象プログラムを、解釈対象プログラム・コードを解釈するインタープリタ・エンジンを実装する少なくとも1つの関数を含む少なくとも1つの共有インタープリタ・ライブラリに示すステップと、前記共有インタープリタ・ライブラリ内の少なくとも1つの関数を呼び出して前記解釈対象プログラムを解釈するステップとを実施するように適合されたコードを含むコンピュータ・プログラムにも関する。
本発明の一実施形態において、前記方法は更に、前記スタブ実行可能ファイルが前記解釈対象プログラムを前記少なくとも1つの共有インタープリタ・ライブラリに示すステップと、前記スタブ実行可能ファイルが前記少なくとも1つの共有インタープリタ・ライブラリ内の少なくとも1つの関数を呼び出して前記解釈対象プログラムを解釈するステップと、外部の解釈対象プログラム・コード・セクションが前記解釈対象プログラムによって参照されているかどうかをチェックするステップと、前記外部の解釈対象プログラム・コード・セクションに関する少なくとも1つの第1のケイパビリティを推論するステップと、前記少なくとも1つの第2のケイパビリティが前記少なくとも1つの第1のケイパビリティのサブセットでない場合は、前記外部の解釈対象プログラム・コード・セクションの実行を許可しないようにするステップとを含む。
本発明の一実施形態において、前記少なくとも1つの共有インタープリタ・ライブラリは更に、外部の解釈対象プログラム・コード・セクションが解釈対象プログラムによって参照されているかどうかをチェックし、前記外部の解釈対象プログラム・コード・セクションに関する少なくとも1つの第1のケイパビリティを推論し、少なくとも1つの第2のケイパビリティが前記少なくとも1つの第1のケイパビリティのサブセットでない場合は、前記外部の解釈対象プログラム・コード・セクションの実行を許可しないように構成される。
本発明の一実施形態において、前記安全なソースは、電子デバイス内の安全なディレクトリである。前記安全なソースは、例えばコンピュータ・プログラム・コード自体であっても前記コンピュータ・プログラムを記憶するディレクトリであってもよい。前記解釈対象プログラムに関する前記情報は、前記解釈対象プログラムのファイル名であってもよい。前記安全なソースは、前記コンピュータ・プログラムを含むファイルのファイル名を前記コンピュータ・プログラムに提供するオペレーティング・システムであってもよい。
「外部の解釈対象プログラム・コード・セクション」という前記用語は、前記解釈対象プログラム自体の外部、例えば前記電子デバイス内の前記解釈対象プログラム用に予約されたディレクトリ以外のディレクトリから取得される、解釈対象プログラム・コード・セクションを指すことに留意していただきたい。例えば、前記外部の解釈対象プログラム・コード・セクションは、共有インタープリタ・ライブラリから読み出されてもよい。外部の解釈対象プログラム・コード・セクションは、前記解釈対象プログラムの解釈中に無線を介して取得されてもよい。「少なくとも1つの第1のケイパビリティ」という前記用語は、前記外部の解釈対象プログラム・コード・セクション、例えば共有インタープリタ・ライブラリに割り当てられる1組のケイパビリティを指す。「少なくとも1つの第2のケイパビリティ」という前記用語は、前記スタブ実行可能ファイルの1組のケイパビリティを指す。単一のケイパビリティは、オペレーティング・システム、データ通信、又は電子デバイスの管理に関するいくつかの個々の演算又は関数を含むことができることに留意していただきたい。言い換えれば、いくつかの機能は便宜上、単一のケイパビリティにグループ化されていることもある。プログラム又はプログラム・コードの断片は、1組のケイパビリティと関連付けられている可能性もある。ケイパビリティは、前記電子デバイス内のリソース又は機能へのアクセス権を付与するものであるが、アクセス権が付与されない場合には、前記プログラム又はプログラム・コードがそれらのリソース又は機能を使用することはできなくなる。前記ケイパビリティは、前記電子デバイス内の前記プログラムにサービスする前記オペレーティング・システム又は前記機能によって監視される。
本発明の一実施形態では、解釈対象プログラム・コード・セクションに関する信頼性カテゴリが、前記電子デバイスの前記ファイル・システム内に所在する前記解釈対象プログラム・コード・セクションを含むファイルに関する少なくとも1つの位置に基づいて判定され、前記解釈対象プログラム・コード・セクションが信頼されるリモート送信者から受信されたものかどうかが判定され、前記信頼レベルが、前記信頼性カテゴリに基づいて付与される。
本発明の一実施形態では、任意のデータの実行が、前記少なくとも1つのインタープリタ・ライブラリ内で無効化される。このことは、例えば前記インタープリタ・エンジンが任意のデータを実行するための関数にアクセスできなくなることを意味する。そのような関数をコールしようとする試みがあると、前記インタープリタ・エンジンでエラーが発生することになる。本発明の一実施形態において、前記スタブ実行可能ファイルは、別個のプロセス・コンテキストで実行される。前記無効化は、前記インタープリタ・エンジンをコンパイルして前記少なくとも1つの共有インタープリタ・ライブラリを生成する前に実施されてもよい。次に、このように無効化されたバージョンが前記電子デバイスに提供される。
本発明の一実施形態において、前記外部の解釈対象プログラム・コード・セクションは、例えば無線を介してネットワーク・サーバから前記電子デバイスにロードされる。本発明の一実施形態において、前記外部の解釈対象プログラム・コード・セクションは、解釈対象プログラム・コードを含む共有インタープリタ・ライブラリ内の関数である。前記外部の解釈対象プログラム・コード・セクションは、前記解釈対象プログラム・コードが前記解釈対象プログラム自体から前記インタープリタ・エンジンに引き渡されるように、前記解釈対象プログラムによって任意のデータに基づいて形成されてもよい。
本発明の一実施形態では、信頼レベルが前記共有インタープリタ・ライブラリに付与される。前記信頼レベルは、前記ユーザによって又は前記インストーラ・エンティティによって自動的に付与することができる。前記インストーラ・エンティティが前記信頼レベルを自動的に付与する場合、前記信頼レベルは、ネットワーク・サーバから提供された信頼レベル情報を検査することによって取得することができる。前記信頼レベル情報には運営者の署名が付されていることもある。前記署名はまた、サービス・プロバイダから付されていることも、他の任意の信頼されるエンティティから付されていることもある。前記信頼レベルは、前記少なくとも1つの第1のケイパビリティを前記オペレーティング・システム・エンティティ・レベル又は前記インストーラ・エンティティ・レベルで判定するのに使用される。
本発明の一実施形態において、前記解釈対象プログラムをロードする前記ステップは、前記解釈対象プログラムをネットワーク・サーバからダウンロードするステップを含む。
本発明の一実施形態において、前記少なくとも1つの共有インタープリタ・ライブラリと前記プロトタイプ・スタブ実行可能ファイルとを提供する前記ステップは、それらをネットワーク・サーバから前記電子デバイスにダウンロードするステップを含む。
本発明の一実施形態において、前記少なくとも1つの共有インタープリタ・ライブラリをロードする前記ステップは、それらをネットワーク・サーバから前記電子デバイスにダウンロードするステップを含む。
本発明の一実施形態において、前記解釈対象プログラムは、前記電子デバイス内で一意の識別子を使用して識別される。前記一意の識別子は、例えば前記オペレーティング・システム・エンティティ及び前記インストーラ・エンティティが前記解釈対象プログラム及び前記スタブ実行可能ファイルを参照するのに使用することができる。前記少なくとも1つの第2のケイパビリティは、前記オペレーティング・システム・エンティティによって前記一意の識別子と関連付けられてもよい。
本発明の一実施形態において、前記電子デバイスは、モバイル端末を含む。本発明の一実施形態において、前記電子デバイスは、SYMBIAN(登録商標)オペレーティング・システム・デバイスを含む。
本発明の一実施形態において、前記電子デバイスは、汎用パケット無線システム(GPRS)端末又はユニバーサル・モバイル・テレコミュニケーション・システム(UMTS)端末を含む。
本発明の一実施形態において、前記コンピュータ・プログラムは、コンピュータ可読媒体に記憶される。前記コンピュータ可読媒体は、取り外し可能なメモリ・カード、磁気ディスク、光ディスク、あるいは磁気テープであってもよい。
本発明の一実施形態において、前記電子デバイスは、例えばラップトップ・コンピュータ、パームトップ・コンピュータ、モバイル端末、携帯情報端末(PDA)等のモバイル・デバイスである。本発明の一実施形態において、前記電子デバイスは、デスクトップ・コンピュータ又はメインフレーム・コンピュータである。
本発明の利点は、ロードされる解釈対象プログラムの信頼性の向上に関するものである。本発明を用いれば、プログラム又はプログラム・コードがインタープリタ内で実行される度に、通常であればネイティブ・オペレーティング・システム内の1組のケイパビリティを有する任意の単一のアプリケーションにしか見えないはずの前記ネイティブ・オペレーティング・システム内の実行可能プログラムが、解釈対象プログラム及びプログラム・コードに適用されるように、ケイパビリティの定義を行うことが可能となる。
本明細書の一部を構成し本発明の十分な理解を与えるために添付した各図面は、本発明の諸実施形態を図示するものであり、以下の詳細な説明と併せて読めば本発明の諸原理がより理解しやすくなるはずである。
ここで、本発明の諸実施形態を詳細に説明する。諸実施形態の実例は添付図面に示されている。
図1は、本発明に係る電子デバイス内のディレクトリ・ツリーの一例を示すブロック図である。前記電子デバイスは図3に示すとおりである。本発明の一実施形態において、前記電子デバイスは、SYMBIAN(登録商標)オペレーティング・システム・デバイスである。前記ディレクトリ・ツリーは、本発明に係る電子デバイスに記憶される前記方法に不可欠なファイルにはどのようなものが存在し、それらの相互関係がどのようなものかを示している。図1にはルート・ノード100が存在し、このルート・ノードにはサブ・ディレクトリ101、102、及び103が連結されている。前記サブ・ディレクトリ101は、インタープリタを実装するバイナリ・ファイルを記憶している。前記インタープリタは、例えばJava(登録商標)インタープリタ、Perlインタープリタ、PHPインタープリタ、あるいはPythonインタープリタであってもよい。サブ・ディレクトリ101にはファイル111、112、及び113が存在する。ファイル111は、コンパイラを使用して生成されたプログラム・ソース・コード又はバイト・コードを直接実行するインタープリタ・エンジンを含んでいる。
前記インタープリタ・エンジンによって解釈される前記プログラム・ソース・コード又は前記バイト・コードを、以下では「解釈対象プログラム・コード」と呼ぶ。前記コンパイラは、人間が読むことのできるソース・コードを解釈し、それをバイト・コードにコンパイルする。しかしながら、前記バイト・コードは、前記インタープリタ・エンジンが実行できる任意の中間言語であってもよいことに留意していただきたい。前記中間言語は、マシン実行に最適などのようなフォーマットであってもよい。当該フォーマットは、必ずしも1バイトのサイズの演算コードを含んでいる必要はない。ファイル111は本質的に、前記インタープリタ・エンジンを実行するための関数を含む動的リンク・ライブラリ(DLL)である。ファイル112は、最終的にそれ自体が実行されたときにファイル111内に配置されている前記インタープリタ・エンジンを呼び出すことになる、スタブ・インタープリタ実行可能ファイルである。ファイル113は、解釈対象プログラムが前記電子デバイスにインストールされる度にファイル112を用いて形成されるものである。
サブ・ディレクトリ102は、前記インタープリタ・エンジンを使用して解釈されるプログラムを含む。サブ・ディレクトリ102は、前記解釈対象プログラムを含むファイル121を含んでいる。前記サブ・ディレクトリ名の<SID>という要素は、前記解釈対象プログラムに割り当て済みのセキュリティ識別子(SID)を表している。前記SIDは、前記解釈対象プログラムを一意に識別するものであり、これを用いることでケイパビリティを前記解釈対象プログラムに割り当てることが可能となる。ケイパビリティは、SIDを使用して識別されたアプリケーションから呼び出すことができるオペレーティング・システム関数又はオペレーティング・システム関数セットに相当する。ケイパビリティの実例としては、リモート・ネットワークを介して例えばリモート・インターネット・サーバとの通信をセットアップするケイパビリティ、及び前記電子デバイスに記憶されているファイルにアクセスするケイパビリティが挙げられる。単一のケイパビリティは、関連するいくつかの関数及び演算を含むことができる。例えば、IPソケットに関するすべての関数が単一のケイパビリティを含むこともできる。他のケイパビリティは、電力管理、Bluetooth(登録商標)を利用したローカル通信、あるいは赤外線及び低レベル無線プロトコル処理に関するものもある。
サブ・ディレクトリ103は、ファイル121に記憶される前記解釈対象プログラム等のような解釈対象プログラムから呼び出される関数を含む共有ライブラリを含んでいる。前記共有ライブラリは、ファイル131に記憶される。サブ・ディレクトリ132は、前記共有ライブラリを前記電子デバイス内で管理する手法に関するポリシーが規定されるポリシー・ファイルも含んでいる。前記ポリシー・ファイルは、/resource/<lang>ディレクトリの管理手法と、前記インタープリタをあるスクリプトについて起動するlang−<version>−stub−interpreter.exeの作成手法とを定義する。ポリシー定義ファイルを使用する利点は、前記ソフトウェア・インストール・プログラムのコンテキストでインタープリタ特有の外部コードが実行されないことである。すべてのインタープリタのポリシーを相互参照することができ、また、それらのポリシーを実装する前にエラー及び競合の有無をチェックすることもできる。また、この場合に必要な前記ポリシーのサポートは極めて単純なものである。
前記共有インタープリタ・ライブラリには、信頼レベル、つまり前記ライブラリ内の関数について許可される1組のケイパビリティが割り当てられる。前記1組のケイパビリティは、運営者によって決定され又はユーザによって決定される。運営者が決定を行った場合には、前記ケイパビリティは、前記ファイルがネットワーク・サーバからダウンロードされたときに前記電子デバイスに示される。前記ケイパビリティは、例えば前記運営者のデジタル署名を使用して署名が付されるように検証される。ユーザが決定を行った場合には、前記ライブラリについてどのケイパビリティが許可されることになるかを示すプロンプトが前記ユーザに示される。前記共有インタープリタ・ライブラリに割り当てられた前記ケイパビリティは、前記ライブラリについてどの機能が検査され、その結果、どの機能が信頼できるものと見なされるかを反映することになる。例えば、あるライブラリがファイルを前記電子デバイスにダウンロードする上で安全なものと見なされたとしても、前記電子デバイス内のファイルを読み出すことは許可されないこともある。
図2A及び図2Bは、本発明の一実施形態に係る安全なプログラム解釈方法を示すフローチャートである。
ステップ202で、主要なインタープリタ・コード、即ち前記インタープリタ・エンジンを含む共有インタープリタ・ライブラリが、前記電子デバイスに提供される。前記共有ライブラリは、例えば前記ネイティブ・オペレーティング・システムの一部として提供することも、前記ユーザが前記インタープリタのダウンロードを要求したときに、無線を介してネットワーク・サーバから前記電子デバイスにダウンロードすることもできる。
ステップ204で、単一の解釈対象プログラムを解釈する前記インタープリタ・エンジンを呼び出すのに必要な関数を含むプロトタイプ・スタブ実行可能ファイルが、前記電子デバイスに提供される。前記プロトタイプ・スタブ実行可能ファイルは、例えば前記ネイティブ・オペレーティング・システムの一部として提供することも、前記ユーザが前記インタープリタを前記ネットワーク・サーバからダウンロードすることを要求したときに、無線を介して前記電子デバイスにダウンロードすることもできる。前記主要なインタープリタ・コードと前記プロトタイプ・スタブ実行可能ファイルとを含む前記共有インタープリタ・ライブラリのインストールは、それらを前記電子デバイス内の不揮発性メモリに記憶する別個のインストーラ・エンティティで実施することができる。
本発明の一実施形態において、共有インタープリタ・ライブラリは、前記電子デバイスにもロードされる。前記共有ライブラリは、磁気ディスク又は光ディスクあるいは取り外し可能なメモリ・カード等のような取り外し可能なメモリ媒体を使用して前記電子デバイスにロードすることも、無線を介して前記電子デバイスにダウンロードすることもできる。前記共有インタープリタ・ライブラリのインストールは、それを前記電子デバイス内の不揮発性メモリに記憶する別個のインストーラ・エンティティで実施することができる。
ステップ206では任意選択で、信頼レベルが前記電子デバイス内の共有インタープリタ・ライブラリに付与される。前記信頼レベルは、前記共有インタープリタ・ライブラリに割り当てられる1組のケイパビリティを指定する。前記信頼レベルの付与に関する判断は、前記電子デバイスから信頼される運営者又は他の任意のエンティティによって署名が付された信頼レベル情報に基づいて行うことができる。前記信頼は、例えば公開鍵基盤(PKI)や信頼チェーン等を利用して確立される。前記電子デバイスの前記ユーザは、前記信頼レベルの付与に関する判断を、前記電子デバイスのユーザ・インターフェイスを介して明示的に指定することもできる。
ステップ208で、前記解釈対象プログラムが前記電子デバイスにロードされる。前記解釈対象プログラムは、例えば無線を介してダウンロードされる。前記解釈対象プログラムは、前記ユーザによってWWWページ又はWAPページから選択されていることもある。前記解釈対象プログラムは、例えば前記電子デバイスが接続を確立しているネットワーク・サーバからダウンロードされる。前記解釈対象プログラムのインストールは、インストーラ・エンティティによって実施することができる。本発明の一実施形態において、前記解釈対象プログラムは、磁気ディスク又は光ディスクあるいは取り外し可能なメモリ・カード等のような取り外し可能なメモリ媒体を使用して前記電子デバイスにロードすることもできる。
ステップ210で、一意の識別子が前記解釈対象プログラムに割り当てられる。前記解釈対象プログラムは、前記電子デバイスにダウンロードされている前記共有ライブラリ内の関数を使用することができる。前記一意の識別子は、一意の識別子を前記電子デバイス内で実行される各アプリケーションに割り振る責任を担う機関から取得される。
ステップ212で、前記解釈対象プログラムに付与すべきケイパビリティが前記電子デバイスで判定される。例えば、前記ケイパビリティは、前記解釈対象プログラムの前記解釈対象プログラム・コードを分析することによって判定され、あるいは、前記ネットワーク・サーバ又は取り外し可能なメモリ媒体から前記解釈対象プログラムに関して提供される別個のファイル又はデータ構造の形で指定されることもある。また、どのようなケイパビリティも付与されない解釈対象プログラムが存在する可能性もある。そのような場合には、前記解釈対象プログラムは単に情報を表示装置にレンダリングし、キーボードを使用するユーザと対話することしか許可されない。
ステップ214で、前記スタブ実行可能ファイルを使用してスタブ実行可能ファイルが形成される。前記スタブ実行可能ファイルは、前記インタープリタ・エンジンを呼び出し、前記インタープリタ・エンジンに対する前記解釈対象プログラムを判定するために形成されるものである。前記スタブ実行可能ファイルは、前記プロトタイプ・スタブ実行可能ファイルを使用して形成される。前記スタブ実行可能ファイルは、例えば前記共有インタープリタ・ライブラリに関して又は前記解釈対象プログラムに関して提供される別個のポリシー・ファイルに含まれる命令を使用して形成することもできる。スタブ実行可能ファイルの形成は、インストーラ・エンティティによって実施することができる。
ステップ216で、前記スタブ実行可能ファイルからの他のプログラムの実行が無効化される。前記無効化は、例えば前記スタブ実行可能ファイルによって実行されることになる前記解釈対象プログラムが前記インタープリタ・エンジンに明示的に示されるように達成される。前記解釈対象プログラムは、例えば図1のファイル121等のようなそれ自体のファイル名を提供することによって示される。
ステップ218で、前記解釈対象プログラムについて判定された前記ケイパビリティは、ステップ214で形成された前記電子デバイス内の前記スタブ実行可能ファイルに割り当てられる。前記スタブ実行可能ファイルは、前記オペレーティング・システムのセキュリティ機能に関する前記解釈対象プログラムを表すことになる。前記スタブ実行可能ファイルは前記インタープリタ・エンジンを呼び出し、前記解釈対象プログラムを前記インタープリタ・エンジンに提供するのに使用されることから、前記解釈対象プログラム又は前記共有インタープリタ・ライブラリ内の関数以外のどのような解釈対象プログラム・コードも実行されないことが保証される。言い換えれば、解釈対象プログラムがスタブ実行可能ファイルを使用せずに前記インタープリタ・エンジンで実行される可能性はない。
標識「A」は、図2Aに示される前記方法が図2Bに続くポイントを表している。
ステップ220で、前記解釈対象プログラムを前記スタブ実行可能ファイル及び前記インタープリタ・エンジンを用いて解釈する前記プロセスが、前記電子デバイスの前記オペレーティング・システムによって別個のプロセス・コンテキストで実行される。各解釈対象プログラム毎に別個のプロセス・コンテキストが存在する。
ステップ222では、前記プログラムが終了したかどうかが前記インタープリタ・エンジンによってチェックされる。前記プログラムが終了していない場合は、ステップ224に進む。
ステップ224では、外部の解釈対象プログラム・コードを解釈すべきかどうかが前記インタープリタ・エンジンによってチェックされる。外部の解釈対象プログラム・コードを解釈すべき場合にはステップ226に進み、そうでない場合にはステップ220に進む。外部の解釈対象プログラム・コードの一例は、共有インタープリタ・ライブラリに含まれるコードである。外部の解釈対象プログラム・コードの別の実例は、現在のコードの解釈中に前記電子デバイスによって受信されたコードである。
ステップ226では、前記インタープリタ・エンジンによって、前記外部の解釈対象プログラム・コードの前記信頼レベルと、前記スタブ実行可能ファイルの前記ケイパビリティとの比較が行われる。前記スタブ実行可能ファイルの前記ケイパビリティが、前記外部の解釈対象プログラム・コード、即ち、例えば前記共有インタープリタ・ライブラリ等の前記信頼レベルに関連する前記ケイパビリティのサブセットであることが判定される。所与の信頼レベルは、外部の解釈対象プログラム・コードに割り当てられた1組のケイパビリティを一意に指定する。前記信頼レベルは、例えば前記電子デバイス内のファイル・システムにおける前記外部の解釈対象プログラム・コードの位置に基づいて推論される。例えば、前記コードが前記解釈対象プログラムの前記ディレクトリや言語特有の信頼ディレクトリ等のような信頼されるディレクトリ内に配置されている場合は、少なくとも前記解釈対象プログラムの前記ケイパビリティが付与される。前記スタブ実行可能ファイルの前記ケイパビリティが前記信頼レベルに関連する前記ケイパビリティのサブセットでない場合、つまり、前記スタブ実行可能ファイルが前記外部の解釈対象プログラム・コードについて指定された1組のケイパビリティに属さないケイパビリティを有する場合には、前記インタープリタ・エンジンは、前記信頼レベルを逸脱(exceed)しているものと見なす。
ステップ228で、前記インタープリタ・エンジンは、前記信頼レベルを逸脱しているかどうかをチェックする。前記信頼レベルを逸脱している場合にはステップ230に進み、そうでない場合にはステップ220に進む。
ステップ230で、前記インタープリタ・エンジンは前記プログラムの実行を許可しないようにする。その際は前記ユーザに対して適切なエラー・メッセージを示すことができ、前記スタブ実行可能ファイルの実行は終了する。
図3は、本発明に係る電子デバイス300を示すブロック図である。電子デバイス300は、第1のメモリ(図示せず)と、第2のメモリ(図示せず)とを備える。前記第1のメモリは揮発性RAMワーク・メモリであり、前記第2のメモリは不揮発性メモリである。本発明の一実施形態において、前記第1及び第2のメモリは同一の不揮発性メモリである。前記電子デバイスは、プロセッサ(図示せず)も備える。
図3には、前記電子デバイス内のソフトウェアを示すボックス302が存在する。前記ソフトウェアは少なくとも、オペレーティング・システム・エンティティ316と、インストーラ・エンティティ304と、通信エンティティ306とを備える。前記ソフトウェアは、インタープリタ・エンジン310と、インタープリタ・エンジン310に関連するスタブ実行可能ファイル308とを備えることもできる。インタープリタ・エンジン310は、解釈対象プログラム312等のような解釈対象プログラムの解釈対象プログラム・コードを実行する。前記解釈対象プログラムは、共有ライブラリ314に記憶されている少なくとも1つの関数を使用することができる。共有ライブラリ314は、インタープリタ・エンジン310によって実行される前記解釈対象プログラム・コードで指定された関数を含む。共有ライブラリ314は、前記電子デバイスのネイティブ・マシン・コードで指定される関数を含むこともできる。スタブ実行可能ファイル308は、インタープリタ・エンジン310で所与の解釈対象プログラムのインスタンスを呼び出すのに使用される。インタープリタ・エンジン310では、同一のスタブ実行可能ファイルを使用して他の解釈対象プログラムを呼び出すことはできない。通信エンティティ306は、前記電子デバイス内の通信関連タスクを実施する。通信エンティティ306は、無線インターフェイス通信に使用され、インターネット等のようなリモート・ネットワークとの通信を行うプロトコル・スタックを備える。通信エンティティ306が解釈対象プログラム312を前記リモート・ネットワークから受信すると、解釈対象プログラム312はインストーラ・エンティティ304に提供される。インストーラ・エンティティ304は、解釈対象プログラム312を電子デバイス内の不揮発性メモリに記憶する。インストーラ・エンティティ304は、解釈対象プログラム312特有のスタブ実行可能ファイルを作成する。
本発明の一実施形態において、インストーラ・エンティティは、解釈対象プログラム312を電子デバイス300内の前記不揮発性メモリにインストールするときに必要なファイルを形成する際に、ポリシー・ファイルを使用する。インストーラ・エンティティ304には、共有ライブラリ314が電子デバイス300にダウンロードされたときに共有ライブラリ314を不揮発性メモリにインストールし、共有ライブラリ314を構成する責任を負わせることもできる。同様に、インストーラ・エンティティには、前記インタープリタが電子デバイス300にダウンロードされたときにインタープリタ・エンジン310及びプロトタイプ・スタブを不揮発性メモリにインストールし、それらを構成する責任を負わせることもできる。オペレーティング・システム・エンティティ316又はインストーラ・エンティティ304には、信頼レベル及びケイパビリティを共有ライブラリ及び解釈対象プログラムに割り当てる責任を負わせることができる。本発明の一実施形態において、インストーラ・エンティティ304は、電子デバイス300内で実行されるアプリケーションである。
本発明の一実施形態において、スタブ実行可能ファイル308は、電子デバイス300内のオペレーティング・システム・エンティティ316の制御下で実行されるアプリケーションである。インタープリタ・エンジン310は、電子デバイス300の前記ネイティブ・マシン・コード内の動的リンク・ライブラリである。各関数は、スタブ実行可能ファイル308によって前記動的リンク・ライブラリから呼び出される。
以下では、本発明の前記方法がSYMBIAN(登録商標)オペレーティング・システム環境で適用される本発明の一実施形態について説明する。解釈対象アプリケーションを他の解釈対象アプリケーション及び前記ホスト・プラットフォームから隔離する重要性は、それらの解釈対象プログラムによって操作されるデータ及びそれらの解釈対象プログラムから提供される機能の重要性に関係する。インタープリタについて1つのプログラムしか実装されない場合には、アプリケーションの隔離は暗黙的に実施される。
前記アプリケーションの大部分が単一のインタープリタを使用して実装される場合には、アプリケーションの隔離が極めて重要となる。前記インタープリタによってプラットフォーム・セキュリティが正しく適用されない場合には、前記プラットフォームのセキュリティ機能の大部分が使用されないことになる。これによって他の解釈対象プログラムの貴重なデータが悪意のあるプログラムの標的となる恐れがある。
Microsoft社のマクロウイルス問題は、前記課題がどの程度深刻なものかを示す最悪のケースの一例である。プログラム(例えばWordやExcel等)が実行される環境が安全でない場合には、基盤となるオペレーティング・システムが安全であるかどうかは問題ではない。
統合とは、前記オペレーティング・システムのプラットフォーム・セキュリティに関する構文及び意味体系の重要な側面が前記解釈対象プログラムに提供されることを意味する。統合には次の機能が必要とされる。即ち、解釈対象プログラムは一意の識別子を有していなければならないこと、解釈対象プログラムは専用のプライベート・ディレクトリを有していなければならないこと、共有コード・ライブラリは信頼レベルを有していなければならず、前記信頼レベルは個々のプログラムと同様に管理されなければならないこと、解釈対象プログラムはそれ自体に割り当てられたケイパビリティ・セットを有していなければならないこと、各解釈対象プログラムは別個のプロセス・コンテキストで実行されなければならないこと、ならびに、解釈対象プログラムはそれ自体のケイパビリティ・セットによって制限されなければならないことである。
これらの機能を実装するために提案される方法は以下の事項に基づいており、その趣旨は次のとおりである。インタープリタ実行可能ファイルを/sys/bin/lang−<version>−interpreter.dll(<version>部は前記インタープリタのバージョンを示す)というDLL内に配置し、他の任意のプログラムに関するSID/VIDペアが各解釈対象プログラムに割り当てられる度に、スタブ実行可能ファイル/sys/bin/lang−<version>−stub−interpreter.exe(<version>部は前記インタープリタのバージョンを示す)を作成し、前記解釈対象プログラムの各ファイルを/private/<SID>/ディレクトリ内に配置し、各解釈対象プログラムXについて、前記/sys/bin/lang−<version>−stub−interpreter.exeを/sys/bin/interpreted−program−X.exeにコピーし、前記解釈対象プログラムXが有するべきケイパビリティを前記解釈対象プログラムXに割り当て、前記スタブ実行可能ファイルは常にそれ自体のプライベート・ディレクトリから指定されたプログラムを実行し、汎用的な共有コードを/resource/<lang>/lib内に配置し、必要とされるネイティブDLLがあればそれを/sys/bin内に配置し、共有コードの管理に使用されるポリシーを規定するファイルを/resource/<lang>/policy.txt配下に配置する。
本ソリューションは本質的に、各解釈対象プログラムを、それらがネイティブ・オペレーティング・システム・プログラムに見えるような形で前記ネイティブ・オペレーティング・システムのプラットフォーム・セキュリティにマッピングするものである。別の利点は、ケイパビリティがネイティブ・プログラムに割り当てられたときと同様のユーザ体験が維持されることである。本ソリューションでは、共有コードに信頼レベルをどのように割り当てるかについては依然として解決されていない。これについては次のセクションで論じる。
先に提案した設計では、前記解釈対象プログラムの外部の個々のコードに信頼レベルをどのように割り当てるかについて完全には解決されていない。前記課題が問題となるのは次の理由による。大部分の解釈型言語では、当該言語の範囲内で(例えばPerlやPythonではeval()関数を介して)前記インタープリタにアクセスすることが可能となる。したがって、任意のI/Oソースを使用して即時実行可能なコードを提供することが可能である(このことは実際ネイティブ・プログラムにも当てはまることであるが、そのようなコードの存在によって認証は拒否されることになる)。
インタープリタの外部I/Oを監視することに基づいて、どのような入力データがコードとして使用され、どのような入力データがデータとして使用されているかを演繹することができる。
前記スタブ・インタープリタ実行可能ファイルを使用することにより、ケイパビリティをプログラムに付与する簡潔な手法が提供されるが、既存のオペレーティング・システムの仕組みを使用してケイパビリティを任意の入力に付与することは容易なことではない。
上記の考察から、信頼レベルを汎用的なコードに付与するための実用的な仕組みはいずれも、実際のインタープリタの支援を必要とすることは明らかである。そのために利用可能な2つの選択肢が存在する。即ち、信頼されないコードがケイパビリティを利用して実行されることになるコードについて、それ自体のロード/実行を拒否する選択肢と、実行時に前記コードがどのようなソースに由来するものであるかに応じて、より低いケイパビリティを導入する選択肢とが存在する。
ケイパビリティを実行時に調整することにより前記オペレーティング・システムのカーネルを変更する必要が生じることもある。1つの妥協案としては、スクリプトのプライベート・ディレクトリ以外のソースに由来するコードについて、それ自体のロード及び実行を無効化するケイパビリティを有するインタープリタを必要とする案がある。
SID/VID値は、/sys/resource内の共有コード・ライブラリに対しては割り当てられない。SID/VID値は、/sys/bin配下のバイナリだけに割り当てられる。解釈対象プログラム間で共有される解釈対象プログラム・コードをどのように管理するかを記述するポリシー・ファイルのフォーマットが定義される。前記ポリシー・ファイルは次の事項を定義する。
●/sys/resource/<lang>ディレクトリの管理手法
●前記インタープリタをあるスクリプトについて起動するlang−<version>−stub−interpreter.exeの作成手法
前記/sysディレクトリへの書込みは、前記インストーラ・エンティティだけが行うことができるが、当該ディレクトリの読出しは、すべてのプログラムが行うことができる。前記/private/<SID>ディレクトリは、当該ディレクトリ内にあるインストーラ・エンティティ又はプログラムだけが読み出すことのできるディレクトリである。前記電子デバイスが前記ディレクトリの実際の名前ではなく上記の2つのタイプのディレクトリを有するという原則は、不可欠なものである。
ポリシー定義ファイルを使用する利点は、SWInstall、即ち前記ソフトウェア・インストール・プログラムのコンテキストでインタープリタ特有の外部コードが実行されないことである。すべてのインタープリタのポリシーを相互参照することができ、また、それらのポリシーを実装する前にエラー及び競合の有無をチェックすることもできる。また、この場合に必要な前記ポリシーのサポートは極めて単純なものである。
前記インタープリタには次の機能が実装されるべきである。
●前記スクリプト内で使用されるデフォルト・ディレクトリは、/private/<SID>である。グローバル読出し可能/書込み可能なファイルについてはその旨を明示的に宣言しなければならない。
●前記プログラムに何らかのケイパビリティ(ユーザ・ケイパビリティを含む)が付与されている場合は、前記プライベート・ディレクトリ及び前記/sys/resourceディレクトリの外部のコードの実行は無効化される。本機能を無効化する特別な「開発者スイッチ(developer−switch)」を有することが望まれる可能性もある。
●ユーザ・ケイパビリティが付与されている場合には、プログラム・コードは、前記プログラムのプライベート・ディレクトリ及び前記共有コード・ディレクトリからしかロードすることができない。
●システム・ケイパビリティが付与されている場合には、プログラム・コードは、前記プログラムのプライベート・ディレクトリからしかロードすることができない。
本発明の基本的な概念は、技術の進歩に伴って様々な手法で実施できることが当業者には理解されるであろう。したがって、本発明及び本発明の諸実施形態は、上述の実例に限定されるものではなく、以下の各クレームの範囲内で様々な形をとることができる。
本発明に係る電子デバイス内のディレクトリ・ツリーの一例を示すブロック図である。 本発明の一実施形態に係るプログラムの安全な解釈方法を示すフローチャートである(その1)。 本発明の一実施形態に係るプログラムの安全な解釈方法を示すフローチャートである(その2)。 本発明に係る電子デバイスを示すブロック図である。

Claims (32)

  1. 電子デバイス内の安全なプログラム解釈方法であって、
    前記電子デバイス内の少なくとも1つの共有インタープリタ・ライブラリとプロトタイプ・スタブ実行可能ファイルとを提供するステップと、
    解釈対象プログラムを前記電子デバイスにロードするステップと、
    前記電子デバイス内の前記プロトタイプ・スタブ実行可能ファイルを使用してスタブ実行可能ファイルを形成するステップと、
    前記電子デバイス内の前記スタブ実行可能ファイルを前記解釈対象プログラムと関連付けるステップと、
    少なくとも1つの第2のケイパビリティを前記スタブ実行可能ファイルに割り当てるステップと、
    前記スタブ実行可能ファイルを前記電子デバイス内で実行するステップと
    を含む方法。
  2. 前記スタブ実行可能ファイルが前記解釈対象プログラムを前記少なくとも1つの共有インタープリタ・ライブラリに示すステップと、
    前記スタブ実行可能ファイルが前記少なくとも1つの共有インタープリタ・ライブラリ内の少なくとも1つの関数を呼び出して前記解釈対象プログラムを解釈するステップと、
    外部の解釈対象プログラム・コード・セクションが前記解釈対象プログラムによって参照されているかどうかをチェックするステップと、
    前記外部の解釈対象プログラム・コード・セクションに関する少なくとも1つの第1のケイパビリティを推論するステップと、
    前記少なくとも1つの第2のケイパビリティが前記少なくとも1つの第1のケイパビリティのサブセットでない場合は、前記外部の解釈対象プログラム・コード・セクションの実行を許可しないようにするステップと
    を更に含む請求項1に記載の方法。
  3. 前記外部の解釈対象プログラム・コード・セクションを前記電子デバイスにロードするステップと、
    前記スタブ実行可能ファイルを別個のプロセス・コンテキストで実行するステップと
    を更に含む請求項2に記載の方法。
  4. 前記解釈対象プログラム・コード・セクションをロードする前記ステップは、それをネットワーク・サーバから前記電子デバイスにダウンロードするステップを含む、請求項2に記載の方法。
  5. 信頼レベルを前記外部の解釈対象プログラム・コード・セクションに付与するステップと、
    前記少なくとも1つの第1のケイパビリティを前記信頼レベルに基づいて判定するステップと
    を更に含む請求項2に記載の方法。
  6. 解釈対象プログラム・コード・セクションに関する信頼性カテゴリを、前記電子デバイスの前記ファイル・システム内に所在する前記解釈対象プログラム・コード・セクションを含むファイルに関する少なくとも1つの位置に基づいて判定し、前記解釈対象プログラム・コード・セクションが信頼されるリモート送信者から受信されたものかどうかを判定するステップと、
    前記信頼レベルを前記信頼性カテゴリに基づいて付与するステップと
    を更に含む請求項5に記載の方法。
  7. 前記解釈対象プログラムをロードする前記ステップは、前記解釈対象プログラムをネットワーク・サーバからダウンロードするステップを含む、請求項1に記載の方法。
  8. 前記少なくとも1つの共有インタープリタ・ライブラリと前記プロトタイプ・スタブ実行可能ファイルとを提供する前記ステップは、それらをネットワーク・サーバから前記電子デバイスにダウンロードするステップを含む、請求項1に記載の方法。
  9. 前記解釈対象プログラムは、前記電子デバイス内で一意の識別子を使用して識別される、請求項1に記載の方法。
  10. 前記電子デバイスは、モバイル端末である、請求項1に記載の方法。
  11. 前記電子デバイスは、SYMBIAN(登録商標)オペレーティング・システム・デバイスである、請求項1に記載の方法。
  12. 前記電子デバイスは、汎用パケット無線システム(GPRS)端末又はユニバーサル・モバイル・テレコミュニケーション・システム(UMTS)端末である、請求項1に記載の方法。
  13. 電子デバイスであって、
    インタープリタ・エンジンを実装するように構成された少なくとも1つの共有インタープリタ・ライブラリと、
    解釈対象プログラムを前記電子デバイスにロードし、プロトタイプ・スタブ実行可能ファイルを使用してスタブ実行可能ファイルを形成し、前記スタブ実行可能ファイルを前記解釈対象プログラムと関連付け、前記少なくとも1つの第2のケイパビリティを前記スタブ実行可能ファイルに割り当てるように構成されたインストーラ・エンティティと、
    前記スタブ実行可能ファイルを実行するように構成されたオペレーティング・システム・エンティティと
    を備える電子デバイス。
  14. 前記少なくとも1つの共有インタープリタ・ライブラリは更に、
    外部の解釈対象プログラム・コード・セクションが解釈対象プログラムによって参照されているかどうかをチェックし、
    前記外部の解釈対象プログラム・コード・セクションに関する少なくとも1つの第1のケイパビリティを推論し、
    少なくとも1つの第2のケイパビリティが前記少なくとも1つの第1のケイパビリティのサブセットでない場合は、前記外部の解釈対象プログラム・コード・セクションの実行を許可しないように構成される、
    請求項13に記載の電子デバイス。
  15. 前記少なくとも1つの解釈対象プログラム・コード・セクションをロードする前記ステップは、それをネットワーク・サーバから前記電子デバイスにダウンロードするステップを含む、請求項14に記載の電子デバイス。
  16. 前記インストーラ・エンティティは更に、前記外部の解釈対象プログラム・コード・セクションを前記電子デバイスにロードするように構成され、前記オペレーティング・システム・エンティティは更に、前記スタブ実行可能ファイルを別個のプロセス・コンテキストで実行するように構成される、請求項14に記載の電子デバイス。
  17. 前記少なくとも1つの共有インタープリタ・ライブラリは更に、信頼レベルを前記外部の解釈対象プログラム・コード・セクションに付与し、前記少なくとも1つの第1のケイパビリティを前記信頼レベルに基づいて判定するように構成される、請求項14に記載の電子デバイス。
  18. 前記解釈対象プログラムをロードする前記ステップは、前記解釈対象プログラムをネットワーク・サーバからダウンロードするステップを含む、請求項13に記載の電子デバイス。
  19. 前記インストーラ・エンティティは更に、前記少なくとも1つの共有インタープリタ・ライブラリと前記プロトタイプ・スタブ実行可能ファイルとをネットワーク・サーバから前記電子デバイスにダウンロードするように構成される、請求項13に記載の電子デバイス。
  20. 前記オペレーティング・システム・エンティティは更に、前記解釈対象プログラムを一意の識別子を使用して識別するように構成される、請求項13に記載の電子デバイス。
  21. 前記電子デバイスは、モバイル端末である、請求項13に記載の電子デバイス。
  22. 前記電子デバイスは、SYMBIAN(登録商標)オペレーティング・システム・デバイスである、請求項13に記載の電子デバイス。
  23. 前記電子デバイスは、汎用パケット無線システム(GPRS)端末又はユニバーサル・モバイル・テレコミュニケーション・システム(UMTS)端末である、請求項13に記載の電子デバイス。
  24. コンピュータ・プログラムであって、データ処理システム上で実行されたときに、
    解釈対象プログラムをロードするステップと、
    プロトタイプ・スタブ実行可能ファイルを使用してスタブ実行可能ファイルを形成するステップと、
    前記スタブ実行可能ファイルを前記解釈対象プログラムと関連付けるステップと、
    少なくとも1つの第2のケイパビリティを前記解釈対象プログラムに割り当てるステップと、
    前記少なくとも1つの第2のケイパビリティを前記スタブ実行可能ファイルと関連付けるステップと、
    前記スタブ実行可能ファイルを実行するステップと、
    前記スタブ実行可能ファイルが前記解釈対象プログラムを少なくとも1つの共有インタープリタ・ライブラリに示すステップと、
    前記スタブ実行可能ファイルが前記共有インタープリタ・ライブラリ内の少なくとも1つの関数を呼び出して前記解釈対象プログラムを解釈するステップと
    を実施するように適合されたコードを含むコンピュータ・プログラム。
  25. 前記コンピュータ・プログラムは、コンピュータ可読媒体に記憶される、請求項24に記載のコンピュータ・プログラム。
  26. 前記コンピュータ可読媒体は、取り外し可能なメモリ・カードである、請求項25に記載のコンピュータ・プログラム。
  27. 前記コンピュータ可読媒体は、磁気ディスク又は光ディスクである、請求項25に記載のコンピュータ・プログラム。
  28. コンピュータ・プログラムであって、データ処理システム上で実行されたときに、
    前記コンピュータ・プログラムに関連する少なくとも1つのケイパビリティを解釈対象プログラムに提供するステップと、
    前記解釈対象プログラムに関する情報を前記コンピュータ・プログラムに割り当てられた安全なソースから取得するステップと、
    前記解釈対象プログラムを、解釈対象プログラム・コードを解釈するインタープリタ・エンジンを実装する少なくとも1つの関数を含む、少なくとも1つの共有インタープリタ・ライブラリに示すステップと、
    前記共有インタープリタ・ライブラリ内の少なくとも1つの関数を呼び出して前記解釈対象プログラムを解釈するステップと
    を実施するように適合されたコードを含むコンピュータ・プログラム。
  29. 前記安全なソースは、電子デバイス内の安全なディレクトリである、請求項28に記載のコンピュータ・プログラム。
  30. 前記コンピュータ・プログラムは、コンピュータ可読媒体に記憶される、請求項28に記載のコンピュータ・プログラム。
  31. 前記コンピュータ可読媒体は、取り外し可能なメモリ・カードである、請求項30に記載のコンピュータ・プログラム。
  32. 前記コンピュータ可読媒体は、磁気ディスク又は光ディスクである、請求項30に記載のコンピュータ・プログラム。
JP2007542018A 2004-11-24 2005-11-24 電子デバイス内の安全なプログラム解釈方法 Expired - Fee Related JP4638505B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US99680104A 2004-11-24 2004-11-24
FI20041517A FI20041517A0 (fi) 2004-11-25 2004-11-25 Menetelmä elektroniikkalaitteiden ohjelmien turvalliseen tulkintaan
PCT/FI2005/000504 WO2006056646A1 (en) 2004-11-24 2005-11-24 Method for the secure interpretation of programs in electronic devices

Publications (3)

Publication Number Publication Date
JP2008521111A true JP2008521111A (ja) 2008-06-19
JP2008521111A5 JP2008521111A5 (ja) 2010-12-02
JP4638505B2 JP4638505B2 (ja) 2011-02-23

Family

ID=36497763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007542018A Expired - Fee Related JP4638505B2 (ja) 2004-11-24 2005-11-24 電子デバイス内の安全なプログラム解釈方法

Country Status (3)

Country Link
EP (1) EP1815381A1 (ja)
JP (1) JP4638505B2 (ja)
WO (1) WO2006056646A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036278A (ja) * 2017-08-17 2019-03-07 エーオー カスペルスキー ラボAO Kaspersky Lab ファイルの実行をエミュレートするシステム及び方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003202929A (ja) * 2002-01-08 2003-07-18 Ntt Docomo Inc 配信方法および配信システム
JP2004272594A (ja) * 2003-03-07 2004-09-30 Sony Corp データ利用装置及びデータ利用方法、並びにコンピュータ・プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6044467A (en) * 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
GB0024918D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
GB2381090B (en) * 2001-10-17 2005-02-02 Bitarts Ltd Software loading

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003202929A (ja) * 2002-01-08 2003-07-18 Ntt Docomo Inc 配信方法および配信システム
JP2004272594A (ja) * 2003-03-07 2004-09-30 Sony Corp データ利用装置及びデータ利用方法、並びにコンピュータ・プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036278A (ja) * 2017-08-17 2019-03-07 エーオー カスペルスキー ラボAO Kaspersky Lab ファイルの実行をエミュレートするシステム及び方法
US10437618B2 (en) 2017-08-17 2019-10-08 AO Kaspersky Lab System and method of emulating execution of files
US10838748B2 (en) 2017-08-17 2020-11-17 AO Kaspersky Lab System and method of emulating execution of files based on emulation time

Also Published As

Publication number Publication date
EP1815381A1 (en) 2007-08-08
JP4638505B2 (ja) 2011-02-23
WO2006056646A1 (en) 2006-06-01

Similar Documents

Publication Publication Date Title
KR101456489B1 (ko) CLDC OSGi 환경에서 어플리케이션의 접속 권한을관리하는 방법 및 장치
US9916475B2 (en) Programmable interface for extending security of application-based operating system
US7444624B2 (en) Method for the secure interpretation of programs in electronic devices
Heuser et al. {ASM}: a programmable interface for extending android security
KR100538659B1 (ko) 컴퓨터 장치의 저장 영역에 대한 애플리케이션 레벨 액세스 특권을 부여하는 방법 및 장치
US8756681B2 (en) Hybrid system implementing distinct and co-existing application execution environments and methods for implementing the same
Gong Secure Java class loading
EP1967981A1 (en) Program execution control method, device, and execution control program
KR100883699B1 (ko) 무선 장치 동작 환경에서 비검증된 프로그램들의 실행
US20080066187A1 (en) Mobile Wireless Device with Protected File System
WO2006075872A1 (en) System and method for providing and handling executable web content
KR20130040692A (ko) 보안 웹 위젯 런타임 시스템을 위한 방법 및 장치
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
US7647629B2 (en) Hosted code runtime protection
US20090031396A1 (en) METHOD OF AND APPARATUS FOR MANAGING ACCESS PRIVILEGES IN CLDC OSGi ENVIRONMENT
US20050172133A1 (en) Cross assembly call interception
US8667512B2 (en) Flexible hierarchical settings registry for operating systems
Rossi et al. {SEApp}: Bringing mandatory access control to Android apps
WO2017016231A1 (zh) 一种策略管理方法、系统及计算机存储介质
JP4638505B2 (ja) 電子デバイス内の安全なプログラム解釈方法
Sterbenz An evaluation of the java security model
JP2008521111A5 (ja)
EP2581853B1 (en) Method and apparatus for secure web widget runtime system
Mantos et al. Vulnerability tester: an Android app which finds and exploits application layer vulnerabilities of other apps
Hauswirth et al. A flexible and extensible security framework for Java code

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090826

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100715

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101013

A524 Written submission of copy of amendment under section 19 (pct)

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20101013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101108

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: 20101125

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees