(57)【要約】  いくつかの実施形態は、装置の少なくとも１つの処理ユニットにより実行された時に、装置に記憶されたキーチェーンを他の装置のセットと同期させるプログラムを記憶する機械可読媒体を提供する。装置と他の装置のセットとは、ピアツーピア（Ｐ２Ｐ）ネットワークを介して互いに通信可能に結合される。プログラムは、装置に記憶されたキーチェーンのセットのキーチェーンに対する修正を受信する。プログラムは、装置に記憶されたキーチェーンのセットを他の装置のセットと同期させるために、他の装置のセットの各装置についての更新要求を生成する。プログラムは、別個のセキュアな通信チャネルのセット上で、更新要求のセットをＰ２Ｐネットワークを介して他の装置のセットに送信する。【選択図】  図１
2016505226.tif 000002
【特許請求の範囲】
【請求項１】
第１の装置の少なくとも１つの処理ユニットにより実行された時に、前記第１の装置に記憶されたキーチェーンのセットを他の装置のセットに記憶されたキーチェーンと同期させるプログラムを記憶する機械可読媒体であって、前記第１の装置と他の装置の前記セットとが、ピアツーピア（Ｐ２Ｐ）ネットワークを介して互いに通信可能に接続され、前記プログラムが、
前記装置に記憶されたキーチェーンの前記セットの特定のキーチェーンが修正されたことを検出する命令セットであって、前記特定のキーチェーンが、前記第１の装置及び他の装置のセットにわたって使用するための複数のセキュアなデータアイテムを含む、検出する命令セットと、
前記特定のキーチェーンが修正されたことを検出すると、前記装置に記憶された前記特定のキーチェーンを、他の装置の前記セットの前記他の装置に記憶された対応するキーチェーンと同期させるために、他の装置の前記セットの各装置についての別個の更新要求を生成する命令セットと、
別個のセキュアな通信チャネルのセット上で、前記生成された更新要求を前記Ｐ２Ｐネットワークを介して他の装置の前記セットに送信する命令セットと、
を含む、ことを特徴とする、第１の装置の少なくとも１つの処理ユニットにより実行された時に、前記第１の装置に記憶されたキーチェーンのセットを他の装置のセットに記憶されたキーチェーンと同期させるプログラムを記憶する機械可読媒体。
【請求項２】
前記キーチェーンに対する前記修正は、前記特定のキーチェーンへのセキュアなデータの追加である、
ことを特徴とする請求項１に記載の機械可読媒体。
【請求項３】
前記キーチェーンに対する前記修正は、前記特定のキーチェーンのセキュアなデータアイテムの修正である、
ことを特徴とする請求項１に記載の機械可読媒体。
【請求項４】
前記キーチェーンに対する前記修正は、前記特定のキーチェーンのセキュアなデータアイテムの削除である、
ことを特徴とする請求項１に記載の機械可読媒体。
【請求項５】
前記Ｐ２Ｐネットワークは、完全に接続されたメッシュトポロジーに従って構成されたオーバーレイネットワークにより実装される、
ことを特徴とする請求項１に記載の機械可読媒体。
【請求項６】
前記Ｐ２Ｐネットワークは、複数のノードを含むスタートポロジーに従って構成されたオーバーレイネットワークにより実装され、
前記スタートポロジーのセンターノードは、クラウドストレージサービスであり、
前記スタートポロジーの残りのノードは、前記装置と他の装置の前記セットを含む、
ことを特徴とする請求項１に記載の機械可読媒体。
【請求項７】
第１の装置に記憶されたキーチェーンのセットを他の装置のセットに記憶されたキーチェーンと同期させる方法であって、前記第１の装置と他の装置の前記セットとが、ピアツーピア（Ｐ２Ｐ）ネットワークを介して互いに通信可能に接続され、
前記方法は、
前記装置に記憶されたキーチェーンの前記セットの特定のキーチェーンが修正されたことを検出することであって、前記特定のキーチェーンが、前記第１の装置及び他の装置の前記セットにわたって使用するための複数のセキュアなデータアイテムを含む、検出することと、
前記特定のキーチェーンが修正されたことを検出すると、前記装置に記憶された前記特定のキーチェーンを、他の装置の前記セットの前記他の装置に記憶された対応するキーチェーンと同期させるために、他の装置の前記セットの各装置についての別個の更新要求を生成することと、
別個のセキュアな通信チャネルのセット上で、前記生成された更新要求を前記Ｐ２Ｐネットワークを介して他の装置の前記セットに送信する命令セットと、
を含むことを特徴とする方法。
【請求項８】
別個のセキュアな通信チャネルの前記セット上で、前記生成された更新要求を前記Ｐ２Ｐネットワークを介して他の装置の前記セットに送信することは、前記更新要求が各特定の他の装置のみにより解読可能であるように、各特定の他の装置についての前記更新要求を暗号化キーを用いて暗号化することを含む、
ことを特徴とする請求項７に記載の方法。
【請求項９】
他の装置の前記セットの前記他の装置のうち特定の装置についての前記更新要求を暗号化するための前記暗号化キーは、前記特定の他の装置の公開／秘密キーペアの公開キーを含む、
ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記特定のキーチェーンの前記複数のセキュアなデータアイテムは、パスワード、秘密キー、証明書、及びセキュアなノートのうちの少なくとも１つを含む、
ことを特徴とする請求項７に記載の方法。
【請求項１１】
第１の装置の少なくとも１つの処理ユニットにより実行された時に、キーチェーンを同期させるために同期サークルに加入するための要求を処理するプログラムを記憶する、機械可読媒体であって、前記同期サークルが、セキュアなデータを共有する前記第１の装置と他の装置のセットとを含み、
前記プログラムは、
特定の装置が前記同期サークルに加入するための要求を受信する命令セットと、
前記要求が、前記要求とともに受信されたデータに基づいて認証されるかを判定する命令セットと、
前記要求が認証されると判定された時に、前記要求の承認についてユーザにプロンプトを出す命令セットと、
前記要求の承認が前記ユーザから受け取られた時に、前記特定の装置を前記同期サークルに追加する命令セットであって、前記同期サークルへの前記特定の装置の追加後、セキュアなキーチェーンデータが前記第１の装置と前記特定の装置との間で共有される、前記特定の装置を追加する命令セットと、
を含むことを特徴とする機械可読媒体。
【請求項１２】
前記要求が認証されるかを判定する前記命令セットは、
前記同期サークルに関連付けられたユーザが、前記特定の装置が前記同期サークルに加入するための前記要求をサブミットしたことを検証する命令セットと、
前記特定の装置が前記同期サークルに加入するための前記要求が、前記特定の装置により生成されたことを検証する命令セットと、
を含むことを特徴とする請求項１１に記載の機械可読媒体。
【請求項１３】
前記特定の装置が前記同期サークルに加入するための前記要求とともに受信された前記データは前記要求の署名を含み、
前記同期サークルに関連付けられた前記ユーザが前記特定の装置が前記同期サークルに加入するための前記要求をサブミットしたことを検証する前記命令セットが、
ユーザ署名公開／秘密キーペアの公開キーを用いて前記要求の前記署名を解読する命令セットと、
前記要求が前記解読された署名と一致することを判定する命令セットと、
を含むことを特徴とする請求項１２に記載の機械可読媒体。
【請求項１４】
前記特定の装置が前記同期サークルに加入するための前記要求とともに受信された前記データは前記要求の署名を含み、
前記特定の装置が前記同期サークルに加入するための前記要求が前記特定の装置により生成されたことを検証する前記命令セットは、
前記特定の装置に属し、当該装置により生成された公開／秘密キーペアの公開キーを用いて前記要求の前記署名を解読する命令セットと、
前記要求が前記解読された署名と一致することを判定する命令セットと、
を含むことを特徴とする請求項１２に記載の機械可読媒体。
【請求項１５】
前記要求の承認について前記ユーザにプロンプトを出すための前記命令セットが、前記第１の装置のディスプレイスクリーン上に、パスワードを入力することを求める要求を表示する命令セットを含む、
ことを特徴とする請求項１１に記載の機械可読媒体。
【請求項１６】
第１の装置について、キーチェーンを同期させるために同期サークルに加入するための要求を処理する方法であって、前記同期サークルが、前記第１の装置と、セキュアなデータを共有する他の装置のセットとを含み、
前記方法は、
特定の装置が前記同期サークルに加入するための要求を受信することと、
前記要求が、前記要求とともに受信されたデータに基づいて認証されるかを判定することと、
前記要求が認証されると判定された時に、前記要求の承認について前記ユーザにプロンプトを出すことと、
前記要求の承認が前記ユーザから受け取られた時に、前記特定の装置を前記同期サークルに追加することであって、前記同期サークルへの前記特定の装置の追加後、セキュアなキーチェーンデータが前記第１の装置と前記特定の装置との間で共有される、前記特定の装置を追加することと、
を含むことを特徴とする方法。
【請求項１７】
前記特定の装置を前記同期サークルに追加することが、前記特定の装置を一意に識別するデータを、前記同期サークルのメンバーとして指定された装置のリストに追加すること  を含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記特定の装置を前記同期サークルに追加することが、前記第１の装置に属し、前記第１の装置により生成された公開／秘密装置署名キーペアの秘密キーを用いて、装置の前記リストの署名を生成することを更に含む、
ことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記特定の装置を前記同期サークルに追加することが、前記同期サークルの前記他の装置と共有するために、装置の前記リストと前記生成された署名とを中央ロケーションに記憶することを更に含む、
ことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記特定の装置を前記同期サークルに追加した後に、セキュアなキーチェーンデータを前記第１の装置と前記特定の装置との間で共有することによって、キーチェーンを前記特定の装置と同期させることを更に含む、
ことを特徴とする請求項１６に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
複数の装置間でデータを共有することは、複数の装置のユーザにとってますます普及している機能である。データ共有機能は、ファイル全体を、いくつかの場合には、複数の装置間で同期するために指定されたファイルのセット全体を更新することにより実行される。データ共有機能を提供する多くのアプリケーションは、複数の装置間で、データを保護されていない手法で送信及び受信する。
【発明の概要】
【０００２】
本発明のいくつかの実施形態は、（シンクグループ又はシンクサークルとも称される）同期グループのメンバーとして特定されるいくつかの装置間でのキーチェーンの同期（シンキング（syncing）とも称される）を容易にするための新規の方法を提供する。キーチェーンとは、いくつかの実施形態において、パスワード、秘密キー、証明書、セキュアノートなどを含み得る、定義済みデータ集合である。いくつかの実施形態において、方法は、ピアツーピア（Ｐ２Ｐ）ネットワークを介して装置間でキーチェーンを同期させる。いくつかの実施形態の方法は、装置間の通信の不正アクセスを防止するために、通信セキュリティ機能を採用する。
【０００３】
様々な実施形態は、装置がそれを介して互いと通信するＰ２Ｐネットワークを実装するために様々な技術を使用する。例えば、いくつかの実施形態が、完全に接続されたメッシュトポロジーをもつオーバーレイネットワークを採用する一方で、他の実施形態は、スタートポロジーをもつオーバーレイネットワークを使用する。更に、いくつかの実施形態は、Ｐ２Ｐネットワークを実装するために、任意の数の追加及び／又は異なるオーバーレイネットワークを利用する。
【０００４】
いくつかの実施形態において、方法は、装置が互いに通信するデータを保護するためのセキュアなトランスポート層を提供する。いくつかの実施形態の方法が、メッセージベースの通信プロトコル（例えば、オフザレコード（ＯＴＲ）メッセージング）を使用して装置の各々の間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する一方で、他の実施形態の方法は、ストリームベースの通信プロトコル（例えば、セキュアソケットレイヤ（ＳＳＬ））を使用して装置の各対間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する。
【０００５】
いくつかの実施形態の方法は、（キーチェーン全体を同期させることとは対照的に）キーチェーンの個別のアイテム（キーチェーンアイテムとも称される）を同期させることによって、装置間でキーチェーンを同期させる。いくつかの事例では、キーチェーンアイテムに同期させる時に、いくつかの実施形態の方法は、同一のキーチェーンアイテムの複数のバージョン間で競合を検出する。様々な実施形態の方法は、そのような競合を様々な方法で解決する。例えば、いくつかの実施形態では、方法は、キーチェーンアイテムの直近のバージョンを、装置間での同期対象のキーチェーンアイテムとして使用する。いくつかの実施形態では、追加の及び／又は異なる手法が使用され得る。
【０００６】
いくつかの実施形態において、方法は、条件及び／又は要件の定義済みセットに従って、装置上のキーチェーンデータ（例えば、キーチェーンアイテム）へのアクセスを制限するためのデータ保護機能を提供する。例えば、装置上の各キーチェーンアイテムは、いくつかの実施形態において、特定の保護ドメインに属するものとして指定される。いくつかの実施形態の方法は、特定のキーチェーンアイテムが属する保護ドメインについての条件及び／又は要件の定義済みセットが満たされた時にのみ、装置がその特定のキーチェーンアイテムにアクセスすることを許可する。条件及び／又は要件の例として、装置がアンロック状態であること、装置がロック状態であること、装置のユーザが特定のパスワードを入力することなどが挙げられる。この手法では、装置上のキーチェーンアイテムへのアクセスは、粒度が高い様式で制御され得る。
【０００７】
以上の要約は、本発明のいくつかの実施形態を簡潔に紹介するためのものである。本文書で開示される全ての発明主題の、序論又は概要であることを意味するものではない。以下の「発明を実施するための形態」、及び「発明を実施するための形態」で参照される図面は、この「発明の概要」で説明された実施形態、並びに他の実施形態を、更に説明するものである。したがって、本明細書で述べる全ての実施形態を理解するために、発明の概要、発明を実施するための形態及び図面の十分な検討が必要とされる。更に、特許請求される内容は、主題の趣旨から逸脱することなしに他の特定の形態で実施できるため、特許請求される内容は発明の概要、発明を実施するための形態及び図面における例示的な詳細によって制限されず、むしろ添付の特許請求の範囲によって規定されるべきものである。
【図面の簡単な説明】
【０００８】
本発明の新規の特徴は、添付の特許請求の範囲で説明される。しかしながら、説明のため、本発明のいくつかの実施形態は、以下の図に示される。
【図１】本発明のいくつかの実施形態に係る、いくつかの装置間のパスワードを同期させること概念的に示す図である。
【図２】本発明のいくつかの実施形態に係る、直接Ｐ２Ｐネットワークのためのネットワークアーキテクチャを概念的に示す図である。
【図３】本発明のいくつかの実施形態に係る、間接Ｐ２Ｐネットワークのためのネットワークアーキテクチャを概念的に示す図である。
【図４】本発明のいくつかの実施形態に係る、シンクサークルを開始し、そのシンクサークルに装置を追加する例を概念的に示す図である。
【図５】シンクサークルに加入することを要求するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図６】シンクサークルに加入するための要求を処理するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図７】パスワードを同期させるための図２に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す図である。
【図８】パスワードを同期させるための図３に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す図である。
【図９】パスワードを同期させるための図３に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す図である。
【図１０】本発明のいくつかの実施形態に係る、キーチェーンのためのデータ構造を概念的に示す図である。
【図１１】いくつかの実施形態の、キーチェーンマネージャの様々な状態及びこれらの状態間での遷移について説明する状態図を概念的に示す図である。
【図１２】ピア装置に更新をプッシュするためのいくつかの実施形態のプロセスを概念的に示す図である。
【図１３】ピア装置からの更新を処理するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図１４】競合している競合解決を解決するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図１５】キーチェーンアイテム競合を解決するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図１６】様々な装置における様々なキーチェーンアイテムを概念的に示す図である。
【図１７】キーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセスを概念的に示す図である。
【図１８】着信キーチェーンアイテムを蓄積するための処理キューを概念的に示す図である。
【図１９】ソース装置から受信したキーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセスを概念的に示す図である。
【図２０】保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、装置をアンロックすることを必要とする保護ドメインにより保護されたキーチェーンアイテムを示す図である。
【図２１】保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、少なくともブート後に装置を一度アンロックすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す図である。
【図２２】保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をオンにすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す図である。
【図２３】保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をアンロックすることが必要であり、追加の認証も必要とする保護ドメインによって保護されたキーチェーンアイテムを示す図である。
【図２４】１つのデバイスについて異なる条件セットを有する２つの保護ドメインによって保護されるデータを示す図である。
【図２５】いくつかの装置により形成されたいくつかのシンクサークルを概念的に示す図である。
【図２６】いくつかの異なる保護ドメインについていくつかの装置により形成されたシンクサークルを概念的に示す図である。
【図２７】いくつかの実施形態のキーチェーンマネージャのソフトウェアアーキテクチャを概念的に示す図である。
【図２８】本発明のいくつかの実施形態が実行される、電子システムを概念的に示す図である。
【発明を実施するための形態】
【０００９】
以下の発明の詳細な説明において、本明細書では、本発明の数多くの詳細内容、例、実施形態を記述して説明する。しかしながら、本発明は、説明されている実施形態に限定されるものではないということ、並びに本発明が具体的詳細及び記載の実施例の一部なしに実施され得るということが当業者には明らかであろう。例えば、本出願の図のうちの多くは、簡潔性及び／又は説明を目的として、特定の数の装置に関して説明する。本発明は、これらの図に示される装置の数には限定されるものではなく、本発明は任意の数の異なる装置を用いて実施され得ることが当業者には了解されよう。
【００１０】
本発明のいくつかの実施形態は、同期グループ（シンクグループ又はシンクサークルとも称される）のメンバーとして指定されるいくつかの装置間でのキーチェーンの同期を容易にするための新規の方法を提供する。キーチェーンとは、いくつかの実施形態において、パスワード、秘密キー、証明書、セキュアノートなどを含み得る、定義済みデータ集合である。いくつかの実施形態において、方法は、Ｐ２Ｐネットワークを介して装置間でキーチェーンを同期させる。いくつかの実施形態の方法は、装置間の通信の不正アクセスを防止するために、通信セキュリティ機能を採用する。
【００１１】
様々な実施形態は、装置がそれを介して互いと通信するＰ２Ｐネットワークを実装するために様々な技術を使用する。例えば、いくつかの実施形態が、完全に接続されたメッシュトポロジーをもつオーバーレイネットワークを採用する一方で、他の実施形態は、スタートポロジーをもつオーバーレイネットワークを使用する。更に、いくつかの実施形態は、Ｐ２Ｐネットワークを実装するために、任意の数の追加の及び／又は異なるオーバーレイネットワークを利用する。
【００１２】
いくつかの実施形態において、方法は、装置が互いに通信するデータを保護するためのセキュアなトランスポート層を提供する。いくつかの実施形態の方法が、メッセージベースの通信プロトコル（例えば、ＯＴＲメッセージング）を使用して装置の各対間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する一方で、他の実施形態の方法は、ストリームベースの通信プロトコル（例えば、ＳＳＬ）を使用して装置の各対間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する。
【００１３】
いくつかの実施形態の方法は、（キーチェーン全体を同期させることとは対照的に）キーチェーンの個別のアイテム（キーチェーンアイテムとも称される）を同期させることによって、装置間でキーチェーンを同期させる。いくつかの事例では、キーチェーンアイテムに同期させる時に、いくつかの実施形態の方法は、同一のキーチェーンアイテムの複数のバージョン間で競合を検出する。様々な実施形態の方法は、そのような競合を様々な方法で解決する。例えば、いくつかの実施形態において、方法は、キーチェーンアイテムの直近のバージョンを、デバイス間での同期対象のキーチェーンアイテムとして使用する。いくつかの実施形態では、追加の及び／又は異なる手法が使用され得る。
【００１４】
いくつかの実施形態において、方法は、条件及び／又は要件の定義済みセットに従って、装置上のキーチェーンデータ（例えば、キーチェーンアイテム）へのアクセスを制限するためのデータ保護機能を提供する。例えば、装置上の各キーチェーンアイテムは、いくつかの実施形態において、特定の保護ドメインに属するものとして指定される。いくつかの実施形態の方法は、特定のキーチェーンアイテムが属する保護ドメインについての条件及び／又は要件の定義済みセットが満たされた時にのみ、装置がその特定のキーチェーンアイテムにアクセスすることを許可する。条件及び／又は要件の例として、装置がアンロック状態であること、装置がロック状態であること、装置のユーザが特定のパスワードを入力することなどが挙げられる。この手法では、装置上のキーチェーンアイテムへのアクセスは、粒度が高い様式で制御され得る。
【００１５】
図１は、本発明のいくつかの実施形態によるいくつかの装置Ａ〜Ｃの間でパスワードを同期させることを概念的に示す。詳細には、図１は、装置Ａ〜Ｃの間でのパスワードの例示的な同期の３つの異なる段階１０５〜１１５における装置Ａ〜Ｃを示す。この例では、装置Ａ〜Ｃは、パスワードを互いに同期させるシンクサークルのメンバーとして指定される。装置Ａ〜Ｃの各々は、デスクトップコンピュータ、ラップトップ、スマートフォン、タブレット、又は任意の他のタイプのコンピューティング装置でよい。
【００１６】
第１の段階１０５は、装置Ａ〜Ｃの各々が同じパスワード１〜３のコピーを有することによって示されるように、パスワード１〜３が装置Ａ〜Ｃの間で同期されることを示す。この例では、装置Ａ〜Ｃの各々のパスワード１〜３は、その装置のみが解読及びアクセスすることができる暗号化されたフォーマットで装置に記憶される。このセキュリティ機能は、図１において、装置Ａ〜Ｃの各々におけるパスワード１〜３のセットを特定の形状で示すことによって概念化される。詳細には、デバイスＡに記憶されたパスワード１〜３は矩形で示され、デバイスＢに記憶されたパスワード１〜３は楕円形で示され、デバイスＣに記憶されたパスワード１〜３は不規則凸八角形で示される。したがって、この例では、装置Ａは、矩形のパスワードのみを解読し、それにアクセスすることができ、装置Ｂは、楕円形のパスワードのみを解読し、それにアクセスすることができ、装置Ｃは、不規則凸八角形のパスワードのみを解読し、それにアクセスすることができる。
【００１７】
図１の第２の段階１１０は、パスワード４が装置Ａに追加されること（例えば、装置Ａのユーザは、パスワード４を作成するために装置Ａを使用すること）を示す。図示のとおり、パスワード４は、矩形形状で暗号化され、装置Ａに記憶される。第２の段階１１０において、装置Ａは、装置Ｂ及び装置Ｃとパスワード４を同期させるために、パスワード４のコピーを装置Ｂ及びＣに送信する。いくつかの実施形態において、装置Ａがパスワード４を受信した場合、装置Ａは、装置Ｂのみが解読することができるフォーマットで暗号化されたパスワード４のコピーを装置Ｂに送信し、装置Ｃのみが解読することができるフォーマットで暗号化されたパスワード４の別のコピーを装置Ｃに送信する。これは、装置Ａが、パスワード４を楕円形形状として装置Ｂに送信し、パスワード４を不規則凸八角形形状として装置Ｃに送信することによって示される。
【００１８】
上述のように、いくつかの実施形態は、装置間の通信の不正アクセスを防止するために、通信セキュリティ機能を提供する。装置Ｂとの通信を保護するために、この例における装置Ａは、パスワード４のコピーを暗号化し、セキュアな通信プロトコル（例えば、ＳＳＬ、ＯＴＲなど）を使用するセキュアなチャネルを介して装置Ｂに送信する。いくつかの実施形態のセキュアな通信チャネルは、認証及び暗号化された通信チャネルである。いくつかの実施形態において、装置Ｂは、セキュアなチャネル上でパスワード４を送信するために使用された暗号化フォーマットでパスワード４を記憶する。同様に、装置Ｃは、いくつかの実施形態において、セキュアなチャネル上でパスワードを送信するために使用された暗号化フォーマットでパスワード４を記憶する。
【００１９】
第３の段階１１５は、パスワード１〜４が装置Ａ〜Ｃ間で同期されたことを示す。図示のとおり、装置Ｂは、装置Ｂが装置Ａから受信したパスワード４の暗号化されたコピーを記憶しており、したがって、装置Ａと同期している。同様に、装置Ｃは、装置Ｃが装置Ａから受信したパスワード４の暗号化されたコピーを記憶しており、したがって、装置Ａと同期している。上記で論じたように、この例では、装置Ｂに記憶されたパスワード４は、装置Ｂのみが解読することができるフォーマットで暗号化されており、装置Ｃに記憶されたパスワード４は、装置Ｃのみが解読することができるフォーマットで暗号化されている。
【００２０】
本出願では、シンクサークルのメンバーである装置間で同期させるためにパスワードを記憶する装置に言及する多数の詳細、例及び実施形態について記載する。しかしながら、いくつかの実施形態において、シンクサークルの装置のうちの１つ以上が、シンクサークルの他の装置のうちの一部又は全部と共有（即ち、同期）されていないパスワードも記憶することが、当業者には理解されよう。
【００２１】
本出願に記載される詳細、例及び実施形態の大部分は、キーチェーンの一部として記憶されたパスワードを更に同期させることを対象とするが、本発明はパスワードを同期させることに限定されるものではなく、本発明は、シンクサークルの装置間でキーチェーン中の他のタイプのデータ（例えば、秘密キー、証明書、セキュアなノートなど）を同期させるために実施され得ることが当業者には了解されよう。加えて、本発明は、シンクサークルの装置間で２つ以上のキーチェーンを同期させるために実施され得ることが当業者には認識されよう。
【００２２】
本発明のいくつかのより詳細な実施形態について、以下のセクションで説明する。セクションＩでは、本発明のいくつかの実施形態による例示的なＰ２Ｐネットワークアーキテクチャの詳細を概念的に記載する。次に、セクションＩＩでは、本発明のいくつかの実施形態に従って、シンクサークルを作成し、そのシンクサークルにデバイスを登録することについて概念的に記載する。セクションＩＩＩでは、本発明のいくつかの実施形態に従ってシンクサークルのデバイス間でキーチェーンを同期させることの詳細について記載する。次に、セクションＩＶでは、本発明のいくつかの実施形態によるキーチェーンのデータ保護機能について記載する。セクションＶでは、いくつかの実施形態のキーチェーンマネージャのソフトウェアアーキテクチャについて記載する。最後に、セクションＶＩでは、本発明の一部の実施形態を実行する、電子システムについて記載する。
【００２３】
Ｉ．ピアツーピアネットワークアーキテクチャ
上述のように、いくつかの実施形態は、Ｐ２Ｐネットワークを介して、シンクサークルのメンバーである装置間でキーチェーンを同期させる。シンクサークルの装置間での通信を可能にするために、様々なネットワークアーキテクチャを使用して様々な実施形態のＰ２Ｐネットワークが実装される。以下の図は、Ｐ２Ｐネットワークアーキテクチャの様々な実装形態のうちのいくつかの例を示す。
【００２４】
図２は、本発明のいくつかの実施形態による直接Ｐ２Ｐネットワークのためのネットワークアーキテクチャを概念的に示す。この例において、装置Ａ〜Ｃは、シンクサークルのメンバーである。図示のとおり、装置Ａ〜Ｃの各々は、パスワードを記憶するための記憶装置２１０と、キーチェーンマネージャ２０５とを含む。いくつかの実施形態のキーチェーンマネージャ２０５は、装置Ａ〜Ｃ間でのパスワードの同期を可能にするための機能を実行する役割を果たす。例えば、いくつかの実施形態において、キーチェーンマネージャ２０５は、シンクサークルへの装置の登録、装置Ａ〜Ｃ間でのパスワードの同期、競合しているパスワード間の競合の解決、異なるタイプのキーチェーンのマニフェストの生成、装置Ａ〜Ｃ間でデータをトランスポートするためのセキュアな通信チャネルの提供などを扱う。
【００２５】
図２に示したとおり、装置Ａ〜Ｃは、完全に接続したメッシュトポロジーをもつオーバーレイネットワークを介して互いと通信する。したがって、装置Ａ〜Ｃの各々は、他の装置の各々と直接通信することができる。即ち、装置Ａは、装置Ｂ及びＣと直接通信することができ、装置Ｂは、装置Ａ及びＣと直接通信することができ、装置Ｃは、装置Ａ及びＢと直接通信することができる。
【００２６】
上述のように、いくつかの実施形態は、装置が互いに通信するデータを保護するために、セキュアなトランスポート層を提供する。この例では、装置Ａ〜Ｃは、装置Ａ〜Ｃの各対の間に確立されるセキュアな通信チャネルを介して互いと通信する。セキュアな通信チャネルは、メッセージベースの通信プロトコル（例えば、ＯＴＲメッセージング）、ストリームベースの通信プロトコル（例えば、ＳＳＬ）などのような、任意の数の様々なプロトコルを使用して実装され得る。
【００２７】
図３は、本発明のいくつかの実施形態による間接Ｐ２Ｐネットワークのためにネットワークアーキテクチャを概念的に示す。図２と同様に、この例では、装置Ａ〜Ｃは、シンクサークルのメンバーであり、装置Ａ〜Ｃの各々は、記憶装置２１０とキーチェーンマネージャ２０５とを含む。
【００２８】
図３に示したとおり、装置Ａ〜Ｃは、スタートポロジーをもつオーバーレイネットワークを介して互いと通信する。詳細には、装置Ａ〜Ｃは、スタートポロジーの中心として機能し、データを記憶するためのクラウドストレージサービス並びに他のクラウドサービス（例えば、クラウドコンピューティングサービス）を提供するクラウドサービス３０５を介して互いと通信する。例えば、装置Ａが装置Ｂにデータを通信したいと望む場合、装置Ａは、クラウドサービス３０５にデータを記憶し、クラウドサービス３０５は、（例えば、プッシュ通知サービスを介して）データに関して装置Ｂに通知し、装置Ｂは、クラウドサービス３０５からデータを取り出す。
【００２９】
図示のとおり、クラウドサービス３０５は、シンクサークルの名前と、シンクサークルのメンバーである装置を指定する記憶装置のシンクサークル装置リスト３１０とを記憶する。いくつかの実施形態において、装置は、装置を一意に識別するデータによって指定される。そのようなデータの例として、装置のＩＤを認証するための装置署名公開／秘密キーペアの公開キー、装置のデバイスタイプ（例えば、デスクトップコンピュータ、タブレット、スマートフォンなど）、装置の名前など、あるいは任意の数のそのようなデータの組み合わせが挙げられる。
【００３０】
また、クラウドサービス３０５は、記憶装置３１５にユーザ署名を記憶する。いくつかの実施形態におけるユーザ署名は、メッセージ、文書又は任意の他のタイプのデータの署名者としてユーザのＩＤを認証するための電子署名である。いくつかの実施形態において、シンクサークルは、クラウドサービスアカウントにリンクしており、そのクラウドサービスアカウントと関連付けられた装置（例えば、そのアカウントと関連付けられたクラウドサービスにアクセスするためのアプリケーション又はプログラムを有する装置）は、シンクサークルに登録するための候補である。いくつかのそのような実施形態における記憶装置３１５は、クラウドサービス３０５のアカウントのユーザが署名者であることを示すためにクラウドサービスアカウントのパスワードに基づいて生成されたユーザ署名公開／秘密キーペアの秘密キーを用いて署名された署名を含む。記憶装置３１５に記憶されるユーザ署名の例として、ユーザ署名公開／秘密キーペアの秘密キーを用いて署名されたシンクサークル装置リストの署名、ユーザ署名キーペアの秘密キーを用いて署名された登録要求の署名、及び／又はクラウドサービスアカウントのユーザのＩＤを認証するための任意の他の署名が挙げられる。
【００３１】
図３は、また、クラウドサービス３０５が装置署名を記憶装置３２０に記憶することを示す。いくつかの実施形態において、装置署名は、メッセージ、文書又は任意の他のタイプのデータの署名者としてシンクサークルの装置のＩＤを認証するための電子署名である。例えば、いくつかの実施形態において、記憶装置３２０は、シンクサークルのメンバーである装置に属する装置署名公開／秘密キーペアの秘密キーを用いて署名されたシンクサークル装置リストの署名を含む。そのような署名は、署名した装置が、シンクサークル装置リスト中の装置のリストをシンクサークルのメンバーとして確認することを示す。いくつかの実施形態において、シンクサークルが定常状態である（例えば、保留中の又は未承認の登録要求がない）時、記憶装置３２０中の装置署名は、シンクサークルのメンバーである各装置について、装置の装置署名公開／秘密キーペアの秘密キーを用いて署名されたシンクサークル装置リストの署名を含む。即ち、そのような場合における署名は、シンクサークル装置リストにリストアップされた装置はいずれも、シンクサークル装置リストにリストアップされた装置がシンクサークルのメンバーであることに同意することを一括して示している。
【００３２】
更に、クラウドサービス３０５は、シンクサークルの装置間でキーチェーンに同期させるために、記憶装置３２５にキーチェーンデータを記憶し、ユーザ署名公開／秘密キーペアの公開キー、ユーザ署名キーペアを生成するためにシンクサークルの装置間で共有されるランダムストリング（例えば、２５６ビットストリング）、及び保留中の登録要求のリストを含み得る他のデータを記憶装置３３０に記憶する。いくつかの実施形態において、クラウドサービス３０５は、記憶装置３１０〜３３０をキー値ストアとして実装する。
【００３３】
記憶装置３１０〜３３は、別個の記憶装置として図３に示されているが、いくつかの実施形態では、記憶装置３１０〜３３０は、単一の記憶装置として実装される一方で、他の実施形態では、記憶装置３１０〜３３０はいくつかの記憶装置にわたって実装される。
【００３４】
いくつかの実施形態において、装置がクラウドサービス３０５を介して互いと通信するデータを保護するために、図２を参照して上述したセキュアなトランスポート層が利用される。即ち、装置Ａ〜Ｃが、装置Ａ〜Ｃの各対の間に確立されたセキュアな通信チャネルを介して互いと通信する一方で、装置Ａ〜Ｃは、通信をトランスポートするためのメカニズムとしてクラウドサービス３０５を使用する。いくつかの実施形態のセキュアな通信チャネルは、任意の数の様々なプロトコル（例えば、メッセージベースの通信プロトコル（例えば、ＯＴＲメッセージング）、ストリームベースの通信プロトコル（例えば、ＳＳＬ）など）を使用して実装され得る。
【００３５】
ＩＩ．シンクサークル
上述したように、シンクサークルのメンバーである装置は、装置間でキーチェーンを同期させる。そのような装置は、本出願では、ピア装置又は単にピアとも称される。以下のセクションは、シンクサークルの装置間でキーチェーンを同期させるためにシンクサークルを生成し、シンクサークルに装置を追加するための例について記載する。
【００３６】
図４は、本発明のいくつかの実施形態に従って、シンクサークル４２０を開始し、シンクサークル４２０に装置を追加する例を概念的に示す。詳細には、図４は、シンクサークル４２０に装置Ａ及びＢを登録する３つの段階４０５〜４１５を示している。段階４０５〜４１０の各々は、シンクサークル４２０、及びシンクサークル４２０についてのデータを記憶する記憶装置４２５の概念図を示す。いくつかの実施形態において、記憶装置４２５はクラウドストレージサービス３０５中に実装され、記憶装置３１０〜３３０のデータを含むが、それについては、図３を参照して上述した。クラウドストレージサービス中で記憶装置４２５を実装することと共に、いくつかの実施形態では、シンクサークル４２０のメンバーである各装置は、記憶装置４２５中のデータのコピーをその装置上にローカルに記憶する。
【００３７】
第１の段階４０５は、装置がシンクサークル４２０に登録されてない状態のシンクサークル４２０を示す。図示のとおり、シンクサークル４２０は空であり、記憶装置４２５は、シンクサークル４２０のメンバーに関するデータを含んでいない。いくつかの実施形態のシンクサークル４２０は、クラウドストレージサービスアカウントにリンクしており、そのクラウドストレージサービスアカウントと関連付けられた装置（例えば、そのアカウントと関連付けられたクラウドストレージサービスにアクセスするためのアプリケーション又はプログラムを有する装置）は、シンクサークル４２０に登録するための候補である。いくつかのそのような実施形態における記憶装置４２５は、そのアカウントと関連付けられた装置について記述するメタデータを記憶する。
【００３８】
第２の段階４１０は、装置がシンクサークル４２０に登録されている状態のシンクサークル４２０を示す。第２の段階４１０に示すように、装置Ａが、シンクサークル４２０に登録され、記憶装置４２５は、シンクサークル４２０のメンバーとして装置Ａを識別するデータを記憶している。いくつかの実施形態において、シンクサークル４２０が空である時にはシンクサークル４２０は実際には存在しない。いくつかのそのような実施形態において、第１の装置をシンクサークル４２０に登録する場合にシンクサークル４２０が生成される。クラウドストレージサービスアカウントと関連付けられた装置のうちの１つのユーザが、装置上でキーチェーン同期機能をイネーブルした場合、装置は、シンクサークル４２０を生成し、シンクサークル４２０に装置自体を登録する。
【００３９】
シンクサークル４２０に登録するために、装置Ａは、シンクサークル４２０のメンバーとして装置Ａを一意に識別するデータを記憶装置４２５に記憶する。そのようなデータの例として、装置Ａを認証するための装置署名公開／秘密キーペアの公開キー、装置Ａのデバイスタイプ（例えば、デスクトップコンピュータ、タブレット、スマートフォンなど）、装置Ａの名前など、あるいは任意の数のそのようなデータの組み合わせが挙げられる。
【００４０】
いくつかの実施形態において、シンクサークル４２０の又はシンクサークル４２０に潜在的に加入し得る各装置は、同じ公開キー暗号アルゴリズム（例えば、ＲＳＡアルゴリズム、楕円曲線暗号（ＥＣＣ）アルゴリズムなど）を使用して、装置が互いのメッセージを暗号化及び解読し得るように装置署名キーペアを生成する。更に、いくつかの実施形態において、各装置は、装置署名公開／秘密キーペアをランダムに生成する。このようにして、各装置は、任意の他の装置が生成した装置署名公開／秘密キーペアとは異なる一意の装置署名公開／秘密キーペアを生成する。
【００４１】
いくつかの実施形態において、装置Ａは、（１）クラウドストレージサービスアカウントのユーザを認証するためのユーザ署名公開／秘密キーペアの秘密キーを用いてデータを暗号化することにより、シンクサークル４２０のメンバーを識別するデータ（この例では、装置Ａを一意に識別するデータ）の署名を生成し、（２）署名付きデータを記憶装置４２５に記憶する。いくつかの実施形態のユーザ署名公開／秘密キーペアは、（１）クラウドストレージサービスアカウントと関連付けられたパスワード、及び（２）シンクサークル４２０の装置間で共有されるランダムストリング（例えば、２５６ビットストリング）に基づいて生成される。
【００４２】
いくつかの実施形態において、シンクサークル４２０における、又はシンクサークル４２０に潜在的に加入し得る各装置は、同じ公開キー暗号アルゴリズム（例えば、ＲＳＡアルゴリズム、ＥＣＣアルゴリズムなど）を使用して、ユーザ署名キーペアを生成する。いくつかの実施形態では、そのような装置はまた、装置署名キーペアを生成するために使用される公開キー暗号アルゴリズムを利用して、ユーザ署名キーペアを生成する。装置が各々、同じ公開キー暗号アルゴリズムに対する入力としてクラウドストレージサービスアカウントと関連付けられたパスワードとランダムストリングとを使用するので、装置は全て、同じ公開／秘密キーペアを生成する。したがって、この例では、シンクサークル４２０のメンバーを識別するデータの署名は、クラウドストレージサービスアカウントのユーザがシンクサークル４２０に装置Ａを登録していることを認証するためのものである。装置Ａがシンクサークル４２０に登録された第１の装置なので、装置Ａは、ユーザ署名キーペアの公開キーとランダムストリングとを記憶装置４２５に記憶する。
【００４３】
第３の段階４１５は、別の装置がシンクサークル４２０に登録されていることを示す。図示のとおり、装置Ｂがシンクサークル４２０に登録され、記憶装置４２５は、装置Ｂもシンクサークル４２０のメンバーとして識別するデータを記憶する。更に、装置Ａ及び装置Ｂがシンクサークル４２０のメンバーなので、装置Ａ及び装置Ｂ上のパスワードが同期される。
【００４４】
装置Ｂをシンクサークル４２０に登録するために、いくつかの実施形態では、（１）装置Ｂが、シンクサークル４２０に加入するための要求を記憶装置４２５に記憶することによって、その要求をサブミットすること、及び（２）装置Ａがその要求を承認することが必要とされる。異なる実施形態では、シンクサークルに加入するための要求を承認するために、異なる要件が定義される。例えば、いくつかの実施形態では、シンクサークルのメンバーである１つのみの装置が、要求を承認することが必要である一方で、他の実施形態では、シンクサークルのメンバーである装置はいずれも、要求を承認することが必要である。
【００４５】
図５は、シンクサークルに加入することを要求するためのいくつかの実施形態のプロセス５００を概念的に示す。いくつかの実施形態において、シンクサークルに加入することを要求する装置は、（例えば、装置のユーザが、装置上でキーチェーン同期機能をイネーブルすると）プロセス５００を実行する。プロセス５００を実行する図４の装置Ｂを参照して、プロセス５００について記載する。
【００４６】
プロセス５００は、（５１０において）パスワードについて装置Ｂのユーザにプロンプトを出すことにより開始する。いくつかの実施形態において、プロセス５００は、クラウドストレージサービスアカウントにパスワードに入力するようにユーザに要求するポップアップウィンドウを装置Ｂのディスプレイスクリーン上に表示することによって、パスワードについてユーザにプロンプトを出す。
【００４７】
次に、プロセス５００は、（５２０において）ユーザが提供したパスワードに基づいてユーザ署名公開／秘密キーペアを生成する。いくつかの実施形態において、プロセス５００は、シンクサークル４２０のメンバー間で共有するために、パスワード及びランダムストリングに基づいてユーザ署名キーペアを生成する。いくつかのそのような実施形態のプロセス５００は、ユーザ署名キーペアを生成するために、記憶装置４２５からランダムストリングを取り出す。異なる実施形態では、プロセス５００は、異なる技術を使用して、ユーザ署名キーペアを生成する。例えば、いくつかの実施形態において、プロセス５００は、ＲＳＡアルゴリズム、ＥＣＣアルゴリズム、又は任意の他のタイプの公開キー暗号法を使用して、装置署名キーペアを生成し得る。
【００４８】
次いで、プロセス５００は、（５３０において）装置Ｂを認証するための装置署名公開／秘密キーペアを生成する。異なる実施形態のプロセス５００は、異なる技術を使用して装置署名キーペアを生成する。いくつかの実施形態では、プロセス５００は、５２０において、ユーザ署名キーペアを生成するために使用される同じタイプの公開キー暗号法を使用して、装置署名キーペアを生成する。他の実施形態では、プロセス５００は、異なるタイプの公開キー暗号法を使用して装置署名キーペアを生成する。
【００４９】
装置署名キーペアが生成されると、プロセス５００は、（５４０において）シンクサークル４２０に加入するための要求を生成する。いくつかの実施形態において、その要求は、装置Ｂを一意に識別するための装置Ｂの装置署名キーペアの公開キーと、プロセス５００が記憶装置４２５から取り出すシンクサークル４２０の装置のリストとを含む。
【００５０】
次に、プロセス５００は、（５５０において）生成されたキーペアに基づいて要求の署名を生成する。詳細には、プロセス５００は、（１）ユーザ署名キーペアの秘密キーを用いた要求の署名、及び（２）装置Ｂの装置署名キーペアの秘密キーを用いた要求の署名を生成する。
【００５１】
最後に、プロセス５００は、（５６０において）要求と生成された署名とをサブミットする。いくつかの実施形態において、プロセス５００は、記憶装置４２５に記憶された登録要求リストにその要求を追加することによって、要求をサブミットする。いくつかの実施形態のプロセス５００は、ユーザ署名キーペアの秘密キーを用いて署名された要求の署名及び装置Ｂの装置署名キーペアの秘密キーを用いた要求の署名を記憶装置４２５に記憶することによって、署名をサブミットする。
【００５２】
図６は、シンクサークルに加入するための要求を処理するためのいくつかの実施形態のプロセスを概念的に示す。いくつかの実施形態において、シンクサークルのメンバーである装置は、シンクサークルに加入するための要求がサブミットされ、保留中であるという通知を（例えば、プッシュ通知サービスを介して）装置が受信した場合にプロセス６００を実行する。プロセス６００を実行する図４の装置Ｂを参照して、プロセス６００について記載する。
【００５３】
プロセス６００は、（６１０において）シンクサークル４２０に装置Ｂを追加するための要求を取り出すことにより開始する。いくつかの実施形態において、プロセス６００は、記憶装置４２５にアクセスし、登録要求リストからの要求、装置Ｂの装置署名キーペアの秘密キーを用いて署名された要求の署名、及びユーザ署名キーペアの秘密キーを用いて署名された要求の署名を取り出すことによって要求を取り出す。
【００５４】
次いで、プロセス６００は、（６２０において）要求が認証されたかを判定する。いくつかの実施形態において、プロセス６００は、（１）クラウドストレージサービスアカウントのユーザが、シンクサークル４２０に装置Ｂを登録するための要求をサブミットしたことと、（２）シンクサークル４２０に装置を登録するための要求が、実際には装置Ｂを登録するためのものであることをプロセス６００が検証した場合に要求を認証する。クラウドストレージサービスアカウントのユーザが装置Ｂを登録するための要求をサブミットしたことを検証するために、いくつかの実施形態のプロセス６００は、（１）ユーザ署名キーペアの秘密キーを用いて署名された要求の署名をユーザ署名キーペアの公開キーを用いて解読し、（２）登録要求リストから取り出された要求データが、解読された署名と一致することを検査する。換言すると、プロセス６００は、ユーザ署名キーペアの秘密キーを用いて署名された要求の解読された署名が、装置Ｂの装置署名キーペアの公開キーとシンクサークル４２０の装置のリストとを含むことを検査する。
【００５５】
いくつかの実施形態において、プロセス６００は、（１）装置Ｂの装置署名キーペアの秘密キーを用いて署名された要求の署名を装置Ｂの装置署名キーペアの公開キーを用いて解読し、（２）登録要求リストから取り出された要求データが、解読された署名と一致することを検査することによって、シンクサークル４２０に装置を登録するための要求が、装置Ｂを登録するためのものであることを検証する。装置Ｂの装置署名キーペアの秘密キーを用いて署名された要求の署名を解読する代わりに、又はそれに加えて、いくつかの実施形態のプロセス６００は他の技法を使用して、シンクサークル４２０に装置を登録するための要求が、装置Ｂを登録するためのものであることを検証する。例えば、プロセス６００は、シンクサークルに登録することを装置Ｂが要求した場合にランダムに生成され、装置Ｂ上に表示された、パスワード、パスコード、個人識別番号（ＰＩＮ）コードなどを入力すること、装置Ｂがシンクサークル４２０に登録することを要求している時に装置Ｂ上に表示された画像に一致する装置Ａ上に表示された画像を選択することなどを行うようにユーザにプロンプトを出し得る。
【００５６】
６３０において、プロセス６００は、要求がシンクサークルの装置により既に承認済みであるかを判定する。いくつかの実施形態において、プロセス６００は、記憶装置４２５が、（１）シンクサークル４２０の装置のリストと、（２）シンクサークルの装置に属する装置署名公開／秘密キーペアの秘密キーを用いて署名された要求側装置との署名とを含む場合に、要求がシンクサークルの装置により既に承認済みであると判定する。
【００５７】
要求が既に承認済みであるとプロセス６００が判定した場合、プロセス６００は、（６４０において）要求の承認に肯定応答し、次いで、プロセス６００は終了する。いくつかの実施形態のプロセス６００は、（１）プロセス６００が動作している装置の装置署名キーペアの秘密キーを用いて（ここでは、新たに承認された装置を含む）シンクサークル装置リストの署名を生成し、（２）装置署名を用いて生成された署名を記憶装置４２５に記憶することによって、要求の承認に肯定応答する。
【００５８】
要求が未承認であるとプロセス６００が判定した場合、プロセス６００は、（６５０において）ユーザに要求を承認するようにプロンプトを出す。異なる実施形態は、異なる方法で要求を承認する。例えば、いくつかの実施形態のプロセス６００は、ユーザがクラウドストレージサービスアカウントにパスワードを提供した場合に要求を承認する。いくつかの実施形態の装置は、ユーザがパスワードを装置に入力した場合にはクラウドストレージサービスアカウントにパスワードを記憶しないので、いくつかの実施形態のプロセス６００は、（１）装置Ｂの装置名（例えば、「ジョンドウのスマートフォン」）がシンクサークル４２０に加入するように要求したことを示し、（２）クラウドストレージサービスアカウントと関連付けられたパスワードを入力するようにユーザに要求するポップアップウィンドウを装置Ａのディスプレイスクリーン上に表示することによって、パスワードについてユーザにプロンプトを出す。
【００５９】
次に、プロセス６００は、（６６０において）要求を承認するための入力をユーザから受け取ったかを判定する。プロセス６００が要求を承認するための入力が受け取られていないと判定した場合、プロセスは、ユーザからの入力について検査を継続するために６６０に戻る。プロセス６００が要求を承認するための入力が受け取られたと判定した場合、プロセス６００は６７０に進む。
【００６０】
６７０において、プロセスは、ユーザ承認が認証されるかを判定する。クラウドストレージサービスアカウントのユーザが要求を承認したことを検証するためにクラウドストレージサービスアカウントに対するパスワードが使用される場合には、いくつかの実施形態のプロセス６００は、６５０においてユーザにより提供されたパスワード及び記憶装置４２５に記憶されたランダムストリングに基づいてユーザ署名公開／秘密キーペアを生成することによってユーザ承認を認証し、プロセス６００が生成した公開キーが記憶装置４２５に記憶されたユーザ署名キーペアの公開キーと一致することを検証する。前述したように、シンクサークル４２０における、又はシンクサークル４２０に潜在的に加入し得る各装置は、いくつかの実施形態において、同じアルゴリズムを使用してユーザ署名キーペアを生成する。したがって、記憶装置４２５に記憶されたユーザ署名キーペアの公開キーと一致するプロセス６００により生成された公開キーは、クラウドストレージサービスアカウントのユーザが要求を承認したことを検証する。
【００６１】
プロセス６００がユーザ承認が認証されていないと判定した場合、プロセス６００は終了する。プロセス６００が、ユーザ承認が認証されたと判定した場合、プロセス６００は、（６８０において）シンクサークルに要求側装置を追加する。いくつかの実施形態において、プロセス６００は、装置Ａの装置署名キーペアの秘密キーを用いてシンクサークル装置リストの署名を生成し、装置署名を用いて生成された署名を記憶装置４２５に記憶し、シンクサークル４２０に装置Ｂを追加することによって、シンクサークル４２０についてのシンクサークル装置リストに、装置Ｂを一意に識別するデータを追加する。
【００６２】
最後に、プロセス６００は、（６９０において）シンクサークル４２０の装置間での同期対象となるように規定されたキーチェーンを装置Ｂと同期させる。いくつかの実施形態において、プロセス６００は、図７〜図１５を参照して以下に記載する技術を使用して、キーチェーンを同期させる。
【００６３】
図６は、シンクサークルの１つの装置が要求を承認した場合に要求側装置をシンクサークルに追加することを示しているが、異なる実施形態では、任意の数の異なる承認要件が使用され得ることが当業者には理解されよう。例えば、いくつかの実施形態では、シンクサークルの全ての装置、規定数の装置、規定パーセンテージの装置などが、要求側装置がシンクサークルに追加し得る前に装置を承認することが必要とされ得る。
【００６４】
いくつかの実施形態は、シンクサークルから装置を除去することを可能にする。例えば、シンクサークルの装置のユーザが、シンクサークルの別の装置がシンクサークルに加入することを認証されなかったのではないか、ユーザがシンクサークルの装置を紛失したのではないか、シンクサークルの装置が盗まれたのではないかなどを考えた場合、ユーザは、シンクサークルから不要な装置を除去することができる。異なる実施形態は、別様にシンクサークルからの装置の除去を処理する。例えば、いくつかの実施形態において、装置がシンクサークルから除去された場合、シンクサークルの残りの装置は、残りの装置間でのパスワードの同期を継続する。いくつかのそのような実施形態では、除去された装置をシンクサークルに再び追加するために、その装置は、登録プロセス（例えば、図４〜図６を参照した上述したプロセス）を経ることが要求される。別の手法の下では、装置がシンクサークルから除去された場合、シンクサークルは破棄される（例えば、シンクサークル装置リストが削除される）。そのような場合、シンクサークルを再び確立し、（例えば、図４〜図６を参照して上述した例及びプロセスを使用して）新たに確立されたシンクサークルに装置を追加しなければならない。
【００６５】
ＩＩＩ．パスワードの同期
シンクサークルが確立され、そのシンクサークルに少なくとも２つの装置が登録されると、シンクサークルのメンバーとして指定された装置間でのキーチェーンの同期を可能にするために、いくつかの実施形態の方法が使用される。上述のように、いくつかの実施形態において、方法は、装置間でキーチェーンを同期させるために、Ｐ２Ｐネットワークを利用して装置間でデータを通信する。
【００６６】
図７は、パスワードを同期させるための図２に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す。詳細には、図７は、シンクサークルの装置のうちの１つについて新しいパスワードが作成された時に、シンクサークルのメンバーである装置間でパスワードを同期させるためのデータフロー動作１〜９を概念的に示す。この例では、シンクサークルの確立及びシンクサークルへの装置Ａ〜Ｃの登録は、図４〜図６を参照して上述したものと同様の技術を使用して実行される。
【００６７】
上述のように、図７に示すネットワークアーキテクチャは、図２を参照して上述したものと同様である。即ち、装置Ａ〜Ｃの各々は、パスワードの同期を可能にするためのキーチェーンマネージャ２０５と、パスワードを記憶するための記憶装置２１０とを含む。更に、装置Ａ〜Ｃは、装置Ａ〜Ｃの各々が他の装置の各々と直接通信することを可能にする完全に接続されたメッシュトポロジーをもつオーバーレイネットワークを介して互いと通信する。いくつかの実施形態において、装置Ａ〜Ｃの対ごとに（即ち、装置Ａ及び装置Ｂ、装置Ａ及び装置Ｃ、並びに装置Ｂ及び装置Ｃについて）、装置上のキーチェーンマネージャ２０５は、装置間でデータをトランスポートするために、装置の対の間に（例えば、ＯＴＲメッセージング、ＳＳＬなどを使用する）セキュアな通信チャネルを提供することを可能にする。
【００６８】
図７のデータフロー動作１〜９の開始前に、装置Ａ〜Ｃ上のパスワードを同期させる。換言すると、装置Ａ〜Ｃは各々、記憶装置２１０に記憶された同じパスワードを有する。データフローは、（丸１において）パスワード７０５を装置Ａに追加することにより開始する。例えば、装置Ａのユーザは、ユーザのソーシャルネットワーキングアカウントにと関連付けられたユーザ名及びパスワード入力するようにユーザに要求するソーシャルネットワーキングアプリケーション（例えば、Ｆａｃｅｂｏｏｋ（登録商標）アプリケーション、Ｔｗｉｔｔｅｒ（登録商標）アプリケーション、Ｇｏｏｇｌｅ＋（登録商標）アプリケーション、ＬｉｎｋｅｄＩｎ（登録商標）アプリケーションなど）をインストール済みであり得る。
【００６９】
装置Ａが新しいパスワード７０５を受信すると、装置Ａは、（丸２において）パスワード７０５を暗号化し、それを装置Ａの記憶装置２１０に記憶する。いくつかの実施形態において、装置Ａ〜Ｃの記憶装置２１０に記憶されたパスワードは、対称キーアルゴリズム（データ暗号化標準（ＤＥＳ）アルゴリズム、トリプルデータ暗号化アルゴリズム（ＴＤＥＡ）、２５６ビットブロックサイズ及びガロア／カウンタモード（ＧＣＭ）を使用する高度暗号化標準（ＡＥＳ）など）、並びにキー（例えば、装置にログインするためのパスワード又はパスコード、装置が生成した若しくは割り当てられたランダムキーなど、あるいは任意の数のそのようなキーの組み合わせ）を使用して保護される。装置Ａがパスワード７０５を記憶装置２１０に記憶すると、キーチェーンマネージャ２０５は、対称キーアルゴリズム及びキーを使用してパスワードを暗号化する。
【００７０】
パスワード７０５を記憶した後、装置Ａは、（丸３において）パスワード７０５を解読し、装置Ｂ及び装置Ｃの各々について暗号化する。記憶装置２０５に記憶された暗号化されたパスワード７０５を解読するために、キーチェーンマネージャ２０５は、対称キーアルゴリズムと、装置Ａが記憶装置２１０にパスワード７０５を記憶する時にパスワード７０５を暗号化するために使用された上述のキーとを使用する。
【００７１】
上述のように、装置間でトランスポートされるデータを保護するために、装置Ａ〜Ｃのあらゆる対の間のセキュアな通信チャネルが使用される。装置Ａと装置Ｂとの対及び装置Ａと装置Ｃとの対は各々、別個のセキュアな通信チャネルを使用するので、装置Ａのキーチェーンマネージャ２０５は、装置Ａが装置Ｂと確立したセキュアな通信チャネルに基づく第１のキー又はキーのセットを使用して、装置Ｂに送信すべきパスワード７０５のコピーを暗号化する。装置Ａのキーチェーンマネージャ２０５はまた、装置Ａが装置Ｃと確立したセキュアな通信チャネルに基づく第２の異なるキー又はキーのセットを使用して、装置Ｃに送信すべきパスワード７０５の別のコピーを暗号化する。
【００７２】
一例として、いくつかの実施形態では、装置Ａと装置Ｂとの間のセキュアな通信チャネル及び装置Ａと装置Ｃとの間のセキュアな通信チャネルは各々、ＯＴＲメッセージングを使用して実装される。いくつかのそのような実施形態では、装置Ａ及び装置Ｂの公開／秘密キーペアに基づいて、装置Ａと装置Ｂとの間にＯＴＲセッションが確立される。更に、装置Ａ及び装置Ｂの公開／秘密キーペアに基づいて、装置Ａと装置Ｃとの間に別の別個のＯＴＲセッションが確立される。いくつかの実施形態において、装置署名キーペアは、図４〜図６を参照して上述したように、シンクサークルに装置Ａ〜Ｃを登録するために生成された同一のキーペアである。
【００７３】
装置Ａのキーチェーンマネージャ２０５が装置Ｂについてのパスワード７０５のコピーを暗号化すると、装置Ａは、（丸４において）パスワード７０５の暗号化されたコピー及びパスワード７０５について記述するメタデータを、装置Ａと装置Ｂとの間に確立されたセキュアな通信チャネルを介して装置Ｂに送信する。パスワード７０５について記述するためのメタデータの例として、ある種のパスワード（インターネットパスワード、アプリケーションパスワード、ネットワークパスワード、など）、パスワードが関連する又はパスワードが使用されるアプリケーション又はウェブサイトの名前、アプリケーション又はウェブサイトのパスなどが挙げられる。
【００７４】
装置Ｂがパスワード７０５の暗号化されたコピーを受信すると、装置Ｂは、（丸５において）装置Ａと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによって、パスワード７０５のコピーを解読する。パスワード７０５のコピーを解読すると、装置Ｂは、（丸６において）パスワード７０５のコピーを暗号化し、それを装置Ｂの記憶装置２１０に記憶する。この時、装置Ｂはパスワード７０５を用いて更新され、したがって、装置Ｂに記憶されたパスワードは、装置Ａに記憶されたパスワードと同期される。
【００７５】
装置Ａと装置Ｃとの間でパスワードを同期させるためのデータフロー動作に着目すると、装置Ａのキーチェーンマネージャ２０５が装置Ｃについてのパスワード７０５のコピーを暗号化した後、装置Ａは、（丸７において）パスワード７０５の暗号化されたコピー及びパスワード７０５について記述するメタデータを、装置Ａと装置Ｃとの間に確立されたセキュアな通信チャネルを介して装置Ｃに送信する。いくつかの実施形態において、装置Ａがパスワード７０５の暗号化されたコピーと共に装置Ｂに送信するメタデータは、装置Ａが装置Ｃに送信するものと同じメタデータである。
【００７６】
パスワード７０５の暗号化されたコピーを受信すると、装置Ｃは、（丸８において）装置Ａと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによってパスワード７０５のコピーを解読する。装置Ｃがパスワード７０５のコピーを解読した場合、装置Ｃは、（丸６において）パスワード７０５のコピーを暗号化し、それを装置Ｃの記憶装置２１０に記憶する。この時、装置Ｃはパスワード７０５を用いて更新され、したがって、装置Ｃに記憶されたパスワードは、装置Ａに記憶されたパスワードと同期される。
【００７７】
図８及び図９は、パスワードを同期させるための図３に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す。詳細には、図８及び図９は、シンクサークルの装置のうちの１つで新しいパスワードが作成された時に、シンクサークルのメンバーである装置間でパスワードを同期させるためのデータフロー動作１〜１１を概念的に示す。図８は、装置Ｂがオフラインである間に装置Ｃと装置Ａとの間でパスワードを同期させるために、装置Ｃ上で新しいパスワードが作成されたことに応答して実行されるデータフロー動作１〜８を概念的に示す。図９は、装置Ｂがオンラインになり、装置Ｂのパスワードを装置Ｃ及び装置Ａと同期させることを概念的に示す。この例では、シンクサークルの確立及びシンクサークルへの装置Ａ〜Ｃの登録は、図４〜図６を参照して上述したものと同様の技術を使用して実行される。
【００７８】
上述のように、図８及び図９に示すネットワークアーキテクチャは、図３を参照して上述したものと同様である。即ち、装置Ａ〜Ｃの各々は、パスワードの同期を可能にするためのキーチェーンマネージャ２０５と、パスワードを記憶するための記憶装置２１０とを含む。また、装置Ａ〜Ｃは、装置Ａ〜Ｃの各々が、クラウドサービス３０５を介して他の装置の各々と間接的に通信することを可能にするスタートポロジーをもつオーバーレイネットワークを介して互いと通信し、クラウドサービス３０５は、スタートポロジーの中心として機能し、データを記憶するためのクラウドストレージサービスを提供する。いくつかの実施形態のクラウドサービス３０５は、記憶装置のシンクサークルの名前及びシンクサークル装置リスト３１０、装置のユーザを認証するための記憶装置のユーザ署名３１５、シンクサークルの装置を認証するための記憶装置の装置署名３２０、シンクサークルの装置間でキーチェーンを同期させるための記憶装置のキーチェーンデータ３２５、並びに記憶装置の他のデータ３３０を記憶する。更にいくつかの実施形態では、装置Ａ〜Ｃの対ごとに（即ち、装置Ａ及び装置Ｂ、装置Ａ及び装置Ｃ、並びに装置Ｂ及び装置Ｃについて）、装置上のキーチェーンマネージャ２０５は、装置の対の間に（例えば、ＯＴＲメッセージング、ＳＳＬなどを使用する）セキュアな通信チャネルを確立し、それを介して装置の対が通信する。この例示的なデータにおける装置Ａ〜Ｃは、通信をトランスポートするための手段としてクラウドサービス３０５を使用する。
【００７９】
図８及び図９のデータフロー動作１〜１１の開始より前に、装置Ａ〜Ｃ上のパスワードを同期させる。即ち、装置Ａ〜Ｃは各々、記憶装置２１０に記憶された同じパスワードを有する。更に、データフローは、（丸１において）パスワード８０５を装置Ｃに追加することにより開始する。例えば、装置Ａのユーザは、ユーザのソーシャルネットワーキングアカウントにと関連付けられたユーザ名及びパスワード入力するようにユーザに要求するソーシャルネットワーキングアプリケーション（例えば、Ｆａｃｅｂｏｏｋ（登録商標）アプリケーション、Ｔｗｉｔｔｅｒ（登録商標）アプリケーション、Ｇｏｏｇｌｅ＋（登録商標）アプリケーション、ＬｉｎｋｅｄＩｎ（登録商標）アプリケーションなど）をインストール済みであり得る。
【００８０】
装置Ｃが新しいパスワード８０５を受信すると、装置Ｃは、（丸２において）パスワード８０５を暗号化し、それを装置Ｃの記憶装置２１０に記憶する。いくつかの実施形態において、装置Ａ〜Ｃの記憶装置２１０に記憶されたパスワードは、対称キーアルゴリズム（データ暗号化標準（ＤＥＳ）アルゴリズム、トリプルデータ暗号化アルゴリズム（ＴＤＥＡ）など）、並びにキー（例えば、装置にログインするためのパスワード又はパスコード、装置が生成した若しくは割り当てられたランダムキーなど、あるいは任意の数のそのようなキーの組み合わせ）を使用して保護される。装置Ａがパスワード８０５を記憶装置２１０に記憶すると、キーチェーンマネージャ２０５は、対称キーアルゴリズム及びキーを使用してパスワード８０５を暗号化する。
【００８１】
パスワード８０５を記憶した後、装置Ｃは、（丸３において）パスワード８０５を解読し、装置Ａ及び装置Ｃの各々について暗号化する。記憶装置２０５に記憶された暗号化されたパスワード８０５を解読するために、キーチェーンマネージャ２０５は、対称キーアルゴリズムと、装置Ｃが記憶装置２１０にパスワード８０５を記憶する時にパスワード８０５を暗号化するために使用された上述のキーとを使用する。
【００８２】
上記のように、装置間でトランスポートされるデータを保護するために、装置Ａ〜Ｃのあらゆる対の間のセキュアな通信チャネルが使用される。装置Ａと装置Ｂとの対及び装置ＡとＣとの対は各々、別個のセキュアな通信チャネルを使用するので、装置Ａのキーチェーンマネージャ２０５は、装置Ａが装置Ｂと確立したセキュアな通信チャネルに基づいて第１のキー又はキーのセットを使用して、装置Ｂに送信すべきパスワード８０５のコピーを暗号化する。装置Ａのキーチェーンマネージャ２０５はまた、装置Ａが装置Ｃと確立したセキュアな通信チャネルに基づく第２の異なるキー又はキーのセットを使用して、装置Ｃに送信すべきパスワード８０５の別のコピーを暗号化する。
【００８３】
例えば、いくつかの実施形態では、装置Ｃと装置Ａとの間のセキュアな通信チャネル及び装置Ｃと装置Ｂとの間のセキュアな通信チャネルは各々、ＯＴＲメッセージングを使用して実装される。いくつかのそのような実施形態では、装置Ｃ及び装置Ａの装置署名公開／秘密キーペアに基づいて、装置ＣとＡとの間にＯＴＲセッションが確立される。更に、装置Ｃ及び装置Ｂの装置署名公開／秘密キーペアに基づいて、装置Ｃと装置Ｂとの間に別の別個のＯＴＲセッションが確立される。いくつかの実施形態の装置署名キーペアは、図４〜図６を参照して上述したように、シンクサークルに装置Ａ〜Ｃを登録するために生成された同一のキーペアである。
【００８４】
装置Ｃのキーチェーンマネージャ２０５が、装置Ａについてのパスワード８０５のコピー及び装置Ｂについてのパスワード８０５の別のコピーを暗号化すると、装置Ｃは、（丸４において）パスワード８０５の暗号化されたコピー及びパスワード８０５について記述するメタデータをクラウドサービス３０５の記憶装置３２５に記憶する。パスワード８０５について記述するためのメタデータの例として、ある種のパスワード（インターネットパスワード、アプリケーションパスワード、ネットワークパスワード、など）、パスワードが関連する又はパスワードが使用されるアプリケーション又はウェブサイトの名前、アプリケーション又はウェブサイトのパスなどが挙げられる。
【００８５】
前述したように、いくつかの実施形態において、記憶装置３１０〜３３０はキー値ストアとして実装される。１つの受信側装置を対象とする送信側装置によってクラウドサービス３０５（例えば、記憶装置３２５）に記憶されたデータについてのいくつかの実施形態のキーは、第１及び第２の装置が属するシンクサークルの名前と送信側装置の識別子と受信側装置の識別子とのコンカチネーションである。いくつかの実施形態において、受信側装置は、キー値ペアの値が送信側装置により変更した時（例えば、値が追加された時、修正された時、削除された時など）、クラウドサービス３０５が（例えば、プッシュ通知サービスを介して）受信側装置に通知するように、このキー値ペアに登録する。
【００８６】
そのような手法では、クラウドサービス３０５が装置Ｃからパスワード８０５のコピー及び装置Ａについてのその対応するメタデータを受信した時、クラウドサービス３０５は、（丸５において）上述した様式で形成されたキーの値として、データを記憶装置３２５に記憶する。次いで、クラウドサービス３０５は、キーと関連付けられた値が変更したこと（例えば、この例では、データが追加されたこと）を（例えば、プッシュ通知サービスを介して）装置Ａに通知する。同様に、クラウドサービス３０５が装置Ｃからパスワード８０５のコピー及び装置Ｂについてのその対応するメタデータを受信した時、クラウドサービス３０５は、（丸５において）上述した様式で形成されたキーの値として、データを記憶装置３２５に記憶する。次いで、クラウドサービス３０５は、キーと関連付けられた値が変更したこと（例えば、この例では、データが追加されたこと）を（例えば、プッシュ通知サービスを介して）装置Ｂに通知する。図８には装置Ｂがオフラインとして示されているので、装置Ｂは、この例ではまだ通知を受信しない。
【００８７】
引き続き図８を参照すると、装置Ａがクラウドサービス３０５から通知を受信すると、装置Ａは、（丸６において）暗号化されたパスワード８０５のコピー及びメタデータをクラウドサービス３０５に記憶するために装置Ｃが使用したものと同一のキーを使用して、暗号化されたパスワード８０５のコピー及び関連するメタデータを取り出す。装置Ａがパスワードデータを取り出すと、装置Ａは、（丸８において）装置Ｃと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによってパスワード８０５のコピーを解読する。パスワード８０５のコピーを解読すると、装置Ａは、（丸８において）パスワード８０５のコピーを暗号化し、それを装置Ａの記憶装置２１０に記憶する。この時点で、装置Ｃはパスワード８０５を用いて更新され、したがって、装置Ａに記憶されたパスワードは、装置Ｃに記憶されたパスワードと同期される。
【００８８】
図９に示すように、装置Ｂはこの時オンラインである。装置Ｂがオンラインであることをクラウドサービス３０５が検出した場合、クラウドサービス３０５は、装置Ｃからデータを受信するためのキー値ペアと関連付けられた値が変更した（例えば、この例では、データが追加された）ことを示す通知を装置Ｂに送信する。
【００８９】
装置Ｂがクラウドサービス３０５から通知を受信すると、装置Ｂは、（丸９において）暗号化されたパスワード８０５のコピー及びメタデータをクラウドサービス３０５に記憶するために装置Ｃが使用したものと同一のキーを使用して、暗号化されたパスワード８０５のコピー及び関連するメタデータを取り出す。装置Ｂがパスワードデータを取り出した後、装置Ｂは、（丸１０において）装置Ｃと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによってパスワード８０５のコピーを解読する。
【００９０】
装置Ｂがパスワード８０５のコピーを解読した後、装置Ｂは、（丸１１において）パスワード８０５のコピーを暗号化し、それを装置Ｂの記憶装置２１０に記憶する。この時点で、装置Ｂはパスワード８０５を用いて更新され、したがって、装置Ｂに記憶されたパスワードは、装置Ｃに記憶されたパスワードと同期される。
【００９１】
図７〜図９に示した丸付き数字の順番に基づいて、特定の順で図７〜図９のデータフロー動作について記載してきたが、当業者には、丸付き数字は必ずしもデータフロー動作の順を表すとは限らないこと、及び、データフロー動作は多数の異なる順で行いうることが認識されよう。例えば、いくつかの実施形態において、図７に示した逐次的データフロー動作４〜６のセットと逐次的データフロー動作７〜９のセットとは互いに独立して行われる。同様に、図８及び図９に示した逐次的データフロー動作６〜８のセットと逐次的データフロー動作９〜１１のセットとは互いに独立して行われる
【００９２】
Ａ．キーチェーンデータ構造
上述のように、いくつかの実施形態において、キーチェーンは、パスワード、秘密キー、証明書、セキュアノートなどを含み得る定義済みのデータ集合である。いくつかの実施形態において、キーチェーンマネージャは、キーチェーンを表すデータ構造を生成し、記憶する。図１０は、いくつかの実施形態のキーチェーンマネージャによって記憶されるキーチェーンのデータ構造１００５を概念的に示す。図示のとおり、データ構造１００５は、キーチェーンＩＤ  １０１０と、キーチェーンアイテム１〜Ｎと、アクセスデータ１０１５とを含む。キーチェーンＩＤ  １０１０は、キーチェーン１００５に対する一意の識別子である。アクセスデータ１０１５は、キーチェーン１００５自体へのアクセス（例えば、どのアプリケーションがキーチェーン１００５にアクセスし得るか、及び／又は、キーチェーン１００５上でどの動作（例えば、読み取り、書き込み、削除など）が実行され得るか、など）を制御するためのものであり、以下に記載するアクセスデータ１０３５の構造と同様である。
【００９３】
いくつかの実施形態のキーチェーンアイテムは、個別の１つのデータ（例えば、パスワード、キー、証明書など）を表す。図１０に示すように、キーチェーンアイテム１０２０は、キーチェーン１００５のキーチェーンアイテム１を表す。キーチェーンアイテム１０２０は、キーチェーンアイテムＩＤ  １０２５と、データ１０３０と、属性１〜Ｍと、アクセスデータ１０３５（アクセスオブジェクトとも称される）とを含む。キーチェーンアイテムＩＤ  １０２５は、キーチェーンアイテム１０２０に対する一意の識別子である。
【００９４】
データ１０３０は、キーチェーンアイテム１０２０の実際の１つのデータ値及び／又は複数のデータ値である。例えば、キーチェーン１０２０がパスワードを表す場合、データ１０３０は、パスワードの値（例えば、英数字の文字列）を記憶する。いくつかの実施形態において、キーチェーンマネージャは、キーチェーンマネージャがデータを記憶する時に、ある特定のタイプのキーチェーンアイテムのデータ（例えば、パスワード、秘密キーなど）を暗号化する。他のタイプのキーチェーンアイテムのデータ（例えば、証明書）の場合、キーチェーンマネージャは、データを暗号化することなく、単純にデータを記憶する。
【００９５】
キーチェーンアイテム１０２０の属性１〜Ｍは、キーチェーンアイテム１０２０について記述するメタデータを記憶するためのものである。異なるタイプのキーチェーンアイテムは、属性の異なるセットを有する。例えば、インターネットパスワードは、セキュリティドメイン、プロトコルタイプ（例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）、ファイル転送プロトコル（ＦＴＰ）など）、パス（例えば、インターネットリソースのユニフォームリソースロケータ（ＵＲＬ））などのような属性を含む属性を有する。
【００９６】
いくつかの実施形態における各キーチェーンアイテムは、キーチェーンアイテムに対する直近の修正の日時（タイムスタンプとも称される）を示す日付フィールド属性を含む。いくつかの実施形態において、各キーチェーンアイテムはまた、そのキーチェーンアイテムが削除されたキーチェーンアイテム（トゥームストンとも称される）であることを明示するための属性を含む。キーチェーンアイテムがトゥームストンであることを属性が明示した場合、キーチェーンマネージャは、キーチェーンアイテムの日付フィールドを維持するが、キーチェーンマネージャは、キーチェーンアイテムのデータ１０３０の値をヌル又は空に設定する。いくつかの実施形態において、競合しているキーチェーンアイテムの解決から得られたキーチェーンアイテムは、（１）キーチェーンアイテムが競合解決の結果であることを示すフラグ、（２）競合を解決するために使用された競合リゾルバのバージョン番号、及び（３）キーチェーンアイテムが解決された競合していたキーチェーンアイテム（親キーチェーンアイテムとも称される）を含む属性のセットを含む。いくつかの実施形態において、属性のセットは、キーチェーンアイテムの競合解決メタデータと称される。
【００９７】
いくつかの実施形態において、キーチェーンアイテムの属性又は属性のサブセットは、キーチェーンアイテムを一意に識別するためのプライマリキーとして使用される。即ち、同一のプライマリキーをもつ２つのキーチェーンアイテムは、（キーチェーンアイテムのデータの値が同じであるかにかかわらず）同一のキーチェーンアイテムとみなされる。
【００９８】
アクセスデータ１０３５は、キーチェーンアイテム１０２０へのアクセスを制御するためのものである。図示のように、アクセスデータ１０３５は、キーチェーンアイテム１０２０へのアクセスを制御するためのアクセス制御リスト（ＡＣＬ）エントリ１〜Ｋを含む。図１０は、アクセスデータ１０３５のＡＣＬエントリ１を表すＡＣＬエントリ１０４０を示す。ＡＣＬエントリ１０４０は、キーチェーンアイテム１０２０上で実行することができる動作（例えば、読み取り、書き込み、削除、解読、認証など）を指定する認証タグ１０４５を含む。この例では、認証タグ１０４５は、認証タグ１〜Ｈを含む。
【００９９】
更に、ＡＣＬエントリ１０４０は、信頼済みアプリケーションのリスト１０５０を含む。図示のとおり、信頼済みアプリケーションのリスト１０５０は、アプリケーションＩＤ  １〜Ｊを含む。各アプリケーションＩＤは、ユーザ認証なしに認証タグ１０４５によって指定された動作を実行し得る特定のアプリケーションを識別するための一意の識別子である。
【０１００】
キーチェーンデータ構造１０５０は、キーチェーンについての必要な情報を記憶するためにキーチェーンマネージャが使用し得る１つの可能なデータ構造に過ぎないことが、当業者には認識されるであろう。例えば、異なる実施形態は、より多いか又はより少ない情報を記憶したり、異なる順で情報を記憶したりし得る。
【０１０１】
Ｂ．キーチェーンアイテムの同期
前述したように、いくつかの実施形態のシンクサークルの装置は、キーチェーンの個別のキーチェーンアイテムを同期させることによって、装置間でキーチェーンを同期させる。図１１は、いくつかの実施形態の、キーチェーンマネージャの様々な状態及びこれらの状態間での遷移について説明する状態図１１００を概念的に示す。当業者には、いくつかの実施形態では、キーチェーンマネージャは、全ての異なるタイプの入力イベントに関係する多くの異なる状態を有し、状態図１１００は特に、これらのイベントのサブセットに焦点を当てていることが認識されよう。詳細には、状態図１１００は、シンクサークルのメンバーである装置との同期パスワードのための入力イベント及び関係する状態について説明している。図１１について説明する場合、キーチェーンマネージャが動作している装置をローカル装置と称する。
【０１０２】
キーチェーンマネージャがキーチェーンを同期させるためのいかなるイベントも処理していない時、キーチェーンマネージャは定常状態１１０５である。状態１１０５において、キーチェーンマネージャは、キーチェーンの同期と関係がない他の動作を実行し得る。例えば、キーチェーンマネージャは、シンクサークルに加入するための要求を容認する、拒否する及び／又はそれに肯定応答するための登録動作を実行し得る。
【０１０３】
シンクサークルのピア装置からマニフェストダイジェクトを受信すると、キーチェーンマネージャは、マニフェストダイジェクト要求を処理するために状態１１１０に遷移する。いくつかの実施形態において、マニフェストダイジェクトは、ピア装置の現在のキーチェーンアイテムのリストである。いくつかの実施形態のキーチェーンマネージャは、シンクサークルの各ピア装置についてのマニフェストの履歴を記憶している。
【０１０４】
状態１１１０において、キーチェーンマネージャは、ピア装置についてのローカル装置の履歴のうち直近のマニフェストをピア装置から受信したマニフェストダイジェクトと比較することによって、マニフェストダイジェクトに対する応答を生成する。これらのマニフェストが一致し、ローカル装置が、ピア装置のマニフェストダイジェクト中のキーチェーンアイテムと同一のキーチェーンアイテムを有する場合、キーチェーンマネージャは、ローカル装置がピア装置と同期していることを示すメッセージを生成する。
【０１０５】
ピア装置についてのローカル装置の履歴のうち直近のマニフェストは、ピア装置マニフェストから受信したマニフェストダイジェクトと一致するが、ローカル装置が、ピア装置のマニフェストダイジェクト中のキーチェーンアイテムと比較して異なるキーチェーンアイテムのセットを有する場合、キーチェーンマネージャは、デルタマニフェストを含むメッセージを生成する。いくつかの実施形態において、デルタマニフェストは、（１）ローカル装置のキーチェーンアイテムとピア装置のマニフェストに列記されたキーチェーンアイテムとの差異のリスト、及び（２）リスト中の対応するキーチェーンアイテムについてのデータを含む。デルタマニフェストは、ピア装置のマニフェストダイジェクト中に含まれないキーチェーンアイテム、及び／又は同一である（例えば、同一のプライマリキーを有する）が、異なるデータ値を有するキーチェーンアイテムを含み得る。
【０１０６】
ピア装置についてのローカル装置の履歴のうち直近のマニフェストと、ピア装置から受信したマニフェストダイジェクトとが一致しない場合、キーチェーンマネージャは、ローカル装置の完全なマニフェストを含むメッセージを生成する。いくつかの実施形態における完全なマニフェストは、（１）ローカル装置の全てのキーチェーンアイテムのリスト、及び（２）リスト中の対応するキーチェーンアイテムについてのデータを含む。ピア装置からのマニフェストダイジェクトを処理すると、キーチェーンマネージャは、生成された応答をピア装置に送信し、定常状態１００５に遷移する。
【０１０７】
定常状態１１０５である間に、キーチェーンマネージャがローカルキーチェーンに対する変更を受信した場合、キーチェーンマネージャは、ローカルキーチェーンへの変更を処理するために状態１１１５に進む。状態１１１５において、キーチェーンマネージャは、その変更を用いてローカルキーチェーンを更新する。いくつかの実施形態において、キーチェーンは、シンクサークルのピア装置と同期するように規定されたキーチェーンアイテム及びシンクサークルのピア装置と同期しないキーチェーンアイテムを含み得る。ローカルキーチェーンに対する変更が、シンクサークルのピア装置と同期するように規定されたいずれのキーチェーンアイテムにも影響を与えない場合、キーチェーンマネージャは定常状態１１０５に戻る。そうでない場合、キーチェーンマネージャは、（１）シンクサークルのピア装置と同期するように規定されたキーチェーンアイテムと、（２）ローカルキーチェーンに対する変更により影響を受けるキーチェーンアイテムとを同期させるために、状態１１２０に遷移する。
【０１０８】
状態１１２０において、キーチェーンマネージャは、シンクサークルのピア装置の各々に、ローカル装置のキーチェーンに対する更新を送信する。いくつかの実施形態において、キーチェーンマネージャは、ピア装置に更新を送信するために、図１２を参照して以下に記載するプロセス１２００を実行する。キーチェーンマネージャがピア装置に更新を送信した後、キーチェーンマネージャは定常状態１１０５に戻る。
【０１０９】
キーチェーンマネージャが定常状態１１０５であり、シンクサークルのピア装置から完全なマニフェストを受信すると、キーチェーンマネージャは、完全なマニフェストを処理するために状態１１２５に遷移する。いくつかの実施形態において、キーチェーンマネージャは、（１）ローカル装置のキーチェーンアイテムとピア装置の完全なマニフェストに列記されたキーチェーンアイテムとの差異のリスト、及び（２）リスト中の対応するキーチェーンアイテムについてのデータとを含むデルタマニフェストを生成することによって、完全なマニフェストを処理する。デルタマニフェストが空である（即ち、ローカル装置が、ピア装置の完全なマニフェストに列記されたキーチェーンアイテムと同一のキーチェーンアイテムを有する）場合、キーチェーンマネージャは、その旨を示すメッセージをピア装置に送信し、次いで定常状態１１０５に戻る。デルタマニフェストが空でない場合、キーチェーンマネージャは、デルタマニフェストをピア装置に送信し、次いで定常状態１１０５に戻る。
【０１１０】
定常状態１１０５において、キーチェーンマネージャが、ローカル装置のキーチェーンを更新するために、ピア装置からデルタマニフェストを受信した場合、キーチェーンマネージャは、ピア装置からの更新をローカル装置のキーチェーンに適用するために状態１１３５に遷移する。いくつかの実施形態において、キーチェーンマネージャは、ピア装置からの更新をローカル装置のキーチェーンに適用するために、図１３を参照して以下に記載するプロセス１３００を実行する。キーチェーンマネージャが、ピア装置の更新をローカルキーチェーンに適用すると、キーチェーンマネージャは、ピア装置についてのローカル装置の履歴のうち直近のマニフェストに、ピア装置の更新を適用し、ピア装置のマニフェストについてのローカル装置の履歴のうち修正されたマニフェストを記憶する。キーチェーンマネージャは次いで、キーチェーンマネージャが記憶したばかりのマニフェストである、ピア装置についてのローカル装置の履歴のうち直近のマニフェストを、キーチェーンアイテムのローカル装置の現在のマニフェストと比較する。
【０１１１】
マニフェストは一致するが、ローカル装置が、ピア装置のマニフェストダイジェクト中のキーチェーンアイテムと比較して異なるキーチェーンアイテムのセットを有する場合、キーチェーンマネージャは、状態１１４０に遷移し、更新をシンクサークルのピア装置に送信するようにスケジュールする。そうでない場合、キーチェーンマネージャは、定常状態１１０５に戻る。
【０１１２】
状態１１４０において、キーチェーンマネージャは、処理対象のピア装置からのいずれかの更新が残っているかを確認する。残っている場合、キーチェーンマネージャは、ローカルキーチェーンを更新するために、ピア装置からのいずれかのデルタマニフェストの処理を継続するために状態１１３５に遷移する。処理対象のピア装置からの更新がない場合、キーチェーンマネージャは、スケジュールされた更新をシンクサークルのピア装置に送信するために、状態１１４０から状態１１４５に遷移する。いくつかの実施形態において、キーチェーンマネージャは、ピア装置に更新を送信するために、図１２を参照して以下に記載するプロセス１２００を実行する。キーチェーンマネージャがスケジュールされた更新を全てピア装置に送信すると、キーチェーンマネージャは定常状態１１０５に戻る。
【０１１３】
図１２は、ピア装置に更新をプッシュするためのいくつかの実施形態のプロセス１２００を概念的に示す。いくつかの実施形態において、本出願に記載するキーチェーンマネージャは、ローカル装置のローカルキーチェーンに適用された更新をシンクサークルのピア装置に送信するためのプロセス１２００を実行する。例えば、キーチェーンマネージャは、キーチェーンマネージャが図１１を参照して上述した状態１１２０及び状態１１４５である時にプロセス１２００を実行する。
【０１１４】
プロセス１２００は、（１２１０において）シンクサークルのピア装置を識別することにより開始する。いくつかの実施形態において、プロセス１２００が、同期装置リストのローカルコピーにアクセスすることによってピア装置を識別する一方で、他の実施形態では、プロセス１２００は、クラウドサービス３０５に（例えば、記憶装置３１０に）記憶された同期装置リストにアクセスすることによってピア装置を識別する。
【０１１５】
次に、プロセス１２００は、（１２２０において）ローカル装置のマニフェストがピア装置のマニフェストと一致するかを判定する。いくつかの実施形態において、プロセス１２００は、ピア装置についてのローカル装置の履歴のうち直近のマニフェストをピア装置のマニフェストとして使用する。プロセス１２００がマニフェストが一致したと判定した場合、プロセス１２００は１２６０に進む。そうでない場合、プロセス１２００は１２３０に進む。
【０１１６】
１２３０において、プロセス１２００は、ローカル装置及びピア装置のマニフェストに基づいてデルタマニフェストを生成する。上述したように、いくつかの実施形態におけるデルタマニフェストは、（１）ローカル装置のキーチェーンアイテムとピア装置のマニフェストに列記されたキーチェーンアイテムとの差異のリスト、及び（２）リスト中の対応するキーチェーンアイテムについてのデータとを含む。いくつかの実施形態において、プロセス１２００は、（１）ローカル装置のキーチェーン中のキーチェーンアイテムをピア装置のマニフェストに列記されたキーチェーンアイテムと比較し、（２）その差異を識別することによって、デルタマニフェストを生成する。
【０１１７】
プロセス１２００は次いで、（１２４０において）ピア装置についての暗号化キー又はキーのセットを使用して、デルタマニフェストにおいて指定されるローカルキーチェーンアイテムのコピーを暗号化する。前述したように、いくつかの実施形態では、シンクサークルの装置のあらゆるペアの間で、セキュアな通信チャネルが使用される。したがって、プロセス１２１０は、ピア装置と通信するために使用されるセキュアな通信チャネルについて確立されたキー又はキーのセットを識別し、識別されたキー又はキーのセットを使用して、ローカルキーチェーンアイテムのコピーを暗号化する。
【０１１８】
次に、プロセス１２００は、（１２５０において）暗号化されたキーチェーンアイテム及びデルタマニフェストを、セキュアな通信チャネルを介してピア装置に送信する。プロセス１２００がピア装置に情報を送信すると、プロセス１２００は次いで、（１２６０において）処理対象のシンクサークルのいずれかのピア装置が残っているかを判定する。プロセス１２００が、処理対象のピア装置が残っていると判定した場合、プロセス１２００は、ローカルキーチェーンに適用された更新のシンクサークルの残りのピア装置への送信を継続するために１２１０に戻る。プロセス１２００が処理対象のピア装置が残っていないと判定した場合、プロセス１２００は終了する。
【０１１９】
図１３は、ピア装置からの更新を処理するためのいくつかの実施形態のプロセスを概念的に示す図である。いくつかの実施形態において、本出願に記載したキーチェーンマネージャは、ピア装置からの更新をローカル装置のローカルキーチェーンに適用するために、プロセス１３００を実行する。例えば、キーチェーンマネージャは、キーチェーンマネージャが状態１１３５である場合に（例えば、キーチェーンマネージャが処理対象のピア装置からデルタマニフェストを受信した場合に）、図１１を参照して上述したプロセス１３００を実行する。
【０１２０】
プロセス１３００は、（１３１０において）ピア装置から受信したデルタマニフェストにおいて指定された更新されたキーチェーンアイテムを識別することにより開始する。次に、プロセス１３００は、（１３２０において）更新されたキーチェーンアイテムを解読する。上記のとおり、いくつかの実施形態では、シンクサークルの装置のあらゆるペアの間で、セキュアな通信チャネルが使用される。したがって、プロセス１３１０は、ピア装置と通信するために使用されるセキュアな通信チャネルについて確立されたキー又はキーのセットを識別し、識別されたキー又はキーのセットを使用して、更新されたキーチェーンアイテムを解読する。
【０１２１】
次いで、プロセス１３００は、（１３３０において）更新されたキーチェーンアイテムのプライマリキーを識別する。前述したように、いくつかの実施形態において、キーチェーンアイテムの属性又は属性のサブセットは、キーチェーンアイテムを一意に識別するためのプライマリキーとして使用される。
【０１２２】
次に、プロセス１３２０は、（１３４０において）ローカルキーチェーン中のキーチェーンアイテムが、更新されたキーチェーンアイテムのプライマリキーと同一のプライマリキーを有するかを判定する。プロセス１３００が、ローカルキーチェーンには更新されたキーチェーンアイテムのプライマリキーと同一のプライマリキーを有するキーチェーンアイテムがないと判定した場合、プロセス１３００は、（１３５０において）更新されたキーチェーンアイテムをローカルキーチェーンに適用する。いくつかの実施形態において、プロセス１３００は、更新されたキーチェーンをローカルキーチェーンに追加することによって、更新されたキーチェーンアイテムをローカルキーチェーンに適用する。
【０１２３】
プロセス１３００が、ローカルキーチェーンに更新済みのキーチェーンアイテムのプライマリキーと同一のプライマリキーを有するキーチェーンアイテムがないと判定した場合、プロセス１３００は、（１３６０において）更新されたアイテムとローカルキーチェーンアイテムとの間の競合を解決し、競合解決の結果をローカルキーチェーンに適用する。異なる実施形態のプロセス１３００は、競合しているキーチェーンアイテム間の競合を別様に解決する。１つのそのような手法について、図１５を参照して以下に記載する。
【０１２４】
Ｃ．キーチェーンアイテム競合の解決
キーチェーンアイテムを同期させる時、いくつかの実施形態のキーチェーンマネージャは、同一のキーチェーンアイテムの複数のバージョン間で競合を検出することがある。様々な実施形態において、キーチェーンマネージャは、様々な技術を使用してキーチェーンアイテム競合を解決する。例えば、いくつかの実施形態では、方法は、キーチェーンアイテムの直近のバージョンを、装置間での同期対象のキーチェーンアイテムとして使用する。いくつかの実施形態では、追加の及び／又は異なる手法が使用され得る。
【０１２５】
いくつかの実施形態において、装置は、（「競合リゾルバ」とも称される）それらの競合解決プロセスを更新し得る。いくつかの例における更新されたプロセス及び以前の未更新のプロセスは、どのキーチェーンアイテム値を使用すべきかを判定した時に異なる結果を提供する。いくつかの実施形態において、シンクサークルの１つ以上の装置が、更新された競合解決プロセスを使用することが可能である一方、同じシンクサークルの１つ以上の他の装置は、競合解決プロセスの以前のバージョンを使用している。図１４は、競合している競合リゾルバを解決するためのいくつかの実施形態のプロセス１４００を概念的に示す。いくつかの実施形態において、図１３を参照して上述したプロセス１３００は、動作１３６０を実行するためのプロセス１４００を実行する。
【０１２６】
プロセス１４００は、（１４１０において）競合しているキーチェーンアイテムの競合解決メタデータを識別することにより開始する。上記のとおり、いくつかの実施形態の競合解決メタデータは、（１）キーチェーンアイテムが競合解決の結果であることを示すフラグ、（２）競合を解決するために使用された競合リゾルバのバージョン番号、及び（３）キーチェーンアイテムが解決された、競合しているキーチェーンアイテム（親キーチェーンアイテムとも称される）を含む。
【０１２７】
次に、プロセス１４００は、（１４２０において）更新されたキーチェーンアイテムの競合リゾルバとローカルキーチェーンアイテムの競合リゾルバとが競合するかを判定する。いくつかの実施形態において、更新されたキーチェーンアイテムの競合リゾルバとローカルキーチェーンアイテムの競合リゾルバとは、（１）両方のキーチェーンアイテムが、キーチェーンアイテムが競合解決の結果であったことを示すフラグを含む時、（２）更新されたキーチェーンアイテム及びローカルキーチェーンアイテムが、更新されたキーチェーンアイテムの親キーチェーンアイテムとして指定された時、並びに（３）更新されたキーチェーンアイテムを解決するために使用される競合リゾルバのバージョン番号が、ローカル装置の競合リゾルバのバージョン番号と同じでない時に競合する。
【０１２８】
プロセス１４００が、競合リゾルバが競合しないと判定した場合、プロセス１４００は、（１４３０において）ローカル装置の競合リゾルバとのキーチェーンアイテム競合を解決し、次いで、プロセス１４００が終了する。プロセス１４００が、競合リゾルバが競合していると判定した場合、プロセス１４００は、（１４５０において）ローカル装置の競合リゾルバを使用するべきかを判定する。ローカル競合リゾルバのバージョン番号が、更新されたキーチェーンアイテムを解決するために使用される競合リゾルバのバージョン番号よりも大きい場合、プロセス１４００は、（１４３０において）ローカル装置の競合リゾルバを用いてキーチェーンアイテム競合を解決する。そうでない場合、プロセス１４００は、（１４３０において）更新されたキーチェーンアイテムを、キーチェーンアイテム競合に対する解決策として使用する。次いで、プロセス１４００が終了する。
【０１２９】
図１５は、キーチェーンアイテム競合を解決するためのいくつかの実施形態のプロセス１５００を概念的に示す。いくつかの実施形態において、図１４を参照して上述したプロセス１４００は、動作１４６０を実装するためのプロセス１５００を実行する。
【０１３０】
プロセス１５００は、（１５１０において）競合している更新されたキーチェーンアイテムとローカルキーチェーンアイテムとのタイムスタンプを識別することにより開始する。上記のとおり、いくつかの実施形態におけるキーチェーンアイテムのデータ構造は、キーチェーンアイテムに対する直近の修正の日時を示す日付フィールドを含む。いくつかの実施形態において、プロセス１５００は、各キーチェーンアイテムの日付フィールド属性にアクセスすることによって、タイムスタンプを識別する。
【０１３１】
次に、プロセス１５００は、（１５２０において）更新済みキーチェーンアイテムのタイムスタンプがより新しいかを判定する。プロセス１５００が、更新されたキーチェーンアイテムのタイムスタンプがより新しいと判定した場合、プロセス１５００は、（１５４０において）更新されたキーチェーンアイテムを用いてローカルキーチェーンアイテムを更新し、次いで、プロセス１５００が終了する。プロセス１５００が、更新されたキーチェーンアイテムのタイムスタンプがより新しくないと判定した場合、プロセス１５００は、（１５３０において）キーチェーンアイテムを用いてローカルキーチェーンアイテムを更新し、次いで、プロセス１５００が終了する。
【０１３２】
ＩＶ．キーチェーンに対するデータ保護ドメインの使用
本発明のいくつかの実施形態は、条件及び／又は要件の定義済みセットに従って、装置上のキーチェーンデータ（例えば、キーチェーンアイテム）へのアクセスを制限するためのデータ保護機能を提供する。いくつかの実施形態において、いくつかの異なる保護ドメイン（「データ保護クラス」とも称される）が定義され、装置上の各キーチェーンアイテムは、定義された保護ドメインのうちの１つに属する。各保護ドメインは、条件セットと関連付けられる。特定のデータ保護ドメインについての条件セットが満たされた場合、その特定の保護ドメインに属する装置のキーチェーンアイテムは、装置による使用について利用可能になる。
【０１３３】
Ａ．データ保護ドメイン
図１６は、様々な装置における様々なキーチェーンアイテムを概念的に示す。詳細には、この図は、異なる保護ドメインに属するキーチェーンアイテムは、異なる保護ドメインについて装置が満たす条件に従って、利用可能になることを示す。この図は、ソース装置１６０５及びソース装置１６１０、行先装置１６１５〜１６３５、並びにキーチェーンアイテムＳ１〜Ｓ３及びＣ４〜Ｃ５を示す。
【０１３４】
いくつかの実施形態において、保護ドメインは、あらかじめ定義され、装置のためのオペレーティングシステム（例えば、ｉＯＳ（商標）、Ｗｉｎｄｏｗｓ（登録商標）など）の一部として装置に提供される。これらのオペレーティングシステムによって管理される装置は、保護ドメインと関連付けられた条件が満たされた後にのみ装置中のキーチェーンアイテムを利用可能にすることによって、保護ドメインを利用してキーチェーンアイテムを保護することができる。これらのあらかじめ定義された保護ドメインは、本特許出願ではシステム保護ドメインと称される。
【０１３５】
いくつかの実施形態において、保護ドメインは、装置のユーザ又は装置上で動作するアプリケーションの開発者によってカスタム定義され得る。これらの実施形態では、装置又はオペレーティングシステムの製造業者は、ユーザが、保護ドメインについて異なる条件セットを定義することによって、カスタム定義保護ドメインを定義することができるように、ツールをユーザに提供する。また、装置又はオペレーティングシステムの製造業者は、開発者が書き込むアプリケーションを装置で動作させるために、保護ドメインについて異なる条件セットを定義することによって、開発者がカスタム定義保護ドメインを定義することができるように、ソフトウェア開発キット（ＳＤＫ）を開発者に提供する。
【０１３６】
上述のように、異なる保護ドメインは、条件又は要件の異なるセットと関連付けられる。いくつかの実施形態において、保護ドメインは、ある特定のキーチェーンアイテムに更なるセキュリティレベルを提供するように定義され得る。即ち、第１の保護ドメインの条件は、装置が、第１の保護ドメインの条件の上に第２の保護ドメインの追加の条件を満たした場合にのみ、第２の保護ドメインに属するキーチェーンアイテムを装置が利用可能になるような第２の保護ドメインの条件のサブセットである。例えば、第１の保護ドメインの条件は、装置がブートされ、動作していることを含み、第２の保護ドメインの条件は、装置がアンロックされ、並びに、ブートされ、動作していることを含む。
【０１３７】
いくつかの実施形態において、保護ドメインは、重複することも又は重複しないこともある異なる条件セットを有するように定義され得る。例えば、第１の保護ドメインの条件は、装置のアンロック後の追加認証（例えば、追加のパスワード）を含み得る。第２の保護ドメインの条件は、装置における特定のアプリケーションの存在を含み得る。第１及び第２の保護のこれらの条件は重複しない。
【０１３８】
この例におけるソース装置１６０５は、更新されたキーチェーンアイテムＳ１〜Ｓ３を、行先装置１６１５〜１６２５にプッシュする装置である。図示のとおり、装置１６０５のキーチェーンアイテムＳ１〜Ｓ３は、保護ドメイン１〜３にそれぞれ属する。この例における保護ドメイン１〜３は、システム保護ドメインである。保護ドメイン１〜３は、異なるセキュリティレベルをキーチェーンアイテムに提供する。この例では、保護ドメイン３の条件は、保護ドメイン２の条件のサブセットであり、保護ドメイン２の条件は、保護ドメイン１の条件のサブセットである。
【０１３９】
この例における装置１６１５〜１６２５は、異なる条件セットを満たす。詳細には、装置１６２５は、保護ドメイン３の全ての条件を満たす。装置１６２０は、保護ドメイン２の全ての条件を満たす。装置１６１５は、保護ドメイン１の全ての条件を満たす。その結果、キーチェーンアイテムＳ３は、装置１６２５の使用について利用可能であるが、キーチェーンアイテムＳ１及びキーチェーンアイテムＳ２は利用可能ではない。これらのキーチェーンアイテムは、アイテムが利用不能であることを示す点線の平行四辺形として示される。キーチェーンアイテムＳ２及びキーチェーンアイテムＳ３は、装置１６２０の使用について利用可能であるが、キーチェーンアイテムＳ１は利用可能ではない。３つのキーチェーンアイテムＳ１〜Ｓ３は全て、装置１６１５の使用について利用可能である。
【０１４０】
異なる実施形態は、装置の使用についてキーチェーンアイテムを利用不能であるままにする異なる方法を採用する。例えば、いくつかの実施形態の装置のキーチェーンマネージャは、キーチェーンアイテムを解読せず、それによって、キーチェーンアイテムが属する保護ドメインについての全ての条件を装置が満たさない場合、キーチェーンアイテムが利用不能になる。代替的に又は連携させて、くつかの実施形態のキーチェーンマネージャは、キーチェーンアイテムが属する保護ドメインについての条件を装置が満たすまで、装置中で動作しているアプリケーションによる、キーチェーンアイテムのアクセスを不可能にする。いくつかの実施形態において、行先装置のキーチェーンマネージャは、プッシュされた時に、キーチェーンアイテムが属する保護ドメインの条件を行先装置が満たさない限り、ソース装置からプッシュされたキーチェーンアイテム受け入れない。
【０１４１】
この例におけるソース装置１６１０は、更新されたキーチェーンアイテムＣ４及びＣ５を、行先装置１６３０〜１６３５にプッシュする装置である。図示のとおり、装置１６１０のキーチェーンアイテムＣ４及びＣ５は、保護ドメイン４及び保護ドメイン５にそれぞれ属する。保護ドメイン４及び保護ドメイン５は、異なる条件セットを有するカスタム定義保護ドメインである。この例では、保護ドメイン４の条件は、保護ドメイン５の条件と重複しない。
【０１４２】
この例における装置１６３０は、保護ドメイン４の全ての条件を満たすが、保護ドメイン５の全ての条件を満たすわけではなく、装置１６３５は、保護ドメイン５の全ての条件を満たすが、保護ドメイン４の全ての条件を満たすわけではない。その結果、キーチェーンアイテムＣ４は、装置１６３０の使用について利用可能であるが、キーチェーンアイテムＣ５は利用可能ではない。キーチェーンアイテムＣ５は、装置１６３５の使用について利用可能であるが、キーチェーンアイテムＣ４は利用可能ではない。
【０１４３】
当業者には、いくつかの実施形態の保護ドメインの使用は、キーチェーンアイテムを保護することには限定されないことが認識されよう。任意のタイプのデータは、異なるセキュリティレベルを受けるために異なる保護ドメインに属するように定義され得る。例えば、いくつかの実施形態の第１の装置中の更新された文書は第２の装置にプッシュされ得るが、その文書は、文書が属する保護ドメインの全ての条件を第２の装置が満たすまで、第２の装置の使用について利用不能なままである。
【０１４４】
図１７は、キーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセス１７００を概念的に示す。いくつかの実施形態において、プロセス１７００は、１つ以上のソース装置がキーチェーンアイテムをプッシュした行先装置により実行される。詳細には、これらの実施形態において、行先装置のキーチェーンマネージャが、プロセス１７００を実行し得る。いくつかの実施形態の行先装置は、ソース装置からのキーチェーンアイテムを処理キューに蓄積する。例示的な処理キューについて、図１８を参照して以下に更に詳述する。プロセス１７００は、いくつかの実施形態において、行先装置がブートされ、ソース装置から１つ以上のキーチェーンアイテムを受信した時に開始する。
【０１４５】
プロセス１７００は、（１７１０において）処理キューからキーチェーンアイテムを取り出すことにより開始する。いくつかの実施形態において、処理キューは、ソース装置からプッシュされたキーチェーンアイテムを保持するためのストレージ構造（例えば、ファイルシステム）である。いくつかの実施形態において、ソース装置は、行先装置があらかじめ発行した行先装置の公開キーを使用して、キーチェーンアイテム中のデータ（例えば、パスワード）を暗号化する。これらの実施形態では、キーチェーンアイテムは、暗号化され、処理キューに記憶される。
【０１４６】
行先装置は、対応する秘密キー（即ち、ソース装置がキーチェーンアイテムを暗号化するために使用した公開キーを含む公開／秘密キーペアの秘密キー）を使用してキーチェーンアイテムを解読する。いくつかの実施形態において、行先装置は、装置がサポートする保護ドメインの各々について公開／秘密キーペアを生成する。図２５及び図２６を参照して、異なる保護ドメインのキーペアに関して、以下に更に詳細に記載する。
【０１４７】
次いで、プロセス１７００は、（１７２０において）取り出されたキーチェーンアイテムの保護ドメインを識別する。また、いくつかの実施形態におけるキーチェーンアイテムは、キーチェーンアイテムが属する保護ドメインを識別するための識別子を含むか、又はそれと関連付けられる。いくつかの実施形態において、キーチェーンアイテム中のデータを暗号化するためにソース装置が使用した公開キーは、保護ドメイン識別子として機能する。プロセス１７００は、取り出されたキーチェーンアイテムが属する保護ドメインを識別するために、キーチェーンアイテムの保護ドメイン識別子を読み取る。
【０１４８】
次に、プロセス１７００は、（１７３０において）識別された保護ドメインが利用可能であるかを判定する。即ち、プロセス１７００は、識別された保護ドメインの全ての条件を行先装置が満たしているかを判定する。いくつかの実施形態において、行先装置は、装置のオペレーティングシステムの一部として条件の定義を取得する。代替的に又は連携させて、いくつかの実施形態の行先装置は、行先装置及びソース装置が行先装置とソース装置とを含むシンクサークルを確立した場合に条件の定義を取得することができる。
【０１４９】
プロセス１７００が、（１７３０において）識別された保護ドメインの全ての条件が満たされたわけではないと判定した場合、プロセス１７００は、（１７４０において）このキーチェーンアイテムが属する保護ドメインの条件が満たされるのを待つことができるようにキーチェーンアイテムをキューに再び蓄積することによって、キーチェーンアイテムは、処理キューにキーチェーンアイテムに戻す。プロセス１７００は、以下に更に記載するステップ１７６０に進む。
【０１５０】
プロセス１７００が、（１７３０において）識別された保護ドメインの全ての条件が満たされていると判定した場合、プロセス１７００は、（１７５０において）キーチェーンアイテムを処理する。１７５０において、いくつかの実施形態のプロセス１７００は、キーチェーンアイテムの同期を開始することによって、キーチェーンアイテムを処理する。いくつかの実施形態において、プロセス１７００は、識別された保護ドメインについての行先装置の秘密キーを使用して、キーチェーンアイテムを解読する。
【０１５１】
次に、プロセス１７００は、（１７６０において）処理キューに、依然として処理対象である他のキーチェーンアイテムがあるかを判定する。プロセス１７００が、処理キューに他のキーチェーンアイテムがあると判定した場合、プロセス１７００は、別のキーチェーンアイテムを取り出すために１７１０にループバックする。そうではない場合、プロセス１７００は終了する。
【０１５２】
図１８は、着信キーチェーンアイテムを蓄積するための処理キューを概念的に示す。詳細には、この図は、いくつかの実施形態の処理キューが、異なる保護ドメインと関連付けられたバケットのセットであることを示している。この図には、ソース装置１８０５と、行先装置１８１０と、処理キュー１８１５とが示されている。
【０１５３】
ソース装置１８０５は、１つ以上のキーチェーンアイテムを更新し、キーチェーンアイテムを行先装置１８１０にプッシュする。いくつかの実施形態において、ソース装置１８０５が送信するキーチェーンアイテム１８４０は、ソース装置１８０５がキーチェーンアイテム１８４０に沿って送信する保護ドメイン識別子１８３５と関連付けられる。いくつかの実施形態において、ソース装置１８０５は、行先装置１８４０がサポートする各保護ドメインについて行先装置１８４０があらかじめ発行した行先装置１８４０の公開キー（図示せず）を用いて、キーチェーンアイテム１８４０を暗号化する。これらの実施形態のうちのいくかにおいて、キーチェーンアイテムを暗号化するために使用される公開キーは、保護ドメイン識別子として機能し得る。
【０１５４】
キーチェーンアイテムを蓄積するために行先装置１８１０が使用する処理キュー１８１５は、バケット１８２０〜１８３０を有する。バケットの各々は、図示のとおり、保護ドメインと関連付けられる。行先装置１８１０は、保護ドメイン識別子により識別された保護ドメインに基づいて、処理キュー１８１５のバケット１８２０〜１８３０のうちの１つにキーチェーンアイテムを蓄積する。いくつかの実施形態において、行先装置１８１０はまた、各キーチェーンアイテムと関連付けられた保護ドメイン識別子を蓄積する。他の実施形態では、行先装置１８１０は、行先装置１８１０が処理キュー１８１５にキーチェーンアイテムを蓄積するので、キーチェーンアイテムから識別子を分離する。図示のとおり、保護ドメイン識別子なしに装置１８１０が蓄積した、バケット１８２０は、３つのキーチェーンアイテム１８４５〜１８５５を有し、バケット１８２０は、１つのキーチェーンアイテム１８６０を有し、バケット１８３０は、２つのキーチェーンアイテム１８６５及びキーチェーンアイテム１８７０を有する。
【０１５５】
いくつかの実施形態において、キーチェーンアイテムが処理キュー１８１５にある時には、キーチェーンアイテムは、装置１８１０の使用について利用不能である。キーチェーンアイテムは、装置１８１０がキーチェーンアイテムを利用不能であることを示す点線の楕円で示される。
【０１５６】
いくつかの実施形態において、行先装置１８１０は、キーチェーンアイテムを、行先装置１８１０にプッシュされたキーチェーンアイテムに署名するためにソース装置１８０５が使用する公開キーの相対する秘密キーである秘密キーと関連付ける。行先装置１８１０は、キーチェーンアイテムと共に秘密キーを処理キューに蓄積し、それにより、秘密キーは、装置１８１０の使用について利用不能になる。
【０１５７】
いくつかの実施形態において、行先装置１８１０は、保護ドメインに関連付けられた他のキーを使用して秘密キーを暗号化することによって、処理キューに記憶された秘密キーを利用不能にする。これらの実施形態では、処理キューに記憶された秘密キーは、装置が保護ドメインの条件を満たした場合にのみ、それらの他のキーを用いて解読され得る。次いで、キーチェーンアイテムは、解読された秘密キーを用いて解読することができ、それにより、装置の使用について利用可能になる。秘密キーを暗号化するために使用される他のキーは、本特許出願では、ローカルドメイン保護キーと称される。
【０１５８】
装置１８１０が、特定のバケットと関連付けられた保護ドメインについて定義された全ての条件を満たす場合、行先装置１８１０は、ローカルドメイン保護キーを用いて秘密キーを解読し、次いで、解読された秘密キーを用いてキーチェーンを解読することによって、特定のバケットからキーチェーンアイテムを取り出すことができる。次いで、行先装置１８１０は、解読されたキーチェーンアイテムを処理する。いくつかの実施形態において、装置１８１０は、受信したキーチェーンアイテムを装置１８１０が既に有しているキーチェーンアイテム（図示せず）と同期させるために同期プロセスを開始する。
【０１５９】
行先装置１８１０が、ソース装置１８０５からキーチェーンアイテムを受信する一方で、行先装置１８１０が、キーチェーンアイテムが属する保護ドメインの条件を満たしている場合、行先装置１８１０は、保護ドメインについての秘密キーを暗号化する必要がないことを留意されたい。したがって、行先装置１８１０は、キーチェーンアイテムを処理キュー１８１５に蓄積することなく、秘密キーを用いてキーチェーンアイテムを解読することができる。
【０１６０】
図１９は、ソース装置から受信したキーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセス１９００を概念的に示す。いくつかの実施形態において、ソース装置は、トランザクション当たり１つのキーチェーンアイテムをプッシュするのではなく、単一のトランザクション（例えば、単一のメッセージ）においてキーチェーンアイテムのグループをプッシュする。いくつかの場合には、グループのキーチェーンアイテムは、行先装置によりキーチェーンアイテムが一緒に処理されるような関係である。いくつかの実施形態において、プロセス１９００は、グループのキーチェーンアイテムを受信し、グループのキーチェーンアイテムを一緒に処理する行先装置によって実行される。詳細には、これらの実施形態において、行先装置のキーチェーンマネージャが、プロセス１９００を実行し得る。いくつかの実施形態の行先装置は、ソース装置からのキーチェーンアイテムのグループを処理キューに蓄積する。プロセス１９００は、いくつかの実施形態において、行先装置がブートされ、ソース装置から１つ以上のキーチェーンアイテムの１つ以上のグループを受信した時に開始する。
【０１６１】
プロセス１９００は、（１９１０において）ソース装置からプッシュされたキーチェーンアイテムのグループを保持するためのストレージ構造（例えば、ファイルシステム）である処理キューから、キーチェーンアイテムのグループを取り出すことにより開始する。いくつかの実施形態において、ソース装置は、キーチェーンアイテムが属する保護ドメインに対して行先装置の公開キーを使用することによって、処理キューに記憶されたグループの各キーチェーンアイテム中のデータを暗号化する。行先装置は、対応する秘密キーを使用して、グループのキーチェーンアイテムを解読する。次いで、プロセス１９００は、（１９２０において）取り出されたキーチェーンアイテムのグループの各キーチェーンアイテムの保護ドメインを識別する。
【０１６２】
次に、プロセス１９００は、（１９３０において）取り出されたグループについての識別された保護ドメインが全て利用可能であるかを判定する。即ち、プロセス１９００は、識別された保護ドメインの各々の全ての条件を行先装置が満たしたかを判定する。いくつかの実施形態のプロセス１９００は、グループの識別された保護ドメインの各々に対して反復して調べる。
【０１６３】
（１９３０において）識別された保護ドメインのいずれかについての保護ドメインの全ての条件が満たされているわけではないとプロセス１９００が判定した場合、プロセス１９００は、（１９４０において）キーチェーンアイテムのグループをキューに再び蓄積することによって、キーチェーンアイテムのグループを処理キューに戻す。プロセス１９００は、以下に更に記載するステップ１９６０に進む。
【０１６４】
プロセス１９００が、（１９３０において）あらゆる識別された保護ドメインの全ての条件が満たされていると判定した場合、プロセス１９００は、（１９５０において）キーチェーンアイテムを処理する。１９５０において、いくつかの実施形態のプロセス１９００は、同期プロセスを開始することによって、キーチェーンアイテムを処理する。いくつかの実施形態において、プロセス１９００は、識別された保護ドメインについての行先装置の秘密キーを使用して、キーチェーンアイテムを解読する。
【０１６５】
次に、プロセス１９００は、（１９６０において）処理キューに、依然として処理対象であるキーチェーンアイテムの他のグループがあるかを判定する。プロセス１９００が、処理キューに他のキーチェーンアイテムのグループがあると判定した場合、プロセス１９００は、キーチェーンアイテムの別のグループを取り出すために１９１０にループバックする。そうではない場合、プロセス１９００は終了する。
【０１６６】
Ｂ．使用事例
図２０は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、装置をアンロックすることを必要とする保護ドメインにより保護されたキーチェーンアイテムを示す。詳細には、この図は、６つの異なる段階２００１〜２００６における、ソース装置２０１０により更新され、行先装置２０１５にプッシュされるキーチェーンアイテム２０２０の処理を示す。この図はまた、キーチェーンアイテム２０２０と同期すべき、対応するキーチェーンアイテムであるキーチェーンアイテム２０２５の処理を示す。
【０１６７】
キーチェーンアイテム２０２０及びキーチェーンアイテム２０２５が属する保護ドメインは、キーチェーンアイテム２０２０及びキーチェーンアイテム２０２５を行先装置２０１５において利用可能にするために、行先装置２０１５をアンロックすることを必要とする。本特許出願において、装置を「アンロック」するとは、装置のスクリーンへの任意の入力を行うためにスクリーンをアンロックすることを意味するものではない。そうではなく、装置をアンロックするとは、ユーザが装置を使用することを認証したことを意味する。異なる実施形態の装置は、様々な認証メカニズムを提供する。例えば、いくつかの実施形態の装置は、ユーザに、装置をアンロックするためにパスコード（例えば、４桁のパスコード）を提供するように要求する。他の実施形態は、代替的に又は連携させて、冗長なパスワード、網膜スキャン、指紋スキャン、音声認識などを用いてユーザが装置をアンロックすることを可能にする。
【０１６８】
第１の段階２００１は、ソース装置２０１０のキーチェーンアイテム２０２０と、行先装置２０１５のキーチェーンアイテム２０２５とがそれぞれ同期していることを示す。この段階において、行先装置２０１５はロック状態である。行先装置２０１５は、装置２０１５が、装置のブート以後に、装置２０１５のユーザによってまだアンロックされていないので、あるいは、装置２０１５が、アイドル時間の期間の経過後にアンロック状態からロック状態へと自動的に進んだので、ロック状態である。図示のとおり、キーチェーンアイテム２０２０とキーチェーンアイテム２０２５は共にデータ１を含むが、行先装置２０１５のキーチェーンアイテム２０２５は、行先装置２０１５がロック状態であるので、キーチェーンアイテム２０２５が利用不能であることを示す点線の平行四辺形で示されている。この例では、行先２０１５は、キーチェーンアイテム２０２５が属する保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム２０２５を暗号化することによって、キーチェーンアイテム２０２５を利用不能にする。
【０１６９】
第２の段階２００２は、ソース装置２０１０のキーチェーンアイテム２０２０がデータ１からデータ２に更新されたことを示す。例えば、キーチェーンアイテム２０２０は、ソース装置２０１０中で動作しているアプリケーションが必要とする、リモートサーバにアクセスするためのパスワードを含み、ソース装置２０１０のユーザはパスワードを変更した。この段階において、キーチェーンアイテム２０２５は、行先装置２０１５が依然としてロック状態なので、行先装置２０２５において利用不能なままである。
【０１７０】
次の段階２００３は、ソース装置２０１０が、キーチェーンアイテム２０２０と行先装置２０１５の対応するキーチェーンアイテム２０２５とを同期させるために、キーチェーンアイテム２０２０を行先装置２０１５にプッシュしたことを示す。この例では、ソース装置２０１０は、キーチェーンアイテム２０２０を行先装置２０１５にプッシュする前に、保護ドメインについての行先装置２０１５の公開キーを用いてキーチェーンアイテム２０２０を暗号化する。行先装置２０１５は、キーチェーンアイテム２０２０を受信するが、キーチェーンアイテム２０２０は、行先装置がロック状態であり、したがって、保護ドメインについての対応する秘密キーを用いてキーチェーンアイテム２０２０を解読しなかったので、この段階では利用不能である。この例では、行先装置２０１５が、キーチェーンアイテム２０２５を暗号化するために使用されるローカル保護ドメインキーを用いて秘密キーを暗号化したので、秘密キーもまた利用不能であった。行先装置２０１５がロック状態であり、したがって、ローカル保護ドメインキーを用いてキーチェーンアイテム２０２５を解読しなかったので、キーチェーンアイテム２０２５は行先装置２０１５において利用不能なままである。
【０１７１】
第４の段階２００４において、ユーザは、行先装置２０１５をアンロックした。その結果、キーチェーンアイテム２０２０及びキーチェーンアイテム２０２５は共に、行先装置２０１５の使用について利用可能になる。即ち、装置２０１５は、この段階で、ローカル保護ドメインキーを用いて秘密キーを解読し、次いで、解読された秘密キーを用いてキーチェーンアイテム２０２０を解読する。装置２０１５はまた、ローカル保護ドメインキーを用いてキーチェーンアイテム２０２５を解読する。次いで、行先装置２０１５は、２つのキーチェーンアイテム２０２０及びキーチェーンアイテム２０２５が利用可能になったので、それらの同期を開始する。
【０１７２】
第５の段階２００５は、キーチェーンアイテム２０２０とキーチェーンアイテム２０２５とが同期しており、したがって、キーチェーンアイテム２０２５がデータ２を有することを示す。行先装置２０１５はアンロック状態であり、キーチェーンキーチェーンアイテム２０２５は、装置２０１５の使用について利用可能である。次の段階２００６は、行先装置２０１５が（例えば、ある時間期間にわたってアイドル中であることによって、又はユーザが装置２０１５をロックしたので）ロック状態に戻ったことを示す。行先装置２０１５は、ローカル保護ドメインキーを用いてキーチェーンアイテム２０２５を暗号化することによって、キーチェーンアイテム２０２５を利用不能にする。
【０１７３】
図２１は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、少なくともブート後に装置を一度アンロックすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す。詳細には、この図は、６つの異なる段階２１０１〜２１０６における、装置２１１５によるキーチェーンアイテム２１２０及びキーチェーンアイテム２１２５の処理を示す。この図はまた、キーチェーンアイテム２１２０を更新し、キーチェーンアイテム２１２５と同期させるために、キーチェーンアイテム２１２０を行先装置２１１５にプッシュするソース装置２１１０を示す。
【０１７４】
キーチェーンアイテム２１２０及びキーチェーンアイテム２１２５が属する保護ドメインは、キーチェーンアイテム２１２０及びキーチェーンアイテム２１２５を行先装置２１１５において利用可能にするために、少なくともブート後に（即ち、ターンオフ状態からターンオンした後に）行先装置２１１５を一度アンロックすることを必要とする。いくつかの実施形態において、バックグラウンドで動作するアプリケーションへのパスワードを保護するために、この保護ドメインが使用される。例えば、装置上で動作している電子メールアプリケーションは、装置がアイドル中である間（例えば、装置がいかなるユーザ入力も受け取らない間）に電子メールをフェッチするためには、メールサーバにアクセスするためのパスワードを必要とする。
【０１７５】
第１の段階２１０１は、ソース装置２１１０のキーチェーンアイテム２１２０と、行先装置２１１５のキーチェーンアイテム２１２５とがそれぞれ同期していることを示す。図示のとおり、キーチェーンアイテム２１２０及びキーチェーンアイテム２１２５は共にデータ１を含む。この段階では、行先装置２１１５がブートされるので、行先装置２１１５は依然としてアンロックされていない。即ち、行先装置２１１５のユーザは、装置２１１５のブートアップ後、装置２１１５を依然としてアンロックしていない。行先装置２１１５のキーチェーンアイテム２１２５は、キーチェーンアイテム２１２５が利用不能であることを示す点線の平行四辺形で示される。この例では、行先２１２５は、キーチェーンアイテム２１２５を利用不能にするために、キーチェーンアイテム２１２５が属する保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム２１２５を暗号化した。
【０１７６】
第２の段階２１０２は、ソース装置２１１０のキーチェーンアイテム２１２０がデータ１からデータ２に更新されたことを示す。この段階では、行先装置２１１５がブ−トアップ以降に依然としてアンロックされていないので、行先装置２１１５のキーチェーンアイテム２１２５は利用不能なままである。
【０１７７】
次の段階２１０３は、キーチェーンアイテム２１２０と行先装置２１１５の対応するキーチェーンアイテム２１２５とを同期させるために、ソース装置２１１０がキーチェーンアイテム２１２０を行先装置２１１５にプッシュしたことを示す。この例では、ソース装置２１１０は、キーチェーンアイテム２１２０を行先装置２１１５にプッシュする前に、保護ドメインについての行先装置２１１５の公開キーを用いてキーチェーンアイテム２１２０を暗号化する。行先装置２１１５は、キーチェーンアイテム２１２０を受信するが、ブ−トアップ以降に行先装置がアンロックされておらず、したがって、保護ドメインについての対応する秘密キーを用いてキーチェーンアイテム２１２０を解読しなかったので、キーチェーンアイテム２１２０はこの段階では利用不能である。この例では、行先装置２１０５が、キーチェーンアイテム２１２５を暗号化するために使用されるローカル保護ドメインキーを用いて秘密キーを暗号化したので、秘密キーもまた利用不能である。行先装置２１１５がロック状態であり、したがって、ローカル保護ドメインキーを用いてキーチェーンアイテム２１２５を解読しなかったので、キーチェーンアイテム２１２５は行先装置２１１５において利用不能なままである。
【０１７８】
第４の段階２１０４において、ユーザは、装置２１１５のブートアップ後、初めて行先装置２１１５をアンロックした。その結果、キーチェーンアイテム２１２０及びキーチェーンアイテム２１２５は共に、行先装置２１１５の使用について利用可能になる。この例では、行先装置２１１５は、保護ドメインについての秘密キーを用いてキーチェーンアイテム２１２０を解読することによって、キーチェーンアイテム２１２０を利用可能にする。行先装置２１１５は、秘密キーを解読するだけでなく、保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム２１２５を解読した。行先装置２１１５は、２つのキーチェーンアイテム２１２０及びキーチェーンアイテム２１２５が利用可能になったので、それらの同期を開始する。
【０１７９】
第５の段階２１０５は、キーチェーンアイテム２１２０とキーチェーンアイテム２１２５とが同期しており、したがって、キーチェーンアイテム２１２５がデータ２を有することを示す。行先装置２１１５はアンロック状態であり、キーチェーンキーチェーンアイテム２１２５は、装置２１１５の使用について利用可能である。この段階で、ソース装置２１１０のユーザは、キーチェーンアイテム２１２０をデータ２からデータ３に再び更新する。
【０１８０】
第６の段階２１０６は、行先装置２１１５が（例えば、ある時間期間にわたってアイドル中であることによって、又はユーザが行先装置２１１５をロックしたので）ロック状態に戻ったことを示す。しかしながら、装置２１１５が、装置２１１５のブートアップ後一度アンロックされ、したがって、装置２１１５は、ローカル保護ドメインキーを用いてキーチェーンアイテム２１２５を再び暗号化しないので、キーチェーンアイテム２１２５は、装置２１１５の使用について依然として利用可能である。
【０１８１】
段階２１０６において、ソース装置２１１０はまた、キーチェーンアイテム２１２０と行先装置２１１５の対応するキーチェーンアイテム２１２５とを同期させるために、キーチェーンアイテム２１２０を行先装置２１１５にプッシュした。ソース装置２１１０は、キーチェーンアイテム２１２０を行先装置２１１５にプッシュする前に、保護ドメインについての公開キーを使用してキーチェーンアイテム２１２０を暗号化する。行先装置２１１５は，キーチェーンアイテム２１２０を受信し、キーチェーンアイテム２１２０は、行先装置２１１５がロック状態である場合であっても利用可能になる。これは、少なくとも装置２１１５のブートアップ後に行先装置２１１５が一度アンロックされ、したがって、装置２１１５は、キーチェーンアイテム２１２０を解読するために利用可能となる秘密キーを暗号化しないからである。キーチェーンアイテム２１２０は、行先装置２１１５がロック状態のままである場合であっても同期される。
【０１８２】
図２２は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をオンにすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す。詳細には、この図は、４つの異なる段階２２０１〜２１０４における、装置２２１５によるキーチェーンアイテム２２２０及びキーチェーンアイテム２２２５の処理を示す。この図はまた、キーチェーンアイテム２２２０を更新し、キーチェーンアイテム２２２５と同期させるために、キーチェーンアイテム２２２０を行先装置２２１５にプッシュするソース装置２２１０を示す。
【０１８３】
キーチェーンアイテム２２２０及びキーチェーンアイテム２２２５が属する保護ドメインは、装置２２１５の使用についてキーチェーンアイテム２２２０及びキーチェーンアイテム２２２５を利用可能にするために、行先装置２２１５をオンにすることが必要である。即ち、行先装置２２１５が稼働している限り、キーチェーンアイテム２２２０及びキーチェーンアイテム２２２５は常に、装置２２１５の使用について利用可能である。この保護ドメインはほとんど保護を提供しないので、いくつかの実施形態の装置は、常に動作している必要があるアプリケーションについて、この保護ドメインを使用する。そのようなアプリケーションの一例として、アップルインコーポレーテッドによるＦｉｎｄ  Ｍｙ  ｉＰｈｏｎｅ（登録商標）アプリケーションが挙げられる。
【０１８４】
第１の段階２２０１は、ソース装置２２１０のキーチェーンアイテム２２２０と、行先装置２２１５のキーチェーンアイテム２２２５とがそれぞれ同期していることを示す。図示のとおり、キーチェーンアイテム２２２０及びキーチェーンアイテム２２２５は共にデータ１を含む。この段階において、行先装置２２１５は、ターンオフされている。
【０１８５】
第２の段階２２０２は、ソース装置２２１０のキーチェーンアイテム２２２０がデータ１からデータ２に更新されたことを示す。この段階において、行先装置２２１５はブートアップされるが、まだアンロックされていない。しかしながら、保護ドメインの条件（即ち、装置が稼働していること）が満たされているので、キーチェーンアイテム２２２５は行先装置２２１５の使用について利用可能であり、したがって、装置２２１５は、保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム２２２５を暗号化しない。いくつかの実施形態において、キーチェーンアイテム２２２５は依然として、装置２２１５に結び付けられたキー（例えば、装置２２１５のＵＩＤに由来するキー）を用いて暗号化されている可能性があるが、装置２２１５においてキーチェーンアイテム２２２５を解読するためにキーが利用可能なので、キーチェーンアイテム２２１５が利用可能であるとみなされる。
【０１８６】
次の段階２２０３は、キーチェーンアイテム２２２０と行先装置２２１５の対応するキーチェーンアイテム２２２５とを同期させるために、ソース装置２２１０がキーチェーンアイテム２２２０を行先装置２２１５にプッシュしたことを示す。ソース装置２２１０は、キーチェーアイテム２２２０を行先装置２２１５にプッシュする前に、キーチェーンアイテム２２２０を暗号化する。行先装置２２１５は、キーチェーンアイテム２２２０を受信し、キーチェーンアイテム２２２０は、装置２２１５がまだアンロックされていない場合であっても、この段階で装置２２１５において利用可能になる。これは、装置２２１５が稼働しており、したがって、キーチェーンアイテム２２２０を解読するために、対応する秘密キーが利用可能であるからである。行先装置２２１５は、２つのキーチェーンアイテム２２２０及びキーチェーンアイテム２２２５が利用可能なので、キーチェーンアイテム２２２０とキーチェーンアイテム２２２５との同期を開始する。
【０１８７】
第４の段階２２０４では、行先装置２２１５はまだアンロックされていない。しかしながら、第４の段階２２０４は、キーチェーンアイテム２２２０とキーチェーンアイテム２２２５とが同期していることを示す。その結果、キーチェーンアイテム２２２５はこの時データ２を有する。
【０１８８】
図２３は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をアンロックすることが必要であり、追加の認証も必要とする保護ドメインによって保護されたキーチェーンアイテムを示す。詳細には、この図は、６つの異なる段階２３０１〜２３０６における、ソース装置２３１０により更新され、行先装置２３１５にプッシュされるキーチェーンアイテム２３２０の処理を示す。この図はまた、キーチェーンアイテム２３２０と同期すべき、対応するキーチェーンアイテムであるキーチェーンアイテム２３２５の処理を示す。
【０１８９】
キーチェーンアイテム２３２０及びキーチェーンアイテム２３２５が属する保護ドメインは、キーチェーンアイテム２３２０及びキーチェーンアイテム２３２５を行先装置２３１５において利用可能にするために、行先装置２３１５をアンロックすることが必要であり、また、追加の認証（例えば、パスワード、網膜スキャン、指紋スキャン、音声認識、ある特定の位置の近傍内に装置があることなど）を必要とする。いくつかの実施形態において、追加のセキュリティ対策を必要とするアプリケーションに対するパスワードを保護するために、この保護ドメインが使用される。例えば、いくつかの実施形態のキーチェーンマネージャは、アプリケーションがリモートサーバにアクセスするためにセキュアなランダムパスワードを生成する。いくつかの実施形態において、このパスワードは、ユーザには公開されず、キーチェーンマネージャは、ユーザが記憶し、使用することができるより単純な又は異なるパスワードを用いてユーザを認証する。非公開のパスワードは、ユーザが使用する装置間で同期される。非公開のパスワードがソース装置において変更され、行先装置にプッシュされた場合、非公開のパスワードは、ユーザが行先装置をアンロックする場合であっても、行先装置で動作している同じアプリケーションを使用するためにユーザがこの異なるパスワードを提供しない限り、行先装置において利用可能にならない。
【０１９０】
第１の段階２３０１は、ソース装置２３１０のキーチェーンアイテム２３２０と、行先装置２３１５のキーチェーンアイテム２３２５とがそれぞれ同期していることを示す。この段階において、行先装置２３１５はアンロック状態である。図示のとおり、キーチェーンアイテム２３２０とキーチェーンアイテム２３２５は共にデータ１を含むが、行先装置２３１５のキーチェーンアイテム２３２５は、行先装置２３１５がロック状態であるので利用不能であるこの例では、行先２３２５は、キーチェーンアイテム２３２５を利用不能にするために、キーチェーンアイテム２３２５が属する保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム２３２５を暗号化した。
【０１９１】
第２の段階２３０２は、ユーザにより、ソース装置２３１０のキーチェーンアイテム２３２０がデータ１からデータ２に更新されたことを示す。例えば、キーチェーンアイテム２３２０は、ソース装置２３１０で動作しているアプリケーションが必要とするリモートサーバにアクセスするために実際に使用される非公開のパスワードを含み、ユーザは、ユーザが記憶しており、それを使用してアプリケーションを使用するために認証するこの異なるパスワードを変更することによって、非公開のパスワードを単に変更した。この段階では、キーチェーンアイテム２３２５は、行先装置２３１５が依然としてロック状態であるので利用不能なままであり、したがって、保護ドメインについての条件はまだ満たされていない。
【０１９２】
第３の段階２３０３は、キーチェーンアイテム２３２０と行先装置２３１５の対応するキーチェーンアイテム２３２５とを同期させるためにソース装置２３１０がキーチェーンアイテム２３２０を行先装置２３１５にプッシュしたことを示す。この例では、ソース装置２３１０は、キーチェーンアイテム２３２０を行先装置２３１５にプッシュする前に、保護ドメインについての行先装置２３１５の公開キーを用いてキーチェーンアイテム２３２０を暗号化する。行先装置２３１５は、キーチェーンアイテム２３２０を受信するが、キーチェーンアイテム２３２０は、行先装置がロック状態であり、たがって、保護ドメインについての対応する秘密キーを用いてキーチェーンアイテム２３２０を解読しなかったので、この段階では利用不能である。また、キーチェーンアイテム２３２５も、行先装置２３１５がロック状態なので、利用不能なままである。
【０１９３】
第４の段階２３０４において、ユーザは、行先装置２３１５をアンロックした。しかしながら、キーチェーンアイテム２３２０及びキーチェーンアイテム２３２５は共に、キーチェーンアイテム２３２０及びキーチェーンアイテム２３２５が属する保護ドメインについての条件がまだ満たされない−ユーザがこの保護ドメインが必要とする追加の認証を提供していないので、行先装置２３１５の使用について依然として利用不能である。
【０１９４】
第５の段階２３０５は、ユーザが追加の認証を（例えば、ユーザが記憶しているこの異なるパスワードを入力することによって）提供したことを示す。ここで、キーチェーンアイテム２３２０及びキーチェーンアイテム２３２５は共に利用可能になった。これは、保護ドメインについての全ての条件が満たされ、したがって、装置２３１５が秘密キー及びローカル保護ドメインを用いてキーチェーンアイテム２３２５を解読したからである。装置２３１５はまた、解読された秘密キーを用いてキーチェーンアイテム２３２５を解読した。行先装置２３１５は、２つのキーチェーンアイテム２３２０とキーチェーンアイテム２３２５との同期を開始する。第６の段階２３０６は、キーチェーンアイテム２３２０とキーチェーンアイテム２３２５とが同期しており、したがって、キーチェーンアイテム２３２５がデータ２を有することを示す。
【０１９５】
図２４は、１つの装置について異なる条件セットを有する２つの保護ドメインによって保護されるデータを示す。詳細には、この図は、４つの異なる段階２４０１〜２４０４における行先装置２４１５によるメタデータアイテム２４３０及びメタデータアイテム２４３５並びにキーチェーンアイテム２４２０及びキーチェーンアイテム２４２５の処理を示す。この図はまた、キーチェーンアイテム２４２０を更新し、キーチェーンアイテム２４２５と同期させるために、キーチェーンアイテム２４２０を行先装置２４１５にプッシュするソース装置２４１０を示す。
【０１９６】
上述のように、キーチェーンアイテムは、２つのキーチェーンアイテムを同期させる時の任意の競合を解決するために装置が使用する情報を搬送するメタデータアイテムと関連付けられる。いくつかの実施形態において、キーチェーンアイテムが利用不能なままである間にメタデータアイテムが装置において利用可能になるように、キーチェーンアイテムとその関連するメタデータアイテムとは、異なる保護ドメイン中にあるように定義される。装置において、キーチェーンアイテムが利用不能であり、関連付けられたメタデータアイテムが利用可能である場合、装置は、関連付けられたメタデータアイテムが搬送する情報を使用して、キーチェーンアイテムについての任意の競合を解決することができる。
【０１９７】
メタデータアイテム２４３０は、キーチェーンアイテム２４２０と関連付けられ、メタデータアイテム２４３５は、キーチェーンアイテム２４２５とそれぞれ関連付けられる。この例では、メタデータアイテム２４３０及びメタデータアイテム２４３５は、メタデータアイテム２４３０及びメタデータアイテム２４３５が装置２４１５の使用について利用可能になるために、行先装置２４１５がターンオンにされることを必要とする第１の保護ドメインに属する。キーチェーンアイテム２４２０及びキーチェーンアイテム２４２５は、キーチェーンアイテムが行先装置２４１５において利用可能になるために、行先装置２４１５がアンロック状態であることを必要とする第２の保護ドメインに属する。
【０１９８】
第１の段階２４０１は、ソース装置２４１０のキーチェーンアイテム２４２０と、行先装置２４１５のキーチェーンアイテム２４２５とがそれぞれ同期していないことを示す。図示のとおり、キーチェーンアイテム２４２０はデータ１を含み、キーチェーンアイテム２４２５はデータ２をそれぞれ含む。メタデータアイテム２４３０とメタデータアイテム２４３５とは、異なる情報を有する。図示のとおり、メタデータアイテム２４３０はメタデータ１を搬送し、メタデータアイテム２４３５はメタデータ２を搬送する。この段階において、行先装置２４１５はロック状態である。行先装置２４１５のキーチェーンアイテム２４２５は、キーチェーンアイテム２４２５が装置２４１５では利用不能であることを示す点線の平行四辺形で示される。この例では、装置２４２５は、第２の保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム２４２５を暗号化することによって、キーチェーンアイテム２４２５を利用不能にした。メタデータアイテム２４３５は、装置２４２５がオンである時には装置２４２５がメタデータ２４３５を暗号化しないので、装置２４１５において利用可能である。
【０１９９】
第２の段階２４０２は、ソース装置２４１０が、キーチェーンアイテム２４２０と行先装置２４１５の対応するキーチェーンアイテム２４２５とを同期させるために、関連付けられたメタデータアイテム２４３０と共にキーチェーンアイテム２４２０を行先装置２４１５にプッシュしたことを示す。この例では、ソース装置２４１０は、第１の保護ドメインについての行先装置２４１５の公開キーを用いてメタデータアイテム２４３０を暗号化する。ソース装置２４１０は、メタデータアイテム２４３０及びキーチェーンアイテム２４２０を行先装置２４１５に送信する前に、第２の保護ドメインについての行先装置２４１５の公開キーを用いてキーチェーンアイテム２４２０を暗号化する。
【０２００】
行先装置２４１５は、キーチェーンアイテム２４２０及びメタデータアイテム２４３５を受信するが、キーチェーンアイテム２４２０は、この段階２４０２では行先装置２４１５において利用不能である。これは、行先装置２４１５が依然としてロック状態であり、したがって、装置２４１５は、第２の保護ドメインについての秘密キーを用いてキーチェーンアイテム２４２５を解読しないからである。また、キーチェーンアイテム２４２５は、装置２４１５が依然としてアンロック状態なので、利用不能なままである。メタデータアイテム２４３５は、装置２４０２が稼働しているので、この段階２４０２では行先２４１５において利用可能である。装置２４１５は、メタデータアイテム２４３０及びメタデータアイテム２４３５を使用してキーチェーンアイテム２４２０とキーチェーンアイテム２４２５との間の競合を解決することによって、２つの暗号化されたキーチェーンアイテム２４２０及びキーチェーンアイテム２４２５の同期を開始する。
【０２０１】
第３の段階２４０３において、行先装置２４１５は依然としてロック状態である。しかしながら、行先装置２４１５は、キーチェーンアイテムを同期した。その結果、メタデータアイテムは新しい競合解決情報（メタデータ３）を用いて更新されており、キーチェーンアイテム２４２５はデータ１を有する。更新されたキーチェーンアイテム２４２５は、装置２４１５が依然としてロック状態なので、第２のドメインについての公開キーを用いて暗号化されたままにすることによって、行先装置２４１５において依然として利用可能でない。第４の段階２４０４において、行先装置２４１５はアンロック状態である。この例では、装置は、第２のドメインについてのローカル保護ドメインキーを用いて第２の保護ドメインのための秘密キーを解読し、次いで、解読された秘密キーを用いてキーチェーンアイテム２４２５を解読することによって、キーチェーンアイテム２４２５を利用可能にする。
【０２０２】
Ｃ．シンクサークル及び保護ドメイン
上述のように、装置は、（例えば、図４〜図６を参照して上述した技法を使用して）異なるキーチェーンアイテムを同期さるために、いくつかの異なるシンクサークルに加入し得る。いくつかの実施形態において、いくつかの装置は、いくつかの異なる保護ドメインに属するキーチェーンアイテムを同期させるために、いくつかの異なるシンクサークルを形成する。
【０２０３】
図２５は、いくつかの装置により形成されたいくつかのシンクサークルを概念的に示す。詳細には、この図は、３つの装置Ａ〜Ｃが、３つの異なる保護ドメイン１〜３について３つの異なるシンクサークル２５０５〜２５１５を形成することを示す。図の上部部分は、３つのシンクサークル２５０５〜２５１５の装置Ａ〜Ｃを示す。図の下部部分は、３つのシンクサークル２５０５〜２５１５をそれぞれ示す。
【０２０４】
いくつかの実施形態において、装置のグループは、装置がキーチェーンアイテムを保護するために使用する保護ドメインの各々についてシンクサークルを形成する。いくつかのそのような実施形態では、グループの各装置は、装置がキーチェーンアイテムを暗号化及び解読するために使用する同じ公衆／プライベートキーペアを使用して、シンクサークルに加入する。代替的に又は連携させて、他の実施形態の装置は、シンクサークルを加入し、キーチェーンアイテムを暗号化及び解読するために、別個のキーペアを使用する。
【０２０５】
図示のとおり、装置Ａ〜Ｃは、保護ドメイン１についてシンクサークル２５０５を形成する。図示のとおり、装置Ａ〜Ｃは、保護ドメイン２についてシンクサークル２５１０を形成する。図示のとおり、装置Ａ〜Ｃは、保護ドメイン３についてシンクサークル２５１０を形成する。図２５は、３つのシンクサークルが同じ３つの装置Ａ〜Ｃにより形成されることを示す。しかしながら、装置Ａ〜Ｃの各々は、保護ドメイン１〜３以外の保護ドメイン（図示せず）について、装置Ａ〜Ｃのうちの他の２つの装置とは別の装置と共に他のシンクサークル（図示せず）を形成し得る。
【０２０６】
この図にはリング形状又は円形でシンクサークル２５０５〜２５１５が示されているが、装置の各対は、シンクサークルを形成するためにセキュアなトランスポート層を確立する。即ち、いくつかの実施形態において、シンクサークルの装置は、リングネットワークではなくスターネットワークを形成する。
【０２０７】
図２６は、いくつかの異なる保護ドメインについていくつかの装置により形成されたシンクサークルを概念的に示す図である。詳細には、この図は、３つの装置Ａ〜Ｃが、３つの異なる保護ドメイン１〜３についてシンクサークル２６０５を形成することを示す。この図はまた、キーチェーンアイテム２６１０〜２６２０の３つのグループを示す。
【０２０８】
いくつかの実施形態において、装置のグループは、いくつかの異なる保護ドメインについて単一のシンクサークルを形成する。これらの実施形態のいくつかにおいて、グループの各装置は、単一のシンクサークルに加入するために、いくつかの異なる保護ドメインについてのいくつかの公開／秘密キーペアのうちの１つの対を使用する。即ち、グループの各装置は、キーチェーンアイテムを暗号化及び解読するためにいくつかの公開／秘密キーペアのうちの１つの対を選択し、選択されたキーペアを使用して単一のシンクサークルに加入する。代替的に又は連携して、他の実施形態におけるグループの各装置は、キーチェーンアイテムを暗号化及び解読するためにキーペアのうちのいずれも使用せずに、別個のキーペアを使用して単一のシンクサークルに加入する。
【０２０９】
いくつかの実施形態において、グループの各装置は、単一のシンクサークルに加入するために、いくつかの異なる保護ドメインについてのいくつかの公開／秘密キーペアの全てを使用する。即ち、他の実施形態におけるグループの各装置は、キーチェーンアイテムを暗号化及び解読するためにキーペアの全てを使用して、シンクサークルに加入する。したがって、これらの実施形態では、装置は、装置が全てのキーペアを利用可能にする必要があるので、シンクサークルに加入するために、いくつかの異なる保護ドメインのドメインごとに全ての条件を満たす必要がある。
【０２１０】
この例では、キーチェーンアイテム２６１０は、保護ドメイン１に属する。キーチェーンアイテム２６１０は、装置Ｃによって装置Ａにプッシュされている。装置Ｃは、キーチェーンアイテム２６１０を暗号化するために、保護ドメイン１について装置Ｂ及びＣに公開されている装置Ａの公開キーを使用する。しかしながら、この例における装置Ｃは、シンクサークル２６０５に加入するために、保護ドメイン１〜３についての３つの公開／秘密キーペア全てを使用した。
【０２１１】
キーチェーンアイテム２６２０は、保護ドメイン２に属する。キーチェーンアイテム２６２０は、装置Ｂによって装置Ｃにプッシュされている。装置Ｂは、キーチェーンアイテム２６２０を暗号化するために、保護ドメイン２について装置Ａ及びＢに公開されている装置Ｃの公開キーを使用する。この例では、装置Ｂは、シンクサークル２６０５に加入するために、保護ドメイン１〜３についての３つの公開／秘密キーペア全てを使用した。
【０２１２】
キーチェーンアイテム２６１５は、保護ドメイン３に属する。キーチェーンアイテム２６１５は、装置Ａによって装置Ｂにプッシュされている。装置Ａは、キーチェーンアイテム２６１５を暗号化するために、保護ドメイン３について装置Ａ及びＣに公開されている装置Ｂの公開キーを使用する。この例では、装置Ｂは、シンクサークル２６０５に加入するために、保護ドメイン１〜３についての３つの公開／秘密キーペア全てを使用した。
【０２１３】
Ｖ．ソフトウェアアーキテクチャ
いくつかの実施形態において、上記のプロセスは、コンピュータ（例えば、デスクトップ、ラップトップなど）、ハンドヘルド装置（例えば、スマートフォン）、又はタブレットコンピューティング装置上で動作する、あるいはマシン可読媒体内に記憶されるソフトウェアとして実装されている。図２７は、いくつかの実施形態のキーチェーンマネージャ２７００のソフトウェアアーキテクチャを概念的に示す。いくつかの実施形態において、キーチェーンマネージャは、シンクサークルの装置間でのキーチェーンの同期を管理するためのスタンドアロンアプリケーションである。いくつかの実施形態のキーチェーンマネージャが、別のアプリケーション（例えば、キーチェーン管理アプリケーション、データ管理アプリケーション、セキュリティアプリケーションなど）に組み込まれている一方、他の実施形態では、アプリケーションはオペレーティングシステム内に実装され得る。更に、いくつかの実施形態において、アプリケーションは、サーバベースソリューションの一部として提供される。いくつかのそのような実施形態において、アプリケーションは、シンクライアントによって提供される。即ち、アプリケーションは、サーバ上で動作し、ユーザは、サーバからリモートの別個のマシンを介してアプリケーションと対話する。他のそのような実施形態において、アプリケーションは、シッククライアントとして提供される。即ち、アプリケーションは、サーバからクライアントマシンに分配され、クライアントマシン上で動作する。
【０２１４】
いくつかの実施形態のキーチェーンマネージャ２７００は、様々なオペレーティングシステム上で動作するように実装される。いくつかの実施形態において、様々なオペレーティングシステム（例えば、ｉＯＳ（登録商標）、Ｍａｃ  ＯＳ  Ｘ（登録商標）など）は、異なるアーキテクチャを使用してキーチェーン及びキーチェーンアイテムを管理する。いくつかの実施形態のキーチェーンマネージャ２７００は、異なるキーチェーン管理アーキテクチャを使用して装置間でキーチェーン及びキーチェーンアイテムを同期させるように実装される。例えば、いくつかの実施形態において、キーチェーンマネージャ２７００は、特定のキーチェーン管理アーキテクチャ（例えば、ｉＯＳ（登録商標））について実装され、別のキーチェーン管理アーキテクチャ（例えば、Ｍａｃ  ＯＳ  Ｘ（登録商標））を用いて動作するようにポートされる。
【０２１５】
図示のとおり、キーチェーンマネージャ２７００は、同期マネージャ２７０５、登録マネージャ２７１０、キーチェーンアイテムマネージャ２７１５、暗号化モジュール２７２０、マニフェストモジュール２７２５、及び競合リゾルバ２７３０を含む。キーチェーンマネージャ２７００はまた、シンクサークルデータ記憶装置２７３５、装置マニフェスト記憶装置２７４０、競合ルール記憶装置２７４５、キーチェーン記憶装置２７５０、及びセキュリティデータ記憶装置２７５５を含む。いくつかの実施形態において、シンクサークルデータ２７３５は、図３を参照して上述した記憶装置３１０〜３３０に記憶されたデータのローカルコピーを記憶する。即ち、シンクサークルデータ記憶装置２７３５は、シンクサークルの名前、シンクサークル装置リスト、ユーザ署名、装置署名、及びキーチェーンデータ、並びに他のデータを記憶する。装置マニフェスト記憶装置２７４０は、シンクサークルの装置の各々についてのマニフェストの履歴を記憶する。競合ルール記憶装置２７４５は、競合リゾルブの以前のバージョン、キーチェーンアイテム競合を解決するために使用される競合リゾルバの現在のバージョン、並びに競合リゾルバの以前のバージョン及び現在のバージョンに関連付けられた様々なルールを記憶する。キーチェーン記憶装置２７５０は、シンクサークルの装置と同期させるためのキーチェーンを記憶する。いくつかの実施形態において、キーチェーン記憶装置２７５０はまた、シンクサークルの他の装置と共有していない（即ち、同期していない）キーチェーン及び／又はキーチェーンアイテムも記憶する。セキュリティデータ記憶装置２７５５は、キーチェーンの同期を可能にするためにキーチェーンマネージャ２７００が提供する、セキュリティ機能（例えば、セキュアな通信チャネル（例えば、セキュリティキー）、データ暗号法（例えば、暗号化キー）、データ解読法（例えば、解読キー）、データ確認（例えば、復号キー）など）に関係するデータを記憶する。いくつかの実施形態において、記憶装置２７３５〜２７５５が１つの物理的記憶装置に記憶される一方、他の実施形態では、記憶装置２７３５〜２７５５は別個の物理的記憶装置に記憶される。更に、いくつかの実施形態では、記憶装置２７３５〜２７５５の一部又は全部は、いくつかの物理的記憶装置にわたって実装される。
【０２１６】
同期マネージャ２７０５は、シンクサークルの装置間でのキーチェーンの同期を管理する役割を果たす。いくつかの実施形態において、同期マネージャ２７０５は、キーチェーンマネージャ２７００が動作する装置がシンクサークルに正常に登録された後に、登録マネージャ２７１０により開始される。いくつかの実施形態において、同期マネージャ２７０５は、セクションＩＶにおいて上述したデータ保護機能を扱う。同期マネージャは、シンクサークルの装置間でのキーチェーンの同期を達成するために、他のモジュール２７１０及びモジュール２７１５〜２７３０と通信する。
【０２１７】
登録マネージャ２７１０は、シンクサークルへの装置の登録に関係する様々な機能を扱う。例えば、キーチェーンマネージャが動作している装置がシンクサークルに加入することを望む場合、登録マネージャ２７１０は、シンクサークルが存在しない時にはシンクサークルを作成する。登録マネージャ２７１０はまた、（例えば、図５を参照して上述したプロセス５００を実行することによる）登録要求生成、（例えば、図６を参照して上述したプロセス６００を実行することによる）登録要求承認、登録承認確認応答などを扱う。
【０２１８】
キーチェーンアイテムマネージャ２７１５は、キーチェーンについてキーチェーンアイテムを作成し、管理する。いくつかの実施形態において、キーチェーンアイテムマネージャ２７１５は、キーチェーンのキーチェーンアイテムの一部又は全部を表すデータ構造（例えば、図１０を参照して上述したデータ構造）を生成し、維持する。
【０２１９】
セキュリティモジュール２７２０は、様々なセキュリティ機能の機能を提供する。例えば、セキュリティモジュール２７２０は、シンクサークルの装置の各々とのセキュアな通信チャネルの確立を扱う。セキュリティモジュール２７２０は、様々なセキュリティ機能を実装するために、異なる暗号プリミティブ、アルゴリズム、プロトコル、及び技術（例えば、ＯＴＲメッセージング、ディフィー・ヘルマンキー共有、公開／秘密キーペア生成など）を実行する。
【０２２０】
マニフェストモジュール２７２５は、ローカルキーチェーンアイテム、及びいくつかの場合には、ピア装置のマニフェストに基づいて、様々なタイプのマニフェストを生成する役割を果たす。例えば、マニフェストモジュール２７２５は、マニフェストダイジェクト、完全なマニフェスト及びデルタマニフェストを生成する。マニフェストの生成を容易にするために、マニフェストモジュール２７２５は、シンクサークルの装置の各々についてマニフェストの履歴を維持する。また、マニフェストモジュール２７２５は、デルタマニフェストの生成において、ピア装置のローカルキーチェーンアイテム（又はローカルマニフェスト）とマニフェストとの比較を実行する。
【０２２１】
競合リゾルバ２７３０は、キーチェーンアイテム間の競合を解決することを扱う。例えば、競合リゾルバ２７３０は、競合を識別するために、ピア装置のローカルキーチェーンアイテムとキーチェーンアイテムとを比較する。また、競合リゾルバは、キーチェーンアイテム競合を解決するために、（例えば、競合ルール記憶装置２７４５に記憶された）競合リゾルバを実行する。更に、競合リゾルバ２７３０は、競合リゾルバ間での競合を検出し、キーチェーンアイテム競合を解決するために使用すべき競合リゾルバを判定する役割を果たす。
【０２２２】
多くの機能を１つのモジュール（例えば、登録モジュール２７１０、セキュリティモジュール２７２０など）で実行されるものとして述べてきたが、当業者には、複数のモジュールに機能が分割され得ることは認識されよう。同様に、複数の別々のモジュールにより実行されるものとして記載された機能は、いくつかの実施形態における単一モジュール（例えば、キーチェーンアイテムマネージャ２７１５及び競合リゾルバ２７３０）により実行され得る。
【０２２３】
ＶＩ．電子システム
上述の機能及びアプリケーションのうちの多くは、コンピュータ可読記憶媒体（コンピュータ可読媒体とも称される）上に記録される命令のセットとして指定される、ソフトウェアプロセスとして実装される。これらの命令が、１つ以上の計算又は処理ユニット（１つ又は複数）（例えば、１つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット）によって実行される場合、それらの命令は、処理ユニット（１つ又は複数）に、それらの命令で示されるアクションを実行させる。コンピュータ可読媒体の例には、ＣＤ−ＲＯＭ、フラッシュドライブ、ランダムアクセスメモリ（ＲＡＭ）チップ、ハードディスク、消去可能プログラム可能な読出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）などがあるが、これらに限定されない。コンピュータ可読媒体は、無線によって又は有線接続により進行する搬送波及び電子信号を含まない。
【０２２４】
この明細書では、用語「ソフトウェア」は、プロセッサによって処理するためにメモリに読み込むことができる、読み出し専用メモリ内に存在するファームウェア又は磁気記憶装置に記憶されたアプリケーションを含む。また、一部の実施形態では、複数のソフトウェア発明は、別個のソフトウェア発明のまま維持しつつ、より大きいプログラムの下位区分として実装することもできる。一部の実施形態では、複数のソフトウェア発明はまた、個別のプログラムとして実装することもできる。最後に、本明細書で説明されるソフトウェア発明を一体となって実装する、個別のプログラムのいずれの組み合わせも、本発明の範囲内である。いくつかの実施形態において、ソフトウェアプログラムは、１つ以上の電子システム上で動作するようにインストールされた時、ソフトウェアプログラムの動作を実行し行なう１つ以上の特定のマシン実行を定義する。
【０２２５】
図２８は、本発明のいくつかの実施形態が実現される電子システム２８００を概念的に示す。電子システム２８００、コンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータなど）、電話、ＰＤＡ、又は他の種類の電子若しくはコンピューティング装置でよい。そのような電子システムは、様々なタイプのコンピュータ可読媒体、及び様々な他のタイプのコンピュータ可読媒体のためのインターフェースを含む。電子システム２８００は、バス２８０５、処理ユニット（１つ又は複数）２８１０、グラフィクス処理ユニット（ＧＰＵ）２８１５、システムメモリ２８２０、ネットワーク２８２５、読み出し専用メモリ２８３０、永久記憶装置２８３５、入力装置２８４０及び出力装置２８４５を含む。
【０２２６】
バス２８０５は、電子システム２８００の多数の内部装置を通信可能に接続する全てのシステムバス、周辺装置バス及びチップセットバスを集合的に表す。例えば、バス２８０５は、処理ユニット（１つ又は複数）２８１０を、読み出し専用メモリ２８３０、ＧＰＵ  ２８１５、システムメモリ２８２０、及び永久記憶装置２８３５と通信可能に接続する。
【０２２７】
これらの様々なメモリユニットから、処理ユニット（１つ又は複数）２８１０は、本発明のプロセスを実行するために、実行するべき命令及び処理するべきデータを取得する。処理ユニット（１つ又は複数）は、異なる実施形態において、シングルプロセッサ又はマルチコアプロセッサでもよい。いくつかの命令は、ＧＰＵ  ２８１５に渡され、ＧＰＵ  ２８１５によって実行される。ＧＰＵ  ２８１５は、処理ユニット（１つ又は複数）２８１０によって提供される、様々な計算をオフロードするか、又は画像処理を補完することができる。いくつかの実施形態において、そのような機能は、ＣｏｒｅＩｍａｇｅのカーネルシェーディング言語を使用して提供されてもよい。
【０２２８】
読み出し専用メモリ（ＲＯＭ）２８３０は、処理ユニット（１つ又は複数）２８１０及び電子システムの他のモジュールによって必要とされる静的データ及び命令を記憶する。他方、永久記憶装置２８３５は、読み書きメモリ装置である。この装置は、電子システム２８００がオフの時でも、命令及びデータを記憶している不揮発性メモリユニットである。本発明のいくつかの実施形態は、永久記憶装置２８３５として大容量記憶装置（磁気又は光ディスク、及びその対応するディスクドライブ等）を使用する。
【０２２９】
他の実施形態は、永久記憶装置として、リムーバブル記憶装置（フロッピディスク、フラッシュメモリ装置など、及びその対応するドライブ）を使用する。永久記憶装置２８３５と同様に、システムメモリ２８２０は、読み書きメモリ装置である。しかしながら、記憶装置２８３５と異なり、システムメモリ２８２０は、ランダムアクセスメモリなどの揮発性読み書きメモリである。システムメモリ２８２０は、実行時にプロセッサが必要とする命令及びデータのうちのいくつかを記憶する。いくつかの実施形態において、本発明のプロセスは、システムメモリ２８２０、永久記憶装置２８３５、及び／又は読み出し専用メモリ２８３０に記憶される。例えば、様々なメモリユニットは、いくつかの実施形態によれば、マルチメディアクリップを処理する命令を含む。これらの様々なメモリユニットから、処理ユニット（１つ又は複数）２８１０は、いくつかの実施形態のプロセスを実行するために実行する命令及び処理するデータを取り出す。
【０２３０】
バス２８０５は、また、入力装置２８４０及び出力装置２８４５に接続する。入力装置２８４０により、ユーザは、電子システムに情報を通信し、コマンドを選択することが可能になる。入力装置２８４０として、英数字キーボード及びポインティング装置（「カーソル制御装置」とも呼ばれる）、カメラ（例えば、ウェブカメラ）、音声コマンドを受け取るためのマイクロホン又は類似の装置などが挙げられる。出力装置２８４５は、電子システムによって生成された画像を表示するか、あるいは、データを出力する。出力装置２８４５として、プリンタ、陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）などのディスプレイ装置、並びにスピーカ又は類似のオーディオ出力装置が挙げられる。いくつかの実施形態には、入力装置と出力装置との両方として機能するタッチスクリーンなどの装置を含む。
【０２３１】
最後に、図２８に示すように、バス２８０５はまた、ネットワークアダプタ（図示せず）を通じて、電子システム２８００をネットワーク２８２５にも接続する。このように、コンピュータは、コンピュータのネットワーク（ローカルエリアネットワーク（「ＬＡＮ」）、広域ネットワーク（「ＷＡＮ」）、又はイントラネットなど）、又はインターネットなどのネットワークのネットワークの一部でよい。電子システム２８００のいずれか又は全ての構成要素を、本発明と共に使用することができる。
【０２３２】
いくつかの実施形態は、マイクロプロセッサ、マシン可読又はコンピュータ可読媒体（あるいは、コンピュータ可読記憶媒体、マシン可読媒体又はマシン可読記憶媒体と呼ばれる）にコンピュータプログラム命令を記憶する記憶装置及びメモリなどの電子構成要素を含む。そのようなコンピュータ可読媒体のいくつかの例として、ＲＡＭ、ＲＯＭ、読み出し専用コンパクトディスク（ＣＤ−ＲＯＭ）、追記型コンパクトディスク（ＣＤ−Ｒ）、書き換え可能コンパクトディスク（ＣＤ−ＲＷ）、読み出し専用多目的ディスク（例えば、ＤＶＤ−ＲＯＭ、２層ＤＶＤ−ＲＯＭ）、様々な記録可能／書き換え可能ＤＶＤ（例えば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷなど）、フラッシュメモリ（例えば、ＳＤカード、ミニＳＤカード、マイクロＳＤカードなど）、磁気及び／又はソリッドステートハードディスク、読み出し専用記録可能Ｂｌｕ−Ｒａｙ（登録商標）ディスク、超高密度光ディスク、任意の他の光学又は磁気メディア、及びフロッピディスクが挙げられる。コンピュータ可読媒体は、少なくとも１つの処理ユニットによって実行可能であり、かつ様々な操作を実行する命令のセットを含む、コンピュータプログラムを記憶することができる。コンピュータプログラム又はコンピュータコードの例として、コンパイラによって作成されるようなマシンコード、及びインタープリタを使用してコンピュータ、電子構成要素又はマイクロプロセッサによって実行される高レベルコードを含むファイルが挙げられる。
【０２３３】
上記の考察は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサに言及しているが、一部の実施形態は、特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの、１つ以上の集積回路によって実行される。いくつかの実施形態において、そのような集積回路は、回路自体に記憶された命令を行う。更に、いくつかの実施形態は、プログラマブルロジックデバイス（ＰＬＤ）、ＲＯＭ、又はＲＡＭデバイスに記憶されたソフトウェアを実行する。
【０２３４】
本出願のこの明細書及び任意の請求項で使用される時、用語「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」は全て、電子装置又は他の技術的装置を指す。これらの用語は、人々又は人々のグループを除外する。本明細書の目的において、用語「ディスプレイ又は表示」は、電子システム上の表示を意味する。本出願のこの明細書及び任意の請求項で使用される時、用語「コンピュータ可読媒体（単数）」、「コンピュータ可読媒体（複数）」、及び「マシン可読媒体」は、コンピュータによって読み出し可能な形式で情報を記憶する有形の物理的物体に完全に制限される。これらの用語は、あらゆる無線信号、有線でダウンロードされた信号、及びあらゆる他の暫時信号を除外する。
【０２３５】
本発明は、数多くの特定の詳細を参照して説明されているが、当業者には、本発明の趣旨から逸脱することなく、他の特定の形式で本発明を具体化することができる点が認識されるであろう。更に、（図５、図６及び図１２〜図１５を含む）いくつかの図面はプロセスを概念的に示している。これらのプロセスの具体的な操作は、図示され記述された厳密な順序で実行されなくてもよい。具体的な操作は、１つの連続した一連の操作で実行されなくてもよく、様々な具体的な操作が、異なる実施形態で実行されてもよい。更に、プロセスは、いくつかのサブプロセスを使用して、又はより大きいマクロプロセスの一部として実施されてもよい。したがって、本発明は、前述の例示的な詳細によって限定されるものではなく、むしろ、添付の特許請求の範囲によって定義されるものであることが、当業者には理解されるであろう。
【図１】
2016505226.tif 000003
【図２】
2016505226.tif 000004
【図３】
2016505226.tif 000005
【図４】
2016505226.tif 000006
【図５】
2016505226.tif 000007
【図６】
2016505226.tif 000008
【図７】
2016505226.tif 000009
【図８】
2016505226.tif 000010
【図９】
2016505226.tif 000011
【図１０】
2016505226.tif 000012
【図１１】
2016505226.tif 000013
【図１２】
2016505226.tif 000014
【図１３】
2016505226.tif 000015
【図１４】
2016505226.tif 000016
【図１５】
2016505226.tif 000017
【図１６】
2016505226.tif 000018
【図１７】
2016505226.tif 000019
【図１８】
2016505226.tif 000020
【図１９】
2016505226.tif 000021
【図２０】
2016505226.tif 000022
【図２１】
2016505226.tif 000023
【図２２】
2016505226.tif 000024
【図２３】
2016505226.tif 000025
【図２４】
2016505226.tif 000026
【図２５】
2016505226.tif 000027
【図２６】
2016505226.tif 000028
【図２７】
2016505226.tif 000029
【図２８】
2016505226.tif 000030
【手続補正書】
【提出日】平成27年8月17日(2015.8.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ピア装置のセットの第１のピア装置のための、キーチェーンを同期させるための、セキュアなデータを共有するピア装置の前記セットのうちの複数のピア装置を含む同期サークルに加入するために、ピア装置の前記セットの第２のピア装置からの要求を処理する方法であって、
前記第２のピア装置が前記同期サークルに加入するための要求を受信し、
前記第１のピア装置において、前記要求が、前記要求とともに受信されたデータに基づいて認証されているかを判定し、
前記要求が認証されていると判定された時に、前記第２のピア装置による前記要求を承認する入力のためのプロンプトを出し、
前記要求を承認する入力が受信された時に、前記第２のピア装置を前記同期サークルに追加する、
ことを含み、
前記同期サークルへの前記第２のピア装置の前記追加の後に、セキュアなキーチェーンデータが前記第１のピア装置と前記第２のピア装置との間で共有される、
ことを特徴とする方法。
【請求項２】
前記第２のピア装置の前記同期サークルへの追加は、前記第２のピア装置を一意に識別するデータを、前記同期サークルのメンバーとして指定された装置のリストに追加することを含む、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記第２のピア装置の前記同期サークルへの追加は、前記第１のピア装置に属すると共に前記第１のピア装置により生成された公開／秘密装置署名キーペアのうちの秘密キーを用いて、装置の前記リストの署名を生成することを更に含む、
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記第２のピア装置の前記同期サークルへの追加は、装置の前記リストと前記生成された署名とを、前記同期サークルの他のピア装置と共有することを更に含む、
ことを特徴とする請求項３に記載の方法。
【請求項５】
前記第２のピア装置を前記同期サークルに追加した後に、前記第１のピア装置と前記第２のピア装置との間でセキュアなキーチェーンデータを共有することによって、キーチェーンを前記第２のピア装置と同期させることを更に含む、
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記要求が認証されているかの判定は、
前記同期サークルに関連付けられたユーザが、前記第２のピア装置が前記同期サークルに加入するための前記要求をサブミットしたことを検証することと、
前記第２のピア装置が前記同期サークルに加入するための前記要求が、前記第２のピア装置により生成されたことを検証することと、
を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記第２のピア装置が前記同期サークルに加入するための前記要求とともに受信された前記データは、ユーザ署名公開／秘密キーペアのうちの秘密キーを用いて署名された前記要求の署名を含み、
前記同期サークルに関連付けられた前記ユーザが、前記第２のピア装置が前記同期サークルに加入するための前記要求をサブミットしたことの検証は、
前記ユーザ署名公開／秘密キーペアのうちの公開キーを用いた前記要求の前記署名を解読することと、
前記要求が前記解読された署名と一致することを判定することと、
を含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記ユーザ署名公開／秘密キーペアは、クラウドサービスアカウントのパスワードに基づいて生成され、前記同期サークルは、前記クラウドサービスアカウントと関連付けられる、
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記第２のピア装置が前記同期サークルに加入するための前記要求とともに受信された前記データは前記要求の署名を含み、
前記第２のピア装置が前記同期サークルに加入するための前記要求が前記第２のピア装置により生成されたことの検証は、
前記第２のピア装置に属すると共に前記第２のピア装置により生成された公開／秘密キーペアのうちの公開キーを用いて前記要求の前記署名を解読することと、
前記要求が前記解読された署名と一致することを判定することと、
を含むことを特徴とする請求項６に記載の方法。
【請求項１０】
前記要求を承認する入力についてプロンプトを出すことは、前記第１のピア装置のディスプレイスクリーン上に、パスワードの入力の要求を表示することを含む、
ことを特徴とする請求項１に記載の方法。
【請求項１１】
第１の装置に記憶されたキーチェーンのセットを他の装置のセットと同期させる方法であって、前記第１の装置と他の装置の前記セットとが、ピアツーピア（Ｐ２Ｐ）ネットワークを介して互いに通信可能に接続され、
前記方法は、
前記第１の装置に記憶されたキーチェーンの前記セットにおけるキーチェーンに対する修正を受信し、
前記第１の装置に記憶されたキーチェーンの前記セットを他の装置の前記セットと同期させるために、他の装置の前記セットにおける各装置についての更新要求を生成し、
それぞれが前記第１の装置と前記他の装置のうちの異なる１つとの間の別個のセキュアな通信チャネルを介して、生成された更新要求のそれぞれを、前記Ｐ２Ｐネットワークを通じて送信する、
ことを含むことを特徴とする方法。
【請求項１２】
別個のセキュアな通信チャネルを介した、生成された更新要求のそれぞれの前記Ｐ２Ｐネットワークを通じた送信は、前記更新要求が他の装置の前記セットのうちの特定の他の装置にのみにより解読可能であるように、当該特定の装置についての更新要求のそれぞれを、暗号化キーを用いて暗号化することを含む、
ことを特徴とする請求項１１に記載の方法。
【請求項１３】
他の装置の前記セットのうちの特定の装置についての前記更新要求を暗号化するための前記暗号化キーは、当該特定の他の装置の公開／秘密キーペアのうちの公開キーを含む、
ことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記キーチェーンに対する前記修正は、前記キーチェーンへのキーチェーンアイテムの追加である、
ことを特徴とする請求項１１に記載の方法。
【請求項１５】
前記キーチェーンに対する前記修正は、前記キーチェーンにおけるキーチェーンアイテムの修正である、
ことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記キーチェーンに対する前記修正は、前記キーチェーンにおけるキーチェーンアイテムの削除である、
ことを特徴とする請求項１１に記載の方法。
【請求項１７】
前記Ｐ２Ｐネットワークは、完全に接続されるメッシュトポロジーに従って構成されたオーバーレイネットワークにより実装される、
ことを特徴とする請求項１１に記載の方法。
【請求項１８】
前記Ｐ２Ｐネットワークは、複数のノードを含むスタートポロジーに従って構成されたオーバーレイネットワークにより実装され、
前記スタートポロジーのセンターノードは、クラウドストレージサービスであり、
前記スタートポロジーの残りのノードは、前記第１の装置と他の装置の前記セットとを含む、
ことを特徴とする請求項１１に記載の方法。
【請求項１９】
少なくとも１つの処理ユニットによって実行される時に、請求項１から１８のいずれか１項に記載の方法を実行するプログラムを記憶するマシン可読媒体。
【請求項２０】
電子装置であって、
処理ユニットのセットと、
少なくとも１つの処理ユニットによって実行される時に、請求項１から１８のいずれか１項に記載の方法を実行するプログラムを記憶するマシン可読媒体と、
を有することを特徴とする電子装置。
【国際調査報告】
2016505226.tif 000031
2016505226.tif 000032
2016505226.tif 000033
2016505226.tif 000034
2016505226.tif 000035