JP6072305B2 - キーチェーン同期 - Google Patents

キーチェーン同期 Download PDF

Info

Publication number
JP6072305B2
JP6072305B2 JP2015553742A JP2015553742A JP6072305B2 JP 6072305 B2 JP6072305 B2 JP 6072305B2 JP 2015553742 A JP2015553742 A JP 2015553742A JP 2015553742 A JP2015553742 A JP 2015553742A JP 6072305 B2 JP6072305 B2 JP 6072305B2
Authority
JP
Japan
Prior art keywords
keychain
key
item
peer device
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015553742A
Other languages
English (en)
Other versions
JP2016505226A (ja
Inventor
マイケル ブラウワー,
マイケル ブラウワー,
アトレイ, ダラス, ビー. デ
アトレイ, ダラス, ビー. デ
ミッチェル, ディー. アドラー,
ミッチェル, ディー. アドラー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/839,126 external-priority patent/US9124637B2/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2016505226A publication Critical patent/JP2016505226A/ja
Application granted granted Critical
Publication of JP6072305B2 publication Critical patent/JP6072305B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/44Star or tree networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/065Network architectures or network communication protocols for network security for supporting key management in a packet data network for group communications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/068Network architectures or network communication protocols for network security for supporting key management in a packet data network using time-dependent keys, e.g. periodically changing keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)
  • User Interface Of Digital Computer (AREA)

Description

複数の装置間でデータを共有することは、複数の装置のユーザにとってますます普及している機能である。データ共有機能は、ファイル全体を、いくつかの場合には、複数の装置間で同期するために指定されたファイルのセット全体を更新することにより実行される。データ共有機能を提供する多くのアプリケーションは、複数の装置間で、データを保護されていない手法で送信及び受信する。
本発明のいくつかの実施形態は、(シンクグループ又はシンクサークルとも称される)同期グループのメンバーとして特定されるいくつかの装置間でのキーチェーンの同期(シンキング(syncing)とも称される)を容易にするための新規の方法を提供する。キーチェーンとは、いくつかの実施形態において、パスワード、秘密キー、証明書、セキュアノートなどを含み得る、定義済みデータ集合である。いくつかの実施形態において、方法は、ピアツーピア(P2P)ネットワークを介して装置間でキーチェーンを同期させる。いくつかの実施形態の方法は、装置間の通信の不正アクセスを防止するために、通信セキュリティ機能を採用する。
様々な実施形態は、装置がそれを介して互いと通信するP2Pネットワークを実装するために様々な技術を使用する。例えば、いくつかの実施形態が、完全に接続されたメッシュトポロジーをもつオーバーレイネットワークを採用する一方で、他の実施形態は、スタートポロジーをもつオーバーレイネットワークを使用する。更に、いくつかの実施形態は、P2Pネットワークを実装するために、任意の数の追加及び/又は異なるオーバーレイネットワークを利用する。
いくつかの実施形態において、方法は、装置が互いに通信するデータを保護するためのセキュアなトランスポート層を提供する。いくつかの実施形態の方法が、メッセージベースの通信プロトコル(例えば、オフザレコード(OTR)メッセージング)を使用して装置の各々の間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する一方で、他の実施形態の方法は、ストリームベースの通信プロトコル(例えば、セキュアソケットレイヤ(SSL))を使用して装置の各対間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する。
いくつかの実施形態の方法は、(キーチェーン全体を同期させることとは対照的に)キーチェーンの個別のアイテム(キーチェーンアイテムとも称される)を同期させることによって、装置間でキーチェーンを同期させる。いくつかの事例では、キーチェーンアイテムに同期させる時に、いくつかの実施形態の方法は、同一のキーチェーンアイテムの複数のバージョン間で競合を検出する。様々な実施形態の方法は、そのような競合を様々な方法で解決する。例えば、いくつかの実施形態では、方法は、キーチェーンアイテムの直近のバージョンを、装置間での同期対象のキーチェーンアイテムとして使用する。いくつかの実施形態では、追加の及び/又は異なる手法が使用され得る。
いくつかの実施形態において、方法は、条件及び/又は要件の定義済みセットに従って、装置上のキーチェーンデータ(例えば、キーチェーンアイテム)へのアクセスを制限するためのデータ保護機能を提供する。例えば、装置上の各キーチェーンアイテムは、いくつかの実施形態において、特定の保護ドメインに属するものとして指定される。いくつかの実施形態の方法は、特定のキーチェーンアイテムが属する保護ドメインについての条件及び/又は要件の定義済みセットが満たされた時にのみ、装置がその特定のキーチェーンアイテムにアクセスすることを許可する。条件及び/又は要件の例として、装置がアンロック状態であること、装置がロック状態であること、装置のユーザが特定のパスワードを入力することなどが挙げられる。この手法では、装置上のキーチェーンアイテムへのアクセスは、粒度が高い様式で制御され得る。
以上の要約は、本発明のいくつかの実施形態を簡潔に紹介するためのものである。本文書で開示される全ての発明主題の、序論又は概要であることを意味するものではない。以下の「発明を実施するための形態」、及び「発明を実施するための形態」で参照される図面は、この「発明の概要」で説明された実施形態、並びに他の実施形態を、更に説明するものである。したがって、本明細書で述べる全ての実施形態を理解するために、発明の概要、発明を実施するための形態及び図面の十分な検討が必要とされる。更に、特許請求される内容は、主題の趣旨から逸脱することなしに他の特定の形態で実施できるため、特許請求される内容は発明の概要、発明を実施するための形態及び図面における例示的な詳細によって制限されず、むしろ添付の特許請求の範囲によって規定されるべきものである。
本発明の新規の特徴は、添付の特許請求の範囲で説明される。しかしながら、説明のため、本発明のいくつかの実施形態は、以下の図に示される。
本発明のいくつかの実施形態に係る、いくつかの装置間のパスワードを同期させること概念的に示す図である。 本発明のいくつかの実施形態に係る、直接P2Pネットワークのためのネットワークアーキテクチャを概念的に示す図である。 本発明のいくつかの実施形態に係る、間接P2Pネットワークのためのネットワークアーキテクチャを概念的に示す図である。 本発明のいくつかの実施形態に係る、シンクサークルを開始し、そのシンクサークルに装置を追加する例を概念的に示す図である。 シンクサークルに加入することを要求するためのいくつかの実施形態のプロセスを概念的に示す図である。 シンクサークルに加入するための要求を処理するためのいくつかの実施形態のプロセスを概念的に示す図である。 パスワードを同期させるための図2に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す図である。 パスワードを同期させるための図3に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す図である。 パスワードを同期させるための図3に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す図である。 本発明のいくつかの実施形態に係る、キーチェーンのためのデータ構造を概念的に示す図である。 いくつかの実施形態の、キーチェーンマネージャの様々な状態及びこれらの状態間での遷移について説明する状態図を概念的に示す図である。 ピア装置に更新をプッシュするためのいくつかの実施形態のプロセスを概念的に示す図である。 ピア装置からの更新を処理するためのいくつかの実施形態のプロセスを概念的に示す図である。 競合している競合解決を解決するためのいくつかの実施形態のプロセスを概念的に示す図である。 キーチェーンアイテム競合を解決するためのいくつかの実施形態のプロセスを概念的に示す図である。 様々な装置における様々なキーチェーンアイテムを概念的に示す図である。 キーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセスを概念的に示す図である。 着信キーチェーンアイテムを蓄積するための処理キューを概念的に示す図である。 ソース装置から受信したキーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセスを概念的に示す図である。 保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、装置をアンロックすることを必要とする保護ドメインにより保護されたキーチェーンアイテムを示す図である。 保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、少なくともブート後に装置を一度アンロックすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す図である。 保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をオンにすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す図である。 保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をアンロックすることが必要であり、追加の認証も必要とする保護ドメインによって保護されたキーチェーンアイテムを示す図である。 1つのデバイスについて異なる条件セットを有する2つの保護ドメインによって保護されるデータを示す図である。 いくつかの装置により形成されたいくつかのシンクサークルを概念的に示す図である。 いくつかの異なる保護ドメインについていくつかの装置により形成されたシンクサークルを概念的に示す図である。 いくつかの実施形態のキーチェーンマネージャのソフトウェアアーキテクチャを概念的に示す図である。 本発明のいくつかの実施形態が実行される、電子システムを概念的に示す図である。
以下の発明の詳細な説明において、本明細書では、本発明の数多くの詳細内容、例、実施形態を記述して説明する。しかしながら、本発明は、説明されている実施形態に限定されるものではないということ、並びに本発明が具体的詳細及び記載の実施例の一部なしに実施され得るということが当業者には明らかであろう。例えば、本出願の図のうちの多くは、簡潔性及び/又は説明を目的として、特定の数の装置に関して説明する。本発明は、これらの図に示される装置の数には限定されるものではなく、本発明は任意の数の異なる装置を用いて実施され得ることが当業者には了解されよう。
本発明のいくつかの実施形態は、同期グループ(シンクグループ又はシンクサークルとも称される)のメンバーとして指定されるいくつかの装置間でのキーチェーンの同期を容易にするための新規の方法を提供する。キーチェーンとは、いくつかの実施形態において、パスワード、秘密キー、証明書、セキュアノートなどを含み得る、定義済みデータ集合である。いくつかの実施形態において、方法は、P2Pネットワークを介して装置間でキーチェーンを同期させる。いくつかの実施形態の方法は、装置間の通信の不正アクセスを防止するために、通信セキュリティ機能を採用する。
様々な実施形態は、装置がそれを介して互いと通信するP2Pネットワークを実装するために様々な技術を使用する。例えば、いくつかの実施形態が、完全に接続されたメッシュトポロジーをもつオーバーレイネットワークを採用する一方で、他の実施形態は、スタートポロジーをもつオーバーレイネットワークを使用する。更に、いくつかの実施形態は、P2Pネットワークを実装するために、任意の数の追加の及び/又は異なるオーバーレイネットワークを利用する。
いくつかの実施形態において、方法は、装置が互いに通信するデータを保護するためのセキュアなトランスポート層を提供する。いくつかの実施形態の方法が、メッセージベースの通信プロトコル(例えば、OTRメッセージング)を使用して装置の各対間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する一方で、他の実施形態の方法は、ストリームベースの通信プロトコル(例えば、SSL)を使用して装置の各対間にセキュアな通信チャネルを提供することによって、セキュアなトランスポート層を実装する。
いくつかの実施形態の方法は、(キーチェーン全体を同期させることとは対照的に)キーチェーンの個別のアイテム(キーチェーンアイテムとも称される)を同期させることによって、装置間でキーチェーンを同期させる。いくつかの事例では、キーチェーンアイテムに同期させる時に、いくつかの実施形態の方法は、同一のキーチェーンアイテムの複数のバージョン間で競合を検出する。様々な実施形態の方法は、そのような競合を様々な方法で解決する。例えば、いくつかの実施形態において、方法は、キーチェーンアイテムの直近のバージョンを、デバイス間での同期対象のキーチェーンアイテムとして使用する。いくつかの実施形態では、追加の及び/又は異なる手法が使用され得る。
いくつかの実施形態において、方法は、条件及び/又は要件の定義済みセットに従って、装置上のキーチェーンデータ(例えば、キーチェーンアイテム)へのアクセスを制限するためのデータ保護機能を提供する。例えば、装置上の各キーチェーンアイテムは、いくつかの実施形態において、特定の保護ドメインに属するものとして指定される。いくつかの実施形態の方法は、特定のキーチェーンアイテムが属する保護ドメインについての条件及び/又は要件の定義済みセットが満たされた時にのみ、装置がその特定のキーチェーンアイテムにアクセスすることを許可する。条件及び/又は要件の例として、装置がアンロック状態であること、装置がロック状態であること、装置のユーザが特定のパスワードを入力することなどが挙げられる。この手法では、装置上のキーチェーンアイテムへのアクセスは、粒度が高い様式で制御され得る。
図1は、本発明のいくつかの実施形態によるいくつかの装置A〜Cの間でパスワードを同期させることを概念的に示す。詳細には、図1は、装置A〜Cの間でのパスワードの例示的な同期の3つの異なる段階105〜115における装置A〜Cを示す。この例では、装置A〜Cは、パスワードを互いに同期させるシンクサークルのメンバーとして指定される。装置A〜Cの各々は、デスクトップコンピュータ、ラップトップ、スマートフォン、タブレット、又は任意の他のタイプのコンピューティング装置でよい。
第1の段階105は、装置A〜Cの各々が同じパスワード1〜3のコピーを有することによって示されるように、パスワード1〜3が装置A〜Cの間で同期されることを示す。この例では、装置A〜Cの各々のパスワード1〜3は、その装置のみが解読及びアクセスすることができる暗号化されたフォーマットで装置に記憶される。このセキュリティ機能は、図1において、装置A〜Cの各々におけるパスワード1〜3のセットを特定の形状で示すことによって概念化される。詳細には、デバイスAに記憶されたパスワード1〜3は矩形で示され、デバイスBに記憶されたパスワード1〜3は楕円形で示され、デバイスCに記憶されたパスワード1〜3は不規則凸八角形で示される。したがって、この例では、装置Aは、矩形のパスワードのみを解読し、それにアクセスすることができ、装置Bは、楕円形のパスワードのみを解読し、それにアクセスすることができ、装置Cは、不規則凸八角形のパスワードのみを解読し、それにアクセスすることができる。
図1の第2の段階110は、パスワード4が装置Aに追加されること(例えば、装置Aのユーザは、パスワード4を作成するために装置Aを使用すること)を示す。図示のとおり、パスワード4は、矩形形状で暗号化され、装置Aに記憶される。第2の段階110において、装置Aは、装置B及び装置Cとパスワード4を同期させるために、パスワード4のコピーを装置B及びCに送信する。いくつかの実施形態において、装置Aがパスワード4を受信した場合、装置Aは、装置Bのみが解読することができるフォーマットで暗号化されたパスワード4のコピーを装置Bに送信し、装置Cのみが解読することができるフォーマットで暗号化されたパスワード4の別のコピーを装置Cに送信する。これは、装置Aが、パスワード4を楕円形形状として装置Bに送信し、パスワード4を不規則凸八角形形状として装置Cに送信することによって示される。
上述のように、いくつかの実施形態は、装置間の通信の不正アクセスを防止するために、通信セキュリティ機能を提供する。装置Bとの通信を保護するために、この例における装置Aは、パスワード4のコピーを暗号化し、セキュアな通信プロトコル(例えば、SSL、OTRなど)を使用するセキュアなチャネルを介して装置Bに送信する。いくつかの実施形態のセキュアな通信チャネルは、認証及び暗号化された通信チャネルである。いくつかの実施形態において、装置Bは、セキュアなチャネル上でパスワード4を送信するために使用された暗号化フォーマットでパスワード4を記憶する。同様に、装置Cは、いくつかの実施形態において、セキュアなチャネル上でパスワードを送信するために使用された暗号化フォーマットでパスワード4を記憶する。
第3の段階115は、パスワード1〜4が装置A〜C間で同期されたことを示す。図示のとおり、装置Bは、装置Bが装置Aから受信したパスワード4の暗号化されたコピーを記憶しており、したがって、装置Aと同期している。同様に、装置Cは、装置Cが装置Aから受信したパスワード4の暗号化されたコピーを記憶しており、したがって、装置Aと同期している。上記で論じたように、この例では、装置Bに記憶されたパスワード4は、装置Bのみが解読することができるフォーマットで暗号化されており、装置Cに記憶されたパスワード4は、装置Cのみが解読することができるフォーマットで暗号化されている。
本出願では、シンクサークルのメンバーである装置間で同期させるためにパスワードを記憶する装置に言及する多数の詳細、例及び実施形態について記載する。しかしながら、いくつかの実施形態において、シンクサークルの装置のうちの1つ以上が、シンクサークルの他の装置のうちの一部又は全部と共有(即ち、同期)されていないパスワードも記憶することが、当業者には理解されよう。
本出願に記載される詳細、例及び実施形態の大部分は、キーチェーンの一部として記憶されたパスワードを更に同期させることを対象とするが、本発明はパスワードを同期させることに限定されるものではなく、本発明は、シンクサークルの装置間でキーチェーン中の他のタイプのデータ(例えば、秘密キー、証明書、セキュアなノートなど)を同期させるために実施され得ることが当業者には了解されよう。加えて、本発明は、シンクサークルの装置間で2つ以上のキーチェーンを同期させるために実施され得ることが当業者には認識されよう。
本発明のいくつかのより詳細な実施形態について、以下のセクションで説明する。セクションIでは、本発明のいくつかの実施形態による例示的なP2Pネットワークアーキテクチャの詳細を概念的に記載する。次に、セクションIIでは、本発明のいくつかの実施形態に従って、シンクサークルを作成し、そのシンクサークルにデバイスを登録することについて概念的に記載する。セクションIIIでは、本発明のいくつかの実施形態に従ってシンクサークルのデバイス間でキーチェーンを同期させることの詳細について記載する。次に、セクションIVでは、本発明のいくつかの実施形態によるキーチェーンのデータ保護機能について記載する。セクションVでは、いくつかの実施形態のキーチェーンマネージャのソフトウェアアーキテクチャについて記載する。最後に、セクションVIでは、本発明の一部の実施形態を実行する、電子システムについて記載する。
I.ピアツーピアネットワークアーキテクチャ
上述のように、いくつかの実施形態は、P2Pネットワークを介して、シンクサークルのメンバーである装置間でキーチェーンを同期させる。シンクサークルの装置間での通信を可能にするために、様々なネットワークアーキテクチャを使用して様々な実施形態のP2Pネットワークが実装される。以下の図は、P2Pネットワークアーキテクチャの様々な実装形態のうちのいくつかの例を示す。
図2は、本発明のいくつかの実施形態による直接P2Pネットワークのためのネットワークアーキテクチャを概念的に示す。この例において、装置A〜Cは、シンクサークルのメンバーである。図示のとおり、装置A〜Cの各々は、パスワードを記憶するための記憶装置210と、キーチェーンマネージャ205とを含む。いくつかの実施形態のキーチェーンマネージャ205は、装置A〜C間でのパスワードの同期を可能にするための機能を実行する役割を果たす。例えば、いくつかの実施形態において、キーチェーンマネージャ205は、シンクサークルへの装置の登録、装置A〜C間でのパスワードの同期、競合しているパスワード間の競合の解決、異なるタイプのキーチェーンのマニフェストの生成、装置A〜C間でデータをトランスポートするためのセキュアな通信チャネルの提供などを扱う。
図2に示したとおり、装置A〜Cは、完全に接続したメッシュトポロジーをもつオーバーレイネットワークを介して互いと通信する。したがって、装置A〜Cの各々は、他の装置の各々と直接通信することができる。即ち、装置Aは、装置B及びCと直接通信することができ、装置Bは、装置A及びCと直接通信することができ、装置Cは、装置A及びBと直接通信することができる。
上述のように、いくつかの実施形態は、装置が互いに通信するデータを保護するために、セキュアなトランスポート層を提供する。この例では、装置A〜Cは、装置A〜Cの各対の間に確立されるセキュアな通信チャネルを介して互いと通信する。セキュアな通信チャネルは、メッセージベースの通信プロトコル(例えば、OTRメッセージング)、ストリームベースの通信プロトコル(例えば、SSL)などのような、任意の数の様々なプロトコルを使用して実装され得る。
図3は、本発明のいくつかの実施形態による間接P2Pネットワークのためにネットワークアーキテクチャを概念的に示す。図2と同様に、この例では、装置A〜Cは、シンクサークルのメンバーであり、装置A〜Cの各々は、記憶装置210とキーチェーンマネージャ205とを含む。
図3に示したとおり、装置A〜Cは、スタートポロジーをもつオーバーレイネットワークを介して互いと通信する。詳細には、装置A〜Cは、スタートポロジーの中心として機能し、データを記憶するためのクラウドストレージサービス並びに他のクラウドサービス(例えば、クラウドコンピューティングサービス)を提供するクラウドサービス305を介して互いと通信する。例えば、装置Aが装置Bにデータを通信したいと望む場合、装置Aは、クラウドサービス305にデータを記憶し、クラウドサービス305は、(例えば、プッシュ通知サービスを介して)データに関して装置Bに通知し、装置Bは、クラウドサービス305からデータを取り出す。
図示のとおり、クラウドサービス305は、シンクサークルの名前と、シンクサークルのメンバーである装置を指定する記憶装置のシンクサークル装置リスト310とを記憶する。いくつかの実施形態において、装置は、装置を一意に識別するデータによって指定される。そのようなデータの例として、装置のIDを認証するための装置署名公開/秘密キーペアの公開キー、装置のデバイスタイプ(例えば、デスクトップコンピュータ、タブレット、スマートフォンなど)、装置の名前など、あるいは任意の数のそのようなデータの組み合わせが挙げられる。
また、クラウドサービス305は、記憶装置315にユーザ署名を記憶する。いくつかの実施形態におけるユーザ署名は、メッセージ、文書又は任意の他のタイプのデータの署名者としてユーザのIDを認証するための電子署名である。いくつかの実施形態において、シンクサークルは、クラウドサービスアカウントにリンクしており、そのクラウドサービスアカウントと関連付けられた装置(例えば、そのアカウントと関連付けられたクラウドサービスにアクセスするためのアプリケーション又はプログラムを有する装置)は、シンクサークルに登録するための候補である。いくつかのそのような実施形態における記憶装置315は、クラウドサービス305のアカウントのユーザが署名者であることを示すためにクラウドサービスアカウントのパスワードに基づいて生成されたユーザ署名公開/秘密キーペアの秘密キーを用いて署名された署名を含む。記憶装置315に記憶されるユーザ署名の例として、ユーザ署名公開/秘密キーペアの秘密キーを用いて署名されたシンクサークル装置リストの署名、ユーザ署名キーペアの秘密キーを用いて署名された登録要求の署名、及び/又はクラウドサービスアカウントのユーザのIDを認証するための任意の他の署名が挙げられる。
図3は、また、クラウドサービス305が装置署名を記憶装置320に記憶することを示す。いくつかの実施形態において、装置署名は、メッセージ、文書又は任意の他のタイプのデータの署名者としてシンクサークルの装置のIDを認証するための電子署名である。例えば、いくつかの実施形態において、記憶装置320は、シンクサークルのメンバーである装置に属する装置署名公開/秘密キーペアの秘密キーを用いて署名されたシンクサークル装置リストの署名を含む。そのような署名は、署名した装置が、シンクサークル装置リスト中の装置のリストをシンクサークルのメンバーとして確認することを示す。いくつかの実施形態において、シンクサークルが定常状態である(例えば、保留中の又は未承認の登録要求がない)時、記憶装置320中の装置署名は、シンクサークルのメンバーである各装置について、装置の装置署名公開/秘密キーペアの秘密キーを用いて署名されたシンクサークル装置リストの署名を含む。即ち、そのような場合における署名は、シンクサークル装置リストにリストアップされた装置はいずれも、シンクサークル装置リストにリストアップされた装置がシンクサークルのメンバーであることに同意することを一括して示している。
更に、クラウドサービス305は、シンクサークルの装置間でキーチェーンに同期させるために、記憶装置325にキーチェーンデータを記憶し、ユーザ署名公開/秘密キーペアの公開キー、ユーザ署名キーペアを生成するためにシンクサークルの装置間で共有されるランダムストリング(例えば、256ビットストリング)、及び保留中の登録要求のリストを含み得る他のデータを記憶装置330に記憶する。いくつかの実施形態において、クラウドサービス305は、記憶装置310〜330をキー値ストアとして実装する。
記憶装置310〜33は、別個の記憶装置として図3に示されているが、いくつかの実施形態では、記憶装置310〜330は、単一の記憶装置として実装される一方で、他の実施形態では、記憶装置310〜330はいくつかの記憶装置にわたって実装される。
いくつかの実施形態において、装置がクラウドサービス305を介して互いと通信するデータを保護するために、図2を参照して上述したセキュアなトランスポート層が利用される。即ち、装置A〜Cが、装置A〜Cの各対の間に確立されたセキュアな通信チャネルを介して互いと通信する一方で、装置A〜Cは、通信をトランスポートするためのメカニズムとしてクラウドサービス305を使用する。いくつかの実施形態のセキュアな通信チャネルは、任意の数の様々なプロトコル(例えば、メッセージベースの通信プロトコル(例えば、OTRメッセージング)、ストリームベースの通信プロトコル(例えば、SSL)など)を使用して実装され得る。
II.シンクサークル
上述したように、シンクサークルのメンバーである装置は、装置間でキーチェーンを同期させる。そのような装置は、本出願では、ピア装置又は単にピアとも称される。以下のセクションは、シンクサークルの装置間でキーチェーンを同期させるためにシンクサークルを生成し、シンクサークルに装置を追加するための例について記載する。
図4は、本発明のいくつかの実施形態に従って、シンクサークル420を開始し、シンクサークル420に装置を追加する例を概念的に示す。詳細には、図4は、シンクサークル420に装置A及びBを登録する3つの段階405〜415を示している。段階405〜410の各々は、シンクサークル420、及びシンクサークル420についてのデータを記憶する記憶装置425の概念図を示す。いくつかの実施形態において、記憶装置425はクラウドストレージサービス305中に実装され、記憶装置310〜330のデータを含むが、それについては、図3を参照して上述した。クラウドストレージサービス中で記憶装置425を実装することと共に、いくつかの実施形態では、シンクサークル420のメンバーである各装置は、記憶装置425中のデータのコピーをその装置上にローカルに記憶する。
第1の段階405は、装置がシンクサークル420に登録されてない状態のシンクサークル420を示す。図示のとおり、シンクサークル420は空であり、記憶装置425は、シンクサークル420のメンバーに関するデータを含んでいない。いくつかの実施形態のシンクサークル420は、クラウドストレージサービスアカウントにリンクしており、そのクラウドストレージサービスアカウントと関連付けられた装置(例えば、そのアカウントと関連付けられたクラウドストレージサービスにアクセスするためのアプリケーション又はプログラムを有する装置)は、シンクサークル420に登録するための候補である。いくつかのそのような実施形態における記憶装置425は、そのアカウントと関連付けられた装置について記述するメタデータを記憶する。
第2の段階410は、装置がシンクサークル420に登録されている状態のシンクサークル420を示す。第2の段階410に示すように、装置Aが、シンクサークル420に登録され、記憶装置425は、シンクサークル420のメンバーとして装置Aを識別するデータを記憶している。いくつかの実施形態において、シンクサークル420が空である時にはシンクサークル420は実際には存在しない。いくつかのそのような実施形態において、第1の装置をシンクサークル420に登録する場合にシンクサークル420が生成される。クラウドストレージサービスアカウントと関連付けられた装置のうちの1つのユーザが、装置上でキーチェーン同期機能をイネーブルした場合、装置は、シンクサークル420を生成し、シンクサークル420に装置自体を登録する。
シンクサークル420に登録するために、装置Aは、シンクサークル420のメンバーとして装置Aを一意に識別するデータを記憶装置425に記憶する。そのようなデータの例として、装置Aを認証するための装置署名公開/秘密キーペアの公開キー、装置Aのデバイスタイプ(例えば、デスクトップコンピュータ、タブレット、スマートフォンなど)、装置Aの名前など、あるいは任意の数のそのようなデータの組み合わせが挙げられる。
いくつかの実施形態において、シンクサークル420の又はシンクサークル420に潜在的に加入し得る各装置は、同じ公開キー暗号アルゴリズム(例えば、RSAアルゴリズム、楕円曲線暗号(ECC)アルゴリズムなど)を使用して、装置が互いのメッセージを暗号化及び解読し得るように装置署名キーペアを生成する。更に、いくつかの実施形態において、各装置は、装置署名公開/秘密キーペアをランダムに生成する。このようにして、各装置は、任意の他の装置が生成した装置署名公開/秘密キーペアとは異なる一意の装置署名公開/秘密キーペアを生成する。
いくつかの実施形態において、装置Aは、(1)クラウドストレージサービスアカウントのユーザを認証するためのユーザ署名公開/秘密キーペアの秘密キーを用いてデータを暗号化することにより、シンクサークル420のメンバーを識別するデータ(この例では、装置Aを一意に識別するデータ)の署名を生成し、(2)署名付きデータを記憶装置425に記憶する。いくつかの実施形態のユーザ署名公開/秘密キーペアは、(1)クラウドストレージサービスアカウントと関連付けられたパスワード、及び(2)シンクサークル420の装置間で共有されるランダムストリング(例えば、256ビットストリング)に基づいて生成される。
いくつかの実施形態において、シンクサークル420における、又はシンクサークル420に潜在的に加入し得る各装置は、同じ公開キー暗号アルゴリズム(例えば、RSAアルゴリズム、ECCアルゴリズムなど)を使用して、ユーザ署名キーペアを生成する。いくつかの実施形態では、そのような装置はまた、装置署名キーペアを生成するために使用される公開キー暗号アルゴリズムを利用して、ユーザ署名キーペアを生成する。装置が各々、同じ公開キー暗号アルゴリズムに対する入力としてクラウドストレージサービスアカウントと関連付けられたパスワードとランダムストリングとを使用するので、装置は全て、同じ公開/秘密キーペアを生成する。したがって、この例では、シンクサークル420のメンバーを識別するデータの署名は、クラウドストレージサービスアカウントのユーザがシンクサークル420に装置Aを登録していることを認証するためのものである。装置Aがシンクサークル420に登録された第1の装置なので、装置Aは、ユーザ署名キーペアの公開キーとランダムストリングとを記憶装置425に記憶する。
第3の段階415は、別の装置がシンクサークル420に登録されていることを示す。図示のとおり、装置Bがシンクサークル420に登録され、記憶装置425は、装置Bもシンクサークル420のメンバーとして識別するデータを記憶する。更に、装置A及び装置Bがシンクサークル420のメンバーなので、装置A及び装置B上のパスワードが同期される。
装置Bをシンクサークル420に登録するために、いくつかの実施形態では、(1)装置Bが、シンクサークル420に加入するための要求を記憶装置425に記憶することによって、その要求をサブミットすること、及び(2)装置Aがその要求を承認することが必要とされる。異なる実施形態では、シンクサークルに加入するための要求を承認するために、異なる要件が定義される。例えば、いくつかの実施形態では、シンクサークルのメンバーである1つのみの装置が、要求を承認することが必要である一方で、他の実施形態では、シンクサークルのメンバーである装置はいずれも、要求を承認することが必要である。
図5は、シンクサークルに加入することを要求するためのいくつかの実施形態のプロセス500を概念的に示す。いくつかの実施形態において、シンクサークルに加入することを要求する装置は、(例えば、装置のユーザが、装置上でキーチェーン同期機能をイネーブルすると)プロセス500を実行する。プロセス500を実行する図4の装置Bを参照して、プロセス500について記載する。
プロセス500は、(510において)パスワードについて装置Bのユーザにプロンプトを出すことにより開始する。いくつかの実施形態において、プロセス500は、クラウドストレージサービスアカウントにパスワードに入力するようにユーザに要求するポップアップウィンドウを装置Bのディスプレイスクリーン上に表示することによって、パスワードについてユーザにプロンプトを出す。
次に、プロセス500は、(520において)ユーザが提供したパスワードに基づいてユーザ署名公開/秘密キーペアを生成する。いくつかの実施形態において、プロセス500は、シンクサークル420のメンバー間で共有するために、パスワード及びランダムストリングに基づいてユーザ署名キーペアを生成する。いくつかのそのような実施形態のプロセス500は、ユーザ署名キーペアを生成するために、記憶装置425からランダムストリングを取り出す。異なる実施形態では、プロセス500は、異なる技術を使用して、ユーザ署名キーペアを生成する。例えば、いくつかの実施形態において、プロセス500は、RSAアルゴリズム、ECCアルゴリズム、又は任意の他のタイプの公開キー暗号法を使用して、装置署名キーペアを生成し得る。
次いで、プロセス500は、(530において)装置Bを認証するための装置署名公開/秘密キーペアを生成する。異なる実施形態のプロセス500は、異なる技術を使用して装置署名キーペアを生成する。いくつかの実施形態では、プロセス500は、520において、ユーザ署名キーペアを生成するために使用される同じタイプの公開キー暗号法を使用して、装置署名キーペアを生成する。他の実施形態では、プロセス500は、異なるタイプの公開キー暗号法を使用して装置署名キーペアを生成する。
装置署名キーペアが生成されると、プロセス500は、(540において)シンクサークル420に加入するための要求を生成する。いくつかの実施形態において、その要求は、装置Bを一意に識別するための装置Bの装置署名キーペアの公開キーと、プロセス500が記憶装置425から取り出すシンクサークル420の装置のリストとを含む。
次に、プロセス500は、(550において)生成されたキーペアに基づいて要求の署名を生成する。詳細には、プロセス500は、(1)ユーザ署名キーペアの秘密キーを用いた要求の署名、及び(2)装置Bの装置署名キーペアの秘密キーを用いた要求の署名を生成する。
最後に、プロセス500は、(560において)要求と生成された署名とをサブミットする。いくつかの実施形態において、プロセス500は、記憶装置425に記憶された登録要求リストにその要求を追加することによって、要求をサブミットする。いくつかの実施形態のプロセス500は、ユーザ署名キーペアの秘密キーを用いて署名された要求の署名及び装置Bの装置署名キーペアの秘密キーを用いた要求の署名を記憶装置425に記憶することによって、署名をサブミットする。
図6は、シンクサークルに加入するための要求を処理するためのいくつかの実施形態のプロセスを概念的に示す。いくつかの実施形態において、シンクサークルのメンバーである装置は、シンクサークルに加入するための要求がサブミットされ、保留中であるという通知を(例えば、プッシュ通知サービスを介して)装置が受信した場合にプロセス600を実行する。プロセス600を実行する図4の装置Bを参照して、プロセス600について記載する。
プロセス600は、(610において)シンクサークル420に装置Bを追加するための要求を取り出すことにより開始する。いくつかの実施形態において、プロセス600は、記憶装置425にアクセスし、登録要求リストからの要求、装置Bの装置署名キーペアの秘密キーを用いて署名された要求の署名、及びユーザ署名キーペアの秘密キーを用いて署名された要求の署名を取り出すことによって要求を取り出す。
次いで、プロセス600は、(620において)要求が認証されたかを判定する。いくつかの実施形態において、プロセス600は、(1)クラウドストレージサービスアカウントのユーザが、シンクサークル420に装置Bを登録するための要求をサブミットしたことと、(2)シンクサークル420に装置を登録するための要求が、実際には装置Bを登録するためのものであることをプロセス600が検証した場合に要求を認証する。クラウドストレージサービスアカウントのユーザが装置Bを登録するための要求をサブミットしたことを検証するために、いくつかの実施形態のプロセス600は、(1)ユーザ署名キーペアの秘密キーを用いて署名された要求の署名をユーザ署名キーペアの公開キーを用いて解読し、(2)登録要求リストから取り出された要求データが、解読された署名と一致することを検査する。換言すると、プロセス600は、ユーザ署名キーペアの秘密キーを用いて署名された要求の解読された署名が、装置Bの装置署名キーペアの公開キーとシンクサークル420の装置のリストとを含むことを検査する。
いくつかの実施形態において、プロセス600は、(1)装置Bの装置署名キーペアの秘密キーを用いて署名された要求の署名を装置Bの装置署名キーペアの公開キーを用いて解読し、(2)登録要求リストから取り出された要求データが、解読された署名と一致することを検査することによって、シンクサークル420に装置を登録するための要求が、装置Bを登録するためのものであることを検証する。装置Bの装置署名キーペアの秘密キーを用いて署名された要求の署名を解読する代わりに、又はそれに加えて、いくつかの実施形態のプロセス600は他の技法を使用して、シンクサークル420に装置を登録するための要求が、装置Bを登録するためのものであることを検証する。例えば、プロセス600は、シンクサークルに登録することを装置Bが要求した場合にランダムに生成され、装置B上に表示された、パスワード、パスコード、個人識別番号(PIN)コードなどを入力すること、装置Bがシンクサークル420に登録することを要求している時に装置B上に表示された画像に一致する装置A上に表示された画像を選択することなどを行うようにユーザにプロンプトを出し得る。
630において、プロセス600は、要求がシンクサークルの装置により既に承認済みであるかを判定する。いくつかの実施形態において、プロセス600は、記憶装置425が、(1)シンクサークル420の装置のリストと、(2)シンクサークルの装置に属する装置署名公開/秘密キーペアの秘密キーを用いて署名された要求側装置との署名とを含む場合に、要求がシンクサークルの装置により既に承認済みであると判定する。
要求が既に承認済みであるとプロセス600が判定した場合、プロセス600は、(640において)要求の承認に肯定応答し、次いで、プロセス600は終了する。いくつかの実施形態のプロセス600は、(1)プロセス600が動作している装置の装置署名キーペアの秘密キーを用いて(ここでは、新たに承認された装置を含む)シンクサークル装置リストの署名を生成し、(2)装置署名を用いて生成された署名を記憶装置425に記憶することによって、要求の承認に肯定応答する。
要求が未承認であるとプロセス600が判定した場合、プロセス600は、(650において)ユーザに要求を承認するようにプロンプトを出す。異なる実施形態は、異なる方法で要求を承認する。例えば、いくつかの実施形態のプロセス600は、ユーザがクラウドストレージサービスアカウントにパスワードを提供した場合に要求を承認する。いくつかの実施形態の装置は、ユーザがパスワードを装置に入力した場合にはクラウドストレージサービスアカウントにパスワードを記憶しないので、いくつかの実施形態のプロセス600は、(1)装置Bの装置名(例えば、「ジョンドウのスマートフォン」)がシンクサークル420に加入するように要求したことを示し、(2)クラウドストレージサービスアカウントと関連付けられたパスワードを入力するようにユーザに要求するポップアップウィンドウを装置Aのディスプレイスクリーン上に表示することによって、パスワードについてユーザにプロンプトを出す。
次に、プロセス600は、(660において)要求を承認するための入力をユーザから受け取ったかを判定する。プロセス600が要求を承認するための入力が受け取られていないと判定した場合、プロセスは、ユーザからの入力について検査を継続するために660に戻る。プロセス600が要求を承認するための入力が受け取られたと判定した場合、プロセス600は670に進む。
670において、プロセスは、ユーザ承認が認証されるかを判定する。クラウドストレージサービスアカウントのユーザが要求を承認したことを検証するためにクラウドストレージサービスアカウントに対するパスワードが使用される場合には、いくつかの実施形態のプロセス600は、650においてユーザにより提供されたパスワード及び記憶装置425に記憶されたランダムストリングに基づいてユーザ署名公開/秘密キーペアを生成することによってユーザ承認を認証し、プロセス600が生成した公開キーが記憶装置425に記憶されたユーザ署名キーペアの公開キーと一致することを検証する。前述したように、シンクサークル420における、又はシンクサークル420に潜在的に加入し得る各装置は、いくつかの実施形態において、同じアルゴリズムを使用してユーザ署名キーペアを生成する。したがって、記憶装置425に記憶されたユーザ署名キーペアの公開キーと一致するプロセス600により生成された公開キーは、クラウドストレージサービスアカウントのユーザが要求を承認したことを検証する。
プロセス600がユーザ承認が認証されていないと判定した場合、プロセス600は終了する。プロセス600が、ユーザ承認が認証されたと判定した場合、プロセス600は、(680において)シンクサークルに要求側装置を追加する。いくつかの実施形態において、プロセス600は、装置Aの装置署名キーペアの秘密キーを用いてシンクサークル装置リストの署名を生成し、装置署名を用いて生成された署名を記憶装置425に記憶し、シンクサークル420に装置Bを追加することによって、シンクサークル420についてのシンクサークル装置リストに、装置Bを一意に識別するデータを追加する。
最後に、プロセス600は、(690において)シンクサークル420の装置間での同期対象となるように規定されたキーチェーンを装置Bと同期させる。いくつかの実施形態において、プロセス600は、図7〜図15を参照して以下に記載する技術を使用して、キーチェーンを同期させる。
図6は、シンクサークルの1つの装置が要求を承認した場合に要求側装置をシンクサークルに追加することを示しているが、異なる実施形態では、任意の数の異なる承認要件が使用され得ることが当業者には理解されよう。例えば、いくつかの実施形態では、シンクサークルの全ての装置、規定数の装置、規定パーセンテージの装置などが、要求側装置がシンクサークルに追加し得る前に装置を承認することが必要とされ得る。
いくつかの実施形態は、シンクサークルから装置を除去することを可能にする。例えば、シンクサークルの装置のユーザが、シンクサークルの別の装置がシンクサークルに加入することを認証されなかったのではないか、ユーザがシンクサークルの装置を紛失したのではないか、シンクサークルの装置が盗まれたのではないかなどを考えた場合、ユーザは、シンクサークルから不要な装置を除去することができる。異なる実施形態は、別様にシンクサークルからの装置の除去を処理する。例えば、いくつかの実施形態において、装置がシンクサークルから除去された場合、シンクサークルの残りの装置は、残りの装置間でのパスワードの同期を継続する。いくつかのそのような実施形態では、除去された装置をシンクサークルに再び追加するために、その装置は、登録プロセス(例えば、図4〜図6を参照した上述したプロセス)を経ることが要求される。別の手法の下では、装置がシンクサークルから除去された場合、シンクサークルは破棄される(例えば、シンクサークル装置リストが削除される)。そのような場合、シンクサークルを再び確立し、(例えば、図4〜図6を参照して上述した例及びプロセスを使用して)新たに確立されたシンクサークルに装置を追加しなければならない。
III.パスワードの同期
シンクサークルが確立され、そのシンクサークルに少なくとも2つの装置が登録されると、シンクサークルのメンバーとして指定された装置間でのキーチェーンの同期を可能にするために、いくつかの実施形態の方法が使用される。上述のように、いくつかの実施形態において、方法は、装置間でキーチェーンを同期させるために、P2Pネットワークを利用して装置間でデータを通信する。
図7は、パスワードを同期させるための図2に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す。詳細には、図7は、シンクサークルの装置のうちの1つについて新しいパスワードが作成された時に、シンクサークルのメンバーである装置間でパスワードを同期させるためのデータフロー動作1〜9を概念的に示す。この例では、シンクサークルの確立及びシンクサークルへの装置A〜Cの登録は、図4〜図6を参照して上述したものと同様の技術を使用して実行される。
上述のように、図7に示すネットワークアーキテクチャは、図2を参照して上述したものと同様である。即ち、装置A〜Cの各々は、パスワードの同期を可能にするためのキーチェーンマネージャ205と、パスワードを記憶するための記憶装置210とを含む。更に、装置A〜Cは、装置A〜Cの各々が他の装置の各々と直接通信することを可能にする完全に接続されたメッシュトポロジーをもつオーバーレイネットワークを介して互いと通信する。いくつかの実施形態において、装置A〜Cの対ごとに(即ち、装置A及び装置B、装置A及び装置C、並びに装置B及び装置Cについて)、装置上のキーチェーンマネージャ205は、装置間でデータをトランスポートするために、装置の対の間に(例えば、OTRメッセージング、SSLなどを使用する)セキュアな通信チャネルを提供することを可能にする。
図7のデータフロー動作1〜9の開始前に、装置A〜C上のパスワードを同期させる。換言すると、装置A〜Cは各々、記憶装置210に記憶された同じパスワードを有する。データフローは、(丸1において)パスワード705を装置Aに追加することにより開始する。例えば、装置Aのユーザは、ユーザのソーシャルネットワーキングアカウントにと関連付けられたユーザ名及びパスワード入力するようにユーザに要求するソーシャルネットワーキングアプリケーション(例えば、Facebook(登録商標)アプリケーション、Twitter(登録商標)アプリケーション、Google+(登録商標)アプリケーション、LinkedIn(登録商標)アプリケーションなど)をインストール済みであり得る。
装置Aが新しいパスワード705を受信すると、装置Aは、(丸2において)パスワード705を暗号化し、それを装置Aの記憶装置210に記憶する。いくつかの実施形態において、装置A〜Cの記憶装置210に記憶されたパスワードは、対称キーアルゴリズム(データ暗号化標準(DES)アルゴリズム、トリプルデータ暗号化アルゴリズム(TDEA)、256ビットブロックサイズ及びガロア/カウンタモード(GCM)を使用する高度暗号化標準(AES)など)、並びにキー(例えば、装置にログインするためのパスワード又はパスコード、装置が生成した若しくは割り当てられたランダムキーなど、あるいは任意の数のそのようなキーの組み合わせ)を使用して保護される。装置Aがパスワード705を記憶装置210に記憶すると、キーチェーンマネージャ205は、対称キーアルゴリズム及びキーを使用してパスワードを暗号化する。
パスワード705を記憶した後、装置Aは、(丸3において)パスワード705を解読し、装置B及び装置Cの各々について暗号化する。記憶装置205に記憶された暗号化されたパスワード705を解読するために、キーチェーンマネージャ205は、対称キーアルゴリズムと、装置Aが記憶装置210にパスワード705を記憶する時にパスワード705を暗号化するために使用された上述のキーとを使用する。
上述のように、装置間でトランスポートされるデータを保護するために、装置A〜Cのあらゆる対の間のセキュアな通信チャネルが使用される。装置Aと装置Bとの対及び装置Aと装置Cとの対は各々、別個のセキュアな通信チャネルを使用するので、装置Aのキーチェーンマネージャ205は、装置Aが装置Bと確立したセキュアな通信チャネルに基づく第1のキー又はキーのセットを使用して、装置Bに送信すべきパスワード705のコピーを暗号化する。装置Aのキーチェーンマネージャ205はまた、装置Aが装置Cと確立したセキュアな通信チャネルに基づく第2の異なるキー又はキーのセットを使用して、装置Cに送信すべきパスワード705の別のコピーを暗号化する。
一例として、いくつかの実施形態では、装置Aと装置Bとの間のセキュアな通信チャネル及び装置Aと装置Cとの間のセキュアな通信チャネルは各々、OTRメッセージングを使用して実装される。いくつかのそのような実施形態では、装置A及び装置Bの公開/秘密キーペアに基づいて、装置Aと装置Bとの間にOTRセッションが確立される。更に、装置A及び装置Bの公開/秘密キーペアに基づいて、装置Aと装置Cとの間に別の別個のOTRセッションが確立される。いくつかの実施形態において、装置署名キーペアは、図4〜図6を参照して上述したように、シンクサークルに装置A〜Cを登録するために生成された同一のキーペアである。
装置Aのキーチェーンマネージャ205が装置Bについてのパスワード705のコピーを暗号化すると、装置Aは、(丸4において)パスワード705の暗号化されたコピー及びパスワード705について記述するメタデータを、装置Aと装置Bとの間に確立されたセキュアな通信チャネルを介して装置Bに送信する。パスワード705について記述するためのメタデータの例として、ある種のパスワード(インターネットパスワード、アプリケーションパスワード、ネットワークパスワード、など)、パスワードが関連する又はパスワードが使用されるアプリケーション又はウェブサイトの名前、アプリケーション又はウェブサイトのパスなどが挙げられる。
装置Bがパスワード705の暗号化されたコピーを受信すると、装置Bは、(丸5において)装置Aと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによって、パスワード705のコピーを解読する。パスワード705のコピーを解読すると、装置Bは、(丸6において)パスワード705のコピーを暗号化し、それを装置Bの記憶装置210に記憶する。この時、装置Bはパスワード705を用いて更新され、したがって、装置Bに記憶されたパスワードは、装置Aに記憶されたパスワードと同期される。
装置Aと装置Cとの間でパスワードを同期させるためのデータフロー動作に着目すると、装置Aのキーチェーンマネージャ205が装置Cについてのパスワード705のコピーを暗号化した後、装置Aは、(丸7において)パスワード705の暗号化されたコピー及びパスワード705について記述するメタデータを、装置Aと装置Cとの間に確立されたセキュアな通信チャネルを介して装置Cに送信する。いくつかの実施形態において、装置Aがパスワード705の暗号化されたコピーと共に装置Bに送信するメタデータは、装置Aが装置Cに送信するものと同じメタデータである。
パスワード705の暗号化されたコピーを受信すると、装置Cは、(丸8において)装置Aと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによってパスワード705のコピーを解読する。装置Cがパスワード705のコピーを解読した場合、装置Cは、(丸6において)パスワード705のコピーを暗号化し、それを装置Cの記憶装置210に記憶する。この時、装置Cはパスワード705を用いて更新され、したがって、装置Cに記憶されたパスワードは、装置Aに記憶されたパスワードと同期される。
図8及び図9は、パスワードを同期させるための図3に示したネットワークアーキテクチャを介した例示的なデータフローを概念的に示す。詳細には、図8及び図9は、シンクサークルの装置のうちの1つで新しいパスワードが作成された時に、シンクサークルのメンバーである装置間でパスワードを同期させるためのデータフロー動作1〜11を概念的に示す。図8は、装置Bがオフラインである間に装置Cと装置Aとの間でパスワードを同期させるために、装置C上で新しいパスワードが作成されたことに応答して実行されるデータフロー動作1〜8を概念的に示す。図9は、装置Bがオンラインになり、装置Bのパスワードを装置C及び装置Aと同期させることを概念的に示す。この例では、シンクサークルの確立及びシンクサークルへの装置A〜Cの登録は、図4〜図6を参照して上述したものと同様の技術を使用して実行される。
上述のように、図8及び図9に示すネットワークアーキテクチャは、図3を参照して上述したものと同様である。即ち、装置A〜Cの各々は、パスワードの同期を可能にするためのキーチェーンマネージャ205と、パスワードを記憶するための記憶装置210とを含む。また、装置A〜Cは、装置A〜Cの各々が、クラウドサービス305を介して他の装置の各々と間接的に通信することを可能にするスタートポロジーをもつオーバーレイネットワークを介して互いと通信し、クラウドサービス305は、スタートポロジーの中心として機能し、データを記憶するためのクラウドストレージサービスを提供する。いくつかの実施形態のクラウドサービス305は、記憶装置のシンクサークルの名前及びシンクサークル装置リスト310、装置のユーザを認証するための記憶装置のユーザ署名315、シンクサークルの装置を認証するための記憶装置の装置署名320、シンクサークルの装置間でキーチェーンを同期させるための記憶装置のキーチェーンデータ325、並びに記憶装置の他のデータ330を記憶する。更にいくつかの実施形態では、装置A〜Cの対ごとに(即ち、装置A及び装置B、装置A及び装置C、並びに装置B及び装置Cについて)、装置上のキーチェーンマネージャ205は、装置の対の間に(例えば、OTRメッセージング、SSLなどを使用する)セキュアな通信チャネルを確立し、それを介して装置の対が通信する。この例示的なデータにおける装置A〜Cは、通信をトランスポートするための手段としてクラウドサービス305を使用する。
図8及び図9のデータフロー動作1〜11の開始より前に、装置A〜C上のパスワードを同期させる。即ち、装置A〜Cは各々、記憶装置210に記憶された同じパスワードを有する。更に、データフローは、(丸1において)パスワード805を装置Cに追加することにより開始する。例えば、装置Aのユーザは、ユーザのソーシャルネットワーキングアカウントにと関連付けられたユーザ名及びパスワード入力するようにユーザに要求するソーシャルネットワーキングアプリケーション(例えば、Facebook(登録商標)アプリケーション、Twitter(登録商標)アプリケーション、Google+(登録商標)アプリケーション、LinkedIn(登録商標)アプリケーションなど)をインストール済みであり得る。
装置Cが新しいパスワード805を受信すると、装置Cは、(丸2において)パスワード805を暗号化し、それを装置Cの記憶装置210に記憶する。いくつかの実施形態において、装置A〜Cの記憶装置210に記憶されたパスワードは、対称キーアルゴリズム(データ暗号化標準(DES)アルゴリズム、トリプルデータ暗号化アルゴリズム(TDEA)など)、並びにキー(例えば、装置にログインするためのパスワード又はパスコード、装置が生成した若しくは割り当てられたランダムキーなど、あるいは任意の数のそのようなキーの組み合わせ)を使用して保護される。装置Aがパスワード805を記憶装置210に記憶すると、キーチェーンマネージャ205は、対称キーアルゴリズム及びキーを使用してパスワード805を暗号化する。
パスワード805を記憶した後、装置Cは、(丸3において)パスワード805を解読し、装置A及び装置Cの各々について暗号化する。記憶装置205に記憶された暗号化されたパスワード805を解読するために、キーチェーンマネージャ205は、対称キーアルゴリズムと、装置Cが記憶装置210にパスワード805を記憶する時にパスワード805を暗号化するために使用された上述のキーとを使用する。
上記のように、装置間でトランスポートされるデータを保護するために、装置A〜Cのあらゆる対の間のセキュアな通信チャネルが使用される。装置Aと装置Bとの対及び装置AとCとの対は各々、別個のセキュアな通信チャネルを使用するので、装置Aのキーチェーンマネージャ205は、装置Aが装置Bと確立したセキュアな通信チャネルに基づいて第1のキー又はキーのセットを使用して、装置Bに送信すべきパスワード805のコピーを暗号化する。装置Aのキーチェーンマネージャ205はまた、装置Aが装置Cと確立したセキュアな通信チャネルに基づく第2の異なるキー又はキーのセットを使用して、装置Cに送信すべきパスワード805の別のコピーを暗号化する。
例えば、いくつかの実施形態では、装置Cと装置Aとの間のセキュアな通信チャネル及び装置Cと装置Bとの間のセキュアな通信チャネルは各々、OTRメッセージングを使用して実装される。いくつかのそのような実施形態では、装置C及び装置Aの装置署名公開/秘密キーペアに基づいて、装置CとAとの間にOTRセッションが確立される。更に、装置C及び装置Bの装置署名公開/秘密キーペアに基づいて、装置Cと装置Bとの間に別の別個のOTRセッションが確立される。いくつかの実施形態の装置署名キーペアは、図4〜図6を参照して上述したように、シンクサークルに装置A〜Cを登録するために生成された同一のキーペアである。
装置Cのキーチェーンマネージャ205が、装置Aについてのパスワード805のコピー及び装置Bについてのパスワード805の別のコピーを暗号化すると、装置Cは、(丸4において)パスワード805の暗号化されたコピー及びパスワード805について記述するメタデータをクラウドサービス305の記憶装置325に記憶する。パスワード805について記述するためのメタデータの例として、ある種のパスワード(インターネットパスワード、アプリケーションパスワード、ネットワークパスワード、など)、パスワードが関連する又はパスワードが使用されるアプリケーション又はウェブサイトの名前、アプリケーション又はウェブサイトのパスなどが挙げられる。
前述したように、いくつかの実施形態において、記憶装置310〜330はキー値ストアとして実装される。1つの受信側装置を対象とする送信側装置によってクラウドサービス305(例えば、記憶装置325)に記憶されたデータについてのいくつかの実施形態のキーは、第1及び第2の装置が属するシンクサークルの名前と送信側装置の識別子と受信側装置の識別子とのコンカチネーションである。いくつかの実施形態において、受信側装置は、キー値ペアの値が送信側装置により変更した時(例えば、値が追加された時、修正された時、削除された時など)、クラウドサービス305が(例えば、プッシュ通知サービスを介して)受信側装置に通知するように、このキー値ペアに登録する。
そのような手法では、クラウドサービス305が装置Cからパスワード805のコピー及び装置Aについてのその対応するメタデータを受信した時、クラウドサービス305は、(丸5において)上述した様式で形成されたキーの値として、データを記憶装置325に記憶する。次いで、クラウドサービス305は、キーと関連付けられた値が変更したこと(例えば、この例では、データが追加されたこと)を(例えば、プッシュ通知サービスを介して)装置Aに通知する。同様に、クラウドサービス305が装置Cからパスワード805のコピー及び装置Bについてのその対応するメタデータを受信した時、クラウドサービス305は、(丸5において)上述した様式で形成されたキーの値として、データを記憶装置325に記憶する。次いで、クラウドサービス305は、キーと関連付けられた値が変更したこと(例えば、この例では、データが追加されたこと)を(例えば、プッシュ通知サービスを介して)装置Bに通知する。図8には装置Bがオフラインとして示されているので、装置Bは、この例ではまだ通知を受信しない。
引き続き図8を参照すると、装置Aがクラウドサービス305から通知を受信すると、装置Aは、(丸6において)暗号化されたパスワード805のコピー及びメタデータをクラウドサービス305に記憶するために装置Cが使用したものと同一のキーを使用して、暗号化されたパスワード805のコピー及び関連するメタデータを取り出す。装置Aがパスワードデータを取り出すと、装置Aは、(丸8において)装置Cと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによってパスワード805のコピーを解読する。パスワード805のコピーを解読すると、装置Aは、(丸8において)パスワード805のコピーを暗号化し、それを装置Aの記憶装置210に記憶する。この時点で、装置Cはパスワード805を用いて更新され、したがって、装置Aに記憶されたパスワードは、装置Cに記憶されたパスワードと同期される。
図9に示すように、装置Bはこの時オンラインである。装置Bがオンラインであることをクラウドサービス305が検出した場合、クラウドサービス305は、装置Cからデータを受信するためのキー値ペアと関連付けられた値が変更した(例えば、この例では、データが追加された)ことを示す通知を装置Bに送信する。
装置Bがクラウドサービス305から通知を受信すると、装置Bは、(丸9において)暗号化されたパスワード805のコピー及びメタデータをクラウドサービス305に記憶するために装置Cが使用したものと同一のキーを使用して、暗号化されたパスワード805のコピー及び関連するメタデータを取り出す。装置Bがパスワードデータを取り出した後、装置Bは、(丸10において)装置Cと確立したセキュアな通信チャネルについて生成されたキー又はキーのセットを使用することによってパスワード805のコピーを解読する。
装置Bがパスワード805のコピーを解読した後、装置Bは、(丸11において)パスワード805のコピーを暗号化し、それを装置Bの記憶装置210に記憶する。この時点で、装置Bはパスワード805を用いて更新され、したがって、装置Bに記憶されたパスワードは、装置Cに記憶されたパスワードと同期される。
図7〜図9に示した丸付き数字の順番に基づいて、特定の順で図7〜図9のデータフロー動作について記載してきたが、当業者には、丸付き数字は必ずしもデータフロー動作の順を表すとは限らないこと、及び、データフロー動作は多数の異なる順で行いうることが認識されよう。例えば、いくつかの実施形態において、図7に示した逐次的データフロー動作4〜6のセットと逐次的データフロー動作7〜9のセットとは互いに独立して行われる。同様に、図8及び図9に示した逐次的データフロー動作6〜8のセットと逐次的データフロー動作9〜11のセットとは互いに独立して行われる
A.キーチェーンデータ構造
上述のように、いくつかの実施形態において、キーチェーンは、パスワード、秘密キー、証明書、セキュアノートなどを含み得る定義済みのデータ集合である。いくつかの実施形態において、キーチェーンマネージャは、キーチェーンを表すデータ構造を生成し、記憶する。図10は、いくつかの実施形態のキーチェーンマネージャによって記憶されるキーチェーンのデータ構造1005を概念的に示す。図示のとおり、データ構造1005は、キーチェーンID 1010と、キーチェーンアイテム1〜Nと、アクセスデータ1015とを含む。キーチェーンID 1010は、キーチェーン1005に対する一意の識別子である。アクセスデータ1015は、キーチェーン1005自体へのアクセス(例えば、どのアプリケーションがキーチェーン1005にアクセスし得るか、及び/又は、キーチェーン1005上でどの動作(例えば、読み取り、書き込み、削除など)が実行され得るか、など)を制御するためのものであり、以下に記載するアクセスデータ1035の構造と同様である。
いくつかの実施形態のキーチェーンアイテムは、個別の1つのデータ(例えば、パスワード、キー、証明書など)を表す。図10に示すように、キーチェーンアイテム1020は、キーチェーン1005のキーチェーンアイテム1を表す。キーチェーンアイテム1020は、キーチェーンアイテムID 1025と、データ1030と、属性1〜Mと、アクセスデータ1035(アクセスオブジェクトとも称される)とを含む。キーチェーンアイテムID 1025は、キーチェーンアイテム1020に対する一意の識別子である。
データ1030は、キーチェーンアイテム1020の実際の1つのデータ値及び/又は複数のデータ値である。例えば、キーチェーン1020がパスワードを表す場合、データ1030は、パスワードの値(例えば、英数字の文字列)を記憶する。いくつかの実施形態において、キーチェーンマネージャは、キーチェーンマネージャがデータを記憶する時に、ある特定のタイプのキーチェーンアイテムのデータ(例えば、パスワード、秘密キーなど)を暗号化する。他のタイプのキーチェーンアイテムのデータ(例えば、証明書)の場合、キーチェーンマネージャは、データを暗号化することなく、単純にデータを記憶する。
キーチェーンアイテム1020の属性1〜Mは、キーチェーンアイテム1020について記述するメタデータを記憶するためのものである。異なるタイプのキーチェーンアイテムは、属性の異なるセットを有する。例えば、インターネットパスワードは、セキュリティドメイン、プロトコルタイプ(例えば、ハイパーテキスト転送プロトコル(HTTP)、ハイパーテキスト転送プロトコルセキュア(HTTPS)、ファイル転送プロトコル(FTP)など)、パス(例えば、インターネットリソースのユニフォームリソースロケータ(URL))などのような属性を含む属性を有する。
いくつかの実施形態における各キーチェーンアイテムは、キーチェーンアイテムに対する直近の修正の日時(タイムスタンプとも称される)を示す日付フィールド属性を含む。いくつかの実施形態において、各キーチェーンアイテムはまた、そのキーチェーンアイテムが削除されたキーチェーンアイテム(トゥームストンとも称される)であることを明示するための属性を含む。キーチェーンアイテムがトゥームストンであることを属性が明示した場合、キーチェーンマネージャは、キーチェーンアイテムの日付フィールドを維持するが、キーチェーンマネージャは、キーチェーンアイテムのデータ1030の値をヌル又は空に設定する。いくつかの実施形態において、競合しているキーチェーンアイテムの解決から得られたキーチェーンアイテムは、(1)キーチェーンアイテムが競合解決の結果であることを示すフラグ、(2)競合を解決するために使用された競合リゾルバのバージョン番号、及び(3)キーチェーンアイテムが解決された競合していたキーチェーンアイテム(親キーチェーンアイテムとも称される)を含む属性のセットを含む。いくつかの実施形態において、属性のセットは、キーチェーンアイテムの競合解決メタデータと称される。
いくつかの実施形態において、キーチェーンアイテムの属性又は属性のサブセットは、キーチェーンアイテムを一意に識別するためのプライマリキーとして使用される。即ち、同一のプライマリキーをもつ2つのキーチェーンアイテムは、(キーチェーンアイテムのデータの値が同じであるかにかかわらず)同一のキーチェーンアイテムとみなされる。
アクセスデータ1035は、キーチェーンアイテム1020へのアクセスを制御するためのものである。図示のように、アクセスデータ1035は、キーチェーンアイテム1020へのアクセスを制御するためのアクセス制御リスト(ACL)エントリ1〜Kを含む。図10は、アクセスデータ1035のACLエントリ1を表すACLエントリ1040を示す。ACLエントリ1040は、キーチェーンアイテム1020上で実行することができる動作(例えば、読み取り、書き込み、削除、解読、認証など)を指定する認証タグ1045を含む。この例では、認証タグ1045は、認証タグ1〜Hを含む。
更に、ACLエントリ1040は、信頼済みアプリケーションのリスト1050を含む。図示のとおり、信頼済みアプリケーションのリスト1050は、アプリケーションID 1〜Jを含む。各アプリケーションIDは、ユーザ認証なしに認証タグ1045によって指定された動作を実行し得る特定のアプリケーションを識別するための一意の識別子である。
キーチェーンデータ構造1050は、キーチェーンについての必要な情報を記憶するためにキーチェーンマネージャが使用し得る1つの可能なデータ構造に過ぎないことが、当業者には認識されるであろう。例えば、異なる実施形態は、より多いか又はより少ない情報を記憶したり、異なる順で情報を記憶したりし得る。
B.キーチェーンアイテムの同期
前述したように、いくつかの実施形態のシンクサークルの装置は、キーチェーンの個別のキーチェーンアイテムを同期させることによって、装置間でキーチェーンを同期させる。図11は、いくつかの実施形態の、キーチェーンマネージャの様々な状態及びこれらの状態間での遷移について説明する状態図1100を概念的に示す。当業者には、いくつかの実施形態では、キーチェーンマネージャは、全ての異なるタイプの入力イベントに関係する多くの異なる状態を有し、状態図1100は特に、これらのイベントのサブセットに焦点を当てていることが認識されよう。詳細には、状態図1100は、シンクサークルのメンバーである装置との同期パスワードのための入力イベント及び関係する状態について説明している。図11について説明する場合、キーチェーンマネージャが動作している装置をローカル装置と称する。
キーチェーンマネージャがキーチェーンを同期させるためのいかなるイベントも処理していない時、キーチェーンマネージャは定常状態1105である。状態1105において、キーチェーンマネージャは、キーチェーンの同期と関係がない他の動作を実行し得る。例えば、キーチェーンマネージャは、シンクサークルに加入するための要求を容認する、拒否する及び/又はそれに肯定応答するための登録動作を実行し得る。
シンクサークルのピア装置からマニフェストダイジェクトを受信すると、キーチェーンマネージャは、マニフェストダイジェクト要求を処理するために状態1110に遷移する。いくつかの実施形態において、マニフェストダイジェクトは、ピア装置の現在のキーチェーンアイテムのリストである。いくつかの実施形態のキーチェーンマネージャは、シンクサークルの各ピア装置についてのマニフェストの履歴を記憶している。
状態1110において、キーチェーンマネージャは、ピア装置についてのローカル装置の履歴のうち直近のマニフェストをピア装置から受信したマニフェストダイジェクトと比較することによって、マニフェストダイジェクトに対する応答を生成する。これらのマニフェストが一致し、ローカル装置が、ピア装置のマニフェストダイジェクト中のキーチェーンアイテムと同一のキーチェーンアイテムを有する場合、キーチェーンマネージャは、ローカル装置がピア装置と同期していることを示すメッセージを生成する。
ピア装置についてのローカル装置の履歴のうち直近のマニフェストは、ピア装置マニフェストから受信したマニフェストダイジェクトと一致するが、ローカル装置が、ピア装置のマニフェストダイジェクト中のキーチェーンアイテムと比較して異なるキーチェーンアイテムのセットを有する場合、キーチェーンマネージャは、デルタマニフェストを含むメッセージを生成する。いくつかの実施形態において、デルタマニフェストは、(1)ローカル装置のキーチェーンアイテムとピア装置のマニフェストに列記されたキーチェーンアイテムとの差異のリスト、及び(2)リスト中の対応するキーチェーンアイテムについてのデータを含む。デルタマニフェストは、ピア装置のマニフェストダイジェクト中に含まれないキーチェーンアイテム、及び/又は同一である(例えば、同一のプライマリキーを有する)が、異なるデータ値を有するキーチェーンアイテムを含み得る。
ピア装置についてのローカル装置の履歴のうち直近のマニフェストと、ピア装置から受信したマニフェストダイジェクトとが一致しない場合、キーチェーンマネージャは、ローカル装置の完全なマニフェストを含むメッセージを生成する。いくつかの実施形態における完全なマニフェストは、(1)ローカル装置の全てのキーチェーンアイテムのリスト、及び(2)リスト中の対応するキーチェーンアイテムについてのデータを含む。ピア装置からのマニフェストダイジェクトを処理すると、キーチェーンマネージャは、生成された応答をピア装置に送信し、定常状態1005に遷移する。
定常状態1105である間に、キーチェーンマネージャがローカルキーチェーンに対する変更を受信した場合、キーチェーンマネージャは、ローカルキーチェーンへの変更を処理するために状態1115に進む。状態1115において、キーチェーンマネージャは、その変更を用いてローカルキーチェーンを更新する。いくつかの実施形態において、キーチェーンは、シンクサークルのピア装置と同期するように規定されたキーチェーンアイテム及びシンクサークルのピア装置と同期しないキーチェーンアイテムを含み得る。ローカルキーチェーンに対する変更が、シンクサークルのピア装置と同期するように規定されたいずれのキーチェーンアイテムにも影響を与えない場合、キーチェーンマネージャは定常状態1105に戻る。そうでない場合、キーチェーンマネージャは、(1)シンクサークルのピア装置と同期するように規定されたキーチェーンアイテムと、(2)ローカルキーチェーンに対する変更により影響を受けるキーチェーンアイテムとを同期させるために、状態1120に遷移する。
状態1120において、キーチェーンマネージャは、シンクサークルのピア装置の各々に、ローカル装置のキーチェーンに対する更新を送信する。いくつかの実施形態において、キーチェーンマネージャは、ピア装置に更新を送信するために、図12を参照して以下に記載するプロセス1200を実行する。キーチェーンマネージャがピア装置に更新を送信した後、キーチェーンマネージャは定常状態1105に戻る。
キーチェーンマネージャが定常状態1105であり、シンクサークルのピア装置から完全なマニフェストを受信すると、キーチェーンマネージャは、完全なマニフェストを処理するために状態1125に遷移する。いくつかの実施形態において、キーチェーンマネージャは、(1)ローカル装置のキーチェーンアイテムとピア装置の完全なマニフェストに列記されたキーチェーンアイテムとの差異のリスト、及び(2)リスト中の対応するキーチェーンアイテムについてのデータとを含むデルタマニフェストを生成することによって、完全なマニフェストを処理する。デルタマニフェストが空である(即ち、ローカル装置が、ピア装置の完全なマニフェストに列記されたキーチェーンアイテムと同一のキーチェーンアイテムを有する)場合、キーチェーンマネージャは、その旨を示すメッセージをピア装置に送信し、次いで定常状態1105に戻る。デルタマニフェストが空でない場合、キーチェーンマネージャは、デルタマニフェストをピア装置に送信し、次いで定常状態1105に戻る。
定常状態1105において、キーチェーンマネージャが、ローカル装置のキーチェーンを更新するために、ピア装置からデルタマニフェストを受信した場合、キーチェーンマネージャは、ピア装置からの更新をローカル装置のキーチェーンに適用するために状態1135に遷移する。いくつかの実施形態において、キーチェーンマネージャは、ピア装置からの更新をローカル装置のキーチェーンに適用するために、図13を参照して以下に記載するプロセス1300を実行する。キーチェーンマネージャが、ピア装置の更新をローカルキーチェーンに適用すると、キーチェーンマネージャは、ピア装置についてのローカル装置の履歴のうち直近のマニフェストに、ピア装置の更新を適用し、ピア装置のマニフェストについてのローカル装置の履歴のうち修正されたマニフェストを記憶する。キーチェーンマネージャは次いで、キーチェーンマネージャが記憶したばかりのマニフェストである、ピア装置についてのローカル装置の履歴のうち直近のマニフェストを、キーチェーンアイテムのローカル装置の現在のマニフェストと比較する。
マニフェストは一致するが、ローカル装置が、ピア装置のマニフェストダイジェクト中のキーチェーンアイテムと比較して異なるキーチェーンアイテムのセットを有する場合、キーチェーンマネージャは、状態1140に遷移し、更新をシンクサークルのピア装置に送信するようにスケジュールする。そうでない場合、キーチェーンマネージャは、定常状態1105に戻る。
状態1140において、キーチェーンマネージャは、処理対象のピア装置からのいずれかの更新が残っているかを確認する。残っている場合、キーチェーンマネージャは、ローカルキーチェーンを更新するために、ピア装置からのいずれかのデルタマニフェストの処理を継続するために状態1135に遷移する。処理対象のピア装置からの更新がない場合、キーチェーンマネージャは、スケジュールされた更新をシンクサークルのピア装置に送信するために、状態1140から状態1145に遷移する。いくつかの実施形態において、キーチェーンマネージャは、ピア装置に更新を送信するために、図12を参照して以下に記載するプロセス1200を実行する。キーチェーンマネージャがスケジュールされた更新を全てピア装置に送信すると、キーチェーンマネージャは定常状態1105に戻る。
図12は、ピア装置に更新をプッシュするためのいくつかの実施形態のプロセス1200を概念的に示す。いくつかの実施形態において、本出願に記載するキーチェーンマネージャは、ローカル装置のローカルキーチェーンに適用された更新をシンクサークルのピア装置に送信するためのプロセス1200を実行する。例えば、キーチェーンマネージャは、キーチェーンマネージャが図11を参照して上述した状態1120及び状態1145である時にプロセス1200を実行する。
プロセス1200は、(1210において)シンクサークルのピア装置を識別することにより開始する。いくつかの実施形態において、プロセス1200が、同期装置リストのローカルコピーにアクセスすることによってピア装置を識別する一方で、他の実施形態では、プロセス1200は、クラウドサービス305に(例えば、記憶装置310に)記憶された同期装置リストにアクセスすることによってピア装置を識別する。
次に、プロセス1200は、(1220において)ローカル装置のマニフェストがピア装置のマニフェストと一致するかを判定する。いくつかの実施形態において、プロセス1200は、ピア装置についてのローカル装置の履歴のうち直近のマニフェストをピア装置のマニフェストとして使用する。プロセス1200がマニフェストが一致したと判定した場合、プロセス1200は1260に進む。そうでない場合、プロセス1200は1230に進む。
1230において、プロセス1200は、ローカル装置及びピア装置のマニフェストに基づいてデルタマニフェストを生成する。上述したように、いくつかの実施形態におけるデルタマニフェストは、(1)ローカル装置のキーチェーンアイテムとピア装置のマニフェストに列記されたキーチェーンアイテムとの差異のリスト、及び(2)リスト中の対応するキーチェーンアイテムについてのデータとを含む。いくつかの実施形態において、プロセス1200は、(1)ローカル装置のキーチェーン中のキーチェーンアイテムをピア装置のマニフェストに列記されたキーチェーンアイテムと比較し、(2)その差異を識別することによって、デルタマニフェストを生成する。
プロセス1200は次いで、(1240において)ピア装置についての暗号化キー又はキーのセットを使用して、デルタマニフェストにおいて指定されるローカルキーチェーンアイテムのコピーを暗号化する。前述したように、いくつかの実施形態では、シンクサークルの装置のあらゆるペアの間で、セキュアな通信チャネルが使用される。したがって、プロセス1210は、ピア装置と通信するために使用されるセキュアな通信チャネルについて確立されたキー又はキーのセットを識別し、識別されたキー又はキーのセットを使用して、ローカルキーチェーンアイテムのコピーを暗号化する。
次に、プロセス1200は、(1250において)暗号化されたキーチェーンアイテム及びデルタマニフェストを、セキュアな通信チャネルを介してピア装置に送信する。プロセス1200がピア装置に情報を送信すると、プロセス1200は次いで、(1260において)処理対象のシンクサークルのいずれかのピア装置が残っているかを判定する。プロセス1200が、処理対象のピア装置が残っていると判定した場合、プロセス1200は、ローカルキーチェーンに適用された更新のシンクサークルの残りのピア装置への送信を継続するために1210に戻る。プロセス1200が処理対象のピア装置が残っていないと判定した場合、プロセス1200は終了する。
図13は、ピア装置からの更新を処理するためのいくつかの実施形態のプロセスを概念的に示す図である。いくつかの実施形態において、本出願に記載したキーチェーンマネージャは、ピア装置からの更新をローカル装置のローカルキーチェーンに適用するために、プロセス1300を実行する。例えば、キーチェーンマネージャは、キーチェーンマネージャが状態1135である場合に(例えば、キーチェーンマネージャが処理対象のピア装置からデルタマニフェストを受信した場合に)、図11を参照して上述したプロセス1300を実行する。
プロセス1300は、(1310において)ピア装置から受信したデルタマニフェストにおいて指定された更新されたキーチェーンアイテムを識別することにより開始する。次に、プロセス1300は、(1320において)更新されたキーチェーンアイテムを解読する。上記のとおり、いくつかの実施形態では、シンクサークルの装置のあらゆるペアの間で、セキュアな通信チャネルが使用される。したがって、プロセス1310は、ピア装置と通信するために使用されるセキュアな通信チャネルについて確立されたキー又はキーのセットを識別し、識別されたキー又はキーのセットを使用して、更新されたキーチェーンアイテムを解読する。
次いで、プロセス1300は、(1330において)更新されたキーチェーンアイテムのプライマリキーを識別する。前述したように、いくつかの実施形態において、キーチェーンアイテムの属性又は属性のサブセットは、キーチェーンアイテムを一意に識別するためのプライマリキーとして使用される。
次に、プロセス1320は、(1340において)ローカルキーチェーン中のキーチェーンアイテムが、更新されたキーチェーンアイテムのプライマリキーと同一のプライマリキーを有するかを判定する。プロセス1300が、ローカルキーチェーンには更新されたキーチェーンアイテムのプライマリキーと同一のプライマリキーを有するキーチェーンアイテムがないと判定した場合、プロセス1300は、(1350において)更新されたキーチェーンアイテムをローカルキーチェーンに適用する。いくつかの実施形態において、プロセス1300は、更新されたキーチェーンをローカルキーチェーンに追加することによって、更新されたキーチェーンアイテムをローカルキーチェーンに適用する。
プロセス1300が、ローカルキーチェーンに更新済みのキーチェーンアイテムのプライマリキーと同一のプライマリキーを有するキーチェーンアイテムがないと判定した場合、プロセス1300は、(1360において)更新されたアイテムとローカルキーチェーンアイテムとの間の競合を解決し、競合解決の結果をローカルキーチェーンに適用する。異なる実施形態のプロセス1300は、競合しているキーチェーンアイテム間の競合を別様に解決する。1つのそのような手法について、図15を参照して以下に記載する。
C.キーチェーンアイテム競合の解決
キーチェーンアイテムを同期させる時、いくつかの実施形態のキーチェーンマネージャは、同一のキーチェーンアイテムの複数のバージョン間で競合を検出することがある。様々な実施形態において、キーチェーンマネージャは、様々な技術を使用してキーチェーンアイテム競合を解決する。例えば、いくつかの実施形態では、方法は、キーチェーンアイテムの直近のバージョンを、装置間での同期対象のキーチェーンアイテムとして使用する。いくつかの実施形態では、追加の及び/又は異なる手法が使用され得る。
いくつかの実施形態において、装置は、(「競合リゾルバ」とも称される)それらの競合解決プロセスを更新し得る。いくつかの例における更新されたプロセス及び以前の未更新のプロセスは、どのキーチェーンアイテム値を使用すべきかを判定した時に異なる結果を提供する。いくつかの実施形態において、シンクサークルの1つ以上の装置が、更新された競合解決プロセスを使用することが可能である一方、同じシンクサークルの1つ以上の他の装置は、競合解決プロセスの以前のバージョンを使用している。図14は、競合している競合リゾルバを解決するためのいくつかの実施形態のプロセス1400を概念的に示す。いくつかの実施形態において、図13を参照して上述したプロセス1300は、動作1360を実行するためのプロセス1400を実行する。
プロセス1400は、(1410において)競合しているキーチェーンアイテムの競合解決メタデータを識別することにより開始する。上記のとおり、いくつかの実施形態の競合解決メタデータは、(1)キーチェーンアイテムが競合解決の結果であることを示すフラグ、(2)競合を解決するために使用された競合リゾルバのバージョン番号、及び(3)キーチェーンアイテムが解決された、競合しているキーチェーンアイテム(親キーチェーンアイテムとも称される)を含む。
次に、プロセス1400は、(1420において)更新されたキーチェーンアイテムの競合リゾルバとローカルキーチェーンアイテムの競合リゾルバとが競合するかを判定する。いくつかの実施形態において、更新されたキーチェーンアイテムの競合リゾルバとローカルキーチェーンアイテムの競合リゾルバとは、(1)両方のキーチェーンアイテムが、キーチェーンアイテムが競合解決の結果であったことを示すフラグを含む時、(2)更新されたキーチェーンアイテム及びローカルキーチェーンアイテムが、更新されたキーチェーンアイテムの親キーチェーンアイテムとして指定された時、並びに(3)更新されたキーチェーンアイテムを解決するために使用される競合リゾルバのバージョン番号が、ローカル装置の競合リゾルバのバージョン番号と同じでない時に競合する。
プロセス1400が、競合リゾルバが競合しないと判定した場合、プロセス1400は、(1430において)ローカル装置の競合リゾルバとのキーチェーンアイテム競合を解決し、次いで、プロセス1400が終了する。プロセス1400が、競合リゾルバが競合していると判定した場合、プロセス1400は、(1450において)ローカル装置の競合リゾルバを使用するべきかを判定する。ローカル競合リゾルバのバージョン番号が、更新されたキーチェーンアイテムを解決するために使用される競合リゾルバのバージョン番号よりも大きい場合、プロセス1400は、(1430において)ローカル装置の競合リゾルバを用いてキーチェーンアイテム競合を解決する。そうでない場合、プロセス1400は、(1430において)更新されたキーチェーンアイテムを、キーチェーンアイテム競合に対する解決策として使用する。次いで、プロセス1400が終了する。
図15は、キーチェーンアイテム競合を解決するためのいくつかの実施形態のプロセス1500を概念的に示す。いくつかの実施形態において、図14を参照して上述したプロセス1400は、動作1460を実装するためのプロセス1500を実行する。
プロセス1500は、(1510において)競合している更新されたキーチェーンアイテムとローカルキーチェーンアイテムとのタイムスタンプを識別することにより開始する。上記のとおり、いくつかの実施形態におけるキーチェーンアイテムのデータ構造は、キーチェーンアイテムに対する直近の修正の日時を示す日付フィールドを含む。いくつかの実施形態において、プロセス1500は、各キーチェーンアイテムの日付フィールド属性にアクセスすることによって、タイムスタンプを識別する。
次に、プロセス1500は、(1520において)更新済みキーチェーンアイテムのタイムスタンプがより新しいかを判定する。プロセス1500が、更新されたキーチェーンアイテムのタイムスタンプがより新しいと判定した場合、プロセス1500は、(1540において)更新されたキーチェーンアイテムを用いてローカルキーチェーンアイテムを更新し、次いで、プロセス1500が終了する。プロセス1500が、更新されたキーチェーンアイテムのタイムスタンプがより新しくないと判定した場合、プロセス1500は、(1530において)キーチェーンアイテムを用いてローカルキーチェーンアイテムを更新し、次いで、プロセス1500が終了する。
IV.キーチェーンに対するデータ保護ドメインの使用
本発明のいくつかの実施形態は、条件及び/又は要件の定義済みセットに従って、装置上のキーチェーンデータ(例えば、キーチェーンアイテム)へのアクセスを制限するためのデータ保護機能を提供する。いくつかの実施形態において、いくつかの異なる保護ドメイン(「データ保護クラス」とも称される)が定義され、装置上の各キーチェーンアイテムは、定義された保護ドメインのうちの1つに属する。各保護ドメインは、条件セットと関連付けられる。特定のデータ保護ドメインについての条件セットが満たされた場合、その特定の保護ドメインに属する装置のキーチェーンアイテムは、装置による使用について利用可能になる。
A.データ保護ドメイン
図16は、様々な装置における様々なキーチェーンアイテムを概念的に示す。詳細には、この図は、異なる保護ドメインに属するキーチェーンアイテムは、異なる保護ドメインについて装置が満たす条件に従って、利用可能になることを示す。この図は、ソース装置1605及びソース装置1610、行先装置1615〜1635、並びにキーチェーンアイテムS1〜S3及びC4〜C5を示す。
いくつかの実施形態において、保護ドメインは、あらかじめ定義され、装置のためのオペレーティングシステム(例えば、iOS(商標)、Windows(登録商標)など)の一部として装置に提供される。これらのオペレーティングシステムによって管理される装置は、保護ドメインと関連付けられた条件が満たされた後にのみ装置中のキーチェーンアイテムを利用可能にすることによって、保護ドメインを利用してキーチェーンアイテムを保護することができる。これらのあらかじめ定義された保護ドメインは、本特許出願ではシステム保護ドメインと称される。
いくつかの実施形態において、保護ドメインは、装置のユーザ又は装置上で動作するアプリケーションの開発者によってカスタム定義され得る。これらの実施形態では、装置又はオペレーティングシステムの製造業者は、ユーザが、保護ドメインについて異なる条件セットを定義することによって、カスタム定義保護ドメインを定義することができるように、ツールをユーザに提供する。また、装置又はオペレーティングシステムの製造業者は、開発者が書き込むアプリケーションを装置で動作させるために、保護ドメインについて異なる条件セットを定義することによって、開発者がカスタム定義保護ドメインを定義することができるように、ソフトウェア開発キット(SDK)を開発者に提供する。
上述のように、異なる保護ドメインは、条件又は要件の異なるセットと関連付けられる。いくつかの実施形態において、保護ドメインは、ある特定のキーチェーンアイテムに更なるセキュリティレベルを提供するように定義され得る。即ち、第1の保護ドメインの条件は、装置が、第1の保護ドメインの条件の上に第2の保護ドメインの追加の条件を満たした場合にのみ、第2の保護ドメインに属するキーチェーンアイテムを装置が利用可能になるような第2の保護ドメインの条件のサブセットである。例えば、第1の保護ドメインの条件は、装置がブートされ、動作していることを含み、第2の保護ドメインの条件は、装置がアンロックされ、並びに、ブートされ、動作していることを含む。
いくつかの実施形態において、保護ドメインは、重複することも又は重複しないこともある異なる条件セットを有するように定義され得る。例えば、第1の保護ドメインの条件は、装置のアンロック後の追加認証(例えば、追加のパスワード)を含み得る。第2の保護ドメインの条件は、装置における特定のアプリケーションの存在を含み得る。第1及び第2の保護のこれらの条件は重複しない。
この例におけるソース装置1605は、更新されたキーチェーンアイテムS1〜S3を、行先装置1615〜1625にプッシュする装置である。図示のとおり、装置1605のキーチェーンアイテムS1〜S3は、保護ドメイン1〜3にそれぞれ属する。この例における保護ドメイン1〜3は、システム保護ドメインである。保護ドメイン1〜3は、異なるセキュリティレベルをキーチェーンアイテムに提供する。この例では、保護ドメイン3の条件は、保護ドメイン2の条件のサブセットであり、保護ドメイン2の条件は、保護ドメイン1の条件のサブセットである。
この例における装置1615〜1625は、異なる条件セットを満たす。詳細には、装置1625は、保護ドメイン3の全ての条件を満たす。装置1620は、保護ドメイン2の全ての条件を満たす。装置1615は、保護ドメイン1の全ての条件を満たす。その結果、キーチェーンアイテムS3は、装置1625の使用について利用可能であるが、キーチェーンアイテムS1及びキーチェーンアイテムS2は利用可能ではない。これらのキーチェーンアイテムは、アイテムが利用不能であることを示す点線の平行四辺形として示される。キーチェーンアイテムS2及びキーチェーンアイテムS3は、装置1620の使用について利用可能であるが、キーチェーンアイテムS1は利用可能ではない。3つのキーチェーンアイテムS1〜S3は全て、装置1615の使用について利用可能である。
異なる実施形態は、装置の使用についてキーチェーンアイテムを利用不能であるままにする異なる方法を採用する。例えば、いくつかの実施形態の装置のキーチェーンマネージャは、キーチェーンアイテムを解読せず、それによって、キーチェーンアイテムが属する保護ドメインについての全ての条件を装置が満たさない場合、キーチェーンアイテムが利用不能になる。代替的に又は連携させて、くつかの実施形態のキーチェーンマネージャは、キーチェーンアイテムが属する保護ドメインについての条件を装置が満たすまで、装置中で動作しているアプリケーションによる、キーチェーンアイテムのアクセスを不可能にする。いくつかの実施形態において、行先装置のキーチェーンマネージャは、プッシュされた時に、キーチェーンアイテムが属する保護ドメインの条件を行先装置が満たさない限り、ソース装置からプッシュされたキーチェーンアイテム受け入れない。
この例におけるソース装置1610は、更新されたキーチェーンアイテムC4及びC5を、行先装置1630〜1635にプッシュする装置である。図示のとおり、装置1610のキーチェーンアイテムC4及びC5は、保護ドメイン4及び保護ドメイン5にそれぞれ属する。保護ドメイン4及び保護ドメイン5は、異なる条件セットを有するカスタム定義保護ドメインである。この例では、保護ドメイン4の条件は、保護ドメイン5の条件と重複しない。
この例における装置1630は、保護ドメイン4の全ての条件を満たすが、保護ドメイン5の全ての条件を満たすわけではなく、装置1635は、保護ドメイン5の全ての条件を満たすが、保護ドメイン4の全ての条件を満たすわけではない。その結果、キーチェーンアイテムC4は、装置1630の使用について利用可能であるが、キーチェーンアイテムC5は利用可能ではない。キーチェーンアイテムC5は、装置1635の使用について利用可能であるが、キーチェーンアイテムC4は利用可能ではない。
当業者には、いくつかの実施形態の保護ドメインの使用は、キーチェーンアイテムを保護することには限定されないことが認識されよう。任意のタイプのデータは、異なるセキュリティレベルを受けるために異なる保護ドメインに属するように定義され得る。例えば、いくつかの実施形態の第1の装置中の更新された文書は第2の装置にプッシュされ得るが、その文書は、文書が属する保護ドメインの全ての条件を第2の装置が満たすまで、第2の装置の使用について利用不能なままである。
図17は、キーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセス1700を概念的に示す。いくつかの実施形態において、プロセス1700は、1つ以上のソース装置がキーチェーンアイテムをプッシュした行先装置により実行される。詳細には、これらの実施形態において、行先装置のキーチェーンマネージャが、プロセス1700を実行し得る。いくつかの実施形態の行先装置は、ソース装置からのキーチェーンアイテムを処理キューに蓄積する。例示的な処理キューについて、図18を参照して以下に更に詳述する。プロセス1700は、いくつかの実施形態において、行先装置がブートされ、ソース装置から1つ以上のキーチェーンアイテムを受信した時に開始する。
プロセス1700は、(1710において)処理キューからキーチェーンアイテムを取り出すことにより開始する。いくつかの実施形態において、処理キューは、ソース装置からプッシュされたキーチェーンアイテムを保持するためのストレージ構造(例えば、ファイルシステム)である。いくつかの実施形態において、ソース装置は、行先装置があらかじめ発行した行先装置の公開キーを使用して、キーチェーンアイテム中のデータ(例えば、パスワード)を暗号化する。これらの実施形態では、キーチェーンアイテムは、暗号化され、処理キューに記憶される。
行先装置は、対応する秘密キー(即ち、ソース装置がキーチェーンアイテムを暗号化するために使用した公開キーを含む公開/秘密キーペアの秘密キー)を使用してキーチェーンアイテムを解読する。いくつかの実施形態において、行先装置は、装置がサポートする保護ドメインの各々について公開/秘密キーペアを生成する。図25及び図26を参照して、異なる保護ドメインのキーペアに関して、以下に更に詳細に記載する。
次いで、プロセス1700は、(1720において)取り出されたキーチェーンアイテムの保護ドメインを識別する。また、いくつかの実施形態におけるキーチェーンアイテムは、キーチェーンアイテムが属する保護ドメインを識別するための識別子を含むか、又はそれと関連付けられる。いくつかの実施形態において、キーチェーンアイテム中のデータを暗号化するためにソース装置が使用した公開キーは、保護ドメイン識別子として機能する。プロセス1700は、取り出されたキーチェーンアイテムが属する保護ドメインを識別するために、キーチェーンアイテムの保護ドメイン識別子を読み取る。
次に、プロセス1700は、(1730において)識別された保護ドメインが利用可能であるかを判定する。即ち、プロセス1700は、識別された保護ドメインの全ての条件を行先装置が満たしているかを判定する。いくつかの実施形態において、行先装置は、装置のオペレーティングシステムの一部として条件の定義を取得する。代替的に又は連携させて、いくつかの実施形態の行先装置は、行先装置及びソース装置が行先装置とソース装置とを含むシンクサークルを確立した場合に条件の定義を取得することができる。
プロセス1700が、(1730において)識別された保護ドメインの全ての条件が満たされたわけではないと判定した場合、プロセス1700は、(1740において)このキーチェーンアイテムが属する保護ドメインの条件が満たされるのを待つことができるようにキーチェーンアイテムをキューに再び蓄積することによって、キーチェーンアイテムは、処理キューにキーチェーンアイテムに戻す。プロセス1700は、以下に更に記載するステップ1760に進む。
プロセス1700が、(1730において)識別された保護ドメインの全ての条件が満たされていると判定した場合、プロセス1700は、(1750において)キーチェーンアイテムを処理する。1750において、いくつかの実施形態のプロセス1700は、キーチェーンアイテムの同期を開始することによって、キーチェーンアイテムを処理する。いくつかの実施形態において、プロセス1700は、識別された保護ドメインについての行先装置の秘密キーを使用して、キーチェーンアイテムを解読する。
次に、プロセス1700は、(1760において)処理キューに、依然として処理対象である他のキーチェーンアイテムがあるかを判定する。プロセス1700が、処理キューに他のキーチェーンアイテムがあると判定した場合、プロセス1700は、別のキーチェーンアイテムを取り出すために1710にループバックする。そうではない場合、プロセス1700は終了する。
図18は、着信キーチェーンアイテムを蓄積するための処理キューを概念的に示す。詳細には、この図は、いくつかの実施形態の処理キューが、異なる保護ドメインと関連付けられたバケットのセットであることを示している。この図には、ソース装置1805と、行先装置1810と、処理キュー1815とが示されている。
ソース装置1805は、1つ以上のキーチェーンアイテムを更新し、キーチェーンアイテムを行先装置1810にプッシュする。いくつかの実施形態において、ソース装置1805が送信するキーチェーンアイテム1840は、ソース装置1805がキーチェーンアイテム1840に沿って送信する保護ドメイン識別子1835と関連付けられる。いくつかの実施形態において、ソース装置1805は、行先装置1840がサポートする各保護ドメインについて行先装置1840があらかじめ発行した行先装置1840の公開キー(図示せず)を用いて、キーチェーンアイテム1840を暗号化する。これらの実施形態のうちのいくかにおいて、キーチェーンアイテムを暗号化するために使用される公開キーは、保護ドメイン識別子として機能し得る。
キーチェーンアイテムを蓄積するために行先装置1810が使用する処理キュー1815は、バケット1820〜1830を有する。バケットの各々は、図示のとおり、保護ドメインと関連付けられる。行先装置1810は、保護ドメイン識別子により識別された保護ドメインに基づいて、処理キュー1815のバケット1820〜1830のうちの1つにキーチェーンアイテムを蓄積する。いくつかの実施形態において、行先装置1810はまた、各キーチェーンアイテムと関連付けられた保護ドメイン識別子を蓄積する。他の実施形態では、行先装置1810は、行先装置1810が処理キュー1815にキーチェーンアイテムを蓄積するので、キーチェーンアイテムから識別子を分離する。図示のとおり、保護ドメイン識別子なしに装置1810が蓄積した、バケット1820は、3つのキーチェーンアイテム1845〜1855を有し、バケット1820は、1つのキーチェーンアイテム1860を有し、バケット1830は、2つのキーチェーンアイテム1865及びキーチェーンアイテム1870を有する。
いくつかの実施形態において、キーチェーンアイテムが処理キュー1815にある時には、キーチェーンアイテムは、装置1810の使用について利用不能である。キーチェーンアイテムは、装置1810がキーチェーンアイテムを利用不能であることを示す点線の楕円で示される。
いくつかの実施形態において、行先装置1810は、キーチェーンアイテムを、行先装置1810にプッシュされたキーチェーンアイテムに署名するためにソース装置1805が使用する公開キーの相対する秘密キーである秘密キーと関連付ける。行先装置1810は、キーチェーンアイテムと共に秘密キーを処理キューに蓄積し、それにより、秘密キーは、装置1810の使用について利用不能になる。
いくつかの実施形態において、行先装置1810は、保護ドメインに関連付けられた他のキーを使用して秘密キーを暗号化することによって、処理キューに記憶された秘密キーを利用不能にする。これらの実施形態では、処理キューに記憶された秘密キーは、装置が保護ドメインの条件を満たした場合にのみ、それらの他のキーを用いて解読され得る。次いで、キーチェーンアイテムは、解読された秘密キーを用いて解読することができ、それにより、装置の使用について利用可能になる。秘密キーを暗号化するために使用される他のキーは、本特許出願では、ローカルドメイン保護キーと称される。
装置1810が、特定のバケットと関連付けられた保護ドメインについて定義された全ての条件を満たす場合、行先装置1810は、ローカルドメイン保護キーを用いて秘密キーを解読し、次いで、解読された秘密キーを用いてキーチェーンを解読することによって、特定のバケットからキーチェーンアイテムを取り出すことができる。次いで、行先装置1810は、解読されたキーチェーンアイテムを処理する。いくつかの実施形態において、装置1810は、受信したキーチェーンアイテムを装置1810が既に有しているキーチェーンアイテム(図示せず)と同期させるために同期プロセスを開始する。
行先装置1810が、ソース装置1805からキーチェーンアイテムを受信する一方で、行先装置1810が、キーチェーンアイテムが属する保護ドメインの条件を満たしている場合、行先装置1810は、保護ドメインについての秘密キーを暗号化する必要がないことを留意されたい。したがって、行先装置1810は、キーチェーンアイテムを処理キュー1815に蓄積することなく、秘密キーを用いてキーチェーンアイテムを解読することができる。
図19は、ソース装置から受信したキーチェーンアイテムを処理するためにいくつかの実施形態が実行するプロセス1900を概念的に示す。いくつかの実施形態において、ソース装置は、トランザクション当たり1つのキーチェーンアイテムをプッシュするのではなく、単一のトランザクション(例えば、単一のメッセージ)においてキーチェーンアイテムのグループをプッシュする。いくつかの場合には、グループのキーチェーンアイテムは、行先装置によりキーチェーンアイテムが一緒に処理されるような関係である。いくつかの実施形態において、プロセス1900は、グループのキーチェーンアイテムを受信し、グループのキーチェーンアイテムを一緒に処理する行先装置によって実行される。詳細には、これらの実施形態において、行先装置のキーチェーンマネージャが、プロセス1900を実行し得る。いくつかの実施形態の行先装置は、ソース装置からのキーチェーンアイテムのグループを処理キューに蓄積する。プロセス1900は、いくつかの実施形態において、行先装置がブートされ、ソース装置から1つ以上のキーチェーンアイテムの1つ以上のグループを受信した時に開始する。
プロセス1900は、(1910において)ソース装置からプッシュされたキーチェーンアイテムのグループを保持するためのストレージ構造(例えば、ファイルシステム)である処理キューから、キーチェーンアイテムのグループを取り出すことにより開始する。いくつかの実施形態において、ソース装置は、キーチェーンアイテムが属する保護ドメインに対して行先装置の公開キーを使用することによって、処理キューに記憶されたグループの各キーチェーンアイテム中のデータを暗号化する。行先装置は、対応する秘密キーを使用して、グループのキーチェーンアイテムを解読する。次いで、プロセス1900は、(1920において)取り出されたキーチェーンアイテムのグループの各キーチェーンアイテムの保護ドメインを識別する。
次に、プロセス1900は、(1930において)取り出されたグループについての識別された保護ドメインが全て利用可能であるかを判定する。即ち、プロセス1900は、識別された保護ドメインの各々の全ての条件を行先装置が満たしたかを判定する。いくつかの実施形態のプロセス1900は、グループの識別された保護ドメインの各々に対して反復して調べる。
(1930において)識別された保護ドメインのいずれかについての保護ドメインの全ての条件が満たされているわけではないとプロセス1900が判定した場合、プロセス1900は、(1940において)キーチェーンアイテムのグループをキューに再び蓄積することによって、キーチェーンアイテムのグループを処理キューに戻す。プロセス1900は、以下に更に記載するステップ1960に進む。
プロセス1900が、(1930において)あらゆる識別された保護ドメインの全ての条件が満たされていると判定した場合、プロセス1900は、(1950において)キーチェーンアイテムを処理する。1950において、いくつかの実施形態のプロセス1900は、同期プロセスを開始することによって、キーチェーンアイテムを処理する。いくつかの実施形態において、プロセス1900は、識別された保護ドメインについての行先装置の秘密キーを使用して、キーチェーンアイテムを解読する。
次に、プロセス1900は、(1960において)処理キューに、依然として処理対象であるキーチェーンアイテムの他のグループがあるかを判定する。プロセス1900が、処理キューに他のキーチェーンアイテムのグループがあると判定した場合、プロセス1900は、キーチェーンアイテムの別のグループを取り出すために1910にループバックする。そうではない場合、プロセス1900は終了する。
B.使用事例
図20は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、装置をアンロックすることを必要とする保護ドメインにより保護されたキーチェーンアイテムを示す。詳細には、この図は、6つの異なる段階2001〜2006における、ソース装置2010により更新され、行先装置2015にプッシュされるキーチェーンアイテム2020の処理を示す。この図はまた、キーチェーンアイテム2020と同期すべき、対応するキーチェーンアイテムであるキーチェーンアイテム2025の処理を示す。
キーチェーンアイテム2020及びキーチェーンアイテム2025が属する保護ドメインは、キーチェーンアイテム2020及びキーチェーンアイテム2025を行先装置2015において利用可能にするために、行先装置2015をアンロックすることを必要とする。本特許出願において、装置を「アンロック」するとは、装置のスクリーンへの任意の入力を行うためにスクリーンをアンロックすることを意味するものではない。そうではなく、装置をアンロックするとは、ユーザが装置を使用することを認証したことを意味する。異なる実施形態の装置は、様々な認証メカニズムを提供する。例えば、いくつかの実施形態の装置は、ユーザに、装置をアンロックするためにパスコード(例えば、4桁のパスコード)を提供するように要求する。他の実施形態は、代替的に又は連携させて、冗長なパスワード、網膜スキャン、指紋スキャン、音声認識などを用いてユーザが装置をアンロックすることを可能にする。
第1の段階2001は、ソース装置2010のキーチェーンアイテム2020と、行先装置2015のキーチェーンアイテム2025とがそれぞれ同期していることを示す。この段階において、行先装置2015はロック状態である。行先装置2015は、装置2015が、装置のブート以後に、装置2015のユーザによってまだアンロックされていないので、あるいは、装置2015が、アイドル時間の期間の経過後にアンロック状態からロック状態へと自動的に進んだので、ロック状態である。図示のとおり、キーチェーンアイテム2020とキーチェーンアイテム2025は共にデータ1を含むが、行先装置2015のキーチェーンアイテム2025は、行先装置2015がロック状態であるので、キーチェーンアイテム2025が利用不能であることを示す点線の平行四辺形で示されている。この例では、行先2015は、キーチェーンアイテム2025が属する保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム2025を暗号化することによって、キーチェーンアイテム2025を利用不能にする。
第2の段階2002は、ソース装置2010のキーチェーンアイテム2020がデータ1からデータ2に更新されたことを示す。例えば、キーチェーンアイテム2020は、ソース装置2010中で動作しているアプリケーションが必要とする、リモートサーバにアクセスするためのパスワードを含み、ソース装置2010のユーザはパスワードを変更した。この段階において、キーチェーンアイテム2025は、行先装置2015が依然としてロック状態なので、行先装置2025において利用不能なままである。
次の段階2003は、ソース装置2010が、キーチェーンアイテム2020と行先装置2015の対応するキーチェーンアイテム2025とを同期させるために、キーチェーンアイテム2020を行先装置2015にプッシュしたことを示す。この例では、ソース装置2010は、キーチェーンアイテム2020を行先装置2015にプッシュする前に、保護ドメインについての行先装置2015の公開キーを用いてキーチェーンアイテム2020を暗号化する。行先装置2015は、キーチェーンアイテム2020を受信するが、キーチェーンアイテム2020は、行先装置がロック状態であり、したがって、保護ドメインについての対応する秘密キーを用いてキーチェーンアイテム2020を解読しなかったので、この段階では利用不能である。この例では、行先装置2015が、キーチェーンアイテム2025を暗号化するために使用されるローカル保護ドメインキーを用いて秘密キーを暗号化したので、秘密キーもまた利用不能であった。行先装置2015がロック状態であり、したがって、ローカル保護ドメインキーを用いてキーチェーンアイテム2025を解読しなかったので、キーチェーンアイテム2025は行先装置2015において利用不能なままである。
第4の段階2004において、ユーザは、行先装置2015をアンロックした。その結果、キーチェーンアイテム2020及びキーチェーンアイテム2025は共に、行先装置2015の使用について利用可能になる。即ち、装置2015は、この段階で、ローカル保護ドメインキーを用いて秘密キーを解読し、次いで、解読された秘密キーを用いてキーチェーンアイテム2020を解読する。装置2015はまた、ローカル保護ドメインキーを用いてキーチェーンアイテム2025を解読する。次いで、行先装置2015は、2つのキーチェーンアイテム2020及びキーチェーンアイテム2025が利用可能になったので、それらの同期を開始する。
第5の段階2005は、キーチェーンアイテム2020とキーチェーンアイテム2025とが同期しており、したがって、キーチェーンアイテム2025がデータ2を有することを示す。行先装置2015はアンロック状態であり、キーチェーンキーチェーンアイテム2025は、装置2015の使用について利用可能である。次の段階2006は、行先装置2015が(例えば、ある時間期間にわたってアイドル中であることによって、又はユーザが装置2015をロックしたので)ロック状態に戻ったことを示す。行先装置2015は、ローカル保護ドメインキーを用いてキーチェーンアイテム2025を暗号化することによって、キーチェーンアイテム2025を利用不能にする。
図21は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするためには、少なくともブート後に装置を一度アンロックすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す。詳細には、この図は、6つの異なる段階2101〜2106における、装置2115によるキーチェーンアイテム2120及びキーチェーンアイテム2125の処理を示す。この図はまた、キーチェーンアイテム2120を更新し、キーチェーンアイテム2125と同期させるために、キーチェーンアイテム2120を行先装置2115にプッシュするソース装置2110を示す。
キーチェーンアイテム2120及びキーチェーンアイテム2125が属する保護ドメインは、キーチェーンアイテム2120及びキーチェーンアイテム2125を行先装置2115において利用可能にするために、少なくともブート後に(即ち、ターンオフ状態からターンオンした後に)行先装置2115を一度アンロックすることを必要とする。いくつかの実施形態において、バックグラウンドで動作するアプリケーションへのパスワードを保護するために、この保護ドメインが使用される。例えば、装置上で動作している電子メールアプリケーションは、装置がアイドル中である間(例えば、装置がいかなるユーザ入力も受け取らない間)に電子メールをフェッチするためには、メールサーバにアクセスするためのパスワードを必要とする。
第1の段階2101は、ソース装置2110のキーチェーンアイテム2120と、行先装置2115のキーチェーンアイテム2125とがそれぞれ同期していることを示す。図示のとおり、キーチェーンアイテム2120及びキーチェーンアイテム2125は共にデータ1を含む。この段階では、行先装置2115がブートされるので、行先装置2115は依然としてアンロックされていない。即ち、行先装置2115のユーザは、装置2115のブートアップ後、装置2115を依然としてアンロックしていない。行先装置2115のキーチェーンアイテム2125は、キーチェーンアイテム2125が利用不能であることを示す点線の平行四辺形で示される。この例では、行先2125は、キーチェーンアイテム2125を利用不能にするために、キーチェーンアイテム2125が属する保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム2125を暗号化した。
第2の段階2102は、ソース装置2110のキーチェーンアイテム2120がデータ1からデータ2に更新されたことを示す。この段階では、行先装置2115がブ−トアップ以降に依然としてアンロックされていないので、行先装置2115のキーチェーンアイテム2125は利用不能なままである。
次の段階2103は、キーチェーンアイテム2120と行先装置2115の対応するキーチェーンアイテム2125とを同期させるために、ソース装置2110がキーチェーンアイテム2120を行先装置2115にプッシュしたことを示す。この例では、ソース装置2110は、キーチェーンアイテム2120を行先装置2115にプッシュする前に、保護ドメインについての行先装置2115の公開キーを用いてキーチェーンアイテム2120を暗号化する。行先装置2115は、キーチェーンアイテム2120を受信するが、ブ−トアップ以降に行先装置がアンロックされておらず、したがって、保護ドメインについての対応する秘密キーを用いてキーチェーンアイテム2120を解読しなかったので、キーチェーンアイテム2120はこの段階では利用不能である。この例では、行先装置2105が、キーチェーンアイテム2125を暗号化するために使用されるローカル保護ドメインキーを用いて秘密キーを暗号化したので、秘密キーもまた利用不能である。行先装置2115がロック状態であり、したがって、ローカル保護ドメインキーを用いてキーチェーンアイテム2125を解読しなかったので、キーチェーンアイテム2125は行先装置2115において利用不能なままである。
第4の段階2104において、ユーザは、装置2115のブートアップ後、初めて行先装置2115をアンロックした。その結果、キーチェーンアイテム2120及びキーチェーンアイテム2125は共に、行先装置2115の使用について利用可能になる。この例では、行先装置2115は、保護ドメインについての秘密キーを用いてキーチェーンアイテム2120を解読することによって、キーチェーンアイテム2120を利用可能にする。行先装置2115は、秘密キーを解読するだけでなく、保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム2125を解読した。行先装置2115は、2つのキーチェーンアイテム2120及びキーチェーンアイテム2125が利用可能になったので、それらの同期を開始する。
第5の段階2105は、キーチェーンアイテム2120とキーチェーンアイテム2125とが同期しており、したがって、キーチェーンアイテム2125がデータ2を有することを示す。行先装置2115はアンロック状態であり、キーチェーンキーチェーンアイテム2125は、装置2115の使用について利用可能である。この段階で、ソース装置2110のユーザは、キーチェーンアイテム2120をデータ2からデータ3に再び更新する。
第6の段階2106は、行先装置2115が(例えば、ある時間期間にわたってアイドル中であることによって、又はユーザが行先装置2115をロックしたので)ロック状態に戻ったことを示す。しかしながら、装置2115が、装置2115のブートアップ後一度アンロックされ、したがって、装置2115は、ローカル保護ドメインキーを用いてキーチェーンアイテム2125を再び暗号化しないので、キーチェーンアイテム2125は、装置2115の使用について依然として利用可能である。
段階2106において、ソース装置2110はまた、キーチェーンアイテム2120と行先装置2115の対応するキーチェーンアイテム2125とを同期させるために、キーチェーンアイテム2120を行先装置2115にプッシュした。ソース装置2110は、キーチェーンアイテム2120を行先装置2115にプッシュする前に、保護ドメインについての公開キーを使用してキーチェーンアイテム2120を暗号化する。行先装置2115は,キーチェーンアイテム2120を受信し、キーチェーンアイテム2120は、行先装置2115がロック状態である場合であっても利用可能になる。これは、少なくとも装置2115のブートアップ後に行先装置2115が一度アンロックされ、したがって、装置2115は、キーチェーンアイテム2120を解読するために利用可能となる秘密キーを暗号化しないからである。キーチェーンアイテム2120は、行先装置2115がロック状態のままである場合であっても同期される。
図22は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をオンにすることが必要である保護ドメインによって保護されたキーチェーンアイテムを示す。詳細には、この図は、4つの異なる段階2201〜2104における、装置2215によるキーチェーンアイテム2220及びキーチェーンアイテム2225の処理を示す。この図はまた、キーチェーンアイテム2220を更新し、キーチェーンアイテム2225と同期させるために、キーチェーンアイテム2220を行先装置2215にプッシュするソース装置2210を示す。
キーチェーンアイテム2220及びキーチェーンアイテム2225が属する保護ドメインは、装置2215の使用についてキーチェーンアイテム2220及びキーチェーンアイテム2225を利用可能にするために、行先装置2215をオンにすることが必要である。即ち、行先装置2215が稼働している限り、キーチェーンアイテム2220及びキーチェーンアイテム2225は常に、装置2215の使用について利用可能である。この保護ドメインはほとんど保護を提供しないので、いくつかの実施形態の装置は、常に動作している必要があるアプリケーションについて、この保護ドメインを使用する。そのようなアプリケーションの一例として、アップルインコーポレーテッドによるFind My iPhone(登録商標)アプリケーションが挙げられる。
第1の段階2201は、ソース装置2210のキーチェーンアイテム2220と、行先装置2215のキーチェーンアイテム2225とがそれぞれ同期していることを示す。図示のとおり、キーチェーンアイテム2220及びキーチェーンアイテム2225は共にデータ1を含む。この段階において、行先装置2215は、ターンオフされている。
第2の段階2202は、ソース装置2210のキーチェーンアイテム2220がデータ1からデータ2に更新されたことを示す。この段階において、行先装置2215はブートアップされるが、まだアンロックされていない。しかしながら、保護ドメインの条件(即ち、装置が稼働していること)が満たされているので、キーチェーンアイテム2225は行先装置2215の使用について利用可能であり、したがって、装置2215は、保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム2225を暗号化しない。いくつかの実施形態において、キーチェーンアイテム2225は依然として、装置2215に結び付けられたキー(例えば、装置2215のUIDに由来するキー)を用いて暗号化されている可能性があるが、装置2215においてキーチェーンアイテム2225を解読するためにキーが利用可能なので、キーチェーンアイテム2215が利用可能であるとみなされる。
次の段階2203は、キーチェーンアイテム2220と行先装置2215の対応するキーチェーンアイテム2225とを同期させるために、ソース装置2210がキーチェーンアイテム2220を行先装置2215にプッシュしたことを示す。ソース装置2210は、キーチェーアイテム2220を行先装置2215にプッシュする前に、キーチェーンアイテム2220を暗号化する。行先装置2215は、キーチェーンアイテム2220を受信し、キーチェーンアイテム2220は、装置2215がまだアンロックされていない場合であっても、この段階で装置2215において利用可能になる。これは、装置2215が稼働しており、したがって、キーチェーンアイテム2220を解読するために、対応する秘密キーが利用可能であるからである。行先装置2215は、2つのキーチェーンアイテム2220及びキーチェーンアイテム2225が利用可能なので、キーチェーンアイテム2220とキーチェーンアイテム2225との同期を開始する。
第4の段階2204では、行先装置2215はまだアンロックされていない。しかしながら、第4の段階2204は、キーチェーンアイテム2220とキーチェーンアイテム2225とが同期していることを示す。その結果、キーチェーンアイテム2225はこの時データ2を有する。
図23は、保護ドメインに属するキーチェーンアイテムを装置において利用可能とするために、装置をアンロックすることが必要であり、追加の認証も必要とする保護ドメインによって保護されたキーチェーンアイテムを示す。詳細には、この図は、6つの異なる段階2301〜2306における、ソース装置2310により更新され、行先装置2315にプッシュされるキーチェーンアイテム2320の処理を示す。この図はまた、キーチェーンアイテム2320と同期すべき、対応するキーチェーンアイテムであるキーチェーンアイテム2325の処理を示す。
キーチェーンアイテム2320及びキーチェーンアイテム2325が属する保護ドメインは、キーチェーンアイテム2320及びキーチェーンアイテム2325を行先装置2315において利用可能にするために、行先装置2315をアンロックすることが必要であり、また、追加の認証(例えば、パスワード、網膜スキャン、指紋スキャン、音声認識、ある特定の位置の近傍内に装置があることなど)を必要とする。いくつかの実施形態において、追加のセキュリティ対策を必要とするアプリケーションに対するパスワードを保護するために、この保護ドメインが使用される。例えば、いくつかの実施形態のキーチェーンマネージャは、アプリケーションがリモートサーバにアクセスするためにセキュアなランダムパスワードを生成する。いくつかの実施形態において、このパスワードは、ユーザには公開されず、キーチェーンマネージャは、ユーザが記憶し、使用することができるより単純な又は異なるパスワードを用いてユーザを認証する。非公開のパスワードは、ユーザが使用する装置間で同期される。非公開のパスワードがソース装置において変更され、行先装置にプッシュされた場合、非公開のパスワードは、ユーザが行先装置をアンロックする場合であっても、行先装置で動作している同じアプリケーションを使用するためにユーザがこの異なるパスワードを提供しない限り、行先装置において利用可能にならない。
第1の段階2301は、ソース装置2310のキーチェーンアイテム2320と、行先装置2315のキーチェーンアイテム2325とがそれぞれ同期していることを示す。この段階において、行先装置2315はアンロック状態である。図示のとおり、キーチェーンアイテム2320とキーチェーンアイテム2325は共にデータ1を含むが、行先装置2315のキーチェーンアイテム2325は、行先装置2315がロック状態であるので利用不能であるこの例では、行先2325は、キーチェーンアイテム2325を利用不能にするために、キーチェーンアイテム2325が属する保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム2325を暗号化した。
第2の段階2302は、ユーザにより、ソース装置2310のキーチェーンアイテム2320がデータ1からデータ2に更新されたことを示す。例えば、キーチェーンアイテム2320は、ソース装置2310で動作しているアプリケーションが必要とするリモートサーバにアクセスするために実際に使用される非公開のパスワードを含み、ユーザは、ユーザが記憶しており、それを使用してアプリケーションを使用するために認証するこの異なるパスワードを変更することによって、非公開のパスワードを単に変更した。この段階では、キーチェーンアイテム2325は、行先装置2315が依然としてロック状態であるので利用不能なままであり、したがって、保護ドメインについての条件はまだ満たされていない。
第3の段階2303は、キーチェーンアイテム2320と行先装置2315の対応するキーチェーンアイテム2325とを同期させるためにソース装置2310がキーチェーンアイテム2320を行先装置2315にプッシュしたことを示す。この例では、ソース装置2310は、キーチェーンアイテム2320を行先装置2315にプッシュする前に、保護ドメインについての行先装置2315の公開キーを用いてキーチェーンアイテム2320を暗号化する。行先装置2315は、キーチェーンアイテム2320を受信するが、キーチェーンアイテム2320は、行先装置がロック状態であり、たがって、保護ドメインについての対応する秘密キーを用いてキーチェーンアイテム2320を解読しなかったので、この段階では利用不能である。また、キーチェーンアイテム2325も、行先装置2315がロック状態なので、利用不能なままである。
第4の段階2304において、ユーザは、行先装置2315をアンロックした。しかしながら、キーチェーンアイテム2320及びキーチェーンアイテム2325は共に、キーチェーンアイテム2320及びキーチェーンアイテム2325が属する保護ドメインについての条件がまだ満たされない−ユーザがこの保護ドメインが必要とする追加の認証を提供していないので、行先装置2315の使用について依然として利用不能である。
第5の段階2305は、ユーザが追加の認証を(例えば、ユーザが記憶しているこの異なるパスワードを入力することによって)提供したことを示す。ここで、キーチェーンアイテム2320及びキーチェーンアイテム2325は共に利用可能になった。これは、保護ドメインについての全ての条件が満たされ、したがって、装置2315が秘密キー及びローカル保護ドメインを用いてキーチェーンアイテム2325を解読したからである。装置2315はまた、解読された秘密キーを用いてキーチェーンアイテム2325を解読した。行先装置2315は、2つのキーチェーンアイテム2320とキーチェーンアイテム2325との同期を開始する。第6の段階2306は、キーチェーンアイテム2320とキーチェーンアイテム2325とが同期しており、したがって、キーチェーンアイテム2325がデータ2を有することを示す。
図24は、1つの装置について異なる条件セットを有する2つの保護ドメインによって保護されるデータを示す。詳細には、この図は、4つの異なる段階2401〜2404における行先装置2415によるメタデータアイテム2430及びメタデータアイテム2435並びにキーチェーンアイテム2420及びキーチェーンアイテム2425の処理を示す。この図はまた、キーチェーンアイテム2420を更新し、キーチェーンアイテム2425と同期させるために、キーチェーンアイテム2420を行先装置2415にプッシュするソース装置2410を示す。
上述のように、キーチェーンアイテムは、2つのキーチェーンアイテムを同期させる時の任意の競合を解決するために装置が使用する情報を搬送するメタデータアイテムと関連付けられる。いくつかの実施形態において、キーチェーンアイテムが利用不能なままである間にメタデータアイテムが装置において利用可能になるように、キーチェーンアイテムとその関連するメタデータアイテムとは、異なる保護ドメイン中にあるように定義される。装置において、キーチェーンアイテムが利用不能であり、関連付けられたメタデータアイテムが利用可能である場合、装置は、関連付けられたメタデータアイテムが搬送する情報を使用して、キーチェーンアイテムについての任意の競合を解決することができる。
メタデータアイテム2430は、キーチェーンアイテム2420と関連付けられ、メタデータアイテム2435は、キーチェーンアイテム2425とそれぞれ関連付けられる。この例では、メタデータアイテム2430及びメタデータアイテム2435は、メタデータアイテム2430及びメタデータアイテム2435が装置2415の使用について利用可能になるために、行先装置2415がターンオンにされることを必要とする第1の保護ドメインに属する。キーチェーンアイテム2420及びキーチェーンアイテム2425は、キーチェーンアイテムが行先装置2415において利用可能になるために、行先装置2415がアンロック状態であることを必要とする第2の保護ドメインに属する。
第1の段階2401は、ソース装置2410のキーチェーンアイテム2420と、行先装置2415のキーチェーンアイテム2425とがそれぞれ同期していないことを示す。図示のとおり、キーチェーンアイテム2420はデータ1を含み、キーチェーンアイテム2425はデータ2をそれぞれ含む。メタデータアイテム2430とメタデータアイテム2435とは、異なる情報を有する。図示のとおり、メタデータアイテム2430はメタデータ1を搬送し、メタデータアイテム2435はメタデータ2を搬送する。この段階において、行先装置2415はロック状態である。行先装置2415のキーチェーンアイテム2425は、キーチェーンアイテム2425が装置2415では利用不能であることを示す点線の平行四辺形で示される。この例では、装置2425は、第2の保護ドメインについてのローカル保護ドメインキーを用いてキーチェーンアイテム2425を暗号化することによって、キーチェーンアイテム2425を利用不能にした。メタデータアイテム2435は、装置2425がオンである時には装置2425がメタデータ2435を暗号化しないので、装置2415において利用可能である。
第2の段階2402は、ソース装置2410が、キーチェーンアイテム2420と行先装置2415の対応するキーチェーンアイテム2425とを同期させるために、関連付けられたメタデータアイテム2430と共にキーチェーンアイテム2420を行先装置2415にプッシュしたことを示す。この例では、ソース装置2410は、第1の保護ドメインについての行先装置2415の公開キーを用いてメタデータアイテム2430を暗号化する。ソース装置2410は、メタデータアイテム2430及びキーチェーンアイテム2420を行先装置2415に送信する前に、第2の保護ドメインについての行先装置2415の公開キーを用いてキーチェーンアイテム2420を暗号化する。
行先装置2415は、キーチェーンアイテム2420及びメタデータアイテム2435を受信するが、キーチェーンアイテム2420は、この段階2402では行先装置2415において利用不能である。これは、行先装置2415が依然としてロック状態であり、したがって、装置2415は、第2の保護ドメインについての秘密キーを用いてキーチェーンアイテム2425を解読しないからである。また、キーチェーンアイテム2425は、装置2415が依然としてアンロック状態なので、利用不能なままである。メタデータアイテム2435は、装置2402が稼働しているので、この段階2402では行先2415において利用可能である。装置2415は、メタデータアイテム2430及びメタデータアイテム2435を使用してキーチェーンアイテム2420とキーチェーンアイテム2425との間の競合を解決することによって、2つの暗号化されたキーチェーンアイテム2420及びキーチェーンアイテム2425の同期を開始する。
第3の段階2403において、行先装置2415は依然としてロック状態である。しかしながら、行先装置2415は、キーチェーンアイテムを同期した。その結果、メタデータアイテムは新しい競合解決情報(メタデータ3)を用いて更新されており、キーチェーンアイテム2425はデータ1を有する。更新されたキーチェーンアイテム2425は、装置2415が依然としてロック状態なので、第2のドメインについての公開キーを用いて暗号化されたままにすることによって、行先装置2415において依然として利用可能でない。第4の段階2404において、行先装置2415はアンロック状態である。この例では、装置は、第2のドメインについてのローカル保護ドメインキーを用いて第2の保護ドメインのための秘密キーを解読し、次いで、解読された秘密キーを用いてキーチェーンアイテム2425を解読することによって、キーチェーンアイテム2425を利用可能にする。
C.シンクサークル及び保護ドメイン
上述のように、装置は、(例えば、図4〜図6を参照して上述した技法を使用して)異なるキーチェーンアイテムを同期さるために、いくつかの異なるシンクサークルに加入し得る。いくつかの実施形態において、いくつかの装置は、いくつかの異なる保護ドメインに属するキーチェーンアイテムを同期させるために、いくつかの異なるシンクサークルを形成する。
図25は、いくつかの装置により形成されたいくつかのシンクサークルを概念的に示す。詳細には、この図は、3つの装置A〜Cが、3つの異なる保護ドメイン1〜3について3つの異なるシンクサークル2505〜2515を形成することを示す。図の上部部分は、3つのシンクサークル2505〜2515の装置A〜Cを示す。図の下部部分は、3つのシンクサークル2505〜2515をそれぞれ示す。
いくつかの実施形態において、装置のグループは、装置がキーチェーンアイテムを保護するために使用する保護ドメインの各々についてシンクサークルを形成する。いくつかのそのような実施形態では、グループの各装置は、装置がキーチェーンアイテムを暗号化及び解読するために使用する同じ公衆/プライベートキーペアを使用して、シンクサークルに加入する。代替的に又は連携させて、他の実施形態の装置は、シンクサークルを加入し、キーチェーンアイテムを暗号化及び解読するために、別個のキーペアを使用する。
図示のとおり、装置A〜Cは、保護ドメイン1についてシンクサークル2505を形成する。図示のとおり、装置A〜Cは、保護ドメイン2についてシンクサークル2510を形成する。図示のとおり、装置A〜Cは、保護ドメイン3についてシンクサークル2510を形成する。図25は、3つのシンクサークルが同じ3つの装置A〜Cにより形成されることを示す。しかしながら、装置A〜Cの各々は、保護ドメイン1〜3以外の保護ドメイン(図示せず)について、装置A〜Cのうちの他の2つの装置とは別の装置と共に他のシンクサークル(図示せず)を形成し得る。
この図にはリング形状又は円形でシンクサークル2505〜2515が示されているが、装置の各対は、シンクサークルを形成するためにセキュアなトランスポート層を確立する。即ち、いくつかの実施形態において、シンクサークルの装置は、リングネットワークではなくスターネットワークを形成する。
図26は、いくつかの異なる保護ドメインについていくつかの装置により形成されたシンクサークルを概念的に示す図である。詳細には、この図は、3つの装置A〜Cが、3つの異なる保護ドメイン1〜3についてシンクサークル2605を形成することを示す。この図はまた、キーチェーンアイテム2610〜2620の3つのグループを示す。
いくつかの実施形態において、装置のグループは、いくつかの異なる保護ドメインについて単一のシンクサークルを形成する。これらの実施形態のいくつかにおいて、グループの各装置は、単一のシンクサークルに加入するために、いくつかの異なる保護ドメインについてのいくつかの公開/秘密キーペアのうちの1つの対を使用する。即ち、グループの各装置は、キーチェーンアイテムを暗号化及び解読するためにいくつかの公開/秘密キーペアのうちの1つの対を選択し、選択されたキーペアを使用して単一のシンクサークルに加入する。代替的に又は連携して、他の実施形態におけるグループの各装置は、キーチェーンアイテムを暗号化及び解読するためにキーペアのうちのいずれも使用せずに、別個のキーペアを使用して単一のシンクサークルに加入する。
いくつかの実施形態において、グループの各装置は、単一のシンクサークルに加入するために、いくつかの異なる保護ドメインについてのいくつかの公開/秘密キーペアの全てを使用する。即ち、他の実施形態におけるグループの各装置は、キーチェーンアイテムを暗号化及び解読するためにキーペアの全てを使用して、シンクサークルに加入する。したがって、これらの実施形態では、装置は、装置が全てのキーペアを利用可能にする必要があるので、シンクサークルに加入するために、いくつかの異なる保護ドメインのドメインごとに全ての条件を満たす必要がある。
この例では、キーチェーンアイテム2610は、保護ドメイン1に属する。キーチェーンアイテム2610は、装置Cによって装置Aにプッシュされている。装置Cは、キーチェーンアイテム2610を暗号化するために、保護ドメイン1について装置B及びCに公開されている装置Aの公開キーを使用する。しかしながら、この例における装置Cは、シンクサークル2605に加入するために、保護ドメイン1〜3についての3つの公開/秘密キーペア全てを使用した。
キーチェーンアイテム2620は、保護ドメイン2に属する。キーチェーンアイテム2620は、装置Bによって装置Cにプッシュされている。装置Bは、キーチェーンアイテム2620を暗号化するために、保護ドメイン2について装置A及びBに公開されている装置Cの公開キーを使用する。この例では、装置Bは、シンクサークル2605に加入するために、保護ドメイン1〜3についての3つの公開/秘密キーペア全てを使用した。
キーチェーンアイテム2615は、保護ドメイン3に属する。キーチェーンアイテム2615は、装置Aによって装置Bにプッシュされている。装置Aは、キーチェーンアイテム2615を暗号化するために、保護ドメイン3について装置A及びCに公開されている装置Bの公開キーを使用する。この例では、装置Bは、シンクサークル2605に加入するために、保護ドメイン1〜3についての3つの公開/秘密キーペア全てを使用した。
V.ソフトウェアアーキテクチャ
いくつかの実施形態において、上記のプロセスは、コンピュータ(例えば、デスクトップ、ラップトップなど)、ハンドヘルド装置(例えば、スマートフォン)、又はタブレットコンピューティング装置上で動作する、あるいはマシン可読媒体内に記憶されるソフトウェアとして実装されている。図27は、いくつかの実施形態のキーチェーンマネージャ2700のソフトウェアアーキテクチャを概念的に示す。いくつかの実施形態において、キーチェーンマネージャは、シンクサークルの装置間でのキーチェーンの同期を管理するためのスタンドアロンアプリケーションである。いくつかの実施形態のキーチェーンマネージャが、別のアプリケーション(例えば、キーチェーン管理アプリケーション、データ管理アプリケーション、セキュリティアプリケーションなど)に組み込まれている一方、他の実施形態では、アプリケーションはオペレーティングシステム内に実装され得る。更に、いくつかの実施形態において、アプリケーションは、サーバベースソリューションの一部として提供される。いくつかのそのような実施形態において、アプリケーションは、シンクライアントによって提供される。即ち、アプリケーションは、サーバ上で動作し、ユーザは、サーバからリモートの別個のマシンを介してアプリケーションと対話する。他のそのような実施形態において、アプリケーションは、シッククライアントとして提供される。即ち、アプリケーションは、サーバからクライアントマシンに分配され、クライアントマシン上で動作する。
いくつかの実施形態のキーチェーンマネージャ2700は、様々なオペレーティングシステム上で動作するように実装される。いくつかの実施形態において、様々なオペレーティングシステム(例えば、iOS(登録商標)、Mac OS X(登録商標)など)は、異なるアーキテクチャを使用してキーチェーン及びキーチェーンアイテムを管理する。いくつかの実施形態のキーチェーンマネージャ2700は、異なるキーチェーン管理アーキテクチャを使用して装置間でキーチェーン及びキーチェーンアイテムを同期させるように実装される。例えば、いくつかの実施形態において、キーチェーンマネージャ2700は、特定のキーチェーン管理アーキテクチャ(例えば、iOS(登録商標))について実装され、別のキーチェーン管理アーキテクチャ(例えば、Mac OS X(登録商標))を用いて動作するようにポートされる。
図示のとおり、キーチェーンマネージャ2700は、同期マネージャ2705、登録マネージャ2710、キーチェーンアイテムマネージャ2715、暗号化モジュール2720、マニフェストモジュール2725、及び競合リゾルバ2730を含む。キーチェーンマネージャ2700はまた、シンクサークルデータ記憶装置2735、装置マニフェスト記憶装置2740、競合ルール記憶装置2745、キーチェーン記憶装置2750、及びセキュリティデータ記憶装置2755を含む。いくつかの実施形態において、シンクサークルデータ2735は、図3を参照して上述した記憶装置310〜330に記憶されたデータのローカルコピーを記憶する。即ち、シンクサークルデータ記憶装置2735は、シンクサークルの名前、シンクサークル装置リスト、ユーザ署名、装置署名、及びキーチェーンデータ、並びに他のデータを記憶する。装置マニフェスト記憶装置2740は、シンクサークルの装置の各々についてのマニフェストの履歴を記憶する。競合ルール記憶装置2745は、競合リゾルブの以前のバージョン、キーチェーンアイテム競合を解決するために使用される競合リゾルバの現在のバージョン、並びに競合リゾルバの以前のバージョン及び現在のバージョンに関連付けられた様々なルールを記憶する。キーチェーン記憶装置2750は、シンクサークルの装置と同期させるためのキーチェーンを記憶する。いくつかの実施形態において、キーチェーン記憶装置2750はまた、シンクサークルの他の装置と共有していない(即ち、同期していない)キーチェーン及び/又はキーチェーンアイテムも記憶する。セキュリティデータ記憶装置2755は、キーチェーンの同期を可能にするためにキーチェーンマネージャ2700が提供する、セキュリティ機能(例えば、セキュアな通信チャネル(例えば、セキュリティキー)、データ暗号法(例えば、暗号化キー)、データ解読法(例えば、解読キー)、データ確認(例えば、復号キー)など)に関係するデータを記憶する。いくつかの実施形態において、記憶装置2735〜2755が1つの物理的記憶装置に記憶される一方、他の実施形態では、記憶装置2735〜2755は別個の物理的記憶装置に記憶される。更に、いくつかの実施形態では、記憶装置2735〜2755の一部又は全部は、いくつかの物理的記憶装置にわたって実装される。
同期マネージャ2705は、シンクサークルの装置間でのキーチェーンの同期を管理する役割を果たす。いくつかの実施形態において、同期マネージャ2705は、キーチェーンマネージャ2700が動作する装置がシンクサークルに正常に登録された後に、登録マネージャ2710により開始される。いくつかの実施形態において、同期マネージャ2705は、セクションIVにおいて上述したデータ保護機能を扱う。同期マネージャは、シンクサークルの装置間でのキーチェーンの同期を達成するために、他のモジュール2710及びモジュール2715〜2730と通信する。
登録マネージャ2710は、シンクサークルへの装置の登録に関係する様々な機能を扱う。例えば、キーチェーンマネージャが動作している装置がシンクサークルに加入することを望む場合、登録マネージャ2710は、シンクサークルが存在しない時にはシンクサークルを作成する。登録マネージャ2710はまた、(例えば、図5を参照して上述したプロセス500を実行することによる)登録要求生成、(例えば、図6を参照して上述したプロセス600を実行することによる)登録要求承認、登録承認確認応答などを扱う。
キーチェーンアイテムマネージャ2715は、キーチェーンについてキーチェーンアイテムを作成し、管理する。いくつかの実施形態において、キーチェーンアイテムマネージャ2715は、キーチェーンのキーチェーンアイテムの一部又は全部を表すデータ構造(例えば、図10を参照して上述したデータ構造)を生成し、維持する。
セキュリティモジュール2720は、様々なセキュリティ機能の機能を提供する。例えば、セキュリティモジュール2720は、シンクサークルの装置の各々とのセキュアな通信チャネルの確立を扱う。セキュリティモジュール2720は、様々なセキュリティ機能を実装するために、異なる暗号プリミティブ、アルゴリズム、プロトコル、及び技術(例えば、OTRメッセージング、ディフィー・ヘルマンキー共有、公開/秘密キーペア生成など)を実行する。
マニフェストモジュール2725は、ローカルキーチェーンアイテム、及びいくつかの場合には、ピア装置のマニフェストに基づいて、様々なタイプのマニフェストを生成する役割を果たす。例えば、マニフェストモジュール2725は、マニフェストダイジェクト、完全なマニフェスト及びデルタマニフェストを生成する。マニフェストの生成を容易にするために、マニフェストモジュール2725は、シンクサークルの装置の各々についてマニフェストの履歴を維持する。また、マニフェストモジュール2725は、デルタマニフェストの生成において、ピア装置のローカルキーチェーンアイテム(又はローカルマニフェスト)とマニフェストとの比較を実行する。
競合リゾルバ2730は、キーチェーンアイテム間の競合を解決することを扱う。例えば、競合リゾルバ2730は、競合を識別するために、ピア装置のローカルキーチェーンアイテムとキーチェーンアイテムとを比較する。また、競合リゾルバは、キーチェーンアイテム競合を解決するために、(例えば、競合ルール記憶装置2745に記憶された)競合リゾルバを実行する。更に、競合リゾルバ2730は、競合リゾルバ間での競合を検出し、キーチェーンアイテム競合を解決するために使用すべき競合リゾルバを判定する役割を果たす。
多くの機能を1つのモジュール(例えば、登録モジュール2710、セキュリティモジュール2720など)で実行されるものとして述べてきたが、当業者には、複数のモジュールに機能が分割され得ることは認識されよう。同様に、複数の別々のモジュールにより実行されるものとして記載された機能は、いくつかの実施形態における単一モジュール(例えば、キーチェーンアイテムマネージャ2715及び競合リゾルバ2730)により実行され得る。
VI.電子システム
上述の機能及びアプリケーションのうちの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも称される)上に記録される命令のセットとして指定される、ソフトウェアプロセスとして実装される。これらの命令が、1つ以上の計算又は処理ユニット(1つ又は複数)(例えば、1つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット)によって実行される場合、それらの命令は、処理ユニット(1つ又は複数)に、それらの命令で示されるアクションを実行させる。コンピュータ可読媒体の例には、CD−ROM、フラッシュドライブ、ランダムアクセスメモリ(RAM)チップ、ハードディスク、消去可能プログラム可能な読出し専用メモリ(EPROM)、電気的消去可能プログラム可能な読み出し専用メモリ(EEPROM)などがあるが、これらに限定されない。コンピュータ可読媒体は、無線によって又は有線接続により進行する搬送波及び電子信号を含まない。
この明細書では、用語「ソフトウェア」は、プロセッサによって処理するためにメモリに読み込むことができる、読み出し専用メモリ内に存在するファームウェア又は磁気記憶装置に記憶されたアプリケーションを含む。また、一部の実施形態では、複数のソフトウェア発明は、別個のソフトウェア発明のまま維持しつつ、より大きいプログラムの下位区分として実装することもできる。一部の実施形態では、複数のソフトウェア発明はまた、個別のプログラムとして実装することもできる。最後に、本明細書で説明されるソフトウェア発明を一体となって実装する、個別のプログラムのいずれの組み合わせも、本発明の範囲内である。いくつかの実施形態において、ソフトウェアプログラムは、1つ以上の電子システム上で動作するようにインストールされた時、ソフトウェアプログラムの動作を実行し行なう1つ以上の特定のマシン実行を定義する。
図28は、本発明のいくつかの実施形態が実現される電子システム2800を概念的に示す。電子システム2800、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータなど)、電話、PDA、又は他の種類の電子若しくはコンピューティング装置でよい。そのような電子システムは、様々なタイプのコンピュータ可読媒体、及び様々な他のタイプのコンピュータ可読媒体のためのインターフェースを含む。電子システム2800は、バス2805、処理ユニット(1つ又は複数)2810、グラフィクス処理ユニット(GPU)2815、システムメモリ2820、ネットワーク2825、読み出し専用メモリ2830、永久記憶装置2835、入力装置2840及び出力装置2845を含む。
バス2805は、電子システム2800の多数の内部装置を通信可能に接続する全てのシステムバス、周辺装置バス及びチップセットバスを集合的に表す。例えば、バス2805は、処理ユニット(1つ又は複数)2810を、読み出し専用メモリ2830、GPU 2815、システムメモリ2820、及び永久記憶装置2835と通信可能に接続する。
これらの様々なメモリユニットから、処理ユニット(1つ又は複数)2810は、本発明のプロセスを実行するために、実行するべき命令及び処理するべきデータを取得する。処理ユニット(1つ又は複数)は、異なる実施形態において、シングルプロセッサ又はマルチコアプロセッサでもよい。いくつかの命令は、GPU 2815に渡され、GPU 2815によって実行される。GPU 2815は、処理ユニット(1つ又は複数)2810によって提供される、様々な計算をオフロードするか、又は画像処理を補完することができる。いくつかの実施形態において、そのような機能は、CoreImageのカーネルシェーディング言語を使用して提供されてもよい。
読み出し専用メモリ(ROM)2830は、処理ユニット(1つ又は複数)2810及び電子システムの他のモジュールによって必要とされる静的データ及び命令を記憶する。他方、永久記憶装置2835は、読み書きメモリ装置である。この装置は、電子システム2800がオフの時でも、命令及びデータを記憶している不揮発性メモリユニットである。本発明のいくつかの実施形態は、永久記憶装置2835として大容量記憶装置(磁気又は光ディスク、及びその対応するディスクドライブ等)を使用する。
他の実施形態は、永久記憶装置として、リムーバブル記憶装置(フロッピディスク、フラッシュメモリ装置など、及びその対応するドライブ)を使用する。永久記憶装置2835と同様に、システムメモリ2820は、読み書きメモリ装置である。しかしながら、記憶装置2835と異なり、システムメモリ2820は、ランダムアクセスメモリなどの揮発性読み書きメモリである。システムメモリ2820は、実行時にプロセッサが必要とする命令及びデータのうちのいくつかを記憶する。いくつかの実施形態において、本発明のプロセスは、システムメモリ2820、永久記憶装置2835、及び/又は読み出し専用メモリ2830に記憶される。例えば、様々なメモリユニットは、いくつかの実施形態によれば、マルチメディアクリップを処理する命令を含む。これらの様々なメモリユニットから、処理ユニット(1つ又は複数)2810は、いくつかの実施形態のプロセスを実行するために実行する命令及び処理するデータを取り出す。
バス2805は、また、入力装置2840及び出力装置2845に接続する。入力装置2840により、ユーザは、電子システムに情報を通信し、コマンドを選択することが可能になる。入力装置2840として、英数字キーボード及びポインティング装置(「カーソル制御装置」とも呼ばれる)、カメラ(例えば、ウェブカメラ)、音声コマンドを受け取るためのマイクロホン又は類似の装置などが挙げられる。出力装置2845は、電子システムによって生成された画像を表示するか、あるいは、データを出力する。出力装置2845として、プリンタ、陰極線管(CRT)又は液晶ディスプレイ(LCD)などのディスプレイ装置、並びにスピーカ又は類似のオーディオ出力装置が挙げられる。いくつかの実施形態には、入力装置と出力装置との両方として機能するタッチスクリーンなどの装置を含む。
最後に、図28に示すように、バス2805はまた、ネットワークアダプタ(図示せず)を通じて、電子システム2800をネットワーク2825にも接続する。このように、コンピュータは、コンピュータのネットワーク(ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、又はイントラネットなど)、又はインターネットなどのネットワークのネットワークの一部でよい。電子システム2800のいずれか又は全ての構成要素を、本発明と共に使用することができる。
いくつかの実施形態は、マイクロプロセッサ、マシン可読又はコンピュータ可読媒体(あるいは、コンピュータ可読記憶媒体、マシン可読媒体又はマシン可読記憶媒体と呼ばれる)にコンピュータプログラム命令を記憶する記憶装置及びメモリなどの電子構成要素を含む。そのようなコンピュータ可読媒体のいくつかの例として、RAM、ROM、読み出し専用コンパクトディスク(CD−ROM)、追記型コンパクトディスク(CD−R)、書き換え可能コンパクトディスク(CD−RW)、読み出し専用多目的ディスク(例えば、DVD−ROM、2層DVD−ROM)、様々な記録可能/書き換え可能DVD(例えば、DVD−RAM、DVD−RW、DVD+RWなど)、フラッシュメモリ(例えば、SDカード、ミニSDカード、マイクロSDカードなど)、磁気及び/又はソリッドステートハードディスク、読み出し専用記録可能Blu−Ray(登録商標)ディスク、超高密度光ディスク、任意の他の光学又は磁気メディア、及びフロッピディスクが挙げられる。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能であり、かつ様々な操作を実行する命令のセットを含む、コンピュータプログラムを記憶することができる。コンピュータプログラム又はコンピュータコードの例として、コンパイラによって作成されるようなマシンコード、及びインタープリタを使用してコンピュータ、電子構成要素又はマイクロプロセッサによって実行される高レベルコードを含むファイルが挙げられる。
上記の考察は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサに言及しているが、一部の実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)などの、1つ以上の集積回路によって実行される。いくつかの実施形態において、そのような集積回路は、回路自体に記憶された命令を行う。更に、いくつかの実施形態は、プログラマブルロジックデバイス(PLD)、ROM、又はRAMデバイスに記憶されたソフトウェアを実行する。
本出願のこの明細書及び任意の請求項で使用される時、用語「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」は全て、電子装置又は他の技術的装置を指す。これらの用語は、人々又は人々のグループを除外する。本明細書の目的において、用語「ディスプレイ又は表示」は、電子システム上の表示を意味する。本出願のこの明細書及び任意の請求項で使用される時、用語「コンピュータ可読媒体(単数)」、「コンピュータ可読媒体(複数)」、及び「マシン可読媒体」は、コンピュータによって読み出し可能な形式で情報を記憶する有形の物理的物体に完全に制限される。これらの用語は、あらゆる無線信号、有線でダウンロードされた信号、及びあらゆる他の暫時信号を除外する。
本発明は、数多くの特定の詳細を参照して説明されているが、当業者には、本発明の趣旨から逸脱することなく、他の特定の形式で本発明を具体化することができる点が認識されるであろう。更に、(図5、図6及び図12〜図15を含む)いくつかの図面はプロセスを概念的に示している。これらのプロセスの具体的な操作は、図示され記述された厳密な順序で実行されなくてもよい。具体的な操作は、1つの連続した一連の操作で実行されなくてもよく、様々な具体的な操作が、異なる実施形態で実行されてもよい。更に、プロセスは、いくつかのサブプロセスを使用して、又はより大きいマクロプロセスの一部として実施されてもよい。したがって、本発明は、前述の例示的な詳細によって限定されるものではなく、むしろ、添付の特許請求の範囲によって定義されるものであることが、当業者には理解されるであろう。

Claims (18)

  1. ピア装置のセットの第1のピア装置のための、キーチェーンを同期させるための同期サークルであって、セキュアなデータを共有する前記第1のピア装置を含んだ複数のピア装置を含む前記同期サークルに加入するために、ピア装置の前記セットの第2のピア装置からの要求を処理する方法であって、
    前記第2のピア装置が特定のクラウドサービスアカウントに関連付けられている前記同期サークルに加入するための要求を受信することと
    前記第1のピア装置において、前記要求が、前記要求とともに受信され、前記特定のクラウドサービスアカウントに関連付けられたパスワードから導出されたデータに基づいて認証されているかを判定することと
    前記要求が認証されていると判定された時に、前記第2のピア装置による前記要求を承認する入力のためのプロンプトを出すことと
    前記要求を承認する入力が受信された時に、前記第2のピア装置を前記同期サークルに追加することと
    記同期サークルへの前記第2のピア装置の前記追加の後に、前記第1のピア装置と前記第2のピア装置との間でキーチェーンを同期することにより、前記第1のピア装置と前記第2のピア装置との間でセキュアなデータを共有することと
    を含むことを特徴とする方法。
  2. 前記第2のピア装置前記同期サークル追加することは、前記第2のピア装置を一意に識別するデータを、前記同期サークルのメンバーとして指定された装置のリストに追加することを含む、
    ことを特徴とする請求項1に記載の方法。
  3. 前記第2のピア装置前記同期サークル追加することは、前記第1のピア装置に属すると共に前記第1のピア装置により生成された公開/秘密装置署名キーペアのうちの秘密キーを用いて、装置の前記リストの署名を生成することを更に含む、
    ことを特徴とする請求項2に記載の方法。
  4. 前記第2のピア装置前記同期サークル追加することは、装置の前記リストと前記生成された署名とを、前記同期サークルの他のピア装置と共有することを更に含む、
    ことを特徴とする請求項3に記載の方法。
  5. 記第1のピア装置と前記第2のピア装置との間で共有されるセキュアデータは、パスワード、秘密鍵、証明書、及びセキュアノートの少なくとも1つを含む、
    ことを特徴とする請求項1に記載の方法。
  6. 前記要求が認証されているか判定することは、
    前記同期サークルに関連付けられたユーザが、前記第2のピア装置が前記同期サークルに加入するための前記要求をサブミットしたことを検証することと、
    前記第2のピア装置が前記同期サークルに加入するための前記要求が、前記第2のピア装置により生成されたことを検証することと、
    を含むことを特徴とする請求項1に記載の方法。
  7. 前記第2のピア装置が前記同期サークルに加入するための前記要求とともに受信された前記データは、ユーザ署名公開/秘密キーペアのうちの秘密キーを用いて署名された前記要求の署名を含み、
    前記同期サークルに関連付けられた前記ユーザが、前記第2のピア装置が前記同期サークルに加入するための前記要求をサブミットしたこと検証することは、
    前記クラウドサービスアカウントの前記パスワードに基づいて生成された前記ユーザ署名公開/秘密キーペアのうちの公開キーを用いた前記要求の前記署名を解読することと、
    前記要求が前記解読された署名と一致することを判定することと、
    を含むことを特徴とする請求項6に記載の方法。
  8. 前記第2のピア装置が前記同期サークルに加入するための前記要求とともに受信された前記データは前記要求の署名を含み、
    前記第2のピア装置が前記同期サークルに加入するための前記要求が前記第2のピア装置により生成されたこと検証することは、
    前記第2のピア装置に属すると共に前記第2のピア装置により生成された公開/秘密キーペアのうちの公開キーを用いて前記要求の前記署名を解読することと、
    前記要求が前記解読された署名と一致することを判定することと、
    を含むことを特徴とする請求項6に記載の方法。
  9. 前記要求を承認する入力についてプロンプトを出すことは、前記第1のピア装置のディスプレイスクリーン上に、前記クラウドサービスアカウントの前記パスワードの入力の要求を表示することを含む、
    ことを特徴とする請求項1に記載の方法。
  10. 前記第1のピア装置において記憶されたキーチェーンのセットのうちのキーチェーンへの変更を受信することと、
    ピア装置の前記セットと共に前記第1のピア装置において記憶された前記キーチェーンのセットを同期させるために、ピア装置の前記セットにおける各装置に対する更新要求を生成することと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  11. 前記第1のピア装置と異なるピア装置との間の別個のセキュアな通信チャネルを介して、当該ピア装置へ生成された更新要求のそれぞれを送信することをさらに含む、
    ことを特徴とする請求項10に記載の方法。
  12. 前記更新要求がピア装置の前記セットのうちの特定の装置のみによって解読可能であるように、暗号化キーを用いて当該特定の装置についての前記更新要求のそれぞれを暗号化することをさらに含む、
    ことを特徴とする請求項11に記載の方法。
  13. 特定の装置についての前記更新要求のそれぞれを暗号化するための前記暗号化キーは、前記特定の装置の公開/秘密キーペアのうちの公開キーを含む、
    ことを特徴とする請求項12に記載の方法。
  14. 前記キーチェーンへの前記変更は、前記キーチェーンに対するキーチェーンアイテムの追加を含む、
    ことを特徴とする請求項10に記載の方法。
  15. 前記キーチェーンへの前記変更は、前記キーチェーンにおけるキーチェーンアイテムの変更を含む、
    ことを特徴とする請求項10に記載の方法。
  16. 前記キーチェーンへの前記変更は、前記キーチェーンにおけるキーチェーンアイテムの削除を含む、
    ことを特徴とする請求項10に記載の方法。
  17. 少なくとも1つの処理部によって実行されるときに、請求項1から16のいずれか1項に記載の方法を実行するプログラムを記憶する機械可読媒体。
  18. 処理部のセットと、
    前記処理部の少なくとも1つによって実行されるときに、請求項1から16のいずれか1項に記載の方法を実行するプログラムを記憶する機械可読媒体と、
    を有する電子機器。
JP2015553742A 2013-01-18 2013-12-24 キーチェーン同期 Active JP6072305B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201361754524P 2013-01-18 2013-01-18
US61/754,524 2013-01-18
US13/839,084 2013-03-15
US13/839,126 2013-03-15
US13/839,050 2013-03-15
US13/839,126 US9124637B2 (en) 2013-01-18 2013-03-15 Data protection for keychain syncing
US13/839,050 US9197700B2 (en) 2013-01-18 2013-03-15 Keychain syncing
US13/839,084 US9077759B2 (en) 2013-01-18 2013-03-15 Conflict resolution for keychain syncing
PCT/US2013/077724 WO2014113196A1 (en) 2013-01-18 2013-12-24 Keychain synchronization

Publications (2)

Publication Number Publication Date
JP2016505226A JP2016505226A (ja) 2016-02-18
JP6072305B2 true JP6072305B2 (ja) 2017-02-01

Family

ID=51209997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015553742A Active JP6072305B2 (ja) 2013-01-18 2013-12-24 キーチェーン同期

Country Status (8)

Country Link
US (3) US9197700B2 (ja)
EP (2) EP3860080A1 (ja)
JP (1) JP6072305B2 (ja)
KR (2) KR101713307B1 (ja)
CN (4) CN108055131B (ja)
AU (3) AU2013374203B2 (ja)
TW (1) TWI512534B (ja)
WO (1) WO2014113196A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9197700B2 (en) 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US9077759B2 (en) 2013-01-18 2015-07-07 Apple Inc. Conflict resolution for keychain syncing
US9860747B2 (en) * 2013-06-07 2018-01-02 Apple Inc. System and method for cloud synchronizing known networks
US10250579B2 (en) * 2013-08-13 2019-04-02 Alcatel Lucent Secure file transfers within network-based storage
US10148736B1 (en) * 2014-05-19 2018-12-04 Amazon Technologies, Inc. Executing parallel jobs with message passing on compute clusters
US9860314B2 (en) * 2014-08-19 2018-01-02 Ciena Corporation Data synchronization system and methods in a network using a highly-available key-value storage system
US9565185B2 (en) 2014-11-24 2017-02-07 At&T Intellectual Property I, L.P. Facilitation of seamless security data transfer for wireless network devices
US10083291B2 (en) * 2015-02-25 2018-09-25 Verisign, Inc. Automating internet of things security provisioning
US10205598B2 (en) 2015-05-03 2019-02-12 Ronald Francis Sulpizio, JR. Temporal key generation and PKI gateway
US9432340B1 (en) * 2015-05-07 2016-08-30 Bogart Associates System and method for secure end-to-end chat system
US9904629B2 (en) 2015-05-31 2018-02-27 Apple Inc. Backup system with multiple recovery keys
US10318154B2 (en) * 2015-05-31 2019-06-11 Apple Inc. Dynamic group membership for devices
US10079880B2 (en) 2015-06-07 2018-09-18 Apple Inc. Automatic identification of invalid participants in a secure synchronization system
US9923721B2 (en) * 2015-06-22 2018-03-20 Intel IP Corporation Key agreement and authentication for wireless communication
US10419422B2 (en) 2015-07-06 2019-09-17 Apple Inc. Combined authorization process
US11444766B2 (en) 2015-07-06 2022-09-13 Apple Inc. Combined authorization process
US10270597B2 (en) 2015-07-06 2019-04-23 Apple Inc. Combined authorization process
CZ306210B6 (cs) * 2015-07-07 2016-09-29 Aducid S.R.O. Způsob přiřazení alespoň dvou autentizačních zařízení k účtu jednoho uživatele pomocí autentizačního serveru
US20170288866A1 (en) * 2016-03-30 2017-10-05 AVAST Software s.r.o. Systems and methods of creating a distributed ring of trust
US10298402B2 (en) * 2016-06-27 2019-05-21 Google Llc Access control technology for peer-to-peer sharing
US10915216B2 (en) 2016-06-27 2021-02-09 Google Llc User interface for access control enabled peer-to-peer sharing
US11057208B2 (en) * 2016-08-22 2021-07-06 Rakuten, Inc. Management system, management device, management method, program, and non-transitory computer-readable information recording medium
US10313123B1 (en) 2016-12-14 2019-06-04 Amazon Technologies, Inc. Synchronizable hardware security module
US10425225B1 (en) 2016-12-14 2019-09-24 Amazon Technologies, Inc. Synchronizable hardware security module
US10263778B1 (en) * 2016-12-14 2019-04-16 Amazon Technologies, Inc. Synchronizable hardware security module
US11037232B2 (en) 2017-06-06 2021-06-15 Microsoft Technology Licensing, Llc Smart membership management
WO2018232304A1 (en) * 2017-06-16 2018-12-20 Intel Corporation Cloud-to-device mediator service from services definition
US11635908B2 (en) 2017-06-22 2023-04-25 Adobe Inc. Managing digital assets stored as components and packaged files
US10970302B2 (en) 2017-06-22 2021-04-06 Adobe Inc. Component-based synchronization of digital assets
GB2564430C (en) * 2017-07-07 2021-02-17 Gurulogic Microsystems Oy Data communication system and method
FR3070077A1 (fr) * 2017-08-09 2019-02-15 Orange Procede et serveur de certification d'un document electronique
US11503015B2 (en) 2017-10-12 2022-11-15 Mx Technologies, Inc. Aggregation platform portal for displaying and updating data for third-party service providers
US11023573B2 (en) * 2018-04-20 2021-06-01 Microsoft Technology Licensing, Llc Password reset for multi-domain environment
US11321012B2 (en) * 2018-10-12 2022-05-03 Adobe Inc. Conflict resolution within synchronized composite-part-based digital assets
US10805803B1 (en) 2019-04-03 2020-10-13 Genfintech, Inc. Systems and methods for mobile peer-to-peer content sharing
JP2021071857A (ja) * 2019-10-30 2021-05-06 立花 良一 パスワード提供システム
US11321446B2 (en) * 2019-12-16 2022-05-03 Dell Products L.P. System and method to ensure secure and automatic synchronization of credentials across devices
US11652626B2 (en) * 2020-02-18 2023-05-16 International Business Machines Corporation Safeguarding cryptographic keys from modification or deletion
CN111507713B (zh) * 2020-04-09 2021-06-29 链博(成都)科技有限公司 一种基于区块链的资产与数据集成管理方法、系统及终端
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质
US20220103549A1 (en) * 2020-09-29 2022-03-31 Schneider Electric USA, Inc. Management of setting change propagation in networked devices
US11595207B2 (en) * 2020-12-23 2023-02-28 Dropbox, Inc. Utilizing encryption key exchange and rotation to share passwords via a shared folder
TWI748925B (zh) * 2021-06-09 2021-12-01 中華電信股份有限公司 端對端加密通訊的金鑰交換系統、方法及其電腦可讀媒介
CN115348008A (zh) * 2022-07-05 2022-11-15 广州江南科友科技股份有限公司 一种密钥链式更新方法、装置、电子设备及存储介质

Family Cites Families (189)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013898A1 (en) * 1997-06-04 2002-01-31 Sudia Frank W. Method and apparatus for roaming use of cryptographic values
US5748736A (en) * 1996-06-14 1998-05-05 Mittra; Suvo System and method for secure group communications via multicast or broadcast
US5870765A (en) * 1996-10-09 1999-02-09 Oracle Corporation Database synchronizer
US5924094A (en) * 1996-11-01 1999-07-13 Current Network Technologies Corporation Independent distributed database system
US6738907B1 (en) * 1998-01-20 2004-05-18 Novell, Inc. Maintaining a soft-token private key store in a distributed environment
US6298072B1 (en) * 1998-02-19 2001-10-02 Mci Communications Corporation Real-time transaction synchronization among peer authentication systems in a telecommunications network environment
US6240512B1 (en) * 1998-04-30 2001-05-29 International Business Machines Corporation Single sign-on (SSO) mechanism having master key synchronization
US6810405B1 (en) * 1998-08-18 2004-10-26 Starfish Software, Inc. System and methods for synchronizing data between multiple datasets
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US6335937B1 (en) * 1998-09-24 2002-01-01 International Business Machines Corp. Node failure recovery in a hub and spoke data replication mechanism
US6529921B1 (en) * 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
US6401104B1 (en) * 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US6240188B1 (en) 1999-07-06 2001-05-29 Matsushita Electric Industrial Co., Ltd. Distributed group key management scheme for secure many-to-many communication
US7260716B1 (en) 1999-09-29 2007-08-21 Cisco Technology, Inc. Method for overcoming the single point of failure of the central group controller in a binary tree group key exchange approach
JP2001082086A (ja) 1999-09-16 2001-03-27 Geostr Corp 複数個の脈状内部空洞部を有する構造物の支柱構造
JP3963417B2 (ja) * 1999-11-19 2007-08-22 株式会社東芝 データ同期処理のための通信方法および電子機器
US6754678B2 (en) * 1999-12-20 2004-06-22 California Institute Of Technology Securely and autonomously synchronizing data in a distributed computing environment
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US7231517B1 (en) * 2000-03-03 2007-06-12 Novell, Inc. Apparatus and method for automatically authenticating a network client
US20020162005A1 (en) * 2000-04-24 2002-10-31 Masaomi Ueda Access right setting device and manager terminal
US7228427B2 (en) * 2000-06-16 2007-06-05 Entriq Inc. Method and system to securely distribute content via a network
EP1320956A4 (en) * 2000-08-04 2006-06-21 First Data Corp DIGITAL SIGNATURE SYSTEM WITH CERTIFICATION OF AUTHENTITICITY
US6931454B2 (en) * 2000-12-29 2005-08-16 Intel Corporation Method and apparatus for adaptive synchronization of network devices
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
FR2825209A1 (fr) 2001-05-23 2002-11-29 Thomson Licensing Sa Dispositifs et procede de securisation et d'identification de messages
US7356487B2 (en) * 2001-06-14 2008-04-08 Qurio Holdings, Inc. Efficient transportation of digital files in a peer-to-peer file delivery network
US7421411B2 (en) 2001-07-06 2008-09-02 Nokia Corporation Digital rights management in a mobile communications environment
US7082200B2 (en) * 2001-09-06 2006-07-25 Microsoft Corporation Establishing secure peer networking in trust webs on open networks using shared secret device key
US7493363B2 (en) * 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
US7925878B2 (en) * 2001-10-03 2011-04-12 Gemalto Sa System and method for creating a trusted network capable of facilitating secure open network transactions using batch credentials
DE50112767D1 (de) * 2001-10-05 2007-09-06 Stefan Krempl Verfahren und System zur autorisierten Entschlüsselung von verschlüsselten Daten mit mindestens zwei Zertifikaten
JP2003114821A (ja) * 2001-10-05 2003-04-18 Hitachi Ltd ネットワーク接続機器の情報交換方法およびシステム
US20080148350A1 (en) 2006-12-14 2008-06-19 Jeffrey Hawkins System and method for implementing security features and policies between paired computing devices
US7127613B2 (en) * 2002-02-25 2006-10-24 Sun Microsystems, Inc. Secured peer-to-peer network data exchange
US7120797B2 (en) * 2002-04-24 2006-10-10 Microsoft Corporation Methods for authenticating potential members invited to join a group
JP2003345685A (ja) * 2002-05-22 2003-12-05 Seiko Epson Corp デバイス共有システム、デバイス管理端末、ゲートウェイ端末、デバイス、端末用プログラム及びデバイス用プログラム、並びに、デバイス共有サービス提供方法
EP1383265A1 (en) * 2002-07-16 2004-01-21 Nokia Corporation Method for generating proxy signatures
JP4610169B2 (ja) 2002-07-23 2011-01-12 パナソニック株式会社 通信方法および通信システム
EP1385311B1 (en) 2002-07-23 2008-05-28 Matsushita Electric Industrial Co., Ltd. Terminal apparatus, communication method, and communication system for authentication of users in a user group in a network
US7386878B2 (en) * 2002-08-14 2008-06-10 Microsoft Corporation Authenticating peer-to-peer connections
US7069438B2 (en) * 2002-08-19 2006-06-27 Sowl Associates, Inc. Establishing authenticated network connections
US7814055B2 (en) * 2002-08-28 2010-10-12 Apple Inc. Method of managing a calendar and a computer system for implementing that method
ATE378748T1 (de) * 2002-09-13 2007-11-15 Ericsson Telefon Ab L M Sicherer broadcast-/multicast-dienst
WO2004030273A1 (ja) * 2002-09-27 2004-04-08 Fujitsu Limited データ配信方法、システム、伝送方法及びプログラム
US7328243B2 (en) * 2002-10-31 2008-02-05 Sun Microsystems, Inc. Collaborative content coherence using mobile agents in peer-to-peer networks
US8037202B2 (en) 2002-10-31 2011-10-11 Oracle America, Inc. Presence detection using mobile agents in peer-to-peer networks
EP1567925A1 (en) * 2002-11-29 2005-08-31 Koninklijke Philips Electronics N.V. Key synchronization in an image cryptographic system
US7706540B2 (en) * 2002-12-16 2010-04-27 Entriq, Inc. Content distribution using set of session keys
KR100555949B1 (ko) * 2003-04-11 2006-03-03 삼성전자주식회사 홈 디바이스의 인증시스템 및 그의 인증방법
US8359206B2 (en) * 2003-06-16 2013-01-22 Meetup, Inc. Web based interactive meeting facility
US7636776B2 (en) 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US20050071630A1 (en) * 2003-08-15 2005-03-31 Imcentric, Inc. Processing apparatus for monitoring and renewing digital certificates
CN100456669C (zh) * 2003-09-22 2009-01-28 华为技术有限公司 一种进行组密钥分发的方法
US7143117B2 (en) 2003-09-25 2006-11-28 International Business Machines Corporation Method, system, and program for data synchronization by determining whether a first identifier for a portion of data at a first source and a second identifier for a portion of corresponding data at a second source match
US7171514B2 (en) 2003-11-20 2007-01-30 International Business Machines Corporation Apparatus and method to control access to logical volumes using parallel access volumes
US7500020B1 (en) * 2003-12-31 2009-03-03 Symantec Operating Corporation Coherency of replicas for a distributed file sharing system
EP1566938A1 (en) 2004-02-18 2005-08-24 Sony International (Europe) GmbH Device registration in a wireless multi-hop ad-hoc network
BRPI0509181A (pt) * 2004-03-26 2007-09-18 Koninkl Philips Electronics Nv método e sistema para gerar um domìnio autorizado, meio legìvel por computador, domìnio autorizado, e, estrutura de domìnio autorizado
US7809682B2 (en) * 2004-05-24 2010-10-05 Apple Inc. Data synchronization between multiple devices
US7814231B2 (en) * 2004-05-24 2010-10-12 Apple Inc. Method of synchronizing between three or more devices
US7823190B1 (en) * 2004-06-02 2010-10-26 Sap Ag System and method for implementing a distributed keystore within an enterprise network
US8015596B2 (en) * 2004-06-28 2011-09-06 International Business Machines Corporation Shared credential store
JP2008504782A (ja) * 2004-06-29 2008-02-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 医療用無線アドホックネットワークノードの効率的な認証システム及び方法
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7925729B2 (en) * 2004-12-07 2011-04-12 Cisco Technology, Inc. Network management
US20060064470A1 (en) * 2004-09-23 2006-03-23 Sargent Antony J Method, system, and computer program product for improved synchronization efficiency for mobile devices, including database hashing and caching of web access errors
EP1828932A4 (en) * 2004-12-10 2008-03-05 Seven Networks Internat Oy DATABASE SYNCHRONIZATION
FI120165B (fi) * 2004-12-29 2009-07-15 Seven Networks Internat Oy Tietokannan synkronointi matkaviestinverkon kautta
US7317907B2 (en) * 2005-01-31 2008-01-08 Research In Motion Limited Synchronizing server and device data using device data schema
US8045714B2 (en) * 2005-02-07 2011-10-25 Microsoft Corporation Systems and methods for managing multiple keys for file encryption and decryption
KR100643327B1 (ko) * 2005-03-31 2006-11-10 삼성전자주식회사 분산화 개인용무선네트워크의 데이터 슬롯 할당 방법
US7502354B1 (en) * 2005-04-15 2009-03-10 Nvidia Corporation Mesh networking using point coordination function
US7350074B2 (en) * 2005-04-20 2008-03-25 Microsoft Corporation Peer-to-peer authentication and authorization
WO2006119637A1 (en) * 2005-05-13 2006-11-16 Cryptomill Cryptographic control for mobile storage means
US20060277092A1 (en) * 2005-06-03 2006-12-07 Credigy Technologies, Inc. System and method for a peer to peer exchange of consumer information
US20070019616A1 (en) 2005-06-29 2007-01-25 Olli Rantapuska Group formation using mobile computing devices
US7991764B2 (en) 2005-07-22 2011-08-02 Yogesh Chunilal Rathod Method and system for communication, publishing, searching, sharing and dynamically providing a journal feed
US20070124310A1 (en) * 2005-07-26 2007-05-31 Novo Innovations, Inc. Distributed Computing System to Enable the Secure Exchange of Information Between Remotely Located Healthcare Applications
US20070039039A1 (en) * 2005-08-10 2007-02-15 Microsoft Corporation Authorization of device access to network services
KR100739743B1 (ko) * 2005-10-19 2007-07-13 삼성전자주식회사 홈 네트워크에서 디바이스를 독점적으로 제어하기 위한방법 및 장치
JP2007115023A (ja) * 2005-10-20 2007-05-10 Nippon Telegr & Teleph Corp <Ntt> 情報共有システム、情報共有方法および情報共有プログラム
US7945615B1 (en) * 2005-10-31 2011-05-17 Adobe Systems Incorporated Distributed shared persistent objects
US20070143612A1 (en) * 2005-12-16 2007-06-21 Research In Motion Limited System and method of securely distributing keys for peer-to-peer usage
US8738750B2 (en) 2005-12-21 2014-05-27 Imran Chaudhri System and method for efficient replication of and access to application specific environments and data
US8108548B2 (en) 2005-12-22 2012-01-31 Microsoft Corporation Methodology and system for file replication based on a peergroup
US7801912B2 (en) * 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US8145719B2 (en) * 2006-03-03 2012-03-27 Gogroups Method and system for messaging and communication based on groups
US8849983B2 (en) * 2006-03-16 2014-09-30 Futurewei Technologies, Inc. Method and system for updating and retrieving state information for mobile nodes in a communication network
US8510404B2 (en) * 2006-04-03 2013-08-13 Kinglite Holdings Inc. Peer to peer Synchronization system and method
US7665081B1 (en) * 2006-05-06 2010-02-16 Kaspersky Lab, Zao System and method for difference-based software updating
US9002018B2 (en) * 2006-05-09 2015-04-07 Sync Up Technologies Corporation Encryption key exchange system and method
US8255464B2 (en) * 2006-05-09 2012-08-28 Wilkins John T Contact management system and method
US20070271234A1 (en) 2006-05-22 2007-11-22 Ravikiran Chickmangalore N Information Exchange Among Members of a Group of Communication Device Users
US8370423B2 (en) 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US7953785B2 (en) * 2006-06-30 2011-05-31 Microsoft Corporation Content synchronization in a file sharing environment
US20080005195A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Versioning synchronization for mass p2p file sharing
US20080130630A1 (en) * 2006-07-07 2008-06-05 Matsushita Electric Industrial Co. Ltd. Secure peer to peer messaging service
CN101119582A (zh) * 2006-07-31 2008-02-06 华为技术有限公司 一种订阅移动业务的方法和系统
US7860826B2 (en) * 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US20080031459A1 (en) * 2006-08-07 2008-02-07 Seth Voltz Systems and Methods for Identity-Based Secure Communications
FR2906960B1 (fr) 2006-10-05 2009-04-17 Radiotelephone Sfr Procede de mise a disposition cloisonnee d'un service electronique.
US8671444B2 (en) * 2006-10-06 2014-03-11 Fmr Llc Single-party, secure multi-channel authentication for access to a resource
US20080103977A1 (en) 2006-10-31 2008-05-01 Microsoft Corporation Digital rights management for distributed devices
JP3974161B2 (ja) * 2006-11-24 2007-09-12 株式会社東芝 データ同期処理のための通信方法および電子機器
US8116456B2 (en) * 2006-11-28 2012-02-14 Oracle International Corporation Techniques for managing heterogeneous key stores
US9124650B2 (en) * 2006-12-13 2015-09-01 Quickplay Media Inc. Digital rights management in a mobile environment
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US8850140B2 (en) 2007-01-07 2014-09-30 Apple Inc. Data backup for mobile device
US8631088B2 (en) 2007-01-07 2014-01-14 Apple Inc. Prioritized data synchronization with host device
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US8059819B2 (en) * 2007-01-17 2011-11-15 Panasonic Electric Works Co., Ltd. Systems and methods for distributing updates for a key at a maximum rekey rate
US8489701B2 (en) 2007-01-30 2013-07-16 Microsoft Corporation Private virtual LAN spanning a public network for connection of arbitrary hosts
US7680067B2 (en) * 2007-03-09 2010-03-16 Palm, Inc. Peer-to-peer data synchronization architecture
US8885832B2 (en) * 2007-03-30 2014-11-11 Ricoh Company, Ltd. Secure peer-to-peer distribution of an updatable keyring
CN101137123B (zh) * 2007-04-09 2010-09-01 中兴通讯股份有限公司 集群系统的加密组呼、单呼、及动态重组呼叫实现方法
CN101136742B (zh) * 2007-04-09 2011-01-19 中兴通讯股份有限公司 群组密钥同步、更新、及校验方法
US8355696B1 (en) * 2007-06-07 2013-01-15 Sprint Communications Company L.P. Automated device activation
WO2008157735A2 (en) * 2007-06-19 2008-12-24 Qualcomm Incorporated Methods and apparatus for dataset synchronization in a wireless environment
EP2031913B1 (en) 2007-07-27 2011-01-12 Research In Motion Limited Apparatus and methods for coordination of wireless systems
US8122497B2 (en) * 2007-09-10 2012-02-21 Redcloud, Inc. Networked physical security access control system and method
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US20090077638A1 (en) * 2007-09-17 2009-03-19 Novell, Inc. Setting and synching preferred credentials in a disparate credential store environment
BRPI0817505A2 (pt) * 2007-09-28 2015-03-24 Apertio Ltd Sistema e método para replicação e sincronismo
US20090113412A1 (en) * 2007-10-29 2009-04-30 Sap Portals Israel Ltd. Method and apparatus for enhanced synchronization protocol
US20090125637A1 (en) 2007-11-09 2009-05-14 Nokia Corporation Method, Apparatus and Computer Program Product for Providing Data Management in a P2P Network
US8078749B2 (en) * 2008-01-30 2011-12-13 Microsoft Corporation Synchronization of multidimensional data in a multimaster synchronization environment with prediction
US20090196311A1 (en) * 2008-01-31 2009-08-06 Microsoft Corporation Initiation and expiration of objects in a knowledge based framework for a multi-master synchronization environment
US8117648B2 (en) * 2008-02-08 2012-02-14 Intersections, Inc. Secure information storage and delivery system and method
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
JP5206317B2 (ja) 2008-03-18 2013-06-12 株式会社リコー ネットワーク同期システム及び情報処理装置
US8019900B1 (en) * 2008-03-25 2011-09-13 SugarSync, Inc. Opportunistic peer-to-peer synchronization in a synchronization system
US8725679B2 (en) * 2008-04-07 2014-05-13 International Business Machines Corporation Client side caching of synchronized data
WO2009129337A1 (en) * 2008-04-15 2009-10-22 Problem Resolution Enterprise, Llc Method and process for registering a device to verify transactions
US8196186B2 (en) * 2008-05-20 2012-06-05 Microsoft Corporation Security architecture for peer-to-peer storage system
US8458462B1 (en) * 2008-08-14 2013-06-04 Juniper Networks, Inc. Verifying integrity of network devices for secure multicast communications
US8209437B2 (en) * 2008-09-25 2012-06-26 Rockliffe Systems, Inc. Personal information management data synchronization
US7941410B2 (en) * 2008-09-30 2011-05-10 Microsoft Corporation Method and system of managing conflicts for a set of synchronized folders
US8734872B2 (en) 2008-09-30 2014-05-27 Apple Inc. Access control to content published by a host
US8775668B2 (en) * 2008-12-10 2014-07-08 At&T Intellectual Property I, Lp Redirection of multimedia content between receiver devices associated with a user
US8510810B2 (en) 2008-12-23 2013-08-13 Bladelogic, Inc. Secure credential store
US9917702B2 (en) * 2009-04-08 2018-03-13 Blackberry Limited System and method for managing items in a list shared by a group of mobile devices
US8254890B2 (en) * 2009-04-08 2012-08-28 Research In Motion Limited System and method for managing items in a list shared by a group of mobile devices
US9065868B2 (en) * 2009-04-08 2015-06-23 Blackberry Limited System and method for sharing data in a group of mobile devices
US8694578B2 (en) * 2009-05-29 2014-04-08 Microsoft Corporation Swarm-based synchronization over a network of object stores
US8621574B2 (en) * 2009-06-02 2013-12-31 Microsoft Corporation Opaque quarantine and device discovery
FR2948601B1 (fr) 2009-07-29 2011-08-05 Sidel Participations Procede de mise en volume d'une decoupe de carton et installation pour sa mise en oeuvre
US8385321B2 (en) * 2009-07-31 2013-02-26 Alcatel Lucent Method and system for synchronizing a data base at a plurality of nodes in an ad hoc network
US8738934B2 (en) * 2009-08-25 2014-05-27 Keeper Security, Inc. Method and apparatus for protecting account numbers and passwords
US20110179270A1 (en) * 2010-01-20 2011-07-21 The Provost, Fellows and Scholars of the College of the Holy and Undivided Trinity of Queen Elizab Data Retrieval System
US8805783B2 (en) * 2010-05-27 2014-08-12 Microsoft Corporation Synchronization of subsets of data including support for varying set membership
US10693853B2 (en) * 2010-07-23 2020-06-23 At&T Intellectual Property I, Lp Method and system for policy enforcement in trusted ad hoc networks
US20120079095A1 (en) * 2010-09-24 2012-03-29 Amazon Technologies, Inc. Cloud-based device synchronization
US9607293B2 (en) * 2010-11-29 2017-03-28 Barclays Bank Plc Method and system for account management and electronic wallet access on a mobile device
CN102447679B (zh) * 2010-10-09 2015-06-03 中兴通讯股份有限公司 一种保障对等网络数据安全的方法及系统
US20120096368A1 (en) 2010-10-14 2012-04-19 Microsoft Corporation Cloud-based virtual clipboard
US20120109830A1 (en) * 2010-10-29 2012-05-03 Matt Vogel Apparatus, system and method for a decentralized social network system and decentralized payment network system
US8948382B2 (en) 2010-12-16 2015-02-03 Microsoft Corporation Secure protocol for peer-to-peer network
US8681995B2 (en) * 2010-12-21 2014-03-25 Microsoft Corporation Supporting DNS security in a multi-master environment
US10198492B1 (en) * 2010-12-28 2019-02-05 Amazon Technologies, Inc. Data replication framework
US9064278B2 (en) * 2010-12-30 2015-06-23 Futurewei Technologies, Inc. System for managing, storing and providing shared digital content to users in a user relationship defined group in a multi-platform environment
US8868500B2 (en) * 2011-01-14 2014-10-21 Apple Inc. Data synchronization
CN102111411A (zh) * 2011-01-21 2011-06-29 南京信息工程大学 P2p网络中对等用户结点间的加密安全数据交换方法
CN102739701B (zh) * 2011-04-06 2016-05-25 中国电信股份有限公司 媒体流访问控制方法与对等流媒体系统
US9450766B2 (en) 2011-04-26 2016-09-20 Openet Telecom Ltd. Systems, devices and methods of distributing telecommunications functionality across multiple heterogeneous domains
WO2012174456A1 (en) * 2011-06-15 2012-12-20 Qualcomm Atheros, Inc. Communicating over powerline media using beamforming
JP5994215B2 (ja) * 2011-06-17 2016-09-21 ソニー株式会社 無線通信装置、情報処理装置、通信システムおよび無線通信装置の制御方法
ES2723781T3 (es) * 2011-08-03 2019-09-02 Amadeus Sas Método y sistema para mantener consistencia fuerte de contenidos replicados distribuidos en un sistema de cliente/servidor
US9424439B2 (en) * 2011-09-12 2016-08-23 Microsoft Technology Licensing, Llc Secure data synchronization
US10129211B2 (en) * 2011-09-15 2018-11-13 Stephan HEATH Methods and/or systems for an online and/or mobile privacy and/or security encryption technologies used in cloud computing with the combination of data mining and/or encryption of user's personal data and/or location data for marketing of internet posted promotions, social messaging or offers using multiple devices, browsers, operating systems, networks, fiber optic communications, multichannel platforms
US8838982B2 (en) 2011-09-21 2014-09-16 Visa International Service Association Systems and methods to secure user identification
US9661073B2 (en) 2011-11-18 2017-05-23 Google Inc. Web browser synchronization with multiple simultaneous profiles
US9330245B2 (en) * 2011-12-01 2016-05-03 Dashlane SAS Cloud-based data backup and sync with secure local storage of access keys
US8320558B1 (en) * 2011-12-29 2012-11-27 Google Inc. Encryption of synchronization information
US20130191897A1 (en) * 2012-01-24 2013-07-25 Cummings Engineering Consultants, Inc. Field Provisioning a Device to a Secure Enclave
US20130283060A1 (en) * 2012-04-23 2013-10-24 Raghavendra Kulkarni Seamless Remote Synchronization and Sharing of Uniformly Encrypted Data for Diverse Platforms and Devices
US9645966B2 (en) * 2012-06-08 2017-05-09 Apple Inc. Synchronizing handles for user accounts across multiple electronic devices
US8984582B2 (en) 2012-08-14 2015-03-17 Confidela Ltd. System and method for secure synchronization of data across multiple computing devices
US8410898B1 (en) 2012-08-16 2013-04-02 Google Inc. Near field communication based key sharing techniques
US9384613B2 (en) 2012-08-16 2016-07-05 Google Inc. Near field communication based key sharing techniques
KR20140037476A (ko) * 2012-09-19 2014-03-27 브레인즈스퀘어(주) 파일의 외부 유출 방지를 위한 시스템 및 그 방법
US8539567B1 (en) * 2012-09-22 2013-09-17 Nest Labs, Inc. Multi-tiered authentication methods for facilitating communications amongst smart home devices and cloud-based servers
US9280396B2 (en) 2012-11-01 2016-03-08 Netapp, Inc. Lock state synchronization for non-disruptive persistent operation
US20140164764A1 (en) * 2012-12-11 2014-06-12 Rawllin International Inc. Assignment of digital signature and qualification for related services
US9152686B2 (en) * 2012-12-21 2015-10-06 Zetta Inc. Asynchronous replication correctness validation
US9197700B2 (en) 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US9077759B2 (en) 2013-01-18 2015-07-07 Apple Inc. Conflict resolution for keychain syncing
US9977820B1 (en) * 2013-03-15 2018-05-22 Tasktop Technologies, Incorporated System and method for synchronizing states in associated data records
US9053165B2 (en) * 2013-07-08 2015-06-09 Dropbox, Inc. Structured content item synchronization
US10447778B2 (en) * 2015-04-17 2019-10-15 Extreme Networks, Inc. Synchronizing peer nodes of a multi-chassis switching cluster

Also Published As

Publication number Publication date
CN108055283B (zh) 2021-01-29
KR20150095872A (ko) 2015-08-21
TW201443684A (zh) 2014-11-16
KR101787955B1 (ko) 2017-10-18
US9197700B2 (en) 2015-11-24
US10771545B2 (en) 2020-09-08
EP2946541B1 (en) 2020-11-25
AU2013374203B2 (en) 2016-09-08
CN108055352B (zh) 2021-03-16
JP2016505226A (ja) 2016-02-18
CN108055352A (zh) 2018-05-18
AU2018274985A1 (en) 2019-01-03
AU2018274985B9 (en) 2021-07-15
CN104919775B (zh) 2018-01-05
WO2014113196A4 (en) 2014-09-12
CN108055131B (zh) 2021-03-02
CN104919775A (zh) 2015-09-16
US20140281540A1 (en) 2014-09-18
CN108055283A (zh) 2018-05-18
AU2013374203A1 (en) 2015-07-30
KR101713307B1 (ko) 2017-03-08
AU2018274985B2 (en) 2021-02-25
AU2016269486A1 (en) 2017-01-05
CN108055131A (zh) 2018-05-18
KR20170026668A (ko) 2017-03-08
WO2014113196A1 (en) 2014-07-24
EP2946541A1 (en) 2015-11-25
US20160065548A1 (en) 2016-03-03
EP3860080A1 (en) 2021-08-04
US10218685B2 (en) 2019-02-26
US20190273729A1 (en) 2019-09-05
TWI512534B (zh) 2015-12-11

Similar Documents

Publication Publication Date Title
JP6072305B2 (ja) キーチェーン同期
US9710673B2 (en) Conflict resolution for keychain syncing
CN107690798B (zh) 在安全同步系统中自动识别无效参与者
CN113056741A (zh) 基于分布式账本的简档验证
US20170012973A1 (en) Trust framework for secured digital interactions between entities

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161024

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161227

R150 Certificate of patent or registration of utility model

Ref document number: 6072305

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250