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

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

Info

Publication number
JP4638505B2
JP4638505B2 JP2007542018A JP2007542018A JP4638505B2 JP 4638505 B2 JP4638505 B2 JP 4638505B2 JP 2007542018 A JP2007542018 A JP 2007542018A JP 2007542018 A JP2007542018 A JP 2007542018A JP 4638505 B2 JP4638505 B2 JP 4638505B2
Authority
JP
Japan
Prior art keywords
interpreted
interpreted program
electronic device
program
interpreter
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.)
Expired - Fee Related
Application number
JP2007542018A
Other languages
English (en)
Other versions
JP2008521111A5 (ja
JP2008521111A (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)

Description

発明の背景
(技術分野)
本発明はインタープリタ型プログラミング言語に関するものである。特に、本発明は電子デバイス内の安全なプログラム解釈方法に関するものである。
(背景技術)
電子通信デバイスではセキュリティが重要な要素となっている。現代のモバイル端末は、シンプルな携帯電話からパーソナル・コンピュータと同様のアプリケーションを備える多目的通信デバイスへと進化を遂げている。これらの通信デバイスには、インターネット・ブラウジング、Eメール、マルチメディア・コール等のような様々なサービスが装備されている。モバイル端末向けの1つの重要な技術には、Java(登録商標)、Perl、PHP、Python等のような様々なインタープリタ型言語がある。これらのインタープリタ型言語を用いることにより、モバイル端末で利用可能な付加価値サービス及びゲームの種類は飛躍的に増加している。これらのインタープリタ型言語を使用して開発されるソフトウェアは、個別のプログラムと共有のライブラリとを含んでいる。これらのプログラム及びライブラリは、ネットワーク・サーバから無線を介してモバイル端末にダウンロードすることができる。
ソフトウェアのダウンロードは主に、モバイル端末に設けられたブラウザを利用して行われる。ユーザがネットワークからダウンロードするアプリケーションを信頼できることが重要となる。適切なセキュリティ手順がモバイル端末に適用されない限り、悪意のあるコードをモバイル端末に仕掛けることは非常に簡単である。悪意のあるコードは、モバイル端末の様々な不具合を引き起こす恐れがある。例えば、電話がユーザへの適切な通知なしに課金サービスの番号にセットアップされる恐れがあり、モバイル端末から情報が収集され盗まれる恐れもあり、モバイル端末がある種のモバイル決済システムをサポートしている場合には、ユーザになりすまして課金購入が行われる恐れもある。
これまでに報告された悪意のあるプログラムのいくつかの実例には、別のプラットフォーム上のインタープリタ内で実行されるインタープリタ型言語を使用して作成されたものが存在する。これらの悪意のあるプログラムは、インタープリタ型環境又はホスト環境あるいはその両方を標的としている。悪意のあるプログラムの動作が可能になった理由は、インタープリタの実行環境がそれらのプログラムを他のインタープリタ型プログラム又はホスト・プラットフォームから適切に隔離することができなかったためである。
本願の文脈において、アプリケーションの隔離(isolation)は、プログラムの永続的な状態と実行時の振る舞いとを分離するものとして定義される。各プログラムは互いのデータを自発的に共有することができ、あるいは他のプログラムの振る舞いに反応することができる。
当業界の専門家に周知の現行機能としては、データ・ケージング、実行時のプロセスの隔離、ケイパビリティ・フレームワーク(capability framework)、プロセス識別子、プロセス間通信(IPC)認証、トラステッド・コンピューティング・ベース、境界防衛、及びオペレーティング・システムのソフトウェア・インストール・プログラムが挙げられる。
プログラムは、これらの機能を連動させて互いに隔離され、トラステッド・コンピューティング・ベースから隔離され、重要なシステム・インターフェイスから隔離される。現行のオペレーティング・システムの特筆すべき特徴は、ポリシーがプロセスの境界で強制される故に、システムがプロセスの隔離に基づいており、したがってプログラムの隔離に基づいている点である。トラステッド・コンピューティング・ベースを用いることによって、各プログラムが各々の特権を高める能力も否認される。
安全なカーネルは、ネイティブ・プログラムを互いに隔離する。つまり、リソースに対するケイパビリティ又はアクセス権を互いに隔離されていないプログラムに付与することが不可能となる。ケイパビリティを互いに隔離されていないアプリケーションに付与することが可能である場合は、ケイパビリティが悪意のあるコードに「漏洩」しないという保証はないことになる。アプリケーションの隔離は本質的に、ケイパビリティ・フレームワークの極めて重要な基盤といえる。
上述の各セキュリティ機能は、悪意のある又は欠陥のあるプログラムがプラットフォーム、データ、又はシステム上の他のプログラムに損害を与えるのを防止する際に役立つ。これらの機能は、アプリケーションの隔離がネイティブ・プログラムに対して適用されるように設計されている。システム仕様は現時点で、アプリケーションの隔離をインタープリタ型プログラムに適用する手法については示唆していない。本発明はこれを達成する方法を提案する。
本発明は、電子デバイス内の安全なプログラム解釈方法に関するものである。前記方法は、前記電子デバイス内で少なくとも1つの共有インタープリタ・ライブラリと実行可能スタブstub 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は、本発明に係る電子デバイス内のディレクトリ・ツリーの一例を示すブロック図である。電子デバイスは図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 (23)

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

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2659742C1 (ru) 2017-08-17 2018-07-03 Акционерное общество "Лаборатория Касперского" Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных

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 データ利用装置及びデータ利用方法、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
JP2008521111A (ja) 2008-06-19
EP1815381A1 (en) 2007-08-08
WO2006056646A1 (en) 2006-06-01

Similar Documents

Publication Publication Date Title
Smalley Configuring the SELinux policy
US9916475B2 (en) Programmable interface for extending security of application-based operating system
US7444624B2 (en) Method for the secure interpretation of programs in electronic devices
Gong Secure Java class loading
KR101456489B1 (ko) CLDC OSGi 환경에서 어플리케이션의 접속 권한을관리하는 방법 및 장치
US20090307781A1 (en) Program execution control method, its device, and execution control program for same
JP4757873B2 (ja) プラグイン・コード・モジュールを実行する複数プロセス・アーキテクチャを有するコンピュータ装置
US20090172657A1 (en) System, Method, Apparatus, Mobile Terminal and Computer Program Product for Providing Secure Mixed-Language Components to a System Dynamically
JP2005500608A (ja) コンピュータ装置上の記憶領域へのアプリケーションレベルのアクセス特権
WO2006075872A1 (en) System and method for providing and handling executable web content
KR20010040979A (ko) 스택에 기초한 액세스 제어
KR20130040692A (ko) 보안 웹 위젯 런타임 시스템을 위한 방법 및 장치
US7647629B2 (en) Hosted code runtime protection
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
US20050172133A1 (en) Cross assembly call interception
WO2019062771A1 (zh) 一种Android应用多开实现方法、移动终端及存储介质
US20030084324A1 (en) Method and apparatus for type independent permission based access control
WO2017016231A1 (zh) 一种策略管理方法、系统及计算机存储介质
Rossi et al. {SEApp}: Bringing mandatory access control to Android apps
JP4526383B2 (ja) 実行可能なコードを格納するタンパーエビデントな取り外し可能な媒体
CN115917539A (zh) 确保系统调用的安全的方法、实施关联安全策略的方法、和执行这些方法的设备
JP4638505B2 (ja) 電子デバイス内の安全なプログラム解釈方法
JP2008521111A5 (ja)
EP2581853B1 (en) Method and apparatus for secure web widget runtime system
US20230362198A1 (en) Dynamic security policy enforcement method for container system, recording medium and system for performing the same

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