(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを有するコンピュータの情報処理を用いて権限昇格攻撃へのコンピュータ・ソフトウェア・アプリケーションの脆弱性を判定するための方法であって、
コンピュータ・ソフトウェア・アプリケーションの命令のアクセス制限領域候補を識別するステップと、
前記アクセス制限領域候補を静的に分析して、前記アクセス制限領域候補への実行フローを制御する条件付き命令の有無を判定するステップと、
静的分析を実施して、前記条件付き命令が前記コンピュータ・ソフトウェア・アプリケーション内の、ユーザの認証を実施する際にユーザ入力をアプリケーション内に取り込む命令文として定義されたデータ・ソースに依存しているかを判定するステップと、
前記条件付き命令がないか、前記データ・ソースに依存していない場合、前記アクセス制限領域候補を権限昇格攻撃に脆弱であるとして指定するステップと
を含む方法。
【請求項２】
前記コンピュータ・ソフトウェア・アプリケーションの前記命令の前記アクセス制限領域候補を識別する前記ステップが、
前記アクセス制限領域候補を、前記命令のいずれかをアクセス制限命令として識別するための事前定義された基準に従って識別するステップを含む、請求項１に記載の方法。
【請求項３】
前記コンピュータ・ソフトウェア・アプリケーションの前記命令の前記アクセス制限領域候補を識別する前記ステップが、
前記コンピュータ・ソフトウェア・アプリケーション内の前記アクセス制限領域候補の手動で入力された場所を受信するステップを含む、請求項１に記載の方法。
【請求項４】
前記コンピュータ・ソフトウェア・アプリケーションの前記命令の前記アクセス制限領域候補を識別する前記ステップが、
前記アクセス制限領域候補を識別するための、前記コンピュータ・ソフトウェア・アプリケーションの差分ブラック・ボックス・テストを実行するステップを含む、請求項１に記載の方法。
【請求項５】
前記アクセス制限領域候補を識別するための、前記コンピュータ・ソフトウェア・アプリケーションの前記差分ブラック・ボックス・テストを実行する前記ステップが、
ブラック・ボックス・テスタを制御して、前記コンピュータ・ソフトウェア・アプリケーションの制限領域へのアクセスを許可されたユーザとして、前記コンピュータ・ソフトウェア・アプリケーションとの対話をシミュレートする第１のテストを実行するステップと、
前記ブラック・ボックス・テスタを制御して、前記コンピュータ・ソフトウェア・アプリケーションの制限領域へのアクセスを許可されていないユーザとして、前記コンピュータ・ソフトウェア・アプリケーションとの対話をシミュレートする第２のテストを実行するステップと、
前記テストの両方の結果を比較して、前記許可されたユーザには露出されたが、前記許可されていないユーザには露出されなかった任意のデータ入力インタフェースを識別するステップと、
前記識別されたデータ入力インタフェースと、前記識別されたデータ入力インタフェースの根底にある前記コンピュータ・ソフトウェア・アプリケーションの命令とを相互に関連付けるステップと、
前記相互に関連付けられた命令を前記アクセス制限領域候補として指定するステップと
を含む、請求項４に記載の方法。
【請求項６】
前記コンピュータ・ソフトウェア・アプリケーションの前記命令の前記アクセス制限領域候補を識別する前記ステップが、
セキュリティ上注意が必要な動作にかかわる事前定義された仕様を使用して、前記アプリケーションの命令を静的に分析するステップを含む、請求項１に記載の方法。
【請求項７】
前記コンピュータ・ソフトウェア・アプリケーションの前記命令の前記アクセス制限領域候補を識別する前記ステップが、
セキュリティ上注意が必要な動作に関する分野特有の知識にかかわる事前定義された仕様を使用して、前記アプリケーションの命令を静的に分析するステップを含む、請求項１に記載の方法。
【請求項８】
前記コンピュータ・ソフトウェア・アプリケーションによって露出されており、前記条件付き命令によって実行される認証テストにつながるそれぞれのデータ入力インタフェースに対し、
前記コンピュータ・ソフトウェア・アプリケーションの制限領域へのアクセスを許可されたユーザとして、前記データ入力インタフェースとの対話をシミュレートする第１のテストを実行するステップと、
前記コンピュータ・ソフトウェア・アプリケーションの制限領域へのアクセスを許可されていないユーザとして、前記データ入力インタフェースとの対話をシミュレートする第２のテストを実行するステップと、
前記第１のテストだけが成功した場合に、前記認証テストが有効な認証テストであることを判定するステップと
をさらに含む、請求項１に記載の方法。
【請求項９】
前記アクセス制限領域候補が権限昇格攻撃に脆弱であるとする前記指定を、コンピュータ制御された出力デバイスを介して提示するステップをさらに含む、
請求項１に記載の方法。
【請求項１０】
請求項１〜９の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１１】
権限昇格攻撃へのコンピュータ・ソフトウェア・アプリケーションの脆弱性を判定するためのシステムであって、請求項１〜９の何れか１項に記載の方法の各ステップをコンピュータのハードウェアによる手段として構成したシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・ソフトウェアのセキュリティおよび分析に関する。
【背景技術】
【０００２】
権限昇格（ＰＥ）攻撃とは、攻撃者が、制御が不十分であることもしくは存在しないことを利用して、特別許可された権限をもつ有効なユーザによるアクセスのみを対象とする、または特別許可ではない権限をもつ有効なユーザによるアクセスを対象とするが、攻撃者に対しては侵入禁止であるよう意図されているコンピュータ・ソフトウェア・アプリケーション・リソースへのアクセスを獲得しようと試みる、コンピュータ・ベースの攻撃の１つのタイプを指す。コンピュータ・ソフトウェア・アプリケーションを、その開発中に検査して、ＰＥ攻撃に脆弱かを判定することは有益である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
権限昇格攻撃へのコンピュータ・ソフトウェア・アプリケーションの脆弱性を判定することを課題とする。
【課題を解決するための手段】
【０００４】
本発明の一態様では、権限昇格攻撃へのコンピュータ・ソフトウェア・アプリケーションの脆弱性を判定するための方法が提供され、その方法には、コンピュータ・ソフトウェア・アプリケーションの命令のアクセス制限領域候補（candidate access-restricted area）を識別することと、アクセス制限領域候補を静的に分析して、アクセス制限領域候補への実行フローを制御する条件付き命令の有無を判定することと、静的分析を実施して、条件付き命令がコンピュータ・ソフトウェア・アプリケーション内のデータ・ソースに依存しているかを判定することと、条件付き命令がないか、データ・ソースがない場合、アクセス制限領域候補を権限昇格攻撃に脆弱として指定することとが含まれる。本発明を具体化する、システムおよびコンピュータ・プログラム製品も提供される。
【０００５】
本発明は、添付図面とともに取り上げられる後述の詳細な説明から、より完全に理解されよう。
【図面の簡単な説明】
【０００６】
【図１】本発明の一実施形態による、権限昇格攻撃へのコンピュータ・ソフトウェア・アプリケーションの脆弱性を判定するシステムの概念図である。
【図２】本発明の一実施形態による、図１のシステムの例示的動作方法の流れ図である。
【図３】本発明の一実施形態による、コンピュータ・ソフトウェア・アプリケーション命令の例である。
【図４】本発明の一実施形態による、コンピューティング・システムの例示的ハードウェア実装形態のブロック図である。
【発明を実施するための形態】
【０００７】
次に、１つまたは複数の実施形態に照らして本発明を説明するが、説明は、本発明を全体として例示することを意図し、したがって本発明を、示される実施形態に限定するとみなされるべきではない。本明細書に具体的に示されてはいないが本発明の趣旨および範囲内にある様々な修正形態を当業者であれば思いつくであろうことが理解される。
【０００８】
当業者には理解されようが、本発明の態様はシステム、方法、またはコンピュータ・プログラム製品として具体化され得る。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアの態様とハードウェアの態様を組み合わせた一実施形態の形をとってもよい。それらはすべて、一般に本明細書で「回路」、「モジュール」、または「システム」と呼ばれる場合がある。さらに、本発明の態様は、コンピュータ可読プログラム・コードを組み入れられた１つまたは複数のコンピュータ可読媒体で具体化されるコンピュータ・プログラム製品の形をとってもよい。
【０００９】
１つまたは複数のコンピュータ可読媒体の任意の組合せが利用されてもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、それだけに限定されるものではないが、電子的、磁気的、光学式、電磁的、赤外線式、もしくは半導体式のシステム、装置、またはデバイス、あるいは以上の任意の適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的リスト）には、次のものが含まれる。すなわち、１つもしくは複数の配線を有する電気的な接続、携帯型のコンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読出し専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、光学式データ・ストレージ・デバイス、磁気データ・ストレージ・デバイス、または以上の任意の適当な組合せである。本明細書の内容上、コンピュータ可読ストレージ媒体は、命令実行のシステム、装置、もしくはデバイスが使用するための、またはこれらに関連して使用するためのプログラムを収容、あるいは格納できる任意の有形の媒体であってもよい。
【００１０】
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードを組み入れられた伝搬されるデータ信号を、例えばベースバンド内に、または搬送波の一部として含むことができる。そのような伝搬される信号は、それだけに限定されるものではないが、電磁的、光学式、またはこれらの任意の適切な組合せを含めて、様々な形のいずれかをとることができる。コンピュータ可読信号媒体は、命令実行のシステム、装置、もしくはデバイスが使用するための、またはこれらに関連して使用するためのプログラムを通信、伝搬、あるいは伝送できる、コンピュータ可読記憶媒体ではない任意のコンピュータ可読媒体であってもよい。
【００１１】
コンピュータ可読媒体に組み入れられたプログラム・コードは、それだけに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または以上の任意の適切な組合せを含めて、任意の適当な媒体を使用して伝送することができる。
【００１２】
本発明の態様の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラム言語、および「Ｃ」プログラム言語もしくは類似のプログラム言語などの従来の手続き型プログラム言語を含む、１つまたは複数のプログラム言語の任意の組合せで記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的に、独立型のソフトウェア・パッケージとしてユーザのコンピュータ上で、部分的にユーザのコンピュータ上でまた部分的に遠隔のコンピュータ上で、または全体的に遠隔のコンピュータもしくはサーバ上で実行することができる。後半のシナリオの場合、遠隔のコンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、または外部のコンピュータへ（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）接続を行うこともできる。
【００１３】
以下で、本発明の実施形態による、方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら、本発明の態様を説明する。流れ図またはブロック図あるいはその両方のそれぞれのブロック、および流れ図またはブロック図あるいはその両方のブロックの組合せが、コンピュータ・プログラム命令によって実装され得ることが理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供可能であり、それによりコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、流れ図またはブロック図あるいはその両方のブロックもしくはブロック群で指定される機能／動作を実施するための手段を生成する。
【００１４】
これらのコンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに特定の方法で機能するよう指示できるコンピュータ可読媒体に格納可能であり、これにより、コンピュータ可読媒体に格納された命令が、流れ図またはブロック図あるいはその両方のブロックもしくはブロック群で指定された機能／動作を実施する命令を含む製品を形成する。
【００１５】
コンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードでき、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させ、コンピュータまたは他のプログラム可能装置上で実行される命令が、流れ図またはブロック図あるいはその両方のブロックもしくはブロック群で指定された機能／動作を実施するためのプロセスを提供するようなコンピュータ実施プロセスを形成する。
【００１６】
次に、本発明の一実施形態による、権限昇格攻撃へのコンピュータ・ソフトウェア・アプリケーションの脆弱性を判定するシステムの概念図である図１を参照する。図１のシステムでは、命令分類器１００が、命令をアクセス制限命令として識別するための事前定義された基準に従って、コンピュータ・ソフトウェア・アプリケーションの命令のアクセス制限領域候補を識別するのに使用されるように構成される。そのような基準は、例えば、ファイル・システムまたはデータベースへのアクセスを制御する命令を含んでもよい。これは、従来の技法に従って手動で行われてもよい。例えば、ユーザが、手動で、コンピュータ・ソフトウェア・アプリケーションのソース・コードをスキャンしてアクセス制限命令を識別し、識別された候補の場所をデータ入力インタフェースを介して命令分類器１００に入力し、その後、命令分類器１００が、好ましくは、候補場所を候補場所１０２のデータ・ストアに保存するなどである。
【００１７】
さらに、または代替方法として、命令分類器１００は、ニューヨーク州アーモンクのInternational Business Machines Corporation(TM)から販売されているＡｐｐＳｃａｎ  ＳＥ（ＴＭ）などのブラック・ボックス・テスト・ソフトウェアを使用して、アプリケーションのアクセス制限領域候補を識別するための、コンピュータ・ソフトウェア・アプリケーションの差分ブラック・ボックス・テスト（differential black-box testing）を実行する、ブラック・ボックス・テスタ１０４を制御するように構成される。この手法では、ブラック・ボックス・テスタ１０４は、ユーザが「管理者」としてアプリケーションにログインするときなどに、アプリケーションの制限領域へのアクセスを許可されたユーザとして、アプリケーションとの対話をシミュレートする。ブラック・ボックス・テスタ１０４はまた、ユーザが一般ユーザとしてアプリケーションにログインするときなどに、アプリケーションの制限領域へのアクセスを許可されていないユーザとして、アプリケーションとの対話をシミュレートする。次いで、両方のブラック・ボックス・テストの結果が、命令分類器１００によって比較されて、許可されたユーザには露出されたが、一般ユーザには露出されなかったデータ入力インタフェースを識別する。従来の技法を使用して、命令分類器１００が、識別されたデータ入力インタフェースと、識別されたデータ入力インタフェースの根底にある、アプリケーションのソース・コード命令またはバイト・コード命令とを相互に関連付け、その後、そうした相互に関連付けられた命令が、命令分類器１００によって、アクセス制限領域候補として指定される。このアクセス制限領域候補は、候補場所１０２に保存されることが好ましい。
【００１８】
さらに、または代替方法として、命令分類器１００は、セキュリティ上注意が必要な動作またはそのような動作に関する分野特有の知識、あるいはその両方にかかわる事前定義された仕様を使用して従来の技法に従ってアプリケーション命令を静的に分析することにより、コンピュータ・ソフトウェア・アプリケーションのアクセス制限領域候補を識別するように構成される。例えば、アプリケーション・プログラミング・インタフェース（ＡＰＩ）のリストを、そのアプリケーションが記述されているプログラミング言語内に事前定義してもよい。この場合、ＡＰＩは、ファイル・システム、データベース、および注意が必要な他の領域へのアクセスを、これらのＡＰＩを使用するアプリケーションの部分へのアクセスを特に許可されているユーザだけがアクセスできることになるという前提のもとで、制御することが知られている。これらのＡＰＩにアクセスする、アプリケーションの領域は、命令分類器１００によって、アクセス制限領域候補として指定され、このアクセス制限領域候補は、候補場所１０２に保存されることが好ましい。
【００１９】
静的分析器１０６は、アクセス制限領域候補を静的に分析して、実行がアクセス制限領域候補へと流れるかどうかを制御する条件付き命令の有無を判定するように構成される。そのような条件付き命令が見つからない場合、静的分析器１０６は、条件付き認証なしではアクセスを制限できないという前提のもとで、アクセス制限領域候補をＰＥに脆弱であるとして指定することが好ましい。そのような条件付き命令が見つかった場合、静的分析器１０６が、好ましくは、静的分析を実施して、条件付き命令がアプリケーション内のデータ・ソースに依存しているかを判定する。アプリケーションでは、データ・ソースが、Ｊａｖａ（Ｒ）サーブレットの「getParameter」コールなどの、ユーザ入力をアプリケーション内に取り込む命令文として定義されている。条件付き命令がデータ・ソースに依存していない場合、静的分析器１０６は、ユーザ入力へのアクセスがなければ、ユーザの認証は実施できなかったという前提のもとで、アクセス制限領域候補をＰＥに脆弱であるとして指定することが好ましい。
【００２０】
ａ）実行がアクセス制限領域候補へと流れるかどうかを制御し、ｂ）データ・ソースに依存していない、そのような条件付き命令があるアクセス制限領域候補が識別される場合には、条件付き命令によって実行されるテストが分析されて、そのテストが実際に有効な認証テストであるかを判定することができる。例えば、静的分析器１０６は、コンピュータ・ソフトウェア・アプリケーションによって露出されているどのデータ入力インタフェースがテストにつながるかを確かめる、静的分析を実施することができる。次いで、これらのデータ入力インタフェースのそれぞれに対し、命令分類器１００が、ブラック・ボックス・テスタ１０４を制御して、データ入力インタフェースを対象とする２つの要求を発行することができる。一方は、ユーザが「管理者」としてアプリケーションにログインするときなどに、アプリケーションの制限領域へのアクセスを許可されたユーザによってシミュレートされた対話の形であり、他方は、ユーザが一般ユーザとしてアプリケーションにログインするときなどに、アプリケーションの制限領域へのアクセスを許可されていないユーザによってシミュレートされた対話の形である。前者のテストだけが成功した場合、命令分類器１００が、そのテストが有効な認証テストであることを判定することが好ましい。さらに、または代替方法として、テスト、またはアクセス制限領域候補、またはデータ・ソース、あるいはそれらの組合せの記述が、そのテストが実際に有効な認証テストであるかを手動で判断し得るユーザに命令分類器１００によって提示されてもよい。
【００２１】
あるアクセス制限領域候補への複数の実行フロー・パスを示している複数の条件付き命令が見つかった場合、また特に、その条件付き命令のすべてが同じソース・データに対し、同じテストを実行するわけではない場合、この発見は、欠陥のあるプログラム実行を表すものとして後で報告できるよう、命令分類器１００によって記録されてもよい。
【００２２】
図１に示す要素のいずれもが、要素のいずれかを、コンピュータ・ハードウェア、または物理的に有形の、非一時的な、コンピュータ可読媒体において具体化されるコンピュータ・ソフトウェア、あるいはその両方の中に、従来の技法に従って実装することなどにより、コンピュータ１０８によって実行されるか、そうでなければコンピュータ１０８にアクセス可能となることが好ましい。図１のシステムの任意の要素によって収集または生成されたデータは、コンピュータ１０８によって制御されたプリンタやコンピュータ・モニタなどのコンピュータ制御された出力デバイスを介した従来の技法に従って、ユーザに提示されてもよい。
【００２３】
次に、本発明の一実施形態による、図１のシステムの例示的動作方法の流れ図である図２を参照する。図２の方法では、コンピュータ・ソフトウェア・アプリケーションの命令のアクセス制限領域候補が、命令をアクセス制限命令として識別するための事前定義された基準に従って識別される（２００）。図１を参照しながら先に述べたように、これは、手動により、またはアプリケーションの差分ブラック・ボックス・テストを実行することにより、またはアプリケーション命令を静的に分析することにより、あるいはそれらの組合せにより、実施されてもよい。各識別されたアクセス制限領域候補に対し、静的分析が実施されて、実行がアクセス制限領域候補へと流れるかどうかを制御する条件付き命令の有無を判定する（２０２）。そのような条件付き命令が見つからない場合（２０４）、条件付き認証なしではアクセスを制限できないという前提のもとで、アクセス制限領域候補がＰＥに脆弱であるとして指定される（２０６）ことが好ましい。そのような条件付き命令が見つかった場合、静的分析が実施されて、条件付き命令がデータ・ソースに依存しているかが判定される（２０８）。条件付き命令がデータ・ソースに依存していない場合（２１０）、ユーザ入力へのアクセスがなければ、ユーザの認証は実施できなかったという前提のもとで、アクセス制限領域候補がＰＥに脆弱であるとして指定される（２０６）ことが好ましい。ａ）実行がアクセス制限領域候補へと流れるかどうかを制御し、ｂ）データ・ソースに依存していない、そのような条件付き命令があるアクセス制限領域候補が識別される場合には、条件付き命令によって実行されるテストが分析されて、そのテストが実際に有効な認証テストであるかを判定することができる（２１２）。あるアクセス制限領域候補への複数の実行フロー・パスを示している複数の条件付き命令が見つかった場合、また特に、その条件付き命令のすべてが同じソース・データに対し、同じテストを実行するわけではない場合、この発見は、欠陥のあるプログラム実行を表すものとして後で報告できるよう記録されてもよい（２１４）。図２の方法を参照しながら上述したような、収集または生成されたデータは、プリンタやコンピュータ・モニタなどのコンピュータ制御された出力デバイスを介した従来の技法に従って、ユーザに提示されてもよい。
【００２４】
図１のシステムおよび図２の方法は図３に照らして示すことができ、図３は本発明の一実施形態による、データベースからユーザ・レコードを削除するコンピュータ・ソフトウェア・アプリケーションの例示的な命令を示す。図３に示す命令は、動作を開始したユーザが「admin」として識別されるか、また提供されたパスワードが正しいかを検査するテストを組み込むことにより、ＰＥ攻撃を防ぐように構成されている。同じ命令にこれらのテストがない場合、ユーザ削除の動作は依然として、ユーザ削除の動作を起動したＵＲＬが「removeUser」で終了するかを検査するテストによって「保護される」。しかし、このテストは、現在のユーザが「admin」として識別されるかどうかを判別するのに不十分であり、このため、命令はＰＥ攻撃に脆弱である。先に述べたようなブラック・ボックス・テストは、上記の例における２つのケースを区別できるはずである。「admin」およびパスワードのテストが存在する場合、シミュレートされるユーザが「admin」としてログインするときのブラック・ボックス・テストの間に、ユーザ・レコードを除外する命令だけが呼び出される。「admin」およびパスワードのテストが存在しない場合、シミュレートされるユーザが「admin」としてログインしているかどうかにかかわらずブラック・ボックス・テストの間に、ユーザ・レコードが除外されることになり、これにより、アプリケーションがＰＥ攻撃に脆弱であることが示されるはずである。
【００２５】
次に図４を参照すると、ブロック図４００は、本発明の１つまたは複数の構成要素／方法論（例えば、図１〜３に照らして説明した構成要素／方法論）をそれに従って実装することができる、本発明の一実施形態によるコンピューティング・システムの例示的ハードウェア実装形態を示す。
【００２６】
図に示すように、少なくとも１つのリソースへのアクセスを制御する技法は、コンピュータ・バス４１８または代替の接続構成を介して結合された、プロセッサ４１０、メモリ４１２、Ｉ／Ｏデバイス４１４、およびネットワーク・インタフェース４１６に従って、実装され得る。
【００２７】
本明細書における用語「プロセッサ」は、例えば、ＣＰＵ（中央演算処理装置）または他の処理回路あるいはその両方を備える処理デバイスなどの任意の処理デバイスを含むことを意図したものであることが理解されよう。また、用語「プロセッサ」は、２つ以上の処理デバイスに言及してもよく、また処理デバイスと関連付けられた様々な要素は、他の処理デバイスによって共有されてもよいことを理解されたい。
【００２８】
本明細書における用語「メモリ」は、例えば、ＲＡＭ、ＲＯＭ、固定メモリ・デバイス（例えばハード・ドライブ）、取外し可能メモリ・デバイス（例えばディスケット）、フラッシュ・メモリなどの、プロセッサまたはＣＰＵと関連するメモリを含むことを意図したものである。そのようなメモリは、コンピュータ可読ストレージ媒体とみなされる。
【００２９】
さらに、本明細書における語句「入力／出力デバイス」または「Ｉ／Ｏデバイス」は、例えば、データを処理装置に入力する１つもしくは複数の入力デバイス（例えば、キーボード、マウス、スキャナなど）、または処理装置と関連付けられた結果を提示する１つもしくは複数の出力デバイス（例えば、スピーカ、ディスプレイ、プリンタなど）、あるいはその両方を含むことを意図したものである。
【００３０】
図中、流れ図およびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品に対する可能な実装形態のアーキテクチャ、機能性、ならびに動作を示す。この点に関連して、流れ図またはブロック図における各ブロックは、特定の論理機能（複数可）を実装するための１つもしくは複数の実行可能命令を含む、モジュール、セグメント、またはコードの一部を示すことができる。また、いくつかの別の実装形態において、ブロックに記された機能が、図に記された順序以外で発生し得ることにも留意されたい。例えば、連続して示されている２つのブロックが、関係する機能に応じて、実際には実質的に同時に実行可能であり、または、そのブロックが時には逆の順序で実行可能である。また、ブロック図または流れ図あるいはその両方のそれぞれのブロック、およびブロック図または流れ図あるいはその両方のブロックの組合せが、特定の機能または動作を実行する特殊用途のハードウェア・ベースのシステムによって、あるいは特殊用途のハードウェアとコンピュータ命令の組合せによって実装され得ることにも留意されたい。
【００３１】
先に述べた要素のいずれもが、例えば、磁気もしくは光ストレージ媒体に格納された、またはコンピュータ・ハードウェア内に組み込まれたコンピュータ・プログラム命令の形などをとって、コンピュータ可読媒体において具体化されるコンピュータ・プログラム製品として実装されてもよく、さらに、コンピュータ（図示せず）によって実行されるか、そうでなければコンピュータにアクセス可能であってもよいことが理解されよう。
【００３２】
本明細書において方法および装置が特定のコンピュータ・ハードウェアまたはソフトウェアに関連して説明されている場合もそうでない場合もあるが、本明細書で説明される方法および装置は、従来の技法を使用して、コンピュータ・ハードウェアまたはソフトウェアに容易に実装され得ることが理解される。
【００３３】
本発明を１つまたは複数の特定の実施形態を参照しながら説明してきたが、説明は、本発明を全体として例示することを意図するものであり、したがって本発明を示される実施形態に限定するものとみなされるべきではない。当業者であれば、本明細書で具体的に示されてはいないが、様々な修正形態を、やはり本発明の趣旨および範囲の中で思いつくであろうことが理解される。
【図１】
0005852676.tif 000002
【図２】
0005852676.tif 000003
【図３】
0005852676.tif 000004
【図４】
0005852676.tif 000005