JP2008502066A - プラグイン・コード・モジュールを実行する複数プロセス・アーキテクチャを有するコンピュータ装置 - Google Patents

プラグイン・コード・モジュールを実行する複数プロセス・アーキテクチャを有するコンピュータ装置 Download PDF

Info

Publication number
JP2008502066A
JP2008502066A JP2007526540A JP2007526540A JP2008502066A JP 2008502066 A JP2008502066 A JP 2008502066A JP 2007526540 A JP2007526540 A JP 2007526540A JP 2007526540 A JP2007526540 A JP 2007526540A JP 2008502066 A JP2008502066 A JP 2008502066A
Authority
JP
Japan
Prior art keywords
plug
application
module
security
tint
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
JP2007526540A
Other languages
English (en)
Other versions
JP2008502066A6 (ja
JP4757873B2 (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.)
Symbian Software Ltd
Original Assignee
Symbian Software Ltd
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 Symbian Software Ltd filed Critical Symbian Software Ltd
Publication of JP2008502066A publication Critical patent/JP2008502066A/ja
Publication of JP2008502066A6 publication Critical patent/JP2008502066A6/ja
Application granted granted Critical
Publication of JP4757873B2 publication Critical patent/JP4757873B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

プラグイン・デザインパターンを使用してソフトウェアシステムのセキュリティ及び信頼性を向上するために、プラグイン・コード・モジュールを自身の専用のプロセスにおいて実行する複数プロセス・アーキテクチャを有するコンピュータ装置が提供される。

Description

本発明は、プラグイン・コード・モジュールを実行するコンピュータ装置に関し、特に、プラグインのデザインパターンを使用してソフトウェアシステムのセキュリティ及び信頼性を向上するために、自身の専用プロセスにおいてモジュールを実行する装置に関する。
本明細書において用いられる用語「コンピュータ装置」は、任意の形態の電子コンピュータ装置を含むように広範囲に解釈され、データ記録装置、ハンドヘルドコンピュータ及びパーソナルコンピュータを含む任意の種類又は形態のコンピュータ、並びに、単一装置内で通信、画像の記録と再生との少なくともいずれか、及び演算機能を組み合わせた移動電話、スマートフォン、通信機及び他の形態の無線/有線情報装置を含む任意の形態の通信装置を含む。
プラグインは、実行時にそのプラグインをロードすること又は呼び出すことが可能な疎結合アプリケーションに対して、特定のサービスを提供する実行可能コードの置換可能な項目として定義される。
プラグインは、多くのオペレーティングシステムや多くのアプリケーションにおいて広く使用されている。この技術の主な利点は一般に普及しており、以下のことを含む。:
・新しい機能が要求されたときにプラグイン・モジュールを追加又は置換できるため、プラグインを使用できるアプリケーションは本質的に拡張可能である。
・プラグインのコードは、要望に応じてのみアプリケーションによりロードされるため、プログラムによるメモリの要求量が少なくなり、起動が迅速になる。
・ソフトウェア設計者がプラグインの内部動作について理解する必要がないため、プラグイン・デザインはアーキテクチャに関して柔軟性(flexible)がある。
・商業上の利点を提供する;オプションの機能性又はライセンシーが提供する機能性をプラグインを介して提供することにより、製品化までの時間が短縮され、第三者が既存のアプリケーションに対するプラグイン・モジュールを作成する市場を活発にすることができる。
プラグインは、ダイナミック・リンク・ライブラリ(DLL)として又はモジュールを呼び出すアプリケーションと同一のプロセス空間内で実行する同様の種類のモジュールとしてロードされることが多い。しかし、プラグインは、別個の(separated:分離された)プロセスとしても生成(ロード及び実行)される。それら2つの選択可能なパターンは双方とも広く使用されている。
実行時にアプリケーションによりロードされるダイナミック・リンク・ライブラリ(DLL)モジュールは、多くのアプリケーションにとって、プラグインを実現するための従来からの手法であった。ソフトウェア設計者は、特定の種類の全てのモジュールが準拠する必要のある抽象APIを含むフレームワーク又はアーキテクチャを事前に指定する。そのようなモジュールは、事前に定義された所定の手法で呼出しアプリケーションに「プラグイン」し、多くのオペレーティングシステムにおいて広く使用されている。ユーザは、プリンタドライバ等のモジュールの形態でその種類のプラグインをよく知っているだろう。
DLLプラグインは、非常に効率的であると考えられる。すなわち、アプリケーションは、それらメソッド(method)がアプリケーション自体に不可欠である場合に比べてメモリのオーバヘッドのないDLL又は非高速DLLにおいてメソッドを直接呼び出すことができる。また、DLLプラグインは非常に柔軟性がある。すなわち、プラグインは、新しい機能性を提供するために追加でき、あるいは既存の機能性を修正するために置換できる。一般に、呼出しアプリケーションは、特定の種類の全てのプラグインDLLを識別するコードを含む(あるいは、プラグインが特定の固有のファイル拡張子又はディレクトリ位置を有する必要があることを指定する)。
生成プロセスは、長年の間、オペレーティングシステムにおいて実現されてきた。Dennis Ritchieによると、プロセスをフォークする機能は、Unix(登録商標)が60年代中頃のBerkeley SDS30タイムシェアリングシステムから継承したものである(http://cm.bell-labs.com/cm/cs/who/dmr/hist.htmlにおいてDennis Ritchieによる非特許文献1を参照)。機能をアプリケーションに追加することを可能にするプラグイン機構としてその機能を使用することは、完全に開発されるまでに長い時間がかかったが、現在では、種々のUnix(登録商標)系オペレーティングシステムにおいて普及しており、特に種々のコンテンツを扱うために種々の実行ファイルがInternet Explorerにプラグインされる等、Microsoft Windows(登録商標)においても普及している。
しかし、全てのプラグイン・モジュール・アーキテクチャは、オペレーティングシステム又はプラットフォームのセキュリティの分野において問題を引き起こすだろう。これは、悪意のあるコード又は不適切に書かれたコードに対するプラットフォームの防御機構の原理、アーキテクチャ及び実現を含む。プラグインがその分野において問題を引き起こすと考えられることは意外なことではない。これは、システムの公開性、柔軟性及びグレードアップの可能性が増加することにより、そのような問題が引き起こされる可能性が高くなるからである。
プラットフォームのセキュリティは、全てのコンピュータ装置及び通信装置に対する課題である。そのような装置上のデータの完全性と、ユーザの出費に見合う装置の潜在性と、秘密情報及び個人情報の格納に装置を使用することは、製造業者及び消費者等にとって高い関心事である。従って、プラグイン機構がセキュリティを損なわないことを保証することは、最も重要な問題である。
信頼及び危険性の課題を考慮することは、プラグインに対する真の関心事をセキュリティ問題が反映する理由を理解する際に非常に役立つ。ユーザの銀行口座にアクセスできるアプリケーションが、プラグインをサポートするアプリケーションであると仮定しよう。このアプリケーションは、プラグイン・モジュールを信頼して銀行口座にアクセスさせてもよいことをどのようにして区別できるであろうか?また、アプリケーションが特定のプラグイン・モジュールを信頼できることを確信していない場合、銀行口座に対するアクセス権を与えるという危険を冒すことなく、どのようにしてプラグインサービスを使用できるであろうか?
これに対して、装置は、装置上の保護されたコンテンツに対するアクセス権を制御するのに用いられる暗号化アルゴリズム及び復号アルゴリズムを実現するプラグイン・モジュールを含むと仮定する。プラグイン・モジュールは、データオブジェクトにアクセスするためにプラグイン・モジュールをロードしようと試みるアプリケーションがロードする権利を実際に有することを確信できる必要があることは明らかである。信頼できないアプリケーションにアクセス権を付与することで、保護されたコンテンツの完全性を危険にさらすことになる。
コンピュータ装置のユーザの多くは、それらの種類の問題及び危険性がインターネットに常に蔓延するウイルス、トロイ、ワーム及び他の種類のコンピュータ有害ソフトにより起こる問題及び危険性に非常に類似するため、それら問題及び危険性をよく知っているだろう。
この分野においてオペレーティングシステム及びプラットフォームをセキュリティ保護する多くのスキームが存在するが、本発明に関連して説明されるような問題に対する解決策は、セキュリティの単位であり、メモリ保護の単位でもあるプロセスに基づくスキームと主に関係している。そのようなスキームにおいて、プロセスは種々のセキュリティ属性を有する。セキュリティ属性は、機能、許可及びアイデンティティを含んでもよいが、それらに限定されない。これらの用語は、当業者には容易に理解されると仮定する。
この種類の最も広く使用されるオペレーティングシステムはUnix(登録商標)から派生し、許可及びグループアイデンティティの集合は、システムにおいて実行できるプロセス及びプロセスが開放又はアクセスできるリソースについて規定する。しかし、LondonのSymbian Software Ltdの移動通信装置用のSymbian OS(商標)オペレーティングシステムに導入される多少異なるプロセスに基づくプラットフォーム・セキュリティ・アーキテクチャに関して、一例として本発明を説明する。
このオペレーティングシステムの多くのコアコンポーネントは、特許文献1において説明される。この特許出願の一部が便宜上要約される。
Symbian OS(商標)オペレーティングシステムのプラットフォーム・セキュリティ・アーキテクチャにおいて、実行可能コードのある項目(アプリケーション又はプラグイン)に設けられる信頼度の公開指標は、1つ以上の機能を付与することにより示される。実行可能プロセスの場合、機能は特定のシステムリソースに対するアクセス権を公開できる能力を規定する。そのようなアクセス権は、便宜上付与されるべきではない。これは、コードに付与されたアクセス権の結果、信頼違反が発生するという高い危険性が存在しないと評価される場合のみに許可されるべきである。
機能に加え、Symbian OS(商標)オペレーティングシステムにおいて使用される他のセキュリティ属性が存在する。それは、実行可能コードの項目を含む各ファイルに対する固有の識別子(UID:unique identifiers)の集合と、項目の作成元を示すのに使用されるベンダID(VID:vendor ID)等のグループIDとを含む。Symbian OS(商標)オペレーティングシステムのインストール可能なアプリケーションは、X.509等の公開鍵インフラストラクチャ(PKI:public key infrastructure)仕様に準拠するセキュリティ証明書を搬送してもよい。
Symbianにより提供されるプラットフォーム・セキュリティ・アーキテクチャの重要な特徴は、全ての種類の実行可能コードモジュールは、構築されたときに固定機能を割り当てられることである。それらのうち2つの例の概要を以下に示す。
・アプリケーションの場合、それら機能により、アプリケーションがシステム設備(電話機能性等)又は電話機に格納されたデータ(連絡先データ等)に対するアクセス権を有するのに必要なオペレーティングシステムのアプリケーションに対する信頼度が判定される。それら機能はプロセス全体にわたり、変更されることはない。
・DLLの場合、それら機能によりアプリケーションのDLLのコードに対する信頼度を判定するが、DLLはロードされると、DLLがロードされたプロセスと同一の機能を有して実行される。
このアーキテクチャが、ある特定の状況において不適切なプラグインDLLデザインを提供することは明らかである。これは、DLLが、呼出しアプリケーションと同一のプロセスの一部としてロードされ、且つアドレス空間全体及び格納された全てのデータに対してアクセス権を有するためである。このため、アプリケーションは、プラグインDLLの完全性において完全な信頼を有する必要がある。DLLに対するシステムローダは、DLLを呼び出すことを必要とするアプリケーションと少なくとも同等の機能を有さないDLLのロードを拒否することにより、必要な信頼を実現する。これは、アプリケーションとDLLとの周知の安定した組合せの場合には問題ない。しかし、問題が発生する状況が想定され、セキュリティ保護された機能に基づくプラットフォームに対して、プラグインDLLを不適切なデザインにする。
最も明らかな例として、新しい機能の追加によりアップグレードされたアプリケーションは、先のバージョンが正常にロードできた同一のDLLが信頼されず新しくアップグレードされた機能を有さない場合、それらDLLをロードすることはできない。別の例として、既存のDLLにより提供されるサービスを使用することを必要とする新しく書かれたアプリケーションは、DLLが信用されず機能の集合全体を有することができないため、サービスを使用できないことを発見する。
上記の例の反対のことも起こる可能性がある。アプリケーションの機能は変更されることがないため、提供しようとする機能性に対して必須の機密事項を扱う機能を有することができる信頼されたDLLは、ある特定のアプリケーションがオペレーティングシステムにより信頼されず同等のレベルの機能を有さないためにDLLを利用できないことを発見する。
そのような例は、単に理論上のものではない。すなわち、プラグインアーキテクチャの本来の目的はシステムに対して柔軟性及び拡張性を加えるが、このことは、その特性に関する問題がほぼ確実に発生することを意味する。要求するDLL及びサービスの数が増加するため、必要な実装機能の集合も増加する。
DLLプラグインに代わるものとして、生成プロセス・プラグインがある。これにより、アプリケーション及びそれらのプラグインは、ばらばら(disjoint)の機能集合を有することができる。しかし、プロセス・プラグイン・パターンにより機能集合がばらばらであることが可能になるため、セキュア・プラットフォームに対する問題が生じる。相互の信頼関係が親プロセスと子プロセスとの間に確立されることを可能にする子プロセスを生成する明らかな機構は現在の技術には存在せず、この不足が原因となって起こる可能性のある脅威が重大であると考えられる。
例えば、ドライブをフォーマットするのに使用されるプラグインは、プラグインを呼び出したアプリケーションの挙動が信頼できることをどのようにして認識するのか?また、セキュリティ保護されたデータを処理するためにプラグインを使用することを必要とするアプリケーションは、プラグインが信頼されてそのデータの内容を有することができることをどのようにして認識するのか?
DLLプラグインの代わりとして生成プロセス・プラグインを実現する場合に、解決される必要のある実用上の問題が存在する。それら問題は、オペレーティングシステムにおいて、プロセスがメモリ保護の基本単位であるという事実から発生する。従って、呼出しアプリケーション及びプラグインプロセスの双方とも、互いのアドレス空間に自動アクセスできず、いずれも他方のアプリケーション・プログラム・インタフェース(API)を直接呼び出すことはできない。
英国特許出願第0312191.0号,「安全な携帯無線装置(Secure Mobile Wireless Device)」 Dennis Ritchie,「Unix(登録商標)タイムシェアリング・システムの進化(The Evolution of the Unix(登録商標) Time-Sharing System)」
本発明は、プラグインがプロセスとして実現される方法であって、親アプリケーションと子プロセスとの間の相互信頼に基づいてアプリケーションにより新しいアドレス空間にプラグインが生成される、方法を提供することを目的とする。
本発明の第1の側面によると、プロセスに基づくセキュリティ・モデルを有するコンピュータ装置であって、前記装置上のソフトウェア・アプリケーションは、当該アプリケーションのセキュリティ属性と、異なる又は互換性のないセキュリティ属性を有するプラグイン・モジュールを、当該プラグイン・モジュールを別個のプロセスとして呼び出すことにより、利用することができる、コンピュータ装置が提供される。
本発明の第2の側面によると、プロセスに基づくセキュリティ・モデルを有するコンピュータ装置を動作させる方法であって、プラグイン・モジュールを別個のプロセスとして呼び出すことにより、ソフトウェア・アプリケーションのセキュリティ属性と、異なる又は互換性のないセキュリティ属性を有する前記プラグイン・モジュールを利用できるように前記装置上に前記ソフトウェア・アプリケーションを構成することを備える方法が提供される。
本発明の第3の側面によると、第1の側面によるコンピュータ装置を第2の側面による方法に従って動作させるためのコンピュータ装置に対するオペレーティングシステムが提供される。
更なる例として、本発明の一実施形態を次に説明する。
本発明は、複数プロセス・アーキテクチャを有するコンピュータ装置を提供し、親アプリケーションと子プロセスとの間に相互信頼を作成することに基づく。
従って、生成プロセスは、信頼されないアプリケーションにより呼び出されておらず、且つ情報が渡されていないことを保証する必要がある。これを容易にするために、コンピュータ装置のセキュア・オペレーティングシステムは、親に関する全ての関連アイデンティティ、セキュリティ及び機能情報を検索するために子プロセスに対して設備を提供するように構成される。例えば、システムディスクの内容全てを再フォーマットしたアプリケーションは、システムディスクを生成したアプリケーションが適切なシステム機能(Symbian OS(商標)オペレーティングシステムのDiskAdmin等)を有することを保証できるだろう。
セキュア・オペレーティングシステムは、子プロセスが生成される前に、子プロセスのアイデンティティ、セキュリティ及び機能情報を親アプリケーションが検索するための機能を含むように構成される。これにより、生成プロセスに対して情報を渡すアプリケーションは、それらプロセスが信頼されてその情報を有することができることを確信できる。
アプリケーションが実行可能プラグインとなるものを信頼できると確信すると、多数の型なし(untyped)整数を保持する特別な一時データ構造を介してプラグインが実行を開始する前に、アプリケーションはプラグインに情報を渡す。それら整数は、型なしなので、システムリソース又は他のオブジェクト(共有メモリチャンク、ファイルハンドル、ミューテック及びセマフォ等)にファイルセッション及びハンドルを渡すために使用される。Symbian OS(商標)オペレーティングシステムにより使用される構造は、各々が1度のみ読出し可能である16個の環境スロットに基づく。英国特許出願第0327261.4号の「安全なハンドル(Secure Handles)」には、オブジェクトに対するハンドルを安全に渡す方法が説明されている。英国特許出願第0312190.2号の「保護されたファイルシステムを用いた安全な携帯無線装置(Secure Mobile Wireless Device With Protected File System)」には、ファイルハンドルを渡す機構により、アプリケーションとそれらのプラグインとの間でセキュリティ保護されたファイルを共有することを可能にする方法が説明されている。
本発明によれば、アプリケーションがプラグインプロセスに対してどのような情報を示すかについて、非常に高度な制御がなされる。渡す情報の選択は、呼出しアプリケーションに完全に依存する。特定の項目を渡すことを選択しない場合、プラグインは、項目の内容を確認するどころか項目の存在さえ見つけられない。従って、APIの不正な呼出し又はデータに対する不正なアクセスにより不良プラグインプロセスが、誤って又は故意に親アプリケーションの機能を、破損又は損なうことは、事実上不可能である。
その逆もまた真である。すなわち、プラグインプロセスは、自身のメソッド又はデータを呼出しアプリケーションに自動的に示さない。これにより、高度な機密機能が付与されているが、それら機能に対するアクセス権を必ずしも有さないアプリケーションが使用できる、プラグインプロセスを設計することが可能になる。プロセスは、アプリケーションにサービスを提供するときに機能が漏洩するのを回避するために、渡される情報を非常に慎重に監視するように構成される。しかし、先に概要を説明したように、これはプラグインDLLでは不可能である。
プラグイン・モジュールを別個のプロセスとして実行させることにより、本当に必要とする機能のみを有するプラグインを提供できる。これを行なうことにより、セキュリティ上より安全なシステムが実現され、アプリケーションが所有する機能より少ない機能を有するプラグインプロセスを生成するアプリケーションをカバーするために、特別なルールは必要ない。
プラグインは自身のプロセス空間で実行するため、一般に、不適切に挙動するプラグインは親アプリケーションに損傷を与えない。これに対して、不適切に挙動するDLLプラグインは、アプリケーションを破壊し、データを破損させやすい。従って、本発明により提供される複数プロセス・アーキテクチャは、オペレーティングシステム及びその全てのサブシステムの安定性及び信頼性を保証するという利点を有する。プラグインが故障した場合、そのプラグインはその後安全に無視される。
バイナリ互換性を維持してプラグインを呼び出すプロセスの機能を向上することが可能である。プラグインに必要な機能を要求しないことにより、システム全体の開発継続の結果、互換性に関する負担は少なくなる。
従って、本発明は、プラグインを自身の専用のプロセスにおいて実現することにより、プラグイン・デザインパターンを使用してソフトウェアシステムのセキュリティ及び信頼性を向上させる手段の一つである。これを行なうことにより、アプリケーションは、プラグインを呼び出す前に又はプラグインに情報を渡す前に、プラグインのセキュリティ属性をチェックでき、プラグインは、受信した情報に対して動作する前にプラグインを呼び出したアプリケーションのセキュリティ属性をチェックできる。
これは、セキュリティ属性が自身のセキュリティ属性と異なるか又は自身のセキュリティ属性と互換性のないプラグインをアプリケーションが使用できることを保証し、障害を起こしたプラグイン又は不適切に挙動するプラグインが、インタフェースするオペレーティングシステムフレームワークの障害の原因とならないことを保証する。
アプリケーション及びプラグインが機能及びアイデンティティの発見に基づいて相互の信頼関係を確立することを可能にするSymbian OS(商標)オペレーティングシステム方法論、並びに親プロセスから子プロセスにデータを渡す方法を次に説明する。
以下のコードの例は、上記技術の実現例である。これらの例において、読み手は、Symbian OS(商標)オペレーティングシステムのプログラミング用語をよく知っているものと仮定する。当業者は、本明細書において開示される技術を自身のオペレーティングシステムの環境に容易に適応させられるだろう。
a)親が子プロセスの機能及びアイデンティティ情報をチェックする方法
TUint32 RProcess::SecureId() const;
TUint32 RProcess::VendorId() const;
これらは、目標プロセスのSecure ID及びVendor IDを返す。
TInt RProcess::HasCapability(TCapability aCap) const;
TInt RProcess::HasCapability(TCapability aCap1, TCapability aCap2) const;
TInt RProcess::HasCapability(TCapability aCap1, TCapability aCap2, TCapability aCap3) const;
これらは、目標プロセスが特定の機能又は機能の集合を有しているかをチェックし、KErrNone又はKErrPermissionDeniedのいずれかを返す。
TInt RProcess::CheckPolicy(const TSecurityPolicy& aPolicy) const;
目標プロセスがaPolicyにより特定された全ての機能を所有し、且つaPolicyにより特定されたSecure ID又はVendor ID(存在する場合は)を有することをチェックする。
b)子プロセスが親の機能及びアイデンティティ情報をチェックする方法
TUint32 User::CreatorSecureId() const;
TUint32 User::CreatorVendorId() const;
これらは、現在のプロセスを作成したプロセスのSecure ID及びVendor IDを返す。
TInt User::CreatorHasCapability(TCapability aCap) const;
TInt User::CreatorHasCapability(TCapability aCap1, TCapability aCap2) const;
TInt User::CreatorHasCapability(TCapability aCap1, TCapability aCap2, TCapability aCap3) const;
これらは、現在のプロセスを作成したプロセスが特定の機能又は機能の集合を有するかをチェックし、KErrNone又はKErrPermissionDeniedのいずれかを返す。
TInt User::CreatorCheckPolicy(const TSecurityPolicy& aPolicy) const;
現在のプロセスを作成したプロセスがaPolicyにより特定された全ての機能を所有し、且つaPolicyにより特定されたSecure ID又はVendor ID(存在する場合は)を有することをチェックする。
c)子プロセスにデータを渡す
Symbian OS(商標)オペレーティングシステムにおいて、プロセスは、開始プロセスにより渡される情報を含むことができる16個の環境スロットを有する。本明細書において、開始プロセス(launching process)は親と呼ばれ、開始された(launched process)プロセスは子と呼ばれる。スロット0は確保され、汎用情報を渡すのには利用されない。
親プロセスは、子プロセスを作成した後、子プロセスを再開する前に、子プロセスに情報を渡すのが好ましい。再開されたプロセスに環境データを設定しようとすることはエラーである。
尚、子プロセスは、1度だけ自身の環境から情報を抽出できる。
親及び子プロセスの作成者は、環境スロットに含まれるものに関して同意するべきであり、スロットの長さとは別にスロットの内容をクエリする手法はない。
親プロセスはSetParameterを呼び出し、パラメータを子プロセスの環境に置く。
TInt RProcess::SetParameter(TInt aSlot, RHandleBase aHandle);
TInt RProcess::SetParameter(TInt aSlot, const RSubSessionBase& aSession);
TInt RProcess::SetParameter(TInt aSlot, const TDesC16& aDes);
TInt RProcess::SetParameter(TInt aSlot, const TDesC8& aDes);
TInt RProcess::SetParameter(TInt aSlot, TInt aData);
子プロセスは、RHandleBase::Open又はユーザAPIのいずれかを使用して、自身の環境から情報を抽出する。
TInt RSemaphore::Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
TInt RBusLogicalChannel::Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
TInt RMsgQueueBase::Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
TInt RMutex::Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
TInt RChunk::Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
TInt RSessionBase::Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);

IMPORT_C static TInt User::ParameterLength(TInt aSlot);
IMPORT_C static TInt User::GetTIntParameter(TInt aSlot, TInt& aData);
IMPORT_C static TInt User::GetDesParameter(TInt aSlot, TDes8& aDes);
IMPORT_C static TInt User::GetDesParameter(TInt aSlot, TDes16& aDes);
d)ファイルハンドルを渡す
ファイルサーバセッションハンドル及びファイルハンドルは、子プロセスに渡される。ファイルハンドルを使用するために、セッションハンドルが取得される。子プロセスは、ファイルハンドルを採用するため、ファイルハンドルが親により閉じられる必要はない。ファイルサーバセッションは、特にファイルを共有するために作成され、他の目的で親プロセスにより使用されないことがセキュリティの理由から好ましい。
//開始プロセス
RProcess p;
p.Create(KProcName, KNullDesC); //「子」プロセスを作成する
RFile file;
RFs session;
session.Connect(); //ファイルサーバへ接続する
session.ShareProtected();
file.Create(iSession, KFileName, EFileStreamText|EFileWrite|EFileShareAny);
file.Write(0, KTestData);
p.SetParameter(5, session); //セッションハンドル
p.SetParameter(6, file); //ファイルハンドル
session.Close();
p.Resume();

//開始されたプロセス
RFs session;
session.Open(5); //セッションハンドルを取得する
RFile file;
TInt handle;
ret = User::GetTIntParameter(6, handle); //ファイルハンドルを取得する
file.Adopt(session, handle); //ハンドルを採用する
TBuf8<100> rbuf; //ファイルを使用する
ret = file.Read(0, rbuf);
file.Close();
session.Close();
e)RHandleBaseから得られたハンドルを渡す
RHandleBaseから得られたハンドルは、子プロセスに渡される。ハンドルは、子の環境に格納される時に複写される。親は、SetParameterを呼び出した直後にハンドルを閉じるか、あるいはハンドルを使用し続け、後で閉じることができる。
//開始プロセス、ミューテック及びセマフォにハンドルを渡す
RMutex mutex;
RSemaphore sem;
RProcess p;
p.Create(KProcName, KNullDesC);
mutex.CreateGlobal(KMutexName); //ミューテックを作成する
sem.CreateGlobal(KSemName, 0); //セマフォを作成する
p.SetParameter(3, mutex); //ミューテックハンドルを子プロセスに置く
environment slot 3
p.SetParameter(4, sem); //セマフォハンドルを子プロセスに置く
environment slot 4
mutex.Close();
Sem.Close();
p.Resume(); //子プロセスを再開する

//ハンドルを検索する開始されたプロセス
RMutex mutex;
mutex.Open(3, EOwnerThread); //ミューテックハンドルを取得する
RSemaphore sem;
sem.Open(4, EOwnerThread); //セマフォハンドルを取得する
//セマフォ及びミューテックを使用する
mutex.Close();
sem.Close();
f)記述子データを渡す
8ビット記述子データ及び16ビット記述子データは、親から子プロセスに渡される。データは、User::GetDesParameter()を呼び出すことにより、子プロセスのバッファにコピーされる。パラメータの長さは、User::ParameterLength()を呼び出すことにより、データを検索する前にチェックされる。
//8ビットデータ及び16ビットデータを渡す開始プロセス
ret = p.Create(KProcName, KNullDesC);
p.SetParameter(2, KSixteenBitDes);
p.SetParameter(3, KEightBitDes);
p.Resume();

//8ビットデータ及び16ビットデータを検索する開始されたプロセス
TBuf16<40> buf;
len = User::ParameterLength(2); //パラメータの長さはバイトサイズである
ret = User::GetDesParameter(2, buf);
test(buf.Length() == len/2);

TBuf8<40> buf8;
len = User::ParameterLength(3);
ret = User::GetDesParameter(3, buf8);
test (len == buf.Length());
g)整数を渡す
整数は、親から子プロセスに渡される。
//親プロセス
ret = p.Create(KProcName, KNullDesC);
p.SetParameter(12, 1234);
p.Resume();

//子プロセス
TInt val;
ret = User::GetTIntParameter(12, val)
h)エラー処理
親プロセスは、以下の場合、ハンドルを使用してSetParameterを呼び出した時にパニック(panicked)になる。
・親プロセスが作成プロセスでない場合。
・スロット番号が範囲外である場合。
・スロットが使用中の場合。
・ハンドルがローカルである場合。
親プロセスは、以下の場合、記述子又は整数を使用してSetParameterを呼び出した時にパニックになる。
・親プロセスが作成プロセスでない場合。
・スロット番号が範囲外である場合。
・スロットが使用中の場合。
・データの長さが負の場合。
子プロセスは、以下の場合にパニックになる。
・スロット番号が範囲外である場合。
スロットが誤ったデータの種類を含む場合又は長さが誤っている場合、プロセス環境からデータを抽出するAPI呼出しはKErrArgumentを返す。スロットが空の場合、API呼び出しはKErrNotFoundを返す。
i)実現例の考察
ファイルハンドルを共有する場合、親プロセスは、特にファイルハンドルを共有する目的で、別個のファイルサーバセッションを作成するべきである。これは、親プロセスがファイルサーバセッションと同時に他のファイルを開いている場合、子プロセスが、ファイルハンドルの全ての可能な値に対して繰り返し、且つ各々を採用するように試みることにより、それらファイルに対するアクセス権を獲得できるからである。同様の理由から、子プロセスは、そのセッションをファイルを共有するためだけに使用するべきであり、他のファイルにアクセスするために使用するべきではない。
SetParameterは、プロセスが再開される前でのみ呼び出される。
パラメータ情報は、1度だけ検索される。
ハンドル又はバイナリデータを含むことができる16個のデータスロットが存在する。スロット0は確保される。
特定の実施形態を参照して本発明について説明したが、添付の請求の範囲により規定されるように、本発明の範囲から逸脱せずに変更が行なわれてもよいことは理解されるだろう。例えば、本発明は、Unix(登録商標)方式の許可を利用するプロセスに基づくセキュリティ・アーキテクチャを含む任意のプロセスに基づくセキュリティ・アーキテクチャに適用可能である。

Claims (9)

  1. プロセスに基づくセキュリティ・モデルを有するコンピュータ装置であって、
    前記装置上のソフトウェア・アプリケーションは、当該アプリケーションのセキュリティ属性と、異なる又は互換性のないセキュリティ属性を有するプラグイン・モジュールを、当該プラグイン・モジュールを別個のプロセスとして呼び出すことにより、利用することができる、コンピュータ装置。
  2. プラグイン・モジュールを呼び出そうとするアプリケーションは、該モジュールを呼び出す前に該モジュールの前記セキュリティ属性を検証することができる、請求項1記載のコンピュータ装置。
  3. 別個のプロセスとして呼び出されるプラグイン・モジュールは、該モジュールを呼び出す前記アプリケーションの前記セキュリティ属性を検証することができる、請求項1又は2記載のコンピュータ装置。
  4. アプリケーションは、前記アプリケーションが実行される前に、一時データ構造を介してプラグイン・モジュールへ情報を渡すように構成される、請求項1から3のいずれか1項に記載のコンピュータ装置。
  5. プロセスに基づくセキュリティ・モデルを有するコンピュータ装置を動作させる方法であって、
    プラグイン・モジュールを別個のプロセスとして呼び出すことにより、ソフトウェア・アプリケーションのセキュリティ属性と、異なる又は互換性のないセキュリティ属性を有する前記プラグイン・モジュールを利用できるように前記装置上に前記ソフトウェア・アプリケーションを構成することを備える方法。
  6. プラグイン・モジュールを呼び出そうとするアプリケーションは、該モジュールを呼び出す前に、前記モジュールの前記セキュリティ属性を検証することができるように構成される、請求項5記載の方法。
  7. 別個のプロセスとして呼び出されたプラグイン・モジュールは、前記モジュールを呼び出す前記アプリケーションの前記セキュリティ属性を検証できるように構成される、請求項5又は6に記載の方法。
  8. アプリケーションは、前記アプリケーションが実行される前に、一時データ構造を介してプラグイン・モジュールに情報を渡すように構成される、請求項5から7のいずれか1項に記載の方法。
  9. 請求項1から4のいずれか1項に記載のコンピュータ装置を請求項5から8のいずれか1項に記載の方法に従って動作させるためのコンピュータ装置のためのオペレーティングシステム。
JP2007526540A 2004-06-09 2005-06-08 プラグイン・コード・モジュールを実行する複数プロセス・アーキテクチャを有するコンピュータ装置 Active JP4757873B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0413059A GB2415065B (en) 2004-06-09 2004-06-09 A computing device having a multiple process architecture for running plug-in code modules
GB0413059.7 2004-06-09
PCT/GB2005/002244 WO2005121920A2 (en) 2004-06-09 2005-06-08 A computing device having a multiple process architecture for running plug-in code modules

Publications (3)

Publication Number Publication Date
JP2008502066A true JP2008502066A (ja) 2008-01-24
JP2008502066A6 JP2008502066A6 (ja) 2008-05-29
JP4757873B2 JP4757873B2 (ja) 2011-08-24

Family

ID=32732330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007526540A Active JP4757873B2 (ja) 2004-06-09 2005-06-08 プラグイン・コード・モジュールを実行する複数プロセス・アーキテクチャを有するコンピュータ装置

Country Status (6)

Country Link
US (1) US8984529B2 (ja)
EP (1) EP1763716A2 (ja)
JP (1) JP4757873B2 (ja)
CN (1) CN100470440C (ja)
GB (1) GB2415065B (ja)
WO (1) WO2005121920A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009149A (ja) * 2008-06-24 2010-01-14 Fujitsu Ltd 動的ライブラリロード方法及び装置
JP2013500514A (ja) * 2009-07-24 2013-01-07 アップル インコーポレイテッド ダイナミックメディアコンテンツプレビュー

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713671B2 (en) * 2005-11-02 2014-04-29 Nokia Corporation System and method for providing an extended platform for an operating system
JP4828296B2 (ja) * 2006-04-27 2011-11-30 京セラミタ株式会社 印刷装置制御システム及びプリンタドライバ
JP4979287B2 (ja) * 2006-07-14 2012-07-18 富士ゼロックス株式会社 画像処理装置及びプログラム
US8104048B2 (en) 2006-08-04 2012-01-24 Apple Inc. Browsing or searching user interfaces and other aspects
US7669082B2 (en) * 2007-04-11 2010-02-23 Microsoft Corporation Fault tolerant and hang resistant media processing applications
US8201096B2 (en) 2007-06-09 2012-06-12 Apple Inc. Browsing or searching user interfaces and other aspects
US9058337B2 (en) 2007-10-22 2015-06-16 Apple Inc. Previewing user interfaces and other aspects
US8225303B2 (en) * 2007-11-30 2012-07-17 Sap Ag System and method for providing software upgrades
US8640097B2 (en) * 2009-03-16 2014-01-28 Microsoft Corporation Hosted application platform with extensible media format
CN101510167B (zh) * 2009-03-31 2016-04-20 阿里巴巴集团控股有限公司 一种插件运行的方法、装置及系统
US8817053B2 (en) 2010-09-30 2014-08-26 Apple Inc. Methods and systems for opening a file
US8856740B2 (en) * 2012-07-31 2014-10-07 Hewlett-Packard Development Company, L.P. Implementing multiple versions of a plug-in concurrently
US10317860B2 (en) 2013-05-20 2019-06-11 Mitsubishi Electric Corporation Monitoring control device
CN105335187B (zh) 2014-08-14 2019-12-13 阿里巴巴集团控股有限公司 一种应用的处理方法及装置
CN105700928B (zh) * 2016-01-15 2019-08-09 北京金山安全软件有限公司 一种控件信息展示方法、装置及电子设备
CN108132844B (zh) * 2016-12-01 2020-11-10 腾讯科技(深圳)有限公司 插件下载方法及装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4104721A (en) * 1976-12-30 1978-08-01 International Business Machines Corporation Hierarchical security mechanism for dynamically assigning security levels to object programs
US4945468A (en) * 1988-02-01 1990-07-31 International Business Machines Corporation Trusted path mechanism for virtual terminal environments
US5802367A (en) * 1995-07-07 1998-09-01 Microsoft Corporation Method and system for transparently executing code using a surrogate process
US5764889A (en) * 1996-09-26 1998-06-09 International Business Machines Corporation Method and apparatus for creating a security environment for a user task in a client/server system
US5903728A (en) * 1997-05-05 1999-05-11 Microsoft Corporation Plug-in control including an independent plug-in process
US6948183B1 (en) * 1998-06-18 2005-09-20 General Instrument Corporation Dynamic security for digital television receivers
US6453320B1 (en) * 1999-02-01 2002-09-17 Iona Technologies, Inc. Method and system for providing object references in a distributed object environment supporting object migration
JP2001043080A (ja) * 1999-07-28 2001-02-16 Ge Yokogawa Medical Systems Ltd プログラム保護方法およびコンピュータ読み取り可能な記録媒体
US6675193B1 (en) * 1999-10-29 2004-01-06 Invensys Software Systems Method and system for remote control of a local system
FI111567B (fi) 1999-12-27 2003-08-15 Nokia Corp Menetelmä ohjelmamoduulin lataamiseksi
US7398532B1 (en) * 2000-03-02 2008-07-08 Hewlett-Packard Development Company, L.P. System and method for establishing a secure execution environment for a software process
US6975629B2 (en) * 2000-03-22 2005-12-13 Texas Instruments Incorporated Processing packets based on deadline intervals
US6907531B1 (en) * 2000-06-30 2005-06-14 Internet Security Systems, Inc. Method and system for identifying, fixing, and updating security vulnerabilities
US7039801B2 (en) * 2000-06-30 2006-05-02 Microsoft Corporation System and method for integrating secure and non-secure software objects
US20030177066A1 (en) * 2001-04-12 2003-09-18 Computer Sciences Corporation, A Nevada Corporation, Integrated marketing promotion system and method
US7028300B2 (en) * 2001-11-13 2006-04-11 Microsoft Corporation Method and system for managing resources in a distributed environment that has an associated object
US7320075B2 (en) * 2001-11-20 2008-01-15 Safenet, Inc. Software protection method utilizing hidden application code in a protection dynamic link library object
US20040093525A1 (en) * 2002-02-01 2004-05-13 Larnen Vincent Alan Process based security tai building
GB0212315D0 (en) 2002-05-28 2002-07-10 Symbian Ltd Secure mobile wireless device with protected file systems
GB0212314D0 (en) * 2002-05-28 2002-07-10 Symbian Ltd Secure mobile wireless device
US7631318B2 (en) * 2002-06-28 2009-12-08 Microsoft Corporation Secure server plug-in architecture for digital rights management systems
US7191192B2 (en) * 2002-09-30 2007-03-13 International Business Machines Corporation Metadirectory agents having extensible functions
US20050078822A1 (en) * 2003-10-08 2005-04-14 Eyal Shavit Secure access and copy protection management system
GB2408361B (en) 2003-11-21 2007-07-25 Symbian Ltd Allocation of resources in a computing device
EP1721233A1 (en) * 2004-02-09 2006-11-15 Palmsource, Inc. Method and system for a securty model for a computing device
US7562304B2 (en) * 2005-05-03 2009-07-14 Mcafee, Inc. Indicating website reputations during website manipulation of user information
US7565641B2 (en) * 2005-06-24 2009-07-21 Microsoft Corporation Securely providing extensible third-party plug-ins
EP2194688A1 (en) * 2008-12-02 2010-06-09 Alcatel, Lucent A module and associated method for TR-069 object management

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009149A (ja) * 2008-06-24 2010-01-14 Fujitsu Ltd 動的ライブラリロード方法及び装置
JP2013500514A (ja) * 2009-07-24 2013-01-07 アップル インコーポレイテッド ダイナミックメディアコンテンツプレビュー

Also Published As

Publication number Publication date
EP1763716A2 (en) 2007-03-21
GB2415065B (en) 2009-01-21
WO2005121920A2 (en) 2005-12-22
WO2005121920A3 (en) 2006-04-27
GB2415065A (en) 2005-12-14
US8984529B2 (en) 2015-03-17
CN100470440C (zh) 2009-03-18
US20080022292A1 (en) 2008-01-24
GB0413059D0 (en) 2004-07-14
CN1965281A (zh) 2007-05-16
JP4757873B2 (ja) 2011-08-24

Similar Documents

Publication Publication Date Title
JP4757873B2 (ja) プラグイン・コード・モジュールを実行する複数プロセス・アーキテクチャを有するコンピュータ装置
JP2008502066A6 (ja) プラグイン・コード・モジュールを実行する複数プロセス・アーキテクチャを有するコンピュータ装置
US6836888B1 (en) System for reverse sandboxing
RU2390836C2 (ru) Отображение достоверности из высоконадежной среды на незащищенную среду
US8887295B2 (en) Method and system for enabling enterprises to use detachable memory devices that contain data and executable files in controlled and secure way
US7546587B2 (en) Run-time call stack verification
Parampalli et al. A practical mimicry attack against powerful system-call monitors
US7506170B2 (en) Method for secure access to multiple secure networks
US8001596B2 (en) Software protection injection at load time
JP4975127B2 (ja) 取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する装置
US8646044B2 (en) Mandatory integrity control
JP2005327239A (ja) セキュリティ関連プログラミング・インターフェース
Mulliner et al. Using labeling to prevent cross-service attacks against smart phones
US9454652B2 (en) Computer security system and method
US10242182B2 (en) Computer security system and method
Sze et al. Provenance-based integrity protection for windows
EP2581853B1 (en) Method and apparatus for secure web widget runtime system
Angelakis Application development in the trusted execution environment
Xu Security enhancement of secure USB debugging in Android system
De Win et al. Security Middleware for Mobile Applications
Surie et al. Rapid trust establishment for transient use of unmanaged hardware
Vijayakumar et al. Policy models to protect resource retrieval
Sze Enhancing Operating Systems with Network Provenance Based Policies for Systematic Malware Defense
Saisi All Your BASE Are Belong To You: Improved Browser Anonymity and Security on Android
Privileges Privileges, Permissions, & File I/O

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080513

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090309

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090319

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4757873

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140610

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

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

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