JP2007513409A - コンピューティング装置における資源の割振り - Google Patents

コンピューティング装置における資源の割振り Download PDF

Info

Publication number
JP2007513409A
JP2007513409A JP2006540595A JP2006540595A JP2007513409A JP 2007513409 A JP2007513409 A JP 2007513409A JP 2006540595 A JP2006540595 A JP 2006540595A JP 2006540595 A JP2006540595 A JP 2006540595A JP 2007513409 A JP2007513409 A JP 2007513409A
Authority
JP
Japan
Prior art keywords
file
server
handle
resource
computing device
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.)
Pending
Application number
JP2006540595A
Other languages
English (en)
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 JP2007513409A publication Critical patent/JP2007513409A/ja
Pending legal-status Critical Current

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Hardware Redundancy (AREA)

Abstract

コンピューティング装置の操作において、あるプロセスが別のプロセスに割り振られた資源を利用できるようにするために、前記プロセスに安全なハンドルが割り振られる。前記安全なハンドルは、前記プロセスが前記資源を識別できないこと、及び前記安全なハンドルの割振りによって可能となった前記資源の何らかの利用を前記プロセスが終了して以降は前記資源へのさらなるアクセスが禁止されることを保証する。

Description

本発明は、コンピューティング装置を操作する方法に関し、詳細には、コンピューティング装置上で実行されるプロセスが使用する資源を割り振る方法に関する。
以下で使用するコンピューティング装置という用語は、どんな形態の電気装置をも網羅すると広義に解釈すべきであり、それには、任意の形態のデジタルスチルカメラやデジタルムービーカメラなどのデータ記録装置、ハンドヘルドコンピュータ及びパーソナルコンピュータを含めた任意のタイプ又は形態のコンピュータ、並びに携帯電話や、スマートフォンや、単一のデバイス内に通信、画像の記録及び/又は再生、及びコンピューティング機能を兼ね備えたコミュニケータ(communicators)や、その他の形態の無線及び有線情報デバイスを含めた、任意の形状因子の通信装置が含まれる。
一般に、コンピューティング装置はオペレーティングシステムの制御下で動作するようにプログラムされる。オペレーティングシステムは、コンピューティング装置の中央処理装置にコードの形で送り込まれる一連の命令によってコンピューティング装置を制御する。このような命令は、オペレーティングシステムによってスケジュールされた一連の準自律的な実行基本単位と見なすことができる。このような実行基本単位はそれぞれスレッドとして知られており、コンピューティング装置で実施されるプロセスは必ず1つ又は複数のスレッドを含む。従って、典型的なオペレーティングシステムは、コンピューティング装置のアプリケーションプログラムによって実施される様々なタスクを制御するために、多くの異なるスレッドをスケジュールする。
現在、多くの異なる形態のコンピューティング装置が使用されており、その中にスマートフォンという形態の無線情報装置がある。この装置は、本質的には通信ネットワークに無線接続された単一ユーザ・オペレーティングシステムであるオペレーティングシステムの制御下で動作する。スマートフォンで使用されるオペレーティング・システムの一例は、英国のSymbian Limited of Londonから提供されるSymbian OS(登録商標)オペレーティング・システムである。
無線通信装置用のオペレーティングシステムについていえば、コンピューティング装置上で実行されるオペレーティングシステム及びクライアントアプリケーションプログラムは様々なタイプの構成要素に分割することができ、これらの構成要素間には様々な境界がある。これらの構成要素の内のあるものは、一般にカーネルと呼ばれ、それらの構成要素は、コンピューティング装置のハードウェア資源及びソフトウェア資源を管理するために使用される。このような資源には、コンピューティング装置用のハードウェア資源とソフトウェア資源の両方、例えばデバイスメモリ、セマフォ(semaphore)、ミューテクス(mutex)、チャンク(chunk)、メッセージキュー、スレッド、及びデバイスチャネルが含まれ得る。これらの資源は、当業者には周知であり、従って本発明との関連ではこれ以上説明しない。
カーネル構成要素とコンピューティング装置上の他の構成要素との間の境界は、特権境界(privilege boundary)として知られる。カーネルは、クライアントアプリケーションプログラム、例えばスプレッドシート、ワードプロセッサ、或はウェブブラウザプログラムを含めた、コンピューティング装置内に格納されている他の全てのソフトウェア資源が、これらの資源にアクセスできる方法を提供し制御する。カーネル構成要素はまた、オペレーティングシステムの他の部分のためのある種のサービスを提供し、従って、ユーザコマンドと対話するオペレーティングシステムのアウター又はシェルの構成要素とは対照的である。
大部分のコンピューティング装置は、一時に1つの命令しか実行できない。しかし、このようなコンピューティング装置は高速で動作するので、同時に多くのアプリケーションプログラムを走らせ、従って多くのアプリケーションを処理しているように見える。この一見同時に見える動作を達成するために、オペレーティングシステムは、選択された各アプリケーションプログラムに、コンピューティング装置で実行される際に「セッション」を与える。その場合、選択されたプログラムは、セッションが与えられた別のアプリケーションプログラムがコンピューティング装置で実行されている間、待たなければならない。オペレーティングシステムは、これらの各プログラムを、そのタスクを実施するためにコンピューティング装置のある資源が識別され制御される対象となる1つのタスクと見なす。オペレーティングシステムは、1つ又は複数のサーバを使用してこれら複数のアプリケーションにサービスする。この意味でサーバは、コンピューティング装置の1つ又は複数の資源をある程度まで管理する、ユーザインターフェースをもたないプログラムと見なすことができる。サーバは通常、クライアントアプリケーションプログラム(クライアントとしても知られる)が、サーバによって提供されるサービスへのアクセス権を得ることができるように、アプリケーションプログラムインターフェースを提供する。これらのクライアントアプリケーションは、必ずしもアプリケーションプログラムに限られるわけではなく、他のサーバも含み得る。
各サーバは一般に、それ自体のプロセス内で動作し、サーバとその各クライアントとの間の境界はプロセス境界として知られる。アプリケーションプログラムもまた、それぞれのプロセス内で動作し、あるアプリケーションのプロセスと別のアプリケーションのプロセスとの間の境界もプロセス境界として知られる。従ってプロセスを、オペレーティングシステムを保護する基本単位と見なすことができる。というのは、各プロセスがそれ自体のプロセス境界によって定義され、これらのプロセス境界はカーネルの制御の下でなければ越えることができないからである。サーバ並びにアプリケーションプログラムの各プロセスは、オペレーティングシステムによって、コンピューティング装置内にそれ自体のアドレス空間が与えられる。
コンピューティング装置用の大部分のオペレーティングシステムは、マルチタスク処理及びマルチスレッド処理の両方のサポートを提供する。また、システムが各スレッドごとに新しいプロセスを生成するオーバーヘッドを免れるように、プログラムプロセス内でのマルチスレッド処理も可能にする。このようにして、そのプロセスで実行されるアプリケーションプログラムによって使用される仮想アドレスを、コンピューティング装置の読取り専用メモリ(ROM)又はランダムアクセスメモリ(RAM)内の物理アドレスに変換することができる。この変換は、カーネルの一部を形成するメモリ管理ユニットにより、例えば、読取り専用メモリは共用されるが、あるプロセスで使用される書込み可能なメモリは、通常別のプロセスからアクセス可能でないように管理することができる。
しかし、コンピューティング装置が効率よく動作するためには、カーネルの制御下で資源を共用することが大いに望ましい。これを達成することのできる1つの方法は、ハンドルを使用することである。ハンドルとは、ある資源に、それが使用目的で作成又は開かれた時に、オペレーティングシステムが割り当てる一意の一時的な識別子と見なすことができる。オペレーティングシステム内で動作するプロセスは、資源を使用する必要があるときには必ずハンドルを使用して資源を参照し、ハンドルは当該の資源が閉じられるか削除されるまで有効となる。ハンドルとオブジェクトの間には多くの関係があり得る。例えば、あるハンドルを特定の一オブジェクトに関連付けることもできるし、或はいくつかのオブジェクトに関連付けることもできる。個々のハンドルは通常、それが1つのアプリケーションにだけ有効であるように定義される。例えば、あるハンドルは単一のスレッドについてだけ有効でもよく、単一のプロセスの中の全てのスレッドについて有効でもよい。また、複数のアプリケーションが同一の資源に対し、それぞれ独自のハンドルをもつことも可能であり、さらには、同一資源の単一のコンテクスト中に複数の一意のハンドルが存在することさえ可能である。これは、既存の命名済み資源に対して新しいハンドルを開くことによって達成するか、又は何らかの方法でハンドルを複製して「新しい」ハンドルを作り出すことによって達成することができる。
2つ以上のプロセスが同じ資源にアクセスできることが、時には必要或は有益であり、従って、それぞれがこの資源に対するそれ自体のハンドルをもつ。このような資源「共用」により、プロセス間の連携が可能になり、或はより効率的な動作方法が得られる。第1のプロセスの識別及び第1のプロセスがもつその資源に対するハンドルが与えられている場合、かかる共用を可能にするためにハンドルを複製する方法の1つは、第2のプロセスが新しいハンドルをカーネルに要求することである。実際には、通常、ハンドルは数値であり、従って悪意あるプログラムが、可能性のあるハンドル値を全て試すことによって、最終的には、別のプロセスによって利用されているあらゆる資源に対する複製ハンドルを獲得できるようになるはずである。従って、資源は今や、共用を意図されていなかったものも含めて、全て、悪意あるプログラムからアクセス可能となる。従って悪意あるプログラムにより、第1のプロセスが正しく動作できなくなる。言い換えると、オペレーティングシステムは、コンピューティング装置上で実行される全てのアプリケーションが動作し続けることを保証するために制御することが必要な資源に対する制御を、実際に失うことがあり得る。
従って本発明の目的は、プロセス間で資源をより安全に共用できるように、コンピューティング装置内でハンドルを提供するための改善された方法を提供することである。
本発明の第1の態様によれば、コンピューティング装置を操作する方法であって、あるプロセスが別のプロセスに割り振られた資源を利用できるようにするために、そのプロセスにハンドルを割り振るステップと、そのプロセスがその資源を識別できないようにそのハンドルを構成するステップと、ハンドルの割振りに起因する、そのプロセスによる資源の利用が終了して以降は、そのプロセスによるその資源への更なるアクセスを禁止するステップとを有する方法が提供される。
本発明の第2の態様によれば、第1の態様の方法に従って動作するように構成されたコンピューティング装置が提供される。
本発明の第3の態様によれば、第1の態様の方法に従ってコンピューティング装置内でハンドルの割振りをもたらすコンピュータプログラムが提供される。
次に、本発明を、さらに単なる例により好ましい実施形態に則して説明する。
第3世代プロトコルを使用する新世代の無線電話が利用可能になりつつある。このプロトコルは、主として音声以外のアプリケーション、例えばフルモーションビデオ、ビデオ会議、フルインターネットアクセス用に意図されたはるかに高いデータレートをサポートする。この電話は現在3G通信として知られてきており、この電話で用いられる無線通信装置は、スマートフォンとして広く知られてきている。
3G通信のサービス品質条件により、スマートフォン中でこういった通信を実施するために使用される通信スタックを実施するソフトウェアに対して応答時間要件が課される。しかし一般には、スマートフォンのオペレーティングシステムサーバが、コンピューティング装置上で実行されるクライアントアプリケーションの全てに対して応答時間の保証をすることは不可能である。
例えば、コンピューティング装置によってサービスされるSMS,EMS,MMS、電子メール及びFAXなどのメッセージは全て、厳密に先入れ先出し(FIFO)順で処理される。これら様々なタイプのメッセージは、それ自体のアプリケーションプログラムを必要とし、従って各メッセージは、それぞれのサーバに対するクライアントと見なすことができる。しかし、サーバは、通常、接続されるクライアントの数やサービスを待つメッセージの数について制約されていない。コンピューティング装置によってサービスされるクライアントには通常、優先順位が与えられる。例えば、電子メールメッセージは、SMSメッセージより高い優先順位をもつと見なされることがある。しかし上記の事情ゆえに、1つ又は複数のより低い優先順位のクライアントがコンピューティング装置のサービスを待っているという理由で、その「より高い優先順位」のクライアントが、その要求がコンピューティング装置によって処理されるまで、いつまでも待たなければならないことがある。この状況で、既存のクライアント/サーバコードを用いて、より高い優先順位のクライアントにある程度の応答時間の保証を与える唯一の方法は、そのクライアント用の専用サーバを設けることである。しかし、無線通信装置用の典型的なオペレーティングシステムでは、サーバは全てグローバルにアクセス可能な資源であり、従って、上記で概略を説明したように、サーバに対するハンドルを獲得してそのサーバへの接続を試みるローグアプリケーションによるサービス拒否攻撃に対して脆弱である。
本発明によれば、サーバは、アプリケーションがアクセスできる、コンピューティング装置内の他のどの資源とも同じように、匿名サーバを作ることによって攻撃に対する脆弱性が低減される。それにより、クライアントアプリケーションは、サーバの実際の識別ではなく、安全なサーバハンドルを使用してサーバに接続される。この場合、クライアントアプリケーションとサーバの間の専用接続は、既存のクライアント/サーバ接続を用いてコンピューティング装置内の専用通信チャネルを要求することによってセットアップされる。この要求が発行されると、サーバは、要求されたサーバの無名インスタンス化、つまり安全なハンドルを作成し、クライアントアプリケーション用のセッションをこのインスタンス化されたサーバに接続する。次いで、当技術分野では典型的である、「オープン」ハンドル(‘open’handle)と同じやり方で、その結果得られるセッションをオープン共用メカニズム(open sharing mechanism)を介してクライアントアプリケーションに戻す。このようにサーバの無名インスタンス化を行うことにより、サーバは、資源への専用通信チャネルを要求する、いかなるクライアント要求でも認証できるようになる。従って、この提供された機能の乱用を防ぐことができ、更には、この機能によって与えられる便益をいつでも取り除くことができる。
従って、本発明によれば、Symbian OS(商標)のAPIを例として用いると、IPC(inter process communication、プロセス間通信)メッセージを介してファイルサーバセッションをクライアントアプリケーションに安全に戻すために必要なのは、次のコードだけである。
RFs fs;
User::LeavelfError(fs.Connect());
User::LeavelfError(fs.ShareProtected());
User::LeavelfError(message.Complete(fs))
従って、プロセス境界をまたぐ共用を含む、効率よく堅牢な「共用可能」セッションが本発明の方法を用いて達成できることが、このコードシーケンスから見て取ることができる。
ハンドルを使用して、プロセス境界をまたいでセッションを共用する周知の方法を用いる場合、セッションとサブセッションはそれらを作成したプロセスから逃れることは不可能であるし、プロセスはそのセキュリティ識別又は諸機能を変更することができない。従って、サーバは、セッション又はサブセッションのユーザが、セッション又はサブセッションの作成元と同じセキュリティ属性を持つと仮定することができるはずである。
従って、一部のオペレーティングシステムでは、共用可能なセッションをサポートする機能をサーバにデフォルトオプションで与えることは、適切でないと考えられる。この場合に、安全なハンドルが使用可能になる前に、プロセス境界をまたいで転送されるセッションを正しくサポートできることをサーバが必ず明示的に示さなければならないように、オペレーティングシステムを構成することができる。従って、クライアントアプリケーションにこの便宜を与えることのできるサーバは、好ましくは、それ自体を潜在的なローグクライアントから、またクライアントをクライアント相互から適切に守ることができると断定するために、一連のセキュリティチェックを行えるように構成されるべきである。
更に、この安全なハンドル機能を使用すると決めたクライアントアプリケーションも、好ましくは、セキュリティ問題を認識するように構成されるべきである。例えば、2つのプロセス間で共用されるファイルサーバセッションの場合、各プロセスは、同じセッションで他方のプロセスが開いたどのファイルにもアクセスできることになる。従って、かかる共用セッションは、当該セッション中に共用される予定のファイルを開くためにだけ使用されることが好ましい。その他のファイルは、完全に専用の(private)セッションを使用するときにだけ開かれるべきである。或は、同じセッションを使用する場合でも、各プロセスが、他方のプロセスのデータかご(data cage)内の他のどのファイルも見ることができないようなやり方で、ファイルサーバを実装することも可能である。
更に、コンピューティング装置上で電子商取引を行うある種のアプリケーションでは、セキュリティを危うくせずにカスタムフォントを使用することが必要になることがある。このようなタイプのアプリケーションを使用する場合、フォントは通常、フォントビットマップサーバとして知られるサーバ内で提供され、フォントファイルは改ざんから保護するためにそのサーバのデータかご内に保持される。これらのフォントの一部は、セキュリティレベルを高めると考えられるので、「専用の信頼される」フォント(‘private trusted’fonts)として知られる。従って、これら「専用の信頼される」フォントの識別は極めて安全に保たれる必要があり、他のアプリケーションがそれらを絶対に使えないようにするために、通常、当該アプリケーションのデータかご内の一ファイルに維持されることになる。
フォントビットマップサーバは、このデータを収めたファイルを見ることができず、従って商取引が発生すると、サーバにこのフォントファイルを転送する方法が必要になる。従来の処理技術では、サーバが一時的にでさえ、このファイルにアクセスできるようにするためにファイルハンドルが使用されることはない。従って、かかるファイルをアプリケーションからサーバに転送しなければならないとき、そのアプリケーションとサーバの間のプロセス境界をまたいで転送が起こることはない。その代わりに、このファイルを転送する全ての通信が、オペレーティングシステムのカーネルによって経路指定される。しかし、これはCPUの時間、RAMの使用、及び/又はファイルシステムの使用という点で高くつく。これは、例えばスマートフォンで典型的に見られるような、比較的制約された物理資源をもつコンピューティング装置では深刻な欠点になり得る。しかし、本発明の方法を使用すれば、信頼されるクライアントアプリケーションを、安全なファイルハンドル及びセッションだけをサーバに渡すように構成することができ、そうするとサーバは、ファイルの識別を決定せずに、安全なファイルを、クライアントアプリケーションのデータかご内のそれが置かれている場所から直接読み取ることができる。従って、ファイルの安全な識別は維持されるが、コンピューティング装置の改善された効率よい動作がもたらされる。
スマートフォンを含めた移動通信装置でのメッセージサービスの利用がかなり増加してきていることがよく報告されている。これらの装置用のオペレーティングシステムは通常、メッセージサーバを含み、メッセージデータベースはメッセージサーバのデータかごに維持される。このデータベースはまた、通常、メッセージの一部として通信用の添付物を含む。
添付物を見る際、関連するアプリケーションが実行されて、文書内容にアクセスする必要がある。しかし、このアプリケーションは、この文書を保持するメッセージストア内のファイルを見ることができない。考えられる解決策は全て、特にインストールパッケージなど特に大きなファイルを考えると、かなりの負荷及び難点を有する。そうした解決策には、以下のものが含まれる。
・ファイルを一時的な公開位置(public location)にコピーする:これは時間がかかり、ファイルシステム空間を無駄にし、セキュリティ上問題である。
・ファイルをチャンクで、即ち断片的に、開始されたアプリケーションに転送する。やはり、これも時間及びデバイスメモリの負担となる。ファイル内容のセキュリティはより容易に維持できるが、ファイル転送は実際に実装するのが比較的複雑である。
本発明では、その代わりに、添付文書を識別するのではなく、それへのアクセス権を与える安全なファイルハンドルを、メッセージサーバからアプリケーションに渡すことができる。そうすると、アプリケーションはファイル内容を直接、効率的に、但し余計なセキュリティリスクなしに、抽出することができる。
以下のコードは、ファイルサーバがSymbian OS(商標)オペレーティングシステムを用いて、安全にファイルハンドルを共用できるようにするために必要となるはずの変更を例示したものである。このコードはまた、クライアントアプリケーションにおける使用パターンも例示している。このオペレーティングシステムでは、アプリケーションプログラムからファイルサーバへのセッションは、用語RFsによって示される。
まず、ファイルサーバは、セッションがグローバルに共用できることをオペレーティングシステムのカーネルに報告できるように構成される。これはファイルサーバのベース・コンストラクタ・コール(base-constructor call) CServerFsを置き換える、即ち、
:CServer(aPriority,ESharableSessions)

:CServer(aPriority,EGlobalSharableSessions)
で置き換えるだけの単純な問題である。
ファイルサーバは、ファイルサーバセッションが別のプロセスと安全に共用できるような方式で、既にそのセキュリティ検査を実施している。具体的には、ファイルを開くといった作業を実施するとき、要求元の機能及び識別を検査し、セッション中に、キャッシュされた情報に依拠することはない。従って、プロセスAがファイルサーバセッションに対するハンドルをプロセスBに渡す場合、プロセスBは、プロセスBのデータかご内のファイルを開くことしかできず、プロセスAはプロセスBのデータかご内のファイルを開くことしかできない。
しかし、オープンサブセッションオブジェクトは、クライアントアプリケーションがサブセッションへのフルアクセス権を持つことを前提とする作業を実施することができる。具体的には、コードRFile::Rename()は、ファイルを、それが置かれているディレクトリから実際に動かす。従ってこの場合、オリジナルファイルがその動作を要求するクライアントアプリケーションのデータかご内に見つからない場合に、このファイルの移動を妨げるための余分の検査を、このコードの実装に加えるべきである。もう一方のファイルサーバAPIもまた、そのセッションを共用することにより生じるセキュリティ問題が他にないことを保証するために検査されるべきである。
完全を期すため、クライアントアプリケーションがサブセッションハンドルをはっきりと安全に渡すことができるようにするためのサポートもなされるべきである。プロセスAがRFs及びRFile::SubSessionHandle()をプロセスBに渡すことができたと仮定する。第1の問題は、戻されたRFs及びファイルハンドルを用いてRFileのiSession及びiSubSessionHandleを設定する明確な方法がないことである。この問題を是正する1つの単純な方法は、RSubSessionBaseに、次のようなことを行う単純な機能を導入することである。
void RSubSessionBase::Set(const RSessionBase& aSession, Tlnt aHandle)
{iSession=aSession;iSubSessionHandle=aHandle;}
しかし、そうすると、これにより、プロセスBは、プロセスAがサブセッションハンドルとしてガーベッジ値(garbage value)を渡し、Bがそのハンドルを認証できないという可能性にさらされる。プロセスBがRFileオブジェクトを使うとすぐに、それはファイルサーバによってパニス(paniced)される。その代わりに、ファイルサーバは、明示的に関与し、かかる転送に対するハンドル認証を与えることによってこの作業をサポートすべきである。即ち、
Tlnt RFite::Adopt(RFs&aFs, Tlnt aHandle);
この認証は、もう一方の「オープン」APIと同じように機能し、「新しい」サブセッションを確立する。ファイルサーバ内で、この関数は次のようなプロセスステップを開始する。
(a)ハンドル(aHandle)が、与えられたセッションにおけるファイル制御ブロックに対する真のハンドルであることを検査する(そうでない場合、KErrBadHandleを返す)、
(b)同じファイル制御ブロックに対する新しいサブセッションハンドルを作成し、これをクライアントアプリケーションに返す、
(c)古いサブセッションハンドルをセッションから破棄する(それにより実際にその古いハンドルは無効となる)。
APIが「複製」ではなく「所有権を移転する」という言葉で表されるのは、対称だからである。即ち、それをクライアントからサーバへの転送とサーバからクライアントへの転送に用いるパターンが本質的に同じなのである。
これを、他のファイルサーバサブセッションオブジェクトに対して行うことが望ましい場合、APIはRfileのそれではなく、一般的なRfsBaseのそれとすることができるはずである。
以下の例は、どのようにして、本発明による安全なファイルハンドルが、コードを用いて渡され、APIを用いてプロセスBがプロセスAのデータかご内のファイルにアクセスできるようにすることができるかを示す。プロセスA及びBは、クライアント/サーバ接続を有すると仮定し、Aがクライアントであるシナリオに加えて、Aがサーバであるシナリオも示してある。
先に述べたように、共用されるファイルサーバセッションでは、各プロセスが、同じセッションで他方のプロセスによって開かれたどのファイルにもアクセスできることになる。従って、この問題に対する予測される解決策は、共用されている各ファイルごとに専用のセッションを使用することである。以下で説明する例では、プロセスAはファイル上にオープンハンドルを維持する必要がなく、従ってプロセスAは、プロセスBがセッションに対するそれ自体のハンドルを有することを知ると、直ちにそのセッションを閉じることができる。これにより、プロセスAが他の作業用のセッションを不用意に使用してしまったり、偶然にその専用データをプロセスBにさらしてしまったりするリスクが最小限になることが保証される。
以下のコード例では、明瞭さを損なわないようサーバインフラストラクチャは省略してあり、値ElpcPassFileは、クライアント/サーバプロトコルで使用されるIPC要求の値であり、KTheFileはファイル名である。
従って、Symbian OS(商標)を用いて、安全なハンドルを使用し、プロセスAをクライアント、次いでサーバとして使用して、プロセスAとプロセスBの間でファイルを受け渡すコードの例は、以下のようになり得る。
プロセスAをクライアントとして
プロセスAのコード:
RFs fs;
User::LeavelfError(fs.Connect());
CleanupClosePushL(fs);
User::LeavelfError(fs.ShareProtected());
RFile file;
User::LeavelfError(file.Open(fs.KTheFile,EFileWrite));
Tlnt ssh=file.SubSessionHandle();
User::LeavelfError(ipc.SendReceive(ElpcPassFile,TlpcArgs(fs,ssh)));
CleanupStack::PopAndDestroy(&fs);
プロセスBのコード(ファイルを同期的に使う)
RFs fs;
User::LeavelfError(fs.Open(message,0));
CleanupClosePushL(fs);
RFile file;
User::LeavelfError(file.Adopt(fs,message.lnt1()));
CleanupClosePushL(file);
//now use the file...
CleanupStack::PopAndDestroy(2,&fs);
message.Complete(KErrNone);
プロセスBのコード(ファイルを非同期的に使う)
RFs fs;
User::LeavelfError(fs.Open(message,0));
CleanupClosePushL(fs);
RFile file;
User::LeavelfError(file.Adopt(fs,message.lnt1()));
CleanupStack::Pop(&fs);
//now stash fs/file somewhere safe,close them when finished
message.Complete(KErrNone);
プロセスAをサーバとして
プロセスAのコード:
RFs fs;
User::LeavelfError(fs.Connect());
CleanupClosePushL(fs);
User::LeavelfError(fs.ShareProtected());
RFile file;
User::LeavelfError(file.Open(fs,KTheFile,EFileWrite));
message.WriteL(0,TPckgC<Tlnt>(file.SubSessionHandle()));
message.Complete(fs);
CleanupStack::PopAndDestroy(&fs);
プロセスBのコード
TPckgBuf<Tlnt> ssh;
Tlnt h=ipc.SendReceive(ElpcPassFile,TlpcArgs(&ssh));
RFs fs;
User::LeavelfError(fs.SetRetumedHandle(h));
CleanupClosePushL(fs);
RFile file;
User::LeavelfError(file.Adopt(fs,ssh()));
CleanupClosePushL(file);
//now use the file ...
CleanupStack::PopAndDestroy(2,&fs);
クライアント/サーバ接続が資源を共用できるようにする他の手段を使用することも可能である。本発明の方法はまた、カーネル資源に適用して、それらを親プロセスから子プロセスに安全に受け渡すことができるようにすることもできる。受け渡される資源の数及びタイプは、2つのプロセスによって決まり得るはずであり、従って比較的単純なAPIで間に合う。適切なAPIの例は以下のようになり得る。
RProcess::SetParameter(Tlnt alndex,RHandleBase aHandle);
このAPIは、プロセスが作成された後、但し再開される前に、プロセス上で呼び出されなければならない。これにより、ハンドルによって参照されるオブジェクトが、鍵「alndex」をもつプロセス環境に付け加えられることになる。
RMutex::Open(Tlnt aArgumentlndex, TOwnerType aType=EOwnerProcess);
「alndex」という鍵の付いたミューテックス資源に対するハンドルを得るために、子プロセスによって呼び出される。これは異なる各鍵値ごとに一度だけ呼び出すことができる。同様のAPIが、この方法で共用できる全ての資源タイプ用に存在するはずである。
本発明を特定の実施形態に則して説明してきたが、添付の特許請求の範囲によって定義される本発明の範囲を逸脱することなく変更形態が成立し得ることが理解されよう。

Claims (14)

  1. コンピューティング装置を操作する方法であって、
    あるプロセスが、別のプロセスに割り振られた資源を利用できるようにするために、前記プロセスにハンドルを割り振るステップと、
    前記プロセスが前記資源を識別できないように前記ハンドルを構成するステップと、
    前記ハンドルの割振りに起因する前記プロセスによる前記資源の利用が終了した後は、前記プロセスによる前記資源への更なるアクセスを禁止するステップと、
    を有することを特徴とする方法。
  2. 前記別のプロセスに割り振られた複数の資源が前記プロセスによって利用できるように前記ハンドルが構成されることを特徴とする請求項1に記載の方法。
  3. 前記別のプロセス以外の複数のプロセスが、前記別のプロセスに割り振られた前記資源を利用できるように前記ハンドルが構成されることを特徴とする請求項1又は2に記載の方法。
  4. 前記資源が、コンピューティング装置のメモリ、セマフォ、ミューテクス、チャンク、メッセージ・キュー、スレッド、ファイル、或はデバイス・チャネルのうちの少なくとも1つを含むように選択されることを特徴とする請求項1乃至3のいずれか1項に記載の方法。
  5. 前記資源がファイルを含む場合、前記ファイルが前記別のプロセス用の信頼されるフォント・ファイル又はメッセージ添付ファイルのうちの少なくとも1つを含むことを特徴とする請求項4に記載の方法。
  6. 前記資源は、前記別のプロセス内のデータかごに存在していることを特徴とする請求項4又は5に記載の方法。
  7. 前記プロセスは、ファイル・サーバを含むように選択されることを特徴とする請求項1乃至6のいずれか1項に記載の方法。
  8. 前記ファイル・サーバが、それが前記サーバに対する前記ハンドルの割振りに先立って前記資源の利用をサポートできることを、前記コンピューティング装置用のオペレーティング・システムのカーネルに示すように構成されることを特徴とする請求項7に記載の方法。
  9. 前記サーバに対するファイル・ハンドルの割振りと同時に、前記サーバとの通信セッションを終了するように前記別のプロセスが構成されることを特徴とする請求項7又は8に記載の方法。
  10. 前記別のプロセスが親プロセスを含み、前記プロセスが子プロセスを含み、前記資源が前記コンピューティング装置用のオペレーティング・システムのカーネル資源を含むことを特徴とする請求項1に記載の方法。
  11. 前記ハンドルは、前記資源へのアクセスを必要とするサーバの無名インスタンス化として与えられることを特徴とする請求項1乃至10のいずれか1項に記載の方法。
  12. 請求項1乃至11のいずれか1項に記載の方法に従って動作するように構成されたコンピューティング装置。
  13. 無線通信装置を含む請求項12に記載のコンピューティング装置。
  14. 請求項1乃至11のいずれか1項に記載の方法に従ってコンピューティング装置を動作させるコンピュータ・ソフトウェア。
JP2006540595A 2003-11-21 2004-11-19 コンピューティング装置における資源の割振り Pending JP2007513409A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0327261A GB2408361B (en) 2003-11-21 2003-11-21 Allocation of resources in a computing device
PCT/GB2004/004886 WO2005052787A2 (en) 2003-11-21 2004-11-19 Allocation of resources in a computing device

Publications (1)

Publication Number Publication Date
JP2007513409A true JP2007513409A (ja) 2007-05-24

Family

ID=29764319

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006540595A Pending JP2007513409A (ja) 2003-11-21 2004-11-19 コンピューティング装置における資源の割振り

Country Status (5)

Country Link
US (1) US20070294698A1 (ja)
EP (1) EP1687718A2 (ja)
JP (1) JP2007513409A (ja)
GB (1) GB2408361B (ja)
WO (1) WO2005052787A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2415065B (en) 2004-06-09 2009-01-21 Symbian Software Ltd A computing device having a multiple process architecture for running plug-in code modules
US8161544B2 (en) 2006-07-19 2012-04-17 Microsoft Corporation Trusted communications with child processes
GB2466050A (en) * 2008-12-10 2010-06-16 Symbian Software Ltd Initiation of a telecommunications device
US8194572B2 (en) * 2009-06-15 2012-06-05 Motorola Mobility, Inc. Method and apparatus for increasing performance of a wireless communication system
WO2011001209A1 (en) * 2009-06-29 2011-01-06 Nokia Corporation Resource allocation in a computing device
US9098521B2 (en) * 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
US8601484B2 (en) * 2010-09-15 2013-12-03 Qualcomm Incorporated System and method for managing resources and markers of a portable computing device
US8631414B2 (en) 2010-09-15 2014-01-14 Qualcomm Incorporated Distributed resource management in a portable computing device
US9152523B2 (en) 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
US8615755B2 (en) * 2010-09-15 2013-12-24 Qualcomm Incorporated System and method for managing resources of a portable computing device
US8806502B2 (en) 2010-09-15 2014-08-12 Qualcomm Incorporated Batching resource requests in a portable computing device
US9197643B2 (en) 2013-07-22 2015-11-24 Bank Of America Corporation Application and permission integration
US9027106B2 (en) * 2013-08-14 2015-05-05 Bank Of America Corporation Organizational attribution of user devices
US9710622B2 (en) * 2015-02-23 2017-07-18 Intel Corporation Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802590A (en) * 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
JPH10301856A (ja) * 1997-02-28 1998-11-13 Fujitsu Ltd ファイルアクセスシステムおよび記録媒体
JP2002519764A (ja) * 1998-06-23 2002-07-02 マイクロソフト コーポレイション 参照ハンドルの生成および検証

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5469556A (en) * 1989-12-12 1995-11-21 Harris Corporation Resource access security system for controlling access to resources of a data processing system
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
EP0834806B1 (en) * 1996-08-28 2008-04-23 Hitachi, Ltd. Process executing method and resource accessing method in computer system
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6157829A (en) * 1997-10-08 2000-12-05 Motorola, Inc. Method of providing temporary access of a calling unit to an anonymous unit
EP1057105B1 (en) * 1998-02-26 2003-05-14 Sun Microsystems, Inc. Method and system for leasing storage
US6178423B1 (en) * 1998-06-23 2001-01-23 Microsoft Corporation System and method for recycling numerical values in a computer system
GB2342195A (en) * 1998-09-30 2000-04-05 Xerox Corp Secure token-based document server
US7103625B1 (en) * 1999-10-05 2006-09-05 Veritas Operating Corporation Virtual resource ID mapping
US6934757B1 (en) * 2000-01-06 2005-08-23 International Business Machines Corporation Method and system for cross-domain service invocation using a single data handle associated with the stored common data and invocation-specific data
GB2364143A (en) * 2000-06-30 2002-01-16 Nokia Corp Resource allocation
US7461148B1 (en) * 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with isolation of system components
US6971017B2 (en) * 2002-04-16 2005-11-29 Xerox Corporation Ad hoc secure access to documents and services
KR100450402B1 (ko) * 2002-04-17 2004-09-30 한국전자통신연구원 컴퓨터 시스템에 있어서 보안속성을 갖는 토큰을 이용한접근 제어방법
FI116166B (fi) * 2002-06-20 2005-09-30 Nokia Corp Menetelmä ja järjestelmä sovellusistuntojen suorittamiseksi elektroniikkalaitteessa, ja elektroniikkalaite
KR20040012540A (ko) * 2002-07-31 2004-02-11 마쯔시다덴기산교 가부시키가이샤 정보처리단말 및 정보처리방법
US6856317B2 (en) * 2003-04-16 2005-02-15 Hewlett-Packard Development Company, L.P. System and method for storing public and secure font data in a font file
US20060026692A1 (en) * 2004-07-29 2006-02-02 Lakhani Imran Y Network resource access authentication apparatus and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802590A (en) * 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
JPH10301856A (ja) * 1997-02-28 1998-11-13 Fujitsu Ltd ファイルアクセスシステムおよび記録媒体
JP2002519764A (ja) * 1998-06-23 2002-07-02 マイクロソフト コーポレイション 参照ハンドルの生成および検証

Also Published As

Publication number Publication date
EP1687718A2 (en) 2006-08-09
GB0327261D0 (en) 2003-12-24
US20070294698A1 (en) 2007-12-20
GB2408361B (en) 2007-07-25
WO2005052787A2 (en) 2005-06-09
GB2408361A (en) 2005-05-25
WO2005052787A3 (en) 2005-11-17

Similar Documents

Publication Publication Date Title
US11146665B2 (en) Methods and apparatus for sharing and arbitration of host stack information with user space communication stacks
Schmidt et al. An overview of the real-time CORBA specification
US11848998B2 (en) Cross-cloud workload identity virtualization
JP4782771B2 (ja) コンピュータ装置におけるプロセス間通信
US6385724B1 (en) Automatic object caller chain with declarative impersonation and transitive trust
US6466982B1 (en) Exclusive use of peripheral devices
EP3837604B1 (en) In situ triggered function as a service within a service mesh
JP2007513409A (ja) コンピューティング装置における資源の割振り
JP2009009566A (ja) アクセス制御システムおよびアクセス制御方法
EP1769337A1 (en) System and method for implementing a general application program interface
US20180060249A1 (en) Code loading hardening by hypervisor page table switching
CN103514395A (zh) 插件权限控制方法及系统
US20140317630A1 (en) Data processing system with data transmit capability
US10242174B2 (en) Secure information flow
US10958654B1 (en) Resource deletion protection service
CN116805947B (zh) 区块链数据处理方法、装置、设备及计算机可读存储介质
CN114168233B (zh) 一种数据处理方法、装置、服务器及存储介质
Rosa et al. INSANE: A Unified Middleware for QoS-aware Network Acceleration in Edge Cloud Computing
US11882057B2 (en) Pluggable cloud security system
Perez et al. A CORBA based architecture for distributed embedded systems using the RTLinux-GPL platform
US20240179146A1 (en) Role-based permission delegation in a provider network
CN111989705B (zh) 有许可区块链中的优先级
Will et al. Enclave Management Models for Safe Execution of Software Components.
WO2024123341A1 (en) Allocating dedicated shared cpu
KR19980086588A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071112

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110616

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110621

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110715