JP5215476B2 - 分散された記憶ネットワークにおけるデータ許可のためのシステムおよび方法 - Google Patents

分散された記憶ネットワークにおけるデータ許可のためのシステムおよび方法 Download PDF

Info

Publication number
JP5215476B2
JP5215476B2 JP2011536488A JP2011536488A JP5215476B2 JP 5215476 B2 JP5215476 B2 JP 5215476B2 JP 2011536488 A JP2011536488 A JP 2011536488A JP 2011536488 A JP2011536488 A JP 2011536488A JP 5215476 B2 JP5215476 B2 JP 5215476B2
Authority
JP
Japan
Prior art keywords
data
node
storage
string
resource identifier
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.)
Expired - Fee Related
Application number
JP2011536488A
Other languages
English (en)
Other versions
JP2012508935A (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.)
Qualcomm Inc
Original Assignee
Qualcomm 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
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012508935A publication Critical patent/JP2012508935A/ja
Application granted granted Critical
Publication of JP5215476B2 publication Critical patent/JP5215476B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • 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/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)

Description

様々な特徴は分散された通信および/または記憶システムに関する。少なくとも1つの態様は、ピア・ツー・ピアオーバーレイネットワークにおいて記憶を許可するための方法に関する。
オーバーレイネットワークなどの構成されたピア・ツー・ピアネットワークは、典型的に、クエリのスケーラビリティおよび決定性ルーティング(deterministic routing)のために分散ハッシュテーブル(Distributed Hash Tables ; DHT)を使用する。分散ハッシュテーブル(DHT)は、ハッシュテーブルに類似したルックアップサービスを提供する非集中型分散システムの1つのクラスで、ノード名、識別子値の対がDHTに記憶され、任意の関与ノードが所与のノード名と関連付けられた識別子値を効率的に検索することができる。各ノードはDHTにおいて一意的なアイデンティティを有し、同様に、ネットワークに記憶された各サービスまたはオブジェクトは一意的なアイデンティティを有する。全てのアイデンティティは同一の識別子スペース、それは衝突を避けるために通常きわめて大きい、の一部である。アイデンティティを管理すること(例えば、ノード名から識別子値IDにマッピングすること)に対する責任は、関与ノードのセットにおける変更が引き起こす妨害が最小となるように、ノード間で分散される。これは、DHTが極端に多数のノードに拡大すること、および、継続的なノードの到着、出発、および失敗を処理することを可能にする。DHTは、分散ファイルシステム、ピア・ツー・ピアファイル共有とコンテンツ配信システム、協調ウェブキャッシング、マルチキャスト、エニーキャスト、ドメイン名サービス、並びにインスタントメッセージングのような、より複雑なサービスを構築するために使用可能なインフラストラクチャを形成する。
特に、データを記憶および検索し、サービスインスタンスを発行し、それに加入する分散ハッシュテーブルを実行するそのような分散システムにおいては、どのエンティティがどこで発行するかについてのいなかる制御も存在しない。ゆえに、ノードがどこにデータを記憶しうるかを決定するために、ノードのアイデンティティが単独でまたはサービスエンティティとの組み合わせで使用されうるメカニズムが必要とされる。
そのようなシステムにおいて、記憶ノードに、データの所有者が実際その特定のノードまたはリソースIDで記憶する権限があることを検証させることは難しい。データが所与のノードによって記憶されうるロケーションの数をオーバーレイネットワークが制限できない場合、単一の有害ノードは、故意であろうと故意でなかろうと、オーバーレイネットワークにおいて利用可能な分散割り当てに悪影響を及す可能性がある。しかしながら、1つのノードに対応する記憶ロケーションを厳密に1つに制限することもまた問題になりうる。これがなければ、ヘビーユーザからの記憶されるべき大量のデータは所与のノードに負担をかけ、それは、また、選択されたロケーションアタックのために特定のリソースIDをターゲットにする動機を攻撃者に提供するであろう。
データの所有者が、特定のリソースIDを書込、変更、または削除することをどのノード/ユーザが許可されるかについて制御可能な方法を提供することは貴重であろう。これが無い場合、任意のノードが、潜在的に所与のリソースIDのコンテンツを上書きしうる。
ピア・ツー・ピアオーバーレイネットワーク上に記憶されたデータに対する記憶許可(storage authorization)およびアクセス制御に関する様々な特徴が本明細書において提供される。
1つの特徴によると、オーバーレイネットワーク上にデータを記憶するための方法が提供され、例えば、発行ノード(publishing node)、プロセッサ上で実施され、および/または、コンピュータ読み取り可能媒体に記憶される。リソース識別子は、第1の文字列および第2の文字列の組み合わせの関数として生成され、第1の文字列は記憶ノード(storage node)によって独立して認証可能であり、リソース識別子はその記憶ノードによって検証可能である。一例において、第1の文字列は発行ノード識別子であり、第2の文字列は任意の文字列である。別の例において、第1の文字列は発行ノード識別子であり、第2の文字列は、オーバーレイネットワーク内のサービスについての既定の文字列である。リソース識別子、記憶されるべきデータ、第1の文字列のインジケータ、および/または第2の文字列のインジケータを含む記憶要求(storage request)が生成される。記憶要求は、次に、リソース識別子を含む識別子スペースに対して責任を持つ記憶ノードで記憶されるように、オーバーレイネットワークを通して送信される。リソース識別子の構成のため、記憶要求に対する許可はプロトコル階層のオーバーレイレベルで検証可能であり、そのオーバーレイレベルはプロトコル階層において用途レベル(usage level)より下のレベルである。
複数の異なるリソース識別子は記述されるように生成され、複数の異なるリソース識別子の各々は第1の文字列および異なる第2の文字列の組み合わせの関数である。異なるリソース識別子が異なる第2の文字列を使用して生成されるため、これは、異なる記憶ノードが異なる識別子スペースに対して責任を負うオーバーレイネットワーク内でデータ記憶負荷拡散を引き起こす。
別の特徴によると、オーバーレイネットワーク上にデータを記憶するための方法が提供され、例えば、記憶ノード、プロセッサ上で実施され、および/またはコンピュータ読み取り可能媒体に記憶される。ピア・ツー・ピアオーバーレイネットワークにおいて、データを記憶するために第1の記憶要求が受信される。第1の記憶要求は、第1のリソース識別子および記憶されるべき第1のデータを含み、第1のリソース識別子は、認証されうる第1の文字列と、第2の文字列との組み合わせの関数である。
一例において、第1の文字列は発行ノード識別子であり、第2の文字列は任意の文字列である。別の例において、第1の文字列は発行ノード識別子であり、第2の文字列はオーバーレイネットワーク内のサービスについての既定の文字列である。独立した記憶許可が、第1のリソース識別子を検証することによって、プロトコル階層のオーバーレイレベルで実行される。第1のリソース識別子の検証に成功すると、第1のデータは記憶ノードによって記憶され、第1のリソース識別子と関連付けられる。一例において、独立した記憶許可をオーバーレイレベルで実行することは、(a)第1の文字列を認証すること、および/または(b)第1のリソース識別子が第1の文字列と第2の文字列との組み合わせの関数であるか否かを決定することを含む。
記憶ノードは、続いて、記憶された第1のデータに対するデータアクセス要求を受信する。データアクセス要求が、第1のリソース識別子および第1の文字列についての知識を立証すると、記憶された第1のデータへのアクセスが認可(grant)される。データアクセス要求が、第1のリソース識別子についての知識は立証するが、第1の文字列についての知識は立証できなかった場合、記憶ノードは、記憶された第1のデータへの読み取り専用アクセスを認可する。記憶された第1のデータへのアクセスを認可することは、第1のデータを第2のデータで置き換えることを許すことを含む。
さらに別の特徴によると、ピア・ツー・ピアオーバーレイネットワーク上でデータを記憶するために発行ノード上で動作可能な別の方法が提供される。リソース識別子は第2の文字列の関数として生成され、リソース識別子は記憶ノードによって検証可能である。次に記憶要求が生成され、リソース識別子、記憶されるべきデータ、および、記憶ノードによって独立して認証可能な第1の文字列を含む。一例において、第1の文字列は発行ノード識別子であり、第2の文字列は任意の文字列である。別の例において、第1の文字列は発行ノード識別子であり、第2の文字列はオーバーレイネットワーク内のサービスについての既定の文字列である。
記憶要求は、リソース識別子を含む識別子スペースに対して責任を持つ記憶ノードで記憶されるために、オーバーレイネットワークを通して送信される。記憶要求に対する許可は、第1の文字列を使用して、プロトコル階層の用途レベルで検証可能であり、用途レベルはプロトコル階層においてオーバーレイレベルの上のレベルである。オーバーレイネットワーク内の異なる発行ノードは、同一のリソース識別子で異なる第1の文字列を有するデータ記憶要求を生成する。異なるデータ記憶要求は、異なる第1の文字列を使用する用途レベル許可に基づいて区別可能である。
さらに別の特徴によると、ピア・ツー・ピアオーバーレイネットワーク上でデータを記憶するために、記憶ノード上で動作可能な別の方法が提供される。第1の記憶要求は、ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するために受信される。第1の記憶要求は、第1のリソース識別子、記憶されるべき第1のデータ、および第1の発行ノード識別子を含み、その記憶ノードは、第1のリソース識別子を含む識別子スペースに対して責任を持つ。ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するために第2の記憶要求が受信される。第2の記憶要求は、第1のリソース識別子、記憶されるべき第2のデータ、および、第2の発行ノード識別子を含む。第1のデータおよび第1の発行ノード識別子は記憶ノードによって記憶され、第1のリソース識別子と関連付けられる。第2のデータおよび第2の発行ノード識別子は記憶ノードによって記憶され、第1のリソース識別子と関連付けられる。記憶ノードは独立した記憶許可をプロトコル階層の用途レベルで実行し、用途レベルはプロトコル階層においてオーバーレイレベルの上のレベルである。
続いて、記憶ノードは、第1のリソース識別子と関連付けられたデータに対してデータアクセス要求を受信する。記憶ノードは、記憶された第1のデータおよび第2のデータへの読み取り専用アクセスを認可する。しかし、データアクセス要求が第1の発行ノード識別子についての知識を立証すると、記憶ノードは記憶された第1のデータへの書込アクセスを認可する。同様に、データアクセス要求が第2の発行ノード識別子についての知識を立証すると、記憶ノードは記憶された第2のデータへの書込アクセスを認可する。
本態様の特徴、特性、および利点は、同一の参照符号が全体を通して同一のものを示す図面を参照すると、以下に示される発明の詳細な記述からより明らかとなる。
図1は、DHTが、ピア・ツー・ピアオーバーレイネットワークの動作を容易にするために、どのように動作するかを例示する図である。 図2は、集中型レジストラ(centralized registrar)(トラステッドオーソリティ)が、どのようにオーバーレイネットワーク内の複数のノードにノードIDを割り当てるために機能するかを例示するブロック図である。 図3は、ネットワーク内で実施されうるプロトコル階層の一例を示すブロック図である。 図4は、一例において、オーバーレイネットワークでのデータ記憶要求に用いられるメッセージヘッダアーキテクチャの例を示す図である。 図5は、分散データ記憶および許可がピア・ツー・ピアオーバーレイネットワークにおいてどのように実行されるかについての例を示すブロック図である。 図6は、分散データ記憶および許可がピア・ツー・ピアオーバーレイネットワークにおいてどのように実行されるかについての代替例を示すブロック図である。 図7は、2つの異なる発行ノードが、どのように、ピア・ツー・ピアオーバーレイネットワークにおいて同一のリソースIDを使用してデータを記憶しようとするかについての例を示すブロック図である。 図8は、発行ノードが、オーバーレイレベルのデータ記憶許可のために、オーバーレイネットワークにおいてリソースIDをどのように生成するかについての例を示すブロック図である。 図9は、記憶ノードが、オーバーレイレベルのデータ記憶許可のためにオーバーレイネットワークにおいてリソースIDをどのように検証するかについての例を示すブロック図である。 図10は、発行ノードが、用途レベルのデータ記憶許可のために、オーバーレイネットワークにおいてリソースIDをどのように生成するかについての代替例を示すブロック図である。 図11は、記憶ノードが、オーバーレイネットワークにおいて、用途レベルのデータ記憶許可のためにリソースIDをどのように検証するかについての例を示すブロック図である。 図12は、オーバーレイネットワークにおいてデータの記憶を要求することに適応している発行デバイスまたはノードの例を示す。 図13は、オーバーレイレベルで独立記憶許可を容易にするために、発行ノードにおいて動作可能な方法の例を示すフロー図である。 図14は、データ記憶許可を実行すると同時に、オーバーレイネットワークにおいてデータを記憶するための例示的な記憶ノードを示す。 図15Aは、オーバーレイレベルで独立記憶許可を実行するために記憶ノードにおいて動作可能な方法の前半の例を示す。 図15Bは、オーバーレイレベルで個々の記憶許可を実行するために記憶ノードにおいて動作可能な方法の後半の例を示す。 図16Aは、用途レベルで独立記憶許可を実行するために記憶ノードにおいて動作可能な方法の前半の例を示す。 図16Bは、用途レベルで独立記憶許可を実行するために記憶ノードにおいて動作可能な方法の後半の例を示す。
発明の詳細な説明
以下の記述において、複数の特定な詳細が実施形態の全体的な理解を提供するために示される。しかし、実施形態がこれらの特定な詳細なしに実施されうることは、当業者により理解されるであろう。例えば、回路は、不必要な詳細で実施形態を不明瞭にしないために、ブロック図で示される。別の例において、周知の回路、構造、および技術は、実施形態を不明瞭にしないために詳細に示される。
本明細書で使用されるように、「ノード」という用語は、ネットワーク内でアドレス指定可能な任意のデバイス、コンピュータ、処理ユニット等を指す。「識別情報(identification)」、「識別子(identifier)」、「ID」という用語は、ネットワーク内の特定のノードを識別することに役立つ値(例えば、数または文字列)を示すために、交換可能に使用される。「発行ノード」は、ネットワークにおいて別のノードに情報を記憶しようとするノードを指す。「記憶ノード」は、ネットワークにおいて発行ノードについての情報を記憶するノードを指す。「データ」(例えば、記憶されたデータ)という用語は、オーディオおよび/またはビデオコンテンツ、テキスト、画像など、任意のタイプの情報を含みうる。
概要
ピア・ツー・ピアオーバーレイネットワークにおいて、記憶されたデータまたは情報は、そのようなデータまたは情報がオーバーレイネットワークにおいて別のノードに潜在的にアクセスすることを可能にする特定の用途(例えば、オーバーレイサービス、機能、またはアプリケーション)と関連付けられる。オーバーレイネットワークにおいてデータを識別および記憶するために特定のリソース識別子(例えば、リソースID)が生成され、そのデータまたは情報と関連付けられる。ピア・ツー・ピアオーバーレイネットワークにおいて、データ記憶許可を容易にする様々な態様が提供される。
第1の実施形態によると、複数のノードを備えるピア・ツー・ピアオーバーレイネットワーク内において、発行ノードは、そのような記憶されたデータに対する許可制御を可能にしながら、データまたは情報を複数の異なる記憶ノードに記憶することが許可される。この実施形態において、データ記憶および/またはアクセスに対する許可制御は、プロトコル階層のオーバーレイレベルで実行され、オーバーレイレベルはプロトコル階層において用途レベルの下である。すなわち、データがオーバーレイネットワークの複数のノードロケーションをまたいで拡散されることを可能にする一方で、記憶ノードに記憶されたデータにアクセスし、それを変更し、および/またはそれを削除する許可が実施される。そのような許可を達成するための1つの方法は、第1の文字列および第2の文字列の組み合わせの関数として計算されるリソース識別子(リソースID)によって記憶されるべきデータを識別または関連付けることであり、第1の文字列は記憶ノードによって独立して認証可能であり、リソース識別子はその記憶ノードによって検証可能である。例えば、第1の文字列は発行ノード識別子であり、第2の文字列は用途タイプを示す任意または既定文字列である。一例において、発行ノード識別子(および/または発行ノードの公開キー)は、発行ノードによって記憶されているデータに署名するために使用されるプライベート証明書(private certificate)と関連付けられる。これにより、記憶ノードは、記憶されたデータの変更または修正を求める要求を提示するノードがそのようなプライベート証明書の知識を有するか否かを確かめることができる。特定の発行ノードが同一の第1の文字列および異なる第2の文字列(例えば、異なるタイプのデータまたは用途に対して)を使用するため、異なるリソースIDが生成され、その結果として、そのようなデータは、データ負荷の拡散を達成するために、おそらくピア・ツー・ピアネットワーク上の複数の異なる記憶ノードで記憶されるであろう。
記憶ノードは、特定のノードが、特定のリソースIDと関連付けられた記憶されたデータを修正または削除することができるか否かを決定する。すなわち、要求ノードが、発行ノードと関連付けられたリソース識別子、第1の文字列(例えば、発行ノード識別子)、および/またはプライベート証明書の知識を立証可能な場合にのみ、データアクセスおよび/または修正要求が許可される。そのような許可はプロトコル階層のオーバーレイレベルで実施され、そのオーバーレイレベルはプロトコル階層において用途レベルより下のレベルである。
代替の実施形態の特定の用途において、リソースIDを使用し、あるタイプのデータを探索することによって、ノードが記憶されたデータにアクセスできるようにすることが望まれる。しかし、そのような探索は、探索ノードが、記憶されたデータに関連付けられた第1の文字列(例えば、発行ノード識別子)を知らないため、リソースIDが第1の文字列(例えば、発行ノードに関連付けられた)および第2の文字列の両方に基づく場合に非実用的である。それゆえ、代替の実施形態においては、記憶されたデータについてのリソースIDは、第2の文字列にだけ基づく。そのような「第2の」文字列は、既定の文字列、既知の文字列、および/または知り得る文字列(例えば、各タイプの用途、アプリケーション、またはサービスにより)である。そのような文字列が各用途によって予め定義されるため、その用途と関連付けられたデータを探索する別のノードは、リソースIDを再生し(例えば、既知の文字列に基づいて)、オーバーレイネットワークにおいてリソースIDを探索する。このスキームによって、複数のノードがリソースIDのみを使用して特定のタイプのデータを探索することが可能になるだけでなく、複数の異なる発行ノードが同一のリソースIDを使用してデータを記憶することを可能にする。この実施形態において、データ記憶および/またはアクセスに対する許可制御は、プロトコル階層の用途レベルで実行され、その用途レベルはプロトコル階層においてオーバーレイレベルより下のレベルである。同一のリソースIDを使用する記憶されたデータの異なる複数のインスタンスを区別するために(例えば、それらが同一の文字列に基づくため)、記憶されたデータの各インスタンスは、また、用途レベルで検証される「第1の」文字列(例えば、発行ノードの識別子)と関連付けられる。記憶ノードは、また、記憶されたデータのインスタンスの変更または削除を要求するノードが、発行ノードIDと関連付けられた正しいプライベート証明書を有するか否かを確かめるために、その記憶されたデータのインスタンスと関連付けられた「第1の」文字列(例えば、発行ノードID)を使用する。
DHTオーバーレイネットワーク
オーバーレイネットワークは、別のネットワークの上に構築される通信ネットワークまたはデータネットワークである。オーバーレイ内のノードは、基盤ネットワークにおいて、おそらく多数の物理リンクを通るパスに各々が対応する仮想リンクまたは論理リンクによって結合されていると考えることができる。通信ネットワーク内で、各ネットワークノードは、ノードに、および/または、ノードからメッセージを送るために使用されるインターネットプロトコル(IP)アドレスを有する。そのようなネットワークIP層の上で、各ノードに関するノード識別子(すなわち、ノードID)を使用するオーバーレイネットワークを実施することが可能である。したがって、ノードについてのIPアドレスが変更された場合であっても、そのノードIDはオーバーレイネットワークの場合に同じままである。かくして、オーバーレイネットワークは、IP層インフラストラクチャに頼らず、代わりに、複数のノード間のピア・ツー・ピア通信のためにノードIDを使用する。加えて、そのようなオーバーレイネットワークは、単一障害点がオーバーレイネットワークに不具合を生じさせないように、そのノードにわたって分散ハッシュテーブル(DHT)を実施する。
一例において、P2PSIPオーバーレイネットワークは、SIP登録、SIPメッセージトランスポート、およびP2Pネットワークを使用する同様の機能を提供する複数のノードの結合、収束、および/または連合である。セッション開始プロトコル(SIP)は、インターネットおよび別のネットワーク上で音声およびビデオ呼などのマルチメディア通信セッションを設定および解放するために広く使用されるシグナリングプロトコルである。SIPプロトコルは、SIP要求の目的を解決し、SIPメッセージトランスポートを提供し、さらに、別のSIP関連機能を提供するためにピア・ツー・ピア(P2P)のネットワーク(すなわち、P2PSIP)に適応されている。
本明細書に記述される様々な態様は、集中型および/または分散型のピア・ツー・ピアオーバーレイネットワークアーキテクチャにおいて実施される。図1および2は、それぞれ、分散型および集中型のオーバーレイネットワークの例を示す。
図1は、ピア・ツー・ピアオーバーレイネットワークの動作を容易にするためにDHTがどのように動作するかを示す図である。この例はオーバーレイネットワークを輪形で例示するが、これは単に簡潔さのためであり、別のオーバーレイネットワークアーキテクチャが可能であり、企図される。ピア・ツー・ピアオーバーレイネットワークA 100は、複数のノードA 102、B 104、C 106、D 108、E 110、および/またはF 112から形成されうる。各ノードは、オーバーレイネットワークA 100についてのDHTの一部(例えば、ノード名、ノード識別子)を保持する。各ノードは、識別子スペースから選択される一意的なノード識別子(ノードID)をオーバーレイネットワーク100のDHT 114に有する。同様に、ネットワーク100に記憶された各サービスまたはオブジェクトは、識別子スペースから選択された一意的な識別子を有する。全てのノードIDは、通常は衝突を避けるためにきわめて大きい、同じ識別子スペースの一部である。ノードIDの保持に対する責任(例えば、ノード名からノード識別子にマッピングすること)は、関与ノードのセットにおける変化が引き起こす妨害が最小量となるような方法で、ノード間で分散される。各ノードは、識別子スペースの一部、典型的に自己のノードIDから開始して1つ以上の隣接ノードのノードIDまで、に対して責任を持つ。ノードは、それが責任を持つ範囲内の任意のロケーションにマッピングするオブジェクトを記憶すること、および/または、オブジェクトに関するクエリに応答することに対して責任を持つ。各ノードは、別のノード(隣接ノードまたはルーティンググテーブル)への一連のリンクを保持する。同時に、これらのリンクはオーバーレイネットワークを形成する。ノードは、ネットワークのトポロジと呼ばれるある構造に従って隣接ノードを選び出す。
暗号ハッシュ関数(cryptographic hash function)が、識別子(ID)をオーバーレイネットワーク100内のノード、オブジェクト、サービスのインスタンスに割り当てるために使用される。大抵のDHTは、ハッシュキー(すなわち、識別子)をノードおよび/またはサービスにマッピングするために、コンシステント・ハッシュ法(consistent hashing)の変形を幾つか使用する。この技術は、ノード間の地理的距離またはネットワーク待ち時間とは無関係の、k1からk2までの距離の抽象概念(abstract notion)を定義する関数δ(k1、k2)を用いる。各ノードは識別子(すなわち、ノードID)と呼ばれる単一のキーが割り当てられる。識別子値(ノードID)iを有するノードは、δに従って測定される、識別子iが最も近いIDである全てのキー(または、識別子)を所有する(または、それに対して責任を持つ)。DHTネットワークトポロジは、全てのキーkについて、ノードがkを所有するか、あるいは、上で定義されたキースペース距離という観点において、kに近いノードへのリンクを有するプロパティのいくつかの変形を共有する。そのため、貪欲算法を使用して、メッセージを任意のキーk(すなわち、識別子)の所有者に送ることは比較的に単純である。例えば、各ノードにおいて、メッセージは、そのノードIDがキーkに最も近い隣接ノードに送られる。そのような隣接ノードが存在しない場合(すなわち、他のどの隣接ノードもより近いノードIDを有さない場合)、メッセージが、上に定義されたように、キーkの所有者である最も近いノードに到達したと仮定される。この方式のルーティンググは、時々、キーベースルーティングと呼ばれる。一例において、DHTは、キーを、円の上の点とみなし(図1に示されるように)、δ(k1、k2)は、円の周りを時計回りにk1からk2に移動する距離である。ゆえに、円形のキースペースは、そのエンドポイントがノード識別子(ノードID)である連続的な区分(segment)に分割される。i1およびi2が隣接した2つのIDである場合、ID i2を有するノードは、i1からi2の範囲内にある全てのキーを所有する。このネットワークトポロジを実施することにおける効率性を考慮することにより、要求が迅速に完了するように任意の経路(経路長)における最大数のホップが少ないこと、および、管理オーバーヘッドが超過しないように、任意のノードの最大数の隣接ノード(最大ノード次数)が低いことを保証することが望ましい。1つのトレードオフは、より短い経路が各ノードに対して多数の隣接ノード(すなわち、より高い最大ノード次数)を要求することであることに注意されたい。
一例において、ノードC 106は、1つ以上の先行ノード、および、1つ以上の後続ノードについてのノードIDを保有するDHT 114を保持する。DTH 114は、単に、全てのノードIDのサブセット(すなわち、ノードC 106のノードIDに近い複数のノードID)である。例えば、ノードC 106のDHT 114は、ノードA 102およびノードB 104のための前のノードID、並びに、ノードD 108、E 110、およびF 112のための次のノードIDを保持する。DHTは、きわめて多数のノード(例えば、ネットワーク100において216個のノード)まで拡大することができ、継続的なノードの到着、出発、および失敗を処理することができる。一例において、DHTは、ノードIDを円の上の点とみなし、δ(ノードID i1、ノードID i2)は、円の周りを時計回りに(例えば、ノードCからいくつかのノードIDxに)移動する距離である。このように、円状の識別子スペースは、そのエンドポイントがノード識別子(ノードID)である連続的な区分に分割される。i1およびi2が隣接した2つのノードIDである場合、ID i2を有するノードはi1からi2の範囲内にある全てのキーを所有する。結果として、DHTは、より複雑なサービス(例えば、分散ファイルシステム、ピア・ツー・ピアファイル共有とコンテンツ配信システム、協調ウェブキャッシング、マルチキャスト、エニーキャスト、ドメイン名サービス、およびインスタントメッセージング)を構築するために使用されうるインフラストラクチャを形成することができ、そのようなサービスの各々は円状の識別子スペース内の識別子と関連付けられる。特定のサービス識別子に最も近い値のノードIDを有するノードは、そのようなサービス(例えば、特定のファイルの記憶または「サービス」識別子によって識別されたサービスの提供など)を提供すると仮定される。例えば、DHT 114を参照すると、サービスが識別子値「79」を有する場合、それがノードC 106と関連付けられたノードID「73」に最も近いため、そのようなサービスに対する任意の要求は、最後には、ノードC 10に着くであろう。
図2は、ノードIDをオーバーレイネットワーク内の複数のノードに割り当てるために、集中型レジストラ(トラステッドオーソリティ)がどのようにサービスするかを示すブロック図である。オーバーレイネットワーク100について、集中型レジストラ202は、DHT 204を形成するために複数のネットワークノード102、104、108、110、112、116、および/または118にノードIDを提供するように機能する。ネットワークノードがノードIDを獲得しようとする度に、それは集中型レジストラ202にノード識別子の割り当てを要求するメッセージを送信する。集中型レジストラ202は、次に、要求ノードに対するノードIDを計算し、それを要求ノードに割り当て、それを要求ノードに送信する。
いくつかの実施形態においては、集中型レジストラ202は任意のオーバーレイネットワーク動作に関与せず、それ自体では、別のノードによるノードID検証に到達することすらできない。そのような集中型レジストラ202の一例は、公開キーを要求ノードから受信し、ノードIDを割り当て、ノードへのノードIDのマッピングを行使する認証局(CA)を含む。例えば、CAは、要求ノードの公開キーを使用して、ノードIDのマッピングに署名する。次に、要求ノードは、認可されたノードIDを別のノードに提示し、証明書に含まれる公開キーの所有権を立証する。ノードは、そのプライベートキーを用いて、ある送信コンテンツを署名することによって、この所有権を立証する。別のノードは、ノードの証明書によって認可された公開キーを使用して、結果として生じる署名済みコンテンツを検証する。オーバーレイネットワーク固有の集中型レジストラは、そのようなオーバーレイネットワークの採用を促進することに関心のある所与のオーバーレイネットワークまたはエンティティの作成者によって開発されるか、あるいは、それはネットワークオペレータによっても提供されうる。
集中型レジストラを使用する弱点の1つは、ピア・ツー・ピアオーバーレイネットワークの全ての潜在的なメンバー(例えば、ノード)にとって、集中型レジストラを所有および動作するたった一つのオーソリティを信用することが難しいという点である。いくつかの実施形態において、外部のオーソリティ(すなわち、集中型レジストラ)にノードIDの割り当てを完全に頼るオーバーレイネットワークノードよりはむしろ、その代わりとして、集中型レジストラ202はランダム入力をハッシュ関数に提供し、ノードはそれ自体が別のランダム入力をハッシュ関数に提供する。これら2つの入力の各々は、ノードIDがそれを主張するノードに属することを検証する際に検証器ノードによって使用されるであろう。
集中型レジストラは、単一のエンティティまたはノードが獲得することができるノードIDの数を制限する。例えば、オペレータ所有の集中型レジストラの場合、ノードIDは加入しているサービスと関連付けられる。
図3は、ネットワーク内で実施されるプロトコル階層の一例を示すブロック図である。この例において、オーバーレイネットワークは、トランスポート層306、ネットワーク層308、リンク層310、および/または物理層312を含むプロトコルスタック上に構築される。これらのベース層の上に、オーバーレイネットワーク層304が実装され、それは、P2Pおよび/またはSIPプロトコルを含む。オーバーレイ層304の上に、それを通してサービスがサポートされる用途層(usage layer)302が構築される。用途層302は、また、アプリケーション層あるいはデータ層とも呼ばれる。「層」は「レベル」とも呼ばれる。別の考えられる実施形態は別の層または等価的な層を含みうること、および/または、いくつかの層を省略しうることに注意されたい。いくつかの点において、用途層302は、最上層、すなわち、他の層304〜312と比べて最も高い層であると考えられる。同様に、物理層312は、最下層、すなわち、他の層302〜310と比べて最も低い層であると考えられる。
ピア・ツー・ピア計算の性質は、オーバーレイが集合的により大きい機能を提供できるように、各ピアが別のピアにサービスを提供することである。P2PSIPにおいて、ピアノードは、分散データベース機能および分散トランスポート機能が実施可能となるように、記憶およびトランスポートサービスを提供する。個々のピアもまた別のサービスを提供することが考えられる。別のサービス(例えば、ボイスメールサービス)は基礎のP2PSIP機能性への拡張であるが、オーバーレイネットワークが形成および動作することを可能にするために、これらの追加サービス(例えば、STUNサーバサービス)のうちのいくつかが要求される。オーバーレイネットワークのノードは、どのピアノードがどのサービスを提供するかについて、あるいは、各ピアノードがリストされたサービスの各々を配信するためにどの種類の容量を有するかについての情報を記憶する必要がある。
図1および図2に示されたノードは認証されたデータ記憶を実施することができる。例えば、発行ノードA 102はリソースIDを生成し、それを記憶されるべきデータと関連付ける。例えば、リソースIDは、記憶ノードとして機能するノードF 112にマッピングする。本明細書に記述された様々な特徴は、図1および図2のオーバーレイネットワーク、並びに、別のタイプのオーバーレイネットワークにおいて実施されうる。
分散P2Pネットワークにおけるデータ記憶および許可
ピア・ツー・ピア(P2P)オーバーレイネットワークの例はP2PSIP(セッション開始プロトコル)であり、それは、IETF(インターネット技術特別調査委員会)によって標準化されている。本明細書に記述される様々なデータ記憶許可特徴は、P2PSIP対応のネットワークで実施されうる。P2PSIPの一部として、用途がオーバーレインスタンシエイション上で定義されることを可能にするリソース割り当てが考慮される。用途は、それぞれの種類の対応データモデルを用いて様々な種類のデータを定義する。オーバーレイ内の特定のノードにデータを記憶するために、記憶されているデータのタイプまたは種類が識別され、認可されたユーザ名またはノードIDを使用して、リソースIDが計算される。ここで、関心のある証明書およびリソースID計算メカニズムは用途によって定義される。
これらの理由により、オーバーレイネットワーク内の全てのノードが、そのオーバーレイネットワーク上で提供されうる全ての用途をサポートする必要がある。さらに、用途がより新しいバージョンに進化すると、全てのノードが同じバージョンの全ての用途をサポートすることが必要となる。分散ネットワーク(例えば、集中型ノードオーソリティが利用可能でない場所)において、これは、全てのノードを更新するために「n日」を要求する。しかし、更新日があることは厄介で、通常、実用的なネットワーク実施形態にとって非現実的である。
その結果として、記憶およびオーバーレイレベルのデータ許可を、用途非依存型(usage agnostic)(例えば、特定の用途、データタイプ等のから独立して)に保つ必要がある。そうすることによって、オーバーレイネットワークは異種の(heterogeneous)用途をサポートすることができ、加えて、時間にわたって進化するようにアップグレードすることができる。その結果として、オーバーレイ層で提供されるプロパティおよびプリミティブ機能は、用途層から独立して保持または保存される。一例において、「オーバーレイ層(またはオーバーレイレベル)」という用語は、プロトコル階層において、用途層より低く、トランスポート層より高い層での動作を示すために使用される。「アプリケーション層」および/または「用途層」という用語は、プロトコル階層の用途層での動作を示すために使用される。
図4は、オーバーレイネットワークにおいてデータ記憶要求のために、一例で用いられるメッセージヘッダアーキテクチャの例を示す図である。しかし、別タイプのメッセージヘッダが使用され得る。メッセージの主要部(図示されない)は、メッセージヘッダアーキテクチャに続く。アーキテクチャは、構造の多くが4の倍数のバイト長のため、4バイト行(four-byte-row)で示される。バイトは、横軸(horizontal axis)上の主なハッシュマークである。ビットは、水平アクセス(horizontal access)上のマイナーなハッシュマークである。各メッセージ(すなわち、行)に対する開始バイト(ゼロから数える)は垂直アクセス(vertical access)上に示される。最初の4バイト402(第0〜第3のバイト)は、メッセージのタイプまたは種類を識別するために使用される。
第4のバイト410は、破棄される前にメッセージが経験するこができる反復数(すなわち、ホップ)を示すTTL(time-to-live)フィールドである。TTLフィールドはホップの度に減少し、メッセージは、TTLがゼロの場合、それ以上のホップで送られるべきではない。
第5のバイト412はルーティングであり、続くべきルーティングのタイプを示す。ルーティングは、例えば、プロキシまたはリダイレクトである。FRAGフィールド414は、メッセージがフラグメントであるか否かを示すために使用される第6のバイト418の1ビットのフィールドである。LFRGフィールド416は、これが完全なメッセージの最後のフラグメントか否かを特定するために使用される第6のバイトの1ビットのフィールドである。14ビット(第6のバイトの6ビット418と第7のバイトの全8ビット420)は、フラグメントオフセットおよび全体の長さを示すためにリザーブされる。
EXPフィールド422は、使用されているプロトコルが経験的であるか否かを特定する1ビットのフィールドである。バージョンフィールド424は、使用されているP2PSIPプロトコルのバージョンを示す7ビットのフィールドである。DHTフィールド426は、使用されているDHTアルゴリズムを特定する8ビットのフィールドである。コード(Chord)DHTアルゴリズムが使用されうる。別のDHTアルゴリズムも可能である。
ハッシュフィールド428は、IDを生成するために使用されるハッシュアルゴリズムを特定する8ビットのフィールドである。オーバーレイに使用される全てのIDは、同一のアルゴリズムを使用して計算されるべきであり、あるいは、計算されなければならない。例示的なアルゴリズムは160ビットのハッシュ値を生成するSHA−1アルゴリズムであるが、別のハッシュアルゴリズムも使用されうる。セキュリテ430は、オーバーレイ内の関係者によって使用されているセキュリティメカニズムを示す8ビットのフィールドである。
R/r ビット432は、これが要求か応答かを特定するために使用される1ビットのフィールドである。方法フィールド434は、メッセージ方法を示す7ビットのフィールドである。少なくとも4つの方法タイプが存在する:ピア、リソース、トランスポート、およびDHT特性。方法タイプは、方法434の最初の2ビットによって特定される。残りの5ビットは特定の方法を特定するために使用される。例示的な方法は、「ピアジョイン(peer-join)」、「ピアサーチ(peer-search)」、「リソース獲得(resource-get)」、「リソースプット(resource-put)」、「リソーストランスファ(resource-transfer)」、「トランスポートオープン(transport-open)」、および「トランスポートトンネル(transport-tunnel)」である。「ピア」という用語がオーバーレイネットワークにおいてノードを指すことに注意されたい。
長さフィールド435は、ヘッダを含まないメッセージサイズのバイトの数である。宛先IDフィールド436は、宛先ノードまたはリソースを一意的に識別する160ビットの識別子(例えば、ノードIDまたはリソースID)である。ソースIDフィールド438は、送信元を一意的に識別する160ビットの識別子(例えば、ノードIDまたはリソースID)である。
トランザクションIDフィールド440は、トランザクションを識別し、また、要求および応答をランダム化するためにソルト(salt)またはシード(seed)として機能する一意的な64ビットの数である。応答は、それらが対応する要求として、同一のトランザクションIDを使用する。オーバーレイIDフィールド442は、使用されているオーバーレイの32ビットのチェックサムまたはハッシュである。チェックサムは、オーバーレイ名を表す可変長の文字列を、32ビット値に変換するために使用されなければならず、または使用されるべきである。32ビットのオーバーレイフィールドは完全性のチェックを提供する。それはオーバーレイ名を表すデジタル署名を提供し、それによって、ノードは、それらが指示されたオーバーレイネットワークとインタラクトしていることを検証可能である。
非依存型オーバーレイ行動
非常に根本的なレベルでは、DHTは、いくつかのアプリケーションが存在しうる上にキーベースのルーティングを提供する。オーバーレイプロトコルは、しばしば、記憶および検索語義を提供し、ノードのためにピア・ツー・ピア接続性を可能にする。広範囲のアプリケーションによって使用されうる、きわめて基本のプリミティブが存在する。P2PSIPワーキンググループの範囲内にあるSIPベースのアプリケーションクラスに対しても、オーバーレイ内の様々なノード上に存在しうるいくつかのアプリケーションが存在する。オーバーレイ内の全てのノードが同一のアプリケーションをサポートする必要はない。さらに、所与のアプリケーションは、より新しいバージョンがオーバーレイ上で記憶および検索されるべき新しい種類のデータを潜在的に定義する場合に、時間にわたって進化しうる。
用途とは独立した記憶機能などのオーバーレイプリミティブは、それらが、その用途に対応するデータを記憶するために所与の用途をサポートすることに対して、オーバーレイネットワーク内の全てのノードを要求しない点で有益である。用途は、当然、それらの用途をサポートするノードによって解釈されうる用途レベルでのさらなるメカニズムを提供するが、これはオーバーレイプリミティブから独立している。
異種の用途、および、同じ用途であってもその潜在的な進化を想定すると、オーバーレイネットワークは、オーバーレイプリミティブ上での動作が用途によって定義されうる場合、全てのノードをアップグレードするために旗の日(すなわち、同期化期間)を必要とする。次に、オーバーレイは、互換性がない用途が様々なノード上に存在する場合、使用できない状態に戻されるか、あるいは、予測不可能な行動に帰着するであろう。よって、用途はある入力を提供するためにオーバーレイ層とインターフェースでつながることが許可されるべきであるが、記憶などのオーバーレイプリミティブ上での動作が定義され、オーバーレイ層内に包含されるべきである。
例−トップレベルのデータ許可スキーム
ピア・ツー・ピアオーバーレイネットワークにおけるデータ許可の第1の例によると、リソース識別子は、第1の文字列および第2の文字列の組み合わせに基づいて生成され、第1の文字列は記憶ノードによって独立して認証可能であり、リソース識別子はその記憶ノードによって検証可能である。例えば、第1の文字列は発行ノードIDまたはその等価物である。第2の文字列は任意の文字列または既定の文字列である。発行ノードは、リソース識別子および記憶されるべきデータを含む記憶要求を生成する。記憶要求は、記憶ノードで記憶されるために、オーバーレイネットワークを通して送信され、その記憶ノードはリソース識別子を含む識別子スペースに対して責任を持つ。記憶ノードは、リソース識別子を検証することによって、プロトコル階層のオーバーレイレベルでの独立記憶許可を実行する。
図5は、ピア・ツー・ピアオーバーレイネットワークにおいて分配型のデータ記憶および許可がどのように実行されるかについての例を示すブロック図である。発行ノードA 502は、オーバーレイネットワークにおいて、データ名により識別されるデータ(すなわち、データ値)を記憶しようとする。発行ノードA 502は、発行ノードIDおよび公開キーPk−A(対応するプライベートキーPrv-Aと共に)を有する。証明書Cert-Aが、発行ノードA 502によって認証エンティティ508から獲得される。ここで、証明書Cert-Aはその公開キーPk-Aの関数である。
発行ノードA 502がオーバーレイネットワークにおいてデータの記憶を望む場合、それは、第1の文字列と第2の文字列との関数として関連リソースIDを生成する。一例において、第1の文字列は発行ノードIDである。第2の文字列は、既定の文字列(例えば、データ、用途、またはデータタイプを説明する)、または、任意の文字列である。第2の文字列が既定の文字列である場合、それは階層的な構造の一部であるか、あるいは、文字列コンポーネントの連結である。様々な例において、第1および/または第2の文字列の各々は英字、英数字、および/または数で示される一続きの記号である。発行ノードA 502は、また、Cert-Aおよび記憶されるべきデータの関数として署名Sig-Aを生成する(例えば、Cert-Aでデータ値を署名することによって)。
次に、記憶要求504が生成され、発行ノードA 502によって送信される。記憶要求504は、リソースID、データ名、データ値、第1の文字列、第2の文字列、公開キーPk-A、および署名Sig-Aを含む。
この例において、リソースIDは、ノードB 506が責任を有するリソーススペースにマッピングする。記憶要求504を受信すると、記憶ノードB 506は、要求ノードが事実上発行ノードA 502であることを認証する。一例において、この認証は、公開キーPk-Aを含む証明書要求510を認証エンティティ508に送信することによって達成される。それに応じて、記憶ノードB 506は、公開キーPk-Aの関数である検証証明書Ver. Cert-Aを備えた証明書応答512を受信する。受信された署名Sig-Aが、Ver. Cert-Aを用いて署名された受信データ値のローカルに生成された署名と適合する場合、記憶ノードB 506は、記憶要求504の真正性(authenticity)の検証に成功する。そうではなく、受信された署名Sig−Aがローカルに生成された署名と適合しない場合は、記憶要求504は拒否または無視される。
Sig−Aの検証に成功すると、記憶ノードB 506は受信データを記憶する。この例において、リソースIDフィールド516と、データ名、データ値、および第1の文字列を包含する第2のフィールド518とを含むデータ構造514が利用される。
図5に例示されたスキームが、ピア・ツー・ピアオーバーレイネットワークにおいてデータ記憶許可およびアクセスを実施するための様々な所望の特徴を提供することに注意されたい。
第1に、データ許可によって、記憶ノードB 506Bは、データの所有者(発行ノードA 502)が事実上その特定のリソースIDで記憶する権限を有することを検証することができる。一例において、記憶ノードB 506は、ローカルに生成されたリソースIDと、受信されたリソースIDを検証することによってこれを達成する。記憶ノードB 506が、第1の文字列(例えば、発行ノード識別子)および第2の文字列を知っているか、あるいは、それを獲得することができるため、受信されたリソースIDと比較するためにローカルリソースIDを再度計算することができる。発行ノードA 502によって使用される第2の文字列は記憶ノードB 506に知られている。例えば、第2の文字列は用途タイプ(記憶要求504において受信される)またはデータ名である。結果として、記憶ノードB 506は、ローカルバージョンのリソースIDを計算し、それを受信されたリソースIDと比較するために、記憶要求504において受信される第1の文字列および第2の文字列を使用することができる。これによって、オーバーレイネットワークは、データが所与のノードによって記憶されうる記憶ロケーションの数を制御することができ、それにより、オーバーレイにおいて利用可能な分散割り当てへの単一のノードのインパクトを制限する。
一般的センスでは、リソースID検証は、第1の文字列の認証可能な証明(例えば、発行ノード識別子の所有権の証明)を提供することに基づいており、第1の文字列と第2の文字列(例えば、用途タイプ)との周知の(または同意された)関数がストレージのIDスペースにマッピングすることを検証する。第1の文字列の認証可能な証明は、例えば、非対称のキー動作(例えば、公開/プライベートキーの対の使用)に基づく。検証リソース識別子を達成するいくつかの潜在的に独立した方法が存在する。第1の方法は、特定のタイプのサービス/用途(すなわち、第2の文字列)が許可されることを知るために、サービス発行記憶要求を受け入れる記憶ノードを予想することである。すなわち、サービス/用途は、オーバーレイネットワークの既定または周知のノードでありうる。第2の方法は、記憶ノードによって受け入れられるべき「第2の文字列」の全ての組み合わせを予想することである。第3の方法は、全てのノードによって認識されるオーソリティによって独立して署名された第2の文字列を有することである。
しかし、発行ノードA 502からオーバーレイネットワークの異なる記憶ノードの周りにデータを拡散する能力も、また望まれる。データ記憶を複数の記憶ノード間に拡散する能力がない場合、ヘビーな発行ノードからの全てのデータが所与の記憶ノードに負担をかける。リソースIDが第2の文字列に少なくとも一部基づく図5のスキームを利用することによって、発行ノードA 502からの異なるデータは、異なる第2の文字列を有し、それによって異なるリソースIDに帰着する。すなわち、第2の文字列は、異なるタイプのデータまたは用途に対して変化し、あるいは、任意の各時間である。結果として、異なる記憶ノードにマッピングし、異なる記憶ノード間にデータを拡散する異なるリソースIDが生成される。
第2に、データ許可によって、データの所有者は、どのノードがその特定のリソースIDに書き込み許可されるかを制御することができる。すなわち、記憶ノードB 506は、記憶要求504が、許可されたノードだけがそのような要求を作ることができることを検証することを認証する。例えば、図5において、発行ノードのみが、正しい署名Sig−Aを生成できる正しい証明書Cert−Aを有しているに違いない。記憶ノードB 506は、正しい署名が使用されたことを検証することができる(認証エンティティ508を使用することによって)。これがない場合、任意のノードは、潜在的に、所与のリソースIDのコンテンツを上書きする。
データ許可プロパティは用途に依存しない。すなわち、オーバーレイストレージに対するデータ許可は、用途にとらわれない方式で提供される。よって、オーバーレイネットワーク内の記憶ノードは、記憶されるべきデータが属する特定の用途/サービス/アプリケーションをサポートする必要はなく、別のノードからの記憶要求の許可を検証することができる。すなわち、記憶ノードが特定のタイプのサービスまたはアプリケーションをサポートするか否かに拘わらず、記憶されているあらゆるタイプのデータの許可検証を実施することが可能である。
図5に示されるように、データ許可は、許可されていないノードが、記憶ノードB 506に記憶されるリソースID内の特定のアイテム(例えば、データ値)のコンテンツを書込みまたは変更できないことを、データ所有者(例えば、発行ノードA 502)が確実にすることを可能にする。このデータ許可機能の確実性は、そのようなデータ許可機能を強いる記憶ノード(例えば、記憶ノードB 506)の協調に依存する。
許可された記憶要求は、オーバーレイネットワーク内の任意のノードによって独立して検証される。換言すると、リソースIDのコンテンツ(例えば、データ名、データ値)を検索するノードは、データの所有者(例えば、発行ノードA)がそのリソースIDで記憶する許可を受けたことを検証することができる。
図5に例示されるように、所与の発行ノード(例えば、ノードA 502)は、オーバーレイネットワークにおいて複数のノードロケーションで情報またはデータを記憶する。これは、ノードが、単一のノードに依存せずに、そのデータをオーバーレイネットワーク内の複数の記憶ノードにわたって拡散することを可能にし、それによって、異なる用途が記憶されている時に負荷分散を達成する。そのようなデータ記憶拡散を自然に提供するオーバーレイストレージプリミティブは、クエリおよび記憶自体を処理する際に内在的に有益である。
オーバーレイレベルでのデータ許可は、オーバーレイネットワークによって受け取られるオーバーレイレベル証明(例えば、認証エンティティ508によって提供される証明書Cert-Aまたは自己署名証明書)に基づかなければならず、または、基づくことができる。用途固有証明書は、それらの用途をサポートしないノードによって受け取られることができず、よって、オーバーレイレベルのデータ許可に対して見込みのある候補ではない。
文字列およびオーセンチケータ名(authenticator name)の両方がリソースIDを生成するために使用されるトップレベルの許可スキームは、オーバーレイレベルでの記憶許可を容易にする。リソースIDを生成するために文字列(例えば、用途固有文字列)を利用することによって、特定のノードからの異なるデータが、記憶ノード間で分散または拡散されるようにし、それによって負荷分散機能を達成する。
例―より低レベルのデータ許可スキーム
オーバーレイネットワークは、サービスを提供するエンティティのノードID(またはユーザ名)ついての事前の知識なく、探索ノードに、サービス(例えば、用途、サービス、またはアプリケーションと関連付けられた記憶されたデータ)を調べる能力を提供する。例えば、TURN(Traversal Using Relay NAT)サービスを捜すノードは、対応するユーザ名またはノードIDを知っているとは現実的には予想されない。
リソースIDが、任意のタイプの用途、サービス、および/またはアプリケーションを識別するために利用されるように、リソースID計算が用途にとらわれない形式で実行される。いくつかの例において、用途は、用途固有入力をリソースID計算に提供することを許可される。すなわち、リソースIDは、用途(例えば、各特定のタイプの機能、サービス、および/またはアプリケーションの)によって提供される情報に(少なくとも一部)基づいて計算される。
これらの機能のいくつかを容易にするために、変更されたアプローチがリソースIDの生成に使用される。この変更されたアプローチにおいて、リソースIDは、「第2」の文字列にのみ基づき、「第1」の文字列(例えば、発行ノードID)に基づかない。しかし、データ許可は、依然として、記憶ノードデータ構造で、「第1」の文字列(例えば、発行ノードID)をリソースIDと関連付けることによって実行される。例えば、そのような許可は、オーバーレイレベルというよりはむしろプロトコル階層の用途レベルで実行される。
図6は、ピア・ツー・ピアオーバーレイネットワークにおいて分散型のデータ記憶およびデータ許可がどのように実行されるかについての代替例を示すブロック図である。発行ノードA 602は、オーバーレイネットワークにおいて、データ名により識別されうるデータ(例えば、データ値)を記憶しようとする。発行ノードA 602は、発行ノードIDおよび公開キーPk-A(対応するプライベートキーPrv-Aと共に)を有する。証明書Cert-Aが、発行ノードA 602によって認証エンティティ608から獲得される。ここで、証明書Cert-Aはその公開キーPk-Aの関数である。
発行ノードA 602がオーバーレイネットワークにおいて、データの記憶を望む場合、それは、文字列の関数として関連リソースIDを生成する。「文字列」は、既定の文字列(例えば、データ、用途、またはデータタイプを示す)である。様々な例において、文字列は、英字、英数字、および/または数で示される一続きの記号である。文字列は、また、階層的な構造であり、または、文字列コンポーネントの連結でありうる。発行ノードA 502は、また、署名Sig−AをCert-Aと、記憶されるべきデータ(例えば、データ値をCert-Aで署名することによって)との関数として生成する。
次に、記憶要求604が生成され、発行ノードA 602によって送信される。記憶要求604は、リソースID、データ名、データ値、発行ノードID、公開キーPk−A、および署名Sig−Aを含む。
この例において、リソースIDは、ノードB 606が責任をもつリソーススペースにマッピングする。記憶要求604を受信すると、記憶ノードB606は、それが事実上発行ノードA 602であるか否かを決定するために、要求ノードを認証する。これは、正しい証明書Cert-Aが要求ノードに知られており、発行ノードIDと関連付けられていることを検証することによって達成される。証明書の検証に成功する(例えば、署名Sig-Aを検証することによって)と、記憶ノードB 606は、受信されたデータを記憶する。この例において、リソースIDフィールド616、データ名およびデータ値を含む第2のフィールド618、並びに、発行ノードID含む第3のフィールド620を含むデータ構造614が利用される。
図6のこの例においては、リソースIDを生成するために「文字列」のみが使用されている。使用される「文字列」は、オーバーレイネットワーク上でデータタイプまたは用途と関連付けられる。結果として、オーバーレイネットワーク内の任意のノードは、リソースIDを生成することによって(例えば、所望の文字列を使用することで)、および、オーバーレイネットワーク内の同一のリソースIDを有する記憶されたインスタンスを探索することによって、そのような用途のための記憶されたデータを探索し、および/または見つけることができる。
記憶ノードB 606が、リソースID616およびデータ618と切り離された、または、プライベートな発行ノードID 620を保持することに注意されたい。従って、記憶ノードB 606が、リソースID 616を要求する探索ノードにデータ618へのアクセスを提供する一方で、それらが、関連付けられた発行ノードIDおよび/または認証された証明書Cert-Aを知っていることを立証できない場合、それらのノードがデータ618を削除または変更することを防ぐ。
このより低いレベルの許可スキーム(認証器名AuthNameがリソースIDの一部ではなく、代わりとしてデータ部に追加される)は、複数のノードが同一のリソースIDを用いてデータを記憶することを可能にする利点を有する。次に、これは、オーバーレイネットワークにおいて探索ノードがこの記憶されたデータを見つけることを容易にし、それによって、様々なタイプのサービスを容易にする。加えて、リソースIDを生成するために用途固有文字列を利用することによって、これは、特定のノードからの異なるデータが記憶ノード間で分散または拡散されるようにし、それによって負荷分散機能を達成する。しかし、別のノードが特定の用途を容易に探索できるようにする柔軟性と引き換えに、データアクセス、記憶、および/または消去許可が、オーバーレイレベルというよりはむしろより低いレベル(例えば、データレベル)で実行される。
例−データ許可スキームを用いたリソースIDの共有
図6に示される例において、リソースIDが用途を表す既定の「文字列」に基づくため、異なるノードが異なるデータを記憶するために同一のリソースIDを生成することが可能である。リソースIDが特定のIDスペースにマッピングし、そのようなIDスペースがオーバーレイネットワークノード間で割り当てられるため、同一のノードは、同一のリソースIDの複数のインスタンスに対して記憶ノードとして動作しうる。
図7は、2つの異なる発行ノードが、ピア・ツー・ピアオーバーレイネットワークにおいて同一のリソースIDを使用して、どのようにデータを記憶しようとするかの例を示すブロック図である。図5および図6の例のように、第1の発行ノードA 702は、オーバーレイネットワークにおいて、データ(すなわち、データ名1およびデータ値1)を記憶しようする。発行ノードA 702は、発行ノードID 1、公開キーPk-A(対応するプライベートキーPrv-Aと共に)、および、証明書Cert−A(公開キーPk-Aの関数であり、発行ノードID 1と関連付けられる)を有する。発行ノードA 702がオーバーレイネットワークにおいてデータを記憶することを望む場合、それは関連リソースIDを文字列Xの関数として生成する。「文字列X」は既定の文字列(例えば、用途またはデータタイプを示す)である。様々な例において、文字列Xは、英字、英数字、および/または数で示される一続きの記号である。また、文字列Xは階層構造であり、あるいは、文字列コンポーネントの連結である。発行ノード A 702は、また、署名Sig-AをCert-Aおよび記憶されるべきデータの関数(例えば、データ値1をCert-Aで署名することによって)として生成する。第1の記憶要求706が次に生成され、発行ノードA 702によって送信される。記憶要求706は、リソースID、データ名1、データ値1、発行ノードID1、公開キーPk-A、および署名Sig-Aを含む。
同様の方法で、第2の発行ノードC 704は、発行ノードID 2、発行キーPk-C(対応するプライベートキーPrv-Cと共に)、および証明書Cert-C(公開キーPk-Cの関数であり、発行ノードID 2と関連づけられる)を有する。発行ノードC 704がオーバーレイネットワークにおいてデータを記憶することを望む場合、それは関連リソースIDを文字列Xの関数として生成する。第2の発行ノードC 704が第1の発行ノードA 702と同じ文字列Xを使用したため、それらのリソースIDが同じであることに注意されたい。発行ノードC 704は、また、Cert-Cと記憶されるべきデータとの関数(データ値1をCert-Cで署名することによって)として署名Sig-Cを生成する。次に、第2の記憶要求708が発行ノードA 702によって生成および送信される。第2の記憶要求708は、リソースID、データ名2、データ値2、発行ノードID2、公開キーPk-C、および署名Sig-Cを含む。
記憶ノードB 710は、記憶要求706および708の両方を受信し、発行ノード702および704を認証する。一度認証されると、記憶ノードB 710は、同一のリソースID714を有する異なるデータ716および720を記憶可能なデータ構造712に受信されたデータを記憶する。この例において、リソースID 714の各データインスタンス716および720は、そのデータインスタンスを所有するノードを示す関連発行ノード718および722を有する。そのため、記憶ノードB 710がデータインスタンス716および720へのアクセスを、リソースID 714を要求する探索ノードに提供する一方で、それらが、発行ノードID 1 718(データインスタンス716についての)および/または発行ノードID 2 722(データインスタンス720についての)を知っている事を立証できない限り、ノードがデータ716および720を削除または変更することを防ぐ。
強化されたデータ許可
様々な実施形態において、リソースIDを生成するために使用される「文字列」は、特定の用途定義の文字列および/またはノード/ユーザ名、または識別子に基づく。一例において、リソースIDは、少なくとも部分的に、リソース名の関数のである。
図8は、オーバーレイレベルのデータ記憶許可のために、発行ノードがオーバーレイネットワークにおいてリソースIDをどのように生成しうるかについての例を示すブロック図である。一例において、データ許可は、リソース名を計算するために使用されている認可されたユーザ名またはノードIDに基づく。基本的に、リソースIDを生成するためのそのようなメカニズムの使用は、データの所有者(すなわち、発行ノード)がそのロケーションに記憶する許可を受けたことを、記憶ノードが検証することを可能にする。さらに、各用途は、また、データ許可のためにそれ自体のルールを定義することを可能にされる。これは、データ許可モデルを用途依存にさせ、同種の用途サポートとオーバーレイネットワークに対するアップグレード旗の日の使用の必要性に向かせる。
一実施形態において、データ許可は、オーバーレイレベルでの記憶許可の独立した動作を可能にする方法で達成される。第1に、発行ノードについての認可されたユーザ名またはノードIDなどの第1の文字列が定義される(802)。次に、第2の文字列(例えば、用途固有文字列(UsageString))が獲得される(804)。一例において、第2の文字列は、所与の用途によって提供され、またはユーザIDにデフォルトされる。
随意的に、2つの部分(第の文字列および第2の文字列)を含みるリソース名が次に獲得される(806)。一例において、2つの部分は区切り文字「:」によって分離され、あるいは、そうでない場合には組み合わされる。次にリソースIDが、リソースID=ハッシュ(リソース名)=ハッシュ(第1の文字列:第2の文字列)となるように、リソース名のハッシュとして生成される(808)。例として、リソースIDは、第1の文字列(例えば、発行ノード識別子)が「alice@example.dht.org」であり、第2の文字列が「sip」(例えば、用途タイプ)であるハッシュ(alice@example.dht.org:sip)である。発行ノードは、また、第1の文字列、第1の文字列および第2の文字列、または、第1の文字列および第2の文字列および別の値のデジタル署名Sig−Dを生成する(810)。
次に、発行ノードは、リソースID、記憶されるべきデータ、第1の文字列、およびデジタル署名Sig−Dを含む記憶要求を生成することができる(812)。別の情報もまた記憶要求の一部として含まれることに注意されたい。この記憶要求は、リソースIDに関するIDスペースに対して責任を持つオーバーレイネットワークにおいて、記憶ノードに送信され、または記憶ノードによって受信される。
図9は、オーバーレイレベルのデータ記憶許可について、記憶ノードがオーバーレイネットワークにおいてどのようにリソースIDを検証するかについての例を示すブロック図である。記憶ノードは、リソースID、データ、第1の文字列、および署名Sig−Dを含む記憶要求を受信する(902)。別の情報もまた記憶要求の一部として含まれうることに注意されたい。記憶要求902は図8に示されるように生成される。受信されたリソースIDが正確に生成されたことを検証するために、受信記憶ノードは、記憶されるべきデータと関連付けられた第1の文字列902(記憶要求において受信される)および第2の文字列(例えば、用途固有文字列)を獲得することによって(906)、リソースIDを検証することができる。次に、リソース名のローカルインスタンスが獲得された第1の文字列および第2の文字列を使用して生成される(908)。次に、リソースIDのローカルインスタンスがリソース名のハッシュから生成される(910)。受信されたリソースIDを検証するために(912)、リソースIDのローカルに計算されたインスタンスは、記憶要求において受信されたリソースIDと比較される(914)。それらが適合すると、記憶要求が受け入れられ、受信されたデータは記憶される(916)、さもなければ、記憶要求は否定される(918)。この形式のリソースID生成(AuthNameおよびUsageStringの両方に依存する)を利用するデータアクセス許可は、データの記憶を認証するために必要とされる情報がリソースIDの一部として含まれることから、トップレベル許可と呼ばれることに注意されたい。
いくつかの例において、用途は、ユーザ名またはノードIDについての事前の知識なしに、そのデータに対するクエリまたは探索を許可することに関心をもつ。探索ノードが発行ノードの第1の文字列(例えば、ユーザ名および/またはノードID)を知らないため、リソースIDまたはリソース名の一部として第1の文字列を含まずにリソースIDを生成することが望まれる。
図10は、用途レベルのデータ記憶許可のために発行ノードがオーバーレイネットワークにおいてどのようにリソースIDを生成するかについての代替例を示すブロック図である。この例において、データ許可はより低いレベルで提供される。すなわち、発行ノードがオーセンチケータ名AuthName 1002および用途固有文字列UsageString 1004を定義する一方で、リソース名1006が、UsageStringの関数としてのみ生成される。次に、リソースID 1008がリソース名1006の関数として生成される。この例においては、デジタル署名Sig-Dが、AuthNameおよび/またはUsageStringおよび/または別の値を署名することによって生成される。次に発行ノードは、リソースID、記憶されるべきデータ、オーセンチケータ名AuthName、およびデジタル署名Sig-Dを含む記憶要求1012を生成する。別の情報もまた記憶要求の一部として含まれうることに注意されたい。この記憶要求1012は、リソースIDに関するIDスペースに対して責任を持つオーバーレイネットワークにおいて記憶ノードに送信され、または記憶ノードによって受信される。
図11は、用途レベルのデータ許可のために、記憶ノードがオーバーレイネットワークにおいてリソースIDをどのように検証するかについての例を示すブロック図である。記憶ノードは、リソースID、データ、オーセンチケータ名AuthNameおよび署名Sig-Dを含む記憶要求1102を受信する。別の情報もまた記憶要求の一部として含まれうることに注意されたい。記憶要求1102は、図10に示されるように生成される。受信されたリソースIDが正確に生成されたことを検証するために、受信記憶ノードは、記憶されているデータの用途と関連づけられた用途固有文字列UsageString 1104を獲得することによって、リソースIDを検証することができる。次に、リソース名のローカルインスタンス1106が用途文字列UsageStringを使用して生成される。次に、リソースIDのローカルインスタンス1108がリソース名のハッシュから生成される。受信されたリソースIDを検証する(1110)ために、リソースIDのローカルに計算されたインスタンスは、記憶要求において受信されたリソースIDと比較される(1114)。それらが適合しない場合、記憶要求は拒まれる(1118)。
記憶要求が現在記憶されており、同一のリソースIDと関連づけられているデータを上書き、削除、または変更しようと試みる場合、記憶ノードは、認証器の名前AuthNameをさらに検証する(1112)。すなわち、記憶ノードは、受信された記憶要求がそのようなデータを置き換える権限をもつパーティ(例えば、AuthNameまたは関連する認可された証明書を知るパーティ)からのものであることを検証する。現在の記憶要求が、同じリソースIDで前に記憶されたデータと同じ発行ノードからのものであると決定されると、新しく受信されたデータは、それが前に記憶されたデータを置き換え、またはそれを追加するように記憶される(1116)。さもなければ、現在の記憶要求が、同じリソースIDで前に記憶されたデータとは異なる発行ノードからのものであると決定されると、記憶要求は受け入れられるが、前に記憶されたデータを置き換え、変更、または削除することはできないであろう。その代わりに、新しいデータは、同一のリソースIDではあるが、記憶要求と関連付けられた異なるAurthNameで(図7に示されるように、データ構造712)記憶される(1120)この形式のリソースID生成(UsageStringに頼る)を使用するデータアクセス許可は、データの記憶を許可するために必要な情報がリソースIDの一部として含まれないため、低レベル(例えば、用途レベル、データレベル、または値レベル)許可と呼ばれることに注意されたい。
この低いレベル(または値レベル)のデータ許可を用いて、ユーザ名またはノードIDを知ることなく、オーバーレイネットワークにおけるデータ探索が実行され、それによって、データ発見を容易にする。この2重レベル許可(すなわち、より高いレベルでの用途ベースのリソースIDの許可、および、より低いレベルでの認証器名の許可)をサポートするために、プロトコル(例えば、記憶要求またはデータアクセス要求)は、使用される適切な許可タイプを信号送信することができる。
オーバーレイネットワークにおける記憶意味論(Storage Semantics)における改善
記憶および消去要求の処理
いくつかのオーバーレイネットワークサービスは、種類ID(これは要求の一部である)が記憶ノードに知られていること、および、対応するデータモデルが正確であることを、記憶/消去要求を受信する記憶ノードが検証することを要求する。これは、記憶ノードが、記憶要求のデータに関連付けられた全く同じ用途をサポートすることを仮定し、それが真である必要はない。本明細書に記述されたデータ記憶許可技術(記憶ノードが特定の用途をサポートする必要がない)に適応するために、記憶ノードは記憶要求内の種類 IDチェックを無視しうる。記憶ノードは、ローカルポリシーに基づき、それがサポートする用途に対応するデータへの優先を提供する。しかし、そのようなローカル決定はオーバーレイプロトコル自体の範囲外である。
関連データの記憶および検索
本明細書に記述されるリソースID計算を使用して、所与の用途および所与のユーザ/ノードに対応するデータは特定のリソースID関連付けられ、そのようなリソースIDに対して責任を持つ記憶ノードで記憶される。用途は、リソース名の用途固有データに異なる語義を提供することによって、データ記憶を複数の記憶ノード間に拡散する。例えば、「sip:alice@example.dht.org」をリソース名として使用する代わりに、発行ノードは「sipaor:alice@example.dht.org」等をリソース名として利用する。この例において、用途固有語義「sip」が「sipaor」に変更される。いくつかのオーバーレイネットワークは、ユーザ名および/またはノードIDのハッシュに対応するリソースIDでユーザ名またはノードIDに対応する証明書を記憶することを可能にする。それ自体は有益であるが、それは、また、証明書がSIP AOR(Address of Record)と同一の場所で記憶可能な場合に有益である。これが達成されうる2つの方法が存在する。SIP用途が、同様にリソースIDで記憶される証明書の種類を特定する。あるいは、それは、リソースIDのターゲットストレージおよびそのリソースIDを所有しないノードでの対応する値として設計されうる。これは、複数の用途に対応するデータを同一のリソースIDで記憶しているノードが、(許可を有さないことを選択するため、あるいは、そのノード識別子またはオーセンチケータ名の単なるハッシュとしてそのリソースIDを計算したため)、複数の用途がそれを利用する場合でさえ、証明書の1つのインスタンスのみを記憶することを可能にするであろう。しかし、この時点で、それらのオブジェクトが比較的やすやすと同一のリソースIDで記憶されうるように、全ての要求される関連データの種類を定義するために各用途を予想することが妥当と思われる。
記憶要求を生成および送信することに適応した発行ノードの例
図12は、オーバーレイネットワークにおいてデータの記憶を要求することに適応した発行デバイスまたはノード1200の例を示す。発行ノード1200は、例えば、図1のオーバーレイネットワークのノード104である。発行ノード1200は、記憶デバイス1250に結合された記憶許可プロセッサ1230、および、ネットワーク通信インターフェース1220を含む。一例において、発行ノード1200は、オーバーレイレベルでの独立した許可を可能するデータ記憶要求を生成する。別の例において、発行ノード1200は、用途レベルでの独立した許可を可能にするデータ記憶要求を生成する。発行ノード1200は、オーバーレイネットワーク上でデータ記憶デバイス1250からデータを記憶することを望む。データ記憶に対する要求は、記憶許可プロセッサ1230によって生成され、ネットワーク通信インターフェース1220を介し、オーバーレイネットワークを通して送信される。記憶許可プロセッサ1230は、リソースID生成器1234、署名生成器1240、オーセンチケータ名生成器1242、および許可タイプモジュール1232を含む。いくつかの実施形態において、記憶許可プロセッサ1230は、1つ以上のプロセッサ、処理回路、および/またはモジュールによって実施される。
許可タイプモジュール1232は、どのタイプの許可が特定の記憶要求(または、データアクセス要求)に対して適切であるかを決定し、その適切なタイプの許可に対しての手順を選択する。例えば、特定の用途はオーバーレイレベル許可(例えば、トップレベル許可)を要求し、別の用途は、用途レベルの許可(例えば、値レベルまたはデータレベル許可などの、より低いレベルの許可)を要求する。
オーバーレイレベルの許可が使用される場合、許可タイプモジュール1232は、リソースID生成器1234に、第1の文字列1238(例えば、発行ノードIDまたはオーセンチケータ名)および第2の文字列1236(例えば、用途文字列)に基づいてリソースIDを生成させる。生成されたリソースIDは、記憶要求で記憶されるべきデータを識別するために使用される。リソースIDは、また、オーバーレイネットワーク内のどの記憶ノードが記憶要求のデータを記憶するかを決定するように機能する。署名生成器1240は、第1/第2の文字列および/または記憶要求によって記憶されるべきデータを通して署名を生成するように機能する。生成された署名は記憶要求の一部として含まれうる。加えて、ノード認証モジュール1254は、発行ノード1200を一意的に識別または認証する証明を生成するように機能する。いくつかの例において、ノード認証モジュール1254は、自己認証によって、あるいは、証明書エンティティを用いて外部の認証器プロセスを介して証明書を生成する。そのような証明書は記憶要求においてリソース識別子を確保し、続いて認証するように機能する。
用途レベル許可(例えば、データレベルまたは値レベル許可)が使用される場合、許可タイプモジュール1232は、リソースID生成器1234に、第1の文字列1238(例えば、発行ノード識別子またはオーセンチケータ名)は用いず、第2の文字列1236(例えば、用途文字列)にのみに基づいてリソースIDを生成させる。生成されたリソースIDは、記憶要求で記憶されるべきデータを識別するように使用される。このインスタンスにおいて、第1の文字列1238(例えば、発行ノード識別子、または許可名)はデータの一部として加えられる。
これらの例の両方において、許可インデックス(認可された発行ノードが記憶要求である許可していることを示す)は、記憶要求と共に、あるいは、それとは別々に記憶ノードに送信される。例えば、記憶要求において使用される証明書の公開キーまたは検証は記憶ノードによって獲得される。
図13は、オーバーレイレベルでの独立した記憶許可を容易にするために発行ノードにおいて動作可能な方法の例を示すフロー図である。一例において、本明細書に記述されるステップは、図12に示された1つ以上のモジュールまたはデバイスによって実行される。発行ノードは、発行ノード1302と関連付けられ認可された第1の文字列(例えば、ノード識別子またはオーセンチケータ名)を獲得する。発行ノードは、また、第2の文字列1304(例えば、任意の文字列、または、用途タイプあるいは記憶されるべきデータタイプと関連付けられた文字列)を獲得する。一例において、第2の文字列は、オーバーレイネットワーク内のサービスについて既定の文字列である。オーバーレイレベル許可が実施されると、リソース識別子は、第1の文字列および第2の文字列の関数として生成され(1306)、ここで、第1の文字列は記憶ノードによって独立して認証可能であり、リソース識別子はその記憶ノードによって検証可能である。記憶要求に対する許可は、プロトコル階層のオーバーレイレベルで検証可能であり、そのオーバーレイレベルはプロトコル階層において用途レベルより下のレベルである。あるいは、用途レベル許可が実施されると、リソース識別子は第2の文字列の関数として生成される(1308)。この場合、記憶ノードは、リソース識別子をオーバーレイレベルで検証するが、記憶要求に対する許可はプロトコル階層の用途レベルで検証可能である。ここで、用途レベルはプロトコル階層においてオーバーレイレベルより上のレベルである。すなわち、リソース識別子は第2の文字列だけの関数であり、複数の発行ノードは記憶されるべき異なるデータに対して同一のリソース識別子を生成する。その結果、記憶ノードは、リソース識別子が正しい第2の文字列に基づいて(オーバーレイレベルで)正確に生成されたことを検証するが、記憶されたデータと関連づけられた第1の文字列(それは発行ノードを識別子する)を使用して用途レベルで記憶許可を実行することができる(同一のリソース識別子を使用し、異なる発行ノードによって記憶されたデータを区別するために)。
一例において、リソース識別子を生成するために使用される関数はハッシュ関数である。発行ノードは、また、発行ノード1310についての第1の文字列、第2の文字列、および/または、認証キー(例えば、証明書またはプライベートキー)を用いて署名された記憶されるべきデータに基づいて署名を生成する。一例において、認証キーは、プライベートキー、自己生成証明書、または、発行ノードを認証する第3者の証明書である。リソース識別子および記憶されるべきデータを含む記憶要求が、次に、生成される(1312)。記憶要求は、また、第1の文字列、第2の文字列、および/または署名を含む。記憶要求は、次に、オーバーレイネットワークを通して記憶ノードに送信され、その記憶ノードはリソース識別子を含む識別子スペースに対して責任を有する(1314)。
加えて、発行ノードは、複数の異なるリソース識別子を生成し、その複数の異なるリソース識別子の各々は、第1の文字列および異なる第2の文字列(オーバーレイレベル許可の場合)の組み合わせ、または第2の文字列のみ(用途レベル許可の場合)の関数である。異なるリソース識別子を生成するために第2の文字列を使用することによって、データ記憶負荷拡散は、異なる記憶ノードが異なる識別子スペースに対して責任を持つオーバーレイネットワーク内で達成される。
記憶要求を受信および許可することに適応した記憶ノードの例
図14は、データ記憶許可を実行すると同時に、オーバーレイネットワークにおいてデータを記憶するための例示的な記憶ノードを示す。記憶ノード1400は、オーバーレイレベルでのデータ記憶の独立許可を可能にする。記憶ノード1400は、記憶許可プロセッサ1430、ネットワーク通信インターフェース1420、および記憶デバイス1450を含む。データ記憶に対する記憶要求は、オーバーレイネットワークにおいて、ネットワーク通信インターフェース1420を介して発行ノードから受信される。一例において、記憶要求は、リソースID、データ、オーセンチケータ名、および署名を含む。ネットワーク通信インターフェースは、記憶要求を送信する発行ノードが記憶ノード1400でデータを記憶する許可を受けたか否かを決定するためにその要求をレビューする記憶許可プロセッサ1430に要求を伝達する。とりわけ、記憶許可プロセッサ1430は、許可タイプモジュール1432、リソースID検証器1434、署名検証器1440、およびオーセンチケータ名検証器1442を含む。
許可タイプモジュール1432は、どのタイプの許可が特定の記憶要求に対して適切かを決定す。例えば、記憶要求は、記憶されているデータに利用されるべき許可のタイプを信号送信する。使用されうる少なくとも2つのタイプの許可が存在する:オーバーレイレベル許可およびデータまたは値レベル許可。
オーバーレイレベル許可において、リソースIDは、第1の文字列(例えば、発行ノード識別子、オーセンチケータ名など)および第2の文字列(例えば、任意の文字列、既定の文字列など)と関連付けられ、あるいは、その関数である。その結果として、リソースID検証器1434は、その要求が許可されたか否かを決定するために、第1の文字列1438および/または第2の文字列1436(その両方が、記憶要求において受信されるか、そうでなければ、記憶ノード1400に提供または指示される)を利用する。この場合、「許可」は、リソースIDが正確に生成されたこと、および、第1の文字列(例えば、発行ノード識別子またはオーセンチケータ名)が認証されたこと(例えば、記憶されたデータが一意的に発行ノードと関連付けられるように)をチェックすることを意味する。
用途レベル許可(例えば、データまたは値レベル許可)において、リソースIDは、第2の文字列1436(それは、用途タイプまたは記憶されるべきデータタイプと関連付けられる)と関連付けられ、あるいは、それの関数である。結果として、リソースID検証器1434は、リソースIDが正確に生成されたか否かを決定するために第2の文字列1436を利用する。加えて、用途レベルでの記憶許可について、オーセンチケータ名検証器1442は、記憶要求についての第1の文字列(発行ノード識別子またはオーセンチケータ名)を検証する。第1の文字列が、前に記憶されたデータと同一のリソースIDを有する記憶要求が前に記憶されたデータを置換すべきか、それが別々に記憶されるべきかを決定するために利用されることに注意されたい。
同様に、署名検証器1440は、記憶要求の署名を検証する。
図15(図15Aおよび15Bを備える)は、オーバーレイレベルで、独立記憶許可を実行するために記憶ノードにおいて動作可能な方法の例を示す。記憶ノードは、ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するために第1の記憶要求を受信し、その第1の記憶要求は第1のリソース識別子および記憶されるべき第1のデータ含み、第1のリソース識別子は、認証されうる第1の文字列と、第2の文字列の組み合わせの関数である(1502)。記憶要求は、例えば、リソース識別子、記憶されるべきデータ、第1の文字列(例えば、発行ノード識別子、オーセンチケータ名)、第2の文字列、および/または、第1/第2の文字列および/または記憶されているデータに対する署名を含む。使用されている許可タイプに依存して、リソース識別子は、第1の文字列および/または第2の文字列の関数である。一例において、第1の文字列は発行ノード識別子であり、第2の文字列は任意の文字列である。別の例において、第1の文字列は発行ノード識別子であり、オーバーレイネットワーク内のサービスについての第2の文字列は既定の文字列である。
オーバーレイレベル許可において、リソース識別子は、第1の文字列および第2の文字列の関数として検証される(1506)。すなわち、記憶ノードは、受信されたリソース識別子を検証するためにローカルバージョンのリソース識別子を計算する。リソース識別子の検証に成功すると、第1のデータは記憶され、第1のリソース識別子と関連付けられる(1508)。そうでない場合、要求は拒まれる。一例において、独立記憶許可をオーバーレイレベルで実行することは、(a)第1の文字列を認証すること、および(b)第1のリソース識別子が第1の文字列および第2の文字列の組み合わせの関数であるか否かを決定することを含む。
記憶ノードは、続いて、記憶された第1のデータに対するデータアクセス要求を受信する(1510)。第1のデータへのアクセスレベルが次に決定される(1512)。データアクセス要求が、第1のリソース識別子および第1の文字列につていの知識を立証すると、記憶された第1のデータへのアクセスが認可される(1516)。そのようなアクセスは、第1のデータへの書込、変更、および/または、削除アクセスである。記憶された第1のデータへのアクセスを認可することは、第2のデータを用いた第1のデータの置き換えを許すことも含む。データアクセス要求が第1のリソース識別子についての知識を立証し、しかしながら第1の文字列につていの知識を立証できない場合、記憶された第1のデータへの読み取り専用アクセスが認可される(1514)。アクセス要求が、リソース識別子あるいは第1の文字列のいずれかの知識を立証できない場合、第1のデータへのアクセスは拒まれることに注意されたい。
図16(図16Aと16Bからなる)は、用途レベルで独立記憶許可を実行するために記憶ノードにおいて動作可能な方法の例を示す。記憶ノードは、ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するための第1の記憶要求を受信し、その第1の記憶要求は、第1のリソース識別子、記憶されるべき第1のデータ、第1の発行ノード識別子を含み、記憶ノードは第1のリソース識別子を含む識別子スペースに対して責任を持つ(1602)。第1のリソース識別子は、記憶されるべきデータのタイプと関連付けられた用途文字列の関数である。例えば、第1のリソース識別子は、オーバーレイネットワーク内のサービスにつていの既定の文字列の関数である。
加えて、記憶ノードは、また、ピア・ツー・ピアオーバーレイネットワークにおいて、データを記憶するために第2の記憶要求を受信し、その第2の記憶要求は、第1のリソース識別子、記憶されるべき第2のデータ、および、第2の発行ノード識別子を含む(1604)。独立記憶許可は、プロトコル階層の用途レベルで実行され、用途レベルはプロトコル階層においてオーバーレイレベルよりも上のレベルである(1606)第1のデータおよび第1の発行ノード識別子が記憶され、第1のリソース識別子と関連付けられる(1608)。第2のデータおよび第2の発行ノード識別子も記憶され、第1のリソース識別子と関連付けられる(1610)。
記憶ノードは、続いて、第1のリソース識別子と関連付けられたデータについてのデータアクセス要求を受信する(1612)。記憶されたデータへのアクセスレベルはデータアクセス要求に対して決定される(1614)。デフォルトで、記憶された第1のデータおよび第2のデータへの読み取り専用アクセスが認可される(1616)。しかし、データアクセス要求が第1の発行ノード識別子につていの知識を立証すると、記憶された第1のデータへの書き込みアクセスが認可される(1618)。同様に、データアクセス要求が第2の発行ノード識別子についての知識を立証すると、記憶された第2のデータへの書き込みアクセスが認可される(1620)。
一般的に、本開示で記述された処理のほとんどが同様の方式で実施されうることは認識されるべきである。任意の回路または回路セクション、1つ以上のプロセッサを有する集積回路の一部として、単独で、または、組み合わせて実施されうる。1つ以上の回路は、集積回路、アドバンスRISCマシン(ARM)プロセッサ、デジタル信号プロセッサ(DSP)、汎用プロセッサ等で実施されうる。
また、実施形態が、フローチャート、フロー図、概略図、またはブロック図として描写されるプロセスとして記述されうることに注意されたい。フローチャートは連続したプロセスとして動作を記述するが、大半の動作は、並行または同時に実行されることができる。加えて、動作の順序は再配列されうる。プロセスは、その動作が完了すると終了する。プロセスは、方法、機能、手順、サブルーティング、サブプログラム等に対応しうる。プロセスが機能に対応する場合、その終了は、機能が呼び出し機能または主機能に戻ることに対応する。
本出願で使用されるように、「コンポーネント」、「モジュール」、「システム」、およびそのようなものは、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組み合わせ、または実行中のソフトウェアのいずれかのコンピュータ関連エンティティを指すことを意図する。例えば、コンポーネントは、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであるが、それに限定されない。例として、計算デバイス上で実行中のアプリケーションと、その計算デバイスはコンポーネントでありうる。1つ以上のコンポーネントは、プロセスおよび/または実行スレッドに存在し、1つのコンポーネントは1つのコンピュータ上でローカル化され、および/または2つ以上のコンピュータ間で分散されうる。加えて、これらのコンポーネントは、それに記憶された様々なデータ構造を有する様々なコンピュータ読み取り可能媒体から実行することができる。コンポーネントは、例えば、1つ上のデータパケットを有する信号に従って、ローカルおよび/またはリモートプロセスによって通信しうる(例えば、ローカルシステム、分散システム内の別のコンポーネントと、および/またはインターネットのようなネットワークをまたいで信号を介して別のシステムとインタラクトする1つのコンポーネントからのデータ)。
さらに、記憶媒体はデータを記憶するための1つ以上のデバイスを表し、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスおよび/または、情報を記憶するための別の機械読み取り可能媒体を含む。「機械読み取り可能媒体」という用語は、ポータブルまたは固定記憶デバイス、光記憶デバイス、無線チャネル、および、命令および/またはデータを記憶、包含、または搬送することができる様々な別の媒体を含むがそれに限定されない。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、それらの任意の組み合わせによって実施されうる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードに実施された場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体または別のストレージのような機械読み取り可能媒体に記憶されうる。プロセッサはその必要なタスクを実行しうる。コードセグメントは、手順、機能、サブプログラム、プログラム、ルーティング、サブルーティング、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造、あるいはプログラムステートメントの任意の組み合わせを表す。コードセグメントは、情報、データ、アーギュメント、パラメータ、またはメモリコンテンツを伝送および/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されうる。情報、アーギュメント、パラメータ、データ等は、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信等を含む適切な手段のいずれかを介して伝達、伝送、または送信される。
図に示されるコンポーネント、ステップ、および/または機能の1つ以上は、擬似ランダム数を生成する動作に影響を及ぼさずに、再配列され、および/または、1つのコンポーネント、ステップ、あるいは、機能に結合され、または、いくつかのコンポーネント、ステップまたは機能に組み込まれる。さらなるエレメント、コンポーネント、ステップ、および/または機能が、また、本発明の範囲を逸脱することなく追加される。図に示される装置、デバイス、および/またはコンポーネントは、図に記述される1つ以上の方法、特徴、またはステップを実行するように構成されうる。本明細書に記述された新しいアルゴリズムは、有効に、ソフトウェアで実施され、および/またはハードウェアに組み込まれる。
当業者はさらに、本明細書に開示された実施形態と関連して記述されている様々な実例となる論理ブロック、モジュール、回路、アルゴリズムステップが電子ハードウェア、コンピュータソフトウェアまたは両方の組み合わせとして実施されることを認識するであろう。このハードウェアとソフトウェアの互換性を明確に示すために、様々な実例となるコンポーネント、ブロック、モジュール、回路、およびステップが、それらの機能性という観点から一般的に上に記述されている。ハードウェア、または、ソフトウェアとしてそのような機能性が実施されるか否かは、特定のアプリケーションとシステム全体に課された設計制約とに依存する。
本明細書に記述された発明の様々な特徴は、本発明の範囲を逸脱することなく、異なるシステムで実施されることができる。例えば、本発明のいくつかの実施形態は、移動または固定通信デバイス(例えば、アクセス端末)および複数の移動または固定基地局(例えば、アクセスポイント)で実行されうる。
前述の実施形態が単なる例であり、本発明を限定するとして解釈されないことに注意されたい。実施形態の記述は例示を目的とするものであり、特許請求の範囲の範囲を限定するものではない。このように、本教示は、別のタイプの装置に容易に適用されることができ、多くの代替、変更、および変形は当業者に明白であろう。

Claims (42)

  1. データを記憶するためにピア・ツー・ピアオーバーレイネットワークの発行ノードで動作可能な方法であって:
    前記発行ノードにおいて、リソース識別子を生成し、前記リソース識別子を第1のデータに関連付けることと、なお、前記リソース識別子は、前記発行ノードを識別する第1の文字列および前記第1のデータのための用途タイプに関連付けられた第2の文字列の組み合わせの関数であり、前記第1の文字列は記憶ノードによって独立して認証可能であり、前記リソース識別子は前記記憶ノードによって検証可能である
    前記発行ノードにおいて、前記リソース識別子、前記第1の文字列、および記憶されるべき前記第1のデータを含む記憶要求を生成することと;
    前記記憶ノード前記オーバーレイネットワークを通して前記記憶要求を送信することと、なお、前記リソース識別子は、識別子スペースに対して責任を持つ前記記憶ノードにマッピングし記記憶要求は、前記記憶ノードによってサポートされる用途とは独立に前記記憶ノードによって許可され、前記記憶要求の許可は、プロトコル階層において用途レベルよりも下であるオーバーレイレベルで前記第1の文字列の認証可能な証明を提供することに基づいて検証可能である
    を備える方法。
  2. 記第2の文字列は任意の文字列である、請求項1の方法。
  3. 記第2の文字列は前記オーバーレイネットワーク内のサービスについての既定の文字列である、請求項1の方法。
  4. 複数の異なるリソース識別子を生成することをさらに備え、前記複数の異なるリソース識別子の各々は前記第1の文字列および異なる第2の文字列の組み合わせの関数である、請求項1の方法。
  5. 前記異なるリソース識別子を生成することは、異なる記憶ノードが異なる識別子スペースに対して責任を持つ前記オーバーレイネットワーク内にデータ記憶負荷拡散を引き起こす、請求項の方法。
  6. 前記記憶要求は前記第1の文字列のインジケータも含む、請求項1の方法。
  7. 前記記憶要求は前記第2の文字列のインジケータも含む、請求項1の方法。
  8. 前記第2の文字列は、前記記憶ノードに記憶されるべき前記第1のデータに関連付けられる前記用途を識別する既定の文字列である、請求項1の方法。
  9. ピア・ツー・ピアオーバーレイネットワークを通して通信するための通信インターフェースと;
    前記通信インターフェースに結合されたコンピュータプロセッサと;
    を備え、前記コンピュータプロセッサは、
    リソース識別子を生成し、前記リソース識別子を第1のデータに関連付けることと、なお、前記リソース識別子は、前記発行ノードを識別する第1の文字列および前記第1のデータのための用途タイプに関連付けられた第2の文字列の組み合わせの関数であり、前記第1の文字列は記憶ノードによって独立して認証可能であり、前記リソース識別子は前記記憶ノードによって検証可能である;
    前記リソース識別子、前記第1の文字列、および記憶されるべき前記第1のデータを含む記憶要求を生成すること
    前記記憶ノードに前記オーバーレイネットワークを通して前記記憶要求を送信することと、なお、前記リソース識別子は、識別子スペースに対して責任を持つ前記記憶ノードにマッピングし、前記記憶要求は前記記憶ノードによってサポートされる用途とは独立に前記記憶ノードによって許可され、前記記憶要求の許可はプロトコル階層において用途レベルよりも下であるオーバーレイレベルで前記第1の文字列の認証可能な証明を提供することに基づいて検証可能である
    に適応される、発行ノードデバイス。
  10. 記第2の文字列は任意の文字列である、請求項9の発行ノードデバイス。
  11. 記第2の文字列は前記オーバーレイネットワーク内のサービスについて既定の文字列である、請求項9の発行ノードデバイス。
  12. 前記プロセッサは、複数の異なるリソース識別子を生成することにさらに適応され、前記複数の異なるリソース識別子の各々は前記第1の文字列および異なる第2の文字列の組み合わせの関数である、請求項10の発行ノードデバイス。
  13. 前記異なるリソース識別子を生成することは、異なる記憶ノードが異なる識別子スペースに対して責任を持つ前記オーバーレイネットワーク内でデータ記憶負荷拡散を引き起こす、請求項12発行ノードデバイス
  14. 発行ノードにおいて、リソース識別子を生成し、前記リソース識別子を第1のデータに関連付けるための手段と、なお、前記リソース識別子は、前記発行ノードを識別する第1の文字列および前記第1のデータのための用途タイプに関連付けられた第2の文字列の組み合わせの関数であり、前記第1の文字列は記憶ノードによって独立して認証可能であり、前記リソース識別子は前記記憶ノードによって検証可能である;
    前記リソース識別子、前記第1の文字列、および記憶されるべき前記第1のデータを含む記憶要求を生成するための手段と;
    前記記憶ノードに、ピア・ツー・ピアオーバーレイネットワークを通して前記記憶要求を送信するための手段と、なお、前記リソース識別子は、識別子スペースに対して責任を持つ前記記憶ノードにマッピングし、前記記憶要求は前記記憶ノードによってサポートされる用途タイプとは独立に前記記憶ノードによって許可され、前記記憶要求の許可はプロトコル階層において用途レベルよりも下であるオーバーレイレベルで前記第1の文字列の認証可能な証明を提供することに基づいて検証可能である
    を備える発行ノードデバイス。
  15. 前記第2の文字列は、前記記憶ノードに記憶されるべき前記第1のデータに関連付けられる前記用途を識別する既定の文字列である、請求項14の発行ノードデバイス。
  16. 記憶ノード上で動作可能な方法であって:
    前記記憶ノードにおいて、ピア・ツー・ピアオーバーレイネットワークにおける発行ノードのデータを記憶するため第1の記憶要求を受信することと、なお、前記第1の記憶要求は第1のリソース識別子、前記発行ノードを識別する認証可能な第1の文字列、および記憶されるべき関連付けられた第1のデータを含み、前記第1のリソース識別子は前記第1の文字列と、前記第1のデータのための用途タイプに関連付けられた第2の文字列との組み合わせの関数である;
    前記記憶ノードにおいて、前記第1のリソース識別子を検証することによって、プロトコル階層のオーバーレイレベルで独立記憶許可を実行することと、なお、前記実行される独立記憶許可は、前記記憶ノードによってサポートされる用途とは独立に前記第1の文字列の認証可能な証明を提供することに基づき、前記オーバーレイレベルは、前記プロトコル階層において用途レベルよりも下である
    前記第1のリソース識別子の検証に成功すると、前記記憶ノードにおいて、前記第1のデータを記憶し、それを前記第1のリソース識別子と関連付けることと;
    を備える方法。
  17. 前記オーバーレイレベルで独立記憶許可を実行することは:
    前記第1の文字列を認証することと;
    前記第1のリソース識別子が前記第1の文字列および前記第2の文字列の組み合わせの関数であるか否かを決定することと;
    を含む、請求項16の方法。
  18. 記第2の文字列は任意の文字列である、請求項16の方法。
  19. 記第2の文字列は前記オーバーレイネットワーク内のサービスについての既定の文字列である、請求項16の方法。
  20. 前記記憶された第1のデータに対するデータアクセス要求を受信することと;
    前記データアクセス要求が前記第1のリソース識別子および前記第1の文字列につていの知識を立証する場合に、前記記憶された第1のデータへのアクセスを認可することと;
    をさらに備える、請求項16の方法。
  21. 前記データアクセス要求が前記第1のリソース識別子についての知識を立証し、しかしながら前記第1の文字列についての知識を立証できない場合、前記記憶された第1のデータへの読み取り専用アクセスを認可することをさらに備える、請求項20の方法。
  22. 前記記憶された第1のデータへのアクセスを認可することは、第2のデータを用いた前記第1のデータの置き換えを許すことを含む、請求項20の方法。
  23. 前記第2の文字列は、前記第1のデータに関連付けられる前記用途を識別する既定の文字列である、請求項16の方法。
  24. ピア・ツー・ピアオーバーレイネットワークを通して通信するための通信インターフェースと;
    前記通信インターフェースに結合されたコンピュータプロセッサと;
    を備え、
    前記プロセッサは:
    前記ピア・ツー・ピアオーバーレイネットワークにおける発行ノードのデータを記憶するために第1の記憶要求を受信することと、なお、前記第1の記憶要求は第1のリソース識別子、前記発行ノードを識別する認証可能な第1の文字列、および記憶されるべき関連付けられた第1のデータを含み、前記第1のリソース識別子は、前記第1の文字列および前記第1のデータのための用途タイプに関連付けられた第2の文字列の組み合わせの関数である;
    前記第1のリソース識別子を検証することによって、プロトコル階層のオーバーレイレベルで独立記憶許可を実行することと、なお、前記実行される独立記憶許可は、前記記憶ノードによってサポートされる用途とは独立に前記第1の文字列の認証可能な証明を提供することに基づき、前記オーバーレイレベルは、前記プロトコル階層において用途レベルよりも下である
    前記第1のリソース識別子の検証が成功すると、前記第1のデータを記憶し、それを前記第1のリソース識別子と関連付けることと;
    に適応される、記憶ノードデバイス。
  25. 前記オーバーレイレベルで独立記憶許可を実行することは:
    前記第1の文字列を認証することと;
    前記第1のリソース識別子が前記第1の文字列および前記第2の文字列の組み合わせの関数であるか否かを決定することと;
    を含む、請求項24の記憶ノードデバイス。
  26. 前記プロセッサは:
    前記記憶された第1のデータに対してデータアクセス要求を受信することと;
    前記データアクセス要求が前記第1のリソース識別子および前記第1の文字列についての知識を立証する場合、前記記憶された第1のデータへのアクセスを認可することと;
    にさらに適応される、請求項24の記憶ノードデバイス。
  27. 前記プロセッサは、前記データアクセス要求が前記第1のリソース識別子についての知識を立証し、しかしながら前記第1の文字列についての知識を立証できない場合、前記記憶された第1のデータへの読み取り専用アクセスを認可することにさらに適応される、請求項26の記憶ノードデバイス。
  28. 前記記憶ノードにおいて、ピア・ツー・ピアオーバーレイネットワークにおける発行ノードのデータを記憶するための第1の記憶要求を受信するための手段と、なお、前記第1の記憶要求は第1のリソース識別子、前記発行ノードを識別する認証可能な第1の文字列、および記憶されるべき関連付けられた第1のデータを含み、前記第1のリソース識別子は前記第1の文字列および前記第1のデータのための用途タイプに関連付けられた第2の文字列の組み合わせの関数である;
    前記第1のリソース識別子を検証することによって、プロトコル階層のオーバーレイレベルで独立記憶許可を実行するための手段と、なお、前記実行される独立記憶許可は、前記記憶ノードによってサポートされる用途とは独立に前記第1の文字列の認証可能な証明を提供することに基づき、前記オーバーレイレベルは、前記プロトコル階層において用途レベルよりも下である
    前記第1のリソース識別子の検証に成功すると、前記第1のデータを記憶し、それを前記第1のリソース識別子と関連付けるための手段と;
    を備える、記憶ノードデバイス。
  29. データを記憶するためにピア・ツー・ピアオーバーレイネットワークの発行ノードで動作可能な方法であって:
    前記発行ノードにおいて、第2の文字列の関数としてリソース識別子を生成することと、なお、前記リソース識別子は記憶ノードによって検証可能であり、前記第2の文字列は、前記記憶ノードに記憶されるべき第1のデータに関連付けられる用途タイプを識別する既定の文字列である
    前記発行ノードにおいて、前記リソース識別子、記憶されるべき前記第1のデータ、および前記記憶ノードによって独立して認証可能な第1の文字列を含む記憶要求を生成することと;
    前記記憶ノード前記オーバーレイネットワークを通して前記記憶要求を送信することと、なお、前記リソース識別子は、識別子スペースに対して責任を持つ前記記憶ノードにマッピングし、前記オーバーレイネットワーク内の異なる発行ノードは、異なる対応する第1の文字列であるが、同一の用途タイプの異なるデータに対して同一のリソース識別子を含むデータ記憶要求を生成し、前記異なるデータ記憶要求は、前記異なる対応する第1の文字列を使用する用途レベル許可に基づいて互いに区別可能である
    を備える方法。
  30. 前記第1の文字列は発行ノード識別子である、請求項29の方法。
  31. 前記第1の文字列は、前記記憶ノードに記憶されるべき前記データに追加され、前記リソース識別子は、前記第1の文字列とは独立している、請求項30記載の方法。
  32. 前記記憶要求に対する許可は、前記第1の文字列を使用してプロトコル階層の用途レベルで検証可能であり、前記用途レベルは前記プロトコル階層においてオーバーレイレベルよりも上である、請求項29の方法。
  33. ピア・ツー・ピアオーバーレイネットワークを通して通信するための通信インターフェースと;
    前記通信インターフェースに結合されたコンピュータプロセッサと;
    を備え、
    前記プロセッサは:
    第2の文字列の関数としてリソース識別子を生成することと、なお、前記リソース識別子は記憶ノードによって検証可能であり、前記第2の文字列は、前記記憶ノードに記憶されるべき第1のデータに関連付けられる用途タイプを識別する既定の文字列である
    前記リソース識別子、記憶されるべき前記第1のデータ、および前記記憶ノードによって独立して認証可能な第1の文字列を含む記憶要求を生成することと;
    前記記憶ノードに前記オーバーレイネットワークを通して前記記憶要求を送信することと、なお、前記リソース識別子は、識別子スペースに対して責任を持つ前記記憶ノードにマッピングし、前記オーバーレイネットワーク内の異なる発行ノードは、異なる対応する第1の文字列であるが、同一の用途タイプの異なるデータに対して同一のリソース識別子を含むデータ記憶要求を生成し、前記異なるデータ記憶要求は、前記異なる対応する第1の文字列を使用する用途レベル許可に基づいて互いに区別可能である
    に適応される発行ノード
  34. 記憶ノード上で動作可能な方法であって:
    前記記憶ノードにおいて、ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するために第1の記憶要求を受信することと、前記第1の記憶要求は、第1のリソース識別子、記憶されるべき第1のデータ、および第1の発行ノード識別子を含み、なお、前記第1のリソース識別子は、前記第1のデータに関連付けられた用途タイプに基づき、前記第1のリソース識別子は、識別子スペースに対して責任を持つ前記記憶ノードにマッピングする
    前記記憶ノードにおいて、前記ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するために第2の記憶要求を受信することと、前記第2の記憶要求は、同一の第1のリソース識別子、記憶されるべき第2のデータ、および第2の発行ノード識別子を含み、前記第1のリソース識別子は、前記第2のデータと関連付けられた同一の用途タイプに基づく
    前記記憶ノードにおいて、前記第1のデータおよび前記第1の発行ノード識別子を記憶し、それらを前記第1のリソース識別子と関連付ることと;
    前記記憶ノードにおいて、前記第2のデータおよび前記第2の発行ノード識別子を記憶し、それらを前記第1のリソース識別子と関連付ることと;
    を備え
    前記第1および第2のデータは、前記同一の第1のリソース識別子を使用することによってアクセス可能であり、各アクセスは、対応する第1および第2の発行ノード識別子に基づいて独立して認証可能である、方法。
  35. 前記第1のリソース識別子は、記憶されるべきデータのタイプと関連付けられた用途文字列の関数である、請求項34の方法。
  36. 前記第1のリソース識別子は、前記オーバーレイネットワーク内のサービスについての既定の文字列の関数である、請求項34の方法。
  37. プロトコル階層の用途レベルで前記第1のリソース識別子および対応する発行ノード識別子を使用して独立記憶許可を実行することをさらに備え、前記用途レベルは前記プロトコル階層においてオーバーレイレベルよりも上である、請求項34の方法。
  38. 前記第1のリソース識別子と関連付けられたデータに対してデータアクセス要求を受信することと;
    前記記憶された第1のデータおよび第2のデータへの読み取り専用アクセスを認可することと;
    をさらに備える、請求項34の方法。
  39. 前記データアクセス要求が前記第1の発行ノード識別子についての知識を立証すると、前記記憶された第1のデータへの書込アクセスを認可することと;
    前記データアクセス要求が前記第2の発行ノード識別子についての知識を立証すると、前記記憶された第2のデータへの書込アクセスを認可することと;
    をさらに備える、請求項38の方法。
  40. 前記第1のリソース識別子は、前記第1の文字列とは独立している、請求項34の方法。
  41. ピア・ツー・ピアオーバーレイネットワークを通して通信するための通信インターフェースと;
    前記通信インターフェースに結合されたコンピュータプロセッサと;
    を備え、
    前記プロセッサは:
    前記ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するために第1の記憶要求を受信することと、前記第1の記憶要求は、第1のリソース識別子、記憶されるべき第1のデータ、および第1の発行ノード識別子を含み、なお、前記第1のリソース識別子は、前記第1のデータに関連付けられた用途タイプに基づき、前記第1の識別子は、識別子スペースに対して責任を持つ前記記憶ノードにマッピングする
    前記ピア・ツー・ピアオーバーレイネットワークにおいてデータを記憶するために第2の記憶要求を受信することと、前記第2の記憶要求は、同一の第1のリソース識別子、記憶されるべき第2のデータ、および第2の発行ノード識別子を含み、前記第1のリソース識別子は、前記第2のデータと関連付けられた同一の用途タイプに基づく
    前記第1のデータおよび前記第1の発行ノード識別子を記憶し、それらを前記第1のリソース識別子と関連付けることと;
    前記第2のデータおよび前記第2の発行ノード識別子を記憶し、それらを前記第1のリソース識別子と関連付けることと;
    に適応され
    前記第1および第2のデータは、前記同一の第1のリソース識別子を使用することによってアクセス可能であり、各アクセスは、対応する第1および第2の発行ノード識別子に基づいて独立して認証可能である、記憶ノードデバイス。
  42. 前記第1のリソース識別子は、前記第1の文字列とは独立している、請求項41の記憶ノードデバイス。
JP2011536488A 2008-11-14 2009-11-13 分散された記憶ネットワークにおけるデータ許可のためのシステムおよび方法 Expired - Fee Related JP5215476B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11501808P 2008-11-14 2008-11-14
US61/115,018 2008-11-14
US12/416,046 2009-03-31
US12/416,046 US8281023B2 (en) 2008-11-14 2009-03-31 Systems and methods for data authorization in distributed storage networks
PCT/US2009/064301 WO2010056936A2 (en) 2008-11-14 2009-11-13 Systems and methods for data authorization in distributed storage networks

Publications (2)

Publication Number Publication Date
JP2012508935A JP2012508935A (ja) 2012-04-12
JP5215476B2 true JP5215476B2 (ja) 2013-06-19

Family

ID=42170713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011536488A Expired - Fee Related JP5215476B2 (ja) 2008-11-14 2009-11-13 分散された記憶ネットワークにおけるデータ許可のためのシステムおよび方法

Country Status (7)

Country Link
US (1) US8281023B2 (ja)
EP (1) EP2356792B1 (ja)
JP (1) JP5215476B2 (ja)
KR (1) KR101330392B1 (ja)
CN (1) CN102217274B (ja)
TW (1) TW201031160A (ja)
WO (1) WO2010056936A2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327338B2 (en) 2009-01-15 2012-12-04 International Business Machines Corporation Overlay identification of data processing target structure
US8560855B2 (en) 2009-08-27 2013-10-15 Cleversafe, Inc. Verification of dispersed storage network access control information
US8572282B2 (en) 2009-10-30 2013-10-29 Cleversafe, Inc. Router assisted dispersed storage network method and apparatus
US9311185B2 (en) * 2009-10-30 2016-04-12 Cleversafe, Inc. Dispersed storage unit solicitation method and apparatus
US20120011143A1 (en) * 2010-07-09 2012-01-12 David Nash Publish and Subscribe Data Delivery System and Method Using Keys
TWI592805B (zh) * 2010-10-01 2017-07-21 傅冠彰 網路儲存與計算資源分享系統與方法
WO2012047204A1 (en) * 2010-10-05 2012-04-12 Empire Technology Development Llc Resource reservation
GB2499547B (en) 2010-11-22 2020-04-22 Ibm Load balancing in distributed database
US8843745B2 (en) * 2011-04-26 2014-09-23 Nalpeiron Inc. Methods of authorizing a computer license
CA3021623C (en) * 2011-06-08 2020-02-18 Socpra Sciences Et Genie S.E.C. Load management
US8874769B2 (en) * 2011-06-30 2014-10-28 Qualcomm Incorporated Facilitating group access control to data objects in peer-to-peer overlay networks
TWI420333B (zh) * 2011-08-10 2013-12-21 Inventec Corp 分散式的重複數據刪除系統及其處理方法
US10445164B2 (en) * 2011-11-01 2019-10-15 Pure Storage, Inc. Copying data in a dispersed storage network without replication
US9661442B2 (en) * 2011-11-01 2017-05-23 Ko-Chang Hung Method and apparatus for transmitting digital contents
US8849977B2 (en) * 2012-03-09 2014-09-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and a control node in an overlay network
US9286276B2 (en) * 2012-06-11 2016-03-15 Google Inc. System and method of document embedding in collaborative editors
CN104662867A (zh) * 2012-09-25 2015-05-27 瑞典爱立信有限公司 与受限互联网设备进行通信
US9529785B2 (en) 2012-11-27 2016-12-27 Google Inc. Detecting relationships between edits and acting on a subset of edits
US9130939B2 (en) * 2012-12-28 2015-09-08 Intel Corporation Ad hoc decentralized cloud infrastructure
WO2014108356A2 (en) * 2013-01-10 2014-07-17 Telefonaktiebolaget L M Ericsson (Publ) Connection mechanism for energy-efficient peer-to-peer networks
US9059858B1 (en) * 2013-03-11 2015-06-16 Ca, Inc. User characteristic based digital signature of documents
US9971752B2 (en) 2013-08-19 2018-05-15 Google Llc Systems and methods for resolving privileged edits within suggested edits
WO2015057237A1 (en) * 2013-10-18 2015-04-23 Empire Technology Development Llc Failure recovery scheme for a cloud system
US9348803B2 (en) 2013-10-22 2016-05-24 Google Inc. Systems and methods for providing just-in-time preview of suggestion resolutions
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9847918B2 (en) 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US9882906B2 (en) 2014-12-12 2018-01-30 International Business Machines Corporation Recommendation schema for storing data in a shared data storage network
US9800659B2 (en) 2015-02-02 2017-10-24 International Business Machines Corporation Enterprise peer-to-peer storage and method of managing peer network storage
US10013682B2 (en) 2015-02-13 2018-07-03 International Business Machines Corporation Storage and recovery of digital data based on social network
EP3286699A1 (en) * 2015-04-20 2018-02-28 OGY Docs Inc. A method of distributed management of electronic documents of title (edt) and system thereof
CN105610860A (zh) * 2016-02-01 2016-05-25 厦门优芽网络科技有限公司 一种用户私有数据的分享协议和实施方法
US10542570B2 (en) 2016-03-15 2020-01-21 Huawei Technologies Co., Ltd. System and method for relaying data over a communication network
US10615844B2 (en) * 2016-03-15 2020-04-07 Huawei Technologies Co., Ltd. System and method for relaying data over a communication network
US10091003B2 (en) * 2016-03-18 2018-10-02 Adobe Systems Incorporated Mobile signature embedded in desktop workflow
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11036692B2 (en) 2016-09-17 2021-06-15 Oracle International Corporation Governance pools in hierarchical systems
CN109791591B (zh) 2016-10-06 2023-07-07 万事达卡国际公司 经由区块链进行身份和凭证保护及核实的方法和系统
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
CN107403107B (zh) * 2017-07-18 2021-04-30 广西电网有限责任公司电力科学研究院 一种基于多点协作机制的数据安全管理方法及系统
CN107392499A (zh) 2017-08-10 2017-11-24 成都牵牛草信息技术有限公司 对使用者进行审批流程及其审批节点授权的方法
US11683213B2 (en) * 2018-05-01 2023-06-20 Infra FX, Inc. Autonomous management of resources by an administrative node network
EP3594843A1 (en) * 2018-07-10 2020-01-15 Klaxoon Improved scalable architecture of servers providing access to data content
CN109658238B (zh) 2018-10-26 2020-06-16 阿里巴巴集团控股有限公司 数据处理方法及装置
US10880406B2 (en) * 2019-03-05 2020-12-29 Mastercard International Incorporated Controlling access to data resources on high latency networks
CN109871715B (zh) * 2019-03-12 2022-09-02 深圳市迅雷网络技术有限公司 分布式存储文件的访问方法、装置及存储介质
US10951697B2 (en) * 2019-06-07 2021-03-16 Holo Limited Holochain—A framework for distributed applications
US11853438B2 (en) 2020-10-02 2023-12-26 Blockframe, Inc. Providing cryptographically secure post-secrets-provisioning services
JP2022135641A (ja) 2021-03-05 2022-09-15 キオクシア株式会社 I/oコマンド制御装置およびストレージシステム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7165152B2 (en) * 1998-06-30 2007-01-16 Emc Corporation Method and apparatus for managing access to storage devices in a storage system with access control
US7322040B1 (en) * 2001-03-27 2008-01-22 Microsoft Corporation Authentication architecture
US6741687B1 (en) * 2002-03-04 2004-05-25 Sprint Spectrum L.P. System and method for providing prepaid communications
US7401132B1 (en) * 2002-12-20 2008-07-15 Symantec Operating Corporation Method and system for creating a peer-to-peer overlay network
US20050076339A1 (en) * 2003-10-03 2005-04-07 Nortel Networks Limited Method and apparatus for automated negotiation for resources on a switched underlay network
US20080130516A1 (en) * 2004-12-21 2008-06-05 Electronics And Telecommunications Research Institute P2p Overplay Network Construction Method and Apparatus
US8015116B2 (en) * 2005-01-21 2011-09-06 Newport Scientific Research Llc Methods for authentication
EP1694027B1 (en) * 2005-02-22 2009-01-28 Microsoft Corporation Peer-to-peer network information
US9078084B2 (en) * 2005-12-22 2015-07-07 Qualcomm Incorporated Method and apparatus for end node assisted neighbor discovery
US8983468B2 (en) * 2005-12-22 2015-03-17 Qualcomm Incorporated Communications methods and apparatus using physical attachment point identifiers
US9736752B2 (en) * 2005-12-22 2017-08-15 Qualcomm Incorporated Communications methods and apparatus using physical attachment point identifiers which support dual communications links
US20070079096A1 (en) * 2005-09-30 2007-04-05 Chih-Wei Chen Data storage unit access authorization table automatic rebuilding method and system
WO2007082134A2 (en) * 2006-01-09 2007-07-19 Motorola, Inc. Method and system architecture for establishing a specific communication session in a communication network
US20070226225A1 (en) * 2006-03-22 2007-09-27 Yiu Timothy C Mobile collaboration and communication system
US20070288247A1 (en) * 2006-06-11 2007-12-13 Michael Mackay Digital life server
CN101170572A (zh) * 2006-10-23 2008-04-30 日电(中国)有限公司 基于p2p sip技术实现的多媒体网络通信系统
US8140506B2 (en) * 2006-11-30 2012-03-20 Red Hat, Inc. File sharing based on social network

Also Published As

Publication number Publication date
US8281023B2 (en) 2012-10-02
EP2356792B1 (en) 2013-04-03
CN102217274B (zh) 2015-06-03
US20100125670A1 (en) 2010-05-20
KR20110084457A (ko) 2011-07-22
CN102217274A (zh) 2011-10-12
JP2012508935A (ja) 2012-04-12
EP2356792A2 (en) 2011-08-17
WO2010056936A3 (en) 2010-11-11
KR101330392B1 (ko) 2013-11-15
WO2010056936A2 (en) 2010-05-20
TW201031160A (en) 2010-08-16

Similar Documents

Publication Publication Date Title
JP5215476B2 (ja) 分散された記憶ネットワークにおけるデータ許可のためのシステムおよび方法
US11140177B2 (en) Distributed data authentication and validation using blockchain
US7849303B2 (en) Peer-to-peer network information storage
US8365301B2 (en) Peer-to-peer network communication
JP5922773B2 (ja) ピアツーピアオーバーレイネットワークにおけるアクセス制御の容易化
CN101960814B (zh) Ip地址委派
US20060190715A1 (en) Peer-to-peer network information retrieval
CN109983752A (zh) 带有编码dns级信息的网络地址
EP1694027B1 (en) Peer-to-peer network information
CN113661683B (zh) 在分布式网络中存储表示资产转移的交易的方法及其程序
CN106790296B (zh) 域名记录验证方法及装置
JP2006236349A5 (ja)
WO2020010270A1 (en) Dynamic routing using a distributed hash table
WO2015096906A1 (en) Method and system for assessing a message in a decentralized communication network
Fotiou et al. Self-verifiable content using decentralized identifiers
CN116383789B (zh) 基于个人信息服务系统的信息交互方法
CN115733624A (zh) 工业物联平台架构的建立方法
CN118174942A (zh) 数据传输方法、装置及可读存储介质
CN116980114A (zh) 一种面向元宇宙的多标识管理和解析方法及系统
Lu Towards a large scale and secure identity-based framework for future networks
Lu et al. Vault: A secure binding service

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

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: 20130129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130228

R150 Certificate of patent or registration of utility model

Ref document number: 5215476

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees