(57)【要約】  コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するための技術が提供される。方法は、デバイスによって、当該デバイス上の第１のコンテナ化されたアプリケーションをアクセスサーバに登録するステップと、当該デバイスによって、当該デバイス上の第２のコンテナ化されたアプリケーションをアクセスサーバに登録するステップと、第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップと、アクセスサーバに登録された第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとの間でデータを交換するステップとを含み得る。
2019501431.tif 000002
【特許請求の範囲】
【請求項１】
デバイスによって、前記デバイス上の第１のコンテナ化されたアプリケーションをアクセスサーバに登録するステップと、
前記デバイスによって、前記デバイス上の第２のコンテナ化されたアプリケーションを前記アクセスサーバに登録するステップと、
前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップと、
前記アクセスサーバに登録された前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとの間でデータを交換するステップとを含む、方法。
【請求項２】
前記アクセスサーバからインテント暗号化キー（ＩＥＫ）、ルートキーおよびセッショントークンを受取るステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のコンテナ化されたアプリケーションを前記アクセスサーバに登録するステップは、
第１のパブリック／プライベートキーを生成し、前記第１のパブリック／プライベートキーを前記第１のコンテナ化されたアプリケーションの第１のキーストアに格納するステップと、
前記アクセスサーバからの前記ＩＥＫをコンテナ化されたアプリケーションの第２のキーストアに格納するステップと、
前記生成されたパブリック／プライベートキーのパブリックキーを用いて、前記第１のコンテナ化されたアプリケーションの前記第２のキーストアを暗号化するステップと、
共有アプリケーションリストを作成し、前記第１のコンテナ化されたアプリケーションの識別情報を前記共有アプリケーションリストに追加するステップと、
前記共有アプリケーションリストを暗号化するステップとを含む、請求項２に記載の方法。
【請求項４】
前記共有アプリケーションリストは、前記アクセスサーバからの前記ルートキーを用いて暗号化される、請求項３に記載の方法。
【請求項５】
前記第２のコンテナ化されたアプリケーションを前記アクセスサーバに登録するステップは、
第２のパブリック／プライベートキーを生成し、前記第２のパブリック／プライベートキーを前記第２のコンテナ化されたアプリケーションの第１のキーストアに格納するステップと、
前記アクセスサーバからの前記ＩＥＫを前記第２のコンテナ化されたアプリケーションの第２のキーストアに格納するステップと、
前記生成された第２のパブリック／プライベートキーの第２のパブリックキーを用いて、前記第２のコンテナ化されたアプリケーションの前記第２のキーストアを暗号化するステップと、
前記共有アプリケーションリストを復号化し、前記共有アプリケーションリストに前記第２のコンテナ化されたアプリケーションの識別情報を追加するステップとを含む、請求項３に記載の方法。
【請求項６】
前記アクセスサーバはモバイル・セキュリティ・アクセスサーバ（ＭＳＡＳ）である、請求項３、４または５に記載の方法。
【請求項７】
前記第１のコンテナ化されたアプリケーションの前記識別情報は、前記第１のコンテナ化されたアプリケーションの署名およびパッケージ名を含む、請求項３、４または５に記載の方法。
【請求項８】
前記第２のコンテナ化されたアプリケーションの前記識別情報は、前記第２のコンテナ化されたアプリケーションの署名およびパッケージ名を含む、請求項５に記載の方法。
【請求項９】
前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップは、前記第１のコンテナ化されたアプリケーションによって、前記第２のコンテナ化されたアプリケーションの前記署名およびパッケージ名が前記共有アプリケーションリストに載っていると判断するステップを含む、請求項５に記載の方法。
【請求項１０】
第前記１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとの間でデータを交換するステップは、
前記第１のコンテナ化されたアプリケーションによって、暗号化されたインテントを前記第２のコンテナ化されたアプリケーションに送信するステップと、
前記第２のコンテナ化されたアプリケーションによって、前記ＩＥＫを用いて、前記暗号化されたインテントを復号化するステップとを含む、請求項１に記載の方法。
【請求項１１】
前記暗号化されたインテントは、ルートキーおよびセッショントークンで暗号化されたインテントである、請求項３、４または５に記載の方法。
【請求項１２】
前記インテントは、アクションまたはトピックについての記述を示すメッセージパッケージを含む、請求項１１に記載の方法。
【請求項１３】
前記共有アプリケーションリストが前記ルートキーを用いて復号化される、請求項５に記載の方法。
【請求項１４】
更新されたＩＥＫを前記アクセスサーバから受取るステップと、
前記第１のコンテナ化されたアプリケーションを前記アクセスサーバで認証するステップと、
前記更新されたＩＥＫを前記第１のコンテナ化されたアプリケーションによって受取るステップとをさらに含む、請求項５に記載の方法。
【請求項１５】
１つ以上のプロセッサによって実行可能な複数の命令を格納する非一時的なコンピュータ読取り可能記憶媒体であって、前記複数の命令は、前記１つ以上のプロセッサに、
デバイスによって、前記デバイス上の第１のコンテナ化されたアプリケーションをアクセスサーバに登録する動作と、
前記デバイスによって、前記デバイス上の第２のコンテナ化されたアプリケーションを前記アクセスサーバに登録する動作と、
前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認する動作と、
前記アクセスサーバに登録された前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとの間でデータを交換する動作と、を実行させる、非一時的なコンピュータ読取り可能記憶媒体。
【請求項１６】
前記アクセスサーバからインテント暗号化キー（ＩＥＫ）、ルートキーおよびセッショントークンを受取る動作をさらに含む、請求項１５に記載の非一時的なコンピュータ読取り可能記憶媒体。
【請求項１７】
前記第１のコンテナ化されたアプリケーションを前記アクセスサーバに登録する動作は、
第１のパブリック／プライベートキーを生成し、前記第１のパブリック／プライベートキーを前記第１のコンテナ化されたアプリケーションの第１のキーストアに格納する動作と、
コンテナ化されたアプリケーションの第２のキーストアに前記アクセスサーバからの前記ＩＥＫを格納する動作と、
前記生成されたパブリック／プライベートキーのパブリックキーを用いて、前記第１のコンテナ化されたアプリケーションの前記第２のキーストアを暗号化する動作と、
共有アプリケーションリストを作成し、前記第１のコンテナ化されたアプリケーションの識別情報を前記共有アプリケーションリストに追加する動作と、
前記共有アプリケーションリストを暗号化する動作とを含む、請求項１６に記載の非一時的なコンピュータ読取り可能記憶媒体。
【請求項１８】
前記共有アプリケーションリストは、前記アクセスサーバからの前記ルートキーを用いて暗号化される、請求項１７に記載の非一時的なコンピュータ読取り可能記憶媒体。
【請求項１９】
前記第２のコンテナ化されたアプリケーションを前記アクセスサーバに登録する動作は、
第２のパブリック／プライベートキーを生成し、前記第２のパブリック／プライベートキーを前記第２のコンテナ化されたアプリケーションの第１のキーストアに格納する動作と、
前記アクセスサーバからの前記ＩＥＫを前記第２のコンテナ化されたアプリケーションの第２のキーストアに格納する動作と、
前記生成された第２のパブリック／プライベートキーの第２のパブリックキーを用いて、前記第２のコンテナ化されたアプリケーションの前記第２のキーストアを暗号化する動作と、
前記共有アプリケーションリストを復号化し、前記共有アプリケーションリストに前記第２のコンテナ化されたアプリケーションの識別情報を追加する動作とを含む、請求項１７に記載の非一時的なコンピュータ読取り可能記憶媒体。
【請求項２０】
システムであって、
メモリと、
前記メモリに連結された１つ以上のプロセッサとを含み、前記１つ以上のプロセッサは、
デバイス上の第１のコンテナ化されたアプリケーションをアクセスサーバに登録するように構成され、
前記デバイス上の第２のコンテナ化されたアプリケーションを前記アクセスサーバに登録するように構成され、
前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するように構成され、
前記アクセスサーバに登録された前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとの間でデータを交換するように構成されている、システム。
【請求項２１】
第１のコンテナ化されたアプリケーションをアクセスサーバに登録するための手段と、
第２のコンテナ化されたアプリケーションを前記アクセスサーバに登録するための手段と、
前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するための手段と、
前記アクセスサーバに登録された前記第１のコンテナ化されたアプリケーションと前記第２のコンテナ化されたアプリケーションとの間でデータを交換するための手段とを含む、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本ＰＣＴ出願は、２０１６年９月１５日に提出されて「コンテナ間における信頼性の確立（ESTABLISHING TRUST BETWEEN CONTAINERS）」と題された米国非仮出願第１５／２６７，０４４号の利益および優先権を主張するものであって、さらに、２０１５年１０月２３日に提出されて「コンテナ間における信頼性のための方法（METHOD OF TRUST BETWEEN CONTAINERS）」と題された米国仮出願第６２／２４５，５３４号の利益および優先権を主張するものである（米国非仮出願第１５／２６７，０４４号はまた、米国仮出願第６２／２４５，５３４号の優先権を主張する）。上述の第１５／２６７，０４４号および第６２／２４５，５３４号の出願の内容全体は、引用によりあらゆる目的のためにこの明細書中に援用されている。
【０００２】
背景
本開示は、概して、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立することに関する。特に、本開示は、同じデバイス上で実行されるとともにオラクル・モバイル・セキュリティ・アクセスサーバなどの同じアクセスサーバに登録されたコンテナ化されたアプリケーション間におけるデータの安全な交換に関する。
【背景技術】
【０００３】
コンテナ化されたアプリケーションなどのアプリケーションがモバイルデバイスなどのデバイスにインストールされると、当該アプリケーションが開始される。デバイスのユーザは、自身が認可されたユーザであるかどうかを判断するためにアクセスサーバで自身を認証するように要求されることとなる。ユーザが認証されれば、彼らはアプリケーションおよびそのデータにアクセスすることが許可され得る。仮に、コンテナ化されたアプリケーションなどの別のアプリケーションがデバイスにインストールされ、同じアクセスサーバに登録されるとともに、当該アプリケーションが既に認証されており、セッショントークンおよびデータ暗号化キー（ルートキー）を保持している場合、シングルサインオン（single sign-on：ＳＳＯ）をアプリケーション間で実行することができる。
【０００４】
ＳＳＯは、エンタープライズ内で複数のアプリケーションにログオンするためにユーザに同じＩＤおよびパスワードを入力させるための機能である。アクセスマネージャは、ＳＳＯシステムを実現することによって１つ以上のリソースへのアクセスを管理してもよい。ＳＳＯシステムが提供し得るＳＳＯセッションにより、認証されたアプリケーションが、アクセスする権利を与えられた保護されたリソースにアクセスすることが可能になる。
【０００５】
データは、インテントおよびブロードキャストを用いることによってアプリケーション間で共有することができる。インテントまたはパーセルは、さまざまなアプリケーションにおけるコード間の遅延ランタイム・バインディングを実行するための機能を提供することができるメッセージパッケージである。インテントは、たとえば、アクティビティの開始、サービスの開始および／またはブロードキャストの配信を実行するのに用いることができる。インテントは、アクションまたはトピックの抽象的記述を保持する受動的データ構造であり得る。たとえば、インテントはメッセージを含み得る。ブロードキャストはアプリケーションが受取ることができるメッセージであり得る。システムは、システムイベントのためのさまざまなタイプのブロードキャストを配信することができる。
【０００６】
インテントおよびブロードキャストは、カスタム・アクションなどのアクションで登録することができる。カスタム・アクションは、たとえば開発者によって定義され得る。アクションは実行されるべき一般的なアクションである。アクションは、たとえば、情報の表示、情報の編集などを含み得る。アプリケーションがアクションでインテントおよびブロードキャストを開始すると、そのアクションをリスニングしている他のアプリケーションは、そのアクションでブロードキャストされているメッセージを含むインテントを受取ることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、不正アプリケーションまたは未認可アプリケーションが同じアクションでそれ自体を登録する場合、不正アプリケーションは、インテントおよびブロードキャストを受取ることができ、インテント内に存在する全てのデータにアクセスすることができるようになり得る。したがって、インテントおよびブロードキャスト上のデータを不正アプリケーションから保護する必要がある。
【０００８】
アプリケーション間でのメッセージ交換は署名レベル保護を用いることによって確実に保証することができる。署名レベル保護は、たとえば、アンドロイド（登録商標）アプリケーションにおいて用いられている。署名レベル保護を用いることにより、第２のアプリケーションは、第２のアプリケーションが同じ署名者によって署名される場合にのみ、または、第２のアプリケーションが第１のアプリケーションと同じ署名証明書を有する場合にのみ、第１のアプリケーションと通信することが許可され得る。
【０００９】
しかしながら、同じ署名者情報であり得ない可能性もある。たとえば、オラクル・モバイル・セキュリティ・スーツ（Oracle Mobile Security Suite：ＯＭＳＳ）コンテナ化・ツールなどのモバイルアプリケーション管理システムのためのコンテナ化ツールを用いることで、如何なる第三者アプリケーションもコンテナ化することができる。さらに、コンテナ化されたアプリケーションは、アプリケーションストアにアップロードされ、ユーザによって使用され得る。これらのコンテナ化されたアプリケーションは、結果的に、他のアプリケーションとは異なる署名者情報を有することとなる。したがって、アプリケーションが同じ署名者情報をもたないので、メッセージ交換はアプリケーション間では機能しなくなり得る。
【課題を解決するための手段】
【００１０】
概要
例示的な実施形態は、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するための技術を提供する。
【００１１】
例示的な実施形態においては、方法は、デバイスによって、当該デバイス上の第１のコンテナ化されたアプリケーションをアクセスサーバに登録するステップと、当該デバイスによって、当該デバイス上の第２のコンテナ化されたアプリケーションを当該アクセスサーバに登録するステップと、第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップと、アクセスサーバに登録された第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとの間でデータを交換するステップとを含み得る。
【００１２】
一実施形態の局面においては、方法は、アクセスサーバからインテント暗号化キー（intent encryption key：ＩＥＫ）、ルートキーおよびセッショントークンを受取るステップを含み得る。
【００１３】
一実施形態の局面においては、第１のコンテナ化されたアプリケーションをアクセスサーバに登録するステップは、第１のパブリック／プライベートキーを生成し、第１のパブリック／プライベートキーを第１のコンテナ化されたアプリケーションの第１のキーストアに格納するステップと、アクセスサーバからのＩＥＫをコンテナ化されたアプリケーションの第２のキーストアに格納するステップと、生成されたパブリック／プライベートキーのパブリックキーを用いて、第１のコンテナ化されたアプリケーションの第２のキーストアを暗号化するステップと、共有アプリケーションリストを作成し、第１のコンテナ化されたアプリケーションの識別情報を共有アプリケーションリストに追加するステップと、共有アプリケーションリストを暗号化するステップとを含み得る。
【００１４】
一実施形態の局面においては、共有アプリケーションリストは、アクセスサーバからのルートキーを用いて暗号化される。
【００１５】
一実施形態の局面においては、第２のコンテナ化されたアプリケーションをアクセスサーバに登録するステップは、第２のパブリック／プライベートキーを生成し、第２のパブリック／プライベートキーを第２のコンテナ化されたアプリケーションの第１のキーストアに格納するステップと、アクセスサーバからのＩＥＫを第２のコンテナ化されたアプリケーションの第２のキーストアに格納するステップと、生成された第２のパブリック／プライベートキーの第２のパブリックキーを用いて、第２のコンテナ化されたアプリケーションの第２のキーストアを暗号化するステップと、共有アプリケーションリストを復号化し、共有アプリケーションリストに第２のコンテナ化されたアプリケーションの識別情報を追加するステップとを含む。
【００１６】
一実施形態の局面においては、アクセスサーバはモバイル・セキュリティ・アクセスサーバ（Mobile Security Access Server：ＭＳＡＳ）である。
【００１７】
一実施形態の局面においては、第１のコンテナ化されたアプリケーションの識別情報は、第１のコンテナ化されたアプリケーションの署名およびパッケージ名を含み得る。
【００１８】
一実施形態の局面においては、第２のコンテナ化されたアプリケーションの識別情報は、第２のコンテナ化されたアプリケーションの署名およびパッケージ名を含み得る。
【００１９】
一実施形態の局面においては、第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップは、第１のコンテナ化されたアプリケーションによって、第２のコンテナ化されたアプリケーションの署名およびパッケージ名が共有アプリケーションリストに載っていると判断するステップを含む。
【００２０】
一実施形態の局面においては、第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとの間でデータを交換するステップは、第１のコンテナ化されたアプリケーションによって、暗号化されたインテントを第２のコンテナ化されたアプリケーションに送信するステップと、第２のコンテナ化されたアプリケーションによって、ＩＥＫを用いて、暗号化されたインテントを復号化するステップとを含む。
【００２１】
一実施形態の局面においては、暗号化されたインテントは、ルートキーおよびセッショントークンで暗号化されたインテントである。
【００２２】
一実施形態の局面においては、インテントは、アクションまたはトピックについての記述を示すメッセージパッケージを含む。
【００２３】
一実施形態の局面においては、共有アプリケーションリストがルートキーを用いて復号化される。
【００２４】
一実施形態の局面においては、方法はさらに、更新されたＩＥＫをアクセスサーバから受取るステップと、第１のコンテナ化されたアプリケーションをアクセスサーバで認証するステップと、更新されたＩＥＫを第１のコンテナ化されたアプリケーションによって受取るステップとを含み得る。
【００２５】
例示的な一実施形態においては、１つ以上のプロセッサによって実行可能な複数の命令を格納する非一時的なコンピュータ読取り可能記憶媒体であって、複数の命令は、１つ以上のプロセッサに、デバイスによって、当該デバイス上の第１のコンテナ化されたアプリケーションをアクセスサーバに登録する動作と、当該デバイスによって、当該デバイス上の第２のコンテナ化されたアプリケーションをアクセスサーバに登録する動作と、第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認する動作と、アクセスサーバに登録された第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとの間でデータを交換する動作と、を実行させる。
【００２６】
例示的な一実施形態においては、システムは、メモリと、当該メモリに連結された１つ以上のプロセッサとを含み得る。１つ以上のプロセッサは、デバイス上の第１のコンテナ化されたアプリケーションをアクセスサーバに登録するように構成され、デバイス上の第２のコンテナ化されたアプリケーションをアクセスサーバに登録するように構成され、第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するように構成され、アクセスサーバに登録された第１のコンテナ化されたアプリケーションと第２のコンテナ化されたアプリケーションとの間でデータを交換するように構成されている。
【００２７】
他の実施形態は、この明細書中に記載される方法に関連付けられたシステム、携帯用コンシューマ向けデバイスおよびコンピュータ読取り可能媒体に向けられている。
【００２８】
以下の詳細な説明および添付の図面を参照することにより、例示的な実施形態の性質および利点がより良く理解され得る。
【００２９】
図面の簡単な説明
本開示は、添付の図面に関連付けて以下の詳細な説明によって容易に理解され得る。添付の図面においては、同様の参照番号は同様の要素を示している。
【図面の簡単な説明】
【００３０】
【図１】いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するためのシステムを示す図である。
【図２】いくつかの実施形態に従った、第１のコンテナ化されたアプリケーションをアクセスサーバに登録するシーケンス図である。
【図３】いくつかの実施形態に従った、第２のコンテナ化されたアプリケーションをアクセスサーバに登録するシーケンス図である。
【図４】いくつかの実施形態に従った、登録済みのコンテナ化されたアプリケーションを開始するシーケンス図である。
【図５】いくつかの実施形態に従った、インテント暗号化キー（ＩＥＫ）をリフレッシュおよび／または交換するシーケンス図である。
【図６】いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するフローチャートである。
【図７】いくつかの実施形態を実現するための分散型システムを示す簡略図である。
【図８】いくつかの実施形態に従った、サービスがクラウドサービスとして提供され得るシステム環境の１つ以上の構成要素を示す簡略ブロック図である。
【図９】いくつかの実施形態に従った、いくつかの要素を実現するために用いられ得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００３１】
詳細な説明
以下の記載においては、説明の目的で、具体的な詳細が例示的な実施形態の充分な理解を提供するために述べられている。しかしながら、さまざまな実施形態がこれらの具体的な詳細なしでも実施され得ることは明らかであり得る。たとえば、回路、システム、アルゴリズム、構造、技術、ネットワーク、プロセスおよび他のコンポーネントは、不必要な詳細で実施形態を曖昧にしないように、ブロック図の形式でコンポーネントとして示され得る。図および記載は、限定的となるように意図されたものではない。
【００３２】
例示的な実施形態は、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するための技術を提供する。コンテナ化されたアプリケーションは、アプリケーションサンドボックス化（sandboxing）とも称されるコンテナ化技術を用いて構成されたアプリケーションであり得る。コンテナ化されたアプリケーションは、それ自体の動作環境でコンテナ内に包含されるアプリケーションであり得る。コンテナ化されたアプリケーションは、電子メールアプリケーション、文書エディタ、ビジネスアプリケーションなどであり得る。コンテナ化されたアプリケーションが開始されると、アプリケーションクラスが初期化される。全ての初期設定／ライフサイクル方法がリネームされていたので、そのコードはいずれも実行されない。むしろ、ダミーの方法（コンテナライザ（containerizer）によって導入）が実行される。アプリケーションクラス初期設定の後、コンテンツ・プロバイダが初期化され、コンテンツ・プロバイダのためのラッパー・クラス（コンテナライザによって導入）が初期化される。
【００３３】
コンテナ化は、特定のコードが実行することのできる環境を制限するソフトウェア開発およびモバイルアプリケーション管理（mobile application management：ＭＡＭ）に対するアプローチである。したがって、コンテナ化されたアプリケーションは、それがデバイス上のコンテナまたはサンドボックス内での実行に制限されるように構成されてもよい。コンテナ化されたアプリケーションは、他のアプリケーションから隔離されている環境において実行されるように構成されてもよい。
【００３４】
「コンテナライザ」アプリケーションは、固有の未変更のアプリケーションを入力として解釈する可能性もあり、コンテナ化された変更済みのアプリケーションを出力する。たとえば、グーグル・アンドロイド（登録商標）コンピュータアプリケーションのためのＡｐｐｌｉｃａｔｉｏｎＭａｎｉｆｅｓｔ．ＸＭＬファイルおよびＧｏｏｇｌｅ  Ｄａｌｖｉｋ（登録商標）実行可能（ＤＥＸ）バイトコード・ファイルは、グーグル・アンドロイド（登録商標）アプリケーション・パッケージ（application package：ＡＰＫ）ファイルから抽出される。ラッパークラスおよびダミーのライフサイクル方法が、アプリケーション、コンテンツ・プロバイダおよびアクティビティのために作成される。１つの目的は、認証が終わるまで元のコードが実行されないように、ダミーのライフサイクルを作成することである。認証が成功すると、実際のアプリケーションコードが実行される前にポリシーがフェッチされて適用される。
【００３５】
例示的な実施形態は、コンテナ化されたアプリケーション間におけるセキュリティメカニズムを提供する。セキュリティメカニズムは、コンテナ化されたアプリケーション間において許可を与えるための技術を実現し得る。例示的な実施形態に従ったセキュリティメカニズムは、２ステップの確認プロセスを含む２レベルのセキュリティメカニズムを含み得る。確認の第１のステップはアクセスサーバレベルで実行され、確認の第２のステップはデバイスレベルで実行される。したがって、サーバおよびデバイスはともに、たとえば、無認可で、デバイス上の２つのコンテナ化されたアプリケーション間で交換された情報を取得するために、危険にさらされなければならなくなり得る。たとえば、サーバおよびデバイスがともにハッキングされる必要が生じ得る。
【００３６】
具体的には、デバイスは、インテント暗号化キー（ＩＥＫ）を取得するためにハッキングされる必要があり得る。デバイスがハッキングされれば、コンテナ化されたアプリケーションが機能しなくなる可能性があり、ユーザはアクセスサーバで認証されることができなくなる。しかしながら、アクセスサーバからＩＥＫを取得できたとしても、ハッカーは、さらに、共有アプリケーションのリストを暗号化するのに用いられるルートキーを取得するためにユーザのパスワードを必要とし得る。
【００３７】
したがって、さまざまなアプリケーションベンダーに独立性を与えつつ、コンテナ化されたアプリケーションにセキュリティを追加することができる。第三者アプリケーションベンダーは、自身のコンテナ化されたアプリケーションをたとえばアプリケーションストアにアップロードすることができ、エンドユーザは、セキュリティを維持しながら、コンテナ化されたアプリケーションをアプリケーションストアからインストールすることができる。
【００３８】
図１は、いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するためのシステム１００を示す。
【００３９】
システム１００は、アクセスサーバ１１０と通信することができるモバイルデバイス１２０などのポータブルデバイスを含み得る。単一のモバイルデバイスが示されているが、１つ以上のモバイルデバイスがアクセスサーバ１１０と通信することができる。アクセスサーバ１１０はサーバコンピュータである。アクセスサーバ１１０は、たとえば、モバイル・セキュリティ・アクセス・サーバ（ＭＳＡＳ）またはアクセス・ゲートウェイであってもよい。モバイルデバイス１２０は、たとえば、携帯電話などのグーグル・アンドロイド（登録商標）オペレーティングシステム（operating system：ＯＳ）ベースのデバイスであってもよい。アンドロイド（登録商標）オペレーティングシステムが開示されているが、例示的な実施形態は、ｉＯＳ（登録商標）などのさまざまなオペレーティングシステムにおいて用いることができ、アンドロイド（登録商標）オペレーティングシステムに限定されない。システム１００は、たとえば、オラクル・モバイル・セキュリティ・スーツなどのコンテナ化されたアプリケーションのためのワークスペースにおいて用いることができる。
【００４０】
モバイルデバイス１２０は１つ以上のアプリケーションを含み得る。アプリケーションはコンテナ化されたアプリケーションであり得る。図１に示されるように、モバイルデバイス１２０は第１のアプリケーション１２１および第２のアプリケーション１２２を含む。２つのアプリケーションが図示されているが、モバイルデバイスは３つ以上または２つ未満のアプリケーションを含んでもよい。
【００４１】
モバイルデバイス１２０はパブリック／プライベートキー・ジェネレータ１２６を含み得る。パブリック／プライベートキー・ジェネレータ１２６は、第１のアプリケーション１２１および第２のアプリケーション１２２のためのパブリック／プライベートキー対を生成するために用いることができる。
【００４２】
アプリケーションの各々は対応するキーストアを有し得る。キーストアは、たとえば、認可証明書またはパブリックキー証明書などのセキュリティ証明書のリポジトリであり得る。第１のアプリケーション１２１は、第１のアプリケーション・キーストア・ディレクトリ１２３を含み得る。第２のアプリケーション１２２は、第２のアプリケーション・キーストア・ディレクトリ１２４を含み得る。第１のアプリケーション・キーストア・ディレクトリ１２３および第２のアプリケーション・キーストア・ディレクトリ１２４は、１つ以上のキーストアを含み得る。アンドロイド（登録商標）キーストアは、アンドロイドシステムによって提供されるキーストアである。アプリケーションの各々は、キー対を格納するアプリケーションにのみアクセス可能であるキー対を格納し得る。たとえば、第１のアプリケーション・キーストア・ディレクトリ１２３におけるキーストアは、第１のアプリケーション１２１（たとえば、第１のアプリケーションのための第１のキーストア）によってのみアクセス可能な第１のアプリケーションアンドロイド（登録商標）キーストア１３３であり得る。さらに、第２のアプリケーション・キーストア・ディレクトリ１２４におけるキーストアは、第２のアプリケーション１２２（たとえば、第２のアプリケーションのための第１のキーストア）によってのみアクセス可能な第２のアプリケーションアンドロイド（登録商標）キーストア１３４であり得る。アンドロイド（登録商標）キーストア１３３および１３４は、たとえば、パブリック／プライベートキー対ジェネレータ１２６によって生成されたパブリック／プライベートキー対を格納することができる。アンドロイド（登録商標）キーストアが記載されているが、これは単なる一例に過ぎず、キーストアはさまざまなオペレーティングシステムのためのものであり得る。
【００４３】
加えて、第１のアプリケーション・キーストア・ディレクトリ１２３におけるキーストアは、第１のアプリケーション１２１によってのみアクセス可能な第１のアプリケーションＩＥＫキーストア１４３（たとえば、第１のアプリケーションのための第２のキーストア）を含み得る。第１のアプリケーションのための第２のキーストアは共有ファイルに格納することができ、共有ファイルはルートキーを用いて暗号化することができる。さらに、第２のアプリケーション・キーストア・ディレクトリ１２４におけるキーストアは、第２のアプリケーション１２２によってのみアクセス可能な第２のアプリケーションＩＥＫキーストア１４４（たとえば、第２のアプリケーションのための第２のキーストア）を含み得る。
【００４４】
アプリケーションがアクセスサーバに登録された後、当該アプリケーションは、それらのパッケージ名および署名を共有アプリケーションリストに格納することができる。共有アプリケーションリストは、モバイルデバイス上において認証および登録済みのアプリケーションによって共有することができる。共有アプリケーションリストは共有ストレージ１２５上に格納することができる。共有ストレージ１２５は、モバイルデバイスの外部に配置することができ、１つ以上のアプリケーションによってアクセスすることができる。
【００４５】
アクセスサーバ１１０は、たとえば、モバイル・セキュリティ・アクセスサーバ（ＭＳＡＳ）であり得る。アクセスサーバは１つ以上のリソースへのアクセスをもたらすことができる。アクセスサーバ１１０は、ＳＳＯサービスを実現することができるオラクル・アクセス・マネージャなどのアクセス管理システムを含み得るかまたは当該アクセス管理システムに通信可能に連結され得る。いくつかの実施形態においては、アクセスサーバ１１０は、１つ以上のリソースへのＳＳＯアクセスをもたらすためにＳＳＯセッションを確立することができるシングルサインオン・オーセンティケータ１１１を含み得る。アクセスサーバ１１０は、ワークスペースにおける全てのコンテナ化されたアプリケーションが、ユーザのローカルエリアネットワーク（local area network：ＬＡＮ）内で会話することを可能にする。たとえば、アクセスサーバ１１０は、インターネット上でエンティティを呼出すことができる。システムにおけるアプリケーションは全てアクセスサーバ１１０と通信することができる。
【００４６】
アクセスサーバ１１０はまた、トークンおよびキーストレージ１１２、ならびにデバイス情報ストレージ１１３を含み得る。トークンおよびキーストレージ１１２は、たとえば、セッショントークンおよびルートキーを格納することができる。デバイス情報ストレージ１１３は、たとえば、モバイルデバイス１２０についてのシリアル番号などのデバイスのシリアル番号を格納することができる。
【００４７】
アクセスサーバ１１０はまた、ＩＥＫプロバイダ１１４を含み得る。ＩＥＫはインテントについての暗号化キーであり得る。インテントは、さまざまなアプリケーションにおいてコード間における遅延ランタイム・バインディングを実行するための機能を提供する。さらに、インテントを用いてアクティビティを開始させることができる。インテントは、実行されるべきアクションの記述を保持する受動的なデータ構造であり得る。インテントは、別のアプリケーションコンポーネントにアクションを要求するために用いることができるメッセージ通信オブジェクトである。インテントは、いくつかの方法でコンポーネント間の通信を容易にすることができる。ＩＥＫプロバイダ１１４はインテントのためにＩＥＫを提供することができる。
【００４８】
Ａ．第１のコンテナ化されたアプリケーションの登録
図２は、いくつかの実施形態に従った、第１のコンテナ化されたアプリケーションをアクセスサーバに登録するシーケンス図を示す。
【００４９】
シーケンス２００は、たとえば、コンテナ化されたアプリケーションである第１のアプリケーション２２０、アクセスサーバ２１０および認証されたアプリケーション２４０によって実行することができる。図２の要素は図１を参照して上述されたものと同様であり得る。たとえば、アクセスサーバ２１０は、たとえば、図１に記載されたアクセスサーバ１１０に対応し得る。第１のアプリケーション２２０および認証されたアプリケーション２４０は、モバイルデバイス１２０などのモバイルデバイス上に格納することができる。認証されたアプリケーション２４０は、アクセスサーバ２１０によって認証された、モバイルデバイス上の他のアプリケーションを含み得る。アクセスサーバ２１０によって予め認証されていたアプリケーション（たとえば、認証されたアプリケーション２４０）が存在している可能性もあり、予め認証されたアプリケーションが存在していない可能性もある。したがって、予め認証されたアプリケーション２４０は存在していない可能性もある。
【００５０】
図２に示される要素は単なる例であって、２つ以上の認証されたアプリケーションが存在する可能性もある。さらに、アプリケーションは第１のアプリケーションおよび第２のアプリケーションと称されているが、これは如何なる順序を示すものでもなく、第２のアプリケーションが第１のアプリケーションであってもよい。
【００５１】
ステップ２２１において、モバイルデバイス上に格納された第１のアプリケーション２２０が開始される。第１のアプリケーション２２０がモバイルデバイス上で開始されると、モバイルデバイスは、アクセスサーバ２１０で認証するようにモバイルデバイスのユーザに要求し得る。たとえば、ユーザは、モバイルデバイスのユーザインターフェイス上にユーザ名およびパスワードを入力するように要求され得る。ユーザが認証されれば、ユーザは第１のアプリケーションおよび第１のアプリケーション内のデータにアクセスすることができる。第１のアプリケーション２２０が開始されると、この第１のアプリケーション２２０は、ステップ２２２において、アクセスサーバ２１０によって認証され既に登録されているアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第１のアプリケーション２２０は、認証されたアプリケーション２４０がモバイルデバイス上に存在している場合、認証されたアプリケーション２４０にブロードキャストメッセージを送信することができる。
【００５２】
ブロードキャストメッセージは特定のアクションまたはトピックに関するメッセージである。したがって、トピックに関係のあるアプリケーションはメッセージをリンスニングすることができる。トピックは、たとえば、無線局識別子ＦＭ１００またはＦＭ８９．１を含み得る。ブロードキャストメッセージは、アクセスサーバ２１０で認証される任意のアプリケーションからのセッショントークンおよびルートキーを要求するメッセージであり得る。
【００５３】
ステップ２４１において、認証されたアプリケーション２４０は、共有ファイルにおける第１のアプリケーション２２０の署名およびパッケージ名をチェックし得る。同じカスタム・アクションで登録されているので、認証されたアプリケーション２４０はブロードキャストを受取ることができる。認証されたアプリケーション２４０が同じカスタム・アクションで登録されていない場合、認証されたアプリケーション２４０は第１のアプリケーション２２０からのブロードキャストを受取り得ない。認証されたアプリケーション２４０が同じカスタム・アクションで登録されていれば、認証されたアプリケーション２４０はブロードキャストに応答することができる。
【００５４】
認証されたアプリケーション２４０は、第１のアプリケーション２２０の署名およびパッケージ名が共有の場所に格納される予め作成されたファイル内に存在しているかどうかを判断し得る。ファイルは、たとえば、共有ストレージ１２５に格納することができる。第１のアプリケーション２２０の署名およびパッケージ名がファイル内に存在していなければ、ステップ２４２において示されるように、認証されたアプリケーションは第１のアプリケーション２２０に応答を送信し得ない。
【００５５】
認証されたいずれのアプリケーションからも応答が受取られなければ、ステップ２２３において、認証が実行され得る。モバイルデバイスのユーザには認証画面が提示されることとなり、このモバイルデバイスのユーザは、モバイルデバイスのユーザインターフェイス上でユーザ名およびパスワードを入力するように要求され得る。
【００５６】
第１のアプリケーション２２０がアクセスサーバ２１０で認証された後、ステップ２２４において、登録が実行され得る。第１のアプリケーション２２０がそれ自体をアクセスサーバ２１０上に登録すると、第１のアプリケーション２２０はそのデバイスシリアル番号をアクセスサーバ２１０に提供し得る。デバイスシリアル番号は、たとえば、当該デバイスを他のデバイスから区別するために用いることができる固有の数値情報であり得る。
【００５７】
ステップ２１１において、アクセスサーバ２１０は、モバイルデバイスからの他のアプリケーションがあるかどうかを判断する。たとえば、アクセスサーバは、デバイスシリアル番号に応じて、モバイルデバイスからの他のアプリケーションがあるかどうかを判断することができる。デバイスシリアル番号がアクセスサーバ２１０上に存在していれば、ステップ２１２において、アクセスサーバ２１０はデバイスについてのインテント暗号化キー（ＩＥＫ）を送信し得る。デバイスシリアル番号が存在していない場合、アクセスサーバ２１０は、最初に、デバイスについてのＩＥＫを生成し、次いで、ステップ２１２において、生成されたＩＥＫを送信し得る。ＩＥＫは、２５６ビット暗号化キーなどのキーであり得る。
【００５８】
ステップ２１２において、アクセスサーバ２１０は、ＩＥＫに加えてルートキーおよびセッショントークンを送信する。セッショントークンは、認証クッキーなどの、アクセスサーバ２１０によって提供されるトークンであり得る。さらに、セッショントークンは署名、ユーザ名、ＩＤ、日付などを含み得る。また、セッショントークンは、テキストのランダムなストリングを含み得る。ルートキーは、アプリケーションのキーストアの暗号化のためのマスターキーであり得る。ルートキーまたはマスターキーは、キーストアを暗号化するために用いることができる。
【００５９】
第１のアプリケーション２２０がＩＥＫ、ルートキーおよびセッショントークンを受取ると、ステップ２２５において、第１のアプリケーション２２０がパブリック／プライベートキー対を生成することができ、生成されたパブリック／プライベートキー対が、第１のアプリケーションアンドロイド（登録商標）キーストア１３３などの、第１のアプリケーションのための第１のキーストアに格納される。第１のアプリケーションのための第１のキーストア（たとえば、第１のアプリケーションアンドロイド（登録商標）キーストア１３３）は、第１のアプリケーションによってのみアクセスすることができる。各々のアプリケーションはそれ自体のアンドロイド（登録商標）キーストアを有することができる。アプリケーションがたとえばアンドロイド（登録商標）デバイスにインストールされると、当該アプリケーションには、ストレージから、そのアプリケーションだけがアクセスすることができるデバイス上の専有エリアが指定され得る。指定された専有エリアは第１のアプリケーションアンドロイド（登録商標）キーストア１３３であり得る。
【００６０】
ステップ２２６において、第１のアプリケーション２２０のための第２のキーストア（たとえば、第１のアプリケーションＩＥＫキーストア１４３）が生成される。ステップ２２７において、アクセスサーバ２１０から受取られたＩＥＫが、ステップ２２５において生成されたパブリックキーを用いて暗号化される。次いで、暗号化されたＩＥＫは、第１のアプリケーション２２０の第２のキーストア（たとえば、第１のアプリケーションＩＥＫキーストア１４３）に格納される。第１のアプリケーションの第２のキーストア（たとえば、第１のアプリケーションＩＥＫキーストア１４３）は、第１のアプリケーション２２０によってのみアクセスすることができる。
【００６１】
暗号化されたＩＥＫを含む第２のキーストアは、次いで、ステップ２２８において、ファイルディレクトリに格納される。ファイルディレクトリは、第１のアプリケーション２２０によってのみアクセス可能であり、第１のアプリケーション２２０専用である。
【００６２】
ステップ２２９においては、共有アプリケーションリストなどのファイルは共有の場所において作成することができ、暗号化することができる。ファイルはパッケージ名（たとえば、Ｇｍａｉｌ）および署名（たとえば、データ署名）を含み得る。ファイルは、ステップ２１２において受取られたルートキーを用いて暗号化することができる。
【００６３】
付加的なアプリケーションをモバイルデバイス上に格納することができる。付加的なアプリケーションは、予め認証されてアクセスサーバに登録されているアプリケーションと通信することができる。しかしながら、アプリケーションがデバイス上の他の認証されたアプリケーションと通信することができるようになる前に、当該アプリケーションもアクセスサーバに登録されなければならない。
【００６４】
Ｂ．第２のコンテナ化されたアプリケーションの登録
図３は、いくつかの実施形態に従った、第２のコンテナ化されたアプリケーション３３０をアクセスサーバ３１０に登録するシーケンス図を示す。
【００６５】
シーケンス３００は、たとえば、第１のアプリケーション３２０、第２のアプリケーション３３０、アクセスサーバ３１０および認証されたアプリケーション３４０によって実行することができる。第１のアプリケーション３２０、第２のアプリケーション３３０および認証されたアプリケーション３４０は、モバイルデバイス１２０などのモバイルデバイス上に格納することができる。第１のアプリケーション３２０および第２のアプリケーション３３０はコンテナ化されたアプリケーションである。第１のアプリケーション３２０は、図２に関連付けて記載されたように、予め認証されて登録されている。したがって、第１のアプリケーション３２０は認証されたアプリケーションである。認証されたアプリケーション３４０は、アクセスサーバ３１０によって認証された、モバイルデバイス上の他のアプリケーションを含み得る。アクセスサーバ３１０によって予め認証されているアプリケーション（たとえば、認証されたアプリケーション３４０）が存在している可能性もあり、たとえば、第１のアプリケーション３３０以外の、予め認証されたアプリケーションが存在していない可能性もある。図３に示される要素は単なる例であって、１つ以上の認証されたアプリケーションが存在していてもよい。
【００６６】
ステップ３３１において、モバイルデバイス上に格納された第２のアプリケーション３３０が開始される。第２のアプリケーション３３０がモバイルデバイス上で開始されると、モバイルデバイスは、それ自体をアクセスサーバ３１０で認証するようにモバイルデバイスのユーザに要求し得る。ユーザが認証されれば、当該ユーザは、第２のアプリケーションおよび第２のアプリケーション内のデータにアクセスすることができる。第２のアプリケーション３３０が開始されると、この第２のアプリケーション３３０は、ステップ３２１において、アクセスサーバ３１０によって認証されて登録されているアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第２のアプリケーション３３０は第１のアプリケーション３２０および認証されたアプリケーション３４０にブロードキャストメッセージを送信することができる。ブロードキャストメッセージは、アクセスサーバ３１０で認証される如何なるアプリケーションからのセッショントークンおよびルートキーをも要求するメッセージであり得る。
【００６７】
ステップ３４１およびステップ３２２において、認証されたアプリケーション３４０および第１のアプリケーション３２０が、第２のアプリケーション３３０の署名およびパッケージ名をチェックし得る。図３に示される例においては、第１のアプリケーション３２０および認証されたアプリケーション３４０は、これらが同じカスタム・アクションで登録されているので、ブロードキャストを受取ることができる。第１のアプリケーション３２０および認証されたアプリケーション３４０が同じカスタム・アクションで登録されていない場合、第１のアプリケーション３２０および認証されたアプリケーション３４０は、第２のアプリケーション３３０からブロードキャストを受取り得ない。
【００６８】
第１のアプリケーション３２０および認証されたアプリケーション３４０は、第２のアプリケーション３３０の署名およびパッケージ名が共有の場所において作成されて格納されているファイル（たとえば、共有アプリケーションリスト）内に存在するかどうかを判断し得る。共有の場所において作成されて格納されているファイルは、たとえば、図２のステップ２２９において作成されたファイルに対応し得る。共有の場所は、たとえば、共有ストレージ１２５であり得る。第２のアプリケーション３３０の署名およびパッケージ名が共有ストレージにおけるファイル内に存在していない場合、第１のアプリケーション３２０および／または認証されたアプリケーション３４０は、ステップ３４２およびステップ３２３において示されるように、第２のアプリケーション３３０に応答を送信し得ない。たとえば、第２のアプリケーション３３０の署名およびパッケージ名が図２のステップ２２９において作成された共有ストレージにおけるファイル内に存在していない場合、第１のアプリケーション３２０は、ステップ３２３において示されるように、第２のアプリケーション３３０に応答を送信し得ない。第２のアプリケーション３３０が同じカスタム・アクションで登録されている場合、第１のアプリケーション３２０および／または認証されたアプリケーション３４０はブロードキャストに応答することができるかもしれない。
【００６９】
認証されたアプリケーション３４０および第１のアプリケーション３２０などのいずれの認証されたアプリケーションからも応答が受取られなければ、ステップ３３３において、認証が実行され得る。モバイルデバイスのユーザに認証画面が提示され得る。たとえば、ユーザには、ユーザ名およびパスワードを入力することが要求され得る。
【００７０】
第２のアプリケーション３３０がアクセスサーバ３１０で認証された後、ステップ３３４において、登録が実行され得る。第２のアプリケーション３３０がそれ自体をアクセスサーバ３１０上に登録すると、第２のアプリケーション３３０はそのデバイスシリアル番号をアクセスサーバ３１０に提供し得る。デバイスシリアル番号は、たとえば、当該デバイスを他のデバイスから区別するのに用いることができる固有の数値情報であり得る。
【００７１】
ステップ３１１において、アクセスサーバ３１０は、デバイスからの他のいずれかのアプリケーションがあるかどうかを判断する。たとえば、アクセスサーバは、デバイスシリアル番号に従って、モバイルデバイスからの他のいずれかのアプリケーションがあるかどうかを判断することができる。デバイスシリアル番号がアクセスサーバ３１０上に存在していれば、ステップ３１２において、アクセスサーバ３１０はデバイスのためのインテント暗号化キー（ＩＥＫ）を送信し得る。デバイスシリアル番号が存在していない場合、アクセスサーバ３１０は、最初に、デバイスのためのＩＥＫを生成し、次に、ステップ３１２において、生成されたＩＥＫを送信し得る。ステップ３１２において、アクセスサーバ３１０は、ＩＥＫに加えて、ルートキーおよびセッショントークンを送信する。
【００７２】
第２のアプリケーション３３０がＩＥＫ、ルートキーおよびセッショントークンを受取ると、ステップ３３５において、第２のアプリケーション３３０は、パブリック／プライベートキー対を生成することができる。生成されたパブリック／プライベートキー対は、第２のアプリケーションのための第１のキーストア（たとえば、第２のアプリケーションアンドロイド（登録商標）キーストア１３４）に格納される。第２のアプリケーションのための第１のキーストア（たとえば、第２のアプリケーションアンドロイド（登録商標）キーストア１３４）は、第２のアプリケーションによってのみアクセスすることができる。各々のアプリケーションはそれ自体のアンドロイド（登録商標）キーストアを有することができる。
【００７３】
ステップ３３６において、第２のアプリケーション３３０のための第２のキーストア（たとえば、第２のアプリケーションＩＥＫキーストア１４４）が生成される。ステップ３３７において、アクセスサーバ３１０から受取られたＩＥＫが、ステップ３３５において生成されたパブリックキーを用いて暗号化される。次いで、暗号化されたＩＥＫは、第２のアプリケーション３３０の第２のキーストア（たとえば、第２のアプリケーションＩＥＫキーストア１４４）に格納される。第２のアプリケーションＩＥＫキーストア１４４は第２のアプリケーション３３０によってのみアクセスすることができる。
【００７４】
次いで、暗号化されたＩＥＫを含むキーストア（たとえば、第２のアプリケーションＩＥＫキーストア１４４）は、ステップ３３８において、ファイルディレクトリなどのディレクトリに格納される。ディレクトリは第２のアプリケーション３３０によってのみアクセスすることができる。
【００７５】
ステップ３３９において、予め作成された（たとえば、図２のステップ２２９）共有アプリケーションリストなどのファイルは、第２のアプリケーションによって検索することができる。第２のアプリケーションは、ステップ３１２において受取られたルートキーを用いてファイルを復号化することができ、第２のアプリケーションは、そのパッケージ名および署名情報を共有アプリケーションリストに追加することができる。次いで、第２のアプリケーションはルートキーを用いて、共有アプリケーションリストを暗号化することができる。
【００７６】
したがって、第１のアプリケーションと第２のアプリケーションとの間で共有されるメッセージはいずれも、ＩＥＫを用いて暗号化され得る。さらに、メッセージを受取る第１のアプリケーションまたは第２のアプリケーションは、ＩＥＫを用いてメッセージを復号化することができる。
【００７７】
例示的な実施形態に従うと、ＩＥＫをフェッチするための認証が最初に実行される。さらなる認証はいずれも、ＩＥＫをフェッチするための認証の後であれば、第１のアプリケーションと第２のアプリケーションとの間などの認証されたアプリケーション間でシングルサインオン（ＳＳＯ）をトリガすることができる。両方のアプリケーションが同じアクセスサーバに登録されており、かつ、アプリケーションのうち少なくとも１つが既に認証されており、セッショントークンおよびインテント暗号化キー（ＩＥＫ）を保持しているので、ＳＳＯはアプリケーション間で実行することができる。
【００７８】
Ｃ．登記済みのコンテナ化されたアプリケーションの開始
図４は、いくつかの実施形態に従った、登録済みのコンテナ化されたアプリケーションを開始するシーケンス図を示す。
【００７９】
シーケンス４００は、たとえば、第１のアプリケーション４２０、第２のアプリケーション４３０およびアクセスサーバ４１０によって実行することができる。第１のアプリケーション４２０および第２のアプリケーション４３０はコンテナ化されたアプリケーションである。さらに、第１のアプリケーション４２０および第２のアプリケーション４３０は、モバイルデバイス１２０などのモバイルデバイス上に格納することができる。第１のアプリケーション４２０および第２のアプリケーション４３０は、図２および図３に関連付けて記載されたとおり、認証されて登録されている。したがって、第１のアプリケーション４２０および第２のアプリケーション４３０は認証されたアプリケーションである。第１のアプリケーション４２０および第２のアプリケーション４３０は認証されたアプリケーションとして示されているが、モバイルデバイス上に他の認証されたアプリケーションがあってもよい。したがって、アクセスサーバ３１０によって予め認証されている付加的なアプリケーションが存在している可能性もある。図４に示される要素は単なる例に過ぎない。
【００８０】
ステップ４２１において、モバイルデバイス上に格納された第１のアプリケーション４２０が開始される。第１のアプリケーション４２０が開始された後、ステップ４２２において、第１のアプリケーション４２０は、アクセスサーバ４１０によって認証されて登録されているアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第１のアプリケーション４２０は第２のアプリケーション４３０にブロードキャストメッセージを送信することができる。第２のアプリケーション４３０は、図３に記載されるように認証され得る。
【００８１】
ブロードキャストメッセージは、アクセスサーバ４１０で認証される如何なるアプリケーションからのセッショントークンおよびルートキーをも要求するメッセージであり得る。
【００８２】
ステップ４３２において、第２のアプリケーション４３０などのいずれの認証されたアプリケーションからも応答が受取られなければ、ステップ４２３において、認証が実行され得る。モバイルデバイスのユーザに認証画面が提示され得る。たとえば、ユーザに、デバイスのユーザインターフェイス上にユーザ名およびパスワードを入力するように促すことができる。認証の後、ＩＥＫ、セッショントークンおよびルートキーがアクセスサーバからフェッチされる。
【００８３】
ステップ４３３において、第２のアプリケーション４３０が開始されていれば、ステップ４３４において、第２のアプリケーションは、アクセスサーバ４１０によって認証されたアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第２のアプリケーション４３０は第１のアプリケーション４２０にブロードキャストメッセージを送信することができる。第１のアプリケーション４２０は、図２に記載されるように認証され得る。
【００８４】
ブロードキャストメッセージは、アクセスサーバ４１０で認証されるいずれのアプリケーションからのセッショントークンおよびルートキーをも要求するメッセージであり得る。
【００８５】
ステップ４２４において、第１のアプリケーションは、第２のアプリケーション４３０についてのパッケージ名および署名をチェックすることができる。第１のアプリケーションは、ルートキーを用いることにより、共有ファイルまたは共有アプリケーションリストを復号化することによって、第２のアプリケーション４３０についてのパッケージ名および署名をチェックすることができる。
【００８６】
ステップ４２５において、第１のアプリケーション４２０は、第２のアプリケーション４３０が信頼されたアプリケーションであることを確認することができる。第２のアプリケーション４３０が信頼されたアプリケーションであることを確認した後、第１のアプリケーション４２０は、ＩＥＫによって暗号化されたルートキーおよびセッショントークンと共にインテントを準備することができる。インテント、ルートキーおよびセッショントークンは、ステップ４２６において、第２のアプリケーション４３０にブロードキャストすることができる。
【００８７】
第２のアプリケーション４３０がインテントを受取った後、ステップ４３１において、第２のアプリケーション４３０は、その生成されたパブリック／プライベートキー対を第２のアプリケーション４３０の第１のキーストア（たとえば、第２のアプリケーションアンドロイド（登録商標）キーストア１３４）から検索する。アンドロイド（登録商標）キーストアは、システムによって提供されるとともにハードウェアによって支援されるキーストアであり得る。したがって、キー・セキュリティをハードウェアレベルで保証することができる。したがって、これらは復号化される必要がない。なぜなら、１つのアプリケーションのキーが別のアプリケーションのキーにアクセス可能とはならないからである。
【００８８】
ステップ４３２において、第２のアプリケーション４３０は、第２のアプリケーション４３０の第１のキーストア（たとえば、第２のアプリケーションアンドロイド（登録商標）キーストア１３４）から検索されたパブリック／プライベートキー対を用いることによって、ＩＥＫを有する第２のアプリケーション４３０の第２のキーストア（たとえば、第２のアプリケーションＩＥＫキーストア１４４）を復号化する。第２のアプリケーション４３０の第２のキーストア（たとえば、第２のアプリケーションＩＥＫキーストア１４４）を復号化した後、第２のアプリケーション４３０は、第２のキーストア（たとえば第２のアプリケーションＩＥＫキーストア１４４）からＩＥＫを検索することができる。
【００８９】
ステップ４３３において、第２のアプリケーション４３０が、ＩＥＫを用いて、インテントからセッショントークンおよびルートキーを復号化する。したがって、第２のアプリケーション４３０は、インテント内の情報にアクセスすることができる。また、情報はアプリケーション間で交換することができる。
【００９０】
Ｄ．インテント暗号化キー（ＩＥＫ）の更新
図５は、いくつかの実施形態に従った、ＩＥＫをリフレッシュおよび／または交換するシーケンス図を示す。
【００９１】
シーケンス５００は、たとえば、第１のアプリケーション５２０、第２のアプリケーション５３０およびアクセスサーバ５１０によって実行することができる。第１のアプリケーション５２０および第２のアプリケーション５３０はコンテナ化されたアプリケーションである。さらに、第１のアプリケーション５２０および第２のアプリケーション５３０は、モバイルデバイス１２０などのモバイルデバイス上に格納することができる。第１のアプリケーション５２０および第２のアプリケーション５３０は、図２および図３に関連付けて記載されるように、認証されて登録されている。したがって、第１のアプリケーション５２０および第２のアプリケーション５３０は認証されたアプリケーションである。第１のアプリケーション５２０および第２のアプリケーション５３０は認証されたアプリケーションとして示されているが、モバイルデバイス上に他の認証されたアプリケーションが存在していてもよい。したがって、アクセスサーバ５１０によって予め認証されている付加的なアプリケーションが存在している可能性もあり、予め認証されたアプリケーションが存在していない可能性もある。図５に示される要素は単なる例に過ぎない。
【００９２】
ＩＥＫはアクセスサーバ５１０において変更することができる。たとえば、ＩＥＫが含まれており、たとえばもはや安全ではない場合、ＩＥＫは変更することができない。代替的には、付加的な安全対策として、ＩＥＫは定期的に更新することができる。したがって、ＩＥＫは、たとえば、毎週または２週ごとに更新することができる。
【００９３】
ＩＥＫが交換される場合、アクセスサーバ５１０は、システム上で、認証および登録済みのコンテナ化されたアプリケーションに新しいＩＥＫを伝達することができる。たとえば、アクセスサーバ５１０は第１のアプリケーション５２０に新しいＩＥＫを伝達することができ、次いで、第１のアプリケーション５２０が第２のアプリケーション５３０に新しいＩＥＫを提供することができる。
【００９４】
ステップ５１１として、アクセスサーバ５１０はＩＥＫを更新することができる。ステップ５２１において、第１のアプリケーションはそれ自体をアクセスサーバ５１０で認証することができる。認証が成功した後、ステップ５２２において、第１のアプリケーション５２０はアクセスサーバ５１０からＩＥＫを受取ることができる。アクセスサーバから受取られたＩＥＫは更新されたＩＥＫであり得る。
【００９５】
ステップ５２３において、第１のアプリケーションは、第１のアプリケーションの第２のキーストア（たとえば、第１のアプリケーションＩＥＫキーストア１４３）にその時点で格納されているＩＥＫと、アクセスサーバから受取ったＩＥＫを比較し得る。アクセスサーバ５１０から受取られたＩＥＫが第１のアプリケーションの第２のキーストア（たとえば、第１のアプリケーションＩＥＫキーストア１４３）にその時点で格納されているＩＥＫとは異なっている場合、ステップ５２４において、第２のキーストアに格納されたＩＥＫを更新することができる。しかしながら、アクセスサーバ５１０から受取られたＩＥＫが第１のアプリケーションの第２のキーストアにその時点で格納されているものと同じである場合、ＩＥＫは更新されなくてもよい。
【００９６】
ステップ５３１において、第２のアプリケーション５３０が開始される場合、第２のアプリケーション５３０は第１のアプリケーション５２０からインテント、セッショントークンおよびルートキーを受取ることができる。第２のアプリケーション５３０は、信頼されたアプリケーションの共有のリストに載っているので、第１のアプリケーション５２０からセッショントークンおよびルートキーを受取ることができる。しかしながら、第２のアプリケーション５３０はインテントを復号化し得ない。なぜなら、それは、更新されたＩＥＫを用いて暗号化されたものであるからである。したがって、ステップ５３２において、復号化が失敗し得る。
【００９７】
復号化に失敗した後、ステップ５２６において、認証画面が第２のアプリケーション５３０上に提示され得る。第２のアプリケーション５３０が認証を実行すると、第２のアプリケーション５３０は更新されたＩＥＫを検索することができ、ステップ５３３において、更新されたＩＥＫを第２のアプリケーション５３０の第２のキーストアに格納することができる。したがって、第２のアプリケーション５３０は更新されたＩＥＫを有することとなる。
【００９８】
Ｅ．アプリケーションを登録および開始する方法
図６は、いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するための方法６００を示すフローチャートである。
【００９９】
ステップ６１０において、第１のコンテナ化されたアプリケーションはアクセスサーバに登録することができる。上述のとおり、第１のコンテナ化されたアプリケーションがモバイルデバイス上の他のアプリケーションと情報を交換できるようになる前に、第１のコンテナ化されたアプリケーションがアクセスサーバに登録される。
【０１００】
さらに、デバイスに追加されたいずれかのアプリケーションを、その時点で認証されておりデバイスに登録されているアプリケーションと通信させるために、これらアプリケーションも認証されてアクセスサーバに登録されなければならない。したがって、ステップ６２０において、第２のコンテナ化されたアプリケーションは、たとえば、アクセスサーバに登録することができる。
【０１０１】
ステップ６３０において、第１のアプリケーションおよび第２のアプリケーションなどの登記済みのアプリケーションを開始させることができる。インテントなどのデータは、アクセスサーバで認証されているアプリケーション間で交換することができる。
【０１０２】
ステップ６４０において、インテント暗号化キー（ＩＥＫ）を更新することができる。たとえば、危険にさらされていたためにＩＥＫが変更される場合、または、定期的な更新のためにＩＥＫが変更される場合、更新されたＩＥＫは、認証されたアプリケーション間で共有することができる。
【０１０３】
Ｆ．コンピュータシステム
図７は、いくつかの実施形態を実現するための分散型システム７００を示す簡略図である。図示される実施形態においては、分散型システム７００は、１つ以上のクライアントコンピューティングデバイス７０２、７０４、７０６および７０８を含む。１つ以上のクライアントコンピューティングデバイス７０２、７０４、７０６および７０８は、１つ以上のネットワーク７１０を介してウェブブラウザ、プロプライエタリ・クライアント（たとえばオラクルフォーム）などのクライアントアプリケーションを実行して動作させるように構成されている。サーバ７１２は、ネットワーク７１０を介してリモートクライアントコンピューティングデバイス７０２、７０４、７０６および７０８と通信可能に連結されていてもよい。
【０１０４】
さまざまな実施形態においては、サーバ７１２は、メッセージ配信サービスを提供するサービスおよびアプリケーションなどの１つ以上のサービスまたはソフトウェアアプリケーションを実行させるように適合されてもよい。いくつかの実施形態においては、サーバ７１２はまた、他のサービスを提供してもよく、または、ソフトウェアアプリケーションは非仮想環境および仮想環境を含み得る。いくつかの実施形態においては、これらのサービスは、クライアントコンピューティングデバイス７０２、７０４および７０６および／または７０８のユーザに対し、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）モデルの下で提供されてもよい。クライアントコンピューティングデバイス７０２、７０４および７０６および／または７０８を動作させるユーザは、さらに、これらのコンポーネントによって提供されるサービスを利用するために、１つ以上のクライアントアプリケーションを利用してサーバ７１２と対話してもよい。
【０１０５】
図７に示される構成においては、システム７００のソフトウェアコンポーネント７１８、７２０および７２２が、サーバ７１２上において実現されるものとして示されている。他の実施形態においては、システム７００のコンポーネントのうち１つ以上および／またはこれらのコンポーネントによって提供されるサービスはまた、クライアントコンピューティングデバイス７０２、７０４、７０６および／または７０８のうち１つ以上によって実現されてもよい。次いで、クライアントコンピューティングデバイスを動作させるユーザは、これらのコンポーネントによって提供されるサービスを用いるために１つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントはハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せで実現されてもよい。分散型システム７００とは異なり得るさまざまな異なるシステム構成が実現可能であることが認識されるはずである。図７に示される実施形態は、このため、実施形態のシステムを実現するための分散型システムの一例であり、限定するように意図されたものではない。
【０１０６】
クライアントコンピューティングデバイス７０２、７０４、７０６および／または７０８はさまざまなタイプのコンピューティングシステムを含み得る。たとえば、クライアントデバイスは、携帯可能な手持ち式のデバイス（たとえばｉＰｈｏｎｅ（登録商標）、セルラー電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、携帯情報端末（personal digital assistant：ＰＤＡ））またはウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）を含んでもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのソフトウェア、および／もしくは、ｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  １０、Ｐａｌｍ  ＯＳなどのさまざまなモバイルオペレーティングシステムを実行し得る。デバイスは、さまざまなインターネット関連アプリ、電子メール、ショートメッセージサービス（short message service：ＳＭＳ）アプリケーションなどのさまざまなアプリケーションをサポートしてもよく、さまざまな他の通信プロトコルを使用してもよい。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータも含んでもよく、一例として、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどのさまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを限定を伴うことなく含む、市場で入手可能なさまざまなＵＮＩＸ（登録商標）またはＵＮＩＸ系のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。クライアントコンピューティングデバイスは、ネットワーク７１０を介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム（たとえばＫｉｎｅｃｔ（登録商標）ジェスチャ入力デバイス付きまたはＫｉｎｅｃｔ（登録商標）ジェスチャ入力デバイス無しのＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘゲームコンソール）および／または個人メッセージ伝達デバイスなどの電子機器も含んでもよい。
【０１０７】
図７の分散型システム７００は４つのクライアントコンピューティングデバイスとともに示されているが、いくつのクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがサーバ７１２と対話してもよい。
【０１０８】
分散型システム７００におけるネットワーク７１０は、伝送制御プロトコル／インターネットプロトコル（transmission control protocol/Internet protocol：ＴＣＰ／ＩＰ）、システムネットワークアーキテクチャ（systems network architecture：ＳＮＡ）、インターネットパケット交換（Internet packet exchange：ＩＰＸ）、ＡｐｐｌｅＴａｌｋなどを限定を伴うことなく含む、さまざまな入手可能なプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単に一例として、ネットワーク７１０は、ローカルエリアネットワーク（local area network：ＬＡＮ）、イーサネット（登録商標）、トークンリングに基づくネットワーク、ワイドエリアネットワーク、インターネット、仮想ネットワーク、仮想プライベートネットワーク（virtual private network：ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（public switched telephone network：ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば米国電気電子学会（Institute of Electrical and Electronics：ＩＥＥＥ）１００２．１１のプロトコル一式、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および／もしくはその他の無線プロトコルのうちのいずれかの下で動作するネットワーク）、ならびに／またはこれらの任意の組み合わせおよび／もしくは他のネットワークであり得る。
【０１０９】
サーバ７１２は、１つ以上の汎用コンピュータ、専用のサーバコンピュータ（一例としてＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、またはその他の適切な構成および／もしくは組み合わせで構成されてもよい。サーバ７１２は、仮想オペレーティングシステムを実行する１つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理ストレージデバイスの１つ以上のフレキシブルなプールを仮想化してサーバのために仮想ストレージデバイスを維持することができる。仮想ネットワークを、サーバ７１２によって、ソフトウェア定義のネットワーク接続を用いて制御することができる。さまざまな実施形態において、サーバ７１２は、前述の開示に記載される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ７１２は、本開示の実施形態に従って上記の処理を実行するためのサーバに対応し得る。
【０１１０】
サーバ７１２は、上記のもののうちのいずれかを含むオペレーティングシステム、および市場で入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ７１２は、ハイパーテキスト転送プロトコル（hypertext transport protocol：ＨＴＴＰ）サーバ、ファイル転送プロトコル（file transfer protocol：ＦＴＰ）サーバ、コモンゲートウェイインターフェイス（common gateway interface：ＣＧＩ）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含むさまざまな付加的なサーバアプリケーションおよび／または中間層アプリケーションのうちのいずれをも実行し得る。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース、ＩＢＭ（インターナショナルビジネスマシンズ）などから市場で入手可能なものを含むが、それらに限定されるものではない。
【０１１１】
いくつかの実現例では、サーバ７１２は、クライアントコンピューティングデバイス７０２、７０４、７０６および７０８のユーザから受信されるデータフィードおよび／またはイベント更新情報を解析および整理統合するための１つ以上のアプリケーションを含んでもよい。一例として、データフィードおよび／またはイベント更新情報は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などに関連するリアルタイムのイベントを含み得る、１つ以上の第三者情報源および連続データストリームから受信される、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新情報またはリアルタイムの更新情報を含んでもよいが、それらに限定されるものではない。サーバ７１２は、データフィードおよび／またはリアルタイムのイベントをクライアントコンピューティングデバイス７０２、７０４、７０６および７０８の１つ以上の表示デバイスを介して表示するための１つ以上のアプリケーションも含んでもよい。
【０１１２】
分散型システム７００は、１つ以上のデータベース７１４および７１６も含んでもよい。これらのデータベースは、在庫情報などの情報および本発明の実施形態によって使用される他の情報を記憶するためのメカニズムを提供してもよい。データベース７１４および７１６は、さまざまな位置にあってもよい。一例として、データベース７１４および７１６のうちの１つ以上は、サーバ７１２に局在する（および／またはサーバ７１２に常駐する）非一時的な記憶媒体上にあってもよい。代替的には、データベース７１４および７１６は、サーバ７１２から遠隔にあり、ネットワークに基づくかまたは専用の接続を介してサーバ７１２と通信してもよい。一組の実施形態においては、データベース７１４および７１６は、ストレージエレアネットワーク（storage-area network：ＳＡＮ）にあってもよい。同様に、サーバ７１２に帰する機能を実行するための任意の必要なファイルが、適宜、サーバ７１２上においてローカルに、および／または遠隔で格納されてもよい。一組の実施形態においては、データベース７１４および７１６は、ＳＱＬフォーマットされたコマンドに応答してデータを記憶、更新および検索するように適合される、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでもよい。
【０１１３】
いくつかの実施形態においては、上記のメッセージ配信サービスは、クラウド環境を介してサービスとして提供されてもよい。図８は、いくつかの実施形態に従って、サービスがクラウドサービスとして提供され得るシステム環境８００の１つ以上のコンポーネントの簡略ブロック図を示す。
【０１１４】
図８に例示される実施形態においては、システム環境８００は、１つ以上のクライアントコンピューティングデバイス８０４、８０６および８０８を含み、１つ以上のクライアントコンピューティングデバイス８０４、８０６および８０８は、使用パターンに応じてドキュメント（たとえばウェブページ）を動的に修正するためのサービスを含むクラウドサービスを提供するクラウドインフラストラクチャシステム８０２と対話するようにユーザによって使用されてもよい。クラウドインフラストラクチャシステム８０２は、サーバ７１２のための上記のものを含み得る１つ以上のコンピュータおよび／またはサーバを備えてもよい。
【０１１５】
図８に示されるクラウドインフラストラクチャシステム８０２は図示されるもの以外のコンポーネントを有してもよいことが理解されるべきである。さらに、図８に示される実施形態は、実施形態のうちいくつかを組込み得るクラウドインフラストラクチャシステムの一例に過ぎない。他のいくつかの実施形態においては、クラウドインフラストラクチャシステム８０２は、図に示されるよりも多いコンポーネントもしくは少ないコンポーネントを有してもよく、２つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
【０１１６】
クライアントコンピューティングデバイス８０４、８０６および８０８は、７０２、７０４、７０６および７０８に対して上記されたものと同様のデバイスであってもよい。クライアントコンピューティングデバイス８０４、８０６および８０８は、ウェブブラウザ、プロプライエタリ・クライアントアプリケーション（たとえばオラクルフォーム）、または他の何らかのアプリケーションなどのクライアントアプリケーションを動作させるように構成されてもよく、当該クライアントアプリケーションは、クラウドインフラストラクチャシステム１３０２と対話して、クラウドインフラストラクチャシステム８０２によって提供されるサービスを使用するようにクライアントコンピューティングデバイスのユーザによって使用されてもよい。例示的なシステム環境８００が３つのクライアントコンピューティングデバイスとともに示されているが、いくつの数のクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがクラウドインフラストラクチャシステム８０２と対話してもよい。
【０１１７】
ネットワーク７１０は、クライアント８０４、８０６および８０８とクラウドインフラストラクチャシステム８０２との間におけるデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク７１０について上記されたものを含む、市場で入手可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している如何なるタイプのネットワークであってもよい。
【０１１８】
特定の実施形態においては、クラウドインフラストラクチャシステム８０２によって提供されるサービスは、オンデマンドでクラウドインフラストラクチャシステムのユーザにとって利用可能にされるサービスのホストを含んでもよい。会計管理に関連するサービスに加えて、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホストされるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどを限定を伴うことなく含む他のさまざまなサービスも提供されてもよい。クラウドインフラストラクチャシステムによって提供されるサービスは、動的にスケーリングしてそのユーザのニーズを満たすことができる。
【０１１９】
特定の実施形態においては、クラウドインフラストラクチャシステム８０２によって提供される或るサービスの或る具体的なインスタンス化は、本明細書では「サービスインスタンス」と称され得る。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザに利用可能にされるサービスはいずれも、「クラウドサービス」と称される。典型的には、パブリッククラウド環境においては、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
【０１２０】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホストされるデータベース、ホストされるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、サービスは、クラウド上のリモートストレージに対するインターネットを介してのパスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスベースのホストされたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイトにおいてホストされる電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
【０１２１】
特定の実施形態においては、クラウドインフラストラクチャシステム８０２は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルで、信頼性があり、高可用性があり、かつセキュリティ上安全な態様で顧客に対して配送されるアプリケーション、ミドルウェア、データベースサービス提供一式を含んでもよい。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド（Oracle Public Cloud）である。
【０１２２】
クラウドインフラストラクチャシステム８０２は、「ビッグデータ」関連の計算および解析ツールも提供し得る。「ビッグデータ」という語は、一般に、大量のデータを視覚化し、傾向を検出し、および／またはその他の態様でデータと対話するようにアナリストおよび研究者によって記憶および操作され得る非常に大きなデータセットを指すのに用いられる。このビッグデータおよび関連のアプリケーションは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールでホストおよび／または操作され得る。そのようなデータを表示するため、またはデータもしくはデータが表現するものに対する外部の力をシミュレートするために、並列に連結された何十、何百または何千ものプロセッサがそのようなデータに対して作用し得る。これらのデータセットは、データベースにおいてもしくは構造化モデルに従って編成されたような構造化データ、および／または非構造化データ（たとえば電子メール、画像、データブロブ（バイナリラージオブジェクト）、ウェブページ、複合イベント処理）を含み得る。より多くの（またはより少ない）計算リソースを比較的迅速に対象に集中させることができるいくつかの実施形態の機能を活用することによって、クラウドインフラストラクチャシステムは、ビジネス、政府機関、研究組織、私人、同じ考えを持った個人もしくは組織のグループ、または他のエンティティからの要求に基づいて大きなデータセットに対してタスクを実行するために、より適切に利用できるであろう。
【０１２３】
さまざまな実施形態においては、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステム８０２によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、およびトラッキングするように適合されてもよい。クラウドインフラストラクチャシステム８０２は、クラウドサービスをさまざまな展開モデルを介して提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム８０２が（たとえばオラクル社によって所有される）クラウドサービスを販売する組織によって所有されるとともにサービスが一般大衆またはさまざまな業界企業に対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム８０２が単一の組織に対してのみ稼働され得るとともにその組織内における１つ以上のエンティティに対してサービスを提供し得るプライベートクラウドモデルの下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム８０２およびクラウドインフラストラクチャシステム８０２によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有されているコミュニティクラウドモデルの下で提供されてもよい。また、クラウドサービスは、２つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
【０１２４】
いくつかの実施形態においては、クラウドインフラストラクチャシステム８０２によって提供されるサービスは、ソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）カテゴリ、プラットフォーム・アズ・ア・サービス（Platform as a Service：ＰａａＳ）カテゴリ、インフラストラクチャ・アズ・ア・サービス（Infrastructure as a Service：ＩａａＳ）カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される１つ以上のサービスを含んでもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム８０２によって提供される１つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム８０２は、次いで、処理を実行して、顧客のサブスクリプションオーダーにおけるサービスを提供する。
【０１２５】
いくつかの実施形態においては、クラウドインフラストラクチャシステム８０２によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、それらに限定されるものではない。いくつかの例では、アプリケーションサービスは、クラウドインフラストラクチャシステムによってＳａａＳプラットフォームを介して提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、ＳａａＳプラットフォームは、オンデマンドアプリケーション一式を統合された開発および展開プラットフォーム上で構築し配送する機能を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御してもよい。ＳａａＳプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。さまざまな異なるＳａａＳサービスが提供されてもよい。その例としては、大きな組織に対する売上実績管理、企業統合、および事業柔軟性に対するソリューションを提供するサービスが挙げられるが、それらに限定されるものではない。
【０１２６】
いくつかの実施形態においては、プラットフォームサービスは、クラウドインフラストラクチャシステム８０２によってＰａａＳプラットフォームを介して提供されてもよい。ＰａａＳプラットフォームは、ＰａａＳカテゴリに入るクラウドサービスを提供するよう構成されてもよい。プラットフォームサービスの例としては、（オラクルなどの）組織が既存のアプリケーションを共有の共通アーキテクチャにおいて整理統合することを可能にするサービス、およびプラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能を挙げることができるが、それらに限定されるものではない。ＰａａＳプラットフォームは、ＰａａＳサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステム８０２によって提供されるＰａａＳサービスを、別のライセンスおよびサポートを購入する必要なく取得することができる。プラットフォームサービスの例としては、オラクル・ジャバ・クラウド・サービス（Oracle Java（登録商標） Cloud Service：ＪＣＳ）、オラクル・データベース・クラウド・サービス（Oracle Database Cloud Service：ＤＢＣＳ）などが挙げられるが、それらに限定されるものではない。
【０１２７】
ＰａａＳプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、展開されたサービスを制御することもできる。いくつかの実施形態においては、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス（たとえばオラクル・フュージョン・ミドルウェアサービス）、およびＪａｖａクラウドサービスを含んでもよい。一実施形態においては、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にデータベース・アズ・ア・サービス（Database as a Service）をデータベースクラウドの形式で提供することを可能にする共有のサービス展開モデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発および展開するためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供してもよく、Ｊａｖａクラウドサービスは、顧客がＪａｖａアプリケーションを展開するためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供してしてもよい。
【０１２８】
さまざまな異なるインフラストラクチャサービスがＩａａＳプラットフォームによってクラウドインフラストラクチャシステムにおいて提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワーク、ならびにＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客に対する他の基礎的計算リソースなどの基本的な計算リソースの管理および制御を容易にする。
【０１２９】
特定の実施形態においては、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するために用いられるリソースを提供するためのインフラストラクチャリソース８３０も含み得る。一実施形態においては、インフラストラクチャリソース８３０は、サーバ、ストレージ、ならびにＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するためのネットワーク接続リソース、ならびに他のリソースなどの、ハードウェアの予め統合され最適化された組み合わせを含んでもよい。
【０１３０】
いくつかの実施形態においては、クラウドインフラストラクチャシステム８０２におけるリソースは、複数のユーザによって共有され、要求に従って動的に再割り当てされてもよい。加えて、リソースは、ユーザに対してさまざまな時間ゾーンで割り当てられてもよい。たとえば、クラウドインフラストラクチャシステム８０２は、第１の時間ゾーンにおける第１のユーザセットがクラウドインフラストラクチャシステムのリソースをある特定の時間の間利用することを可能にし、次いで、異なる時間ゾーンに位置する別のユーザセットに対する同じリソースの再割り当てを可能にし、これにより、リソースの利用を最大化し得る。
【０１３１】
特定の実施形態においては、クラウドインフラストラクチャシステム８０２のさまざまなコンポーネントまたはモジュールによって共有されてクラウドインフラストラクチャシステム８０２によるサービスのプロビジョニングを可能にするいくつかの内部共有サービス８３２が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、それらに限定されるものではない。
【０１３２】
特定の実施形態においては、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステムにおいてクラウドサービス（たとえばＳａａＳサービス、ＰａａＳサービスおよびＩａａＳサービス）の包括的な管理を提供してもよい。一実施形態においては、クラウド管理機能は、クラウドインフラストラクチャシステム８０２によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、およびトラッキングする機能などを含んでもよい。
【０１３３】
一実施形態においては、図８に示されるように、クラウド管理機能は、オーダー管理モジュール８２０、オーダーオーケストレーションモジュール８２２、オーダープロビジョニングモジュール８２４、オーダー管理および監視モジュール８２６、ならびにアイデンティティ管理モジュール８２８などの１つ以上のモジュールによって提供されてもよい。これらのモジュールは、１つ以上のコンピュータおよび／もしくはサーバを含んでもよく、またはそれらを用いて提供されてもよく、それらは、汎用コンピュータ、専用のサーバコンピュータ、サーバファーム、サーバクラスタ、または他の如何なる適切な構成および／もしくは組み合わせであってもよい。
【０１３４】
例示的な動作では、ステップ８３４において、クライアントデバイス８０４、８０６または８０８などのクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム８０２によって提供される１つ以上のサービスを要求し、クラウドインフラストラクチャシステム８０２によって提供される１つ以上のサービスに対するサブスクリプションに対するオーダーを行なうことによって、クラウドインフラストラクチャシステム８０２と対話してもよい。特定の実施形態においては、顧客は、クラウドユーザインターフェイス（User Interface：ＵＩ）（たとえば、クラウドＵＩ８１２、クラウドＵＩ８１４および／またはクラウドＵＩ８１６など）にアクセスし、これらのＵＩを介してブスクリプションオーダーを行なってもよい。顧客がオーダーを行なうことに応答してクラウドインフラストラクチャシステム８０２によって受信されるオーダー情報は、顧客を識別する情報、およびクラウドインフラストラクチャシステム８０２によって提供される、その顧客が利用することを意図する１つ以上のサービスを含んでもよい。
【０１３５】
ステップ８３６において、顧客から受信されたオーダー情報は、オーダーデータベース８１８に保存されてもよい。これが新たなオーダーである場合には、当該オーダーに対して新たな記録が作成されてもよい。一実施形態においては、オーダーデータベース８１８は、クラウドインフラストラクチャシステム８１８によって動作されるいくつかのデータベースのうちの１つであり得るとともに、他のシステム要素と連携して動作され得る。
【０１３６】
ステップ８３８において、オーダー情報は、オーダー管理モジュール８２０に転送されてもよく、当該オーダー管理モジュール８２０は、オーダーの検証、および検証後のそのオーダーの予約などの、オーダーに関連する請求および課金の機能を実行するように構成されてもよい。
【０１３７】
ステップ８４０において、オーダーに関する情報は、オーダーオーケストレーションモジュール８２２に伝達されてもよく、当該オーダーオーケストレーションモジュール８２２は、顧客によってなされたオーダーに対してサービスおよびリソースのプロビジョニングをオーケストレーションするよう構成されている。いくつかの例では、オーダーオーケストレーションモジュール８２２は、オーダープロビジョニングモジュール８２４のサービスをプロビジョニングに使用してもよい。特定の実施形態においては、オーダーオーケストレーションモジュール８２２は、各オーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネス論理を適用して、オーダーがプロビジョニングに進むべきか否かを判断する。
【０１３８】
図８に示される実施形態に示されるように、ステップ８４２において、新たなサブスクリプションに対するオーダーを受信すると、オーダーオーケストレーションモジュール８２２は、オーダープロビジョニングモジュール８２４に対して、リソースを割り当てて、サブスクリプションオーダーを満たすのに必要とされるリソースを構成するようにとの要求を送信する。オーダープロビジョニングモジュール８２４は、顧客によってオーダーされたサービスに対するリソースの割り当てを可能にする。オーダープロビジョニングモジュール８２４は、クラウドインフラストラクチャシステム８００によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするのに用いられる物理的インプリメンテーション層との間にある抽象化レベルを提供する。これにより、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか、または、サービスおよびリソースが予めプロビジョニングされて要求時にのみ割当て／割振りがなされるかなどの、インプリメンテーション詳細からオーダーオーケストレーションモジュール８２４を分離することができる。
【０１３９】
ステップ８４４において、サービスおよびリソースがプロビジョニングされると、要求されたサービスが使用できる準備ができた状態であることを示す通知が、加入している顧客に送信され得る。いくつかの例では、顧客が要求されたサービスの使用を開始することを可能にする情報（たとえばリンク）が顧客に送信されてもよい。
【０１４０】
ステップ８４６において、顧客のサブスクリプションオーダーは、オーダー管理および監視モジュール８２６によって管理およびトラッキングされ得る。いくつかの例では、オーダー管理および監視モジュール８２６は、加入したサービスの顧客使用に関する使用統計を収集するように構成され得る。たとえば、統計は、使用されるストレージの量、転送されるデータの量、ユーザの人数、ならびにシステムアップ時間およびシステムダウン時間の量などについて収集されてもよい。
【０１４１】
特定の実施形態においては、クラウドインフラストラクチャシステム８００はアイデンティティ管理モジュール８２８を含み得る。アイデンティティ管理モジュール８２８は、クラウドインフラストラクチャシステム８００におけるアクセス管理および承認サービスなどのアイデンティティサービスを提供するように構成されている。いくつかの実施形態においては、アイデンティティ管理モジュール８２８は、クラウドインフラストラクチャシステム８０２によって提供されるサービスを利用することを望む顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステムリソース（たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してどのアクションを実行することが承認されるかを記述する情報を含み得る。アイデンティティ管理モジュール８２８は、各顧客についての記述的情報と、その記述的情報がどのように誰によってアクセスおよび修正され得るかについての記述的情報との管理も含み得る。
【０１４２】
図９は、いくつかの例示的な実施形態に従った、いくつかの要素を実現するのに使用され得る例示的なコンピュータシステムを示す。いくつかの実施形態においては、コンピュータシステム９００は、上記のさまざまなサーバおよびコンピュータシステムのうちのいずれかを実現するために用いられてもよい。図９に示されるように、コンピュータシステム９００は、バスサブシステム９０２を介していくつかの周辺サブシステムと通信する処理サブシステム９０４を含むさまざまなサブシステムを含む。これらの周辺サブシステムは、処理加速ユニット９０６、Ｉ／Ｏサブシステム９０８、ストレージサブシステム９１８および通信サブシステム９２４を含み得る。ストレージサブシステム９１８は、有形のコンピュータ読取り可能記憶媒体９２２およびシステムメモリ９１０を含んでもよい。
【０１４３】
バスサブシステム９０２は、コンピュータシステム９００のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム９０２は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用してもよい。バスサブシステム９０２は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（Industry Standard Architecture：ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Micro Channel Architecture：ＭＣＡ）バス、エンハンストＩＳＡ（Enhanced ISA：ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（Video Electronics Standards Association：ＶＥＳＡ）ローカルバス、およびＩＥＥＥ  Ｐ１３８６．１規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト（Peripheral Component Interconnect：ＰＣＩ）バスなどを含んでもよい。
【０１４４】
処理サブシステム９０４は、コンピュータシステム９００の動作を制御し、１つ以上の処理ユニット９３２，９３４などを備えてもよい。処理ユニットは、単一コアもしくはマルチコアプロセッサを含む１つ以上のプロセッサ、プロセッサの１つ以上のコア、またはそれらの組み合わせを含んでもよい。いくつかの実施形態においては、処理サブシステム９０４は、グラフィックスプロセッサ、デジタル信号プロセッサ（digital signal processor：ＤＳＰ）などの１つ以上の特殊用途コプロセッサを含み得る。いくつかの実施形態においては、処理サブシステム９０４の処理ユニットの一部または全ては、特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）などのカスタマイズされた回路を用いて実現され得る。
【０１４５】
いくつかの実施形態においては、処理サブシステム９０４における処理ユニットは、システムメモリ９１０またはコンピュータ読取り可能記憶媒体９２２に記憶された命令を実行することができる。さまざまな実施形態においては、処理ユニットは、さまざまなプログラムまたはコード命令を実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与のときに、実行されるべきプログラムコードの一部または全ては、システムメモリ９１０、および／または、場合によっては１つ以上のストレージデバイスを含むコンピュータ読取り可能記憶媒体９１０に常駐することができる。好適なプログラミングにより、処理サブシステム９０４は、使用パターンに応じてドキュメント（たとえばウェブページ）を動的に修正するための上記のさまざまな機能を提供することができる。
【０１４６】
特定の実施形態においては、コンピュータシステム９００によって実行される処理全体を加速させるように、カスタマイズされた処理を実行するため、または処理サブシステム９０４によって実行される処理の一部をオフロードするための処理加速ユニット９０６が設けられてもよい。
【０１４７】
Ｉ／Ｏサブシステム９０８は、コンピュータシステム９００に情報を入力するため、および／または、コンピュータシステム９００からもしくはコンピュータシステム９００を介して情報を出力するためのデバイスおよびメカニズムを含んでもよい。一般に、「入力デバイス」という語の使用は、コンピュータシステム９００に情報を入力するための実現可能な全てのタイプのデバイスおよびメカニズムを含むよう意図されている。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスはまた、ユーザが入力デバイスを制御して入力デバイスと対話することを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサ、Ｍｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラ、ジェスチャおよび話し言葉コマンドを用いて入力を受信するためのインターフェイスを備えたデバイスなどのモーション感知および／またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の活動（たとえば写真を撮っている間および／またはメニュー選択を行なっている間の「まばたき」）を検出し、アイジェスチャを入力デバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換するＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム（たとえばＳｉｒｉ（登録商標）ナビゲータ）と対話することを可能にする音声認識感知デバイスを含んでもよい。
【０１４８】
ユーザインターフェイス入力デバイスの他の例としては、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚／視覚デバイスが挙げられるが、それらに限定されるものではない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査デバイスなどの医療画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、ＭＩＤＩ（楽器デジタルインターフェイス（Musical Instrument Digital Interface））キーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【０１４９】
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管（cathode ray tube：ＣＲＴ）、液晶ディスプレイ（liquid crystal display：ＬＣＤ）またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という語の使用は、コンピュータシステム９００からユーザまたは他のコンピュータに情報を出力するための実現可能な全てのタイプのデバイスおよびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声／映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
【０１５０】
ストレージサブシステム９１８は、コンピュータシステム９００によって使用される情報を記憶するためのリポジトリまたはデータストアを提供する。ストレージサブシステム９１８は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形の非一時的なコンピュータ読取り可能記憶媒体を提供する。処理サブシステム９０４によって実行されたときに上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）がストレージサブシステム９１８に記憶されてもよい。当該ソフトウェアは、処理サブシステム９０４の１つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム９１８は、本発明に従って使用されるデータを記憶するためのリポジトリも備えていてもよい。
【０１５１】
ストレージサブシステム９１８は、揮発性メモリデバイスおよび不揮発性メモリデバイスを含む１つ以上の非一時的なメモリデバイスを含んでもよい。図９に示されるように、ストレージサブシステム９１８は、システムメモリ９１０と、コンピュータ読取り可能記憶媒体９２２とを含む。システムメモリ９１０は、プログラム実行中に命令およびデータを記憶するための揮発性メインランダムアクセスメモリ（random access memory：ＲＡＭ）と、固定命令が記憶される不揮発性リードオンリメモリ（read only memory：ＲＯＭ）またはフラッシュメモリとを含む複数のメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム９００内の要素間における情報の転送を助ける基本的なルーティンを含むベーシックインプット／アウトプットシステム（basic input/output system：ＢＩＯＳ）が、典型的には、ＲＯＭに記憶されてもよい。ＲＡＭは、典型的には、処理サブシステム９０４によって現在動作および実行されているデータおよび／またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ９１０は、スタティックランダムアクセスメモリ（static random access memory：ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（dynamic random access memory：ＤＲＡＭ）などの複数の異なるタイプのメモリを含んでもよい。
【０１５２】
一例として、限定を伴うことなく、図９に示されるように、システムメモリ９１０は、アプリケーションプログラム９１２を記憶してもよく、当該アプリケーションプログラム９１２は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（relational database management system：ＲＤＢＭＳ）など、プログラムデータ９１４およびオペレーティングシステム９１６を含んでもよい。一例として、オペレーティングシステム９１６は、さまざまなバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／もしくはＬｉｎｕｘ（登録商標）オペレーティングシステム、市場で入手可能なさまざまなＵＮＩＸ（登録商標）またはＵＮＩＸ系オペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むがそれらに限定されない）、ならびに／または、ｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）  ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）  １０  ＯＳ、およびＰａｌｍ（登録商標）  ＯＳオペレーティングシステムを含んでもよい。
【０１５３】
コンピュータ読取り可能記憶媒体９２２は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構造を記憶してもよい。処理サブシステム９０４によって実行されたときにプロセッサに上記の機能を提供させるソフトウェア（プログラム、コードモジュール、命令）は、ストレージサブシステム９１８に記憶されてもよい。一例として、コンピュータ読取り可能記憶媒体９２２は、ハードディスクドライブ、磁気ディスクドライブ、ＣＤ  ＲＯＭ、ＤＶＤ、ブルーレイ（登録商標）ディスクなどの光ディスクドライブ、または他の光学式媒体などの不揮発性メモリを含んでもよい。コンピュータ読取り可能記憶媒体９２２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（universal serial bus：ＵＳＢ）フラッシュドライブ、セキュアデジタル（secure digital：ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されるものではない。コンピュータ読取り可能記憶媒体９２２は、フラッシュメモリベースのＳＳＤ、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなどの不揮発性メモリに基づくソリッドステートドライブ（solid-state drive：ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（magnetoresistive RAM：ＭＲＡＭ）ＳＳＤなどの揮発性メモリに基づくＳＳＤ、およびＤＲＡＭとフラッシュメモリベースのＳＳＤとの組み合わせを使用するハイブリッドＳＳＤを含んでもよい。コンピュータ読取り可能媒体９２２は、コンピュータ読取り可能な命令、データ構造、プログラムモジュールおよび他のデータのストレージをコンピュータシステム９００に提供してもよい。
【０１５４】
特定の実施形態においては、ストレージサブシステム９００は、コンピュータ読取り可能記憶媒体９２２にさらに接続可能なコンピュータ読取り可能記憶媒体リーダ９２０を含んでもよい。システムメモリ９１０とともに、およびオプションとしてシステムメモリ９１０との組み合わせで、コンピュータ読取り可能記憶媒体９２２は、コンピュータ読取り可能な情報を記憶するための、遠隔の、ローカルな、固定された、および／またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表わしてもよい。
【０１５５】
特定の実施形態においては、コンピュータシステム９００は、１つ以上の仮想マシンを実行するためのサポートを提供してもよい。コンピュータシステム９００は、仮想マシンの構成および管理を容易にするためのハイパーバイザなどのプログラムを実行してもよい。各仮想マシンは、割り当てられたメモリ、計算（たとえばプロセッサ、コア）、Ｉ／Ｏおよびネットワーク接続リソースであってもよい。各仮想マシンは、典型的には、それ自体のオペレーティングシステムを実行し、当該オペレーティングシステムは、コンピュータシステム９００によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同一であってもよく、または異なっていてもよい。したがって、場合によっては、複数のオペレーティングシステムがコンピュータシステム９００によって同時に実行されてもよい。各仮想マシンは、一般に、他の仮想マシンから独立して実行される。
【０１５６】
通信サブシステム９２４は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム９２４は、コンピュータシステム９００から他のシステムへのデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム９２４は、コンピュータシステム９００が１つ以上のクライアントデバイスとの情報の送受のためにインターネットを介して当該１つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。
【０１５７】
通信サブシステム９２４は、有線通信プロトコルおよび／または無線通信プロトコルをサポートしてもよい。たとえば、特定の実施形態においては、通信サブシステム９２４は、（たとえばセルラー電話技術、３Ｇ、４ＧもしくはＥＤＧＥ（グローバル進化のための高速データレート）などの先進データネットワーク技術、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組み合わせを用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（radio frequency：ＲＦ）送受信機コンポーネント、グローバルポジショニングシステム（global positioning system：ＧＰＳ）受信機コンポーネント、ならびに／または他のコンポーネントを含んでもよい。いくつかの実施形態においては、通信サブシステム９２４は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続（たとえばイーサネット）を提供することができる。
【０１５８】
通信サブシステム９２４は、さまざまな形式でデータを送受信することができる。たとえば、いくつかの実施形態においては、通信サブシステム９２４は、構造化されたおよび／または構造化されていないデータフィード９２６、イベントストリーム９２８、イベント更新情報９３０などの形式で入力通信を受信してもよい。たとえば、通信サブシステム９２４は、ソーシャルメディアネットワークならびに／または他の通信サービス（たとえば、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新情報、Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ（ＲＳＳ）フィードなどのウェブフィード、および／もしくは１つ以上の第三者情報源からのリアルタイム更新情報など）のユーザからリアルタイムでデータフィード９２６を受信（または送信）するように構成されてもよい。
【０１５９】
特定の実施形態においては、通信サブシステム９２４は、連続データストリームの形式でデータを受信するよう構成されてもよく、当該連続データストリームは、明示的な端部を有さない本質的に連続的または無限であり得る、リアルタイムイベントのイベントストリーム９２８および／またはイベント更新情報９３０を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などを挙げることができる。
【０１６０】
また、通信サブシステム９２４は、構造化されたおよび／または構造化されていないデータフィード９２６、イベントストリーム９２８、イベント更新情報９３０などを、コンピュータシステム９００に結合される１つ以上のストリーミングデータソースコンピュータと通信し得る１つ以上のデータベースに出力するよう構成されてもよい。
【０１６１】
コンピュータシステム９００は、手持ち式の携帯デバイス（たとえばｉＰｈｏｎｅ（登録商標）携帯電話、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、または他のいずれかのデータ処理システムを含む、さまざまなタイプのもののうちの１つであり得る。
【０１６２】
コンピュータおよびネットワークが常に変化する性質を有しているため、図９に示されるコンピュータシステム９００の記載は、単に具体的な例として意図される。図９に示されるシステムよりも多いかまたは少ないコンポーネントを有する多くの他の構成が実現可能である。本明細書において提供されている開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および／または方法を理解するであろう。
【０１６３】
具体的な例示的実施形態について説明してきたが、さまざまな変形例、変更例、代替的な構成および同等例も本発明の範囲内に包含される。本発明の実施形態は、特定の具体的なデータ処理環境内でのオペレーションに限定されるものではなく、複数のデータ処理環境内で自由に機能し得る。加えて、特定の一連のトランザクションおよびステップを用いて本発明の実施形態について説明してきたが、本発明の範囲が、記載されている一連のトランザクションおよびステップに限定されるものではないことが当業者に明らかになるはずである。上記の実施形態のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。
【０１６４】
さらに、ハードウェアとソフトウェアとの特定の組み合わせを用いて例示的な実施形態について説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも本発明の範囲内であることが認識されるはずである。例示的な実施形態のいくつかは、ハードウェアのみで実現されてもよく、またはソフトウェアのみで実現されてもよく、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されているさまざまなプロセスは、任意の組み合わせで同一のプロセッサまたは異なるプロセッサ上で実現され得る。したがって、コンポーネントまたはモジュールが特定のオペレーションを実行するよう構成されるものとして記載されている場合、このような構成は、たとえばオペレーションを実行するように電子回路を設計することによって、オペレーションを実行するように（マイクロプロセッサなどの）プログラム可能な電子回路をプログラミングすることによって、またはそれらの任意の組み合わせによって、達成されることができる。プロセスは、従来のプロセス間通信技術を含むがそれに限定されないさまざまな技術を用いて通信することができ、プロセスの異なる対は、異なる技術を使用してもよく、またはプロセスの同一の対は、異なる時に異なる技術を使用してもよい。
【０１６５】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかしながら、特許請求の範囲に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の変形および変更がそれに対してなされてもよいことが明白になるであろう。したがって、具体的な例示的実施形態について説明してきたが、これらは限定的であるよう意図されるものではない。さまざまな変形例および同等例は、添付の特許請求の範囲内である。
【図１】
2019501431.tif 000003
【図２】
2019501431.tif 000004
【図３】
2019501431.tif 000005
【図４】
2019501431.tif 000006
【図５】
2019501431.tif 000007
【図６】
2019501431.tif 000008
【図７】
2019501431.tif 000009
【図８】
2019501431.tif 000010
【図９】
2019501431.tif 000011
【国際調査報告】
2019501431.tif 000012
2019501431.tif 000013
2019501431.tif 000014