(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイス上の少なくとも複数のアプリを含むセキュアエコシステムを提供する、コンピュータにより実行される方法であって、前記エコシステム内の前記アプリは、前記エコシステムの外部からの無許可のアクセスを可能にすることなく、暗号化されたデータを企業の情報管理方針に従ってセキュアに交換し、前記方法は、
前記コンピューティングデバイス上のエコシステムエージェントによって、エコシステムディレクトリを作成するステップであって、前記エコシステムディレクトリは、前記エコシステム内のそれぞれの特定のアプリのエントリを含み、それぞれのエントリは、前記特定のアプリに関する方針情報と、前記特定のアプリに関する識別情報とを含み、前記エコシステムエージェントは、前記エコシステム内のアプリである、ステップと、
前記コンピューティングデバイス上のそれぞれの特定のエコシステム向けのアプリによって、非対称のキーペア、つまり、前記特定のアプリが前記エコシステム内のアプリとのみ共有するパブリックキー、及び、前記特定のアプリが全く共有しないプライベートキーを生成するステップと、
データを前記エコシステム内のアプリ間でセキュアに通信して、前記通信されたデータは、前記エコシステム内からの承認なしに前記エコシステムの外部からアクセスすることはできないようになっているステップであって、
前記エコシステム内の提供側アプリによってデータを第１のキーで暗号化して、前記エコシステム内の少なくとも１つの受け取り側アプリは、前記データを第２のキーで暗号解読することができるようになっているステップを更に含む、サブステップと、
第１のエコシステムアプリによって、第２のエコシステムアプリのパブリックキーを前記エコシステムディレクトリから読み込むサブステップと、
前記第１のエコシステムアプリによって、前記第２のエコシステムアプリの前記パブリックキーを使用して、前記第２のエコシステムアプリにセキュアに通信するべきメッセージと前記第２のエコシステムアプリとセキュアに共有するべきデータオブジェクトとを含む群から少なくとも１つを暗号化するサブステップと、
前記暗号化されたメッセージを前記第１のエコシステムアプリから前記第２のエコシステムアプリに通信することと、前記第１のエコシステムによって、前記暗号化されたデータオブジェクトを前記第２のエコシステムアプリと共有することとを含む群から少なくとも１つを実行するサブステップと、
前記第２のエコシステムアプリによって、前記第２のエコシステムアプリのプライベートキーを使用して、前記通信されたメッセージと前記データオブジェクトとを含む群から少なくとも１つを暗号解読するサブステップと、
を含むステップと、
前記エコシステム内のそれぞれの特定のアプリによって、企業情報管理方針に従うステップと、
を含む方法。
【請求項２】
エコシステムディレクトリを作成するステップは、
前記コンピューティングデバイス上の位置にて前記エコシステムディレクトリを前記エコシステムエージェントによって作成するステップを更に含み、前記エコシステムディレクトリの前記位置は、前記エコシステムの名前に基づく、請求項１に記載の方法。
【請求項３】
エコシステムディレクトリを作成するステップは、
前記エコシステムエージェントによって、前記エコシステムディレクトリを前記エコシステムエージェントのプライベートキーで暗号化して、前記エコシステムエージェントのパブリックキーは、前記エコシステムディレクトリを暗号解読するために必要とされるようになっているステップを更に含む、請求項１に記載の方法。
【請求項４】
エコシステムディレクトリを作成するステップは、
前記エコシステムエージェントによって前記エコシステムディレクトリを作成して、前記エコシステム内のそれぞれの特定のアプリの前記含まれたエントリは、少なくとも、１）前記特定のアプリの方針と、２）前記特定のアプリが方針アップデートを取得することを可能にする情報と、３）前記エコシステム内の他のアプリが暗号化されたデータを前記特定のアプリにセキュアに通信することを可能にする前記特定のアプリに関する情報とを含むようになっているステップを更に含む、請求項１に記載の方法。
【請求項５】
エコシステムディレクトリを作成するステップは、
前記エコシステムエージェントによって前記エコシステムディレクトリへのエントリを書き込むステップを更に含み、前記書き込まれたエントリは、少なくとも、前記エコシステムエージェントの方針と、前記エコシステムエージェントが方針アップデートを取得することを可能にする情報と、前記エコシステム内の他のアプリが暗号化されたデータを前記エコシステムエージェントにセキュアに通信することを可能にする前記エコシステムエージェントに関する情報と、を含む、請求項１に記載の方法。
【請求項６】
前記エコシステムエージェントによって少なくとも１つのエコシステム全体のキーを生成するステップと、
前記少なくとも１つのエコシステム全体のキーを使用して、前記エコシステムの前記アプリのパブリックキーを暗号化及び暗号解読し、それによって前記エコシステムの外部からの前記エコシステムの前記アプリの前記パブリックキーのアクセスを防止するステップと、を更に含む、請求項１に記載の方法。
【請求項７】
データを前記エコシステム内のアプリ間でセキュアに通信するステップは、
前記第１のエコシステムアプリにより、前記第１のエコシステムアプリのプライベートキーを使用して、複数の他のエコシステムアプリにセキュアに通信するべきメッセージを暗号化するステップと、
前記暗号化されたメッセージを前記第１のエコシステムアプリから前記複数の他のエコシステムアプリに通信するステップと、
前記複数の他のエコシステムアプリにより、前記第１のエコシステムアプリのパブリックキーを前記エコシステムディレクトリから読み込むステップと、
前記第１のエコシステムアプリの前記パブリックキーを使用して、前記複数の他のエコシステムアプリによって前記メッセージを暗号解読するステップと、を更に含む、請求項１に記載の方法。
【請求項８】
データを前記エコシステム内のアプリ間でセキュアに通信するステップは、
前記第１のエコシステムアプリによって、前記第１のエコシステムアプリのプライベートキーを使用して、複数の他のエコシステムアプリとセキュアに共有するべきデータオブジェクトを暗号化するステップと、
前記第１のエコシステムアプリによって、前記暗号化されたデータオブジェクトを前記複数の他のエコシステムアプリと共有するステップと、
前記複数の他のエコシステムアプリにより、前記第１のエコシステムアプリのパブリックキーを前記エコシステムディレクトリから読み込むステップと、
前記第１のエコシステムアプリの前記パブリックキーを使用して、前記複数の他のエコシステムアプリによって前記データオブジェクトを暗号解読するステップと、を更に含む、請求項１に記載の方法。
【請求項９】
アプリによって、前記エコシステムに参加する要求で前記エコシステムエージェントを呼び出すステップと、
前記エコシステムエージェントによって、前記呼び出し用アプリの信頼関係状態の有効性を確認するステップと、
前記エコシステムに参加する上で信頼できると、前記呼び出し用アプリの有効性を確認することに応答して、前記エコシステムエージェントによって、前記呼び出し用アプリを前記エコシステムに追加するステップと、を更に含む、請求項１に記載の方法。
【請求項１０】
前記呼び出し用アプリを前記エコシステムに追加するステップは、
前記エコシステムエージェントによって、前記エコシステムディレクトリへのエントリを書き込むステップであって、前記書き込まれたエントリは、少なくとも前記呼び出し用アプリの方針と、前記呼び出し用アプリが方針アップデートを取得することを可能にする情報と、前記エコシステム内の他のアプリが暗号化されたデータを前記呼び出し用アプリにセキュアに通信することを可能にする前記呼び出し用アプリに関する情報とを含む、ステップと、
前記エコシステムエージェントのパブリックキー及び前記エコシステム全体のキーを前記呼び出し用アプリに提供し、それによって、前記呼び出し用アプリが、前記エコシステムエージェントのパブリックキーを前記エコシステム全体のキーで暗号解読し、かつ、前記ディレクトリを前記エコシステムエージェントのパブリックキーで暗号解読することを可能にするステップと、を更に含む、請求項１に記載の方法。
【請求項１１】
コンピューティングデバイス上の少なくとも複数のアプリを含むセキュアなエコシステムを提供する少なくとも１つの非一過性コンピュータ可読媒体であって、前記エコシステム内の前記アプリは、前記エコシステムの外部からの無許可のアクセスを可能にすることなく、企業の情報管理方針に従って、暗号化されたデータをセキュアに交換し、前記少なくとも１つの非一過性コンピュータ可読媒体は、コンピュータメモリに取り込まれてプロセッサによって実行されたとき、
前記コンピューティングデバイス上のエコシステムエージェントによって、エコシステムディレクトリを作成するステップであって、前記エコシステムディレクトリは、前記エコシステム内のそれぞれの特定のアプリのエントリを含み、それぞれのエントリは、前記特定のアプリに関する方針情報と、前記特定のアプリに関する識別情報とを含み、前記エコシステムエージェントは、前記エコシステム内のアプリである、ステップと、
前記コンピューティングデバイス上のそれぞれの特定のエコシステム向けのアプリによって、非対称のキーペア、つまり、前記特定のアプリが前記エコシステム内のアプリとのみ共有するパブリックキー、及び、前記特定のアプリが全く共有しないプライベートキーを生成するステップと、
データを前記エコシステム内のアプリ間でセキュアに通信して、前記通信されたデータは、前記エコシステム内からの承認なしに前記エコシステムの外部からアクセスすることはできないようになっているステップであって、データを前記エコシステム内のアプリの間セキュアに通信するステップは、
前記エコシステム内の提供側アプリによってデータを第１のキーで暗号化して、前記エコシステム内の少なくとも１つの受け取り側アプリは、前記データを第２のキーで暗号解読することができるようになっているサブステップと、
第１のエコシステムアプリによって、第２のエコシステムアプリのパブリックキーを前記エコシステムディレクトリから読み込むサブステップと、
前記第１のエコシステムアプリによって、前記第２のエコシステムアプリの前記パブリックキーを使用して、前記第２のエコシステムアプリにセキュアに通信するべきメッセージと、前記第２のエコシステムアプリとセキュアに共有するべきデータオブジェクトとを含む群から少なくとも１つを暗号化するサブステップと、
前記暗号化されたメッセージを前記第１のエコシステムアプリから前記第２のエコシステムアプリに通信することと、前記第１のエコシステムによって、前記暗号化されたデータオブジェクトを前記第２のエコシステムアプリと共有することとを含む群から少なくとも１つを実行するサブステップと、
前記第２のエコシステムアプリによって、前記第２のエコシステムアプリのプライベートキーを使用して、前記通信されたメッセージと前記データオブジェクトとを含む群から少なくとも１つを暗号解読するサブステップと、
を含む、ステップと、
前記エコシステム内のそれぞれの特定のアプリによって、企業情報管理方針に従うステップと、を実行するプログラムコードを格納する、非一過性コンピュータ可読媒体。
【請求項１２】
少なくとも複数のモバイルアプリを含むセキュアエコシステムを提供するモバイルコンピューティングデバイスであって、前記エコシステム内の前記モバイルアプリは、前記エコシステムの外部からの無許可のアクセスを可能にすることなく、企業の情報管理方針に従って、暗号化されたデータをセキュアに交換し、前記モバイルコンピューティングデバイスは、
コンピュータメモリと、
少なくとも１つのプロセッサと、
エコシステムディレクトリを作成する手段であって、前記エコシステムディレクトリは、前記エコシステム内のそれぞれの特定のモバイルアプリのエントリを含み、それぞれのエントリは、前記特定のモバイルアプリに関する方針情報と、前記特定のモバイルアプリに関する識別情報とを含む、手段と、
前記モバイルコンピューティングデバイス上のそれぞれの特定のエコシステム向けのモバイルアプリによって、非対称のキーペア、つまり、前記特定のモバイルアプリが前記エコシステム内のモバイルアプリとのみ共有するパブリックキー、及び、前記特定のモバイルアプリが全く共有しないプライベートキーを生成する手段と、
データを前記エコシステム内のモバイルアプリ間でセキュアに通信して、前記通信されたデータは、前記エコシステム内からの承認なしに前記エコシステムの外部からアクセスすることはできないようになっている手段であって、データを前記エコシステム内のモバイルアプリ間でセキュアに通信するステップは、
前記エコシステム内の提供側モバイルアプリによってデータを第１のキーで暗号化して、前記エコシステム内の少なくとも１つの受け取り側モバイルアプリは、前記データを第２のキーで暗号解読することができるようになっているサブステップと、
第１のエコシステムアプリによって、第２のエコシステムアプリのパブリックキーを前記エコシステムディレクトリから読み込むサブステップと、
前記第１のエコシステムアプリによって、前記第２のエコシステムアプリの前記パブリックキーを使用して、前記第２のエコシステムアプリにセキュアに通信するべきメッセージと前記第２のエコシステムアプリとセキュアに共有するべきデータオブジェクトとを含む群から少なくとも１つを暗号化するサブステップと、
前記暗号化されたメッセージを前記第１のエコシステムアプリから前記第２のエコシステムアプリに通信することと、前記第１のエコシステムによって、前記暗号化されたデータオブジェクトを前記第２のエコシステムアプリと共有することとを含む群から少なくとも１つを実行するサブステップと、
前記第２のエコシステムアプリによって、前記第２のエコシステムアプリのプライベートキーを使用して、前記通信されたメッセージと前記データオブジェクトとを含む群から少なくとも１つを暗号解読するサブステップと、
を含む、手段と、
前記エコシステム内のそれぞれの特定のモバイルアプリによって、企業情報管理方針に従う手段と、を備える、モバイルコンピューティングデバイス。
【請求項１３】
前記エコシステム内のそれぞれの特定のアプリによって、企業情報管理方針に従うステップは、
前記エコシステム内のそれぞれの特定のアプリによって、前記特定のアプリの方針を前記エコシステムディレクトリから読み込むステップと、
前記エコシステム内のそれぞれの特定のアプリによって、方針に従うステップと、を含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コンピュータセキュリティに関し、更に詳しくは、エコシステムの外部からの無許可のアクセスを可能にすることなく、企業の情報管理方針に従って暗号化されたデータをセキュアに交換するアプリのセキュアエコシステムを提供することに関する。
【背景技術】
【０００２】
個人がスマートフォン及びタブレットコンピュータなどのモバイルコンピューティングデバイスを所有することが更に一層一般的になると、人々は、自デバイスを仕事及び個人利用のために使用する自由を望む（この方法を時には自デバイス持参モデルという）。ユーザは、自デバイスに精通して容易にこなせると、仕事のために第２のデバイスを操作及び携行したがらない。同時に、企業は、企業以外のデバイス上で自社の極秘情報にアクセス及び処理されるときにその取り扱いを管理する合法的な必要性を有する。
【０００３】
任意のコンピューティングプラットフォーム上での生産的な仕事は、同じデータで複数のアプリによってセキュアにアクセスし、かつ、複数のアプリ間で交換することができる点を拠り所とし、アプリのそれぞれは、その相互作用の異なる局面に適切なものである。しかしながら、雇用主は、企業情報管理方針に従って企業の極秘データのアクセス及び使用を制限したがる。更に、一部のユーザ（例えば、コンサルタント、又は、複数の雇用主を有する者達）は、自分の個人用コンピューティングデバイスを複数の組織との仕事上の関係に使用したいと思い、複数の組織のそれぞれは、別個の情報管理の必要性を有する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
これらの問題に対処することが望ましいと考えられる。
【課題を解決するための手段】
【０００５】
モバイルコンピューティングデバイスなど、セキュアエコシステムをコンピュータ上で提供する。エコシステムの構成員である複数のアプリは、前記エコシステムの外部からの無許可のアクセスを可能にすることなく、企業の情報管理方針に従って、暗号化されたデータをセキュアに交換する。エコシステムエージェントと本明細書でいう特定のエコシステムアプリは、エコシステムディレクトリをコンピューティングデバイス上で作成する。一実施形態では、エコシステムディレクトリは、エコシステムの名前に基づく、コンピューティングデバイス上の位置にて作成される。エコシステムディレクトリは、エコシステムエージェントを含め、エコシステム内のそれぞれの特定のアプリのエントリを含む。それぞれのディレクトリエントリは、方針情報と、特定のアプリに関する識別情報とを含む。例えば、そのようなエントリは、１）特定のアプリの方針と、２）前記特定のアプリが方針アップデートを取得することを可能にする情報と、３）前記エコシステム内の他のアプリが暗号化されたデータを前記特定のアプリにセキュアに通信することを可能にする前記特定のアプリに関する情報とを含むことができる。一実施形態では、他のアプリが特定のアプリにセキュアに通信することを可能にする情報は、特定のアプリのバンドル識別子又はパッケージ名、特定のアプリのアドレス、特定のアプリのパブリックキー（及び、一部の実施形態では、特定のアプリのパブリックキーを暗号化するために使用されるエコシステム全体の左右対称の暗号化キー）、特定のアプリによってサポートされるメディア形式、及び、特定のアプリのローカライズされた表題の形である。
【０００６】
一実施形態では、エコシステム帰属関係に向けて構成されるコンピューティングデバイス上のそれぞれの特定のアプリは、非対称のキーペア、つまり、特定のアプリがエコシステム内のアプリのみと共有するパブリックキー、及び、特定のアプリが全く共有しないプライベートキーを生成する。エコシステムエージェントは、自らのプライベートキーを使用してエコシステムディレクトリを暗号化することができ、エコシステムエージェントのパブリックキーは、エコシステムディレクトリを暗号解読するために必要とされるようになっている。一実施形態では、エコシステムエージェントは、エコシステム全体の左右対称の暗号化キーも生成し、エコシステム全体の左右対称の暗号化キーは、エコシステムアプリのパブリックキーを暗号化及び暗号解読するために使用され、それによって、更に、エコシステムの外部からのエコシステムアプリのパブリックキーのアクセスを防止する。
【０００７】
データは、エコシステム内のアプリ間でセキュアに通信され、通信されたデータは、エコシステム内からの承認なしにエコシステムの外部からアクセスすることはできないようになっている。エコシステムアプリ間のこのセキュアな通信は、エコシステム内の任意の受け取り側アプリが第２のキーでデータを暗号解読することができるように、エコシステム内の提供側アプリによってデータを第１のキーで暗号化するステップを含むことができる。更に詳しくは、データを単一のエコシステムアプリにセキュアに通信するために、これは、第２のエコシステムアプリのパブリックキーをエコシステムディレクトリから読み込む第１のエコシステムアプリの形を取ることができる。第１のエコシステムアプリは、第２のエコシステムアプリのパブリックキーを使用して、第２のエコシステムアプリにセキュアに通信するべきメッセージ又はデータオブジェクトを暗号化する。第１のエコシステムアプリは、暗号化されたメッセージ又はデータオブジェクトを第２のエコシステムアプリと通信又は共有し、第２のエコシステムアプリは、独自のプライベートキーを使用して、暗号化されたメッセージ又はデータを暗号解読する。データを複数のエコシステムアプリにセキュアに通信するために、第１のエコシステムアプリは、独自のプライベートキーを使用してメッセージ又はデータオブジェクトを暗号化することができる。第１のエコシステムアプリは、その後、暗号化されたメッセージ又はデータオブジェクトをターゲットである複数の他のエコシステムアプリと通信又は共有することができる。受け取り側エコシステムアプリは、第１のエコシステムアプリのパブリックキーをディレクトリから読み込んで、メッセージ又はデータオブジェクトを第１のアプリのパブリックキーで暗号解読することができる。エコシステム内のそれぞれの特定のアプリは、企業情報管理方針に従う。これは、その方針をエコシステムディレクトリから読み込んで、その後、方針に従うエコシステム内のそれぞれの特定のアプリの形を取ることができる。一部の実施形態では、エコシステムアプリは、方針アップデートを企業から受け取って、受け取った方針アップデートに従うこともできる。
【０００８】
エコシステム帰属関係に向けて構成されるがエコシステムの構成員でないコンピューティングデバイス上のアプリは、エコシステムに参加する要求でエコシステムエージェントを呼び出すことができる。エコシステムエージェントは、参加しようとしているアプリの信頼関係状態の有効性を確認し、成功した場合には新しいアプリをエコシステムに追加する。これは、新しいアプリについてエコシステムディレクトリへのエントリを書き込むという形を取ることができ、書き込まれたエントリは、エコシステム内の他のアプリが暗号化されたデータを新しいアプリにセキュアに通信することを可能にする新しいアプリに関する情報を少なくとも含む。エコシステムエージェントは、独自のパブリックキーを新しいアプリに提供することができ、その結果、新しいアプリは、エコシステムエージェントのパブリックキーでディレクトリを暗号解読することができる。エコシステムエージェントのパブリックキー自体がエコシステム全体の左右対称の暗号化キーで暗号化される実施形態では、エコシステムエージェントは、また、新しいアプリがエコシステムエージェントのパブリックキーを暗号解読することができるようにエコシステム全体の左右対称の暗号化キーを新しいアプリに提供する。新たに参加したアプリはディレクトリエントリを読み込み、方針をディレクトリから取得し、取得した方針に従う。一部の実施形態では、新たに参加したアプリもエコシステムエージェントの信頼関係状態の有効性を確認して、エコシステムエージェントが信頼できると有効性が確認された場合に限り、次に、エコシステムに参加する。
【０００９】
内在するメディア形式間のマッピング、及び、内在するメディア形式に基づいてコンテンツをエコシステム固有の暗号化されたフォーマットで処理する機能性のリストを維持することができる。このリストは、エコシステム固有の暗号化されたメッセージ及びオブジェクトを内在するメディア形式に基づいてエコシステム固有の暗号化されたフォーマットで適切に処理するために使用することができる。コンピューティングデバイスの外部の構成要素も、エコシステムの構成員とすることもでき、外部の構成要素は、サービスをエコシステムアプリに提供する。そのような外部の構成要素は、キー及び方針を企業から直接に受け取り、受け取った方針に従うことができる。
【００１０】
この「発明の概要」及び後述の「発明を実施するための形態」に記述される特徴及び利点は、すべてを包含したものではなく、特に、本特許の図面、明細書、及び請求項の見地から、関連分野の当業者には、数多くの付加的な特徴及び利点が明らかとなろう。更に、本明細書に使用されている表現は、読みやすさと説明の目的のために主に選択されており、発明の主題を限定又は制限するために選択されたものではなく、そのような発明の主題を決定するには、請求項に依ることが必要である。
【図面の簡単な説明】
【００１１】
【図１】一部の実施形態に係る、セキュアエコシステム構成要素を実装することができる例示的なネットワークアーキテクチャのブロック図である。
【図２】一部の実施形態に係る、セキュアエコシステム構成要素を実装するのに好適なコンピュータシステムのブロック図である。
【図３】一部の実施形態に係る、コンピューティングデバイス上のセキュアエコシステムというコンテキストにおけるセキュアエコシステム構成要素の機能性の高度な概要を示すブロック図である。
【図４Ａ】一部の実施形態に係る、エコシステムアプリのセキュアエコシステム構成要素のモジュールを示すブロック図である。
【図４Ｂ】一部の実施形態に係る、エコシステムエージェントのセキュアエコシステム構成要素のモジュールを示すブロック図である。
【図５】一部の実施形態に係る、セキュアエコシステムの動作のブロック図である。
【図６】一部の実施形態に係る、外部の構成要素と連動するセキュアエコシステムの動作のブロック図である。
【図７】一部の実施形態に係る、セキュアエコシステムの動作のフローチャートである。
【００１２】
図には、単に例示目的のため、様々な実施形態が示されている。当業者には、本明細書に記述されている原理から逸脱することなく、本明細書に示されている構造及び方法の別の実施形態を採用し得ることが、下記の議論から容易に理解されよう。
【発明を実施するための形態】
【００１３】
図１は、セキュアエコシステム構成要素１０１を実装することができる例示的なネットワークアーキテクチャ１００を示すブロック図である。図示のネットワークアーキテクチャ１００は、複数のクライアント１０３Ａ、１０３Ｂ及び１０３Ｎ、並びに複数のサーバ１０５Ａ及び１０５Ｎを含む。図１では、セキュアエコシステム構成要素１０１が、クライアント１０３Ａ上に常駐すると図示され、バックエンド構成要素１０９がサーバ１０５Ａ上に常駐する。これは一例にすぎず、様々な実施形態において、このシステム１０１の様々な機能が、クライアント１０３、サーバ１０５５上でインスタンス化され得るか、又は複数のクライアント１０３間及び／若しくはサーバ１０５間に分散され得ることを理解されたい。
【００１４】
クライアント１０３及びサーバ１０５は、例えば図２及び下記に示すもののような、コンピュータシステム２１０を使用して実装することができる。クライアント１０３及びサーバ１０５は、図２に関連して下記で述べられるように、例えばネットワークインタフェース２４８又はモデム２４７を介して、ネットワーク１０７に通信可能に連結されている。クライアント１０３は、例えばウェブブラウザ又はその他のクライアントソフトウェア（図示なし）を用いて、サーバ１０５上のアプリ及び／又はデータにアクセス可能である。クライアント１０３は、ネットワーク１０７に接続し、かつ、アプリケーションを実行することができる携帯型コンピュータシステム２１０を含むモバイルコンピューティングデバイスの形とすることができるが、その形である必要はない。そのようなモバイルコンピューティングデバイスは、時にはスマートフォンと称されるが、そのような名称がない多くの携帯電話も、これらの能力を有する。タブレットコンピュータ及びラップトップコンピュータは、モバイルコンピューティングデバイスの他の例である。
【００１５】
図１には３つのクライアント１０３及び２つのサーバ１０５が一例として示されているが、実際にはもっと多くの（又はもっと少ない）数のクライアント１０３及び／又はサーバ１０５を配備することができる。一実施形態において、ネットワーク１０７はインターネットの形態である。他の実施形態において、他のネットワーク１０７又はネットワークベースの環境を使用することができる。
【００１６】
図２は、一部の実施形態に係る、セキュアエコシステム構成要素１０１を実装するのに好適なコンピュータシステム２１０のブロック図である。クライアント１０３とサーバ１０５の両方が、そのようなコンピュータシステム２１０の形態で実装され得る。図２に示す形式のコンピュータシステム２１０は、モバイルコンピューティングデバイスの形とすることができるが、この形である必要はない。図示のように、コンピュータシステム２１０の１つの構成要素がバス２１２である。バス２１２は、コンピュータシステム２１０の他の構成要素、例えば、少なくとも１つのプロセッサ２１４、システムメモリ２１７（例えばランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ）、入出力（Ｉ／Ｏ）コントローラ２１８、スピーカシステム２２０などの外部音声装置に通信可能に連結された音声出力インタフェース２２２、ディスプレイ画面２２４などの外部ビデオ出力装置に通信可能に連結されたディスプレイアダプタ２２６、１つ以上のインタフェース（例えばシリアルポート２３０、ユニバーサルシリアルバス（ＵＳＢ）のレセプタクル２３０、パラレルポート（図示なし）など）、キーボード２３２に通信可能に連結されたキーボードコントローラ２３３、少なくとも１つのハードディスク（又はその他の形態の磁気媒体）に通信可能に連結された記憶装置インタフェース２３４、ファイバーチャネル（ＦＣ）ネットワーク２９０と接続するよう構成されたホストバスアダプタ（ＨＢＡ）インタフェースカード２３５Ａ、ＳＣＳＩバス２３９に接続するよう構成されたＨＢＡインタフェースカード２３５Ｂ、光ディスク２４２を受容するよう構成された光ディスクドライブ２４０、バス２１２に（例えばＵＳＢレセプタクル２２８を介して）連結されたマウス２４６（又はその他のポインティングデバイス）、バス２１２に（例えばシリアルポート２３０を介して）接続されたモデム２４７、及び、例えばバス２１２に直接連結されたネットワークインタフェース２４８と、通信可能に連結される。
【００１７】
他の構成要素（図示なし）は、同様の方法で接続され得る（例えば文書スキャナ、デジタルカメラ、プリンタなど）。逆に、図２に示されているすべての構成要素は必ずしも存在する必要はない。構成要素は、図２に示されるものとは異なる手法で相互接続することができる。
【００１８】
バス２１２は、プロセッサ２１４と、上述のように、ＲＯＭ及び／又はフラッシュメモリ並びにＲＡＭを含み得るシステムメモリ２１７との間のデータ通信を可能にする。ＲＡＭは典型的に、オペレーティングシステム及びアプリプログラムがロードされるメインメモリである。ＲＯＭ及び／又はフラッシュメモリは、他のコードと共に、特定の基本的なハードウェアオペレーションを制御するベーシックインプット・アウトプットシステム（ＢＩＯＳ）を含み得る。アプリプログラムはローカルコンピュータ可読媒体（例えばハードディスク２４４、光ディスク２４２）に格納され、システムメモリ２１７にロードされ、そしてプロセッサ２１４により実行され得る。アプリプログラムは、例えばネットワークインタフェース２４８又はモデム２４７を介して、離れた場所（すなわち、離れたところに配置されたコンピュータシステム２１０）からシステムメモリ２１７にロードすることもできる。図２では、セキュアエコシステム構成要素１０１は、システムメモリ２１７内に常駐すると図示されている。セキュアエコシステム構成要素１０１の働きを図３に関連して以下で更に詳細に説明する。
【００１９】
記憶装置インタフェース２３４は、１つ以上のハードディスク２４４（及び／又はその他の標準記憶媒体）に連結されている。（複数の）ハードディスク２４４は、コンピュータシステム２１０の一部であってもよく、又は、物理的に別であってもよく、他のインタフェースシステムを介してアクセスされてもよい。
【００２０】
ネットワークインタフェース２４８及び／又はモデム２４７は、例えばインターネットなどのネットワーク１０７に、直接的又は間接的に、通信可能に連結され得る。そのような連結は、有線又は無線であり得る。
【００２１】
図３は、一部の実施形態に係る、コンピュータ２１０上のセキュアエコシステム３０１というコンテキストにおいて実行されるセキュアエコシステム構成要素１０１の機能性の高度な概要示す。先述したように、セキュアエコシステム構成要素１０１の機能性は、クライアント１０３（モバイルコンピューティングデバイスの形のクライアント１０３を含むがこれに限定されない）、サーバ１０５上に常駐することができるか、又は、セキュアエコシステム構成要素１０１の機能性がネットワーク１０７上でサービスとして提供されるクラウド型コンピューティング環境内でを含め、複数のコンピュータシステム２１０間で分散することができる。セキュアエコシステム構成要素１０１が単一のエンティティとして図３で図示されているが、図示されるセキュアエコシステム構成要素１０１は、所望通りに単一又は複数のモジュールとしてインスタンス化され得る機能の一群を表すことを理解されたい（セキュアエコシステム１０１の特定の複数のモジュールのインスタンス化が、図３に図示される）。セキュアエコシステム構成要素１０１のモジュールは、任意のコンピュータシステム２１０のシステムメモリ２１７（例えばＲＡＭ、ＲＯＭ、フラッシュメモリ）内でインスタンス化することができ（例えばオブジェクトコード又は実行可能画像として）、これによって、コンピュータシステム２１０のプロセッサ２１４がモジュールを処理する際、コンピュータシステム２１０がその関連する機能性を実行することを理解されたい。本明細書において使用される用語「コンピュータシステム」、「コンピュータ」、「クライアント」、「クライアントコンピュータ」、「サーバ」、「サーバコンピュータ」及び「コンピューティングデバイス」は、記述される機能性を実行するよう設定及び／又はプログラムされた、１つ以上のコンピュータを意味する。加えて、セキュアエコシステム構成要素１０１の機能性を実装するためのプログラムコードは、コンピュータ可読記憶媒体に格納することができる。この文脈において、例えば磁気又は光学記憶媒体など、任意の形態の有形のコンピュータ可読記憶媒体を使用することができる。本明細書で使用されるとき、「コンピュータ可読記憶媒体」という用語は、内在する物理的な媒体とは別の電気信号を意味しない。
【００２２】
図３に示すように、モエコシステム３０１内の使用のために構成された複数のアプリ３０３は、バイルコンピューティングデバイスなど、コンピュータ２１０のシステムメモリ２１７内のセキュアエコシステム３０１内で実行される。図示を目的とした実施例として、図３は、エコシステム３０１において実行される３つのアプリ３０３を示すが、実際には、エコシステムは、非常に多数を含め、他の数のアプリ３０３を含むことができる。エコシステム３０１帰属関係のために構成されたそれぞれのアプリ３０３は、以下に詳細に論じるエコシステム特定の機能性を提供するセキュアエコシステム構成要素１０１を含む。セキュアエコシステム構成要素１０１の機能性は、複数のアプリ３０３（例えば、モバイルアプリ３０３）が企業３００によって提供される情報管理方針に従って、コンピュータ２１０上のセキュアな相互接続したエコシステム３０１として機能することを可能にする。「エコシステム」３０１は、この用語が本明細書で使用されるとき、アプリ３０３が、企業情報管理方針に従って、互いと暗号化されたメッセージ３０５及び暗号化されたデータオブジェクト３０７をセキュアに交換することができるように構成されたコンピューティングデバイス２１０上の一群のアプリ３０３を意味し、エコシステムで３０１の外側のアプリ３０３及び他の構成要素は、エコシステム３０１又はそのコンテンツへの無許可のアクセスを有していない。「企業」３００が本明細書で使用されるとき、この用語は、情報管理方針に従って自らの管理下で電子データを個人に提供する任意の組織を意味する。法人、政府、及び大学は、企業３００の例である。
【００２３】
以下で詳細に説明するように、エコシステム３０１内のアプリ３０３は、暗号化されたメッセージ３０５をセキュアに送って、同じコンピューティングデバイス２１０上で実行中であるものを含め、エコシステム３０１の外側のアプリ３０３からの無許可のアクセスを可能にすることなく、データ暗号化されたオブジェクト３０７（例えば、ファイル）を共有することができる。エコシステム３０１は、バックエンド企業サーバ３０９のシステムメモリ２１７において実行中のバックエンド構成要素１０９からダウンロードすることができる企業固有のアプリ３０３も、企業（例えば、Ｇｏｏｇｌｅ  Ｐｌａｙ又はＡｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅ上で配信された商用アプリ３０３）の外部から生じるサードパーティアプリ３０３も含むことができる。セキュアエコシステム構成要素１０１機能性を含む企業向けのアプリ３０３を配信する手順について以下で詳細に論じる。
【００２４】
複数のエコシステム３０１は、単一のコンピューティングデバイス２１０上に同時に常駐し、かつ、同時に常駐するエコシステム３０１が互いのデータにアクセスするか、又は、本明細書で説明する保護されたエコシステムレベルのデータ共有にその他の方法で参加することが許容されないように構成することができる。以下で詳細に説明するように、セキュアエコシステム構成要素１０１は、企業方針に従って、エコシステム３０１への許可されたアプリ３０３のセキュアな登録、エコシステムデータの暗号化、及び、同じエコシステム３０１内のアプリ３０３間のこのデータのセキュアな共有に効率的なプロトコルを使用する。
【００２５】
図４Ａは、一部の実施形態に係る、エコシステム３０１に参加するように構成されたアプリ３０３のセキュアエコシステム構成要素１０１のモジュールを示す。これらのモジュールの動作を図５に関連して詳細に論じる。セキュアエコシステム構成要素１０１のモジュール４０１を生成するキーが、エコシステム３０１内のセキュアな通信のためにコンテンツを暗号化するために使用されるキー４０９を生成するために使用される。セキュアエコシステム構成要素１０１のエージェント呼び出しモジュール４２１が、以下で詳細に論じる特定のエコシステムアプリ３０３であるエコシステムエージェント４１１を呼び出すために使用される。セキュアエコシステム構成要素１０１のアプリ有効性確認モジュール４２３が、エコシステム３０１に参加する上で信頼できると他のアプリの有効性を確認するために使用される。セキュアエコシステム構成要素１０１の通信モジュール４２４が、エコシステムアプリ３０３間、及び、エコシステムアプリ３０３とバックエンド企業サーバ３０９との間通信に使用される。暗号化モジュール４２５が、コンテンツをセキュアな通信のために暗号化し、暗号解読モジュール４２７が、暗号化されたコンテンツを暗号解読する。ディレクトリ読み込みモジュール４２９が、コンテンツを、以下で詳細に説明するエコシステムディレクトリから読み込む。最後に、方針遵守モジュール４３１が、企業情報管理方針との適応性を確保するために使用される。他の実施形態では、エコシステム３０１に参加するように構成されたアプリ３０３のセキュアエコシステム構成要素１０１は、所望通りにより多くの、より少しの、又は、異なるモジュールを含むことができる。
【００２６】
図４Ｂは、一部の実施形態に係る、エコシステムエージェント４１１のセキュアエコシステム構成要素１０１のモジュールを示す。上述したように、エコシステムエージェント４１１は、特定のエコシステムアプリ３０３である。図４Ａの場合と同様に、図４Ｂに示すモジュールの動作を図５に関連して詳細に論じる。セキュアエコシステム構成要素１０１のディレクトリ作成モジュール４０３が、エコシステムディレクトリ４１３を作成する。セキュアエコシステム構成要素１０１のディレクトリ書き込みモジュール４０５が、コンテンツをエコシステムディレクトリ４１３に書き込む。セキュアエコシステム構成要素１０１のアプリ追加モジュール４１９が、新しいアプリ３０３をエコシステム３０１に追加する。エコシステムエージェント４１１のセキュアエコシステム構成要素１０１も、図４Ａに関連して先述したのと同じ機能を実行する、キー生成モジュール４０１と、アプリ有効性確認モジュール４２３と、通信モジュール４２４と、暗号化モジュール４２５と、暗号解読モジュール４２７と、ディレクトリ読み込みモジュール４２９と、方針遵守モジュール４３１とを含む。他の実施形態では、エコシステムエージェント４１１のセキュアエコシステム構成要素１０１は、所望通りにより多くの、より少しの、又は、異なるモジュールを含むことができる。
【００２７】
図５をここで参照して、一部の実施形態に係るセキュアエコシステム３０１の動作を説明する。以下で更に詳細に説明するように、エコシステム３０１の様々なアプリ３０３は、キー４０９のセットを使用して、エコシステム３０１の外部からのアクセスを防止しながら、エコシステムアプリ３０３の特定のアプリ又は全てによる許可されたアクセスを可能にするようにデータを暗号化及び暗号解読する。一実施形態では、エコシステム３０１内のそれぞれのアプリ３０３のセキュアエコシステム構成要素１０１のキー生成モジュール４０１は、非対称のキーペア、つまり、アプリ３０３がエコシステム３０１の他の構成員のみと共有するパブリックキー４０９パブリック（以下で説明）、及び、アプリ３０３のみが知っているプライベートキー４００９プライベートを生成する。用語がエコシステム３０１のコンテキストにおいて本明細書で使用されるとき、パブリックキー４０９パブリックは、世間全体、又は、コンピューティングデバイス２１０上の全ての構成要素に公けであるのではなく、その代わりにエコシステム３０１内で公けであるにすぎないことを理解されたい。一実施形態では、エコシステムアプリ３０１キーペア４０９に加えて、任意の特定のエコシステムアプリ３０３には関連せず、その代わりに全体としてのエコシステム３０１に関連した単一のエコシステム全体の左右対称の暗号化キー４０９エコシステムがある。一部の実施形態では、エコシステム全体の左右対称の暗号化キー４０９エコシステムは、それ自体、キー暗号化キー（ＫＥＫ）４０９キーで暗号化される。エコシステム全体の左右対称の暗号化キー４０９エコシステム及び／又はＫＥＫ  ４０９キーは、以下で論じるエコシステムエージェント４１１と本明細書でいうアプリ３０３のセキュアエコシステム構成要素１０１のキー生成モジュール４０１によって生成することができる。異なる実施形態では、エコシステム３０１というコンテキストにおいて使用される特定のキー４０９は変わる。様々なキー４０９の使用を以下で更に詳細に説明する。
【００２８】
所与のエコシステム３０１が、当初は、エコシステムエージェント４１１によってコンピューティングデバイス２１０上で、上述したように特定のエコシステムアプリ３０３として確立される。更に詳しくは、エコシステムエージェント４１１が、本明細書で説明する特定の機能性を実行するタイプのエコシステムアプリ３０３である。エージェント４１１が単一のエンティティとして本明細書で説明及び図示するが、一部の実施形態では、エージェント４１１の機能性は、複数のアプリ３０３間で分散され得る。エージェント４１１は、典型的には、企業３００から取得される。バックエンド企業サーバ３０９からダウンロードすることは、エージェント４１１がいかにして企業３００から取得されるかの一例です以下で更に詳細に説明するように、エージェント４１１は、エコシステム３０１を確立する上で信頼でき、例えば、エージェント４１１は、この特定のアプリ３０３は実際にエージェント４１１であると明記する、信用されたソースによって署名されるアサーション付きで配信されるからである。
【００２９】
エージェント４１１がインストールされたとき、セキュアエコシステム構成要素１０１のディレクトリ作成モジュール４０３は、エージェント４１１がその後管理する暗号化されたエコシステムディレクトリ４１３を作成する。一実施形態では、ディレクトリ４１３の位置は、エコシステム３０１の名前に基づいて計算され、エコシステム３０１の名前を知っているアプリ３０３が、ディレクトリ４１３の場所を特定することができる（但し、適切なキー４０９がなければ読み込まれない）ようになっている。エコシステム名を使用して、ディレクトリ４１３の位置は、例えば、コンフリクトを管理するためにハッシュアルゴリズム（例えば、二重ハッシュ）を使用して計算され得る。他の実施形態では、ディレクトリ４１３の位置は、他の方法でエコシステム３０１の外部からのアクセスに対して保護される。例えば、一実施形態では、エージェント４１１は、ディレクトリ４１３の位置を、エコシステム３０１に参加するプロトコルの一部として新しいアプリ３０３に伝える。ディレクトリ４１３の位置は、プラットフォーム固有である。例えば、ｉＯＳ下では、ディレクトリ４１３は、見せかけだけのオブジェクトとして格納され得る。一部の実施形態では、エコシステムエージェント４１１は、ディレクトリ４１３を維持し、他のいかなるアプリ３０３も、ディレクトリ４１３を書き込んだり、又は、その他の方法で修正することができないが、他のエコシステムアプリ３０３は、典型的には、暗号解読する適切なキー４０９を有することを条件としてディレクトリ４１３を読み込むことができる。ディレクトリ４１３は、エコシステムエージェント４１１のプライベートキー４０９プライベートを使用して暗号化及び署名することができる。ディレクトリ４１３が他のアプリ３０３による削除又は改変から保護することができないプラットフォーム上では、エージェント４１１は、ディレクトリ４１３の健全性を周期的にチェックして必要に応じて補修を行うことができる。アプリ３０３がディレクトリ４１３が行方不明又は不正であるとわかった場合、検出側アプリ３０３は、損傷の対応する表示をエージェント４１１に送ることができる。
【００３０】
ディレクトリは、エコシステムエージェント４１１を含め、それぞれのアクティブなエコシステムアプリ３０３の記録４１５（エントリ）を含む。アプリ３０３の記録４１５は、方針ブロックと、情報ブロックとを含む。方針ブロックは、アプリ３０３の企業３００供給のデフォルト（初期）方針、並びに、アプリ３０１が周期的な方針アップデートを取得することができるバックエンド企業サーバ３０９のアドレス（例えば、ＵＲＬ）を含む。アプリ−レベルの企業方針の使用法を以下で更に詳細に論じる。特定のエコシステムアプリ３０３の情報ブロックは、例えば、アプリ３０３のバンドルｉｄ又はｐａｃｋａｇｅＮａｍｅ、アプリ３０３のアドレス、アプリ３０１のパブリックキー４０９パブリック、アプリ３０３によってサポートされるメディア形式、及び、アプリ３０３のローカライズされた表題など、特定のアプリ３０３とのセキュアな通信に従事するためにエコシステム内の他のアプリ３０３によって使用されるべき情報を含む。アプリ３０３のアドレスのフォーマットは、プラットフォーム間で変わる。例えば、ｉＯＳ下では、特殊ＵＲＬスキームが、アプリアドレスとして使用され、一方、Ａｎｄｒｏｉｄ下では、Ｉｎｔｅｎｔが、使用され、ユニフォームリソースインディケータ（「ＵＲＩ」）は、アプリのｐａｃｋａｇｅＮａｍｅで始まる。サポートされたメディア形式の表現も、プラットフォーム固有である。例えば、ｉＯＳ下では、メディア形式は、ＭＩＭＥ形式、ユニバーサルタイプアイデンティファイア（「ＵＴＩ」）、及び、対応するファイル拡張子として表され、一方、Ａｎｄｒｏｉｄ下では、メディア形式は、ＭＩＭＥ形式、及び、対応するファイル拡張子として表される。アプリ３０３のローカライズされた表題は、参加プロトコル中のユーザ確認に、及び／又はユーザに面するメニューに使用され得る。
【００３１】
以下で更に詳細に論じるように、エコシステムアプリ３０３は、企業方針を習得してしたがって遵守するために自身のディレクトリ記録４１５の方針ブロック内の情報を使用する。更に、エコシステムアプリ３０３は、エコシステム３０１内の他のアプリ３０３のディレクトリ記録４１５の情報ブロックを使用して、暗号化されたオブジェクト３０７を共有するとともに暗号化されたメッセージ３０５を特定のエコシステムアプリ３０３に（又はその全員に）送るために、他のエコシステムアプリ３０３について知り、かつ、適切なキー４０９及び識別情報を取得する。
【００３２】
エージェント４１１がインストールされてディレクトリ４１３を作成したとき、エージェント４１１のセキュアエコシステム構成要素１０１のディレクトリ書き込みモジュール４０５は、エージェント４１１に関するディレクトリ記録４１５をディレクトリ４１３に書き込む（エージェント４１１がそれ自身エコシステムアプリ３０３であることを思い起こす）。エージェント４１１のセキュアエコシステム構成要素１０１のアプリ追加モジュール４１９は、その後、コンピューティングデバイス２１０上のエコシステム３０１に参加する、他のアプリ３０３による要求を管理する。アプリ３０３がエコシステム３０１に参加するように要求するプロセスを理解するために、まず、モバイルコンピューティングデバイス２１０、並びに、他の形式のコンピュータ２１０のためにアプリの分布を論じることが手助けとなろう。大規模な社会を成す開発者たちが、様々な一般に普及しているモバイルオペレーティングシステムのためにアプリケーション（「アプリ」）を書き込む。例えば、Ａｐｐｌｅの（以前はｉＰｈｏｎｅ  ＯＳとして知られていた）ｉＯＳは、ｉＰｈｏｎｅ、ｉＰｏｄ  Ｔｏｕｃｈ及びｉＰａｄなどのＡｐｐｌｅモバイルデバイス上で実行されるモバイルオペレーティングシステムである。ｉＯＳの多くのアプリ３０３が、Ａｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅからのダウンロードに利用可能である。Ａｎｄｒｏｉｄは、モバイルデバイスのためのオープンソース、Ｌｉｎｕｘ（登録商標）を基本とするオペレーティングシステムである。多くのＡｎｄｒｏｉｄアプリ３０３は、（以前はＡｎｄｒｏｉｄ  Ｍａｒｋｅｔとして知られていた）Ｇｏｏｇｌｅ  Ｐｌａｙを介して、購入用に又は無料で利用可能である。Ａｎｄｒｏｉｄアプリ３０３は、他のオンラインストア及び更なるサードパーティサイトからダウンロードすることもできる。別の実施例は、Ｎｏｋｉａ、Ａｃｅｒ及びＦｕｊｉｔｓｕなどの販売会社製のスマートフォン上で実行される、Ｍｉｃｒｏｓｏｆｔによって開発されたモバイルオペレーティングシステムである、Ｗｉｎｄｏｗｓ（登録商標、以下同じ）  Ｐｈｏｎｅである。ユーザは、Ｍｉｃｒｏｓｏｆｔによって実行されるＷｉｎｄｏｗｓ  Ｐｈｏｎｅ  ＭａｒｋｅｔｐｌａｃｅからＷｉｎｄｏｗｓ  Ｐｈｏｎｅのアプリ３０３をダウンロードすることができる。ｉＯＳ、Ａｎｄｒｏｉｄ、及び、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅは、目下一般に普及しているモバイルオペレーティングシステムの例にすぎないが、その他が、同様に存在する。更に、本開示の多くは、エコシステム３０１がモバイルコンピューティングデバイス２１０上に実装される実施形態を説明するが、他の実施形態では、エコシステム３０１は、デスクトップ及びワークステーションなどの他の形式のコンピュータ２１０上に実装される。いずれにしても、アプリ３０３は、様々な源からコンピュータ２１０にダウンロードすることができる。エコシステム３０１に参加することができるアプリ３０３は、企業３００から（例えば、バックエンド企業サーバ３０９から）、又は、Ａｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅ、又は、Ｇｏｏｇｌｅ  Ｐｌａｙなどのサードパーティサイトからダウンロードすることができる。
【００３３】
企業３００によって提供されるアプリ３０３は、配信前に企業３００によって署名される。アプリ３０３が企業３００によって提供される場合、任意のセキュアエコシステム構成要素１０１固有の機能性は、企業３００によってアプリ３０３においてインスタンス化され得るか、又は、セキュアエコシステム構成要素１０１の発行元によって提供されるコードで実装されてアプリラッピングを使用してアプリ３０３に追加され得る。アプリ−ラッピングは、コードを既存のアプリ３０３に追加することを伴う。これによって、追加されたコードを含むアプリ３０３には配信前に再署名することが必要とされる。これは、企業３００提供のアプリ３０３に都合がよく、企業３００は、アプリ３０３署名の証明書を供給することができるからである。企業３００の外部で開発されてサードパーティによって配信されるアプリは、配信前に開発業者（サードパーティアプリ３０３の販売会社）によって署名される。したがって、非企業アプリ３０３がサードパーティによって配信される前にエコシステム３０１に参加するように構成される場合、セキュアエコシステム構成要素１０１固有の機能性が、セキュアエコシステム構成要素１０１の発行元によって提供されるコードでアプリ３０３に追加され、かつ、ビルドプロセスに含めることができるソフトウェア開発キット（「ＳＤＫ」）又はライブラリを使用してアプリ３０３に追加される。開発業者は、その後、配信の前に、修正されたアプリ３０３に再署名することができる。そのようなコードにアクセスするために、サードパーティアプリ販売会社は、発行元がＳＤＫを供給する、セキュアエコシステム構成要素１０１の発行元との関係を確立する。異なる実施形態では、発行元は、様々な所望の基準に従ってアクセスを特定の販売会社に制限し、及び／又は、配信を可能にする前に、エコシステム使用に構成されたサードパーティアプリ３０３を検討する。
【００３４】
セキュアエコシステム構成要素１０１の機能性がアプリに追加されるのがアプリ−ラッピングを介してか、又は、ＳＤＫを介してかを問わず、追加されたコードによって、本明細書で説明したセキュアエコシステム構成要素の１０１の機能性をインスタンス化するためにアプリ３０３のデフォルト挙動が変更されることを理解されたい。これは、修正されるべきデフォルト機能性を実行するシステムコール（例えば、ファイルシステムにアクセスするコール）を遮断して、セキュアエコシステム構成要素１０１固有の機能性を実行するコールと入れ換えるか。又は、該コールでラッピングすることによって実行することができる。例えば、ディスクにデータを書き込む（及び読み込む）試みは、本明細書で説明する暗号化（及び暗号解読）を自動的に行うために遮断され、一方、プロセス間の通信が、保護されたコンテンツのコピー／ペースト（及び他のプロセス間の通信）が本明細書で説明するように（即ち、適切な暗号化、制限的な名前空間、ＭＩＭＥ形式の移動などを通して、エコシステム構成員のみにアクセス可能であることによって）方針に従うことを確保するために遮断される。遮断される特定のシステムコールは、実施形態の間で変わり得る。システムコール遮断の機構は、モバイルオペレーティングシステムで変わる。例えば、ｉＯＳ下では、遮断は、実行時間にて発生する。Ａｎｄｒｏｉｄ下では、コードは、分解、修正、追加、及び、再び組み立てられる。
【００３５】
一実施形態では、エコシステム３０３に参加することになっている全てのアプリ３０３は、配信前に信頼性の署名されたアサーションが付される。バックエンド企業サーバ３０９からダウンロードされるアプリ３０３については、アサーションは、企業３００によって署名され得る。サードパーティサイトを介して配信されるアプリ３０３については、アサーションは、セキュアエコシステム構成要素１０１の発行元、電子アイデンティティの信用されたサードパーティ認証者、企業３００など、信頼された当事者によって署名され得る。アサーションは、特定のアプリ３０３の識別子（例えば、ｉＯＳアプリ３０３のバンドル−ｉｄ、Ａｎｄｒｏｉｄアプリ３０３のｐａｃｋａｇｅＮａｍｅ）、アプリ３０３のアドレス、及び、アプリ３０３のローカライズされた表題を含み得る。異なる実施形態では、アサーションは、アプリ３０３に関するより多くの、より少ない、又は、異なる情報を含み得、基本的な考え方は、信頼された署名によって、アプリ３０３がエコシステム３０１に参加する上で信頼できることが確認されることであり、アプリ３０３に関する情報によって、コンピューティングデバイス２１０上の特定のアプリ３０３がアサーションが確認するアプリであることを確認するのに十分な特殊性でアプリ３０３が識別される。例えば、参加プロトコル（以下で論じる）という特定のコンテキストでは、モバイルオペレーティングシステムがアサーションを提示するアプリ３０３の確実な識別表示を提供する場合、アサーションを受け取るアプリ３０３は、デバイス２１０上でメッセージを受け取るというコンテキストにおいて、受け取ったメッセージに関連してアサーションの有効性を確認することができる。
【００３６】
エコシステム３０１に参加することを要求するアプリ３０３について論じた内容に戻ると、エコシステム３０１に参加しようとするアプリ３０３のセキュアエコシステム構成要素１０１のキー生成モジュール４０１は、アプリ３０３がエコシステム３０１の構成員のみと共有するパブリックキー４０９パブリック、及び、アプリ３０３が全く共有しないプライベートキー４０９プライベートを含む非対称のキーペアを生成する。他の実施形態では、エコシステムアプリ３０３によって使用されるキー４０９の特定のフォーマット又は構造は変わる。アプリ３０３のセキュアエコシステム構成要素１０１のエージェント呼び出しモジュール４２１は、エコシステム３０１に参加する要求でエージェント３１１を呼び出し、該要求は、一部の実施形態では、エージェント４１１がアプリ３０３への戻り通信を暗号化することができるように、アプリのパブリックキー４０９パブリックを含む。エージェント４１１は、エコシステム３０１の名前に基づいてアドレス指定可能であり、エコシステム３０１の名前を知っているアプリ３０３は、エコシステム３０１に参加する要求を行うためにエージェント４１１を呼び出すことができるようになっている。企業アプリ３０３の場合、エコシステム名は、配信前にアプリのバンドルで付すことができ、アプリ３０３は、エコシステム名がわかるようになっている。エコシステム３０１に参加することができるように構成されるサードパーティアプリ３０３の場合、アプリ３０３は、ユーザにエコシステム名を入力することを促すことができる。ユーザは、名前を手作業で入力することによって、ユーザの電子メールアドレスの関数として、名前を符号化するＱＲコード（登録商標）又は他の画像をスキャンするなどによって名前を提供することができる。一実施形態では、エコシステム３０１は、デバイス２１０上に常駐する利用可能なエージェント４１１又はディレクトリ４１３を見つけるオペレーティングシステム固有の方法を使用して自動的に発見することができる。別の実施形態では、インストールされたアプリ３０３は、例えば、バックエンドサーバ３０９で通信することによってエコシステム名を企業３００から受け取ることができる。サードパーティアプリ３０３に配信前にエコシステム名が付されない理由は、たとえ、アプリ３０３が概ねエコシステム３０１に参加することができるように構成されるとしても、エコシステム３０１の名前、又は、様々なインストールターゲットが何になってアプリ３０３がどこにインストールされることになるか前もってわからないということである。
【００３７】
アプリ３０３は、エコシステム名を使用して、エコシステム３０１に参加する、エージェント４１１への要求を行う。エージェント４１１を呼び出す方法は、プラットフォーム固有である。例えば、ｉＯＳでは、エージェント４１１は、エコシステム名に基づいて特殊ＵＲＬスキームを介してアドレス指定可能である。更に詳しくは、ｉＯＳの現バージョン下では、ＵＩＡｐｐｌｉｃａｔｉｏｎ：ｏｐｅｎＵＲＬ：方法が使用され、ＵＲＬは、エージェントの特殊ＵＲＬスキームを使用して構成され、ｂａｓｅ６４符号化要求が、クエリ文字列引数として伝えられる。これは、ｉＯＳを使用する実施形態に係る、参加要求を行う実行固有の実施例であることを理解されたい。
【００３８】
エコシステム３０１に参加ようとするアプリ３０３は、状態をエージェント４１１に対して信頼できると確立する。一実施形態では、これは、署名されたアサーションを参加要求の一部としてエージェント４１１に提供するアプリ３０３の形を取る。エージェント４１１のセキュアエコシステム構成要素１０１のアプリ有効性確認モジュール４２３は、その後、アサーション内のアプリ識別子（例えば、バンドル−ｉｄ）をオペレーティングシステムによって示されるように参加しようとするアプリ３０３のアプリ識別子と適合させ、かつ、署名の合法性を確認することによってアサーションを有効性を確認する。他の実施形態では、アプリ有効性確認モジュール４２３は、他の方法でエコシステム３０１に参加しようとするアプリ３０３の信頼関係状態の有効性を確認する。例えば、署名されたアサーションは、バックエンド企業サーバ３０９など、アプリ３０３以外のソースによって提供され得る。別の実施形態では、エージェント４１１上のアプリ有効性確認モジュール４２３は、例えば、バックエンド企業サーバ３０９又は別の信用できるソースによって提供される、信頼できるアプリ３０３のホワイトリスト及び／又は信頼できないアプリ３０３のブラックリストを参照することによって有効性確認プロセスを補足する。ホワイトリスト及び／又はブラックリストは、信頼できるか又は信用できないとわかっている特定のアプリ３０３を識別するためにインラインフィルターとして使用される。更に別の実施形態では、バックエンド企業サーバ３０９などの信用できるソースによって配信されるアプリ３０３は、署名されたアサーションなしで信用できる。アプリ３０３の検証に加えて、一部の実施形態では、エージェント４１１（又は、参加するアプリ３０３）は、ユーザを促すか、又は、その他の場合と相互作用し、アプリ３０３は、ユーザからの確認指示に応答してエコシステム３０１に追加されるのみである。他の実施形態では、このステップは、不在である。一部であるが全てではない実施形態では、エージェント４１１は、また、参加動作を進める前にユーザを（例えば、バックエンド企業サーバを介して及び／又はパスワード又はその他の入力を介して）認証する。
【００３９】
所与の実施形態で利用される検証ステップ完了に成功すると、エージェント４１１上のアプリ追加モジュール４１９は、参加するアプリ３０３をエコシステム３０１に追加する。これは、エージェント４１１上のディレクトリ書き込みモジュール４０５が新たに参加したアプリ３０３について新しい記録４１５を追加するためにディレクトリ４１３を更新することを含む。エージェント４１１のセキュアエコシステム構成要素１０１の通信モジュール４２４は、その後、エージェントのパブリックキー４０９パブリック及びエコシステム全体の左右対称の暗号化キー４０９エコシステムを参加するアプリ３０３に送ることによって参加要求に応答することができる。通信モジュール４２４は、また、エージェントの署名されたアサーションをアプリ３０３に提供することができる（エージェント４１１がそれ自体エコシステムアプリ３０３であることを思い起こし、したがって、他のエコシステム向けのアプリ３０３と同じ方法で信用できると確認することができる）。参加するアプリ３０３のセキュアエコシステム構成要素１０１のアプリ有効性確認モジュール４２３は、その後、エージェントの署名されたアサーションの有効性を確認するか、又は、エージェント４１１が、エージェント４１１がアプリ３０３の有効性を確認するというコンテキストにおいて先に論じたものなど別の方法で信用できるという有効性を確認することができる。エージェント４１１のセキュアエコシステム構成要素１０１の暗号化モジュール４２５は、エージェント４１１からアプリ３０３に送られたデータをアプリのパブリックキー４０９パブリックで暗号化することができる。このように、アプリ３０３のセキュアエコシステム構成要素１０１の暗号解読モジュール４２７は、アプリの自身のプライベートキー４０９プライベートを使用してデータを暗号解読することができるが、他のいかなる構成要素もデータを読み込むことができない。
【００４０】
エコシステム３０１に追加されたアプリ３０３のセキュアエコシステム構成要素１０１のディレクトリ読み込みモジュール４２９は、エコシステム名を使用して、ディレクトリ４１３の場所を特定する。アプリの暗号解読モジュール４２７は、供給されたエコシステム全体の左右対称の暗号化キー４０９エコシステムを使用してエージェントのパブリックキー４０９パブリックを暗号解読して、エージェントのパブリックキー４０９パブリックディレクトリ４１３を暗号解読する。アプリのディレクトリ読み込みモジュール４２９は、次に、方針ブロックを、エージェント４１１によってディレクトリ４１３に追加されたアプリのディレクトリ記録４１５から読み込む。アプリ３０３のセキュアエコシステム構成要素１０１の方針遵守モジュール４３１は、企業３００によって指示されたように、先に説明したようにアプリ３０３のデフォルト方針である、アプリの方針ブロックに明記された方針を採用して遵守する。アプリ３０３の通信モジュール４２４は、その後、方針ブロックからのバックエンド企業サーバ３０９のアドレスを使用して、バックエンド企業サーバ３０９に連絡する。アプリ３０３は、アプリ３０３が特定のコンピューティングデバイス２１０上の特定のエコシステム３０１に参加したことをバックエンド企業サーバ３０９に知らせる。バックエンド企業サーバ３０９は、バックエンド企業サーバ３０９は、アプリ３０３がエコシステム３０１に参加したということを知ったときに、及び、アプリ３０３が所望通りにエコシステム３０１の構成員である時間全体中に継続してという条件で、アプリ３０３に任意の方針アップデート又は特定の方針指示を提供することができる。バックエンド企業サーバ３０９から任意の方針指示／アップデートを受け取ることに応答して、アプリの方針遵守モジュール４３１は、更新された方針を採用して相応に遵守する。
【００４１】
エコシステム３０１内のアプリ３０３は、暗号化されたメッセージ３０５の形の、及び、共有された暗号化されたオブジェクト３０７の形のデータを、企業方針に従って該アプリ間でセキュアに共有することができる。所与のアプリ３０３の通信モジュール４２４がセキュアなメッセージ３０５をエコシステム３０１内の他のアプリ３０３の特定の１つに送るため、送信側アプリ３０３の暗号化モジュール４２５は、まず、受け取り側アプリ３０３のパブリックキー４０９パブリックを（ディレクトリ４１３から収集されるように）使用して、メッセージ３０５を暗号化することができる。受け取り側アプリ３０３の暗号解読モジュール４２７は、その後、該モジュールのみが有する独自のプライベートキー４０９プライベートを使用して、受け取ったメッセージ３０５を暗号解読することができる。メッセージ３０５を複数の他のアプリ３０３に、（又は、エコシステム３０１内のアプリ３０３の全てに）送るため、送信側アプリ３０３は、独自のプライベートキー４０９プライベートを使用してメッセージ３０５を暗号化することができる。そのように、エコシステム３０１内の任意のアプリ３０３は、送信側アプリのパブリックキー４０９パブリックをディレクトリ４１３から読み込んで、メッセージ３０５を暗号解読することができるが、エコシステム３０１の外側の構成要素は、できない。アプリ３０３の通信モジュール４２４は、読み込みのみを条件として、データオブジェクト３０７（例えば、ＳＤカード上に格納されたファイル）を１つ又はそれ以上の他のエコシステムアプリ３０３と共有することができ、この場合、共有側アプリの暗号化モジュール４２５は、他のエコシステムアプリ３０３の特定のアプリ又は複数のアプリがオブジェクト３０７にアクセスすることができると意図されているかどうかに応じて、メッセージ３０５の暗号化について論じた内容で先述したように、オブジェクト３０７を暗号化することができる。送信側アプリ以外のアプリ３０３によって書き込み可能であることになっている共有されたオブジェクト３０７については、エコシステム全体の左右対称の暗号化キー４０９エコシステムは、オブジェクト３０７を暗号化するために使用することができる。メッセージ３０５及び／又はオブジェクト３０７は、通信のクラス、暗号化の方法、及び、例えば、ヘッダで明らかなものにおいて暗号化するために使用されたキー４０９を示すことができる。受け取り側アプリ３０３は、その後、この情報を使用して、ペイロード内の暗号化されたコンテンツを暗号解読して該コンテンツにアクセスすることができる。一実施形態では、エコシステムアプリ３０３は、データをディレクトリ４１３に格納することによってデータを共有することができる。
【００４２】
セキュアエコシステム間オブジェクト３０７及びメッセージ３０５は、従来のメディア形式に基づくことができるが、先述したようにエコシステム固有のキー４０９を使用して暗号化することができることを理解されたい。したがって、エコシステムアプリ３０３があたかも内在する従来のメディア形式でかのようにエコシステム固有の暗号化されたコンテンツを処理しようとしたる場合には、試行は、失敗することになる。これは、オペレーティングシステムが特定の、関連のアプリを使用して所与のフォーマットでコンテンツを自動的に開こうとするためにそうなっている。これらのアプリは、内在する従来のメディア形式を処理するように構成されず、その代わりに暗号化されたデータを処理するように構成される。したがって、メディア形式の「空間」は、エコシステム３０１内のアプリ３０３による暗号化されたバージョンの処理を支持するように管理される。サポートされたメディア形式のリスト４１７が、該メディア形式の暗号化されたバージョンのためにＭＩＭＥ形式子へのマッピング、ＵＴＩ（ｉＯＳの場合）及びファイル名拡張子とともに維持される。リスティング４１７は、暗号化されたエコシステム間のコンテンツを開いたときに、エコシステム固有の暗号化されたメッセージ３０５及びオブジェクト３０７を適切に処理するためにセキュアエコシステム構成要素１０１によって使用される。
【００４３】
共通の従来のメディア形式が、異なる販売会社によって書き込まれるアプリ３０３全体にわたって、並びに、異なる企業３００又は配置下で動作するエコシステム３０１内で機能することが望ましい。したがって、一実施形態では、セキュアエコシステム構成要素１０１の発行元は、例えば、このリスト４１７を、許可されたサードパーティベンダー及びバックエンド企業サーバ３０９が購読することができるウェブサービスとして発行する。ソフトウェアベンダー及び企業顧客は、セキュアエコシステム構成要素１０１の発行元によって対応することができるリスト４１７への追加を要求することができる。これによって、同じメディア形式リスト４１７を企業３００及びエコシステム３０１配置全体にわたって一貫して使用することができる。
【００４４】
エコシステム３０１が常駐するコンピューティングデバイス２１０のユーザは、アプリ３０３を既存のエコシステム３０１から除去することを選ぶことができる。そうするために、一実施形態では、ユーザは、アプリ３０３の記録４１５をディレクトリ４１３から除去するエージェント４１１を呼び出す。一実施形態では、そのような指示は、また、又は、その代わりに、企業３００、例えば、バックエンド企業サーバ３０９のものとすることができる。一実施形態では、エコシステムからアプリ３０３を除去した後に、エージェント４１１は、エコシステム全体の左右対称の暗号化キー４０９エコシステム、並びに、独自のキー４０９を更新し、場合によっては、他のエコシステムアプリ３０３にキーペア４０９を更新するように指示する。アプリレベルのキー３０３が更新された場合、アプリ３０３は、新しいパブリックキー４０９パブリックをエージェント４１１に提供し、エージェント４１１は、新しいアプリレベルのパブリックキー４０９パブリックを含めるためにディレクトリ４１３を更新する。場合によっては、ユーザは、特にアプリ３０３をエコシステム３０１から除去することなく、アプリ３０３をコンピューティングデバイス２１０から単に削除することがあり得る。一実施形態では、エコシステム向けのアプリ３０３は、エージェント４１１に、削除処理の一環（一部）として上記の除去機能性を実行するように指示するように構成される。一部の実施形態では、エージェント４１１は、周期的に、ディレクトリ４１３内に記載されているがコンピューティングデバイス２１０から削除されたエコシステムアプリ３０３がないかを検索する。アプリ３０３についてコンピューティングデバイス２１０をスキャンする機構は、プラットフォーム固有である。例えば、ｉＯＳ下では、エージェント４１１は、ＵＩＡｐｐｌｉｃａｔｉｏｎのｃａｎＯｐｅｎＵＲＬ：方法を使用して所与のアプリ３０３の存在がないかチェックすることができる。Ａｎｄｒｏｉｄ下では、エージェント４１１は、アプリ３０３のＡＰＫの場所を特定して署名の有効性を確認することができる。アプリ３０３が削除したと判定することに応答して、エージェント４１１は、ディレクトリ記録４１５を除去する（かつ、一部の実施形態では、上述したキー４０９処理を実行する）。
【００４５】
図６を参照すると、一部の実施形態では、コンピューティングデバイス２１０の外部の構成要素６０１は、エコシステムアプリ３０３にサービスを提供するために、エコシステム３０１の構成員とすることができる。そのような外部の構成要素６０１の実施例は、素早くＥメール添付ファイルを暗号化及び暗号解読するＡｃｔｉｖｅＳｙｎｃゲートウェイ６０３である。外部の構成要素６０１の別の実施例は、クラウド型ファイル受け入れサービスに送受信されるコンテンツオブジェクト３０７の暗号化／解読サービスを提供するプロキシ６０５である。そのような外部の構成要素６０１は、非対称のキーペア４０９をバックエンド企業サーバ３０９から受け取ることができ、バックエンド企業サーバは、該サーバが信頼関係を有し、したがってエコシステム３０１承認の資格がある構成要素６０１にキー４０９を提供するだけである。一実施形態では、外部の構成要素６０１には、単一のキーペア４０９が提供され、一方、別の実施形態では、外部の構成要素６０１には、実行されるサービス当たりに１つのキーペア４０９が提供される。外部の構成要素６０１がオンラインになったとき、キーペア４０９へのアクセスが許可される。一実施形態では、外部の構成要素６０１は、方針構成についてバックエンド企業サーバ３０９にポーリングして、方針アップデートがないかバックエンド企業サーバ３０９を周期的にチェックすることを担当する。他の実施形態では、この情報は、例えば、バックエンド企業サーバ３０９又はコンピューティングデバイス２１０上のエージェント４１１によって外部の構成要素６０１に先を見越して提供することができる。バックエンド企業サーバ３０９は、コンピューティングデバイス２１０上のエージェント４１１と直接に相互作用して、それぞれの外部の構成要素６０１について（又は、該構成要素によって提供されるあらゆるサービスについて）記録４１５をディレクトリ４１３に追加することができる。したがって、そのような実施形態では、アプリ３０３がエコシステム３０１に参加するための上記のプロトコルは、外部の構成要素６０１については利用されない。
【００４６】
図７は、一部の実施形態に係る、コンピュータ２１０上のアプリ３０３のセキュアエコシステム３０１の動作のステップを示すフローチャートである。ディレクトリ作成モジュール４０３は、コンピューティングデバイス２１０上でエコシステムディレクトリ４１３を作成し７０１、エコシステムディレクトリ４１３は、方針情報及び特定のアプリ３０３に関する識別情報を含むエントリをエコシステム３０１内のそれぞれの特定のアプリ３０３について含む。キー生成モジュール４０１は、コンピュータ２１０上のそれぞれの特定のエコシステムのアプリ３０３について、非対称のキーペア３０９つまり、特定のアプリ３０３がエコシステム３０１内のアプリ３０３のみと共有するパブリックキー４０９パブリック、及び、特定のアプリ３０３が全く共有しないプライベートキー４０９プライベートを生成する７０３。通信モジュールは、メッセージ３０５及びデータオブジェクト３０７がエコシステム３０１内からの承認なしでエコシステム３０１の外部からアクセスすることができないように、メッセージ３０５及びデータオブジェクト３０７を適切なエコシステムアプリキー４０９で暗号化及び暗号解読することによって、企業情報管理方針に従ってエコシステム３０１内のアプリ３０３間でメッセージ３０５及びデータオブジェクト３０７をセキュアに通信する７０５。
【００４７】
当該技術分野を知る業者には理解されるように、本発明は、その趣旨又は本質的特徴から逸脱することなく、他の具体的な形態で実施することができる。同様に、部分、モジュール、エージェント、マネージャー、構成要素、機能、手順、処置、階層、特徴、属性、方法論、データ構造、及びその他の態様の具体的な名称及び区分は、必須のものでも重要なものでもなく、本発明又はその特徴を実施するメカニズムは、別の名称、区分、及び／又は形式を有し得る。説明目的のための上記の記述は、特定の実施形態を参照して記述されている。しかしながら、上記の例示的議論は網羅的であることを意図したものではなく、開示されている正確な形態に限定することを意図したものでもない。上述の教示を考慮して、多くの修正及び変更が可能である。実施形態は、関連する原理及びその実際的な適用を最適に説明するよう選択かつ記述されており、これにより、他の当業者が、想到される特定の使用に好適であり得るような様々な改変を行うか行わないかにかかわらず、様々な実施形態を最適に利用できる。
【図１】
0006009083.tif 000002
【図２】
0006009083.tif 000003
【図３】
0006009083.tif 000004
【図４Ａ】
0006009083.tif 000005
【図４Ｂ】
0006009083.tif 000006
【図５】
0006009083.tif 000007
【図６】
0006009083.tif 000008
【図７】
0006009083.tif 000009