JP6887421B2 - コンテナ間における信頼性の確立 - Google Patents

コンテナ間における信頼性の確立 Download PDF

Info

Publication number
JP6887421B2
JP6887421B2 JP2018513535A JP2018513535A JP6887421B2 JP 6887421 B2 JP6887421 B2 JP 6887421B2 JP 2018513535 A JP2018513535 A JP 2018513535A JP 2018513535 A JP2018513535 A JP 2018513535A JP 6887421 B2 JP6887421 B2 JP 6887421B2
Authority
JP
Japan
Prior art keywords
application
containerized application
access server
containerized
iek
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.)
Active
Application number
JP2018513535A
Other languages
English (en)
Other versions
JP2019501431A5 (ja
JP2019501431A (ja
Inventor
アーミル,モハマド
レーマン,アタ・ウル
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2019501431A publication Critical patent/JP2019501431A/ja
Publication of JP2019501431A5 publication Critical patent/JP2019501431A5/ja
Application granted granted Critical
Publication of JP6887421B2 publication Critical patent/JP6887421B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/37Managing security policies for mobile devices or for controlling mobile applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)
  • Storage Device Security (AREA)

Description

関連出願の相互参照
本PCT出願は、2016年9月15日に提出されて「コンテナ間における信頼性の確立(ESTABLISHING TRUST BETWEEN CONTAINERS)」と題された米国非仮出願第15/267,044号の利益および優先権を主張するものであって、さらに、2015年10月23日に提出されて「コンテナ間における信頼性のための方法(METHOD OF TRUST BETWEEN CONTAINERS)」と題された米国仮出願第62/245,534号の利益および優先権を主張するものである(米国非仮出願第15/267,044号はまた、米国仮出願第62/245,534号の優先権を主張する)。上述の第15/267,044号および第62/245,534号の出願の内容全体は、引用によりあらゆる目的のためにこの明細書中に援用されている。
背景
本開示は、概して、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立することに関する。特に、本開示は、同じデバイス上で実行されるとともにオラクル・モバイル・セキュリティ・アクセスサーバなどの同じアクセスサーバに登録されたコンテナ化されたアプリケーション間におけるデータの安全な交換に関する。
コンテナ化されたアプリケーションなどのアプリケーションがモバイルデバイスなどのデバイスにインストールされると、当該アプリケーションが開始される。デバイスのユーザは、自身が認可されたユーザであるかどうかを判断するためにアクセスサーバで自身を認証するように要求されることとなる。ユーザが認証されれば、彼らはアプリケーションおよびそのデータにアクセスすることが許可され得る。仮に、コンテナ化されたアプリケーションなどの別のアプリケーションがデバイスにインストールされ、同じアクセスサーバに登録されるとともに、当該アプリケーションが既に認証されており、セッショントークンおよびデータ暗号化キー(ルートキー)を保持している場合、シングルサインオン(single sign-on:SSO)をアプリケーション間で実行することができる。
SSOは、エンタープライズ内で複数のアプリケーションにログオンするためにユーザに同じIDおよびパスワードを入力させるための機能である。アクセスマネージャは、SSOシステムを実現することによって1つ以上のリソースへのアクセスを管理してもよい。SSOシステムが提供し得るSSOセッションにより、認証されたアプリケーションが、アクセスする権利を与えられた保護されたリソースにアクセスすることが可能になる。
データは、インテントおよびブロードキャストを用いることによってアプリケーション間で共有することができる。インテントまたはパーセルは、さまざまなアプリケーションにおけるコード間の遅延ランタイム・バインディングを実行するための機能を提供することができるメッセージパッケージである。インテントは、たとえば、アクティビティの開始、サービスの開始および/またはブロードキャストの配信を実行するのに用いることができる。インテントは、アクションまたはトピックの抽象的記述を保持する受動的データ構造であり得る。たとえば、インテントはメッセージを含み得る。ブロードキャストはアプリケーションが受取ることができるメッセージであり得る。システムは、システムイベントのためのさまざまなタイプのブロードキャストを配信することができる。
インテントおよびブロードキャストは、カスタム・アクションなどのアクションで登録することができる。カスタム・アクションは、たとえば開発者によって定義され得る。アクションは実行されるべき一般的なアクションである。アクションは、たとえば、情報の表示、情報の編集などを含み得る。アプリケーションがアクションでインテントおよびブロードキャストを開始すると、そのアクションをリスニングしている他のアプリケーションは、そのアクションでブロードキャストされているメッセージを含むインテントを受取ることができる。
しかしながら、不正アプリケーションまたは未認可アプリケーションが同じアクションでそれ自体を登録する場合、不正アプリケーションは、インテントおよびブロードキャストを受取ることができ、インテント内に存在する全てのデータにアクセスすることができるようになり得る。したがって、インテントおよびブロードキャスト上のデータを不正アプリケーションから保護する必要がある。
アプリケーション間でのメッセージ交換は署名レベル保護を用いることによって確実に保証することができる。署名レベル保護は、たとえば、アンドロイド(登録商標)アプリケーションにおいて用いられている。署名レベル保護を用いることにより、第2のアプリケーションは、第2のアプリケーションが同じ署名者によって署名される場合にのみ、または、第2のアプリケーションが第1のアプリケーションと同じ署名証明書を有する場合にのみ、第1のアプリケーションと通信することが許可され得る。
しかしながら、同じ署名者情報であり得ない可能性もある。たとえば、オラクル・モバイル・セキュリティ・スーツ(Oracle Mobile Security Suite:OMSS)コンテナ化・ツールなどのモバイルアプリケーション管理システムのためのコンテナ化ツールを用いることで、如何なる第三者アプリケーションもコンテナ化することができる。さらに、コンテナ化されたアプリケーションは、アプリケーションストアにアップロードされ、ユーザによって使用され得る。これらのコンテナ化されたアプリケーションは、結果的に、他のアプリケーションとは異なる署名者情報を有することとなる。したがって、アプリケーションが同じ署名者情報をもたないので、メッセージ交換はアプリケーション間では機能しなくなり得る。
概要
例示的な実施形態は、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するための技術を提供する。
例示的な実施形態においては、方法は、デバイスによって、当該デバイス上の第1のコンテナ化されたアプリケーションをアクセスサーバに登録するステップと、当該デバイスによって、当該デバイス上の第2のコンテナ化されたアプリケーションを当該アクセスサーバに登録するステップと、第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップと、アクセスサーバに登録された第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとの間でデータを交換するステップとを含み得る。
一実施形態の局面においては、方法は、アクセスサーバからインテント暗号化キー(intent encryption key:IEK)、ルートキーおよびセッショントークンを受取るステップを含み得る。
一実施形態の局面においては、第1のコンテナ化されたアプリケーションをアクセスサーバに登録するステップは、第1のパブリック/プライベートキーを生成し、第1のパブリック/プライベートキーを第1のコンテナ化されたアプリケーションの第1のキーストアに格納するステップと、アクセスサーバからのIEKをコンテナ化されたアプリケーションの第2のキーストアに格納するステップと、生成されたパブリック/プライベートキーのパブリックキーを用いて、第1のコンテナ化されたアプリケーションの第2のキーストアを暗号化するステップと、共有アプリケーションリストを作成し、第1のコンテナ化されたアプリケーションの識別情報を共有アプリケーションリストに追加するステップと、共有アプリケーションリストを暗号化するステップとを含み得る。
一実施形態の局面においては、共有アプリケーションリストは、アクセスサーバからのルートキーを用いて暗号化される。
一実施形態の局面においては、第2のコンテナ化されたアプリケーションをアクセスサーバに登録するステップは、第2のパブリック/プライベートキーを生成し、第2のパブリック/プライベートキーを第2のコンテナ化されたアプリケーションの第1のキーストアに格納するステップと、アクセスサーバからのIEKを第2のコンテナ化されたアプリケーションの第2のキーストアに格納するステップと、生成された第2のパブリック/プライベートキーの第2のパブリックキーを用いて、第2のコンテナ化されたアプリケーションの第2のキーストアを暗号化するステップと、共有アプリケーションリストを復号化し、共有アプリケーションリストに第2のコンテナ化されたアプリケーションの識別情報を追加するステップとを含む。
一実施形態の局面においては、アクセスサーバはモバイル・セキュリティ・アクセスサーバ(Mobile Security Access Server:MSAS)である。
一実施形態の局面においては、第1のコンテナ化されたアプリケーションの識別情報は、第1のコンテナ化されたアプリケーションの署名およびパッケージ名を含み得る。
一実施形態の局面においては、第2のコンテナ化されたアプリケーションの識別情報は、第2のコンテナ化されたアプリケーションの署名およびパッケージ名を含み得る。
一実施形態の局面においては、第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップは、第1のコンテナ化されたアプリケーションによって、第2のコンテナ化されたアプリケーションの署名およびパッケージ名が共有アプリケーションリストに載っていると判断するステップを含む。
一実施形態の局面においては、第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとの間でデータを交換するステップは、第1のコンテナ化されたアプリケーションによって、暗号化されたインテントを第2のコンテナ化されたアプリケーションに送信するステップと、第2のコンテナ化されたアプリケーションによって、IEKを用いて、暗号化されたインテントを復号化するステップとを含む。
一実施形態の局面においては、暗号化されたインテントは、ルートキーおよびセッショントークンで暗号化されたインテントである。
一実施形態の局面においては、インテントは、アクションまたはトピックについての記述を示すメッセージパッケージを含む。
一実施形態の局面においては、共有アプリケーションリストがルートキーを用いて復号化される。
一実施形態の局面においては、方法はさらに、更新されたIEKをアクセスサーバから受取るステップと、第1のコンテナ化されたアプリケーションをアクセスサーバで認証するステップと、更新されたIEKを第1のコンテナ化されたアプリケーションによって受取るステップとを含み得る。
例示的な一実施形態においては、1つ以上のプロセッサによって実行可能な複数の命令を格納する非一時的なコンピュータ読取り可能記憶媒体であって、複数の命令は、1つ以上のプロセッサに、デバイスによって、当該デバイス上の第1のコンテナ化されたアプリケーションをアクセスサーバに登録する動作と、当該デバイスによって、当該デバイス上の第2のコンテナ化されたアプリケーションをアクセスサーバに登録する動作と、第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認する動作と、アクセスサーバに登録された第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとの間でデータを交換する動作と、を実行させる。
例示的な一実施形態においては、システムは、メモリと、当該メモリに連結された1つ以上のプロセッサとを含み得る。1つ以上のプロセッサは、デバイス上の第1のコンテナ化されたアプリケーションをアクセスサーバに登録するように構成され、デバイス上の第2のコンテナ化されたアプリケーションをアクセスサーバに登録するように構成され、第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するように構成され、アクセスサーバに登録された第1のコンテナ化されたアプリケーションと第2のコンテナ化されたアプリケーションとの間でデータを交換するように構成されている。
他の実施形態は、この明細書中に記載される方法に関連付けられたシステム、携帯用コンシューマ向けデバイスおよびコンピュータ読取り可能媒体に向けられている。
以下の詳細な説明および添付の図面を参照することにより、例示的な実施形態の性質および利点がより良く理解され得る。
図面の簡単な説明
本開示は、添付の図面に関連付けて以下の詳細な説明によって容易に理解され得る。添付の図面においては、同様の参照番号は同様の要素を示している。
いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するためのシステムを示す図である。 いくつかの実施形態に従った、第1のコンテナ化されたアプリケーションをアクセスサーバに登録するシーケンス図である。 いくつかの実施形態に従った、第2のコンテナ化されたアプリケーションをアクセスサーバに登録するシーケンス図である。 いくつかの実施形態に従った、登録済みのコンテナ化されたアプリケーションを開始するシーケンス図である。 いくつかの実施形態に従った、インテント暗号化キー(IEK)をリフレッシュおよび/または交換するシーケンス図である。 いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するフローチャートである。 いくつかの実施形態を実現するための分散型システムを示す簡略図である。 いくつかの実施形態に従った、サービスがクラウドサービスとして提供され得るシステム環境の1つ以上の構成要素を示す簡略ブロック図である。 いくつかの実施形態に従った、いくつかの要素を実現するために用いられ得る例示的なコンピュータシステムを示す図である。
詳細な説明
以下の記載においては、説明の目的で、具体的な詳細が例示的な実施形態の充分な理解を提供するために述べられている。しかしながら、さまざまな実施形態がこれらの具体的な詳細なしでも実施され得ることは明らかであり得る。たとえば、回路、システム、アルゴリズム、構造、技術、ネットワーク、プロセスおよび他のコンポーネントは、不必要な詳細で実施形態を曖昧にしないように、ブロック図の形式でコンポーネントとして示され得る。図および記載は、限定的となるように意図されたものではない。
例示的な実施形態は、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するための技術を提供する。コンテナ化されたアプリケーションは、アプリケーションサンドボックス化(sandboxing)とも称されるコンテナ化技術を用いて構成されたアプリケーションであり得る。コンテナ化されたアプリケーションは、それ自体の動作環境でコンテナ内に包含されるアプリケーションであり得る。コンテナ化されたアプリケーションは、電子メールアプリケーション、文書エディタ、ビジネスアプリケーションなどであり得る。コンテナ化されたアプリケーションが開始されると、アプリケーションクラスが初期化される。全ての初期設定/ライフサイクル方法がリネームされていたので、そのコードはいずれも実行されない。むしろ、ダミーの方法(コンテナライザ(containerizer)によって導入)が実行される。アプリケーションクラス初期設定の後、コンテンツ・プロバイダが初期化され、コンテンツ・プロバイダのためのラッパー・クラス(コンテナライザによって導入)が初期化される。
コンテナ化は、特定のコードが実行することのできる環境を制限するソフトウェア開発およびモバイルアプリケーション管理(mobile application management:MAM)に対するアプローチである。したがって、コンテナ化されたアプリケーションは、それがデバイス上のコンテナまたはサンドボックス内での実行に制限されるように構成されてもよい。コンテナ化されたアプリケーションは、他のアプリケーションから隔離されている環境において実行されるように構成されてもよい。
「コンテナライザ」アプリケーションは、固有の未変更のアプリケーションを入力として解釈する可能性もあり、コンテナ化された変更済みのアプリケーションを出力する。たとえば、グーグル・アンドロイド(登録商標)コンピュータアプリケーションのためのApplicationManifest.XMLファイルおよびGoogle Dalvik(登録商標)実行可能(DEX)バイトコード・ファイルは、グーグル・アンドロイド(登録商標)アプリケーション・パッケージ(application package:APK)ファイルから抽出される。ラッパークラスおよびダミーのライフサイクル方法が、アプリケーション、コンテンツ・プロバイダおよびアクティビティのために作成される。1つの目的は、認証が終わるまで元のコードが実行されないように、ダミーのライフサイクルを作成することである。認証が成功すると、実際のアプリケーションコードが実行される前にポリシーがフェッチされて適用される。
例示的な実施形態は、コンテナ化されたアプリケーション間におけるセキュリティメカニズムを提供する。セキュリティメカニズムは、コンテナ化されたアプリケーション間において許可を与えるための技術を実現し得る。例示的な実施形態に従ったセキュリティメカニズムは、2ステップの確認プロセスを含む2レベルのセキュリティメカニズムを含み得る。確認の第1のステップはアクセスサーバレベルで実行され、確認の第2のステップはデバイスレベルで実行される。したがって、サーバおよびデバイスはともに、たとえば、無認可で、デバイス上の2つのコンテナ化されたアプリケーション間で交換された情報を取得するために、危険にさらされなければならなくなり得る。たとえば、サーバおよびデバイスがともにハッキングされる必要が生じ得る。
具体的には、デバイスは、インテント暗号化キー(IEK)を取得するためにハッキングされる必要があり得る。デバイスがハッキングされれば、コンテナ化されたアプリケーションが機能しなくなる可能性があり、ユーザはアクセスサーバで認証されることができなくなる。しかしながら、アクセスサーバからIEKを取得できたとしても、ハッカーは、さらに、共有アプリケーションのリストを暗号化するのに用いられるルートキーを取得するためにユーザのパスワードを必要とし得る。
したがって、さまざまなアプリケーションベンダーに独立性を与えつつ、コンテナ化されたアプリケーションにセキュリティを追加することができる。第三者アプリケーションベンダーは、自身のコンテナ化されたアプリケーションをたとえばアプリケーションストアにアップロードすることができ、エンドユーザは、セキュリティを維持しながら、コンテナ化されたアプリケーションをアプリケーションストアからインストールすることができる。
図1は、いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するためのシステム100を示す。
システム100は、アクセスサーバ110と通信することができるモバイルデバイス120などのポータブルデバイスを含み得る。単一のモバイルデバイスが示されているが、1つ以上のモバイルデバイスがアクセスサーバ110と通信することができる。アクセスサーバ110はサーバコンピュータである。アクセスサーバ110は、たとえば、モバイル・セキュリティ・アクセス・サーバ(MSAS)またはアクセス・ゲートウェイであってもよい。モバイルデバイス120は、たとえば、携帯電話などのグーグル・アンドロイド(登録商標)オペレーティングシステム(operating system:OS)ベースのデバイスであってもよい。アンドロイド(登録商標)オペレーティングシステムが開示されているが、例示的な実施形態は、iOS(登録商標)などのさまざまなオペレーティングシステムにおいて用いることができ、アンドロイド(登録商標)オペレーティングシステムに限定されない。システム100は、たとえば、オラクル・モバイル・セキュリティ・スーツなどのコンテナ化されたアプリケーションのためのワークスペースにおいて用いることができる。
モバイルデバイス120は1つ以上のアプリケーションを含み得る。アプリケーションはコンテナ化されたアプリケーションであり得る。図1に示されるように、モバイルデバイス120は第1のアプリケーション121および第2のアプリケーション122を含む。2つのアプリケーションが図示されているが、モバイルデバイスは3つ以上または2つ未満のアプリケーションを含んでもよい。
モバイルデバイス120はパブリック/プライベートキー・ジェネレータ126を含み得る。パブリック/プライベートキー・ジェネレータ126は、第1のアプリケーション121および第2のアプリケーション122のためのパブリック/プライベートキー対を生成するために用いることができる。
アプリケーションの各々は対応するキーストアを有し得る。キーストアは、たとえば、認可証明書またはパブリックキー証明書などのセキュリティ証明書のリポジトリであり得る。第1のアプリケーション121は、第1のアプリケーション・キーストア・ディレクトリ123を含み得る。第2のアプリケーション122は、第2のアプリケーション・キーストア・ディレクトリ124を含み得る。第1のアプリケーション・キーストア・ディレクトリ123および第2のアプリケーション・キーストア・ディレクトリ124は、1つ以上のキーストアを含み得る。アンドロイド(登録商標)キーストアは、アンドロイドシステムによって提供されるキーストアである。アプリケーションの各々は、キー対を格納するアプリケーションにのみアクセス可能であるキー対を格納し得る。たとえば、第1のアプリケーション・キーストア・ディレクトリ123におけるキーストアは、第1のアプリケーション121(たとえば、第1のアプリケーションのための第1のキーストア)によってのみアクセス可能な第1のアプリケーションアンドロイド(登録商標)キーストア133であり得る。さらに、第2のアプリケーション・キーストア・ディレクトリ124におけるキーストアは、第2のアプリケーション122(たとえば、第2のアプリケーションのための第1のキーストア)によってのみアクセス可能な第2のアプリケーションアンドロイド(登録商標)キーストア134であり得る。アンドロイド(登録商標)キーストア133および134は、たとえば、パブリック/プライベートキー対ジェネレータ126によって生成されたパブリック/プライベートキー対を格納することができる。アンドロイド(登録商標)キーストアが記載されているが、これは単なる一例に過ぎず、キーストアはさまざまなオペレーティングシステムのためのものであり得る。
加えて、第1のアプリケーション・キーストア・ディレクトリ123におけるキーストアは、第1のアプリケーション121によってのみアクセス可能な第1のアプリケーションIEKキーストア143(たとえば、第1のアプリケーションのための第2のキーストア)を含み得る。第1のアプリケーションのための第2のキーストアは共有ファイルに格納することができ、共有ファイルはルートキーを用いて暗号化することができる。さらに、第2のアプリケーション・キーストア・ディレクトリ124におけるキーストアは、第2のアプリケーション122によってのみアクセス可能な第2のアプリケーションIEKキーストア144(たとえば、第2のアプリケーションのための第2のキーストア)を含み得る。
アプリケーションがアクセスサーバに登録された後、当該アプリケーションは、それらのパッケージ名および署名を共有アプリケーションリストに格納することができる。共有アプリケーションリストは、モバイルデバイス上において認証および登録済みのアプリケーションによって共有することができる。共有アプリケーションリストは共有ストレージ125上に格納することができる。共有ストレージ125は、モバイルデバイスの外部に配置することができ、1つ以上のアプリケーションによってアクセスすることができる。
アクセスサーバ110は、たとえば、モバイル・セキュリティ・アクセスサーバ(MSAS)であり得る。アクセスサーバは1つ以上のリソースへのアクセスをもたらすことができる。アクセスサーバ110は、SSOサービスを実現することができるオラクル・アクセス・マネージャなどのアクセス管理システムを含み得るかまたは当該アクセス管理システムに通信可能に連結され得る。いくつかの実施形態においては、アクセスサーバ110は、1つ以上のリソースへのSSOアクセスをもたらすためにSSOセッションを確立することができるシングルサインオン・オーセンティケータ111を含み得る。アクセスサーバ110は、ワークスペースにおける全てのコンテナ化されたアプリケーションが、ユーザのローカルエリアネットワーク(local area network:LAN)内で会話することを可能にする。たとえば、アクセスサーバ110は、インターネット上でエンティティを呼出すことができる。システムにおけるアプリケーションは全てアクセスサーバ110と通信することができる。
アクセスサーバ110はまた、トークンおよびキーストレージ112、ならびにデバイス情報ストレージ113を含み得る。トークンおよびキーストレージ112は、たとえば、セッショントークンおよびルートキーを格納することができる。デバイス情報ストレージ113は、たとえば、モバイルデバイス120についてのシリアル番号などのデバイスのシリアル番号を格納することができる。
アクセスサーバ110はまた、IEKプロバイダ114を含み得る。IEKはインテントについての暗号化キーであり得る。インテントは、さまざまなアプリケーションにおいてコード間における遅延ランタイム・バインディングを実行するための機能を提供する。さらに、インテントを用いてアクティビティを開始させることができる。インテントは、実行されるべきアクションの記述を保持する受動的なデータ構造であり得る。インテントは、別のアプリケーションコンポーネントにアクションを要求するために用いることができるメッセージ通信オブジェクトである。インテントは、いくつかの方法でコンポーネント間の通信を容易にすることができる。IEKプロバイダ114はインテントのためにIEKを提供することができる。
A.第1のコンテナ化されたアプリケーションの登録
図2は、いくつかの実施形態に従った、第1のコンテナ化されたアプリケーションをアクセスサーバに登録するシーケンス図を示す。
シーケンス200は、たとえば、コンテナ化されたアプリケーションである第1のアプリケーション220、アクセスサーバ210および認証されたアプリケーション240によって実行することができる。図2の要素は図1を参照して上述されたものと同様であり得る。たとえば、アクセスサーバ210は、たとえば、図1に記載されたアクセスサーバ110に対応し得る。第1のアプリケーション220および認証されたアプリケーション240は、モバイルデバイス120などのモバイルデバイス上に格納することができる。認証されたアプリケーション240は、アクセスサーバ210によって認証された、モバイルデバイス上の他のアプリケーションを含み得る。アクセスサーバ210によって予め認証されていたアプリケーション(たとえば、認証されたアプリケーション240)が存在している可能性もあり、予め認証されたアプリケーションが存在していない可能性もある。したがって、予め認証されたアプリケーション240は存在していない可能性もある。
図2に示される要素は単なる例であって、2つ以上の認証されたアプリケーションが存在する可能性もある。さらに、アプリケーションは第1のアプリケーションおよび第2のアプリケーションと称されているが、これは如何なる順序を示すものでもなく、第2のアプリケーションが第1のアプリケーションであってもよい。
ステップ221において、モバイルデバイス上に格納された第1のアプリケーション220が開始される。第1のアプリケーション220がモバイルデバイス上で開始されると、モバイルデバイスは、アクセスサーバ210で認証するようにモバイルデバイスのユーザに要求し得る。たとえば、ユーザは、モバイルデバイスのユーザインターフェイス上にユーザ名およびパスワードを入力するように要求され得る。ユーザが認証されれば、ユーザは第1のアプリケーションおよび第1のアプリケーション内のデータにアクセスすることができる。第1のアプリケーション220が開始されると、この第1のアプリケーション220は、ステップ222において、アクセスサーバ210によって認証され既に登録されているアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第1のアプリケーション220は、認証されたアプリケーション240がモバイルデバイス上に存在している場合、認証されたアプリケーション240にブロードキャストメッセージを送信することができる。
ブロードキャストメッセージは特定のアクションまたはトピックに関するメッセージである。したがって、トピックに関係のあるアプリケーションはメッセージをリンスニングすることができる。トピックは、たとえば、無線局識別子FM100またはFM89.1を含み得る。ブロードキャストメッセージは、アクセスサーバ210で認証される任意のアプリケーションからのセッショントークンおよびルートキーを要求するメッセージであり得る。
ステップ241において、認証されたアプリケーション240は、共有ファイルにおける第1のアプリケーション220の署名およびパッケージ名をチェックし得る。同じカスタム・アクションで登録されているので、認証されたアプリケーション240はブロードキャストを受取ることができる。認証されたアプリケーション240が同じカスタム・アクションで登録されていない場合、認証されたアプリケーション240は第1のアプリケーション220からのブロードキャストを受取り得ない。認証されたアプリケーション240が同じカスタム・アクションで登録されていれば、認証されたアプリケーション240はブロードキャストに応答することができる。
認証されたアプリケーション240は、第1のアプリケーション220の署名およびパッケージ名が共有の場所に格納される予め作成されたファイル内に存在しているかどうかを判断し得る。ファイルは、たとえば、共有ストレージ125に格納することができる。第1のアプリケーション220の署名およびパッケージ名がファイル内に存在していなければ、ステップ242において示されるように、認証されたアプリケーションは第1のアプリケーション220に応答を送信し得ない。
認証されたいずれのアプリケーションからも応答が受取られなければ、ステップ223において、認証が実行され得る。モバイルデバイスのユーザには認証画面が提示されることとなり、このモバイルデバイスのユーザは、モバイルデバイスのユーザインターフェイス上でユーザ名およびパスワードを入力するように要求され得る。
第1のアプリケーション220がアクセスサーバ210で認証された後、ステップ224において、登録が実行され得る。第1のアプリケーション220がそれ自体をアクセスサーバ210上に登録すると、第1のアプリケーション220はそのデバイスシリアル番号をアクセスサーバ210に提供し得る。デバイスシリアル番号は、たとえば、当該デバイスを他のデバイスから区別するために用いることができる固有の数値情報であり得る。
ステップ211において、アクセスサーバ210は、モバイルデバイスからの他のアプリケーションがあるかどうかを判断する。たとえば、アクセスサーバは、デバイスシリアル番号に応じて、モバイルデバイスからの他のアプリケーションがあるかどうかを判断することができる。デバイスシリアル番号がアクセスサーバ210上に存在していれば、ステップ212において、アクセスサーバ210はデバイスについてのインテント暗号化キー(IEK)を送信し得る。デバイスシリアル番号が存在していない場合、アクセスサーバ210は、最初に、デバイスについてのIEKを生成し、次いで、ステップ212において、生成されたIEKを送信し得る。IEKは、256ビット暗号化キーなどのキーであり得る。
ステップ212において、アクセスサーバ210は、IEKに加えてルートキーおよびセッショントークンを送信する。セッショントークンは、認証クッキーなどの、アクセスサーバ210によって提供されるトークンであり得る。さらに、セッショントークンは署名、ユーザ名、ID、日付などを含み得る。また、セッショントークンは、テキストのランダムなストリングを含み得る。ルートキーは、アプリケーションのキーストアの暗号化のためのマスターキーであり得る。ルートキーまたはマスターキーは、キーストアを暗号化するために用いることができる。
第1のアプリケーション220がIEK、ルートキーおよびセッショントークンを受取ると、ステップ225において、第1のアプリケーション220がパブリック/プライベートキー対を生成することができ、生成されたパブリック/プライベートキー対が、第1のアプリケーションアンドロイド(登録商標)キーストア133などの、第1のアプリケーションのための第1のキーストアに格納される。第1のアプリケーションのための第1のキーストア(たとえば、第1のアプリケーションアンドロイド(登録商標)キーストア133)は、第1のアプリケーションによってのみアクセスすることができる。各々のアプリケーションはそれ自体のアンドロイド(登録商標)キーストアを有することができる。アプリケーションがたとえばアンドロイド(登録商標)デバイスにインストールされると、当該アプリケーションには、ストレージから、そのアプリケーションだけがアクセスすることができるデバイス上の専有エリアが指定され得る。指定された専有エリアは第1のアプリケーションアンドロイド(登録商標)キーストア133であり得る。
ステップ226において、第1のアプリケーション220のための第2のキーストア(たとえば、第1のアプリケーションIEKキーストア143)が生成される。ステップ227において、アクセスサーバ210から受取られたIEKが、ステップ225において生成されたパブリックキーを用いて暗号化される。次いで、暗号化されたIEKは、第1のアプリケーション220の第2のキーストア(たとえば、第1のアプリケーションIEKキーストア143)に格納される。第1のアプリケーションの第2のキーストア(たとえば、第1のアプリケーションIEKキーストア143)は、第1のアプリケーション220によってのみアクセスすることができる。
暗号化されたIEKを含む第2のキーストアは、次いで、ステップ228において、ファイルディレクトリに格納される。ファイルディレクトリは、第1のアプリケーション220によってのみアクセス可能であり、第1のアプリケーション220専用である。
ステップ229においては、共有アプリケーションリストなどのファイルは共有の場所において作成することができ、暗号化することができる。ファイルはパッケージ名(たとえば、Gmail)および署名(たとえば、データ署名)を含み得る。ファイルは、ステップ212において受取られたルートキーを用いて暗号化することができる。
付加的なアプリケーションをモバイルデバイス上に格納することができる。付加的なアプリケーションは、予め認証されてアクセスサーバに登録されているアプリケーションと通信することができる。しかしながら、アプリケーションがデバイス上の他の認証されたアプリケーションと通信することができるようになる前に、当該アプリケーションもアクセスサーバに登録されなければならない。
B.第2のコンテナ化されたアプリケーションの登録
図3は、いくつかの実施形態に従った、第2のコンテナ化されたアプリケーション330をアクセスサーバ310に登録するシーケンス図を示す。
シーケンス300は、たとえば、第1のアプリケーション320、第2のアプリケーション330、アクセスサーバ310および認証されたアプリケーション340によって実行することができる。第1のアプリケーション320、第2のアプリケーション330および認証されたアプリケーション340は、モバイルデバイス120などのモバイルデバイス上に格納することができる。第1のアプリケーション320および第2のアプリケーション330はコンテナ化されたアプリケーションである。第1のアプリケーション320は、図2に関連付けて記載されたように、予め認証されて登録されている。したがって、第1のアプリケーション320は認証されたアプリケーションである。認証されたアプリケーション340は、アクセスサーバ310によって認証された、モバイルデバイス上の他のアプリケーションを含み得る。アクセスサーバ310によって予め認証されているアプリケーション(たとえば、認証されたアプリケーション340)が存在している可能性もあり、たとえば、第1のアプリケーション330以外の、予め認証されたアプリケーションが存在していない可能性もある。図3に示される要素は単なる例であって、1つ以上の認証されたアプリケーションが存在していてもよい。
ステップ331において、モバイルデバイス上に格納された第2のアプリケーション330が開始される。第2のアプリケーション330がモバイルデバイス上で開始されると、モバイルデバイスは、それ自体をアクセスサーバ310で認証するようにモバイルデバイスのユーザに要求し得る。ユーザが認証されれば、当該ユーザは、第2のアプリケーションおよび第2のアプリケーション内のデータにアクセスすることができる。第2のアプリケーション330が開始されると、この第2のアプリケーション330は、ステップ321において、アクセスサーバ310によって認証されて登録されているアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第2のアプリケーション330は第1のアプリケーション320および認証されたアプリケーション340にブロードキャストメッセージを送信することができる。ブロードキャストメッセージは、アクセスサーバ310で認証される如何なるアプリケーションからのセッショントークンおよびルートキーをも要求するメッセージであり得る。
ステップ341およびステップ322において、認証されたアプリケーション340および第1のアプリケーション320が、第2のアプリケーション330の署名およびパッケージ名をチェックし得る。図3に示される例においては、第1のアプリケーション320および認証されたアプリケーション340は、これらが同じカスタム・アクションで登録されているので、ブロードキャストを受取ることができる。第1のアプリケーション320および認証されたアプリケーション340が同じカスタム・アクションで登録されていない場合、第1のアプリケーション320および認証されたアプリケーション340は、第2のアプリケーション330からブロードキャストを受取り得ない。
第1のアプリケーション320および認証されたアプリケーション340は、第2のアプリケーション330の署名およびパッケージ名が共有の場所において作成されて格納されているファイル(たとえば、共有アプリケーションリスト)内に存在するかどうかを判断し得る。共有の場所において作成されて格納されているファイルは、たとえば、図2のステップ229において作成されたファイルに対応し得る。共有の場所は、たとえば、共有ストレージ125であり得る。第2のアプリケーション330の署名およびパッケージ名が共有ストレージにおけるファイル内に存在していない場合、第1のアプリケーション320および/または認証されたアプリケーション340は、ステップ342およびステップ323において示されるように、第2のアプリケーション330に応答を送信し得ない。たとえば、第2のアプリケーション330の署名およびパッケージ名が図2のステップ229において作成された共有ストレージにおけるファイル内に存在していない場合、第1のアプリケーション320は、ステップ323において示されるように、第2のアプリケーション330に応答を送信し得ない。第2のアプリケーション330が同じカスタム・アクションで登録されている場合、第1のアプリケーション320および/または認証されたアプリケーション340はブロードキャストに応答することができるかもしれない。
認証されたアプリケーション340および第1のアプリケーション320などのいずれの認証されたアプリケーションからも応答が受取られなければ、ステップ333において、認証が実行され得る。モバイルデバイスのユーザに認証画面が提示され得る。たとえば、ユーザには、ユーザ名およびパスワードを入力することが要求され得る。
第2のアプリケーション330がアクセスサーバ310で認証された後、ステップ334において、登録が実行され得る。第2のアプリケーション330がそれ自体をアクセスサーバ310上に登録すると、第2のアプリケーション330はそのデバイスシリアル番号をアクセスサーバ310に提供し得る。デバイスシリアル番号は、たとえば、当該デバイスを他のデバイスから区別するのに用いることができる固有の数値情報であり得る。
ステップ311において、アクセスサーバ310は、デバイスからの他のいずれかのアプリケーションがあるかどうかを判断する。たとえば、アクセスサーバは、デバイスシリアル番号に従って、モバイルデバイスからの他のいずれかのアプリケーションがあるかどうかを判断することができる。デバイスシリアル番号がアクセスサーバ310上に存在していれば、ステップ312において、アクセスサーバ310はデバイスのためのインテント暗号化キー(IEK)を送信し得る。デバイスシリアル番号が存在していない場合、アクセスサーバ310は、最初に、デバイスのためのIEKを生成し、次に、ステップ312において、生成されたIEKを送信し得る。ステップ312において、アクセスサーバ310は、IEKに加えて、ルートキーおよびセッショントークンを送信する。
第2のアプリケーション330がIEK、ルートキーおよびセッショントークンを受取ると、ステップ335において、第2のアプリケーション330は、パブリック/プライベートキー対を生成することができる。生成されたパブリック/プライベートキー対は、第2のアプリケーションのための第1のキーストア(たとえば、第2のアプリケーションアンドロイド(登録商標)キーストア134)に格納される。第2のアプリケーションのための第1のキーストア(たとえば、第2のアプリケーションアンドロイド(登録商標)キーストア134)は、第2のアプリケーションによってのみアクセスすることができる。各々のアプリケーションはそれ自体のアンドロイド(登録商標)キーストアを有することができる。
ステップ336において、第2のアプリケーション330のための第2のキーストア(たとえば、第2のアプリケーションIEKキーストア144)が生成される。ステップ337において、アクセスサーバ310から受取られたIEKが、ステップ335において生成されたパブリックキーを用いて暗号化される。次いで、暗号化されたIEKは、第2のアプリケーション330の第2のキーストア(たとえば、第2のアプリケーションIEKキーストア144)に格納される。第2のアプリケーションIEKキーストア144は第2のアプリケーション330によってのみアクセスすることができる。
次いで、暗号化されたIEKを含むキーストア(たとえば、第2のアプリケーションIEKキーストア144)は、ステップ338において、ファイルディレクトリなどのディレクトリに格納される。ディレクトリは第2のアプリケーション330によってのみアクセスすることができる。
ステップ339において、予め作成された(たとえば、図2のステップ229)共有アプリケーションリストなどのファイルは、第2のアプリケーションによって検索することができる。第2のアプリケーションは、ステップ312において受取られたルートキーを用いてファイルを復号化することができ、第2のアプリケーションは、そのパッケージ名および署名情報を共有アプリケーションリストに追加することができる。次いで、第2のアプリケーションはルートキーを用いて、共有アプリケーションリストを暗号化することができる。
したがって、第1のアプリケーションと第2のアプリケーションとの間で共有されるメッセージはいずれも、IEKを用いて暗号化され得る。さらに、メッセージを受取る第1のアプリケーションまたは第2のアプリケーションは、IEKを用いてメッセージを復号化することができる。
例示的な実施形態に従うと、IEKをフェッチするための認証が最初に実行される。さらなる認証はいずれも、IEKをフェッチするための認証の後であれば、第1のアプリケーションと第2のアプリケーションとの間などの認証されたアプリケーション間でシングルサインオン(SSO)をトリガすることができる。両方のアプリケーションが同じアクセスサーバに登録されており、かつ、アプリケーションのうち少なくとも1つが既に認証されており、セッショントークンおよびインテント暗号化キー(IEK)を保持しているので、SSOはアプリケーション間で実行することができる。
C.登記済みのコンテナ化されたアプリケーションの開始
図4は、いくつかの実施形態に従った、登録済みのコンテナ化されたアプリケーションを開始するシーケンス図を示す。
シーケンス400は、たとえば、第1のアプリケーション420、第2のアプリケーション430およびアクセスサーバ410によって実行することができる。第1のアプリケーション420および第2のアプリケーション430はコンテナ化されたアプリケーションである。さらに、第1のアプリケーション420および第2のアプリケーション430は、モバイルデバイス120などのモバイルデバイス上に格納することができる。第1のアプリケーション420および第2のアプリケーション430は、図2および図3に関連付けて記載されたとおり、認証されて登録されている。したがって、第1のアプリケーション420および第2のアプリケーション430は認証されたアプリケーションである。第1のアプリケーション420および第2のアプリケーション430は認証されたアプリケーションとして示されているが、モバイルデバイス上に他の認証されたアプリケーションがあってもよい。したがって、アクセスサーバ310によって予め認証されている付加的なアプリケーションが存在している可能性もある。図4に示される要素は単なる例に過ぎない。
ステップ421において、モバイルデバイス上に格納された第1のアプリケーション420が開始される。第1のアプリケーション420が開始された後、ステップ422において、第1のアプリケーション420は、アクセスサーバ410によって認証されて登録されているアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第1のアプリケーション420は第2のアプリケーション430にブロードキャストメッセージを送信することができる。第2のアプリケーション430は、図3に記載されるように認証され得る。
ブロードキャストメッセージは、アクセスサーバ410で認証される如何なるアプリケーションからのセッショントークンおよびルートキーをも要求するメッセージであり得る。
ステップ432において、第2のアプリケーション430などのいずれの認証されたアプリケーションからも応答が受取られなければ、ステップ423において、認証が実行され得る。モバイルデバイスのユーザに認証画面が提示され得る。たとえば、ユーザに、デバイスのユーザインターフェイス上にユーザ名およびパスワードを入力するように促すことができる。認証の後、IEK、セッショントークンおよびルートキーがアクセスサーバからフェッチされる。
ステップ433において、第2のアプリケーション430が開始されていれば、ステップ434において、第2のアプリケーションは、アクセスサーバ410によって認証されたアプリケーションにブロードキャストメッセージを送信し得る。たとえば、第2のアプリケーション430は第1のアプリケーション420にブロードキャストメッセージを送信することができる。第1のアプリケーション420は、図2に記載されるように認証され得る。
ブロードキャストメッセージは、アクセスサーバ410で認証されるいずれのアプリケーションからのセッショントークンおよびルートキーをも要求するメッセージであり得る。
ステップ424において、第1のアプリケーションは、第2のアプリケーション430についてのパッケージ名および署名をチェックすることができる。第1のアプリケーションは、ルートキーを用いることにより、共有ファイルまたは共有アプリケーションリストを復号化することによって、第2のアプリケーション430についてのパッケージ名および署名をチェックすることができる。
ステップ425において、第1のアプリケーション420は、第2のアプリケーション430が信頼されたアプリケーションであることを確認することができる。第2のアプリケーション430が信頼されたアプリケーションであることを確認した後、第1のアプリケーション420は、IEKによって暗号化されたルートキーおよびセッショントークンと共にインテントを準備することができる。インテント、ルートキーおよびセッショントークンは、ステップ426において、第2のアプリケーション430にブロードキャストすることができる。
第2のアプリケーション430がインテントを受取った後、ステップ431において、第2のアプリケーション430は、その生成されたパブリック/プライベートキー対を第2のアプリケーション430の第1のキーストア(たとえば、第2のアプリケーションアンドロイド(登録商標)キーストア134)から検索する。アンドロイド(登録商標)キーストアは、システムによって提供されるとともにハードウェアによって支援されるキーストアであり得る。したがって、キー・セキュリティをハードウェアレベルで保証することができる。したがって、これらは復号化される必要がない。なぜなら、1つのアプリケーションのキーが別のアプリケーションのキーにアクセス可能とはならないからである。
ステップ432において、第2のアプリケーション430は、第2のアプリケーション430の第1のキーストア(たとえば、第2のアプリケーションアンドロイド(登録商標)キーストア134)から検索されたパブリック/プライベートキー対を用いることによって、IEKを有する第2のアプリケーション430の第2のキーストア(たとえば、第2のアプリケーションIEKキーストア144)を復号化する。第2のアプリケーション430の第2のキーストア(たとえば、第2のアプリケーションIEKキーストア144)を復号化した後、第2のアプリケーション430は、第2のキーストア(たとえば第2のアプリケーションIEKキーストア144)からIEKを検索することができる。
ステップ433において、第2のアプリケーション430が、IEKを用いて、インテントからセッショントークンおよびルートキーを復号化する。したがって、第2のアプリケーション430は、インテント内の情報にアクセスすることができる。また、情報はアプリケーション間で交換することができる。
D.インテント暗号化キー(IEK)の更新
図5は、いくつかの実施形態に従った、IEKをリフレッシュおよび/または交換するシーケンス図を示す。
シーケンス500は、たとえば、第1のアプリケーション520、第2のアプリケーション530およびアクセスサーバ510によって実行することができる。第1のアプリケーション520および第2のアプリケーション530はコンテナ化されたアプリケーションである。さらに、第1のアプリケーション520および第2のアプリケーション530は、モバイルデバイス120などのモバイルデバイス上に格納することができる。第1のアプリケーション520および第2のアプリケーション530は、図2および図3に関連付けて記載されるように、認証されて登録されている。したがって、第1のアプリケーション520および第2のアプリケーション530は認証されたアプリケーションである。第1のアプリケーション520および第2のアプリケーション530は認証されたアプリケーションとして示されているが、モバイルデバイス上に他の認証されたアプリケーションが存在していてもよい。したがって、アクセスサーバ510によって予め認証されている付加的なアプリケーションが存在している可能性もあり、予め認証されたアプリケーションが存在していない可能性もある。図5に示される要素は単なる例に過ぎない。
IEKはアクセスサーバ510において変更することができる。たとえば、IEKが含まれており、たとえばもはや安全ではない場合、IEKは変更することができない。代替的には、付加的な安全対策として、IEKは定期的に更新することができる。したがって、IEKは、たとえば、毎週または2週ごとに更新することができる。
IEKが交換される場合、アクセスサーバ510は、システム上で、認証および登録済みのコンテナ化されたアプリケーションに新しいIEKを伝達することができる。たとえば、アクセスサーバ510は第1のアプリケーション520に新しいIEKを伝達することができ、次いで、第1のアプリケーション520が第2のアプリケーション530に新しいIEKを提供することができる。
ステップ511として、アクセスサーバ510はIEKを更新することができる。ステップ521において、第1のアプリケーションはそれ自体をアクセスサーバ510で認証することができる。認証が成功した後、ステップ522において、第1のアプリケーション520はアクセスサーバ510からIEKを受取ることができる。アクセスサーバから受取られたIEKは更新されたIEKであり得る。
ステップ523において、第1のアプリケーションは、第1のアプリケーションの第2のキーストア(たとえば、第1のアプリケーションIEKキーストア143)にその時点で格納されているIEKと、アクセスサーバから受取ったIEKを比較し得る。アクセスサーバ510から受取られたIEKが第1のアプリケーションの第2のキーストア(たとえば、第1のアプリケーションIEKキーストア143)にその時点で格納されているIEKとは異なっている場合、ステップ524において、第2のキーストアに格納されたIEKを更新することができる。しかしながら、アクセスサーバ510から受取られたIEKが第1のアプリケーションの第2のキーストアにその時点で格納されているものと同じである場合、IEKは更新されなくてもよい。
ステップ531において、第2のアプリケーション530が開始される場合、第2のアプリケーション530は第1のアプリケーション520からインテント、セッショントークンおよびルートキーを受取ることができる。第2のアプリケーション530は、信頼されたアプリケーションの共有のリストに載っているので、第1のアプリケーション520からセッショントークンおよびルートキーを受取ることができる。しかしながら、第2のアプリケーション530はインテントを復号化し得ない。なぜなら、それは、更新されたIEKを用いて暗号化されたものであるからである。したがって、ステップ532において、復号化が失敗し得る。
復号化に失敗した後、ステップ526において、認証画面が第2のアプリケーション530上に提示され得る。第2のアプリケーション530が認証を実行すると、第2のアプリケーション530は更新されたIEKを検索することができ、ステップ533において、更新されたIEKを第2のアプリケーション530の第2のキーストアに格納することができる。したがって、第2のアプリケーション530は更新されたIEKを有することとなる。
E.アプリケーションを登録および開始する方法
図6は、いくつかの実施形態に従った、コンテナ化されたアプリケーション間におけるデータの安全な交換を確立するための方法600を示すフローチャートである。
ステップ610において、第1のコンテナ化されたアプリケーションはアクセスサーバに登録することができる。上述のとおり、第1のコンテナ化されたアプリケーションがモバイルデバイス上の他のアプリケーションと情報を交換できるようになる前に、第1のコンテナ化されたアプリケーションがアクセスサーバに登録される。
さらに、デバイスに追加されたいずれかのアプリケーションを、その時点で認証されておりデバイスに登録されているアプリケーションと通信させるために、これらアプリケーションも認証されてアクセスサーバに登録されなければならない。したがって、ステップ620において、第2のコンテナ化されたアプリケーションは、たとえば、アクセスサーバに登録することができる。
ステップ630において、第1のアプリケーションおよび第2のアプリケーションなどの登記済みのアプリケーションを開始させることができる。インテントなどのデータは、アクセスサーバで認証されているアプリケーション間で交換することができる。
ステップ640において、インテント暗号化キー(IEK)を更新することができる。たとえば、危険にさらされていたためにIEKが変更される場合、または、定期的な更新のためにIEKが変更される場合、更新されたIEKは、認証されたアプリケーション間で共有することができる。
F.コンピュータシステム
図7は、いくつかの実施形態を実現するための分散型システム700を示す簡略図である。図示される実施形態においては、分散型システム700は、1つ以上のクライアントコンピューティングデバイス702、704、706および708を含む。1つ以上のクライアントコンピューティングデバイス702、704、706および708は、1つ以上のネットワーク710を介してウェブブラウザ、プロプライエタリ・クライアント(たとえばオラクルフォーム)などのクライアントアプリケーションを実行して動作させるように構成されている。サーバ712は、ネットワーク710を介してリモートクライアントコンピューティングデバイス702、704、706および708と通信可能に連結されていてもよい。
さまざまな実施形態においては、サーバ712は、メッセージ配信サービスを提供するサービスおよびアプリケーションなどの1つ以上のサービスまたはソフトウェアアプリケーションを実行させるように適合されてもよい。いくつかの実施形態においては、サーバ712はまた、他のサービスを提供してもよく、または、ソフトウェアアプリケーションは非仮想環境および仮想環境を含み得る。いくつかの実施形態においては、これらのサービスは、クライアントコンピューティングデバイス702、704および706および/または708のユーザに対し、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルの下で提供されてもよい。クライアントコンピューティングデバイス702、704および706および/または708を動作させるユーザは、さらに、これらのコンポーネントによって提供されるサービスを利用するために、1つ以上のクライアントアプリケーションを利用してサーバ712と対話してもよい。
図7に示される構成においては、システム700のソフトウェアコンポーネント718、720および722が、サーバ712上において実現されるものとして示されている。他の実施形態においては、システム700のコンポーネントのうち1つ以上および/またはこれらのコンポーネントによって提供されるサービスはまた、クライアントコンピューティングデバイス702、704、706および/または708のうち1つ以上によって実現されてもよい。次いで、クライアントコンピューティングデバイスを動作させるユーザは、これらのコンポーネントによって提供されるサービスを用いるために1つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントはハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せで実現されてもよい。分散型システム700とは異なり得るさまざまな異なるシステム構成が実現可能であることが認識されるはずである。図7に示される実施形態は、このため、実施形態のシステムを実現するための分散型システムの一例であり、限定するように意図されたものではない。
クライアントコンピューティングデバイス702、704、706および/または708はさまざまなタイプのコンピューティングシステムを含み得る。たとえば、クライアントデバイスは、携帯可能な手持ち式のデバイス(たとえばiPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(personal digital assistant:PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)を含んでもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 10、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行し得る。デバイスは、さまざまなインターネット関連アプリ、電子メール、ショートメッセージサービス(short message service:SMS)アプリケーションなどのさまざまなアプリケーションをサポートしてもよく、さまざまな他の通信プロトコルを使用してもよい。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータも含んでもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、たとえばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを限定を伴うことなく含む、市場で入手可能なさまざまなUNIX(登録商標)またはUNIX系のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。クライアントコンピューティングデバイスは、ネットワーク710を介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム(たとえばKinect(登録商標)ジェスチャ入力デバイス付きまたはKinect(登録商標)ジェスチャ入力デバイス無しのMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達デバイスなどの電子機器も含んでもよい。
図7の分散型システム700は4つのクライアントコンピューティングデバイスとともに示されているが、いくつのクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがサーバ712と対話してもよい。
分散型システム700におけるネットワーク710は、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/Internet protocol:TCP/IP)、システムネットワークアーキテクチャ(systems network architecture:SNA)、インターネットパケット交換(Internet packet exchange:IPX)、AppleTalkなどを限定を伴うことなく含む、さまざまな入手可能なプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単に一例として、ネットワーク710は、ローカルエリアネットワーク(local area network:LAN)、イーサネット(登録商標)、トークンリングに基づくネットワーク、ワイドエリアネットワーク、インターネット、仮想ネットワーク、仮想プライベートネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば米国電気電子学会(Institute of Electrical and Electronics:IEEE)1002.11のプロトコル一式、Bluetooth(登録商標)、および/もしくはその他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/またはこれらの任意の組み合わせおよび/もしくは他のネットワークであり得る。
サーバ712は、1つ以上の汎用コンピュータ、専用のサーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせで構成されてもよい。サーバ712は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理ストレージデバイスの1つ以上のフレキシブルなプールを仮想化してサーバのために仮想ストレージデバイスを維持することができる。仮想ネットワークを、サーバ712によって、ソフトウェア定義のネットワーク接続を用いて制御することができる。さまざまな実施形態において、サーバ712は、前述の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ712は、本開示の実施形態に従って上記の処理を実行するためのサーバに対応し得る。
サーバ712は、上記のもののうちのいずれかを含むオペレーティングシステム、および市場で入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ712は、ハイパーテキスト転送プロトコル(hypertext transport protocol:HTTP)サーバ、ファイル転送プロトコル(file transfer protocol:FTP)サーバ、コモンゲートウェイインターフェイス(common gateway interface:CGI)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまな付加的なサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれをも実行し得る。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース、IBM(インターナショナルビジネスマシンズ)などから市場で入手可能なものを含むが、それらに限定されるものではない。
いくつかの実現例では、サーバ712は、クライアントコンピューティングデバイス702、704、706および708のユーザから受信されるデータフィードおよび/またはイベント更新情報を解析および整理統合するための1つ以上のアプリケーションを含んでもよい。一例として、データフィードおよび/またはイベント更新情報は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関連するリアルタイムのイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)更新情報またはリアルタイムの更新情報を含んでもよいが、それらに限定されるものではない。サーバ712は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス702、704、706および708の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含んでもよい。
分散型システム700は、1つ以上のデータベース714および716も含んでもよい。これらのデータベースは、在庫情報などの情報および本発明の実施形態によって使用される他の情報を記憶するためのメカニズムを提供してもよい。データベース714および716は、さまざまな位置にあってもよい。一例として、データベース714および716のうちの1つ以上は、サーバ712に局在する(および/またはサーバ712に常駐する)非一時的な記憶媒体上にあってもよい。代替的には、データベース714および716は、サーバ712から遠隔にあり、ネットワークに基づくかまたは専用の接続を介してサーバ712と通信してもよい。一組の実施形態においては、データベース714および716は、ストレージエレアネットワーク(storage-area network:SAN)にあってもよい。同様に、サーバ712に帰する機能を実行するための任意の必要なファイルが、適宜、サーバ712上においてローカルに、および/または遠隔で格納されてもよい。一組の実施形態においては、データベース714および716は、SQLフォーマットされたコマンドに応答してデータを記憶、更新および検索するように適合される、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでもよい。
いくつかの実施形態においては、上記のメッセージ配信サービスは、クラウド環境を介してサービスとして提供されてもよい。図8は、いくつかの実施形態に従って、サービスがクラウドサービスとして提供され得るシステム環境800の1つ以上のコンポーネントの簡略ブロック図を示す。
図8に例示される実施形態においては、システム環境800は、1つ以上のクライアントコンピューティングデバイス804、806および808を含み、1つ以上のクライアントコンピューティングデバイス804、806および808は、使用パターンに応じてドキュメント(たとえばウェブページ)を動的に修正するためのサービスを含むクラウドサービスを提供するクラウドインフラストラクチャシステム802と対話するようにユーザによって使用されてもよい。クラウドインフラストラクチャシステム802は、サーバ712のための上記のものを含み得る1つ以上のコンピュータおよび/またはサーバを備えてもよい。
図8に示されるクラウドインフラストラクチャシステム802は図示されるもの以外のコンポーネントを有してもよいことが理解されるべきである。さらに、図8に示される実施形態は、実施形態のうちいくつかを組込み得るクラウドインフラストラクチャシステムの一例に過ぎない。他のいくつかの実施形態においては、クラウドインフラストラクチャシステム802は、図に示されるよりも多いコンポーネントもしくは少ないコンポーネントを有してもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
クライアントコンピューティングデバイス804、806および808は、702、704、706および708に対して上記されたものと同様のデバイスであってもよい。クライアントコンピューティングデバイス804、806および808は、ウェブブラウザ、プロプライエタリ・クライアントアプリケーション(たとえばオラクルフォーム)、または他の何らかのアプリケーションなどのクライアントアプリケーションを動作させるように構成されてもよく、当該クライアントアプリケーションは、クラウドインフラストラクチャシステム1302と対話して、クラウドインフラストラクチャシステム802によって提供されるサービスを使用するようにクライアントコンピューティングデバイスのユーザによって使用されてもよい。例示的なシステム環境800が3つのクライアントコンピューティングデバイスとともに示されているが、いくつの数のクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがクラウドインフラストラクチャシステム802と対話してもよい。
ネットワーク710は、クライアント804、806および808とクラウドインフラストラクチャシステム802との間におけるデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク710について上記されたものを含む、市場で入手可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している如何なるタイプのネットワークであってもよい。
特定の実施形態においては、クラウドインフラストラクチャシステム802によって提供されるサービスは、オンデマンドでクラウドインフラストラクチャシステムのユーザにとって利用可能にされるサービスのホストを含んでもよい。会計管理に関連するサービスに加えて、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホストされるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどを限定を伴うことなく含む他のさまざまなサービスも提供されてもよい。クラウドインフラストラクチャシステムによって提供されるサービスは、動的にスケーリングしてそのユーザのニーズを満たすことができる。
特定の実施形態においては、クラウドインフラストラクチャシステム802によって提供される或るサービスの或る具体的なインスタンス化は、本明細書では「サービスインスタンス」と称され得る。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザに利用可能にされるサービスはいずれも、「クラウドサービス」と称される。典型的には、パブリッククラウド環境においては、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホストされるデータベース、ホストされるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、サービスは、クラウド上のリモートストレージに対するインターネットを介してのパスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスベースのホストされたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイトにおいてホストされる電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
特定の実施形態においては、クラウドインフラストラクチャシステム802は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルで、信頼性があり、高可用性があり、かつセキュリティ上安全な態様で顧客に対して配送されるアプリケーション、ミドルウェア、データベースサービス提供一式を含んでもよい。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド(Oracle Public Cloud)である。
クラウドインフラストラクチャシステム802は、「ビッグデータ」関連の計算および解析ツールも提供し得る。「ビッグデータ」という語は、一般に、大量のデータを視覚化し、傾向を検出し、および/またはその他の態様でデータと対話するようにアナリストおよび研究者によって記憶および操作され得る非常に大きなデータセットを指すのに用いられる。このビッグデータおよび関連のアプリケーションは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールでホストおよび/または操作され得る。そのようなデータを表示するため、またはデータもしくはデータが表現するものに対する外部の力をシミュレートするために、並列に連結された何十、何百または何千ものプロセッサがそのようなデータに対して作用し得る。これらのデータセットは、データベースにおいてもしくは構造化モデルに従って編成されたような構造化データ、および/または非構造化データ(たとえば電子メール、画像、データブロブ(バイナリラージオブジェクト)、ウェブページ、複合イベント処理)を含み得る。より多くの(またはより少ない)計算リソースを比較的迅速に対象に集中させることができるいくつかの実施形態の機能を活用することによって、クラウドインフラストラクチャシステムは、ビジネス、政府機関、研究組織、私人、同じ考えを持った個人もしくは組織のグループ、または他のエンティティからの要求に基づいて大きなデータセットに対してタスクを実行するために、より適切に利用できるであろう。
さまざまな実施形態においては、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステム802によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、およびトラッキングするように適合されてもよい。クラウドインフラストラクチャシステム802は、クラウドサービスをさまざまな展開モデルを介して提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム802が(たとえばオラクル社によって所有される)クラウドサービスを販売する組織によって所有されるとともにサービスが一般大衆またはさまざまな業界企業に対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム802が単一の組織に対してのみ稼働され得るとともにその組織内における1つ以上のエンティティに対してサービスを提供し得るプライベートクラウドモデルの下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム802およびクラウドインフラストラクチャシステム802によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有されているコミュニティクラウドモデルの下で提供されてもよい。また、クラウドサービスは、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態においては、クラウドインフラストラクチャシステム802によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)カテゴリ、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリ、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される1つ以上のサービスを含んでもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム802によって提供される1つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム802は、次いで、処理を実行して、顧客のサブスクリプションオーダーにおけるサービスを提供する。
いくつかの実施形態においては、クラウドインフラストラクチャシステム802によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、それらに限定されるものではない。いくつかの例では、アプリケーションサービスは、クラウドインフラストラクチャシステムによってSaaSプラットフォームを介して提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、SaaSプラットフォームは、オンデマンドアプリケーション一式を統合された開発および展開プラットフォーム上で構築し配送する機能を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供されてもよい。その例としては、大きな組織に対する売上実績管理、企業統合、および事業柔軟性に対するソリューションを提供するサービスが挙げられるが、それらに限定されるものではない。
いくつかの実施形態においては、プラットフォームサービスは、クラウドインフラストラクチャシステム802によってPaaSプラットフォームを介して提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに入るクラウドサービスを提供するよう構成されてもよい。プラットフォームサービスの例としては、(オラクルなどの)組織が既存のアプリケーションを共有の共通アーキテクチャにおいて整理統合することを可能にするサービス、およびプラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能を挙げることができるが、それらに限定されるものではない。PaaSプラットフォームは、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステム802によって提供されるPaaSサービスを、別のライセンスおよびサポートを購入する必要なく取得することができる。プラットフォームサービスの例としては、オラクル・ジャバ・クラウド・サービス(Oracle Java(登録商標) Cloud Service:JCS)、オラクル・データベース・クラウド・サービス(Oracle Database Cloud Service:DBCS)などが挙げられるが、それらに限定されるものではない。
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、展開されたサービスを制御することもできる。いくつかの実施形態においては、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばオラクル・フュージョン・ミドルウェアサービス)、およびJavaクラウドサービスを含んでもよい。一実施形態においては、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にデータベース・アズ・ア・サービス(Database as a Service)をデータベースクラウドの形式で提供することを可能にする共有のサービス展開モデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発および展開するためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供してもよく、Javaクラウドサービスは、顧客がJavaアプリケーションを展開するためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供してしてもよい。
さまざまな異なるインフラストラクチャサービスがIaaSプラットフォームによってクラウドインフラストラクチャシステムにおいて提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワーク、ならびにSaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客に対する他の基礎的計算リソースなどの基本的な計算リソースの管理および制御を容易にする。
特定の実施形態においては、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するために用いられるリソースを提供するためのインフラストラクチャリソース830も含み得る。一実施形態においては、インフラストラクチャリソース830は、サーバ、ストレージ、ならびにPaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するためのネットワーク接続リソース、ならびに他のリソースなどの、ハードウェアの予め統合され最適化された組み合わせを含んでもよい。
いくつかの実施形態においては、クラウドインフラストラクチャシステム802におけるリソースは、複数のユーザによって共有され、要求に従って動的に再割り当てされてもよい。加えて、リソースは、ユーザに対してさまざまな時間ゾーンで割り当てられてもよい。たとえば、クラウドインフラストラクチャシステム802は、第1の時間ゾーンにおける第1のユーザセットがクラウドインフラストラクチャシステムのリソースをある特定の時間の間利用することを可能にし、次いで、異なる時間ゾーンに位置する別のユーザセットに対する同じリソースの再割り当てを可能にし、これにより、リソースの利用を最大化し得る。
特定の実施形態においては、クラウドインフラストラクチャシステム802のさまざまなコンポーネントまたはモジュールによって共有されてクラウドインフラストラクチャシステム802によるサービスのプロビジョニングを可能にするいくつかの内部共有サービス832が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、それらに限定されるものではない。
特定の実施形態においては、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステムにおいてクラウドサービス(たとえばSaaSサービス、PaaSサービスおよびIaaSサービス)の包括的な管理を提供してもよい。一実施形態においては、クラウド管理機能は、クラウドインフラストラクチャシステム802によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、およびトラッキングする機能などを含んでもよい。
一実施形態においては、図8に示されるように、クラウド管理機能は、オーダー管理モジュール820、オーダーオーケストレーションモジュール822、オーダープロビジョニングモジュール824、オーダー管理および監視モジュール826、ならびにアイデンティティ管理モジュール828などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、1つ以上のコンピュータおよび/もしくはサーバを含んでもよく、またはそれらを用いて提供されてもよく、それらは、汎用コンピュータ、専用のサーバコンピュータ、サーバファーム、サーバクラスタ、または他の如何なる適切な構成および/もしくは組み合わせであってもよい。
例示的な動作では、ステップ834において、クライアントデバイス804、806または808などのクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム802によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム802によって提供される1つ以上のサービスに対するサブスクリプションに対するオーダーを行なうことによって、クラウドインフラストラクチャシステム802と対話してもよい。特定の実施形態においては、顧客は、クラウドユーザインターフェイス(User Interface:UI)(たとえば、クラウドUI812、クラウドUI814および/またはクラウドUI816など)にアクセスし、これらのUIを介してブスクリプションオーダーを行なってもよい。顧客がオーダーを行なうことに応答してクラウドインフラストラクチャシステム802によって受信されるオーダー情報は、顧客を識別する情報、およびクラウドインフラストラクチャシステム802によって提供される、その顧客が利用することを意図する1つ以上のサービスを含んでもよい。
ステップ836において、顧客から受信されたオーダー情報は、オーダーデータベース818に保存されてもよい。これが新たなオーダーである場合には、当該オーダーに対して新たな記録が作成されてもよい。一実施形態においては、オーダーデータベース818は、クラウドインフラストラクチャシステム818によって動作されるいくつかのデータベースのうちの1つであり得るとともに、他のシステム要素と連携して動作され得る。
ステップ838において、オーダー情報は、オーダー管理モジュール820に転送されてもよく、当該オーダー管理モジュール820は、オーダーの検証、および検証後のそのオーダーの予約などの、オーダーに関連する請求および課金の機能を実行するように構成されてもよい。
ステップ840において、オーダーに関する情報は、オーダーオーケストレーションモジュール822に伝達されてもよく、当該オーダーオーケストレーションモジュール822は、顧客によってなされたオーダーに対してサービスおよびリソースのプロビジョニングをオーケストレーションするよう構成されている。いくつかの例では、オーダーオーケストレーションモジュール822は、オーダープロビジョニングモジュール824のサービスをプロビジョニングに使用してもよい。特定の実施形態においては、オーダーオーケストレーションモジュール822は、各オーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネス論理を適用して、オーダーがプロビジョニングに進むべきか否かを判断する。
図8に示される実施形態に示されるように、ステップ842において、新たなサブスクリプションに対するオーダーを受信すると、オーダーオーケストレーションモジュール822は、オーダープロビジョニングモジュール824に対して、リソースを割り当てて、サブスクリプションオーダーを満たすのに必要とされるリソースを構成するようにとの要求を送信する。オーダープロビジョニングモジュール824は、顧客によってオーダーされたサービスに対するリソースの割り当てを可能にする。オーダープロビジョニングモジュール824は、クラウドインフラストラクチャシステム800によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするのに用いられる物理的インプリメンテーション層との間にある抽象化レベルを提供する。これにより、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか、または、サービスおよびリソースが予めプロビジョニングされて要求時にのみ割当て/割振りがなされるかなどの、インプリメンテーション詳細からオーダーオーケストレーションモジュール824を分離することができる。
ステップ844において、サービスおよびリソースがプロビジョニングされると、要求されたサービスが使用できる準備ができた状態であることを示す通知が、加入している顧客に送信され得る。いくつかの例では、顧客が要求されたサービスの使用を開始することを可能にする情報(たとえばリンク)が顧客に送信されてもよい。
ステップ846において、顧客のサブスクリプションオーダーは、オーダー管理および監視モジュール826によって管理およびトラッキングされ得る。いくつかの例では、オーダー管理および監視モジュール826は、加入したサービスの顧客使用に関する使用統計を収集するように構成され得る。たとえば、統計は、使用されるストレージの量、転送されるデータの量、ユーザの人数、ならびにシステムアップ時間およびシステムダウン時間の量などについて収集されてもよい。
特定の実施形態においては、クラウドインフラストラクチャシステム800はアイデンティティ管理モジュール828を含み得る。アイデンティティ管理モジュール828は、クラウドインフラストラクチャシステム800におけるアクセス管理および承認サービスなどのアイデンティティサービスを提供するように構成されている。いくつかの実施形態においては、アイデンティティ管理モジュール828は、クラウドインフラストラクチャシステム802によって提供されるサービスを利用することを望む顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行することが承認されるかを記述する情報を含み得る。アイデンティティ管理モジュール828は、各顧客についての記述的情報と、その記述的情報がどのように誰によってアクセスおよび修正され得るかについての記述的情報との管理も含み得る。
図9は、いくつかの例示的な実施形態に従った、いくつかの要素を実現するのに使用され得る例示的なコンピュータシステムを示す。いくつかの実施形態においては、コンピュータシステム900は、上記のさまざまなサーバおよびコンピュータシステムのうちのいずれかを実現するために用いられてもよい。図9に示されるように、コンピュータシステム900は、バスサブシステム902を介していくつかの周辺サブシステムと通信する処理サブシステム904を含むさまざまなサブシステムを含む。これらの周辺サブシステムは、処理加速ユニット906、I/Oサブシステム908、ストレージサブシステム918および通信サブシステム924を含み得る。ストレージサブシステム918は、有形のコンピュータ読取り可能記憶媒体922およびシステムメモリ910を含んでもよい。
バスサブシステム902は、コンピュータシステム900のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム902は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用してもよい。バスサブシステム902は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含んでもよい。
処理サブシステム904は、コンピュータシステム900の動作を制御し、1つ以上の処理ユニット932,934などを備えてもよい。処理ユニットは、単一コアもしくはマルチコアプロセッサを含む1つ以上のプロセッサ、プロセッサの1つ以上のコア、またはそれらの組み合わせを含んでもよい。いくつかの実施形態においては、処理サブシステム904は、グラフィックスプロセッサ、デジタル信号プロセッサ(digital signal processor:DSP)などの1つ以上の特殊用途コプロセッサを含み得る。いくつかの実施形態においては、処理サブシステム904の処理ユニットの一部または全ては、特定用途向け集積回路(application specific integrated circuit:ASIC)またはフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)などのカスタマイズされた回路を用いて実現され得る。
いくつかの実施形態においては、処理サブシステム904における処理ユニットは、システムメモリ910またはコンピュータ読取り可能記憶媒体922に記憶された命令を実行することができる。さまざまな実施形態においては、処理ユニットは、さまざまなプログラムまたはコード命令を実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与のときに、実行されるべきプログラムコードの一部または全ては、システムメモリ910、および/または、場合によっては1つ以上のストレージデバイスを含むコンピュータ読取り可能記憶媒体910に常駐することができる。好適なプログラミングにより、処理サブシステム904は、使用パターンに応じてドキュメント(たとえばウェブページ)を動的に修正するための上記のさまざまな機能を提供することができる。
特定の実施形態においては、コンピュータシステム900によって実行される処理全体を加速させるように、カスタマイズされた処理を実行するため、または処理サブシステム904によって実行される処理の一部をオフロードするための処理加速ユニット906が設けられてもよい。
I/Oサブシステム908は、コンピュータシステム900に情報を入力するため、および/または、コンピュータシステム900からもしくはコンピュータシステム900を介して情報を出力するためのデバイスおよびメカニズムを含んでもよい。一般に、「入力デバイス」という語の使用は、コンピュータシステム900に情報を入力するための実現可能な全てのタイプのデバイスおよびメカニズムを含むよう意図されている。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスはまた、ユーザが入力デバイスを制御して入力デバイスと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび話し言葉コマンドを用いて入力を受信するためのインターフェイスを備えたデバイスなどのモーション感知および/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の活動(たとえば写真を撮っている間および/またはメニュー選択を行なっている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
ユーザインターフェイス入力デバイスの他の例としては、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスが挙げられるが、それらに限定されるものではない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査デバイスなどの医療画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDI(楽器デジタルインターフェイス(Musical Instrument Digital Interface))キーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という語の使用は、コンピュータシステム900からユーザまたは他のコンピュータに情報を出力するための実現可能な全てのタイプのデバイスおよびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
ストレージサブシステム918は、コンピュータシステム900によって使用される情報を記憶するためのリポジトリまたはデータストアを提供する。ストレージサブシステム918は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形の非一時的なコンピュータ読取り可能記憶媒体を提供する。処理サブシステム904によって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)がストレージサブシステム918に記憶されてもよい。当該ソフトウェアは、処理サブシステム904の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム918は、本発明に従って使用されるデータを記憶するためのリポジトリも備えていてもよい。
ストレージサブシステム918は、揮発性メモリデバイスおよび不揮発性メモリデバイスを含む1つ以上の非一時的なメモリデバイスを含んでもよい。図9に示されるように、ストレージサブシステム918は、システムメモリ910と、コンピュータ読取り可能記憶媒体922とを含む。システムメモリ910は、プログラム実行中に命令およびデータを記憶するための揮発性メインランダムアクセスメモリ(random access memory:RAM)と、固定命令が記憶される不揮発性リードオンリメモリ(read only memory:ROM)またはフラッシュメモリとを含む複数のメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム900内の要素間における情報の転送を助ける基本的なルーティンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)が、典型的には、ROMに記憶されてもよい。RAMは、典型的には、処理サブシステム904によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ910は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含んでもよい。
一例として、限定を伴うことなく、図9に示されるように、システムメモリ910は、アプリケーションプログラム912を記憶してもよく、当該アプリケーションプログラム912は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)など、プログラムデータ914およびオペレーティングシステム916を含んでもよい。一例として、オペレーティングシステム916は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinux(登録商標)オペレーティングシステム、市場で入手可能なさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、ならびに/または、iOS、Windows(登録商標) Phone、Android(登録商標) OS、BlackBerry(登録商標) 10 OS、およびPalm(登録商標) OSオペレーティングシステムを含んでもよい。
コンピュータ読取り可能記憶媒体922は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構造を記憶してもよい。処理サブシステム904によって実行されたときにプロセッサに上記の機能を提供させるソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム918に記憶されてもよい。一例として、コンピュータ読取り可能記憶媒体922は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、ブルーレイ(登録商標)ディスクなどの光ディスクドライブ、または他の光学式媒体などの不揮発性メモリを含んでもよい。コンピュータ読取り可能記憶媒体922は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital:SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されるものではない。コンピュータ読取り可能記憶媒体922は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(solid-state drive:SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(magnetoresistive RAM:MRAM)SSDなどの揮発性メモリに基づくSSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDを含んでもよい。コンピュータ読取り可能媒体922は、コンピュータ読取り可能な命令、データ構造、プログラムモジュールおよび他のデータのストレージをコンピュータシステム900に提供してもよい。
特定の実施形態においては、ストレージサブシステム900は、コンピュータ読取り可能記憶媒体922にさらに接続可能なコンピュータ読取り可能記憶媒体リーダ920を含んでもよい。システムメモリ910とともに、およびオプションとしてシステムメモリ910との組み合わせで、コンピュータ読取り可能記憶媒体922は、コンピュータ読取り可能な情報を記憶するための、遠隔の、ローカルな、固定された、および/またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表わしてもよい。
特定の実施形態においては、コンピュータシステム900は、1つ以上の仮想マシンを実行するためのサポートを提供してもよい。コンピュータシステム900は、仮想マシンの構成および管理を容易にするためのハイパーバイザなどのプログラムを実行してもよい。各仮想マシンは、割り当てられたメモリ、計算(たとえばプロセッサ、コア)、I/Oおよびネットワーク接続リソースであってもよい。各仮想マシンは、典型的には、それ自体のオペレーティングシステムを実行し、当該オペレーティングシステムは、コンピュータシステム900によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同一であってもよく、または異なっていてもよい。したがって、場合によっては、複数のオペレーティングシステムがコンピュータシステム900によって同時に実行されてもよい。各仮想マシンは、一般に、他の仮想マシンから独立して実行される。
通信サブシステム924は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム924は、コンピュータシステム900から他のシステムへのデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム924は、コンピュータシステム900が1つ以上のクライアントデバイスとの情報の送受のためにインターネットを介して当該1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。
通信サブシステム924は、有線通信プロトコルおよび/または無線通信プロトコルをサポートしてもよい。たとえば、特定の実施形態においては、通信サブシステム924は、(たとえばセルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)送受信機コンポーネント、グローバルポジショニングシステム(global positioning system:GPS)受信機コンポーネント、ならびに/または他のコンポーネントを含んでもよい。いくつかの実施形態においては、通信サブシステム924は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえばイーサネット)を提供することができる。
通信サブシステム924は、さまざまな形式でデータを送受信することができる。たとえば、いくつかの実施形態においては、通信サブシステム924は、構造化されたおよび/または構造化されていないデータフィード926、イベントストリーム928、イベント更新情報930などの形式で入力通信を受信してもよい。たとえば、通信サブシステム924は、ソーシャルメディアネットワークならびに/または他の通信サービス(たとえば、Twitter(登録商標)フィード、Facebook(登録商標)更新情報、Rich Site Summary(RSS)フィードなどのウェブフィード、および/もしくは1つ以上の第三者情報源からのリアルタイム更新情報など)のユーザからリアルタイムでデータフィード926を受信(または送信)するように構成されてもよい。
特定の実施形態においては、通信サブシステム924は、連続データストリームの形式でデータを受信するよう構成されてもよく、当該連続データストリームは、明示的な端部を有さない本質的に連続的または無限であり得る、リアルタイムイベントのイベントストリーム928および/またはイベント更新情報930を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを挙げることができる。
また、通信サブシステム924は、構造化されたおよび/または構造化されていないデータフィード926、イベントストリーム928、イベント更新情報930などを、コンピュータシステム900に結合される1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するよう構成されてもよい。
コンピュータシステム900は、手持ち式の携帯デバイス(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、または他のいずれかのデータ処理システムを含む、さまざまなタイプのもののうちの1つであり得る。
コンピュータおよびネットワークが常に変化する性質を有しているため、図9に示されるコンピュータシステム900の記載は、単に具体的な例として意図される。図9に示されるシステムよりも多いかまたは少ないコンポーネントを有する多くの他の構成が実現可能である。本明細書において提供されている開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および/または方法を理解するであろう。
具体的な例示的実施形態について説明してきたが、さまざまな変形例、変更例、代替的な構成および同等例も本発明の範囲内に包含される。本発明の実施形態は、特定の具体的なデータ処理環境内でのオペレーションに限定されるものではなく、複数のデータ処理環境内で自由に機能し得る。加えて、特定の一連のトランザクションおよびステップを用いて本発明の実施形態について説明してきたが、本発明の範囲が、記載されている一連のトランザクションおよびステップに限定されるものではないことが当業者に明らかになるはずである。上記の実施形態のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。
さらに、ハードウェアとソフトウェアとの特定の組み合わせを用いて例示的な実施形態について説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも本発明の範囲内であることが認識されるはずである。例示的な実施形態のいくつかは、ハードウェアのみで実現されてもよく、またはソフトウェアのみで実現されてもよく、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されているさまざまなプロセスは、任意の組み合わせで同一のプロセッサまたは異なるプロセッサ上で実現され得る。したがって、コンポーネントまたはモジュールが特定のオペレーションを実行するよう構成されるものとして記載されている場合、このような構成は、たとえばオペレーションを実行するように電子回路を設計することによって、オペレーションを実行するように(マイクロプロセッサなどの)プログラム可能な電子回路をプログラミングすることによって、またはそれらの任意の組み合わせによって、達成されることができる。プロセスは、従来のプロセス間通信技術を含むがそれに限定されないさまざまな技術を用いて通信することができ、プロセスの異なる対は、異なる技術を使用してもよく、またはプロセスの同一の対は、異なる時に異なる技術を使用してもよい。
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかしながら、特許請求の範囲に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の変形および変更がそれに対してなされてもよいことが明白になるであろう。したがって、具体的な例示的実施形態について説明してきたが、これらは限定的であるよう意図されるものではない。さまざまな変形例および同等例は、添付の特許請求の範囲内である。

Claims (16)

  1. デバイスによって、前記デバイス上の第1のコンテナ化されたアプリケーションをアクセスサーバに登録するステップと、
    前記デバイスによって、前記デバイス上の第2のコンテナ化されたアプリケーションを前記アクセスサーバに登録するステップと、
    前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップと、
    前記アクセスサーバに登録された前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとの間でデータを交換するステップとを含
    前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップは、
    前記第1のコンテナ化されたアプリケーションにより、ブロードキャストメッセージを送信するステップと、
    前記ブロードキャストメッセージの応答がないことに基づいて、前記アクセスサーバからインテント暗号化キー(IEK)、ルートキーおよびセッショントークンを受け取るステップとを含む、方法。
  2. 前記第1のコンテナ化されたアプリケーションを前記アクセスサーバに登録するステップは、
    第1のパブリック/プライベートキーを生成し、前記第1のパブリック/プライベートキーを前記第1のコンテナ化されたアプリケーションの第1のキーストアに格納するステップと、
    前記アクセスサーバからの前記IEKをコンテナ化されたアプリケーションの第2のキーストアに格納するステップと、
    前記生成された第1のパブリック/プライベートキーのパブリックキーを用いて、前記第1のコンテナ化されたアプリケーションの前記第2のキーストアを暗号化するステップと、
    共有アプリケーションリストを作成し、前記第1のコンテナ化されたアプリケーションの識別情報を前記共有アプリケーションリストに追加するステップと、
    前記共有アプリケーションリストを暗号化するステップとを含む、請求項に記載の方法。
  3. 前記共有アプリケーションリストは、前記アクセスサーバからの前記ルートキーを用いて暗号化される、請求項に記載の方法。
  4. 前記第2のコンテナ化されたアプリケーションを前記アクセスサーバに登録するステップは、
    第2のパブリック/プライベートキーを生成し、前記第2のパブリック/プライベートキーを前記第2のコンテナ化されたアプリケーションの第1のキーストアに格納するステップと、
    前記アクセスサーバからの前記IEKを前記第2のコンテナ化されたアプリケーションの第2のキーストアに格納するステップと、
    前記生成された第2のパブリック/プライベートキーの第2のパブリックキーを用いて、前記第2のコンテナ化されたアプリケーションの前記第2のキーストアを暗号化するステップと、
    前記共有アプリケーションリストを復号化し、前記共有アプリケーションリストに前記第2のコンテナ化されたアプリケーションの識別情報を追加するステップとを含む、請求項に記載の方法。
  5. 前記アクセスサーバはモバイル・セキュリティ・アクセスサーバ(MSAS)である、請求項のいずれか1項に記載の方法。
  6. 前記第1のコンテナ化されたアプリケーションの前記識別情報は、前記第1のコンテナ化されたアプリケーションの署名およびパッケージ名を含む、請求項のいずれか1項に記載の方法。
  7. 前記第2のコンテナ化されたアプリケーションの前記識別情報は、前記第2のコンテナ化されたアプリケーションの署名およびパッケージ名を含む、請求項に記載の方法。
  8. 前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するステップは、前記第1のコンテナ化されたアプリケーションによって、前記第2のコンテナ化されたアプリケーションの署名およびパッケージ名が前記共有アプリケーションリストに載っていると判断するステップを含む、請求項に記載の方法。
  9. 前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとの間でデータを交換するステップは、
    前記第1のコンテナ化されたアプリケーションによって、暗号化されたインテントを前記第2のコンテナ化されたアプリケーションに送信するステップと、
    前記第2のコンテナ化されたアプリケーションによって、前記IEKを用いて、前記暗号化されたインテントを復号化するステップとを含む、請求項に記載の方法。
  10. 前記暗号化されたインテントは、ルートキーおよびセッショントークンで暗号化されたインテントである、請求項に記載の方法。
  11. 前記暗号化されたインテントは、アクションまたはトピックについての記述を示すメッセージパッケージを含む、請求項10に記載の方法。
  12. 前記共有アプリケーションリストが前記ルートキーを用いて復号化される、請求項に記載の方法。
  13. 更新されたIEKを前記アクセスサーバから受取るステップと、
    前記第1のコンテナ化されたアプリケーションを前記アクセスサーバで認証するステップと、
    前記更新されたIEKを前記第1のコンテナ化されたアプリケーションによって受取るステップとをさらに含む、請求項に記載の方法。
  14. 請求項1〜13のいずれか1項に記載の方法を1つ以上のプロセッサに実行させるためのコンピュータ読取り可能プログラム。
  15. システムであって、
    メモリと、
    前記メモリに連結された1つ以上のプロセッサとを含み、前記1つ以上のプロセッサは、
    デバイス上の第1のコンテナ化されたアプリケーションをアクセスサーバに登録するように構成され、
    前記デバイス上の第2のコンテナ化されたアプリケーションを前記アクセスサーバに登録するように構成され、
    前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するように構成され、
    前記アクセスサーバに登録された前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとの間でデータを交換するように構成されており
    前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するように構成されていることは、
    前記第1のコンテナ化されたアプリケーションにより、ブロードキャストメッセージを送信するように構成されていることと、
    前記ブロードキャストメッセージの応答がないことに基づいて、前記アクセスサーバからインテント暗号化キー(IEK)、ルートキーおよびセッショントークンを受け取るように構成されていることとを含む、システム。
  16. 第1のコンテナ化されたアプリケーションをアクセスサーバに登録するための手段と、
    第2のコンテナ化されたアプリケーションを前記アクセスサーバに登録するための手段と、
    前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するための手段と、
    前記アクセスサーバに登録された前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとの間でデータを交換するための手段とを含
    前記第1のコンテナ化されたアプリケーションと前記第2のコンテナ化されたアプリケーションとがデータを交換するように構成されていることを確認するための手段は、
    前記第1のコンテナ化されたアプリケーションにより、ブロードキャストメッセージを送信する手段と、
    前記ブロードキャストメッセージの応答がないことに基づいて、前記アクセスサーバからインテント暗号化キー(IEK)、ルートキーおよびセッショントークンを受け取る手段とを含む、装置。
JP2018513535A 2015-10-23 2016-09-16 コンテナ間における信頼性の確立 Active JP6887421B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562245534P 2015-10-23 2015-10-23
US62/245,534 2015-10-23
US15/267,044 US10467421B2 (en) 2015-10-23 2016-09-15 Establishing trust between containers
US15/267,044 2016-09-15
PCT/US2016/052139 WO2017069879A1 (en) 2015-10-23 2016-09-16 Establishing trust between containers

Publications (3)

Publication Number Publication Date
JP2019501431A JP2019501431A (ja) 2019-01-17
JP2019501431A5 JP2019501431A5 (ja) 2019-07-11
JP6887421B2 true JP6887421B2 (ja) 2021-06-16

Family

ID=57047316

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018513535A Active JP6887421B2 (ja) 2015-10-23 2016-09-16 コンテナ間における信頼性の確立

Country Status (5)

Country Link
US (1) US10467421B2 (ja)
EP (1) EP3365830B1 (ja)
JP (1) JP6887421B2 (ja)
CN (1) CN108140098B (ja)
WO (1) WO2017069879A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9729520B2 (en) * 2014-05-05 2017-08-08 Citrix Systems, Inc. Facilitating communication between mobile applications
US11424931B2 (en) * 2016-01-27 2022-08-23 Blackberry Limited Trusted execution environment
US10382428B2 (en) * 2016-09-21 2019-08-13 Mastercard International Incorporated Systems and methods for providing single sign-on authentication services
US10666443B2 (en) * 2016-10-18 2020-05-26 Red Hat, Inc. Continued verification and monitoring of application code in containerized execution environment
KR101807806B1 (ko) * 2017-05-02 2017-12-11 나무기술 주식회사 클라우드 플랫폼에서 어플리케이션을 컨테이너화하는 방법
US11062299B2 (en) 2017-10-24 2021-07-13 BBPOS Limited System and method for indicating entry of personal identification number
US20190141125A1 (en) * 2017-11-03 2019-05-09 Bank Of America Corporation Cross application access provisioning system
CN108234215B (zh) * 2018-01-12 2019-12-31 平安科技(深圳)有限公司 一种网关的创建方法、装置、计算机设备及存储介质
US11689521B2 (en) * 2018-06-22 2023-06-27 Verizon Patent And Licensing Inc. Native single sign-on (SSO) for mobile applications
CN109347735B (zh) * 2018-08-10 2020-12-22 中国工程物理研究院计算机应用研究所 一种基于应用集成插件的安全数据交换方法
US11323431B2 (en) * 2019-01-31 2022-05-03 Citrix Systems, Inc. Secure sign-on using personal authentication tag
US20210117250A1 (en) * 2019-10-17 2021-04-22 Jpmorgan Chase Bank, N.A. Systems and methods for deterministically linking mobile applications
CN110909371B (zh) * 2019-11-21 2022-04-15 广东美的厨房电器制造有限公司 一种数据加密方法、电子设备及介质
JP7455601B2 (ja) * 2020-02-05 2024-03-26 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
WO2021232347A1 (en) * 2020-05-21 2021-11-25 Citrix Systems, Inc. Cross device single sign-on
CN113505007A (zh) * 2021-07-12 2021-10-15 北京鲸鲮信息系统技术有限公司 基于Linux系统的协议栈数据传输方法、计算机设备和存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050154889A1 (en) * 2004-01-08 2005-07-14 International Business Machines Corporation Method and system for a flexible lightweight public-key-based mechanism for the GSS protocol
US20070130462A1 (en) * 2005-12-06 2007-06-07 Law Eric C W Asynchronous encryption for secured electronic communications
US8468356B2 (en) * 2008-06-30 2013-06-18 Intel Corporation Software copy protection via protected execution of applications
US9485254B2 (en) * 2009-02-03 2016-11-01 Inbay Technologies Inc. Method and system for authenticating a security device
US20110270761A1 (en) * 2010-04-30 2011-11-03 Tobsc Inc. Methods and apparatus for a financial document clearinghouse and secure delivery network
US8713589B2 (en) * 2010-12-23 2014-04-29 Microsoft Corporation Registration and network access control
US9473485B2 (en) * 2011-03-21 2016-10-18 Blue Cedar Networks, Inc. Secure single sign-on for a group of wrapped applications on a computing device and runtime credential sharing
US9350718B2 (en) * 2011-09-29 2016-05-24 Oracle International Corporation Using representational state transfer (REST) for consent management
US9326134B2 (en) 2012-10-19 2016-04-26 Mcafee Inc. Data loss prevention for mobile computing devices
US8856517B2 (en) * 2012-11-27 2014-10-07 Oracle International Corporation Access management system using trusted partner tokens
US8595810B1 (en) * 2013-01-13 2013-11-26 Mourad Ben Ayed Method for automatically updating application access security
US20140245025A1 (en) * 2013-02-22 2014-08-28 Spideroak Inc. System and method for storing data securely
US9129112B2 (en) * 2013-03-15 2015-09-08 Oracle International Corporation Methods, systems and machine-readable media for providing security services
KR20150017844A (ko) 2013-08-08 2015-02-23 삼성전자주식회사 페이지 구성 방법 및 이를 지원하는 전자 장치
CN103763315B (zh) * 2014-01-14 2016-12-07 北京航空航天大学 一种应用于移动设备云存储的可信数据存取控制方法
US20160191645A1 (en) * 2014-12-30 2016-06-30 Citrix Systems, Inc. Containerizing Web Applications for Managed Execution
US9626525B2 (en) * 2014-12-31 2017-04-18 Citrix Systems, Inc. Shared secret vault for applications with single sign on
US9668136B2 (en) * 2015-09-25 2017-05-30 Citrix Systems, Inc. Using derived credentials for enrollment with enterprise mobile device management services

Also Published As

Publication number Publication date
EP3365830A1 (en) 2018-08-29
CN108140098B (zh) 2022-04-05
WO2017069879A1 (en) 2017-04-27
EP3365830B1 (en) 2021-10-20
US20170116424A1 (en) 2017-04-27
JP2019501431A (ja) 2019-01-17
US10467421B2 (en) 2019-11-05
CN108140098A (zh) 2018-06-08

Similar Documents

Publication Publication Date Title
JP6887421B2 (ja) コンテナ間における信頼性の確立
US10805383B2 (en) Access management in a data storage system
US10142327B2 (en) Rule based device enrollment
US10834075B2 (en) Declarative techniques for transaction-specific authentication
US11244061B2 (en) Data encryption service
US10643149B2 (en) Whitelist construction
US10505982B2 (en) Managing security agents in a distributed environment
US10462142B2 (en) Techniques for implementing a data storage device as a security device for managing access to resources
JP6707127B2 (ja) エンドユーザによって起動されるアクセスサーバ真正性チェック
US11288380B2 (en) Securely sharing selected fields in a blockchain with runtime access determination
JP6640869B2 (ja) スマートイメージを使用したフィッシング対策のための方法およびシステム
CN113728603A (zh) 经由不可提取的不对称密钥的浏览器登录会话

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190604

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201120

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210421

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210518

R150 Certificate of patent or registration of utility model

Ref document number: 6887421

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250