(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-13
(45)【発行日】2023-12-21
(54)【発明の名称】共有フォルダを介してパスワードを共有するための暗号化鍵の交換及びローテーションの利用
(51)【国際特許分類】
H04L 9/08 20060101AFI20231214BHJP
【FI】
H04L9/08 A
(21)【出願番号】P 2023521148
(86)(22)【出願日】2021-08-26
(86)【国際出願番号】 US2021047829
(87)【国際公開番号】W WO2022139888
(87)【国際公開日】2022-06-30
【審査請求日】2023-06-05
(32)【優先日】2020-12-23
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】509117964
【氏名又は名称】ドロップボックス, インコーポレイテッド
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】プライオア, キャサリン
(72)【発明者】
【氏名】ヒーリンガ, ブレント
(72)【発明者】
【氏名】スー, ジャイ
(72)【発明者】
【氏名】ハノン, アンドリュー
【審査官】平井 誠
(56)【参考文献】
【文献】特開平11-331145(JP,A)
【文献】特開2020-098993(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L9/00-40
(57)【特許請求の範囲】
【請求項1】
プログラムであって、少なくとも1つのプロセッサによって実行された場合に、コンテンツ管理システムに、
前記コンテンツ管理システムの共有フォルダに関連付けられた複数のクライアント・デバイスのうちの初期クライアント・デバイスに、前記複数のクライアント・デバイスのうちの1つ以上の追加のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵を含む公開鍵集合を
提供することと、
前記共有フォルダ内に記憶するために、前記初期クライアント・デバイスから、パスワードの集合を含む暗号化ペイロードと、パスワードの前記集合を暗号化するために利用されており、前記公開鍵集合を利用して前記共有フォルダ内で暗号化されている共有暗号鍵とを受信することと、
前記共有暗号鍵を、変更された共有暗号鍵に置き換えるための鍵ローテーション・イベントを検出することと、
前記鍵ローテーション・イベントに応じて、前記複数のクライアント・デバイスのうちの1つ以上のクライアント・デバイスに、更新された公開鍵集合を提供することと、
前記1つ以上のクライアント・デバイスのうちのイニシエータ・デバイスから、前記共有フォルダ内に記憶するために
、パスワードの
前記集合を含む
更新された暗号化ペイロードと、パスワードの前記集合を
再暗号化するために利用されており、前記
更新された公開鍵集合を利用して前記共有フォルダ内で暗号化されている
前記変更された共有暗号鍵とを受信することと、
を行わせる命令を含む、
プログラム。
【請求項2】
請求項1に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに、
前記共有フォルダについての共有メンバーシップに従って前記コンテンツ管理システム
のアカウントを決定することと、
前記コンテンツ管理システムの前
記アカウントに関連付けられた登録クライアント・デバイスについての公開暗号鍵を要求することと、
によって前記公開鍵集合を読み出すことを行わせる命令をさらに含む、
プログラム。
【請求項3】
請求項1に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに、
パスワードの前記集合に関連付けられたパスワード・パーミッションの集合を決定することと、
前記共有フォルダについてのフォルダ構造を、前記フォルダ構造内のパスワード・パーミッションの前記集合に対応する1つ以上のフォルダへのアクセス・パーミッションで生成することと、
によって、パスワードの前記集合について前記共有フォルダを生成することの要求を受信することを行わせる命令をさらに含む、
プログラム。
【請求項4】
請求項1に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに、前記1つ以上の追加のクライアント・デバイスに関連付けられた前記1つ以上の公開暗号鍵を利用して暗号化された前記共有暗号鍵を前記暗号化ペイロードの一部として受信することによって、前記暗号化ペイロードを受信することを行わせる命令をさらに含む、
プログラム。
【請求項5】
請求項1に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに、
前記コンテンツ管理システム
のアカウントに関連付けられた新たなクライアント・デバイスが、前記共有フォルダについての共有メンバーシップに追加されることを判定することと、
前記新たなクライアント・デバイスに関連付けられた新たな公開暗号鍵を前記初期クライアント・デバイスに提供することと、
前記新たな公開暗号鍵を利用して前記共有フォルダ内で暗号化された前記共有暗号鍵を前記初期クライアント・デバイスから受信することと、
パスワードの前記集合を含む前記暗号化ペイロードと、前記新たな公開暗号鍵を利用して前記共有フォルダ内で暗号化された前記共有暗号鍵とを前記新たなクライアント・デバイスに提供することと、
を行わせる命令をさらに含む、
プログラム。
【請求項6】
請求項1に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに
、
前記鍵ローテーション・イベントに応じて、前記共有フォルダへの現在のメンバーシップ・アクセス権を有する
1つ以上のクライアント・デバイスへ前記鍵ローテーション・イベントのインジケーションを送信することと、
前記共有フォルダへの現在のメンバーシップ・アクセス権を有する前記1つ以上のクライアント・デバイスから
前記更新された公開鍵集合を読み出すことと、
前記更新された公開鍵集合を
、前記共有フォルダへの現在のメンバーシップ・アクセス権を有する前記1つ以上のクライアント・デバイスに提供することと
、
によって、前記複数のクライアント・デバイスのうちの前記1つ以上のクライアント・デバイスに前記更新された公開鍵集合を提供することを行わせる命令をさらに含む、
プログラム。
【請求項7】
請求項6に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに、
前記共有フォルダについての共有メンバーシップにおける変化を検出すること、
前記共有暗号鍵を変更するためのコマンドを前記複数のクライアント・デバイスのうちのクライアント・デバイスから受信すること、又は
前記共有フォルダに関連付けられた時間閾値を検出すること、
によって、前記鍵ローテーション・イベントを検出することを行わせる命令をさらに含む、
プログラム。
【請求項8】
請求項6に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに、
前記複数のクライアント・デバイスのうちの第2のクライアント・デバイスから前記更新された暗号化ペイロードを受信する前に又はこれを受信することなく、前記複数のクライアント・デバイスのうちの第1のクライアント・デバイスから、前記共有フォルダにアップロードするための前記更新された暗号化ペイロードを受信することと、
前記第2のクライアント・デバイスから前記更新された暗号化ペイロードを受信する前に又はこれを受信することなく、前記第1のクライアント・デバイスから前記更新された暗号化ペイロードを受信したことに応じて、前記第1のクライアント・デバイスが前記イニシエータ・デバイスであり、前記第2のクライアント・デバイスがフォロワ・デバイスであると判定することと、
パスワードの前記集合を含む前記更新された暗号化ペイロードと、前記変更された共有暗号鍵とを前記第2のクライアント・デバイスへ送信することと、
を行わせる命令をさらに含む、
プログラム。
【請求項9】
請求項8に記載の
プログラムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記コンテンツ管理システムに、
前記更新された暗号化ペイロードを前記第2のクライアント・デバイスへ送信する前に、前記第2のクライアント・デバイスから追加の変更された共有暗号鍵を受信することと、
前記第1のクライアント・デバイスから受信された前記変更された共有暗号鍵と、前記第2のクライアント・デバイスから受信された前記追加の変更された共有暗号鍵との間の競合を検出することと、
前記競合を検出したことに応じて、前記第2のクライアント・デバイスから受信された前記追加の変更された共有暗号鍵を拒否することと、
を行わせる命令をさらに含む、
プログラム。
【請求項10】
システムであって、
少なくとも1つのプロセッサと、
非一時的コンピュータ可読記憶媒体であって、前記少なくとも1つのプロセッサによって実行された場合に、前記システムに、
コンテンツ管理システムの共有フォルダに関連付けられた複数のクライアント・デバイスのうちの初期クライアント・デバイスに、前記複数のクライアント・デバイスのうちの1つ以上の追加のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵を含む公開鍵集合を
提供することと、
前記共有フォルダ内に記憶するために、前記初期クライアント・デバイスから、パスワードの集合を含む暗号化ペイロードと、パスワードの前記集合を暗号化するために利用されており、前記公開鍵集合を利用して前記共有フォルダ内で暗号化されている共有暗号鍵とを受信することと、
前記共有暗号鍵を、変更された共有暗号鍵に置き換えるための鍵ローテーション・イベントを検出することと、
前記鍵ローテーション・イベントに応じて、前記複数のクライアント・デバイスのうちの1つ以上のクライアント・デバイスに、更新された公開鍵集合を提供することと、 前記1つ以上のクライアント・デバイスのうちのイニシエータ・デバイスから、前記共有フォルダ内に記憶するために
、パスワードの
前記集合を含む
更新された暗号化ペイロードと、パスワードの前記集合を
再暗号化するために利用されており、前記
更新された公開鍵集合を利用して前記共有フォルダ内で暗号化されている
前記変更された共有暗号鍵とを受信することと、
を行わせる命令を含む、非一時的コンピュータ可読記憶媒体と、を備える、システム。
【請求項11】
請求項10に記載のシステムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記システムに、
前記共有フォルダについての共有メンバーシップに関連付けられた登録クライアント・デバイスについての公開暗号鍵を要求することによって、前記公開鍵集合を読み出すことと、
前記初期クライアント・デバイスに、前記登録クライアント・デバイスからの前記公開暗号鍵を含む前記公開鍵集合を利用して前記共有暗号鍵を暗号化させるために、前記登録クライアント・デバイスからの前記公開暗号鍵を前記公開鍵集合の一部として前記初期クライアント・デバイスに提供することによって、前記公開鍵集合を前記初期クライアント・デバイスに提供することと、
を行わせる命令をさらに含む、システム。
【請求項12】
請求項10に記載のシステムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記システムに、
前記共有フォルダ内のフォルダの階層を決定することと、
前記共有フォルダについての共有メンバーシップに対するパスワード・パーミッションに従って、フォルダの前記階層内の各フォルダに対するアクセス・パーミッションを決定することと、
によって、パスワードの前記集合のための前記共有フォルダを生成することの要求を受信することを行わせる命令をさらに含む、システム。
【請求項13】
請求項12に記載のシステムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記システムに、
前記コンテンツ管理システムの第1のアカウントに、フォルダの前記階層内のパスワードの第1の集合に対応するフォルダの第1の集合に対するアクセス・パーミッションの第1の集合を割り当てることと、
前記コンテンツ管理システムの第2のアカウントに、フォルダの前記階層内のパスワードの第2の集合に対応するフォルダの第2の集合に対するアクセス・パーミッションの第2の集合を割り当てることと、
を行わせる命令をさらに含む、システム。
【請求項14】
請求項10に記載のシステムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記システムに、
前記共有フォルダについての共有メンバーシップにおける変化を検出することと、
前記共有メンバーシップにおける前記検出された変化に応じて、
前記複数のクライアント・デバイス
のうちの前記1つ以上のクライアント・デバイスに対応する前記コンテンツ管理システムの複数のアカウントを含む前記共有フォルダについての更新された共有メンバーシップを決定することと、
鍵ローテーション・イベントのインジケーションを前記複数のクライアント・デバイス
のうちの前記1つ以上のクライアント・デバイスへ送信することと、
前記複数のクライアント・デバイス
のうちの前記1つ以上のクライアント・デバイスから複数の公開暗号鍵を読み出すことと、
前記複数の公開暗号鍵を含む
前記更新された公開鍵集合を前記複数のクライアント・デバイス
のうちの前記1つ以上のクライアント・デバイスに提供することと
、
を行わせる命令をさらに含む、システム。
【請求項15】
請求項14に記載のシステムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記システムに、
前記イニシエータ・デバイスから前記更新された暗号化ペイロードを受信した後、前記複数のクライアント・デバイスのうちの
前記1つ以上のクライアント・デバイスのうちのフォロワ・デバイスから追加の変更された共有暗号鍵を受信することと、
前記イニシエータ・デバイスから受信された前記変更された共有暗号鍵と、前記フォロワ・デバイスから受信された前記追加の変更された共有暗号鍵との間の競合を検出したことに応じて、前記フォロワ・デバイスから受信された前記追加の変更された共有暗号鍵を拒否することと、
パスワードの前記集合を含む前記更新された暗号化ペイロードと、前記イニシエータ・デバイスから受信された前記変更された共有暗号鍵とを前記フォロワ・デバイスへ送信することと、
を行わせる命令をさらに含む、システム。
【請求項16】
請求項10に記載のシステムであって、前記少なくとも1つのプロセッサによって実行された場合に、前記システムに、
前記1つ以上の追加のクライアント・デバイスに関連付けられた前記1つ以上の公開暗号鍵によって暗号化された前記共有暗号鍵を受信することと、
前記1つ以上の公開暗号鍵によって暗号化された前記共有暗号鍵を、前記共有暗号鍵を利用して暗号化されたパスワードの前記集合とともに前記1つ以上の追加のクライアント・デバイスに提供することと、
を行わせる命令をさらに含む、システム。
【請求項17】
方法であって、
コンテンツ管理システムの共有フォルダに関連付けられた複数のクライアント・デバイスのうちの初期クライアント・デバイスに、前記複数のクライアント・デバイスのうちの1つ以上の追加のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵を含む公開鍵集合を
提供することと、
前記共有フォルダ内に記憶するために、前記初期クライアント・デバイスから、パスワードの集合を含む暗号化ペイロードと、パスワードの前記集合を暗号化するために利用されており、前記公開鍵集合を利用して前記共有フォルダ内で暗号化されている共有暗号鍵とを受信することと、
前記共有暗号鍵を、変更された共有暗号鍵に置き換えるための鍵ローテーション・イベントを検出することと、
前記鍵ローテーション・イベントに応じて、前記複数のクライアント・デバイスのうちの1つ以上のクライアント・デバイスに、更新された公開鍵集合を提供することと、 前記1つ以上のクライアント・デバイスのうちのイニシエータ・デバイスから、前記共有フォルダ内に記憶するために
、パスワードの
前記集合を含む
更新された暗号化ペイロードと、パスワードの前記集合を
再暗号化するために利用されており、前記
更新された公開鍵集合を利用して前記共有フォルダ内で暗号化されている
前記変更された共有暗号鍵とを受信することと、
を有する、方法。
【請求項18】
請求項17に記載の方法であって、
前記公開鍵集合を読み出すことは、
前記コンテンツ管理システムの第1
のアカウントに関連付けられた第1のクライアント・デバイスに第1の公開暗号鍵を要求することと、
前記コンテンツ管理システムの第2
のアカウントに関連付けられた第2のクライアント・デバイスに第2の公開暗号鍵を要求することと、を含み、
前記公開鍵集合を前記初期クライアント・デバイスに提供することは、前記第1の公開暗号鍵及び前記第2の公開暗号鍵を前記公開鍵集合の一部として前記初期クライアント・デバイスに提供することを含む、方法。
【請求項19】
請求項17に記載の方法であって
、
前記検出された鍵ローテーション・イベントに応じて、
前記共有フォルダについての更新された共有メンバーシップを決定することと、
前記更新された共有メンバーシップに
基づいて前記複数のクライアント・デバイス
のうちの前記1つ以上のクライアント・デバイスへ前記鍵ローテーション・イベントのインジケーションを送信することと、
前記複数のクライアント・デバイス
のうちの前記1つ以上のクライアント・デバイスから
前記更新された公開鍵集合を読み出すことと、
前記更新された共有メンバーシップに従って、前記更新された公開鍵集合を前記複数のクライアント・デバイス
のうちの前記1つ以上のクライアント・デバイスに提供することと
、
をさらに有する、方法。
【請求項20】
請求項19に記載の方法であって、前記共有暗号鍵を変更するための前記鍵ローテーション・イベントを検出することは、
前記共有フォルダについての共有メンバーシップにおける変化を検出すること、
前記共有暗号鍵を変更するためのコマンドを前記複数のクライアント・デバイスのうちのクライアント・デバイスから受信すること、又は
前記共有フォルダに関連付けられた時間閾値を検出すること、
を含む、方法。
【発明の詳細な説明】
【背景技術】
【0001】
ネットワーク通信及びコンピューティング・デバイスの能力における技術的進歩は、ネットワーク接続を介した多くの異なるタイプのサービスへのアクセスを増加させてきた。例えば、多くのオンライン・システムは、ユーザがシステムで自分のアカウントにログインすることを可能にするログイン・インタフェースを介してサービスへのリモート・アクセスを提供する。したがって、このようなオンライン・システムは、ユーザが異なるサービスのそれぞれについて、ログイン情報(例えば、ユーザ名及びパスワード)を有する別個のユーザ・アカウントを作成することを可能にする。ユーザはしばしば多くの異なるサービスに対して多数の異なるアカウントを有し、それぞれがそれ自体のログイン情報を有するため、ユーザは異なるサービスのそれぞれに対するログイン情報を覚え、安全に管理することが困難であることを見出しうる。
【0002】
多くの従来のクレデンシャル・ストレージ・システムは、異なるアカウントに対するログイン情報の記憶を提供する。例えば、いくつかの従来のシステムは、ユーザが中央位置からの様々なサービスに対するアカウントにログインするために自分のログイン情報にアクセスすることを可能にする認証情報をローカル・クライアント・デバイス上又はリモート・デバイス(例えば、クラウド・ストレージ)上に記憶する。特に、いくつかの従来のクレデンシャル・ストレージ・システムは、中央クレデンシャル(例えば、ユーザ名/パスワードの組み合わせ又は生体クレデンシャル)の背後の様々なサービスへのパスワードを記憶し暗号化する。これに代えて、他の従来のクレデンシャル・ストレージ・システムは、公開暗号鍵を使用してパスワードを暗号化し、これらの公開暗号鍵を、パスワードを復号するために対応する秘密暗号鍵を使用できるクライアント・デバイスに配布する。
【0003】
これらの従来のクレデンシャル・ストレージ・システムはユーザのためのログイン情報をデジタルに記憶する中央位置を提供するが、従来のシステムは複数の欠点を呈する。具体的に、従来のシステムは、異なるサービスについてのログイン情報にアクセスするために(例えば、単一のユーザに関連付けられた)クレデンシャルの単一の集合を利用することによって、クレデンシャルにもアクセス権を有するユーザのみにアクセスを制限する。よって、従来のシステムの第1のユーザがログイン情報のいずれかへのアクセス権を第2のユーザに与えることを望むならば、第1のユーザは、第2のユーザにクレデンシャルを与えなければならない。第2のユーザにクレデンシャルを提供することはまた、ログイン情報の選択的共有ではなく、アカウントに記憶されたログイン情報のすべてへのアクセス権を与える。したがって、従来のクレデンシャル・ストレージ・システムは、単一のユーザを超えて使用を拡張するための柔軟性及びセキュリティを欠いている。
【0004】
厳格なログイン情報アクセス・プロトコルに加えて、ユーザ及びクライアント・デバイス間でデジタル・データを共有するクレデンシャル・ストレージ・システムは、ネットワーク・セキュリティ・リスク及びデータ損失リスクをもたらす。例えば、ユーザが、ユーザ間でセキュア・データを共有する共有グループを離れた後、共有グループの以前のメンバーはセキュリティ・リスクをもたらし、もはやセキュア・データへのアクセス権を有するべきではない。例えば、秘密暗号鍵を有するコンピューティング・デバイスに関連付けられたユーザが共有グループを離れる場合に、離れたユーザは、共有グループの認可メンバーに対応する公開暗号鍵のコレクションをコンピューティング・デバイスが更新するまで、セキュア・データにアクセスし続けるかもしれない。これに加えて、クライアント・デバイスにわたってデータを暗号化又は再暗号化する場合に、クライアント・デバイスにわたって暗号化及び同期されたデータの相違は、データ損失の結果となる。例えば、中央位置(例えば、サーバ)への非同期接続は、クライアント・デバイスが(例えば、鍵ローテーションの場合に)異なる暗号鍵バージョン又はクライアント・デバイスに記憶された異なるペイロードを交換又は送信する場合に、サーバ又は他のコンピューティング・デバイスにデータを失わせうる。よって、クライアント・デバイス間でデータを共有する任意の従来のクレデンシャル・ストレージ(又は他の)システムは、損なわれたネットワーク・セキュリティとデータ損失との両方のリスクをもたらす。
【発明の概要】
【0005】
この開示は、利益を提供し及び/又は当技術分野における前述の問題及び他の問題のうちの1つ以上を解決するシステム、方法、及び非一時的コンピュータ可読記憶媒体の1つ以上の実施形態を説明する。例えば、開示されるシステムは、共有フォルダについてのペイロード内の共有鍵を暗号化し、コンピューティング・デバイスにわたって共有フォルダからのパスワードをセキュアに共有する。このようなパスワードの暗号化を容易にするために、開示されるシステムは、共有フォルダへのアクセスを提供することに関連して、共有フォルダへのメンバーシップ・アクセス権を有する1つ以上のクライアント・デバイス(例えば、各追加の共有フォルダ・メンバー)についての公開暗号鍵を読み出す。開示されるシステムはまた、公開暗号鍵を含む公開鍵集合を、コンテンツ管理システムのアカウントに関連付けられた初期クライアント・デバイスに提供する。公開鍵集合を受信すると、初期クライアント・デバイスは、共有暗号鍵を利用して、共有フォルダにアップロードするためのペイロード(例えば、パスワードの集合)を暗号化し、その後、公開鍵集合を利用して共有暗号鍵を暗号化する。したがって、開示されるシステムは、共有フォルダ内に記憶するために、初期クライアント・デバイスから暗号化ペイロードと、(公開鍵集合によって暗号化されている)共有暗号鍵との両方を受信する。
【0006】
このようなペイロードを暗号化することに加えて(又はその代わりに)、いくつかの実施形態において、開示されるシステムは、共有フォルダのメンバーシップにおける変化又は何らかの他の鍵ローテーション・イベントに基づいて、コンピューティング・デバイスにわたって鍵をセキュアにローテーションする。鍵ローテーション・イベントを検出したことに応じて、例えば、開示されるシステムは、共有フォルダへのメンバーシップ・アクセス権を有するクライアント・デバイスに鍵ローテーション・イベントを通知し、公開鍵集合を更新する。開示されるシステムは、更新された公開鍵集合を、共有フォルダへの現在のアクセス権(又は共有フォルダ内のメンバーシップ)を有するクライアント・デバイスのそれぞれに提供する。このような更新された鍵集合を提供した後、開示されるシステムは、イニシエータ・クライアント・デバイスから、更新された暗号化ペイロードと、更新された公開鍵集合を利用して暗号化された変更された(すなわち、ローテーションされた)共有暗号鍵とを受信する。したがって、開示されるシステムは、共有フォルダへのメンバーシップ・アクセス権を有していないクライアント・デバイスへのアクセスを防止しつつ、共有暗号鍵を自動的にローテーションしうる。
【0007】
本開示の1つ以上の実施形態のさらなる特徴及び利点は、以下の説明に記載され、部分的にその説明から明らかになるか、又はこのような例示の実施形態の実施によって学習されてもよい。
【図面の簡単な説明】
【0008】
様々な実施形態が、添付の図面の使用を通じてさらなる具体性及び詳細を伴って記載され説明される。
【
図1】パスワード共有システムが1つ以上の実装に従って動作する環境の概略図を示す。
【
図2B】1つ以上の実装による、共有フォルダ内のパスワードの集合を管理し、複数のクライアント・デバイスのための共有暗号鍵をローテーションするパスワード共有システムの図を説明する。
【
図3B】1つ以上の実装による、共有暗号鍵及び公開暗号鍵を利用して共有フォルダのためのペイロードを暗号化するためのパスワード共有システムのための動作を説明するフロー図を説明する。
【
図4B】1つ以上の実装による、鍵ローテーション・イベントに応じて共有フォルダのための共有暗号鍵をローテーションするためのパスワード共有システムのための動作を説明するフロー図を説明する。
【
図5B】1つ以上の実装による、パスワード管理及びクレデンシャル自動入力を提供するための例示のグラフィカル・ユーザ・インタフェースを説明する。
【
図6】1つ以上の実装による、
図1のパスワード共有システムの図を説明する。
【
図7】1つ以上の実施形態による、共有フォルダを介してパスワードを共有するために暗号鍵交換及び鍵ローテーションを利用するための一連の動作のフローチャートを説明する。
【
図8】1つ以上の実施形態によるコンピューティング・デバイスのブロック図を説明する。
【
図9】1つ以上の実施形態によるオンライン・コンテンツ管理システムのネットワーキング環境を説明する。
【発明を実施するための形態】
【0009】
この開示は、ペイロード内の共有鍵を暗号化し、共有鍵及び公開暗号鍵の鍵交換及び鍵ローテーションの一方又は両方によって、クライアント・デバイスにわたって共有パスワードを同期するためのパスワード共有システムの1つ以上の実施形態を説明する。例えば、いくつかの実施形態において、パスワード共有システムは、初期クライアント・デバイスが共有フォルダを1つ以上のクライアント・デバイスと共有することの要求を開始すると判定する。パスワード共有システムは、クライアント・デバイスから公開暗号鍵を読み出し、その後、公開暗号鍵を初期クライアント・デバイスに提供する。いくつかの場合に、初期クライアント・デバイスは、共有フォルダについてのペイロード(例えば、パスワードの集合)を暗号化するために共有暗号鍵を利用し、その後、共有暗号鍵を暗号化するために公開暗号鍵を利用する。パスワード共有システムはさらに、初期クライアント・デバイスから、暗号化ペイロードと、(公開鍵集合を利用して暗号化されている)共有暗号鍵とを受信し、受信された暗号化ペイロード及び共有暗号鍵を共有フォルダに記憶する。
【0010】
上述のように、いくつかの実施形態において、パスワード共有システムは、初期クライアント・デバイスからのパスワードの集合を1つ以上の追加のクライアント・デバイスに共有するための共有フォルダを生成する。例えば、パスワードの集合を共有するための初期クライアント・デバイスからの要求に応じて、パスワード共有システムは、パスワードの集合を記憶するための共有フォルダを生成する。少なくともいくつかの実施形態において、パスワード共有システムは、共有フォルダへのメンバーシップ・アクセス権を有する1つ以上のクライアント・デバイスに異なるアクセス・パーミッションを割り当てるために、共有フォルダ内に1つ以上のサブフォルダを生成する。
【0011】
パスワードの集合を共有するための共有フォルダを生成することの要求を初期クライアント・デバイスが送信する場合に、パスワード共有システムは、クライアント・デバイスから公開暗号鍵を含む公開鍵集合を読み出す。特に、パスワード共有システムは、共有フォルダへのメンバーシップ・アクセスを許可される各クライアント・デバイスについての公開暗号鍵を取得しうる。1つ以上の実施形態において、パスワード共有システムは、各クライアント・デバイスをパスワード共有システムに登録する場合に、クライアント・デバイスから以前に受信された公開暗号鍵を識別する。パスワード共有システムはまた、初期クライアント・デバイスからパスワード共有システムにペイロードを配信するための共有暗号鍵を暗号化する際に初期クライアント・デバイスが使用するために、公開鍵集合を初期クライアント・デバイスに提供する。
【0012】
共有フォルダを生成することの要求に関連して初期クライアント・デバイスに公開鍵集合を提供した後、パスワード共有システムは、初期クライアント・デバイスから暗号化ペイロードと共有暗号鍵とを受信する。共有暗号鍵を利用することによって、初期クライアント・デバイスは、共有フォルダ内に記憶するためのパスワードの集合を含むペイロードを暗号化しうる。初期クライアント・デバイスは、共有暗号鍵でペイロードを暗号化することに加えて、パスワード共有システムからの公開鍵集合を利用して共有暗号鍵を暗号化しうる。よって、パスワード共有システムは、初期クライアント・デバイスから暗号化ペイロードとともに共有暗号鍵の暗号化バージョンを受信し、共有フォルダ内に共有暗号鍵の暗号化バージョンとともにペイロードを記憶する。
【0013】
パスワード共有システムが初期クライアント・デバイスから暗号化ペイロード及び対応する共有暗号鍵を受信した後、何らかの実装形態において、パスワード共有システムは他のクライアント・デバイスに共有フォルダのコンテンツへのアクセスを可能にする。特に、別のクライアント・デバイスによる共有フォルダのコンテンツへのアクセス要求に応じて、パスワード共有システムは、要求クライアント・デバイスを検証し、暗号化ペイロードと、共有暗号鍵の暗号化バージョンとを要求クライアント・デバイスに提供しうる。要求クライアント・デバイスは、(例えば、要求デバイスの秘密暗号鍵を利用して、)共有暗号鍵の暗号化バージョンを復号しうる。最後に、要求クライアント・デバイスは、共有暗号鍵を利用して暗号化ペイロードを復号し、共有フォルダのコンテンツにアクセスしうる。
【0014】
パスワードを要求クライアント・デバイスと共有することに加えて(又はこれに代えて)、いくつかの実施形態において、パスワード共有システムは、セキュリティを向上させるために共有暗号鍵をローテーションする。例えば、鍵ローテーション・イベントを検出したことに応じて、パスワード共有システムは、クライアント・デバイスにイベントを通知し、共有フォルダへの現在のメンバーシップ・アクセス権を有するクライアント・デバイスから更新された公開鍵集合を読み出す。その後、パスワード共有システムは、更新された公開鍵集合を、共有フォルダへの現在のアクセス権又はメンバーシップを有するクライアント・デバイスのそれぞれに提供しうる。
【0015】
パスワード共有システムが鍵ローテーション・イベントを検出し、クライアント・デバイスに鍵ローテーション・イベントを通知した後、クライアント・デバイスは、変更された(例えば、新たな)共有暗号鍵を生成することによって、共有暗号鍵をローテーションする。クライアント・デバイスはさらに、変更された共有暗号鍵でパスワードを含むペイロードを暗号化し、パスワード共有システムから受信された更新された公開鍵集合で、変更された共有暗号鍵を暗号化する。このような暗号化ペイロードは、パスワードの同じ集合又はパスワードの新たな集合を含みうる。パスワード共有システムは、更新された暗号化ペイロードと、変更された共有暗号鍵とをクライアント・デバイスから受信し、それらを共有フォルダに記憶する。いくつかの実施形態において、パスワード共有システムはまた、データ(例えば、ペイロード)が受信/コミットされる順序に基づいてイニシエータ・デバイス及びフォロワ・デバイスを決定することによって、更新された共有フォルダ・データをパスワード共有システムにアップロードしようと試みるクライアント・デバイス間の競合を検出する。パスワード共有システムはまた、(例えば、受信された各ペイロードに関連付けられたリビジョン番号に基づいて)イニシエータ・デバイスではないクライアント・デバイスからのペイロード・コミットを許可しない。
【0016】
共有フォルダのための共有鍵を初期化又はローテーションすることに加えて、いくつかの追加の実施形態において、パスワード共有システムは、共有フォルダを介してパスワードの集合に高度なアクセス制御レベルを提供する。例えば、パスワード共有システムは、共有フォルダ内のフォルダ階層に基づいて、異なるクライアント・デバイス(及び/又はユーザ・アカウント)に異なるアクセス・パーミッションを割り当てうる。説明すると、パスワード共有システムは、異なるクライアント・デバイスが、共有フォルダ内の1つ以上のサブフォルダに関連するクライアント・デバイスのための様々なアクセス制御レベルを利用することによって、パスワードの1つ以上のサブセットを閲覧、作成、又は変更することを可能にしうる。
【0017】
本書に記載されるパスワード共有システムは、クレデンシャル・ストレージを実装するコンピューティング・デバイスに向上を提供する。具体的に、パスワード共有システムは、デバイス及びユーザ・アカウントにわたってパスワードを共有するために、公開及び共有暗号鍵を介して鍵交換又は鍵ローテーションを利用することによって、セキュリティを向上する。上記で示唆されたように、従来のクレデンシャル・ストレージ・システムは、不正なユーザ又はデバイスによって使用された場合に様々なオンライン・サービスへのアクセスを許可しうる一連の暗号化クレデンシャルを保護するために中央クレデンシャル(例えば、ユーザ名/パスワードの組み合わせ)を使用することによって、ネットワーク・セキュリティ・リスクをもたらしうる。シールドとしての単一の従来のクレデンシャルとは対照的に、パスワード共有システムは、パスワードと共有暗号鍵との両方を含む共有フォルダについてのペイロードを暗号化することによって、パスワード保護セキュリティを向上する暗号化の複数の層を導入する。
【0018】
このような多層暗号化を容易にするために、例えば、パスワード共有システムは、共有暗号鍵を暗号化する際に初期クライアント・デバイスが利用するために、1つ以上のクライアント・デバイスから初期クライアント・デバイスへの初期公開暗号鍵交換を提供する。パスワード共有システムは、暗号化ペイロード及び共有暗号鍵を受信(及び初期クライアント・デバイスが書き込み及び提供)し、初期クライアント・デバイスは、クライアント・デバイスからの公開暗号鍵で共有暗号鍵を暗号化している。暗号化ペイロードを受信すると、パスワード共有システムは、暗号化ペイロード及び共有暗号鍵を共有フォルダに記憶する。よって、パスワード共有システムは、共有フォルダ内の暗号化ペイロードへのアクセスを、共有暗号鍵を復号するための対応する秘密鍵を有するデバイスのみに制限することによって、従来の単一クレデンシャル保護又は標準の公開秘密鍵暗号化を超えるパスワードの集合へのアクセスをセキュアに提供する。
【0019】
共有フォルダ構造によって提供されるセキュリティ保護に加えて、パスワード共有システムはまた、クライアント・デバイス及びユーザ・アカウントにわたる鍵ローテーションを利用することによって、セキュアなコンテンツを共有するコンピューティング・デバイスのセキュリティを向上する。特に、共有フォルダのメンバーシップにおける変化を検出すること、又は認可されたクライアント・デバイスのための共有暗号鍵のローテーションをトリガする何らかの他の鍵ローテーション・イベントを検出することによって、パスワード共有システムは、望ましくないクライアント・デバイスが暗号化コンテンツにアクセスすることを防止する。より具体的に、共有フォルダ内のペイロードを暗号化するために利用される共有暗号鍵をローテーションし、鍵ローテーション・イベントに応じてクライアント・デバイスについての公開鍵集合を更新することによって、パスワード共有システムは、共有コンテンツへの現在のメンバーシップ・アクセス権を有するクライアント・デバイスのみが、共有暗号鍵(よって、暗号化ペイロード)を復号しうることを保証しうる。
【0020】
上述のように、従来のクレデンシャル・ストレージ・システムは、(発見された場合)パスワードを公開する単一又は中央クレデンシャルを使用することによって、又は(公開鍵が更新されていない場合に)共有グループを離れた以前のメンバーにパスワード又は他のセキュア・データを公開し続けうる従来の公開‐秘密-暗号化-鍵ペアを使用することによって、セキュリティ・リスクをもたらしうる。このような従来のシステムとは対照的に、パスワード共有システムは、共有暗号鍵を自動的にローテーションし、鍵ローテーション・イベントを検出すると新たな共有暗号鍵を含むペイロードを再暗号化することによって、共有フォルダの以前のメンバーによって保持されていた暗号鍵が、共有メンバーシップを離れた後にいつでも共有フォルダのコンテンツにアクセスできないことを保証する。
【0021】
セキュリティの向上に加えて、パスワード共有システムはまた、共有フォルダ内に共有暗号鍵とともにペイロードを提供することによって、データ損失又はデータ破損から保護する。例えば、パスワード共有システムは、ペイロードをコミットする前に、共有暗号鍵が常にペイロードとともに含まれることを保証することによって、データ損失を防止する。具体的に、暗号化ペイロードとともに共有暗号鍵を含めることにより、パスワード共有システム及びクライアント・デバイスは、共有暗号鍵の現在のバージョンとペイロードとともに記憶された共有暗号鍵のバージョンとの間の比較を介して、記憶された共有暗号鍵の妥当性を検証しうる。よって、パスワード共有システムは、不一致の鍵バージョンを容易に検出し、正しい鍵バージョンを有していない共有暗号鍵とともにペイロードを記憶することを防止しうる。共有フォルダのためのペイロードを暗号化するために使用される共有暗号鍵のバージョンを検証し、共有暗号鍵をペイロードとともに記憶することによって、パスワード共有システムはまた、前述したように、そうでなければ暗号鍵又はペイロードの違いから生じるのであろうデータ損失を防止する。
【0022】
さらに、パスワード共有システムは、共有フォルダを介して共有コンテンツへのアクセスを提供することによって柔軟性を提供する。例えば、パスワード共有システムは、共有フォルダへのメンバーシップを有する各クライアント・デバイスに対する特定のサブフォルダ(例えば、パスワード又はパスワード・サブグループ)へのアクセスを指定するために、(例えば、サブフォルダを含む)共有フォルダの階層内のアクセス制御レベルを利用しうる。パスワード共有システムはまた、各クライアント・デバイスが各サブフォルダを読み書きしうるかどうか、及び/又は(例えば、新たなパスワードを閲覧、変更、又は作成するために)新たなサブフォルダを生成しうるかどうかを示すことによって、各クライアント・デバイスが各サブフォルダに対して有するアクセス権のタイプを指定しうる。したがって、鍵交換及び鍵ローテーションと組み合わせて、パスワード共有システムは、複数のクライアント・デバイス及び/又はユーザ・アカウントによるアクセスのためにパスワードをセキュアかつ柔軟に記憶するアクセス制御と暗号化との組み合わせを提供するために、アクセス制御レベルを利用しうる。
【0023】
ここで図面を参照すると、
図1は、パスワード共有システム102が動作しうるシステム環境100の概略図を示す。特に、システム環境100は、ネットワーク108を介して通信するサーバ104及びクライアント・デバイス106a~106nを含む。さらに、図示されるように、サーバ104は、パスワード共有システム102を含むコンテンツ管理システム110を含む。さらに、クライアント・デバイス106a~106nは、クライアント・アプリケーション112a~112nをそれぞれ含みうる。
【0024】
図1に説明されるように、サーバ104は、コンテンツ管理システム110を含むか、又はこれをホストする。1つ以上の実施形態において、コンテンツ管理システム110は、1つ以上のクライアント・デバイス(例えば、クライアント・デバイス106a~106n)上のコンテンツ管理システム110の1以上のユーザのためのデジタル・コンテンツ・アイテムを記憶、共有、作成、変更、又は表示するためのデジタル・コンテンツ・アイテムの管理を実装する1つ以上のシステムを含むか、又はその一部である。例えば、コンテンツ管理システム110は、デジタル・コンテンツ・アイテムを閲覧、生成、編集、共有、又は他のように相互作用するためのツールを提供する。説明のために、コンテンツ管理システム110は、テキスト、画像、又は他のメディアを有するデジタル・コンテンツ・アイテムを生成又は編集するためのツールを、クライアント・アプリケーション112a~112nを介してクライアント・デバイス106a~106nに提供する。
【0025】
いくつかの実施形態において、クライアント・アプリケーション112a~112nは、クライアント・デバイス106a~106nにそれぞれ利用可能なウェブ・ブラウザ、アプレット、又は他のソフトウェア・アプリケーション(例えば、ネイティブ・アプリケーション)を含む。さらに、いくつかの例において、コンテンツ管理システム110は、クライアント・デバイス106a~106nによって実行された場合に、それぞれアプリケーション又はウェブページを作成するか、又は他のようにクライアント・デバイス106a~106nのうちの1つと統合する命令を含むデータを提供する。これに関連して、いくつかの実施形態において、コンテンツ管理システム110は、ユーザがクライアント・デバイス上のクライアント・アプリケーション(例えば、クライアント・アプリケーション112a)を介してデジタル・コンテンツ・アイテムと相互作用するために、リモート・グラフィカル・ユーザ・インタフェース(又は他のグラフィカル・ユーザ・インタフェース)のためのデータをクライアント・デバイス(例えば、クライアント・デバイス106a)に提供する。
【0026】
さらに、1つ以上の実施形態において、コンテンツ管理システム110は、複数のコンピューティング・デバイスにわたって共有するためのデジタル・セキュリティ・クレデンシャル(例えば、パスワード、ユーザ名)のセキュアな記憶を提供する。例えば、コンテンツ管理システム110は、クライアント・デバイス106a~106nによるアクセスのためのパスワードの集合を記憶し共有するためのパスワード共有システム102を含む。具体的に、パスワード共有システム102は、パスワードの集合を取得し、共有フォルダ内にパスワードの集合を記憶するために、ネットワーク108を介してクライアント・デバイス106a~106nの第1のクライアント・デバイスと通信する。その後、パスワード共有システム102は、パスワードの集合を含む共有フォルダへのアクセスをクライアント・デバイス106a~106nに提供する。
【0027】
本書で使用されるように、「パスワード」という用語は、例えばアカウントにアクセスするための一連の文字又はコードのような、アカウント、デジタル・コンテンツ、デジタル・ファイル、又はサービスに関連付けられたコンピューティング・デバイスにアクセスするためのクレデンシャルを指す。さらに、パスワードは、アカウント名(例えば、ユーザ名)のような追加のログイン情報を含むか、又はこれに関連付けられうる。さらに、パスワードは、ユーザを識別するために又はアカウントへのログイン試行を検証するためにサービスが利用する他のセキュア情報を含みうる。1つ以上の追加の実施形態において、パスワードは、1つ以上のサービスに関連付けられた支払クレデンシャル(例えば、クレジット/デビット・カード情報)又はメンバーシップ情報を含む。本書で使用されるように、「パスワードの集合」という用語は、1つ以上のパスワードを指す。さらに、パスワードの集合は、それぞれが1つ以上の別個のパスワードを含む、パスワードの1つ以上のサブグループを含みうる。
【0028】
本書でさらに使用されるように、「共有フォルダ」という用語は、2つ以上のコンピューティング・デバイス又はユーザ間でデジタル・コンテンツを共有するためのデジタル記憶位置又はファイルを指す。例えば、共有フォルダは、共有フォルダ識別子に従って2つ以上のコンピューティング・デバイスへのデジタル記憶位置へのアクセスを提供する、クラウド記憶媒体内のデジタル記憶位置を含みうる。共有フォルダは、少なくとも最初に、ペイロードを含まなくてもよい。さらに、共有フォルダは、1つ以上のサブフォルダを含む階層を含みうる。さらに、共有フォルダは、別のフォルダ(例えば、他のユーザと共有されないユーザの個人パスワードを含むルート・フォルダ)内のサブフォルダでありうる。共有フォルダは、ルート・フォルダ内の複数の共有フォルダのうちの1つであってもよく、各共有フォルダはそれ自体の共有メンバーシップを有する。
【0029】
1つ以上の追加の実施形態において、パスワード共有システム102は、パスワードの集合を共有することに関連して暗号鍵を交換するために、クライアント・デバイス106a~106nと通信する。特に、パスワード共有システム102は、パスワードの集合を含む共有フォルダへのメンバーシップ・アクセス権をクライアント・デバイス106a~106nが有することに基づいて、クライアント・デバイス106a~106nから公開暗号鍵を含む公開鍵集合を読み出す。パスワード共有システム102はまた、共有フォルダ内に記憶するためのペイロードを取得することに関連して、クライアント・デバイス106a~106nのうちの1つ以上に公開暗号鍵を提供しうる。
【0030】
本書で使用されるように、「公開暗号鍵」(又は「公開鍵」)という用語は、広く配布されているクライアント・デバイス又はユーザに関連付けられた公開‐秘密鍵ペアの一部としての暗号化鍵を指す。いくつかの場合に、第1のクライアント・デバイスは、(例えば、第2のクライアント・デバイスによるアクセスのために)デジタル・データを暗号化するために、第2のクライアント・デバイスの公開鍵を使用する。反対に、本書で使用されるように、「秘密暗号鍵」(又は「秘密鍵」)という用語は、クライアント・デバイスによって秘密に保持又は記憶されたクライアント・デバイスに関連付けられた公開‐秘密鍵ペアの一部としての暗号化鍵を指す。いくつかの場合に、クライアント・デバイスは、公開‐秘密鍵ペアからの対応する公開暗号鍵を利用して暗号化されたデジタル・データを復号するために、秘密暗号鍵を使用する。したがって、公開暗号鍵は、所有者クライアント・デバイスが対応する秘密暗号鍵を利用して復号するようにデータを暗号化するクライアント・デバイスからアクセス可能である。本書で使用されるように、「公開鍵集合」という用語は、1つ以上のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵を指す。
【0031】
本書でさらに使用されるように、「ペイロード」という用語は、受信側コンピューティング・デバイスでの記憶のために、送信側コンピューティング・デバイスから受信側コンピューティング・デバイスへ送られる又は送信されるデータを指す。いくつかの場合に、ペイロードは、このようなコンピューティング・デバイス間で送信される意図されたデジタル・データを含むが、付随するメタデータ又はヘッダを除外する。例えば、ペイロードは、1つ以上のコンピューティング・デバイスからアクセス可能な共有フォルダ内の記憶のためにクライアント・デバイスがストレージ・システム(例えば、コンテンツ管理システム)へ送信するパスワードの集合を含みうる。いくつかの実施形態において、ペイロードはまた、1つ以上のクライアント・デバイスにおいてローカルに記憶するためにストレージ・システムが1つ以上のクライアント・デバイスへ送信する共有フォルダ内のパスワードの集合を含みうる。さらに、本書で使用されるように、「暗号化ペイロード」という用語は、暗号鍵を介して暗号化されているペイロードを指す。
【0032】
図1によってさらに説明されるように、パスワード共有システム102はまた、共有フォルダに関連付けられた鍵ローテーション・イベントに応じて鍵ローテーションを実行するために、クライアント・デバイス106a~106nと通信する。例えば、パスワード共有システム102は、共有フォルダのペイロードを暗号化するために利用される暗号鍵を更新する時刻を示す鍵ローテーション・イベントを検出する。パスワード共有システム102は、公開鍵集合を更新し、更新された公開鍵集合を、共有フォルダへの現在のアクセス権又はメンバーシップを有する各クライアント・デバイスに提供するために、クライアント・デバイス106a~106nと通信しうる。1つ以上の実施形態において、クライアント・デバイス106a~106nのうちの1つは、共有暗号鍵をローテーションし、共有フォルダのペイロードを再暗号化し、(更新された公開鍵集合を利用して暗号化された)共有暗号鍵とともに、更新された暗号化ペイロードをパスワード共有システム102に提供する。その後、パスワード共有システム102は、共有フォルダの更新されたペイロードへのアクセスを、ネットワーク108を介してクライアント・デバイス106a~106nに提供する。
【0033】
本書で使用されるように、「鍵ローテーション・イベント」という用語は、暗号鍵のローテーションを開始する検出されたアクション又は他のインジケータを指す。例えば、鍵ローテーション・イベントは、既存の暗号鍵を置き換えるために新たな暗号鍵を生成することによって、暗号鍵の更新又は変更をトリガしうる。1つ以上の実施形態において、鍵ローテーション・イベントは、共有フォルダについての共有メンバーシップにおける変化のインジケーション、共有暗号鍵を変更することのクライアント・デバイスからのコマンドのインジケーション、又は共有フォルダに関連付けられた時間閾値のインジケーションを含むが、これらに限定されない。さらに、鍵ローテーション・イベントは、暗号鍵をローテーションするための手動要求(例えば、ユーザのためのカスタマー・サービス・エージェントによる要求)に応じたパスワード共有システムによる開始を含みうる。
【0034】
本書でさらに使用されるように、「共有メンバーシップ」という用語は、1つ以上のアカウント又はクライアント・デバイスのためのフォルダへのアクセス・パーミッションを指す。例えば、共有メンバーシップは、フォルダへのアクセスを許可されるユーザ識別子、アカウント識別子、及び/又はデバイス一意識別子を含みうる。1つ以上の実施形態において、共有メンバーシップは、所与のクライアント・デバイスがコンテンツ管理システム110及び/又はパスワード共有システム102に関連してサーバ104上に記憶されたフォルダへのアクセス権を有するかどうかを判定するためのフォルダに関連して、メタデータ・ファイル又はデータベースに記憶される。
【0035】
1つ以上の実施形態において、クライアント・デバイス106a~106nのそれぞれは、
図8を参照して以下で説明するものを含む、モバイル・デバイス(例えば、スマートフォン又はタブレット)、ラップトップ、又はデスクトップを含みうるが、これらに限定されない。さらに、
図1に示されていないが、クライアント・デバイス106a~106nは1以上のユーザ・アカウントに関連付けられ、様々な機能を実行するために1以上のユーザ(例えば、コンテンツ管理システム110に関連付けられたユーザ)によって操作されうる。特に、1つ以上の実施形態において、クライアント・デバイス106a~106nは、(例えば、クライアント・アプリケーション112a~112nを介して)様々なデジタル・コンテンツにアクセスすること、閲覧すること、及びこれと相互作用することのような機能を実行するが、これらに限定されない。さらに、クライアント・デバイス106a~106nはまた、ネットワーク108を介してコンテンツ管理システム110に提供するために、データを生成し、キャプチャし、又はこれにアクセスするための機能を実行する。1つ以上の実施形態において、クライアント・デバイス106a~106nのうちの1つ以上は、クライアント・デバイス106a~106nの間でパスワードの集合を共有することに関連して、パスワード共有システム102へ送信するために、ペイロードを暗号化し、共有暗号鍵を暗号化するための動作を実行する。
【0036】
1つ以上の実施形態において、サーバ104は、
図8を参照して以下で説明するものを含む様々なコンピューティング・デバイスを含む。例えば、サーバ104は、デジタル・コンテンツ・アイテム(例えば、テキスト、画像、ビデオ、オーディオ)に関連付けられたデータを記憶し処理するための1つ以上のサーバを含みうる。サーバ104はまた、分散ストレージ環境内のような、互いに通信する複数のコンピューティング・デバイスを含みうる。いくつかの実施形態において、サーバ104は、コンテンツ・サーバを含む。1つ以上の実施形態において、サーバ104は、アプリケーション・サーバ、通信サーバ、ウェブ・ホスティング・サーバ、ソーシャル・ネットワーキング・サーバ、デジタル・コンテンツ・キャンペーン・サーバ、又はデジタル通信管理サーバを含みうる。
【0037】
さらに、
図1に説明されるように、システム環境100は、ネットワーク108を含む。ネットワーク108は、システム環境100の構成要素間の通信を可能にする。1つ以上の実施形態において、ネットワーク108は、インターネット又はワールド・ワイド・ウェブを含む。さらに、ネットワーク108は、企業イントラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、無線ローカル・ネットワーク(WLAN)、セルラー・ネットワーク、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、又は2つ以上のこのようなネットワークの組合せのような、様々な通信技術及びプロトコルを使用する様々なタイプのネットワークを含みうる。実際、サーバ104及びクライアント・デバイス106a~106nは、データ通信を支援する任意の既知の通信技術、デバイス、媒体、及びプロトコルを含む、データ及び/又は通信信号を輸送するのに適した様々な通信プラットフォーム及び技術を使用して、ネットワーク108を介して通信してもよく、この例は、
図8を参照して説明される。
【0038】
図1はサーバ104とクライアント・デバイス106a~106nとがネットワーク108を介して通信する例を示すが、システム環境100の様々な構成要素は、これに代えて、他の方法を介して通信及び/又は相互作用する(例えば、サーバ104とクライアント・デバイス106a~106nとは直接通信する)。さらに、
図1はシステム環境100内の特定の構成要素及び/又はデバイスによって実装されるパスワード共有システム102を示すが、パスワード共有システム102は全体的又は部分的に、システム環境100内の他のコンピューティング・デバイス及び/又は構成要素によって実装されうる。例えば、パスワード共有システム102の少なくとも一部は、クライアント・デバイス106a~106nのうちの1つ以上の中に実装されうる。
【0039】
上述のように、パスワード共有システム102は、複数のクライアント・デバイスに共有フォルダへのセキュアなアクセスを提供するために、共有フォルダに関連する鍵交換及び鍵ローテーションを利用しうる。
図2A~
図2Bは、複数のクライアント・デバイスからアクセス可能な共有フォルダと、複数のクライアント・デバイスにわたって共有フォルダのコンテンツをセキュアに共有するための動作に関連付けられた複数の暗号鍵との図を説明する。具体的に、
図2Aは、複数のクライアント・デバイス間の初期鍵交換を説明し、
図2Bは、複数のクライアント・デバイス間で共有される変更された共有暗号鍵への鍵ローテーションを説明する。
【0040】
図2Aは、サーバ104と、第1のクライアント・デバイス200aと、第2のクライアント・デバイス200bとを含む環境を説明する。1つ以上の実施形態において、サーバ104は、第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bに関連付けられた共有フォルダを管理するためのパスワード共有システム102を含む。例えば、サーバ104は共有フォルダをホストし、共有フォルダへのアクセスを第1のクライアント・デバイス200a及び第2のクライアント・デバイスに提供する。
【0041】
1つ以上の実施形態によれば、第1のクライアント・デバイス200aは、共有フォルダ204を生成するために、クライアント・アプリケーション202aを利用する。例えば、第1のクライアント・デバイス200aは、(例えば、共有フォルダ204の所有者/管理者アカウントに関連付けられていることに基づいて、)サーバ104において共有フォルダ204を生成するようにサーバ104におけるパスワード共有システム102に要求を送信するために、コンテンツ共有アプリケーションを利用する。共有フォルダ204の生成に関連して、第1のクライアント・デバイス200aはまた、第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bを含む共有フォルダ204に関連付けられた共有メンバーシップを示しうる。
【0042】
1つ以上の実施形態において、共有フォルダ204は、第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bと共有するためのパスワードの集合を含む。説明のために、共有フォルダ204は、1つ以上のサービスに関連付けられた1つ以上のパスワードを含みうる。さらに、
図2Aに説明されるように、共有フォルダ204は、異なるクライアント・デバイスと共有するためのパスワードの異なる集合を含む1つ以上のサブフォルダ(例えば、第1のサブフォルダ206a及び第2のサブフォルダ206b)を含みうる。例えば、パスワード共有システム102は、パスワードに関連付けられたパスワード・パーミッションに基づいて、共有フォルダ204内の各サブフォルダに関して各クライアント・デバイスについて個別のアクセス・パーミッションを確立しうる。
【0043】
本書で使用されるように、「パスワード・パーミッション」という用語は、ユーザ又はユーザ・アカウントによるパスワードへの指定されたアクセス権を指す。例えば、パスワード・パーミッションは、所与のアカウントがサービスのための特定のパスワードを閲覧、使用、又は変更できるかどうかを示しうる。さらに、本書で使用されるように、「アクセス・パーミッション」という用語は、ユーザ又はユーザ・アカウントによるフォルダへの指定されたアクセス権を指す。例えば、アクセス・パーミッションは、パスワードの集合を含む所与のフォルダ又はサブフォルダについてユーザ・アカウントに割り当てられたアクセス制御レベルを示しうる。1つ以上の実施形態において、特定のフォルダへのアクセス・パーミッションは、フォルダ内の1つ以上のパスワードに対応するパスワード・パーミッションに基づく。
【0044】
パスワード共有システム102が共有フォルダ204を生成することを要求する場合に、いくつかの実施形態において、第1のクライアント・デバイス200aはまず、第1のクライアント・デバイス200a上でローカルに、共有フォルダ204と、対応する階層とを生成する。さらに、第1のクライアント・デバイス200aは、クライアント・デバイス200aのローカル・ストレージ内の共有フォルダ204内にパスワードの集合を記憶しうる。その後、第1のクライアント・デバイス200aは、共有フォルダ204に対応するペイロードをパスワード共有システム102に配送するための準備として、サーバ104上に対応する階層を有する共有フォルダ204を生成することの要求をパスワード共有システム102へ送信しうる。
【0045】
パスワード共有システム102は、共有フォルダを生成することの要求を受けたことに応じて、サーバ104において、対応する階層を含む共有フォルダ204を生成する。共有フォルダ204内に記憶するためのペイロードを受信する前に、パスワード共有システム102は、第2のクライアント・デバイス200bに関連付けられた少なくとも1つの公開暗号鍵を含む公開鍵集合208を読み出す。例えば、パスワード共有システム102は、パスワード共有システム102に登録されたクライアント・デバイスについて以前にキャッシュされた公開暗号鍵から、第2のクライアント・デバイス200bに関連付けられた公開暗号鍵を取得する。いくつかの実施形態において、パスワード共有システム102はまた、公開鍵集合208内に含めるために、第1のクライアント・デバイス200aに関連付けられた公開暗号鍵を読み出す。例えば、パスワード共有システム102は、第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bに関連付けられた秘密暗号鍵(例えば、第1の秘密暗号鍵210a及び第2の秘密暗号鍵210b)に関連付けられた公開暗号鍵を取得しうる。その後、パスワード共有システム102は、公開鍵集合208を第1のクライアント・デバイス200aに提供しうる。
【0046】
図2Aによってさらに説明されるように、第1のクライアント・デバイス200aは、共有フォルダ204に関連付けられたペイロード(例えば、パスワードの集合)を暗号化するために、共有暗号鍵212を利用する。本書で使用されるように、「共有暗号鍵」(又は「共有鍵」)という用語は、共有フォルダのためのペイロードを暗号化及び/又は復号するために利用される暗号化鍵を指す。例えば、共有暗号鍵は、クライアント・デバイス間で共有されるパスワードの集合を暗号化及び復号するために複数のクライアント・デバイスからアクセス可能である鍵を含む。さらに、
図2Aに説明されるように、第1のクライアント・デバイス200aは、共有フォルダ204内に、暗号化ペイロードとともに(共有暗号鍵212の暗号化されていないバージョンではなく)共有暗号鍵212の暗号化バージョンを記憶する。
【0047】
1つ以上の実施形態において、上述のように、第1のクライアント・デバイス200aは、暗号化ペイロードとともに共有フォルダ204内に記憶するための共有暗号鍵212を暗号化する。例えば、第1のクライアント・デバイス200aは、パスワード共有システム102から受信された公開鍵集合208を利用して共有暗号鍵212を暗号化する。したがって、第1のクライアント・デバイス200aは、(i)第2のクライアント・デバイス200bに関連付けられた公開暗号鍵と、(ii)パスワード共有システム102を介した共有フォルダ204へのメンバーシップ・アクセス権を有する任意の追加のクライアント・デバイスに関連付けられた任意の追加の公開暗号鍵と、を利用して、共有暗号鍵212の暗号化バージョンのリストを生成する。公開鍵集合208を利用して共有暗号鍵212を暗号化することによって、第1のクライアント・デバイス200aは、共有フォルダ204にメンバーシップ・アクセス権を有していないクライアント・デバイスによる共有暗号鍵212へのアクセスを防止する。
図2Aは、共有フォルダ204のペイロードとともに(例えば、暗号化された共有暗号鍵のリストとして)記憶された共有暗号鍵212の暗号化バージョンを説明する。
【0048】
さらに、1つ以上の実施形態において、第1のクライアント・デバイス200aは、(例えば、後で使用するために)パスワード共有システム102において維持されるユーザ固有の鍵集合内の共有暗号鍵212の非暗号化バージョンをアップロードする。例えば、共有フォルダ204の共有メンバーシップが他のいずれのユーザも含まないならば、第1のクライアント・デバイス200aは、共有暗号鍵212を用いてペイロードを暗号化するが、パスワード共有システム102を介して他のクライアント・デバイスと共有暗号鍵212を共有しない。第1のクライアント・デバイス200aはまた、パスワード共有システム102を介して他のユーザと共有されない他の鍵をユーザ固有の鍵集合に記憶しうる。
【0049】
共有暗号鍵212を使用して共有フォルダ204のペイロードを暗号化し、公開鍵集合208を使用して共有暗号鍵212を暗号化した後、第1のクライアント・デバイス200aは、サーバ104における共有フォルダ204内に記憶するために、暗号化ペイロード及び暗号化共有暗号鍵212をパスワード共有システム102へ送信する。さらに、パスワード共有システム102は、共有フォルダ204へのメンバーシップ・アクセス権を第2のクライアント・デバイス200bが有することに基づいて、クライアント・アプリケーション202bを介して、共有フォルダ204のコンテンツへのアクセスを第2のクライアント・デバイス200bに提供する。よって、第2のクライアント・デバイス200b(又は他のクライアント・デバイス)は、共有フォルダ204をサーバ104から第2のクライアント・デバイス200b(又は対応するクライアント・デバイス)にダウンロードすること(例えば、同期すること)を要求しうる。
【0050】
共有フォルダ204をダウンロードすることの第2のクライアント・デバイス200bによる要求を受信したことに応じて、パスワード共有システム102は、暗号化ペイロード及び暗号化共有暗号鍵212を第2のクライアント・デバイス200bへ送信しうる。暗号化ペイロード及び暗号化共有暗号鍵212をサーバ104から受信した後、第2のクライアント・デバイス200bは、第2の秘密暗号鍵210bを利用して共有暗号鍵212を復号しうる。その後、第2のクライアント・デバイス200bは、共有フォルダ204内のコンテンツ(例えば、パスワードの集合)にアクセスするために、共有暗号鍵212を利用して暗号化ペイロードを復号しうる。
【0051】
前述したように、パスワード共有システム102はまた、1つ以上のクライアント・デバイスへの1つ以上のパスワード又はパスワードのグループへのアクセスを制限するために、異なるアクセス制御レベルを利用しうる。例えば、パスワード共有システム102は、第1のクライアント・デバイス200aが第1のサブフォルダ206a及び第2のサブフォルダ206bにアクセスすることを可能にする一方で、第2のクライアント・デバイス200bが第1のサブフォルダ206aのみにアクセスすることを可能にするために、サブフォルダのアクセス制御レベルを利用しうる。さらに、パスワード共有システム102は、例えば第1のクライアント・デバイス200aが共有フォルダ204内の任意のサブフォルダを読み書きすることを可能にする一方で、第2のクライアント・デバイス200bが第1のサブフォルダ206aのコンテンツを読み取ることのみを可能にするために、異なるタイプのアクセス制御レベルを異なるクライアント・デバイスに割り当てうる。
【0052】
図2Bに説明されるように、パスワード共有システム102はまた、共有フォルダ204に関連して鍵をローテーションする。具体的に、パスワード共有システム102は、
図2Aに示される共有暗号鍵212をローテーションするための鍵ローテーション・イベントを検出する。
図2Bに説明されるように、パスワード共有システム102は、パスワード共有システム102に共有暗号鍵212を変更するためのプロセスを開始させる複数の可能なイベントのうちの1つを含む鍵ローテーション・イベント218を検出する。例えば、先に述べたように、
図2Bに説明されるように、鍵ローテーション・イベント218は、共有フォルダ204の共有メンバーシップの共有メンバーシップにおける変化、共有暗号鍵212をローテーションすることの要求、又は共有フォルダ204に関連付けられた時間閾値を含みうるが、これらに限定されない。よって、鍵ローテーション・イベント218は、1つ以上のクライアント・デバイスが以前の共有暗号鍵212へのアクセス権をもはや有するべきではないことを示す。
【0053】
共有暗号鍵212をローテーションするために、パスワード共有システム102は、共有フォルダ204への現在のメンバーシップ・アクセス権を有するクライアント・デバイスに公開暗号鍵を要求することによって、更新された公開鍵集合214を読み出す。例えば、
図2Bに説明されるように、パスワード共有システム102は、鍵ローテーション・イベント218の後、第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bが共有フォルダ204へのメンバーシップ・アクセス権を有し、第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bから公開暗号鍵を取得すると判定する。さらに、パスワード共有システム102は、更新された公開鍵集合214を第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bに提供する。
【0054】
1つ以上の実施形態において、鍵ローテーション・イベント218のインジケーションを受信し、パスワード共有システム102から更新された公開鍵集合214を受信したことに応じて、第1のクライアント・デバイス200a及び第2のクライアント・デバイス200bは、新たな共有暗号鍵を生成するために競争する。
図2Bに説明されるように、第2のクライアント・デバイス200bは、(例えば、共有暗号鍵212を変更された共有暗号鍵216にローテーションすることによって、)変更された共有暗号鍵216を生成し、その後、共有フォルダ204のペイロードを再暗号化するために、変更された共有暗号鍵216を利用することの一番手である。第2のクライアント・デバイス200bはまた、更新された公開鍵集合214を利用して、(例えば、変更された共有暗号鍵の複数の暗号化バージョンを生成することによって、)変更された共有暗号鍵216を暗号化し、その後、共有フォルダ204内に記憶するために、暗号化ペイロードと、変更された共有暗号鍵216の暗号化バージョンとをパスワード共有システム102に提供する。
図2Bは、共有フォルダ構造204が、変更された共有暗号鍵216の暗号化バージョンを含むことを示す。
【0055】
図2Bにさらに説明されるように、パスワード共有システム102は、変更された共有暗号鍵216とともに再暗号化ペイロードを第1のクライアント・デバイス200aへ送信することによって、共有フォルダ204のコンテンツを第1のクライアント・デバイス200aと同期する。例えば、パスワード共有システム102は、共有フォルダ204を同期することの要求を第1のクライアント・デバイス200aから受信したことに応じて、共有フォルダ204のコンテンツを第1のクライアント・デバイス200aと同期しうる。再暗号化ペイロード及び(更新された公開鍵集合214を利用して暗号化された)変更された共有暗号鍵216を受信した後、第1のクライアント・デバイス200aは、第1の秘密暗号鍵210aを利用して、変更された共有暗号鍵216を復号しうる。第1のクライアント・デバイス200aはまた、変更された共有暗号鍵216を利用して暗号化ペイロードを復号し、その後、共有フォルダ204のコンテンツにアクセスしうる。
【0056】
図3A~
図3Bは、複数のクライアント・デバイスにわたってパスワードの集合を共有するための動作のフローチャートを説明する。特に、
図3A~
図3Bに説明されるように、パスワード共有システム102を含むサーバ104は、パスワードの集合を共有するために、第1のクライアント・デバイス300a及び第2のクライアント・デバイス300bと通信しうる。とりわけ、このような通信及びパスワード共有を容易にするために、第1のクライアント・デバイス300aは第1のクライアント・アプリケーション302aを含み、第2のクライアント・デバイス300bは第2のクライアント・アプリケーション302bを含む。
【0057】
図3Aに説明されるように、第1のクライアント・デバイス300aは、パスワードの集合を選択する動作304を実行することによって、第2のクライアント・デバイス300bとパスワードの集合を共有するプロセスを開始する。例えば、第1のクライアント・デバイス300aは、パスワードの集合を1以上の他のユーザと共有するために、第1のクライアント・デバイス300aに関連付けられた第1のユーザによる入力を受信する。その後、第1のクライアント・デバイス300aは、1以上の他のユーザと共有する1つ以上のサービスに関連付けられた1つ以上のパスワードを決定する。その後、第1のクライアント・デバイス300aは、第1のクライアント・デバイス300a上にフォルダを生成する動作306を実行する。説明すると、第1のクライアント・デバイス300aは、パスワードの選択された集合を、第1のクライアント・デバイス300aのローカル・ストレージ上に、又はパスワードの集合がサーバ104上にどのように記憶されるかを示す仮想ストレージ(例えば、一時ストレージ)内に記憶するためのフォルダを生成する。したがって、第1のクライアント・デバイス300aは、生成されたフォルダ内にパスワードの集合を記憶するために、任意の数のサブフォルダを有するフォルダ階層をセットアップしうる。
【0058】
図3Aにさらに説明されるように、第1のクライアント・デバイス300aは、1つ以上の追加のクライアント・デバイスとフォルダを共有する動作308を実行する。1つ以上の実施形態において、第1のクライアント・デバイス300aは、パスワード共有システム102を含むコンテンツ管理システム(例えば、
図1のコンテンツ管理システム110)のアカウントに関連付けられる。アカウントのユーザは、第1のクライアント・デバイス300aにおいて第1のクライアント・アプリケーション302a内のアカウントにログインし、その後、サーバ104からのデジタル・コンテンツにアクセスし、サーバ104上にデジタル・コンテンツを記憶し、及び/又はサーバ104を介して1つ以上の他のアカウントとデジタル・コンテンツを共有することを第1のクライアント・デバイス300aに行わせうる。例えば、第1のクライアント・デバイス300aは、1つ以上の他のアカウントに関連付けられた1つ以上の追加のクライアント・デバイス(例えば、追加のアカウントに関連付けられた第2のクライアント・デバイス300b)とフォルダを共有するために、1つ以上の他のアカウントのインジケーションをパスワード共有システム102へ送信しうる。
【0059】
1つ以上の実施形態において、パスワード共有システム102は、パスワード共有システム102に様々な動作を実行させるためにクライアント・デバイスがパスワード共有システム102へコマンドを送信するためのアプリケーション・プログラミング・インタフェース(「API」)を提供する。例えば、パスワード共有システム102は、クライアント・デバイスとサーバ104との間でデータ(例えば、パスワード)を同期するためのAPIを提供する。説明すると、データを同期するためのAPIは、様々な動作(例えば、リスト化、ダウンロード、アップロード動作)に関連付けられた機能を実行するための複数のAPIコールを含みうる。したがって、1つ以上の実施形態において、第1のクライアント・デバイス300aは、「フォルダ共有」APIコールをパスワード共有システム102に発行することによって、パスワード共有システム102を介してフォルダを共有する。
【0060】
図3Aにさらに説明されるように、第1のクライアント・デバイス300aがフォルダを共有した後、パスワード共有システム102は、第1のクライアント・デバイス300aがフォルダを共有したことに応じて、フォルダ識別子(「ID」)を第1のクライアント・デバイス300aへ送信する動作310を実行する。例えば、パスワード共有システム102は、第1のクライアント・デバイス300a上のフォルダの構造をミラーリングするフォルダをサーバ104上に生成しうる。具体的に、サーバ104で生成されたフォルダは、フォルダに記憶するための第1のクライアント・デバイス300aからのコンテンツを受信するためのプレースホルダとして機能する空のフォルダでありうる。これに代えて、パスワード共有システム102は、新たなフォルダ構造(例えば、第1のクライアント・デバイス300aのローカル・ストレージ上に存在しないフォルダ構造)を生成するためのウェブ・インタフェースを介した要求に応じて、サーバ104上にフォルダを生成する。その後、パスワード共有システム102は、サーバ104上の生成されたフォルダ(例えば、ルート・フォルダ)に対応するフォルダIDを決定し、フォルダID(例えば、「share_folder_ID:1」)を第1のクライアント・デバイス300aに返しうる。
【0061】
図3Aにさらに説明されるように、パスワード共有システム102がサーバ104において共有フォルダを生成したことを示すフォルダIDを受信したことに応じて、第1のクライアント・デバイス300aは、パスワード共有システム102に公開鍵を要求する動作312を実行する。例えば、第1のクライアント・デバイス300aは、フォルダのコンテンツをパスワード共有システム102にアップロードする準備のために使用する1つ以上の公開鍵を提供することの要求(例えば、「公開鍵取得」APIコール)をパスワード共有システム102へ送信しうる。
【0062】
1つ以上の実施形態において、第1のクライアント・デバイス300aからの公開鍵の要求に応じて、パスワード共有システム102は、共有フォルダへのメンバーシップ・アクセス権を有する1つ以上の追加のクライアント・デバイスを識別しうる。例えば、パスワード共有システム102は、フォルダへのメンバーシップ・アクセス権を有する1つ以上のアカウントを示すフォルダの共有メンバーシップを維持しうる。さらに、パスワード共有システム102は、フォルダへのメンバーシップ・アクセス権を有する1つ以上のアカウントに関連付けられた(例えば、登録された)1つ以上のクライアント・デバイスを決定することによって、1つ以上の追加のクライアント・デバイスを識別しうる。
【0063】
図3Aにさらに説明されるように、パスワード共有システム102は、オプションで、公開鍵を第1のクライアント・デバイス300aに返さない動作314を実行する。特に、パスワード共有システム102は、フォルダ内に共有メンバーシップを有する追加のアカウントがない(すなわち、フォルダの所有者アカウントが他のアカウントとフォルダを共有していない)と判定しうる。パスワード共有システム102は、フォルダ内の共有メンバーシップに関連付けられた追加のアカウントをフォルダが有していないことに基づいて、フォルダがいかなる公開暗号鍵にも関連付けられていないと判定しうる。したがって、このような場合に、パスワード共有システム102は、フォルダについての共有メンバーシップに追加のクライアント・デバイスが関連付けられていないことに基づいて、パスワード共有システム102がフォルダのための公開暗号鍵を有していないことを示すために、第1のクライアント・デバイス300aへメッセージ又は信号を送信しうる。
【0064】
図3Aにまた説明されるように、第1のクライアント・デバイス300aは、オプションで、フォルダにメンバーを追加する動作316を実行する。具体的に、第1のクライアント・デバイス300aは、第1のクライアント・アプリケーション302aを介した1以上のユーザをフォルダに追加するためのユーザ入力に応じて、フォルダに関連付けられた共有メンバーシップに1つ以上のアカウントを追加しうる。その後、第1のクライアント・デバイス300aは、1つ以上のアカウント識別子、ユーザ識別子、又は追加されたメンバーに関連付けられたデバイス固有識別子をパスワード共有システム102に提供することによって、追加されたメンバーのインジケーション(例えば、「メンバー追加」APIコール)をパスワード共有システム102へ送信する。
図3Aはメンバーをフォルダに追加するための単一の動作を説明するが、第1のクライアント・デバイス300aは、(例えば、以前に生成された/既存の共有フォルダにメンバーを追加するために、)共有フォルダを最初に生成した後の任意の時刻にフォルダにメンバーを追加しうる。
【0065】
図3Aにさらに説明されるように、パスワード共有システム102は、第2のクライアント・デバイス300bに関連付けられた公開鍵を取得する動作318を実行する。例えば、パスワード共有システム102は、第2のクライアント・デバイス300bがコンテンツ管理システム110のユーザのアカウントに関連付けられていると判定する。1つ以上の実施形態において、パスワード共有システム102は、フォルダの共有メンバーシップに従ってフォルダへのメンバーシップ・アクセス権をアカウントが有することに基づいて、第2のクライアント・デバイス300bに関連付けられた公開暗号鍵を取得する。いくつかの場合に、パスワード共有システム102は、パスワード共有システム102への第2のクライアント・デバイス300bの登録の際に、第2のクライアント・デバイス300bから公開暗号鍵を以前に受信した。これに代えて、パスワード共有システム102は、第2のクライアント・デバイス300bがパスワード共有システム102に登録された後の任意の時刻に(例えば、共有フォルダの共有メンバーシップにユーザのアカウントを追加したときに)公開暗号鍵を取得しうる。
【0066】
上述のように、第1のクライアント・デバイス300aは、フォルダを共有した後、共有メンバーシップをパスワード共有システム102に提供しうる。このようなメンバーシップは共有又は拡張され得るが、1つ以上の実施形態において、パスワード共有システム102は、(例えば、共有フォルダが同じ共有メンバーシップを有する1つ以上の既存の共有フォルダに関連付けられていることに基づいて)第2のクライアント・デバイス300bを識別するために、以前の既存の共有メンバーシップにアクセスする。
【0067】
図3Aにさらに説明されるように、第2のクライアント・デバイス300bは、公開鍵をパスワード共有システム102へ送信する動作320を実行する。1つ以上の実施形態において、第2のクライアント・デバイス300bは、第2のクライアント・デバイス300bに関連付けられた公開‐秘密鍵ペアに対応する公開暗号鍵を取得する。例えば、第2のクライアント・デバイス300bは、パスワード共有システム102に登録する場合に公開‐秘密鍵ペアを生成するか又は既存の公開‐秘密鍵ペアにアクセスし、第2のクライアント・デバイス300b上に秘密暗号鍵を保持しながら、登録の際に公開暗号鍵をパスワード共有システム102へ送信しうる。
【0068】
図3Aにさらに説明されるように、公開鍵を受信した後、パスワード共有システム102は、公開鍵を第1のクライアント・デバイス300aへ送信する動作320bを実行する。例えば、パスワード共有システム102は、第2のクライアント・デバイス300bから読み出された公開暗号鍵を含む公開鍵集合を決定する。1つ以上の実施形態において、パスワード共有システム102はまた、フォルダへのメンバーシップ・アクセス権を有する1つ以上の追加のクライアント・デバイスから1つ以上の追加の公開暗号鍵を読み出す。パスワード共有システム102は、第2のクライアント・デバイス300bからの公開暗号鍵とともに公開鍵集合内に1つ以上の追加の公開暗号鍵を含めうる。その後、パスワード共有システム102は、公開鍵集合を第1のクライアント・デバイス300aへ送信する。
【0069】
図3Bに説明されるように、第1のクライアント・デバイス300aはまた、共有鍵でパスワードの集合を暗号化する動作322を実行する。1つ以上の実施形態において、第1のクライアント・デバイス300aは、フォルダに関連付けられたペイロードを暗号化するための共有暗号鍵を生成する。その後、第1のクライアント・デバイス300aは、共有暗号鍵を利用してペイロード(例えば、フォルダの階層に従うパスワードの集合)を暗号化し、暗号化ペイロード(例えば、共有暗号鍵を使用せずにアクセス不可能なペイロード)をもたらす。いくつかの実施形態において、第1のクライアント・デバイス300aは、パスワード共有システム102から公開鍵集合を受信する前にペイロードを暗号化する。代替の実施形態において、第1のクライアント・デバイス300aは、パスワード共有システム102から公開鍵集合を受信した後にペイロードを暗号化する。
【0070】
図3Bにさらに説明されるように、第1のクライアント・デバイス300aは、公開鍵集合で共有鍵を暗号化する動作324を実行する。特に、共有暗号鍵を利用してペイロードを暗号化した後、第1のクライアント・デバイス300aは、その後、共有暗号鍵を暗号化するために公開鍵集合を利用する。例えば、第1のクライアント・デバイス300aは、第2のクライアント・デバイス300bに関連付けられた公開暗号鍵を利用することによって、共有暗号鍵の暗号化バージョンを生成する。これに加えて、第1のクライアント・デバイス300aは、公開鍵集合に含まれる1つ以上の追加の公開暗号鍵を利用することによって、共有暗号鍵の別個の暗号化バージョンを生成しうる。
【0071】
公開鍵集合で共有暗号鍵を暗号化した後、第1のクライアント・デバイス300aは、パスワードの暗号化集合及び暗号化共有鍵をパスワード共有システム102へ送信する動作326を実行する。具体的に、フォルダに関連付けられたペイロードを暗号化するために第1のクライアント・デバイス300aが利用した共有暗号鍵を暗号化した後、第1のクライアント・デバイス300aは、フォルダ内に記憶するために、ペイロードと、共有暗号鍵の暗号化バージョンとをパスワード共有システム102へ送信する。例えば、第1のクライアント・デバイス300aは、フォルダIDを利用してフォルダに対応するサーバ104上の位置に暗号化ペイロード及び暗号化共有暗号鍵をアップロードする。その後、パスワード共有システム102は、暗号化ペイロード及び暗号化共有暗号鍵をフォルダ内に記憶しうる。
【0072】
図3Bにさらに説明されるように、パスワード共有システム102がパスワードの暗号化集合及び暗号化共有暗号鍵を受信する際に、第2のクライアント・デバイス300bは、パスワード共有システム102にフォルダを要求する動作328を実行する。1つ以上の実施形態において、第1のクライアント・デバイス300aがフォルダのコンテンツをパスワード共有システム102にアップロードした後、フォルダへの現在のメンバーシップ・アクセス権を有する任意のクライアント・デバイスがフォルダへのアクセスを要求しうる。よって、第2のクライアント・デバイス300bは、第2のクライアント・デバイス300bにフォルダのコンテンツを提供することの要求(例えば、共有フォルダ内のパスワードに対する最新の変更をリスト化する「フォルダ・リスト化」APIコール)をパスワード共有システム102へ送信しうる。1つ以上の実施形態において、「フォルダ・リスト化」APIコールは、第2のクライアント・デバイス300bがアクセス権を有するすべての共有フォルダのスナップショットを返す。
【0073】
いくつかの場合に、
図3Bに説明されるように、パスワード共有システム102は、オプションで、デバイスを検証する動作330を実行する。例えば、フォルダに対する要求が未検証である(例えば、フォルダに対する要求は、パスワード共有システム102に対して第2のクライアント・デバイス300bによって行われた第1の要求である)と判定したことに応じて、パスワード共有システム102は、第2のクライアント・デバイス300bのアイデンティティを検証しうる。説明すると、パスワード共有システム102は、第2のクライアント・デバイス300bについてのデバイス固有識別子(例えば、第2のクライアント・アプリケーション302bの特定のインスタンスを示す識別子)を取得し、デバイス識別子が、フォルダへのメンバーシップ・アクセス権を有する登録されたアカウントに関連付けられていることを検証しうる。これに代えて、パスワード共有システム102は、第2のクライアント・デバイス300bのアカウントに関連付けられた電子メール識別情報を介して、第2のクライアント・デバイス300bの識別子を検証しうる。1つ以上の追加の実施形態において、パスワード共有システム102は、第2のクライアント・デバイス300bが既存のアカウントに関連付けられていないと判定し、その後、第2のクライアント・デバイス300bに関連付けられたユーザに、検証のためのアカウントを確立することを要求しうる。
【0074】
第2のクライアント・デバイス300bからフォルダのコンテンツの要求を受信した後にパスワード共有システム102がデバイスを検証するかどうかにかかわらず、パスワード共有システム102は、第1のクライアント・デバイス300aから受信されたパスワードの暗号化集合及び暗号化共有鍵を第2のクライアント・デバイス300bへ送信する動作332を実行する。1つ以上の実施形態において、フォルダに対する第2のクライアント・デバイス300bによる要求(例えば、「ダウンロード」APIコール)に応じて、パスワード共有システム102は、フォルダに関連付けられた(暗号化された)ペイロードを決定し、その後、ペイロードを第2のクライアント・デバイス300bへ送信する。これに加えて、パスワード共有システム102は、フォルダ内に記憶された暗号化共有暗号鍵をペイロードとともに(例えば、暗号化共有暗号鍵を含む共有フォルダのコンテンツにアクセスすることなく)第2のクライアント・デバイス300bへ送信する。
【0075】
図3Bにさらに説明されるように、第2のクライアント・デバイス300bは、暗号化共有鍵を復号する動作334を実行する。具体的に、第2のクライアント・デバイス300bは、フォルダについてパスワード共有システム102から暗号化ペイロード及び暗号化共有暗号鍵を受信した後、共有暗号鍵を復号するために秘密暗号鍵を利用する。より具体的に、第2のクライアント・デバイス300bは、共有暗号鍵を復号するために、パスワード共有システム102が第2のクライアント・デバイス300bから以前に読み出した公開暗号鍵に関連付けられた公開‐秘密鍵ペアからの秘密暗号鍵を利用する。
【0076】
図3Bに最後に示されるように、第2のクライアント・デバイス300bは、パスワードの集合を復号する動作336を実行する。例えば、第2のクライアント・デバイス300bは、共有暗号鍵を復号した後、パスワード共有システム102から受信された暗号化ペイロードを復号するために、共有暗号鍵を利用する。これにより、第2のクライアント・デバイス300bは、第1のクライアント・デバイス300aによって共有されたフォルダのコンテンツを復号する。その後、第2のクライアント・デバイス300bは、パスワードの集合から1つ以上のパスワードにアクセスするために、フォルダのコンテンツにアクセスしうる。
【0077】
1つ以上の実施形態において、前述したように、パスワード共有システム102は、第2のクライアント・デバイス300bのアクセスを制限するために、様々なアクセス・パーミッションを利用する。例えば、パスワード共有システム102は、第2のクライアント・デバイス300bが対応するサブフォルダを読み出し及び/又は書き込みすることを可能にするために、アクセス制御レベルをフォルダ内の1つ以上のサブフォルダに割り当てうる。これに加えて、パスワード共有システム102は、フォルダ内の1つ以上の他のサブフォルダへの第2のクライアント・デバイス300bへのアクセスを制限するために、アクセス・パーミッションを利用しうる。よって、第2のクライアント・デバイス300bがフォルダのペイロードを復号した後、パスワード共有システム102は、確立されたアクセス制御に従って、パスワードの集合の1つ以上のパスワードへの第2のクライアント・デバイス300bへの異なるレベルのアクセスを許可又は制限するために、アクセス・パーミッションを利用しうる。
【0078】
前述したように、パスワード共有システム102は、パスワードの集合を含む共有フォルダにアクセスすることに関連付けられた様々な動作を実行するためにクライアント・デバイスがアクセスしうるAPIを提供しうる。1つ以上の実施形態において、APIは、リスト化(例えば、「フォルダ・リスト化」及び「ロングポール」)、ダウンロード、及びアップロード動作を含む。パスワード共有システム102は、共有パスワードの集合に関連付けられた共有メンバーシップを変更する場合に、パスワード名前空間(例えば、アンマウントされた空間)についてAPIを利用するために、追加のコールを含めるように既存のAPIを変更しうる。さらに、パスワード共有システム102は、アカウントのパスワード名前空間内の識別子値を変更でき、よって、新たなエントリが存在することなく、新たなエントリを効果的にコミットする。例えば、パスワード共有システム102は、共有フォルダ内のパスワードの集合への変更及び/又は共有フォルダとの検証のための共有状態への変更を返す(例えば、「フォルダ・リスト化」、「フォルダ・リスト化継続」)か、最新のカーソルを取得する(例えば、「最新カーソル取得」)か、又は共有フォルダに対する既存のロングポールを取得する(例えば、「ロングポール」)ためのAPIコールの集合を含めうる。
【0079】
これに加えて、1つ以上の実施形態において、パスワード共有システム102は、APIとの相互作用を、ユーザ・クライアント・デバイス上の1つ以上の特定のクライアント・アプリケーションに制限する。例えば、パスワード共有システム102にアクセスするクライアント・アプリケーションは、複数の異なるサービスに関連付けられた複数のパスワード又はクレデンシャルに単一のアプリケーション内でアクセスするためのパスワード記憶アプリケーションを含みうる。いくつかの例において、パスワード・アプリケーションは、他のクライアント・アプリケーション内のクレデンシャル・フィールドを自動的に入力するために、他のクライアント・アプリケーション(例えば、ウェブ・ブラウザ)と相互作用しうる。したがって、パスワード共有システム102は、非承認クライアント・アプリケーションへのAPIアクセスをブロックすることによって、改善されたセキュリティを提供しうる。
【0080】
上述の鍵交換に加えて、1つ以上の追加の実施形態において、パスワード共有システム102は、パスワードを含む共有フォルダのための鍵交換に関連して、鍵転送の意図及び鍵転送の結果を持続させるためのプロトコルを利用する。特に、共有フォルダへのアクセス権を有する1つ以上のデバイスが、常に利用可能であるとは限らない場合がある。よって、通知のみに基づいて鍵を転送することは、信頼性がない場合がある。このような欠点を克服するために、パスワード共有システム102は、クライアント・デバイスへ公開暗号鍵を送信する動作に関連して、サーバ104上に鍵転送の意図を維持する。クライアント・デバイスが「フォルダ・リスト化」コールを発行する場合に、パスワード共有システム102は、パスワード名前空間上の共有フォルダについての共有暗号鍵に対する保留中の鍵要求の個数を問い合わせうる。その後、パスワード共有システム102は、クライアント・デバイスの共有状態の一部として、公開暗号鍵を渡す。さらに、鍵転送の結果は、クライアント・デバイスから受信されたペイロードにおいて具現化する。
【0081】
前述したように、パスワード共有システム102は、複数のクライアント・デバイス間でパスワードを共有することに関連して鍵をローテーションしうる。
図4A~
図4Bは、第1のクライアント・デバイス400a及び第2のクライアント・デバイス400bを伴う、サーバ104上のパスワード共有システム102が共有フォルダに関連付けられた共有暗号鍵をローテーションするためのフローチャートを示す。とりわけ、共有暗号鍵のローテーションを容易にするために、第1のクライアント・デバイス400aは第1のクライアント・アプリケーション402aを含み、第2のクライアント・デバイス400bは第2のクライアント・アプリケーション402bを含む。
【0082】
図4Aに説明されるように、第1のクライアント・デバイス400aは、パスワード共有システム102へ共有フォルダを送信する動作404を実行する。1つ以上の実施形態において、初期クライアント・デバイス(例えば、第1のクライアント・デバイス400a)は、1つ以上の他のクライアント・デバイスと共有するための共有フォルダを生成する。例えば、共有フォルダは、共有フォルダへのアクセス権を有する1つ以上のアカウントを示す共有メンバーシップに関連付けられうる。パスワード共有システム102は、共有フォルダへのアクセス権を有するアカウントに関連付けられたクライアント・デバイス(例えば、第2のクライアント・デバイス300b)を決定しうる。
図3A~
図3Bに関して上述したように、パスワード共有システム102は、共有フォルダに関連してクライアント・デバイスから暗号化ペイロード及び暗号化共有暗号鍵を受信する。
【0083】
図4Aにさらに説明されるように、パスワード共有システム102は、共有鍵バージョンを決定する動作406を実行する。1つ以上の実施形態において、パスワード共有システム102は、共有フォルダに関連付けられた共有暗号鍵のためのバージョン番号を記憶する。例えば、フォルダを共有/作成することの第1の要求に応じて、パスワード共有システム102は、共有暗号鍵が第1のバージョンであることを示す識別子(例えば、「key_version=1」)を記憶しうる。さらに、共有暗号鍵が以前に更新/ローテーションされているならば、バージョン番号は、共有暗号鍵の現在のバージョンを反映する。
【0084】
パスワード共有システム102は、共有鍵バージョンを決定した後、共有鍵バージョンを第1のクライアント・デバイス400a及び第2のクライアント・デバイス400bへ送信する動作408a~408bを実行する。具体的に、共有暗号鍵に関連付けられた共有フォルダをパスワード共有システム102が生成した後、パスワード共有システム102は、共有フォルダへのメンバーシップ・アクセス権を有するクライアント・デバイスへ共有暗号鍵のバージョン番号を送信しうる。例えば、パスワード共有システム102は、クライアント・デバイスが個々のクライアント・デバイス間の同期精度及びサーバ104上の記憶されたバージョンをチェックすることを可能にするために、共有暗号鍵のバージョン番号をクライアント・デバイスへ送信する。
【0085】
上述したように、共有暗号鍵をローテーションするために、様々な鍵ローテーション・イベントがパスワード共有システム102をトリガしうる。
図4Aに説明されるように、パスワード共有システム102は、鍵ローテーション・イベントを検出する動作410を実行する。例えば、パスワード共有システム102は、古い鍵が共有フォルダのペイロードを復号できないように共有暗号鍵がローテーションされるべきであることを示すイベントを検出しうる。
【0086】
鍵ローテーション・イベントを説明するために、前述したように、パスワード共有システム102は、(例えば、1以上のユーザ・アカウント及び/又はクライアント・デバイスへのアクセス権を除去することによって)共有フォルダに関連付けられた共有メンバーシップが変化したことを検出しうる。別の例において、パスワード共有システム102は、共有暗号鍵をローテーションすることの要求(例えば、共有フォルダの所有者のクライアント・デバイスからの要求、又は共有暗号鍵が破損又は損なわれていることを示すクライアント・デバイスによる要求)を受信しうる。これに代えて、パスワード共有システム102は、現在の共有暗号鍵に関連付けられた時間閾値に達したことを検出しうる。1つ以上の追加の実施形態において、パスワード共有システム102のみが鍵ローテーション・イベントを検出でき、その結果、パスワード共有システム102は、1つ以上のクライアント・デバイスにおいて鍵ローテーション動作を開始できる唯一のソースとなる。
【0087】
図4Aにさらに説明されるように、パスワード共有システム102は、共有鍵バージョンを増分する動作412を実行する。特に、パスワード共有システム102は、共有フォルダに関連付けられた共有暗号鍵について記憶されたバージョン番号を増分する。説明すると、鍵ローテーション・イベントの検出に応じて、パスワード共有システム102は、バージョン番号を「key_version=1」から「key_version=2」に増分する。その後、パスワード共有システムは、共有フォルダに関連して新たなバージョン番号を記憶し、共有フォルダへのメンバーシップ・アクセス権を有するクライアント・デバイスに通知する。1つ以上の実施形態において、パスワード共有システム102は、バージョン番号を単調に増分する。
【0088】
1つ以上の追加の実施形態において、パスワード共有システム102は、以下の式、すなわちKnew=max(Kold+1,Now().milliseconds)に従ってバージョン番号を増分し、この式において、Kは共有暗号鍵を表す。特に、パスワード共有システム102は、1だけ増分された古い/以前の鍵バージョン番号の値(例えば、「Kold+1」)を、パスワード共有システム102が読み出す現在時刻値(例えば、「Now().milliseconds)」)と比較しうる。その後、パスワード共有システム102は、2つの値の最大値を選択し、新たな鍵バージョン番号Knewを最大値として設定しうる。
【0089】
図4Aにさらに説明されるように、パスワード共有システム102は、ローテーションされた鍵バージョンを第1のクライアント・デバイス400a及び第2のクライアント・デバイス400bへ送信する動作414a~414bを実行する。具体的に、パスワード共有システム102は、共有暗号鍵についての更新されたバージョン番号を、共有フォルダへのメンバーシップ・アクセス権を有するクライアント・デバイスのそれぞれへ送信する。例えば、共有暗号鍵のバージョン番号を「key_version=1」から「key_version=2」に増分することに応じて、パスワード共有システム102は、共有フォルダへの現在のメンバーシップ・アクセス権を有するすべてのクライアント・デバイスへ「key_version=2」を送信する。1つ以上の実施形態において、パスワード共有システム102は、(例えば、鍵ローテーション・イベントをクライアント・デバイスに通知したことに基づいて)クライアント・デバイスから「フォルダ・リスト化」要求を受信したことに応じて、ローテーションされたバージョン番号をクライアント・デバイスへ送信する。更新されたバージョン番号をクライアント・デバイスへ送信することによって、パスワード共有システム102は、新たな共有暗号鍵を生成し、共有フォルダのための新たなペイロードをコミットするために、クライアント・デバイス間で競争を開始しうる。
【0090】
図4Aに説明されるように、新たな共有暗号鍵を生成するプロセスの一部として、第1のクライアント・デバイス400a及び第2のクライアント・デバイス400bは、パスワード共有システム102に公開鍵を要求する動作416a~416bを実行する。1つ以上の実施形態において、パスワード共有システム102から共有暗号鍵のローテーションされたバージョン番号を受信したことに応じて、各クライアント・デバイスは、対応するクライアント・デバイスに記憶されたバージョン番号に対するバージョン番号のチェックを実行する。バージョン番号が一致しないとの判定に基づいて、クライアント・デバイスは、パスワード共有システム102に更新された公開鍵集合を要求することによって、共有暗号鍵をローテーションするためのプロセスを開始する。
【0091】
図4Aにさらに説明されるように、パスワード共有システム102は、公開鍵を第1のクライアント・デバイス400a及び第2のクライアント・デバイス400bへ送信する動作418a~418bを実行する。例えば、パスワード共有システム102は、共有フォルダへの現在のメンバーシップ・アクセス権を有するクライアント・デバイスについての公開暗号鍵を含む更新された公開鍵集合を読み出す。説明すると、パスワード共有システム102は、共有フォルダにアクセス権を有する1つ以上のアカウント及び/又は1つ以上のクライアント・デバイスを識別するために、共有フォルダに関連付けられた共有メンバーシップにアクセスする。その後、パスワード共有システム102は、識別されたクライアント・デバイスのそれぞれに公開暗号鍵を要求し、読み出された公開暗号鍵のみを含む更新された公開鍵集合を生成する。現在の共有メンバーシップに基づいて公開鍵集合を更新することによって、パスワード共有システム102は、共有フォルダへの現在のメンバーシップ・アクセス権をもはや有していないクライアント・デバイスについての公開暗号鍵を除外する。その後、パスワード共有システム102は、更新された公開鍵集合を、識別されたクライアント・デバイス(例えば、第1のクライアント・デバイス400a及び第2のクライアント・デバイス400b)のそれぞれへ送信する。
【0092】
ローテーションされた鍵バージョンをクライアント・デバイスに提供し、対応する要求に応じて公開鍵をさらへ送信することによって、パスワード共有システム102は、クライアント・デバイスに、新たな共有暗号鍵を生成するための競争を開始させ、共有フォルダのための新たなペイロードをコミットさせる。したがって、各クライアント・デバイスは、新たな共有暗号鍵を生成するために複数の動作を実行し、その後、共有フォルダのための新たなペイロードをコミットしようと試みる。
図4A~
図4Bは新たな共有暗号鍵を生成し共有フォルダのための新たなペイロードをコミットすることに関連する動作を単一のクライアント・デバイス(例えば、第2のクライアント・デバイス400b)が実行することを示すが、共有フォルダへのメンバーシップ・アクセス権を有するクライアント・デバイスのそれぞれがまた、以下に記載される動作を実行しうる。
【0093】
図4Aにさらに説明されるように、例えば、第2のクライアント・デバイス400bは、変更された共有鍵でペイロードを暗号化する動作420を実行する。特に、第2のクライアント・デバイス400bは、(例えば、新たな共有暗号鍵を生成することによって)変更された共有暗号鍵を生成する。その後、第2のクライアント・デバイス400bは、共有フォルダのコンテンツを再暗号化するために、変更された共有暗号鍵を利用しうる。例えば、共有フォルダ内のパスワードの集合が第2のクライアント・デバイス400bにおいて現在暗号化されているならば、第2のクライアント・デバイス400bは、第2のクライアント・デバイス400bに関連付けられた秘密暗号鍵を利用してパスワードの集合を復号しうる。その後、第2のクライアント・デバイス400bは、変更された共有暗号鍵を利用してパスワードの集合を再暗号化しうる。
【0094】
1つ以上の追加の実施形態において、第2のクライアント・デバイス400bは、パスワードの集合を復号した後、パスワードの集合を変更する。例えば、第2のクライアント・デバイス400bは、パスワードの集合に記憶されたパスワードを(例えば、サービスでパスワードを変更することに基づいて)変更すること、新たなパスワードをパスワードの集合に追加すること、又はパスワードの集合から1つ以上のパスワードを削除することができる。よって、第2のクライアント・デバイス400bは、(例えば、第2のクライアント・デバイス400bに与えられたパーミッションに基づいて)既存のパスワードを変更するか又は新たなパスワードを追加することによって、パスワードの集合を変更しうる。その後、第2のクライアント・デバイス400bは、変更された共有暗号鍵を利用して、パスワードの更新された集合を暗号化しうる。したがって、更新された暗号化ペイロードは、パスワードの変更された又は新たな集合を含みうる。
【0095】
図4Bに説明されるように、第2のクライアント・デバイス400bは、変更された共有鍵を公開鍵で暗号化する動作422を実行する。具体的に、第2のクライアント・デバイス400bは、変更された共有暗号鍵を暗号化するために、パスワード共有システム102から受信された更新された公開鍵集合を利用する。例えば、第2のクライアント・デバイス400bは、変更された共有暗号鍵の複数の暗号化バージョンを生成するために、共有フォルダへの現在のメンバーシップ・アクセス権を有する各クライアント・デバイスに関連付けられた各公開暗号鍵を利用する。
【0096】
図4Bにさらに説明されるように、第2のクライアント・デバイス400bは、更新された暗号化ペイロード及び暗号化された変更された共有鍵をパスワード共有システム102へ送信する動作424を実行する。例えば、第2のクライアント・デバイス400bは、サーバ104における共有フォルダ内に記憶するために、変更された共有暗号鍵の複数の暗号化バージョンとともに、更新された暗号化ペイロードを送信する。1つ以上の実施形態において、第2のクライアント・デバイス400bはまた、更新された暗号化ペイロード及び暗号化された変更された共有暗号鍵に関連する共有鍵のバージョン番号を示す。
【0097】
更新された暗号化ペイロードを受信した後、パスワード共有システム102は、競合が存在するかどうかを判定する動作426を実行する。具体的に、パスワード共有システム102は、第2のクライアント・デバイス400bから受信されたデータが、共有フォルダに記憶されたペイロードと競合するかどうかを判定しうる。例えば、パスワード共有システム102は、受信されたデータに関連する共有暗号鍵のバージョン番号が、共有フォルダに関連して記憶されたバージョン番号と一致することを利用しうる。バージョン番号が一致するならば、パスワード共有システム102は、データが有効であると判定する。これに代えて、バージョン番号が一致しないならば、パスワード共有システム102は、競合が存在し、データが有効でないと判定する。以下でさらに説明されるように、共有暗号鍵のバージョンが、変更された(又はローテーションされた)共有暗号鍵と競合すると判定することに基づいて、パスワード共有システム102は、共有暗号鍵のバージョンを拒否する。
【0098】
図4Bに説明されるように、パスワード共有システム102は、共有フォルダについてのイニシエータを決定する動作428を実行する。1つ以上の実施形態において、第2のクライアント・デバイス200bから受信されたデータが有効であると判定したことに応じて、パスワード共有システム102は、第2のクライアント・デバイス200bがイニシエータ・デバイスであると確立しうる。本書で使用されるように、「イニシエータ・デバイス」という用語は、新たな共有暗号鍵を生成し、ペイロードを共有フォルダにコミットすることによって、共有暗号鍵を首尾よくローテーションするコンピューティング・デバイスを指す。したがって、パスワード共有システム102は、受信されたデータ(例えば、更新された暗号化ペイロード及び暗号化された変更された共有暗号鍵)を共有フォルダにコミットする。1つ以上の実施形態において、パスワード共有システム102は、暗号化ペイロードに関連付けられたリビジョン番号を検証した(例えば、「rev3」が正しい)後にのみ、ペイロードをコミットする。
【0099】
さらに、パスワード共有システム102は、共有フォルダへのメンバーシップ・アクセス権を有する他のクライアント・デバイスがフォロワ・デバイスであると判定しうる。本書で使用されるように、「フォロワ・デバイス」という用語は、別のクライアント・デバイスによって生成された新たな共有暗号鍵を受信するコンピューティング・デバイスを指す。例えば、パスワード共有システム102は、パスワード共有システム102がすでに共有フォルダにペイロードをコミットした後に共有フォルダにペイロードをコミットしようとする任意の他のクライアント・デバイスがフォロワ・デバイスであると判定しうる。これに加えて、クライアント・デバイスからの更新された暗号化ペイロードの間に(例えば、共有暗号鍵の不一致バージョン番号に基づいて)競合が存在すると判定したことに応じて、パスワード共有システム102は、フォロワ・デバイスからのペイロードを拒否(例えば、中止)し、ペイロードが拒否されたことをフォロワ・デバイスに示しうる。いくつかの実施形態において、イニシエータ・デバイス及びフォロワ・デバイスは、各鍵ローテーション・イベントに対してコミットするための競争にどのクライアント・デバイスが勝利するかに依存して、1つの鍵ローテーション・イベントから別の鍵ローテーション・イベントに変更しうる。
【0100】
図4Bにさらに説明されるように、パスワード共有システム102は、更新された暗号化ペイロード及び暗号化された変更された共有鍵を第1のクライアント・デバイス400aへ送信する動作430を実行する。例えば、共有フォルダにアクセスすることの第1のクライアント・デバイス400aによる要求を(例えば、「フォルダ・リスト化」APIコールを介して)受信したことに応じて、パスワード共有システム102は、コミットされたペイロード(例えば、第2のクライアント・デバイス400bから受信された変更された共有暗号鍵とともに、更新された暗号化ペイロード)を第1のクライアント・デバイス400aへ送信しうる。パスワード共有システム102は、第2のクライアント・デバイス400bから受信されたデータを共有フォルダにコミットしたため、パスワード共有システム102が第1のクライアント・デバイス400aへ送信するデータは、再暗号化ペイロードと、共有暗号鍵のローテーションされたバージョン番号と一致するように暗号化された変更された共有暗号鍵とを含む。
【0101】
更新された暗号化ペイロードを受信した後、第1のクライアント・デバイス400aは、暗号化された変更された共有鍵を復号する動作432を実行する。具体的に、第1のクライアント・デバイス400aは、共有フォルダについてパスワード共有システム102から更新された暗号化ペイロードと暗号化された変更された共有暗号鍵とを受信した後、第2のクライアント・デバイス400bによって生成された変更された共有暗号鍵を復号するために、秘密暗号鍵を利用する。より具体的に、第1のクライアント・デバイス400aは、変更された共有暗号鍵を復号するために、パスワード共有システム102が第1のクライアント・デバイス400aから以前に読み出した、更新された公開鍵集合内の公開暗号鍵に関連付けられた公開‐秘密鍵ペアからの秘密暗号鍵を利用する。
【0102】
図4Bによって最後に説明されるように、第1のクライアント・デバイス400aは、ペイロードを復号する動作434を実行する。例えば、変更された共有暗号鍵を復号した後、第1のクライアント・デバイス400aは、パスワード共有システム102から受信された暗号化ペイロードを復号するために、変更された共有暗号鍵を利用する。これにより、第1のクライアント・デバイス400aは、第2のクライアント・デバイス400bによって暗号化された共有フォルダのコンテンツを復号する。その後、第1のクライアント・デバイス400aは、共有フォルダのコンテンツにアクセスしうる(例えば、共有フォルダに記憶された1つ以上のパスワードにアクセスしうる)。
【0103】
1つ以上の実施形態において、第1のクライアント・デバイス400aはまた、第1のクライアント・デバイス400aに記憶された共有暗号鍵のバージョン番号がペイロードとともに送信された共有暗号鍵のバージョン番号と一致することを検証する。例えば、第1のクライアント・デバイス400aは、記憶されたバージョン番号を受信されたバージョン番号と比較しうる。1つ以上の実施形態において、バージョン番号が一致しないならば、第1のクライアント・デバイス400aは、第1のクライアント・デバイス400aが共有フォルダのための最新のコンテンツを有することを保証するために、共有フォルダを同期することの新たな要求をパスワード共有システム102に発行する。
【0104】
図4A~
図4Bに関連して上述したように、パスワード共有システム102は、共有フォルダを暗号化するための共有暗号鍵の鍵ローテーションを提供する。1つ以上の実施形態において、クライアント・デバイスは、共有フォルダについてのメタデータの変更を取得するために、「フォルダ・リスト化」APIコールをパスワード共有システム102に最初に発行することによって、(例えば、パスワード共有システム102からの鍵ローテーション開始通知に応じて)鍵をローテーションする。メタデータは、共有暗号鍵についての現在の鍵バージョンK
Sを含みうる。クライアント・デバイスは、鍵バージョンK
Sを、クライアント・デバイスに記憶された鍵バージョンK
Cと比較することによって、共有暗号鍵をローテーションするための動作であるかどうかを判定しうる。例えば、1)クライアント・デバイスがK
S>K
Cと判定したならば、クライアント・デバイスは鍵ローテーションを開始し、2)クライアント・デバイスがK
S=K
Cと判定したならば、クライアント・デバイスは鍵バージョンが一致すると判定し、クライアント・デバイスはいつも通りに進み、3)クライアント・デバイスがK
S<K
Cと判定したならば、クライアント・デバイスは、次の「フォルダ・リスト化」コールまで待機する。これは、ペイロードがコミットされているが、ロングポールが戻されるようにトリガされていない可能性が場合に生じうる。したがって、クライアント・デバイスは、共有暗号鍵についての現在の鍵バージョンと、クライアント・デバイスに記憶された共有暗号鍵との間の比較に基づいて、どの動作を実行すべきかを決定する。
【0105】
鍵ローテーションを開始するとの判定に応じて、クライアント・デバイスは、共有フォルダの現在のメンバーについての公開鍵PK1、PK2、…、PKn、を取得するために、「公開鍵取得」APIコールを読み出しうる。クライアント・デバイスは、新たな共有暗号鍵(例えば、共有フォルダのための新たなフォルダ鍵)Kfolderを生成しうる。その後、クライアント・デバイスは、各メンバークライアント・デバイスの公開鍵でフォルダ鍵を暗号化しうる(DKn=ENC(Kprivate,Kfolder,PKn))。これに加えて、クライアント・デバイスは、フォルダ鍵をそれ自体の秘密暗号化された鍵集合にアップロードし、DK1、DK2、…、DKn及び(Kfolderで暗号化された)暗号化ペイロードを有するペイロードを共有フォルダにアップロードする。フォルダ鍵をアップロードするクライアント・デバイスは、イニシエータ・デバイスになる。競合に起因してアップロードが失敗したならば、パスワード共有システム102上にペイロードの新たなバージョンがすでに存在することを意味し、クライアント・デバイスは、「フォルダ・リスト化」コールを発行することに戻る。
【0106】
クライアント・デバイスがフォロワ・デバイスである(すなわち、鍵バージョンが一致する)と判定したことに応じて、このような判定は、1)既存の共有暗号鍵がペイロードを復号しうる、又は2)既存の鍵がペイロードを復号できず、鍵ローテーションがちょうど発生した、という2つのことのうちの1つを示しうる。第2の可能性に基づいて、クライアント・デバイスは、ペイロード内のそれ自体のデバイス一意識別子(例えば、クライアント・アプリケーションの特定のインスタンスを示す識別子)を見つけ、それを復号し、その後それを除去することを試みる。そうでなければ、クライアント・デバイスは、パスワード共有システム102に新たな鍵を要求するために、新たな「共有鍵要求」コールを発行する。
【0107】
上述のように、1つ以上の実施形態において、パスワード共有システム102は、ユーザが様々なクライアント・アプリケーションを介してアクセスするための共有パスワードを提供する。
図5A~
図5Bは、ユーザをサービスにログインするためのパスワードの集合にアクセスするためにクライアント・デバイス500を利用するためのグラフィカル・ユーザ・インタフェースを示す。例えば、
図5A~
図5Bは、クライアント・デバイス500上のクライアント・アプリケーション502内の1つ以上のサービスでアカウントにアクセスするためのクレデンシャルの自動投入要求のために、パスワード共有システム102がクライアント・デバイス500に共有パスワードへのアクセスを提供することを説明する。
【0108】
図5Aに説明されるように、クライアント・デバイス500は、クライアント・アプリケーション502のユーザ・インタフェースを含む。1つ以上の実施形態によれば、クライアント・アプリケーション502は、(実行時に)クライアント・デバイス500に、クライアント・デバイス500に関連付けられたユーザがアカウントを有するサービスに関連付けられたコンテンツを表示させる命令を含む。例えば、
図5Aに説明されるように、クライアント・デバイス500は、アカウントに関連付けられたログイン・クレデンシャルを使用してアカウントにユーザをログインするための、クライアント・アプリケーション502内のユーザ・インタフェースを提供する。説明すると、クライアント・アプリケーション502は、ソーシャル・ネットワーキング・アプリケーション又はバンキング・アプリケーションのような、サービスに関連付けられたアプリケーション(例えば、専有アプリケーション)を含みうる。これに代えて、クライアント・アプリケーション502は、複数の異なるサービスに関連付けられたウェブサイトを表示するウェブ・ブラウザを含みうる。
【0109】
図5Aに説明されるように、クライアント・デバイス500は、クライアント・アプリケーション502のユーザ・インタフェース内に、アカウントにログインするためのログイン・クレデンシャルを提供するためのインタラクティブ要素を表示する。例えば、ユーザ・インタフェースは、アカウントに関連付けられたユーザ名及びパスワードをそれぞれ入力するためのユーザ名フィールド504及びパスワード・フィールド506を含みうる。
図5Aはユーザ名フィールド504及びパスワード・フィールド506をクライアント・デバイス500が表示することを示すが、サービスは異なるログイン・クレデンシャル、又は個人識別番号、ユーザのフルネーム、アドレス、又はセキュリティ応答などであるがこれに限定されない他のセキュア情報を要求してもよい。
【0110】
1つ以上の実施形態において、パスワード共有システム102に関連付けられたクライアント・デバイス500は、クライアント・デバイス500がクレデンシャルを入力するための要素を(例えば、クライアント・アプリケーション502内に)表示したことを自動的に検出する。説明すると、パスワード共有システム102に関連付けられたクライアント・アプリケーションは、クレデンシャルを入力する機会を検出するために、クライアント・デバイス上でバックグラウンドで実行されうる。例えば、パスワード共有システム102に関連付けられたクライアント・アプリケーションは、クライアント・アプリケーション502のユーザ・インタフェースに関連付けられた表示情報又はメタデータ情報に基づいて、クレデンシャルを入力する機会を検出しうる。
【0111】
クライアント・デバイス500がクレデンシャルを入力するための要素を表示したことを検出したことに応じて、パスワード共有システム102は、(例えば、関連付けられたクライアント・アプリケーションを介して、)パスワード共有システム102に関連付けられたプロンプトを提供しうる。例えば、
図5Aに説明されるように、クライアント・デバイス500は、パスワード共有システム102からの情報にアクセスするためのパスワード・マネージャ・オーバーレイ508をクライアント・アプリケーション502内に表示する。説明すると、クライアント・デバイス500は、ユーザがプロンプトを容易に見つけられるように、検出されたフィールドの近く(例えば、ユーザ名フィールド504の下)にパスワード・マネージャ・オーバーレイ508を表示しうる。
【0112】
1つ以上の実施形態において、パスワード・マネージャ・オーバーレイ508は、クライアント・アプリケーション502内からパスワード共有システム102にアクセスするための選択可能要素であるか、又はこれを含む。具体的に、選択可能要素の選択に応じて、クライアント・デバイス500は、パスワード共有システム102でユーザのアカウントに関連付けられた情報を取得するために、パスワード共有システム102と通信しうる。より具体的に、クライアント・デバイス500は、ユーザからアクセス可能なパスワードの集合を含む共有フォルダにアクセスしうる。例えば、クライアント・デバイス500は、パスワード共有システム102に共有フォルダのためのペイロードを要求し、(例えば、クライアント・デバイス500に記憶された秘密暗号鍵を利用して)ペイロードとともに含まれる共有暗号鍵を復号し、共有暗号鍵を利用してペイロード(例えば、パスワードの集合)を復号しうる。1つ以上の代替の実施形態において、クライアント・デバイス500は、共有フォルダ内のパスワードにより迅速にアクセスするために、(例えば、パスワード共有システム102に共有フォルダのためのペイロードを定期的に要求することによって、)クライアント・デバイス500上の共有フォルダ内のパスワードの集合を維持しうる。
【0113】
図5Bに説明されるように、共有フォルダのコンテンツを復号しアクセスした後、クライアント・デバイス500は、共有パスワードに関連付けられたデータを表示する。例えば、示されるように、クライアント・デバイス500は、共有フォルダがパスワードを含む複数のアカウントを含むアカウント・オーバーレイ510を表示しうる。説明すると、ユーザのアカウントが複数のアカウントに関連付けられた複数のパスワードへのメンバーシップ・アクセス権を含むならば、クライアント・デバイス500は、アカウント・オーバーレイ510内に対応するアカウントを表示する。これに加えて、(例えば、共有フォルダ内の対応するサブフォルダに関連付けられた共有メンバーシップ又はアクセス制御レベルに基づいて)ユーザのアカウントがアクセスを許可されない1つ以上のパスワードを共有フォルダが含むならば、クライアント・デバイス500は、それらのパスワードに対応するアカウントを表示しない。
【0114】
1つ以上の実施形態において、アカウント・オーバーレイ510内に表示されたアカウントのうちの1つを選択するユーザ入力に応じて、クライアント・デバイス500は、選択されたアカウントに関連付けられたクレデンシャルを読み出す。例えば、ユーザがアカウント・オーバーレイ510を介して「アカウント1」に対応する要素を選択したならば、パスワード共有システム102に関連付けられたクライアント・デバイス500は、「アカウント1」に関連付けられたユーザ名及びパスワードを読み出す。その後、パスワード共有システム102に関連付けられたクライアント・アプリケーションは、ユーザ名フィールド504及びパスワード・フィールド506に、対応するユーザ名及びパスワードをそれぞれ自動入力する(例えば、自動的に投入する)。クライアント・デバイス500はまた、自動的に入力されたクレデンシャルに基づいてサービスにログインするためのログイン要素512を提示しうる。したがって、パスワード共有システム102は、クライアント・デバイス500上の他のクライアント・アプリケーション内の共有フォルダにオン・ザ・フライで記憶されたパスワード情報にアクセスし利用するためのツールを(例えば、パスワード共有システム102に関連付けられたクライアント・アプリケーションを介して)提供する。
【0115】
図6は、上述のパスワード共有システム102の実施形態の詳細な概略図を示す。示されるように、パスワード共有システム102は、コンピューティング・デバイス600(例えば、
図1に記載され、
図8に関連して以下でさらに説明されるクライアント・デバイス及び/又はサーバ)上のコンテンツ管理システム110において実装される。これに加えて、パスワード共有システム102は、パスワード・マネージャ602、共有フォルダ・マネージャ604、共有鍵マネージャ606、公開鍵マネージャ608、及びデータ・ストレージ・マネージャ610を含みうるが、これらに限定されない。1つ以上の実施形態において、パスワード共有システム102は、任意の数のコンピューティング・デバイス上で実装される。例えば、パスワード共有システム102は、デジタル・コンテンツを管理するためのサーバ・デバイスの分散システムにおいて実装されうる。パスワード共有システム102はまた、1つ以上の追加のシステム内に実装されうる。これに代えて、パスワード共有システム102は、クライアント・デバイス(例えば、ユーザ・クライアント・デバイス)上で少なくとも部分的に実装されうる。
【0116】
1つ以上の実施形態において、パスワード共有システム102の構成要素のそれぞれは、任意の適切な通信技術を使用して他の構成要素と通信する。これに加えて、パスワード共有システム102の構成要素は、ユーザの他のコンピューティング・デバイス、サーバ・デバイス(例えば、クラウド・ストレージ・デバイス)、ライセンス・サーバ、又は他のデバイス/システムを含む1つ以上の他のデバイスと通信しうる。パスワード共有システム102の構成要素は
図6では別個であるように示されているが、下位構成要素の任意のものは、単一の構成要素のような、より少ない構成要素に組み合わされてもよく、又は特定の実装の役割を果たし得るように、より多くの構成要素に分割されてもよいことが認識されよう。さらに、
図6の構成要素はパスワード共有システム102に関連して説明されるが、本書で説明されるパスワード共有システム102に関連して動作を実行するための構成要素の少なくともいくつかは、環境内の他のデバイス上で実装されてもよい。
【0117】
パスワード共有システム102の構成要素は、ソフトウェア、ハードウェア、又はその両方を含みうる。例えば、パスワード共有システム102の構成要素は、コンピュータ可読記憶媒体に記憶され、1つ以上のコンピューティング・デバイス(例えば、コンピューティング・デバイス600)のプロセッサによって実行可能な1つ以上の命令を含む。1つ以上のプロセッサによって実行される場合に、パスワード共有システム102のコンピュータ実行可能命令は、コンピューティング・デバイス600に、本書に記載される動作を実行させる。これに代えて、パスワード共有システム102の構成要素は、所定の機能又は機能のグループを実行するための専用処理デバイスなどのハードウェアを含む。これに加えて又はこれに代えて、パスワード共有システム102の構成要素は、コンピュータ実行可能命令とハードウェアとの組合せを含む。
【0118】
さらに、パスワード共有システム102に関して本書に記載される機能を実行するパスワード共有システム102の構成要素は例えば、スタンド・アロン・アプリケーションの一部として、アプリケーションのモジュールとして、アプリケーションのためのプラグインとして、他のアプリケーションによって呼び出されてもよいライブラリ機能(群)として、及び/又はクラウド・コンピューティング・モデルとして実装されてもよい。よって、パスワード共有システム102の構成要素の少なくともいくつかは、パーソナル・コンピューティング・デバイス又はモバイル・デバイス上のスタンド・アロン・アプリケーションの一部として実装されうる。これに代えて又はこれに加えて、パスワード共有システム102の構成要素は、デジタル・コンテンツ管理又はパスワード管理を提供する任意のアプリケーションにおいて実装されてもよい。
【0119】
上述のように、パスワード共有システム102は、パスワード・マネージャ602を含む。1つ以上の実施形態において、パスワード・マネージャ602は、ユーザの1つ以上のアカウントに関連付けられた1つ以上のパスワードを管理する。例えば、パスワード・マネージャ602は、ユーザの1つ以上のアカウントに関連付けられた1つ以上のサービスに1以上のユーザをログインするためのログイン・クレデンシャル又はセキュア情報を管理しうる。これに加えて、パスワード・マネージャ602は、ユーザのためのパスワード・パーミッションを行使することなどによって、パスワードの部分集合を管理しうる。
【0120】
パスワード共有システム102はまた、共有フォルダ・マネージャ604を含みうる。例えば、共有フォルダ・マネージャ604は、共有フォルダのフォルダ構造又は階層(例えば、ルート・フォルダ及び1つ以上のサブフォルダ)を管理しうる。これに加えて、共有フォルダ・マネージャ604はまた、共有フォルダ及び任意のサブフォルダのコンテンツを管理しうる。例えば、共有フォルダ・マネージャ604は、共有フォルダへのアクセス権を有する1つ以上のデバイス上の共有フォルダ内の(例えば、暗号化された又は暗号化されていない)データの位置を管理しうる。
【0121】
1つ以上の実施形態において、共有フォルダ・マネージャ604はまた、共有フォルダに関連付けられた共有メンバーシップを管理する。例えば、共有フォルダ・マネージャ604は、共有フォルダについての共有メンバーシップに基づいて、どのユーザ・アカウント及び/又はクライアント・デバイスが共有フォルダへのアクセス権を有するかを管理しうる。共有フォルダ・マネージャ604はまた、共有フォルダ及び共有フォルダ内の任意のサブフォルダへの(アクセス制御レベルを含む)アクセス・パーミッションを管理しうる。
【0122】
共有フォルダ・マネージャ604はまた、共有フォルダに関連するサーバ及び/又はクライアント・デバイスによるAPIコール及び動作を管理しうる。説明すると、共有フォルダ・マネージャ604は、共有フォルダ内のコンテンツにアクセスすることの要求を管理しうる。共有フォルダ・マネージャ604はまた、1つ以上のクライアント・デバイスから共有フォルダへのペイロードを記憶/コミットすることの要求を管理しうる。
【0123】
パスワード共有システム102はまた、共有鍵マネージャ606を含みうる。共有鍵マネージャ606は、共有フォルダに関連付けられた共有暗号鍵(例えば、共有フォルダのペイロードを暗号化するために利用される共有暗号鍵)を管理しうる。例えば、共有鍵マネージャ606は、共有フォルダに関連付けられた共有暗号鍵のバージョン番号を管理しうる。共有鍵マネージャ606はまた、共有フォルダに関連する鍵ローテーション・イベントを管理し、これは鍵ローテーション・イベントを検出し、鍵ローテーション・イベントをクライアント・デバイスに通知することを含む。
【0124】
これに加えて、パスワード共有システム102は、公開鍵マネージャ608を含みうる。公開鍵マネージャ608は、共有フォルダに関連付けられた公開鍵集合を管理しうる。例えば、公開鍵マネージャ608は、共有フォルダへのメンバーシップ・アクセス権を有する1つ以上のクライアント・デバイスから公開暗号鍵を読み出し及び/又は更新しうる。公開鍵マネージャ608はまた、共有フォルダへのアクセス権をクライアント・デバイスに提供することに関連して、公開鍵集合をクライアント・デバイスに提供しうる。
【0125】
パスワード共有システム102は、共有フォルダに関連付けられたデータを記憶及び維持する(非一時的コンピュータ・メモリ/1つ以上のメモリ・デバイスを備える)データ・ストレージ・マネージャ610をさらに含む。例えば、データ・ストレージ・マネージャ610は、パスワード、暗号鍵、共有メンバーシップ、及び共有フォルダに関連付けられたメタデータを記憶しうる。データ・ストレージ・マネージャ610はまた、コンテンツ管理システム110及び/又はパスワード共有システム102の1以上のユーザに関連付けられたアカウント情報を記憶しうる。
【0126】
ここで
図7を参照して、この図は、1つ以上の実施形態による、共有フォルダを介してパスワードを共有するために暗号鍵交換及び鍵ローテーションを利用する一連の動作700のフローチャートを説明する。
図7は1つの実施形態による動作を示すが、代替の実施形態は
図7に示される動作のいずれかを省略、追加、並べ替え、及び/又は変更してもよい。
図7の動作は、方法の一部として実行されうる。これに代えて、非一時的コンピュータ可読媒体は、1つ以上のプロセッサによって実行された場合に、コンピューティング・デバイスに
図7の動作を実行させる命令を含みうる。さらに別の実施形態において、システムが
図7の動作を実行しうる。
【0127】
図7は、共有フォルダへのアクセス権を提供することに関連して公開鍵集合を読み出す動作702を一連の動作700が含むことを説明する。例えば、動作702は、共有フォルダへのアクセス権を提供することに関連して、1つ以上の追加のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵を含む公開鍵集合を読み出すことを伴う。例えば、動作702は、コンテンツ管理システムの第1の追加のアカウントに関連付けられた第1のクライアント・デバイスに第1の公開暗号鍵を要求することを伴いうる。動作702はまた、コンテンツ管理システムの第2の追加のアカウントに関連付けられた第2のクライアント・デバイスに第2の公開暗号鍵を要求することを伴いうる。
【0128】
動作702は、共有フォルダについての共有メンバーシップに従ってコンテンツ管理システムの追加アカウントを決定することを伴いうる。その後、動作702は、コンテンツ管理システムの追加のアカウントに関連付けられた登録されたクライアント・デバイスについての公開暗号鍵を要求することを伴いうる。よって、動作702は、共有フォルダについての共有メンバーシップに関連付けられた登録されたクライアント・デバイスについての公開暗号鍵を要求することを伴いうる。その後、動作702は、初期クライアント・デバイスに、登録されたクライアント・デバイスからの公開暗号鍵を含む公開鍵集合を利用して共有暗号鍵を暗号化させるために、登録されたクライアント・デバイスからの公開暗号鍵を公開鍵集合の一部として初期クライアント・デバイスに提供することを伴いうる。
【0129】
これに加えて、動作702は、パスワードの集合に関連付けられたパスワード・パーミッションの集合を決定することを含みうる。動作702はまた、フォルダ構造内のパスワード・パーミッションの集合に対応する1つ以上のフォルダへのアクセス・パーミッションを有する共有フォルダのためのフォルダ構造を生成することを伴いうる。例えば、動作702は、共有フォルダ内のフォルダの階層を決定することを伴いうる。その後、動作702は、共有フォルダについての共有メンバーシップに対するパスワード・パーミッションに従って、フォルダの階層内の各フォルダに対するアクセス・パーミッションを決定することを伴いうる。
【0130】
動作702の一部として、又は追加の動作として、一連の動作700は、コンテンツ管理システムの第1のアカウントに、フォルダの階層内のパスワードの第1の集合に対応するフォルダの第1の集合に対するアクセス・パーミッションの第1の集合を割り当てることを含みうる。その後、一連の動作700は、コンテンツ管理システムの第2のアカウントに、フォルダの階層内のパスワードの第2の集合に対応するフォルダの第2の集合に対するアクセス・パーミッションの第2の集合を割り当てることを伴いうる。
【0131】
動作702の一部として、又は追加の動作として、一連の動作700は、初期クライアント・デバイスから、1つ以上の追加のクライアント・デバイスへのアクセス権を提供するためのパスワードの集合についての共有フォルダを生成することの要求を受信することを含みうる。これに加えて、一連の動作702は、共有フォルダが以前に生成された後に1つ以上の追加のクライアント・デバイスへのアクセス権を提供するために、パスワードの集合についての共有フォルダを共有することの要求を初期クライアント・デバイスから受信することを含みうる。
【0132】
これに加えて、一連の動作700は、公開鍵集合を初期クライアント・デバイスに提供する動作704を含む。例えば、動作704は、公開鍵集合を、コンテンツ管理システムのアカウントに関連付けられた初期クライアント・デバイスに提供することを伴う。動作704は、1つ以上の追加のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵を含む公開鍵集合を初期クライアント・デバイスに提供することを伴いうる。説明すると、動作704は、公開鍵集合の一部として、第1の公開暗号鍵及び第2の公開暗号鍵を初期クライアント・デバイスに提供することを伴いうる。
【0133】
さらに、一連の動作700は、パスワードの集合及び暗号化共有暗号鍵を含むコンピューティング・ペイロードを受信する動作706を含む。例えば、動作706は、共有フォルダ内に記憶するために、初期クライアント・デバイスから、パスワードの集合と、パスワードの集合を暗号化するために利用され、公開鍵集合を利用して共有フォルダ内で暗号化される共有暗号鍵とを含む暗号化ペイロードを受信することを伴う。
【0134】
動作706は、暗号化ペイロードの一部として、1つ以上の追加のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵を利用して暗号化された共有暗号鍵を受信することを伴いうる。
【0135】
一連の動作700はまた、コンテンツ管理システムのアカウントに関連付けられた新たなクライアント・デバイスが、共有フォルダについての共有メンバーシップに追加されると判定することを含みうる。一連の動作700は、その後、新たなクライアント・デバイスに関連付けられた新たな公開暗号鍵を初期クライアント・デバイスに提供することを含みうる。一連の動作700はまた、初期クライアント・デバイスから、新たな公開暗号鍵を利用して共有フォルダ内で暗号化された共有暗号鍵を受信することを含みうる。これに加えて、一連の動作700は、パスワードの集合と、新たな公開暗号鍵を利用して共有フォルダ内で暗号化された共有暗号鍵とを含む暗号化ペイロードを新たなクライアント・デバイスに提供することを含みうる。
【0136】
一連の動作700は、共有暗号鍵を変更するための鍵ローテーション・イベントを検出することを含みうる。一連の動作700は、鍵ローテーション・イベントに応じて、鍵ローテーション・イベントのインジケーションを、共有フォルダへの現在のメンバーシップ・アクセス権を有する複数のクライアント・デバイスへ送信することを含みうる。これに加えて、一連の動作700は、複数のクライアント・デバイスから更新された公開鍵集合を読み出すことと、複数のクライアント・デバイスに更新された公開鍵集合を提供することとを含みうる。一連の動作700はまた、共有フォルダ内に記憶するための複数のクライアント・デバイスのイニシエータ・デバイスから、パスワードの集合と、パスワードの集合を再暗号化するために利用され、更新された公開鍵集合を利用して共有フォルダ内で暗号化される変更された共有暗号鍵とを含む更新された暗号化ペイロードを受信することを含みうる。
【0137】
さらに、一連の動作700は、共有フォルダについての共有メンバーシップの変化を検出することによって鍵ローテーション・イベントを検出することを含みうる。一連の動作700は、複数のクライアント・デバイスのクライアント・デバイスから、共有暗号鍵を変更するためのコマンドを受信することによって、鍵ローテーション・イベントを検出することを含みうる。これに代えて、一連の動作700は、共有フォルダに関連付けられた時間閾値を検出することによって鍵ローテーションを検出することを含みうる。
【0138】
例えば、一連の動作700は、共有フォルダについての共有メンバーシップにおける変化を検出することを含みうる。一連の動作700は、その後、共有メンバーシップにおける検出された変化に応じて、複数のクライアント・デバイスに対応するコンテンツ管理システムの複数のアカウントを含む共有フォルダについての更新された共有メンバーシップを決定することを含みうる。さらに、共有メンバーシップにおける検出された変更に応じて、一連の動作700は、更新された共有メンバーシップに関連付けられた複数のクライアント・デバイスへ鍵ローテーション・イベントのインジケーションを送信することを含みうる。
【0139】
一連の動作700は、複数のクライアント・デバイスのうちの第2のクライアント・デバイスから更新された暗号化ペイロードを受信する前に、又は受信することなく、複数のクライアント・デバイスのうちの第1のクライアント・デバイスから共有フォルダにアップロードするための更新された暗号化ペイロードを受信することを含みうる。一連の動作700は、第2のクライアント・デバイスから更新された暗号化ペイロードを受信する前に、又は受信することなく、第1のクライアント・デバイスから更新された暗号化ペイロードを受信したことに応じて、第1のクライアント・デバイスがイニシエータ・デバイスであり、第2のクライアント・デバイスがフォロワ・デバイスであると判定することを含みうる。これに加えて、一連の動作700は、パスワードの集合と、変更された共有暗号鍵とを含む更新された暗号化ペイロードを第2のクライアント・デバイスへ送信することを含みうる。
【0140】
鍵ローテーション・イベントを検出することに関連して、一連の動作700は、更新された暗号化ペイロードを第2のクライアント・デバイスへ送信する前に、第2のクライアント・デバイスから追加の変更された共有暗号鍵を受信することを含みうる。例えば、一連の動作700は、イニシエータ・デバイスから更新された暗号化ペイロードを受信した後、複数のクライアント・デバイスのうちのフォロワ・デバイスから追加の変更された共有暗号鍵を受信することを含みうる。これに加えて、一連の動作700は、第1のクライアント・デバイス(例えば、イニシエータ・デバイス)から受信された変更された共有暗号鍵と、第2のクライアント・デバイス(例えば、フォロワ・デバイス)から受信された追加の変更された共有暗号鍵との間の競合を検出することを含みうる。一連の動作700はまた、競合を検出したことに応じて、第2のクライアント・デバイスから受信された追加の変更された共有暗号鍵を拒否することを含みうる。その後、一連の動作700は、イニシエータ・デバイスから受信された、パスワードの集合と、変更された共有暗号鍵とを含む更新された暗号化ペイロードをフォロワ・デバイスへ送信することを含みうる。
【0141】
1つ以上の実施形態において、一連の動作700は、1つ以上の追加のクライアント・デバイスに関連付けられた1つ以上の公開暗号鍵によって暗号化された共有暗号鍵を受信することを含む。その後、一連の動作700は、1つ以上の公開暗号鍵によって暗号化された共有暗号鍵を、共有暗号鍵を利用して暗号化されたパスワードの集合とともに、1つ以上の追加のクライアント・デバイスに提供することを含みうる。
【0142】
本開示の実施形態は、以下でより詳細に記載されるように、例えば、1つ以上のプロセッサ及びシステム・メモリのようなコンピュータ・ハードウェアを含む専用又は汎用コンピュータを含むか、又はこれを利用してもよい。本開示の範囲内の実施形態はまた、コンピュータ実行可能命令及び/又はデータ構造を搬送又は記憶するための物理的及び他のコンピュータ可読媒体を含む。特に、本書に記載されるプロセスのうちの1つ以上は、少なくとも部分的に、非一時的コンピュータ可読媒体において実施され、1つ以上のコンピューティング・デバイス(例えば、本書に記載されるメディア・コンテンツ・アクセス・デバイスのいずれか)によって実行可能な命令として実装されてもよい。一般に、プロセッサ(例えば、マイクロプロセッサ)は、非一時的コンピュータ可読媒体(例えば、メモリなど)から命令を受信し、それらの命令を実行し、それによって、本書に記載されるプロセスのうちの1つ以上を含む1つ以上のプロセスを実行する。
【0143】
コンピュータ可読媒体は、汎用又は専用コンピュータ・システムによってアクセスされうる任意の利用可能な媒体でありうる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、非一時的コンピュータ可読記憶媒体(デバイス)である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は、伝送媒体である。よって、限定ではなく例として、本開示の実施形態は、少なくとも2つの明確に異なる種類のコンピュータ可読媒体、すなわち非一時的コンピュータ可読記憶媒体(デバイス)と伝送媒体とを含みうる。
【0144】
非一時的コンピュータ可読記憶媒体(デバイス)は、RAM、ROM、EEPROM、CD-ROM、(例えば、RAMに基づく)ソリッド・ステート・ドライブ(「SSD」)、フラッシュ・メモリ、相変化メモリ(「PCM」)、他のタイプのメモリ、他の光ディスク・ストレージ、磁気ディスク・ストレージ、又は他の磁気ストレージ・デバイス、これに代えて、コンピュータ実行可能命令又はデータ構造の形成で所望のプログラム・コード手段を記憶するために使用されえ、汎用又は専用コンピュータによってアクセスされうる任意の他の媒体を含む。
【0145】
「ネットワーク」は、コンピュータ・システム及び/又はモジュール及び/又は他の電子デバイス間の電子データの輸送を可能にする1つ以上のデータ・リンクとして定義される。ネットワーク又は別の通信接続(有線、無線、又は有線若しくは無線の組合せ)を介してコンピュータに情報が転送又は提供される場合に、コンピュータは、その接続を伝送媒体として適切にみなす。伝送媒体は、コンピュータ実行可能命令又はデータ構造の形成で所望のプログラム・コード手段を搬送するために使用されえ、汎用又は専用コンピュータによってアクセスされうるネットワーク及び/又はデータ・リンクを含みうる。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0146】
さらに、様々なコンピュータ・システム構成要素に到達すると、コンピュータ実行可能命令又はデータ構造の形態のプログラム・コード手段は、伝送媒体から非一時的コンピュータ可読記憶媒体(デバイス)へ(又はその逆へ)自動的に転送されうる。例えば、ネットワーク又はデータ・リンクを介して受信されたコンピュータ実行可能命令又はデータ構造は、ネットワーク・インタフェース・モジュール(例えば、「NIC」)内のRAMにバッファリングされ、その後、最終的に、コンピュータ・システムRAM及び/又はコンピュータ・システムにおける低揮発性コンピュータ記憶媒体(デバイス)に転送されうる。よって、非一時的コンピュータ可読記憶媒体(デバイス)は、伝送媒体も(又はさらには主に)利用するコンピュータ・システム構成要素に含まれうることを理解されたい。
【0147】
コンピュータ実行可能命令は例えば、プロセッサで実行される場合に、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスに所定の機能又は機能のグループを実行させる命令及びデータを含む。いくつかの実施形態において、コンピュータ実行可能命令は、汎用コンピュータ上で実行され、汎用コンピュータを本開示の要素を実装する専用コンピュータに変える。コンピュータ実行可能命令は例えば、バイナリ、アセンブリ言語のような中間フォーマット命令、又はソース・コードであってもよい。主題は構造的特徴及び/又は方法論的動作に固有の言語で記載されてきたが、添付の特許請求の範囲で規定される主題は必ずしも上述の特徴又は動作に限定されないことを理解されたい。むしろ、記載される特徴及び動作は、特許請求の範囲を実施する例示的な形成として開示される。
【0148】
パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、メッセージ・プロセッサ、ハンドヘルド・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース又はプログラマブル家電、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、モバイル電話、PDA、タブレット、ページャ、ルータ、スイッチなどを含む、多くのタイプのコンピュータ・システム構成を有するネットワーク・コンピューティング環境において本開示が実施されてもよいを当業者は理解されよう。本開示はまた、ネットワークを介して(有線データ・リンク、無線データ・リンク、又は有線データ・リンクと無線データ・リンクの組合せのいずれかによって)リンクされるローカル及びリモート・コンピュータ・システムが両方ともタスクを実行する分散システム環境において実施されてもよい。分散システム環境において、プログラム・モジュールは、ローカル・メモリ・ストレージ・デバイスとリモート・メモリ・ストレージ・デバイスの両方に配置されてもよい。
【0149】
本開示の実施形態はまた、クラウド・コンピューティング環境において実装されうる。この明細書において、「クラウド・コンピューティング」は、構成可能なコンピューティング・リソースの共有プールへのオンデマンド・ネットワーク・アクセスを可能にするためのモデルとして定義される。例えば、クラウド・コンピューティングは、構成可能なコンピューティング・リソースの共有プールへのユビキタスで便利なオンデマンド・アクセスを提供するために市場で使用されうる。構成可能なコンピューティング・リソースの共有プールは、仮想化を介して迅速にプロビジョニングされ、低い管理努力又はサービス・プロバイダの相互作用で解放され、その後、それに応じてスケーリングされうる。
【0150】
クラウド・コンピューティング・モデルは例えば、オンデマンド・セルフサービス、ブロード・ネットワーク・アクセス、リソース・プーリング、急速弾性、測定サービスなどのような様々な特性から構成されうる。クラウド・コンピューティング・モデルは例えば、ソフトウェア・アズ・ア・サービス(「SaaS」)、プラットフォーム・アズ・ア・サービス(「PaaS」)、及びインフラストラクチャ・アズ・ア・サービス(「IaaS」)のような様々なサービス・モデルを呈しうる。クラウド・コンピューティング・モデルはまた、プライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、ハイブリッド・クラウドなどのような異なるデプロイメント・モデルを使用してデプロイされうる。この明細書及び特許請求の範囲において、「クラウド・コンピューティング環境」は、クラウド・コンピューティングが採用される環境である。
【0151】
図8は、上述のプロセスのうちの1つ以上を実行するように構成されてもよい例示的なコンピューティング・デバイス800のブロック図を説明する。本書に記載されるクライアント・デバイス及び/又はコンテンツ管理システム110は、コンピューティング・デバイス800のような1つ以上のコンピューティング・デバイスを備えてもよいことを理解されたい。
図8によって示されるように、コンピューティング・デバイス800は、プロセッサ802、メモリ804、ストレージ・デバイス806、I/Oインタフェース808、及び通信インタフェース810を備えることができ、これらは、通信インフラストラクチャ812によって通信可能に結合されてもよい。例示的なコンピューティング・デバイス800が
図8に示されているが、
図8に説明されている構成要素は限定を意図するものではない。他の実施形態において、追加又は代替の構成要素が使用されてもよい。さらに、何らかの実施形態において、コンピューティング・デバイス800は、
図8に示されるものよりも少ない構成要素を含みうる。
図8に示されるコンピューティング・デバイス800の構成要素が、さらに詳細に記載される。
【0152】
特定の実施形態において、プロセッサ802は、コンピュータ・プログラムを構成するもののような命令を実行するためのハードウェアを含む。限定ではなく例として、命令を実行するために、プロセッサ802は、内部レジスタ、内部キャッシュ、メモリ804、又はストレージ・デバイス806から命令を読み出し(又はフェッチし)、それらをデコードし実行してもよい。特定の実施形態において、プロセッサ802は、データ、命令、又はアドレスのための1つ以上の内部キャッシュを含んでもよい。限定ではなく例として、プロセッサ802は、1つ以上の命令キャッシュ、1つ以上のデータ・キャッシュ、及び1つ以上の変換ルックアサイド・バッファ(TLB)を含んでもよい。命令キャッシュ内の命令は、メモリ804又はストレージ806内の命令のコピーであってもよい。
【0153】
メモリ804は、データ、メタデータ、及びプロセッサによる実行のためのプログラムを記憶するために使用されてもよい。メモリ804は、ランダム・アクセス・メモリ(「RAM」)、リード・オンリ・メモリ(「ROM」)、ソリッド・ステート・ディスク(「SSD」)、フラッシュ、相変化メモリ(「PCM」)、又は他のタイプのデータ・ストレージのような、揮発性及び不揮発性メモリのうちの1つ以上を含んでもよい。メモリ804は、内部メモリであっても分散メモリであってもよい。
【0154】
ストレージ・デバイス806は、データ又は命令を記憶するためのストレージを含む。限定ではなく例として、ストレージ・デバイス806は、上述の非一時的記憶媒体を備えうる。ストレージ・デバイス806は、ハード・ディスク・ドライブ(HDD)、フロッピー・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、若しくはユニバーサル・シリアル・バス(USB)ドライブ、又はこれらのうちの2つ以上の組合せを含んでもよい。ストレージ・デバイス806は、必要に応じて、取り外し可能又は取り外し不可能な(すなわち固定された)媒体を含んでもよい。ストレージ・デバイス806は、コンピューティング・デバイス800の内部にあっても外部にあってもよい。特定の実施形態において、ストレージ・デバイス806は、不揮発性のソリッド・ステート・メモリである。他の実施形態において、ストレージ・デバイス806は、リード・オンリ・メモリ(ROM)を含む。適切な場合に、このROMは、マスク・プログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的変更可能ROM(EAROM)、又はフラッシュ・メモリ、又はこれらのうちの2つ以上の組合せであってもよい。
【0155】
I/Oインタフェース808は、ユーザがコンピューティング・デバイス800への入力を提供し、そこから出力を受信し、他のようにそこへデータを転送し、そこからデータを受信することを可能にする。I/Oインタフェース808は、マウス、キーパッド若しくはキーボード、タッチ・スクリーン、カメラ、光学スキャナ、ネットワーク・インタフェース、モデム、他の既知のI/Oデバイス、又はこのようなI/Oインタフェースの組合せを含んでもよい。I/Oインタフェース808は、グラフィックス・エンジン、ディスプレイ(例えば、ディスプレイ画面)、1つ以上の出力ドライバ(例えば、ディスプレイ・ドライバ)、1つ以上のオーディオ・スピーカ、及び1つ以上のオーディオ・ドライバを含むがこれらに限定されない、出力をユーザに提示するための1つ以上のデバイスを含んでもよい。何らかの実施形態において、I/Oインタフェース808は、ユーザに提示するためにディスプレイにグラフィカル・データを提供するように構成される。グラフィカル・データは、1つ以上のグラフィカル・ユーザ・インタフェース及び/又は特定の実装を果たしてもよい任意の他のグラフィカル・コンテンツを表してもよい。
【0156】
通信インタフェース810は、ハードウェア、ソフトウェア、又は両方を含みうる。いずれにしても、通信インタフェース810は、コンピューティング・デバイス800と1つ以上の他のコンピューティング・デバイス又はネットワークとの間の(例えば、パケット・ベースの通信のような)通信のための1つ以上のインタフェースを提供しうる。限定ではなく例として、通信インタフェース810は、イーサネット又は他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ(NIC)又はネットワーク・アダプタ、又はWI-FIのような無線ネットワークと通信するための無線NIC(WNIC)又は無線アダプタを含んでもよい。
【0157】
これに加えて又はこれに代えて、通信インタフェース810は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、又はインターネットの1つ以上の部分、又はこれらのうちの2つ以上の組合せとの通信を容易にしてもよい。これらのネットワークのうちの1つ以上の1つ以上の部分は、有線であっても無線であってもよい。例として、通信インタフェース810は、(例えば、BLUETOOTH(登録商標) WPANのような)無線PAN(WPAN)、WI-FIネットワーク、WI-MAXネットワーク、(例えば、移動通信のためのグローバル・システム(GSM)ネットワークのような)セルラー電話ネットワーク、又は他の適切な無線ネットワーク、又はそれらの組合せとの通信を容易にしてもよい。
【0158】
これに加えて、通信インタフェース810は、様々な通信プロトコルの通信を容易にしてもよい。使用されてもよい通信プロトコルの例は、データ伝送メディア、通信デバイス、伝送制御プロトコル(「TCP」)、インターネット・プロトコル([IP」)、ファイル転送プロトコル(「FTP」)、テルネット、ハイパーテキスト転送プロトコル(「HTTP」)、ハイパーテキスト転送プロトコル・セキュア(「HTTPS」)、セッション開始プロトコル(「SIP」)、シンプル・オブジェクト・アクセス・プロトコル(「SOAP」)、拡張可能マークアップ言語(「XML」)及びその変形、シンプル・メール転送プロトコル(「SMTP])、リアルタイム転送プロトコル(「RTP」)、ユーザ・ダイアグラム・プロトコル(「UDP」)、移動通信用グローバル・システム(「GSM」)技術、符号分割多元接続(「CDMA」)技術、時分割多元接続(「TDMA」)技術、ショート・メッセージ・サービス(「SMS」)、マルチメディア・メッセージ・サービス(「MMS」)、無線周波数(「RF」)シグナリング技術、ロング・ターム・エボリューション(「LTE」)技術、無線通信技術、インバンド及びアウトオブバンド・シグナリング技術、並びに他の適切な通信ネットワーク及び技術を含むが、これらに限定されない。
【0159】
通信インフラストラクチャ812は、コンピューティング・デバイス800の構成要素を互いに結合するハードウェア、ソフトウェア、又はその両方を含んでもよい。限定ではなく例として、通信インフラストラクチャ812は、アクセラレーテッド・グラフィックス・ポート(AGP)又は他のグラフィックス・バス、拡張業界標準アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、HYPERTRANSPORT(HT)インターコネクト、業界標準アーキテクチャ(ISA)バス、INFINIBANDインターコネクト、低ピン・カウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、周辺コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス規格関連ローカル(VLB)バス、又は別の適切なバス、又はそれらの組合せを含んでもよい。
【0160】
図9は、システム102の1つ以上の実施形態が実施されうる環境を説明する概略図である。オンライン・コンテンツ管理システム902は、(デジタル・ビデオのような)デジタル・コンテンツを生成、記憶、管理、受信、及び送信してもよい。例えば、オンライン・コンテンツ管理システム902は、ネットワーク904を介してクライアント・デバイス906との間でデジタル・コンテンツを送受信してもよい。特に、オンライン・コンテンツ管理システム902は、デジタル・コンテンツのコレクションを記憶し、管理しうる。オンライン・コンテンツ管理システム902は、複数のユーザに関連付けられたコンピューティング・デバイス間のデジタル・コンテンツの共有を管理しうる。例えば、オンライン・コンテンツ管理システム902は、ユーザがオンライン・コンテンツ管理システム902の別のユーザとデジタル・コンテンツを共有することを容易にしうる。
【0161】
特に、オンライン・コンテンツ管理システム902は、1以上のユーザに関連付けられた複数のクライアント・デバイス906にわたってデジタル・コンテンツを同期することを管理しうる。例えば、ユーザは、クライアント・デバイス906を使用してデジタル・コンテンツを編集してもよい。オンライン・コンテンツ管理システム902は、クライアント・デバイス906に、編集されたデジタル・コンテンツをオンライン・コンテンツ管理システム902へ送信させうる。その後、オンライン・コンテンツ管理システム902は、編集されたデジタル・コンテンツを1つ以上の追加のコンピューティング・デバイス上で同期する。
【0162】
複数のデバイスにわたってデジタル・コンテンツを同期することに加えて、オンライン・コンテンツ管理システム902の1つ以上の実施形態は、デジタル・コンテンツの大きなコレクションを有するユーザに効率的なストレージ・オプションを提供しうる。例えば、オンライン・コンテンツ管理システム902は、オンライン・コンテンツ管理システム902上にデジタル・コンテンツのコレクションを記憶でき、一方、クライアント・デバイス906は、デジタル・コンテンツの縮小サイズ・バージョンのみを記憶する。ユーザは、クライアント・デバイス906上のデジタル・コンテンツの縮小サイズ・バージョン(例えば、デジタル画像のサムネイル)をナビゲートし、閲覧しうる。特に、ユーザがデジタル・コンテンツを体験しうる1つの方法は、クライアント・デバイス906上でデジタル・コンテンツの縮小サイズ・バージョンを閲覧することである。
【0163】
ユーザがデジタル・コンテンツを体験しうる別の方法は、オンライン・コンテンツ管理システム902からデジタル・コンテンツのフル又は高解像度バージョンを要求するために、デジタル・コンテンツの縮小サイズ・バージョンを選択することである。特に、ユーザがデジタル・コンテンツの縮小サイズ・バージョンを選択すると、クライアント・デバイス906は、デジタル・コンテンツの縮小サイズ・バージョンに関連付けられたデジタル・コンテンツを要求する要求をオンライン・コンテンツ管理システム902へ送信する。オンライン・コンテンツ管理システム902は、クライアント・デバイス906へデジタル・コンテンツを送信することによって要求に応答しうる。その後、クライアント・デバイス906は、デジタル・コンテンツを受信すると、デジタル・コンテンツをユーザに提示しうる。このようにして、ユーザはクライアント・デバイス906上で使用されるリソースの量を最小化しつつ、デジタル・コンテンツの大きなコレクションにアクセスしうる。
【0164】
クライアント・デバイス906は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、携帯情報端末(PDA)、イン又はアウト・オブ・カー・ナビゲーション・システム、ハンドヘルド・デバイス、スマートフォン若しくは他のセルラー若しくはモバイル・フォン、又はモバイル・ゲーム・デバイス、他のモバイル・デバイス、又は他の適切なコンピューティング・デバイスであってもよい。クライアント・デバイス906は、ネットワーク904を介してコンテンツにアクセスし閲覧するために、ウェブ・ブラウザ(例えば、マイクロソフト・ウィンドウズ(登録商標)・インターネット・エクスプローラ、モジラ・ファイヤーフォックス、アップル・サファリ、グーグル・クローム、オペラなど)又はネイティブ若しくは専用クライアント・アプリケーション(例えば、iPhone(登録商標)又はiPad(登録商標)用のFacebook、Android用のFacebookなど)のような1つ以上のクライアント・アプリケーションを実行してもよい。
【0165】
ネットワーク904は、(インターネット、企業イントラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、無線ローカル・エリア・ネットワーク(WLAN)、セルラー・ネットワーク、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、又は2つ以上のこのようなネットワークの組合せのような)ネットワーク又はネットワークのコレクションを表してもよく、クライアント・デバイス906は、このネットワークを介してオンライン・コンテンツ管理システム902にアクセスしてもよい。
【0166】
以上の明細書において、本開示は、その特定の例示的な実施形態を参照して記載された。本開示の様々な実施形態及び側面は、本書で論じられる詳細を参照して記載され、添付の図面は様々な実施形態を説明する。上記の記載及び図面は、本開示を例示するものであり、本開示を限定するものとして解釈されるべきではない。本開示の様々な実施形態の完全な理解を提供するために、多数の具体的な詳細が記載される。
【0167】
本開示は、その趣旨又は本質的な特徴から逸脱することなく、他の特定の形態で実施されてもよい。記載された実施形態は、あらゆる点で例示的なものにすぎず、限定的なものではないとみなされるべきである。例えば、本書に記載される方法はより少ない又はより多いステップ/動作で実行されてもよく、又はステップ/動作は異なる順序で実行されてもよい。これに加えて、本書に記載されるステップ/動作は、互いに並行して、又は同じ若しくは同様のステップ/動作の異なるインスタンスと並行して、繰り返されるか又は実行されてもよい。したがって、本出願の範囲は、前述の記載によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等物の意味及び範囲内に入るすべての変更は、それらの範囲内に包含されるべきである。