(57)【要約】      （修正有）【課題】コンテンツの効率的且つセキュアな伝送を容易とするシステムを提供する。【解決手段】中間ノード１０２〜１１４は、複数のフラグメントにフラグメンテーションされたコンテンツオブジェクトメッセージ１３０のフラグメントに対応するパケットを受信する。複数のフラグメントのうちの１つ以上のフラグメントは、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含む階層的構造化可変長識別子である固有名称を示す。フラグメントは、以前のフラグメント及び受信したフラグメントに含まれるデータから中間状態において実行されるハッシュ関数に基づいている中間状態を示す。受信したフラグメントが最初のフラグメントであるという判定に応答して、コンテンツオブジェクトのハッシュに基づいており且つ最初のフラグメントに対応する名称を有するインタレストについての保留インタレスト表における第１のエントリを識別する。【選択図】図１
2017054500.tif 000002
【特許請求の範囲】
【請求項１】
パケットの転送を容易とするためのコンピュータシステムにおいて、
プロセッサと、
前記プロセッサによって実行されたときに前記プロセッサに方法を実行させる命令を記憶する記憶装置とを備え、前記方法が、
中間ノードにより、複数のフラグメントにフラグメンテーションされたコンテンツオブジェクトメッセージのフラグメントに対応するパケットを受信することを備え、
前記複数のフラグメントのうちの１つ以上のフラグメントが、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含む階層的構造化可変長識別子である固有名称を示し、
前記受信したフラグメントが、以前のフラグメント及び前記受信したフラグメントに含まれるデータから中間状態において実行されるハッシュ関数に基づいている中間状態を示し、
前記受信したフラグメントが最初のフラグメントであるという判定に応答して、コンテンツオブジェクトのハッシュに基づいており且つ前記最初のフラグメントに対応する名称を有するインタレストについての保留インタレスト表における第１のエントリを識別することを備える、コンピュータシステム。
【請求項２】
前記受信したフラグメントの名称が、中間状態と、前記受信したフラグメントの開始バイトに対応するバイトオフセットを示す数値とを示す、請求項１に記載のコンピュータシステム。
【請求項３】
前記受信したフラグメントの名称が、コンテンツオブジェクトメッセージについてのダイジェスト又はセグメント識別子を示す、請求項１に記載のコンピュータシステム。
【請求項４】
最初のフラグメントが、コンテンツオブジェクトメッセージの制作者のディジタル署名を示す、請求項１に記載のコンピュータシステム。
【請求項５】
最初のフラグメントが、ペイロードを含まないか又は再フラグメンテーションを必要としない所定の閾値よりも小さいサイズを有するペイロードを含む、請求項１に記載のコンピュータシステム。
【請求項６】
パケットの転送を容易とするためのコンピュータシステムにおいて、
プロセッサと、
前記プロセッサによって実行されたときに前記プロセッサに方法を実行させる命令を記憶する記憶装置とを備え、前記方法が、
コンテンツ制作装置により、インタレストメッセージに応答するコンテンツオブジェクトメッセージを生成することと、
コンテンツオブジェクトメッセージを複数のフラグメントにフラグメンテーションすることであり、複数のフラグメントのうちの１つ以上のフラグメントが、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含む階層的構造化可変長識別子である固有名称を示すことと、
前記コンテンツオブジェクトメッセージについての初期化ベクトルに対して実行されるハッシュ関数に基づいて最初のフラグメントについての中間状態を計算することと、
以前のフラグメント及び後続フラグメントのペイロードから中間状態において実行されるハッシュ関数に基づいて後続フラグメントについての中間状態を計算することとを備える、コンピュータシステム。
【請求項７】
前記１つ以上のフラグメントについての固有名称が、中間状態と、前記受信したフラグメントの開始バイトに対応するバイトオフセットを示す数値とを示す、請求項６に記載のコンピュータシステム。
【請求項８】
前記１つ以上のフラグメントについての固有名称が、前記コンテンツオブジェクトメッセージのダイジェストを示す、請求項６に記載のコンピュータシステム。
【請求項９】
前記方法が、さらに、
コンテンツ制作装置のディジタル署名を前記最初のフラグメントに含めることを備える、請求項６に記載のコンピュータシステム。
【請求項１０】
パケットを転送するためのコンピュータ実装方法において、
中間ノードにより、複数のフラグメントにフラグメンテーションされたコンテンツオブジェクトメッセージのフラグメントに対応するパケットを受信することを備え、
前記複数のフラグメントのうちの１つ以上のフラグメントが、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含む階層的構造化可変長識別子である固有名称を示し、
前記受信したフラグメントが、以前のフラグメント及び前記受信したフラグメントに含まれるデータから中間状態において実行されるハッシュ関数に基づいている中間状態を示し、
前記受信したフラグメントが最初のフラグメントであるという判定に応答して、コンテンツオブジェクトのハッシュに基づいており且つ前記最初のフラグメントに対応する名称を有するインタレストについての保留インタレスト表における第１のエントリを識別することを備える、コンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、ディジタルコンテンツの配信に関する。より具体的には、本開示は、フラグメンテーションプロトコルに基づくコンテンツ中心ネットワークにおけるセキュアで効率的なコンテンツの伝送のためのシステム及び方法に関する。
【背景技術】
【０００２】
インターネット及び電子商取引の普及は、膨大な量のディジタルコンテンツを作成し続けている。コンテンツ中心ネットワーク（ＣＣＮ）アーキテクチャは、そのようなディジタルコンテンツにアクセスして処理するのを容易とするように設計されている。ＣＣＮは、様々なコンテンツアイテムについてのインタレストパケットを送信し且つ返送においてコンテンツオブジェクトパケットを受信することによって互いに通信するネットワーククライアント、フォワーダ（例えば、ルータ）及びコンテンツ制作者などのエンティティ又はノードを含む。ＣＣＮインタレスト及びコンテンツオブジェクトは、典型的には階層的構造化可変長識別子（ＨＳＶＬＩ）であるそれらの固有名称によって識別される。ＨＳＶＬＩは、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含むことができる。一般に、インタレスト及びコンテンツオブジェクトは、それらが宛先に到達することができる前に多数のリンクを通って移動する。各リンクは、それ自体の最大伝送単位（ＭＴＵ）を有することができ、異なるＭＴＵ制限は、異なるフラグメンテーション要件を課す。エンドツーエンドのＣＣＮフラグメンテーションは、米国特許出願第１４／０６５，６９１号及び第１４／０６７，５８７号に記載されており、ＩＰカプセル化によるＣＣＮメッセージフラグメントのカットスルー転送は、米国特許出願第１４／３０９，６８１号に記載されている。
【０００３】
ＣＣＮに関連するフラグメンテーションプロトコルは、進化し続けている。ＣＣＮについての１つのセキュアなフラグメンテーションプロトコルは、Ｇｈａｌｉ等、「Ｓｅｃｕｒｅ  Ｆｒａｇｍｅｎｔａｔｉｏｎ  ｆｏｒ  Ｃｏｎｔｅｎｔ−Ｃｅｎｔｒｉｃ  Ｎｅｔｗｏｒｋｓ」、Ｃｏｍｐｕｔｉｎｇ  Ｒｅｓｅａｒｃｈ  Ｒｅｐｏｓｉｔｏｒｙ、１４０５．２８６１（２０１４年）に記載された整合性保証及び任意の認証（ＦＩＧＯＡ）によるフラグメンテーションとして知られている。ＦＩＧＯＡプロトコルは、ハッシュ計算を介してチェーン化されたフラグメントを形成し、名称についてインタレストと一致する名称を有するフラグメントを送信し、最後のフラグメント内に署名を含むことによって動作する。しかしながら、ＦＩＧＯＡプロトコルのもとで、コンテンツ制作者は、全てのフラグメントが受信されるまで要求エンティティによって署名の遅延検証を形成する最終フラグメントを署名する。この遅延検証は、データの全体スループットを減少させることがあり、また、悪意のあるパケットの注入をもたらすことがあり、非効率を形成してネットワークにおけるセキュリティ上の問題を生じることがある。さらに、ＦＩＧＯＡプロトコルは、特定のフラグメントの再送信を選択的に要求する方法を提供しない。フラグメントが削除されると、要求エンティティは、全データストリームを再要求し、ネットワークにおけるさらなる非効率性をもたらす。
【発明の概要】
【課題を解決するための手段】
【０００４】
１つの実施形態は、ネットワークにわたってコンテンツの効率的且つセキュアな伝送を容易とするシステムを提供する。動作中において、システムは、中間ノードにより、複数のフラグメントにフラグメンテーションされたコンテンツオブジェクトメッセージのフラグメントに対応するパケットを受信する。複数のフラグメントのうちの１つ以上のフラグメントは、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含む階層的構造化可変長識別子である固有名称を示す。受信したフラグメントは、受信したフラグメントに含まれる以前のフラグメント及びデータから中間状態において実行されるハッシュ関数に基づいている中間状態を示す。受信したフラグメントが最初のフラグメントであるという判定に応答して、システムは、コンテンツオブジェクトのハッシュに基づいており且つ最初のフラグメントに対応する名称を有するインタレストについての保留インタレスト表における第１のエントリを識別する。
【０００５】
いくつかの実施形態において、受信したフラグメントの名称は、中間状態と、受信したフラグメントについての開始バイトに対応するバイトオフセットを示す数値とを示す。
【０００６】
いくつかの実施形態において、受信したフラグメントの名称は、コンテンツオブジェクトメッセージについてのダイジェスト又はセグメント識別子を示す。
【０００７】
いくつかの実施形態において、最初のフラグメントは、コンテンツオブジェクトメッセージの制作者のディジタル署名を示す。
【０００８】
いくつかの実施形態において、最初のフラグメントは、ペイロードを含まないか又は再フラグメンテーションを必要としない所定の閾値よりも小さいサイズのペイロードを含む。
【０００９】
いくつかの実施形態において、受信したフラグメントは、コンテンツオブジェクトメッセージの他のフラグメントに示されるセグメント識別子を示し、フラグメントとコンテンツオブジェクトメッセージに対応する他のフラグメントとを識別する。
【００１０】
いくつかの実施形態において、受信したフラグメントは、コンテンツオブジェクトメッセージの最後のフラグメントであり、コンテンツオブジェクトメッセージの制作者のディジタル署名を含み、ディジタル署名は、コンテンツオブジェクトメッセージについてのセグメント識別子とダイジェストとの間の関係を形成する。
【００１１】
いくつかの実施形態において、受信したフラグメントが最初のフラグメントであるという判定に応答して、中間ノードは、コンテンツオブジェクトメッセージについてのダイジェスト又はセグメント識別子に基づいて保留インタレスト表において第２のエントリを作成し、保留インタレスト表から第１のエントリを削除する。受信したフラグメントが後続フラグメントであるという判定に応答して、中間ノードは、後続フラグメントに対応するダイジェスト又はセグメント識別子によるインタレストについての保留インタレスト表におけるエントリを識別する。
【００１２】
いくつかの実施形態において、最初のフラグメントは、コンテンツオブジェクトメッセージについての全長を含み、保留インタレスト表における対応するエントリは、転送されるバイトの全長及び全数を含む。受信したフラグメントが保留インタレスト表におけるエントリに対応するという判定に応答して、システムは、受信したフラグメントについての長さ及び位置に基づいて転送されるバイトの全数を更新する。転送されるバイトの全長が全体の長さに等しいという判定に応答して、システムは、保留インタレスト表から対応するエントリを削除する。
【００１３】
他の実施形態において、システムは、コンテンツ制作装置により、インタレストメッセージに応答してコンテンツオブジェクトメッセージを生成する。システムは、コンテンツオブジェクトメッセージを複数のフラグメントにフラグメンテーションし、複数のフラグメントのうちの１つ以上のフラグメントは、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含む階層的構造化可変長識別子である固有名称を示す。システムは、コンテンツオブジェクトメッセージについての初期化ベクトルに対して実行されるハッシュ関数に基づいて最初のフラグメントについての中間状態を計算する。さらに、システムは、以前のフラグメント及び後続フラグメントのペイロードから中間状態において実行されるハッシュ関数に基づいて後続フラグメントについての中間状態を計算する。
【００１４】
いくつかの実施形態において、コンテンツ制作装置は、コンテンツ制作装置のディジタル署名を最初のフラグメントに含める。
【００１５】
いくつかの実施形態において、コンテンツ制作装置は、最初のフラグメントにペイロードを含めないか又は再フラグメンテーションを必要としない所定の閾値よりも小さいサイズを有するペイロードを含める。
【００１６】
いくつかの実施形態において、コンテンツ制作装置は、コンテンツオブジェクトメッセージについてのセグメント識別子を生成し、複数のフラグメントの各フラグメントにセグメント識別子を含める。
【００１７】
いくつかの実施形態において、コンテンツオブジェクトメッセージが完全に生成されたという判定に応答して、コンテンツ制作装置は、最後のフラグメントを生成する。コンテンツ制作装置は、以前のフラグメント及び最後のフラグメントのペイロードから中間状態において実行されるハッシュ関数に基づいて完全なコンテンツオブジェクトメッセージについてのダイジェストを計算する。コンテンツ制作装置は、コンテンツ制作装置のディジタル署名を最後のフラグメントに含め、ディジタル署名は、セグメント識別子とコンテンツオブジェクトメッセージについての計算されたダイジェストとの間の関係を形成する。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の実施形態にかかる、ネットワークを介したコンテンツの効率的且つセキュアな伝送を容易とする例示的なネットワークを図示している。
【図２Ａ】図２Ａは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージの最初のフラグメントについての例示的なフォーマットを図示している。
【図２Ｂ】図２Ｂは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージの後続フラグメントについての例示的なフォーマットを図示している。
【図２Ｃ】図２Ｃは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージがライブストリームの一部であるコンテンツオブジェクトメッセージの最初のフラグメントについての例示的なフォーマットを図示している。
【図２Ｄ】図２Ｄは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージがライブストリームの一部であるコンテンツオブジェクトメッセージの後続フラグメントについての例示的なフォーマットを図示している。
【図２Ｅ】図２Ｅは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージがライブストリームの一部であるコンテンツオブジェクトメッセージの最後のフラグメントについての例示的なフォーマットを図示している。
【図３Ａ】図３Ａは、本発明の実施形態にかかるフラグメンテーションされたコンテンツオブジェクトを図示している。
【図３Ｂ】図３Ｂは、本発明の実施形態にかかる、図３Ａのコンテンツオブジェクトのフラグメントに対応する中間状態のチェーン化されたハッシュ計算を図示する表を表している。
【図４Ａ】図４Ａは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャートを表している。
【図４Ｂ】図４Ｂは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャートを表している。
【図５Ａ】図５Ａは、本発明の実施形態にかかる、データストリームがライブストリームであるコンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャートを表している。
【図５Ｂ】図５Ｂは、本発明の実施形態にかかる、データストリームがライブストリームであるコンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャートを表している。
【図６Ａ】図６Ａは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージのフラグメントを処理するための中間ノードによる方法を図示するフローチャートを表している。
【図６Ｂ】図６Ｂは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージのフラグメントを処理するための中間ノードによる方法を図示するフローチャートを表している。
【図６Ｃ】図６Ｃは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージのフラグメントを処理するための例示的なアルゴリズムを図示する表を表している。
【図６Ｄ】図６Ｄは、本発明の実施形態にかかる、保留インタレスト表におけるコンテンツオブジェクトメッセージのフラグメントを処理するための例示的なアルゴリズムを図示する表を表している。
【図７】図７は、本発明の実施形態にかかる、データストリームがライブストリームであるコンテンツオブジェクトメッセージのフラグメントを処理するための中間ノードによる方法を図示するフローチャートを表している。
【図８】図８は、本発明の実施形態にかかる、ネットワークを介したコンテンツの効率的且つセキュアな伝送を容易とする例示的な装置を図示している。
【図９】図９は、本発明の実施形態にかかる、ネットワークを介したコンテンツの効率的且つセキュアな伝送を容易とする例示的なコンピュータシステムを図示している。
【発明を実施するための形態】
【００１９】
図面において、同様の参照符号は、同じ図要素を指している。
【００２０】
以下の説明は、いかなる当業者も実施形態を作成して使用するのを可能とするために提示され、特定の用途及びその要件の文脈において提供される。開示された実施形態に対する様々な変更は、当業者にとって容易に明らかであり、本願明細書において定義された一般的な原理は、本開示の精神及び範囲から逸脱することなく他の実施形態及び用途に適用することができる。それゆえに、本発明は、示された実施形態に限定されるものではなく、本願明細書に開示された原理及び特徴と一致する最も広い範囲を与えられるべきである。
【００２１】
概説
本発明の実施形態は、効率的な署名検証を使用し且つ個々のフラグメントの選択的再送信を可能とするフラグメンテーションプロトコルに基づいてコンテンツ中心ネットワークを介したコンテンツの伝送を容易とするシステムを提供する。ＣＣＮコンテンツを伝送するための１つのフラグメンテーションスキームは、整合性保証及び任意の認証によるフラグメンテーション（ＦＩＧＯＡ）として知られている。ＦＩＧＯＡスキームのもとで、コンテンツ制作者は、コンテンツオブジェクトをフラグメンテーションし、ハッシュチェーンを有するフラグメントをチェーン化することができ、各フラグメントは、以前のフラグメント及び各フラグメントからのデータから中間状態に基づいて計算された中間状態を含む。ＦＩＧＯＡにおける各フラグメントは、コンテンツオブジェクトのメッセージの完全な名称を含むとともに、制作者の署名は、最後のフラグメントに含まれる。署名検証は、最後のフラグメントが受信されたときに計算することができるのみであるハッシュチェーンの最終状態に依存する。さらに、同じ名称が各フラグメントに含まれることから、ＦＩＧＯＡは、特定のフラグメント又はフラグメントのグループについての再送信要求を実行するための方法を提供しない。
【００２２】
本発明の実施形態は、より効率的な署名検証を可能とし且つ個々のＣＣＮコンテンツオブジェクトのフラグメントにおける直接的な対処を可能とするネットワーク名称付きフラグメント（ＮＮＦ）プロトコルとしても知られているフラグメンテーションプロトコルを提供することによってこれらの非効率性に対処する。ＮＮＦプロトコルにおいて、コンテンツ制作者の署名は、最初のフラグメントに含まれ、直ちに検証可能な署名を形成する。後続フラグメントは、それぞれ、各フラグメントのデータのハッシュ及び以前のフラグメントからの中間状態に基づいている中間状態を含む。それゆえに、最初のフラグメントにおける署名は、残りのフラグメントについての信頼できるハッシュチェーンのルートを形成する。
【００２３】
さらに、ＮＮＦプロトコルは、（図２Ａ〜図２Ｂに関連して以下に記載されるように）全体ダイジェスト、ペイロードオフセット及び中間状態などの特定の状態特性に基づいて各フラグメントを固有に識別する。これらの状態特性は、特定のフラグメントの選択的再送信を可能とするためにフラグメントの名称に符号化されることができる。符号化された名称は、ストリームの特定のフラグメントが受信されていないと判定したときに、コンテンツ要求者（又は中間ノード）がその固有名称によってフラグメントを選択的に要求するのを可能とし、それゆえにストリーム全体の再要求の必要性をなくす。
【００２４】
フラグメンテーションされたコンテンツの全長は、大きなペイロードの伝送を可能とする特定の長さに限定されるものではない。ＮＮＦプロトコルに基づいて送信されるコンテンツは、既知のダイジェスト（例えば、ビデオファイル）を有する非常に長いコンテンツとすることができるか、又は、ダイジェストがセグメント（例えば、ライブビデオストリーム）の終わりまで知られないセグメントとすることができる。セグメント化されたストリームの場合、ＮＮＦプロトコルに基づいてデータを送信するコンテンツ制作者は、各セグメントにおいて同一のセグメント識別子を生成して含めることができる。制作者は、全体ダイジェストが知られた後にのみ最後のフラグメントに署名し（例えば、以前のハッシュチェーンの中間状態に基づいて計算された）、それゆえに、全体ダイジェストにセグメント識別子を結合する。
【００２５】
以下の用語は、ＣＣＮアーキテクチャの要素について説明する。
【００２６】
コンテンツオブジェクト又は「コンテンツオブジェクト」：固有名称に結合されている名称付きデータの単一部分である。コンテンツオブジェクトは、「永続的」であり、これは、コンテンツオブジェクトがコンピューティングデバイス内又は異なるコンピューティングデバイス間を移動することができるが変化しないことを意味する。コンテンツオブジェクトの任意の要素が変化した場合、変更を行ったエンティティは、更新されたコンテンツを含む新たなコンテンツオブジェクトを作成し、新たな固有名称に新たなコンテンツオブジェクトを結合する。
【００２７】
固有名称：ＣＣＮ内の名称は、通常、場所とは無関係であり、コンテンツオブジェクトを固有に識別する。データ転送装置は、コンテンツオブジェクトについてのネットワークアドレス又は物理的場所にかかわらず、コンテンツオブジェクトを生成又は記憶するネットワークノードに向けてパケットを転送するために名称又は名称接頭辞を使用することができる。いくつかの実施形態において、名称は、階層的構造化可変長識別子（ＨＳＶＬＩ）とすることができる。ＨＳＶＬＩは、様々な方法で構築可能ないくつかの階層的な要素に分割されることができる。例えば、個々の名称要素ｐａｒｃ、ｈｏｍｅ、ｃｃｎ及びｔｅｓｔ．ｔｘｔは、名称「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」を形成するために左指向の接頭辞が主要である方法で構築可能である。それゆえに、名称「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ」は、「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」の「親」又は「接頭辞」とすることができる。共同文書などの異なるバージョンのコンテンツアイテムを区別するためにさらなる要素が使用可能である。
【００２８】
いくつかの実施形態において、名称は、コンテンツオブジェクトのデータ（例えば、チェックサム値）から及び／又はコンテンツオブジェクトの名称の要素から導出されたハッシュ値などの非階層的識別子を含むことができる。ハッシュベースの名称の説明は、米国特許出願第１３／８４７，８１４号（発明者Ｉｇｎａｃｉｏ  Ｓｏｌｉｓによる発明の名称「名称ベースのパケット転送についての順序付けられた要素名称付け」、２０１３年３月２０日出願）に記載されている。名称はまた、フラットラベルとすることができる。以下では、「名称」は、階層名称若しくは名称接頭辞、フラット名称、固定長名称、任意長名称又はラベル（例えば、マルチプロトコルラベルスイッチング（ＭＰＬＳ）ラベル）など、名称付きデータネットワークにおけるデータの一部についての任意の名称を指すのに使用される。
【００２９】
インタレスト又は「インタレスト」：データの一部についての要求を示し且つデータの一部についての名称（又は名称接頭辞）を含むパケットである。データ消費者は、ＣＣＮルータが、要求やインタレストを満たすために要求されたデータを提供することができる記憶装置（例えば、キャッシュサーバ）又はデータ制作者に向けて伝播することができる情報中心ネットワークにわたって要求又はインタレストを広めることができる。
【００３０】
本願明細書に開示された方法は、ＣＣＮネットワークに限定されるものではなく、他のアーキテクチャにも同様に適用可能である。ＣＣＮアーキテクチャの記載は、米国特許出願第１２／３３８，１７５号（発明者Ｖａｎ  Ｌ．  Ｊａｃｏｂｓｏｎ及びＤｉａｎａ  Ｋ．  Ｓｍｅｔｔｅｒｓによる発明の名称「コンテンツ中心ネットワークにおけるインタレスト及びコンテンツの拡散制御」、２００８年１２月１８日出願）に記載されている。
【００３１】
例示的なネットワーク及び通信
図１は、本発明の実施形態にかかる、ネットワークを介したコンテンツの効率的且つセキュアな伝送を容易とする例示的なネットワーク１００を図示している。ネットワーク１００は、コンテンツ中心ネットワーク（ＣＣＮ）とすることができ、クライアント装置１１６と、コンテンツ制作装置１１８と、ノード１０２、１０４、１０６、１０８、１１０、１１２及び１１４におけるルータ又は他の転送装置とを含むことができる。ＣＣＮルータは、ＩＰルータの上に存在するＣＣＮ転送装置とすることができる。換言すれば、ＣＣＮは、ＩＰの上にオーバーレイとして実装されることができる。他のＣＣＮオーバーレイアーキテクチャもまた可能である。ノードは、コンピュータシステム、ユーザを表すエンドポイント、及び／又は、インタレストを生成するか若しくはコンテンツを発信することができる装置とすることができる。
【００３２】
（装置１１６などの）要求エンティティは、コンテンツの一部におけるインタレストを生成してノード１０２に対して送信することができる。（ＣＣＮルータ１０２、１０４、１１２及び１１４などの）中間ノードは、インタレストを受信して転送することができる。（装置又はコンテンツ制作者１１８などの）コンテンツ制作者は、要求されたインタレストを満たすことができる。制作者１１８は、例えばフラグメント１３０．１〜１３０．ｘなどのｘ個のフラグメントに応答コンテンツオブジェクト１３０をフラグメンテーションすることができる。制作者１１８は、（図２Ａ及び図２Ｂに関連して以下に記載されるように）最初のフラグメントに署名し、（図３Ａ及び図３Ｂに関連して以下に記載されるように）残りのフラグメントの信頼できるハッシュチェーンを形成することができる。制作者１１８は、フラグメント１３０．１〜１３０．ｘの転送を直ちに開始することができ、フラグメントは、（例えば、ノード１１４、１１２、１０４及び１０２に対して）インタレストとして逆経路を移動し、装置１１６に到達する。最初のフラグメント（例えば、フラグメント１３０．１）を受信すると、装置１１６は、残りのフラグメントについての信頼できるハッシュチェーンのルートを形成する最初のフラグメントについての署名を直ちに検証することができる。装置１１６は、最後のフラグメントが（ＦＩＧＯＡプロトコルのもとで）受信された場合にのみ発生することがある署名検証から生じる遅延なしで、残りの信頼できるフラグメントを効率的に受信し続けることができる。ＣＣＮにおいて、中間ノードは、署名検証を行うことができるが、行う必要はないことに留意されたい。それゆえに、同じ効率は、要求装置について中間ノードによって実行される署名検証のために得ることができる。装置１１６は、コンテンツオブジェクトフラグメント１３０．１〜１３０．ｘを受信し、コンテンツオブジェクト１３０を再構築することができる。
【００３３】
全体ダイジェスト及び全体の長さが前もって知られているとき、最初のフラグメントに署名する消費者のための利益に留意することが重要である。最後のフラグメントが署名される場合、代わりに、消費者は、全ての以前のフラグメントをバッファリングし、受信することになる全てのコンテンツやデータを使用する前に検証された署名を待機しなければならない。署名を確認するファイアウォールシステムは、同様に、全てのフラグメントをバッファリングしなければならないか、又は、検証に失敗した場合にそれらを通過させて最後のフラグメントを削除しなければならない。最初のフラグメントが署名されていることから、消費者は、署名検証時間がネットワーク時間にわたって償却することができない場合に最後のフラグメントが署名を開始するのとは対照的に、後のフラグメントの受信と並行して署名検証を開始することができる。１つの例は、Ｇｕｎｅｙｓｕ等、「格子ベースの署名のためのソフトウェアスピードレコード」、Ｐｏｓｔ−Ｑｕａｎｔｕｍ  Ｃｒｙｐｔｏｇｒａｐｈｙ、Ｖｏｌｕｍｅ  ７９３２：６７−８２、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ（「Ｇｕｎｅｙｓｕ」）においてみることができる。Ｇｕｎｅｙｓｕは、ＲＳＡ２０４８ビット署名検証は、７７，０３２ＣＰＵサイクルを要し、楕円曲線は、２０９，３２８ＣＰＵサイクルを要し、最適化された格子署名検証は、４５，０３６ＣＰＵサイクルを要することを見出している。３ＧＨｚのＣＰＵを仮定すると、これらの時間は、それぞれ、２５．６マイクロ秒、６９．８マイクロ秒及び１５．０マイクロ秒である。１０Ｇｂｐｓのリンクにおいて、１５００バイトのパケットは、約１．２マイクロ秒を要し、そのため、これらの遅延は、１２．５から５８パケット時間である。
【００３４】
ＣＣＮコンテンツオブジェクトメッセージのフラグメントの例示的なフォーマット
図２Ａは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージの最初のフラグメント２１０についての例示的なフォーマットを図示している。最初のフラグメント２１０は、以下のフィールドを含むことができる：コンテンツオブジェクトの名称を示すことができ、また、フラグメントを具体的に識別するために符号化された情報を含むことができる名称２１１；ＣＣＮコンテンツオブジェクトメッセージについての全体がフラグメンテーションされたペイロードのダイジェストである全体ダイジェスト２１２；このフラグメントが開始するバイトオフセットであるペイロードオフセット２１３；このフラグメント（例えば、データ２１６）に関連付けられた初期化ベクトル及びペイロード又はデータに基づいて計算される値である中間状態２１４；全体がフラグメンテーションされたペイロードの長さの合計である全体の長さ２１５；中間状態２１４を計算するためのこのフラグメントのペイロード及びハッシュ関数の入力フィールドの１つであるデータ２１６；及び、コンテンツオブジェクトメッセージの制作者の署名である署名２１７。図６Ａに関連して以下に記載されるように、最初のフラグメント２１０は、中間ノードによって再フラグメンテーションすることができない。それゆえに、最初のフラグメント２１０は、ペイロードを含まないか（例えば、データ２１６がない）又はネットワークの既知のＭＴＵよりも小さいサイズを有するペイロードを含むことができる。
【００３５】
図２Ｂは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージの後続フラグメント２２０についての例示的なフォーマットを図示している。後続フラグメント２２０は、図２Ａの最初のフラグメント２１０と同様のフィールドを含むことができる。例えば、後続フラグメント２２０は、以下のフィールドを含むことができる：名称２２１；全体ダイジェスト２２２；ペイロードオフセット２２３；中間状態２２４；及びデータ２２５。名称２２１は、（米国特許出願第１４／３３７，０２６号に記載されているように）ＣＣＮｘ名称なしオブジェクトがサポートされる場合、後続フラグメントにおいては任意とすることができる。ＮＮＦプロトコルのもとで、名称は、最初のフラグメントに含まれる。後続フラグメント２２０についての中間状態２２４は、以前のフラグメントの中間状態２１４（例えば、最初のフラグメント２１０の中間状態２１４）で実行されるハッシュ関数に基づいて計算される。
【００３６】
全体ダイジェスト２１２及び２２２は、それぞれ、例えば既知のファイルをフラグメンテーションするときなど、ハッシュチェーン及び最後の全体ダイジェストが事前に知られているとき、最初のフラグメント２１０及び後続フラグメント２２０に含めることができる。ＮＮＦプロトコルは、例えばライブストリームなどの保留されたダイジェスト計算によって既知の長さのセグメントにおいて送信された終端されていないデータストリームの場合に僅かに異なるフォーマットを提供する。図２Ｃは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージがライブストリームの一部であるコンテンツオブジェクトメッセージの最初のフラグメント２３０についての例示的なフォーマットを図示している。最初のフラグメント２３０は、図２Ａの最初のフラグメント２１０と同様のフィールドを含むことができる。例えば、最初のフラグメント２３０は、以下のフィールドを含むことができる：名称２３１；ペイロードオフセット２３３；中間状態２３４；及びデータ２３６。最初のフラグメント２３０はまた、コンテンツ制作者によって生成され且つ例えばライブデータストリームなどの全てのフラグメントに含まれるセグメント識別子２３２を含むことができる。さらに、最初のフラグメント２３０は、ストリームの全長が不明であるとき、現在のセグメントの長さを含むことができる全体の長さ２３５を含むことができる。最初のフラグメント２１０とは異なり、最初のフラグメント２３０は署名を含まない。
【００３７】
図２Ｄは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージがライブストリームの一部であるコンテンツオブジェクトメッセージの後続フラグメント２４０についての例示的なフォーマットを図示している。後続フラグメント２４０は、最初のフラグメント２３０と同様のフィールドを含むことができる。例えば、後続フラグメントは、名称２４１と、セグメント識別子２４２と、ペイロードオフセット２４３と、中間状態２４４と、データ２４５とを含むことができる。後続フラグメント２４０は、署名又は全体の長さを含んでいない。
【００３８】
図２Ｅは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージがライブストリームの一部であるコンテンツオブジェクトメッセージの最後のフラグメント２５０についての例示的なフォーマットを図示している。最後のフラグメント２５０は、最初のフラグメント２３０と同様のフィールドを含むことができる。例えば、最後のフラグメント２５０は、名称２５１と、セグメント識別子２５２と、ペイロードオフセット２５３と、中間状態２５４と、データ２５５とを含むことができる。これらのフィールドに加えて、最後のフラグメント２５０は、（図５Ｂに関連して以下に記載されるように）全てのフラグメンテーションされたデータのハッシュチェーンに基づいて制作者によって計算される全体ダイジェスト２５６を含むことができる。最後のフラグメント２５０はまた、コンテンツの制作者の署名２５７を含むことができ、署名２５７は、コンテンツオブジェクトメッセージのセグメント識別子に全体ダイジェストを結合する。
【００３９】
図３Ａは、本発明の実施形態にかかる、フラグメンテーションされたコンテンツオブジェクト３００を図示している。コンテンツオブジェクト３００は、名称３１１、全体ダイジェスト３１２、ペイロードオフセット３１３、中間状態３１４（「ＩＳ０」）、データ３１５（「ＤＡＴＡ０」）及び署名３１６を含む最初のフラグメント３１０を含む。フラグメント３２０、３３０、３４０及び３５０は、最初のフラグメント３１０と同様のフィールドを含むが、署名フィールドを含んでいない。
【００４０】
図３Ｂは、本発明の実施形態にかかる、図３Ａのコンテンツオブジェクト３００のフラグメント３１０〜３５０に対応する中間状態のチェーン化されたハッシュ計算を図示する表３６０を表している。最初のフラグメント３１０において、中間状態３１４（ＩＳ０）は、最初のフラグメント３１０の初期化ベクトル及びデータ３１５（ＤＡＴＡ０）のハッシュに基づいて計算される。後続フラグメント３２０において、中間状態３２４（ＩＳ１）は、以前のフラグメントの中間状態（フラグメント３１０のＩＳ０）及びフラグメント３２０のデータ３２５（ＤＡＴＡ１）のハッシュに基づいて計算される。各後続フラグメントは、以前のフラグメントの中間状態及びその後続フラグメントのデータのハッシュに基づいて計算された中間状態を含む。最後に、フラグメント３５０の全体ダイジェスト３５２は、最後のフラグメントの中間状態（フラグメント３５０のＩＳ４）の関数に基づいて計算される。関数は、入力に基づいて出力を確定するハッシュ関数又は任意の他の関数とすることができる。
【００４１】
フラグメント又は複数のフラグメントの選択的再送信
ＮＮＦプロトコルは、例えば、｛Ｎａｍｅ，  ＯｖｅｒａｌｌＤｉｇｅｓｔ，  ＰａｙｌｏａｄＯｆｆｓｅｔ，  ＩｎｔｅｒｍｅｄｉａｔｅＳｔａｔｅ｝に基づいて各フラグメントを固有に識別することから、特定のこれらの特性は、選択的再送信のためにフラグメントに固有に対処するために名称に符号化されることができる。例えば、全体ダイジェスト（「ＯＤ」）は、ペイロードオフセット（「ＰＯ」）及び中間状態（「ＩＳ」）は、以下のようにフラグメントの名称に符号化されることができる。
【００４２】
／ｐａｒｃ．ｃｏｍ／ｍｏｖｉｅ．ａｌｔｏ．ｍｋｖ／ＯＤ＝１２３ａｂｃ／ＰＯ＝４０９６／ＩＳ＝６５３ｅｆａ      （１）
【００４３】
この名称付け規則を使用することにより、要求エンティティ又は中間ノードは、特定のフラグメントを選択的に要求することができる。
【００４４】
全てのフラグメントを名称付けする必要はない。制作者は、例えば、全ての３番目のフラグメントに名称付けすることができる。ＭＴＵが１５００バイトである場合、この場合の再送信ウィンドウは、４５００バイトである。消費者がそのようなブロックにおける１つ以上のフラグメントを失うと、最も近い前の名称付けフラグメントについてのインタレストを送信する必要があるのみであり、その名称付けブロックにおける全てのフラグメントの再送信を受信する。
【００４５】
最初のフラグメントは、２つの名称を有することに留意されたい。例えば「／ｐａｒｃ／ｃｏｍ／ｍｏｖｉｅ．ａｌｔｏ．ｍｋｖ」などの全てのフラグメントを取得する一般名称があり、例えば「／ｐａｒｃ／ｃｏｍ／ｍｏｖｉｅ．ａｌｔｏ．ｍｋｖ／ＯＤ＝１２３ａｂｃ／ＰＯ＝０／ＩＳ＝６ａ０９ｅ６６７…」などのフラグメント名があり、この場合のＩＳは、ＳＨＡ−２５６の初期化ベクトルである。フラグメント名は、一般名称のようなフラグメントのセット全体ではなく、最初のフラグメント又は最初のフラグメントブロックを取得するのみである。
【００４６】
上記名称（１）と同様に、制作者は、ＯｖｅｒａｌｌＤｉｇｅｓｔの代わりに、以下のようにセグメントＩＤを有するセグメントのフラグメントに名称付けすることができる。
【００４７】
／ｐａｒｃ／ｃｏｍ／ｍｏｖｉｅ．ａｌｔｏ．ｍｋｖ／ＳＩＤ＝４４４ｄｄｄ／ＰＯ＝４０９６／ＩＳ＝１３５ａｃｅ      （２）
【００４８】
名称（２）と同様の名称を有するインタレストは、全てのフラグメントが名称を担持しない場合には、個々のセグメントフラグメント又はセグメントフラグメントブロックの再送信を可能とする。
【００４９】
さらに、要求エンティティは、名称及び追加のペイロードサイズを含めることによってフラグメントのサブセット又はチェーンを選択的に要求することができる。例えば、以下の名称を有するインタレストを考える。
【００５０】
／ｐａｒｃ．ｃｏｍ／ｍｏｖｉｅ．ａｌｔｏ．ｍｋｖ／ＯＤ＝１２３ａｂｃ／ＰＯ＝４０９６／ＩＳ＝６５３ｅｆａ／ＰＳ＝８１９２      （３）
【００５１】
各個々のフラグメントのサイズが１０２４Ｂである場合、名称（３）を有するインタレストは、バイトオフセット４０９６で始まる４つのフラグメントのチェーンを返す。再フラグメンテーションがまた発生することもある。例えば、以下の名称を有するインタレストを考える。
【００５２】
／ｐａｒｃ．ｃｏｍ／ｍｏｖｉｅ．ａｌｔｏ．ｍｋｖ／ＯＤ＝１２３ａｂｃ／ＰＯ＝４０９６／ＩＳ＝６５３ｅｆａ／ＰＳ＝７６８０      （４）
【００５３】
名称（３）を有するインタレストと同様に、名称（４）を有するインタレストは、４つのフラグメントのチェーンを返す。しかしながら、チェーンの４番目のフラグメントは、５１２Ｂに再フラグメンテーションされる。
【００５４】
既知の長さのコンテンツオブジェクトのフラグメンテーション
図４Ａは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャート４００を表している。動作中において、システムは、コンテンツ制作装置又はコンテンツ制作者により、インタレストメッセージに応答するコンテンツオブジェクトメッセージを生成する（動作４０２）。コンテンツ制作者は、コンテンツオブジェクトメッセージを複数のフラグメントにフラグメンテーションし、１つ以上のフラグメントは、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含むＨＳＶＬＩである固有名称を示す（動作４０４）。コンテンツ制作者は、コンテンツオブジェクトメッセージについての初期化ベクトルに対して実行されるハッシュ関数及び最初のフラグメントについてのペイロード又はデータに基づいて最初のフラグメントについての中間状態を計算する（動作４０６）。コンテンツ制作者は、最初のフラグメントにコンテンツ制作者についてのディジタル署名を含めることによって最初のフラグメントに署名する（動作４０８）。コンテンツ制作者は、以前のフラグメント及び後続フラグメントについてのペイロード又はデータから中間状態において実行されるハッシュ関数に基づいて後続フラグメントについての中間状態を計算する（動作４１０）。コンテンツ制作者は、後続フラグメントが最後のフラグメントであるかどうかを判定する（判定４１２）。そうでない場合、コンテンツ制作者は、次の後続フラグメントに対して動作４１０を繰り返す。最後のフラグメントである場合、図４ＢにおけるラベルＡによって記載されるように動作が継続する。
【００５５】
図４Ｂは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャート４５０を表している。動作中において、システムは、コンテンツ制作装置又はコンテンツ制作者により、最後のフラグメントについての中間状態に基づいてコンテンツオブジェクトメッセージについての全体ダイジェストを計算する（動作４５２）。コンテンツ制作者は、最初のフラグメント及び全ての後続フラグメントに全体ダイジェストを含める（動作４５４）。そして、コンテンツ制作者は、（図４Ａの動作４０２に記載された）インタレストメッセージの逆経路に基づいて次ホップＣＣＮノードに対して各フラグメントを送信することによって全てのフラグメントを転送する（動作４５６）。
【００５６】
未知の長さのコンテンツオブジェクトのフラグメンテーション
図４Ａ及び図４Ｂは、例えばビデオファイルのような既知の長さのファイルなど、ダイジェストが事前に知られている場合のＮＮＦプロトコルのもとでのフラグメンテーションを示している。いくつかの実施形態において、ダイジェストは、例えばライブデータストリームのような未知の長さのファイルについては事前に知られていない。図５Ａは、本発明の実施形態にかかる、データストリームがライブストリームであるコンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャート５００を表している。動作中において、システムは、コンテンツ制作装置又はコンテンツ制作者により、インタレストメッセージに応答するコンテンツオブジェクトメッセージを生成する（動作５０２）。コンテンツ制作者は、コンテンツオブジェクトメッセージを複数のフラグメントにフラグメンテーションし、１つ以上のフラグメントは、最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含むＨＳＶＬＩである固有名称を示す（動作５０４）。コンテンツ制作者は、コンテンツオブジェクトメッセージについての初期化ベクトルに対して実行されるハッシュ関数及び最初のフラグメントについてのペイロード又はデータに基づいて最初のフラグメントについての中間状態を計算する（動作５０６）。コンテンツ制作者は、コンテンツオブジェクトメッセージについてのセグメント識別子を生成し（動作５０８）、最初のフラグメントにセグメント識別子を含める（動作５１０）。コンテンツ制作者は、インタレストメッセージの逆経路に基づいて次ホップＣＣＮノードに対して最初のフラグメントを送信することによって最初のフラグメントを転送する（動作５１２）。図５ＢにおけるラベルＢによって記載されるように動作が継続する。
【００５７】
図５Ｂは、本発明の実施形態にかかる、データストリームがライブストリームであるコンテンツオブジェクトメッセージをフラグメンテーションするためのコンテンツ制作装置による方法を図示するフローチャート５５０を表している。動作中において、コンテンツ制作者は、以前のフラグメントから中間状態において実行されるハッシュ関数及び後続のフラグメントについてのペイロード又はデータに基づいて後続フラグメントについての中間状態を計算する（動作５５２）。コンテンツ制作者は、後続フラグメントにセグメント識別子を含める（動作５５４）。コンテンツ制作者は、インタレストメッセージの逆経路に基づいて次ホップＣＣＮノードに対して送信することによって後続フラグメントを転送する（動作５５６）。
【００５８】
そして、コンテンツ制作者は、後続フラグメントが最後のフラグメントであるかどうかを判定する（判定５５８）。そうでない場合、コンテンツ制作者は、次の後続フラグメントに対して動作５５２、５５４及び５５６を繰り返す。最後のフラグメントである場合、コンテンツ制作者は、最後のフラグメントについての中間状態に基づいてコンテンツオブジェクトメッセージについての全体ダイジェストを計算し（動作５６０）、最後のフラグメントに全体ダイジェストを含める（動作５６２）。コンテンツ制作者は、最後のフラグメントにコンテンツ制作者についてのディジタル署名を含めることによって最後のフラグメントに署名し、ディジタル署名は、セグメント識別子と全体ダイジェストとの間の関係又は結合を形成する（動作５６４）。最後のフラグメントは、ペイロードを含まないテールオブジェクトとすることができ、全体ダイジェストを計算する処理遅延後に送信されることができる。テールオブジェクトは署名されていることから、テールオブジェクトのサイズは、中間ノードによる再フラグメンテーションを回避するために小さいままである。
【００５９】
そして、コンテンツ制作者は、インタレストメッセージの逆経路に基づいて次ホップＣＣＮノードに対して送信することによって最後のフラグメントを転送する（動作５６６）。動作５１２は、動作５５６及び５６６の前に発生するものとして示されているが、最初のフラグメントは、他のフラグメント（例えば、後続且つ最後のフラグメント）の前に到達しない場合があることに留意されたい。コンテンツ消費者などの要求エンティティは、残りのフラグメントを信用して処理して再構築する前にハッシュチェーンのルートとして最初のフラグメントを処理する。
【００６０】
既知の長さのコンテンツオブジェクトのフラグメントの処理
図６Ａは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージのフラグメントを処理するための中間ノードによる方法を図示するフローチャート６００を表している。動作中において、システムは、中間ノードにより、ＨＳＶＬＩである名称を有するインタレストメッセージを受信する（動作６０２）。インタレストはまた、コンテンツオブジェクトハッシュ制限を含むことができる。例えば、名称は、コンテンツオブジェクトハッシュ制限を含むハッシュベースの名称とすることができる。中間ノードは、名称と含まれる場合にはコンテンツオブジェクトハッシュとを含むインタレストメッセージについてのエントリをその保留インタレスト表（ＰＩＴ）に追加する（動作６０４）。中間ノードは、複数のフラグメントにフラグメンテーションされたコンテンツオブジェクトメッセージのフラグメントに対応するパケットをその後に受信する（動作６０６）。複数のフラグメントのうちの１つ以上は、ＨＳＶＬＩである固有名称を示す。受信したフラグメントは、以前のフラグメント及び受信したフラグメントに含まれるデータから中間状態において実行されるハッシュ関数に基づいている中間状態を示す。
【００６１】
中間ノードは、受信したフラグメントが最初のフラグメントであるかどうかを判定する（判定６０８）。受信したフラグメントが最初のフラグメントである場合、中間ノードは、最初のフラグメントについての名称又はコンテンツオブジェクトハッシュに基づいてＰＩＴにおける対応するエントリ（「第１のエントリ」）を識別する（動作６１０）。最初のフラグメントは、名称、鍵ＩＤ、コンテンツオブジェクトハッシュ、全体の長さ及び全体ダイジェストを含む署名されたコンテンツオブジェクトとすることができる。中間ノードは、最初のフラグメントに含まれる全体ダイジェストに基づいてＰＩＴにおいて新たなエントリ（「第２のエントリ」）を作成し、ＰＩＴから第１のエントリを削除する（動作６１２）。第２のＰＩＴエントリはまた、全体の長さを含むことができる。署名は、最初のフラグメントに含まれることから、中間ノードは、必要に応じて署名検証手順を実行することができる（動作６１４）。中間ノードはまた、初期化ベクトルと最初のフラグメントからのデータのハッシュ値を計算し、最初のフラグメントに含まれる中間状態と結果を比較することにより、コンテンツを検証することができる（図６Ａには示されていない）。ハッシュは、全てのフラグメントが受信された後に検証されることができるのみであるインタレストのコンテンツオブジェクトハッシュが全体ダイジェスト値と一致するＦＩＧＯＡとは異なり、最初のフラグメントにわたって計算される。それゆえに、ＮＮＦプロトコルのもとで、最初のフラグメントは、中間ノードが最初のフラグメントを再フラグメンテーションしないようにペイロードを含まないか又は小さいサイズのペイロードを含む。
【００６２】
受信したフラグメントが最初のフラグメントでない場合、中間ノードは、名称又は全体ダイジェストに基づいてＰＩＴにおける対応するエントリ（例えば、第２のエントリ）を識別する（動作６１６）。中間ノードは、以前のフラグメントから及び受信したフラグメントからのデータから中間状態のハッシュを計算し、受信したフラグメントに含まれる中間状態と結果を比較することによってコンテンツを検証することができる（動作６１８）。そして、図６ＢにおけるラベルＣによって記載されるように動作が継続する。
【００６３】
図６Ｂは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージのフラグメントを処理するための中間ノードによる方法を図示するフローチャート６５０を表している。動作中において、中間ノードは、識別されたＰＩＴエントリ（例えば、第２のエントリ）に記載されたフェースに基づいて次ホップＣＣＮノードに対して送信することによって受信したフラグメントを転送する（動作６５２）。中間ノードは、受信したフラグメントについての長さ及び位置に基づいて転送されたバイト数の合計を更新する（動作６５４）。中間ノードは、（第２のＰＩＴエントリに示されているように）転送されたバイト数の合計がコンテンツオブジェクトメッセージについての全体の長さに等しいかどうかを判定する（動作６５６）。そうでない場合、動作は戻る。そうである場合、中間ノードは、対応するＰＩＴエントリ（例えば、第２のＰＩＴエントリ）をクリアする（動作６５８）。
【００６４】
コンテンツオブジェクトのフラグメントを処理するための例示的なアルゴリズム
図６Ｃは、本発明の実施形態にかかる、コンテンツオブジェクトメッセージのフラグメントを処理するための例示的なアルゴリズム１を図示する表６７０を表している。中間ノードは、再構築バッファ「Ｂｕｆｆｅｒ」が｛ＣｕｒｒｅｎｔＩＳ，  ＮｅｘｔＩＳ，  ＰａｙｌｏａｄＯｆｆｓｅｔ，  ＰａｙｌｏａｄＥｎｄ｝を有するエントリのチェーンを記憶するのみであることから、いかなるフラグメントもキャッシュする必要がないことに留意されたい。中間ノードは、ＰａｙｌｏａｄＯｆｆｓｅｔの順序でエントリを記憶する。中間ノードは、ＳＨＡ−２５６初期設定値並びに０のＰａｙｌｏａｄＯｆｆｓｅｔ及び０のＰａｙｌｏａｄＥｎｄによって初期バッファエントリを形成する。全ての受信したフラグメントは、初期バッファエントリからのチェーンを形成する。次の４つの規則はＦＩＧＯＡのとおりである：第１の規則は、先行又は後続を有しないシングルトンを記憶する（ステップ６〜７）；第２の規則は、以前のフラグメントを継続するフラグメントを記憶する（ステップ８〜９）；第３の規則は、フラグメントに先行するフラグメントを記憶する（ステップ１０〜１１）；及び、第４の規則は、２つの既存のフラグメント間におけるフラグメントを記憶する（ステップ１２〜１３）。フラグメントを記憶して検証する際に、中間ノードは、ハッシュチェーンにおいて検証されたバイト数を追跡するために「順番に」検証された長さを更新する。（全てのフラグメントの受信を示す）ＯｖｅｒａｌｌＬｅｎｇｔｈバイトを検証する際に、中間は、ＯｖｅｒａｌｌＤｉｇｅｓｔを検証することができる。現在のフラグメントが、中間ノードがＯｖｅｒａｌｌＤｉｇｅｓｔを検証したフラグメントである場合、中間ノードは、ＰＩＴがその状態をクリアすることができることを示すために「最後のフラグメント」としてこのパケットを局所的にマーキングすることができる。
【００６５】
図６Ｄは、本発明の実施形態にかかる、保留インタレスト表におけるコンテンツオブジェクトメッセージのフラグメントを処理するための例示的なアルゴリズム２を図示する表６８０を表している。フラグメントが順番に受信された場合、最初のフラグメントは、既存のＰＩＴエントリと一致する名称を有する。そして、中間ノードは、ＯｖｅｒａｌｌＤｉｇｅｓｔによって新たなＰＩＴエントリを作成し、名称によってＰＩＴエントリを削除する。アルゴリズム１によって出力される後続フラグメントは、ＯｖｅｒａｌｌＤｉｇｅｓｔと一致する。しかしながら、フラグメントが順番に受信されない場合、アルゴリズム２は、いくつかの条件をカバーする。ＯｖｅｒａｌｌＤｉｇｅｓｔによるＰＩＴエントリが存在する場合、中間ノードは、そのＰＩＴエントリに沿って転送する（ステップ４〜７）。フラグメントが名称においてフラグメント状態を有する場合、それは再送信とすることができ、名称によってそれ自体のＰＩＴエントリに対して一致することができる（ステップ８〜１２）。前回の検索が失敗した場合、中間ノードは、ＯｖｅｒａｌｌＤｉｇｅｓｔによってＰＩＴエントリを作成する（ステップ１３〜２０）。チャンク名称付きフラグメント及び名称付きフラグメントが名称においてフラグメント状態を含む前に名称付けされたフラグメントが到達した場合、中間ノードは、名称からフラグメント状態を外し、チャンク名称付きフラグメントについて進む（ステップ２１〜２５）。
【００６６】
未知の長さのコンテンツオブジェクトのフラグメントの処理
図７は、本発明の実施形態にかかる、データストリームがライブストリームであるコンテンツオブジェクトメッセージのフラグメントを処理するための中間ノードによる方法を図示するフローチャート７００を表している。図７の最初の３つの動作（７０２、７０４及び７０６）は、図６Ａの動作６０２、６０４及び６０６と同様である。主な違いは、ステップ７０６において、受信したフラグメントが全体ダイジェストの代わりにセグメント識別子を含み且つ署名が最初のフラグメントの代わりに最後のフラグメントに含まれることである。フラグメントを受信すると、中間ノードは、最初のフラグメントについての名称、セグメント識別子又はコンテンツオブジェクトハッシュに基づいてＰＩＴにおける対応するエントリ（「第２のエントリ」）を識別する（動作７０８）。いくつかの実施形態において、受信したフラグメントが最初のフラグメントである場合、中間ノードは、名称に基づいてＰＩＴにおける第１のエントリを識別し、セグメント識別子に基づいて第２のエントリを作成し、ＰＩＴから第１のエントリを削除する（図示しない）。中間ノードは、以前のフラグメント及び受信したフラグメントからのデータから中間状態のハッシュを計算し、受信したフラグメントに含まれる中間状態と結果を比較することによってコンテンツを検証する（動作７１０）。中間ノードは、受信したフラグメントが最後のフラグメントであるかどうかを判定する（判定７１２）。受信したフラグメントが最後のフラグメントでない場合、図６ＢにおけるラベルＣによって記載されるように動作が継続する。受信したフラグメントが最後のフラグメントである場合、署名は、最後のフラグメントに含まれていることから、中間ノードは、必要に応じて、図６ＢにおけるラベルＣによって記載されたように継続する前に署名検証手順を実行することができる（動作７１４）。
【００６７】
例示的な装置及びコンピュータシステム
図８は、本発明の実施形態にかかる、ネットワークを介したコンテンツの効率的且つセキュアな伝送を容易とする例示的な装置８００を図示している。装置８００は、有線又は無線通信チャネルを介して互いに通信することができる複数のモジュールを備えることができる。装置８００は、１つ以上の集積回路を使用して実現されることができ、図８に示されるものよりも少ないか若しくは多いモジュールを含んでもよい。さらに、装置８００は、コンピュータシステムに一体化されてもよく、又は、他のコンピュータシステム及び／又は装置と通信することができる別個の装置として実現されてもよい。具体的には、装置８００は、通信モジュール８０２と、保留インタレスト表メンテナンスモジュール８０４と、コンテンツフラグメンテーションモジュール８０６と、状態計算モジュール８０８と、セキュリティモジュール８１０とを備えることができる。
【００６８】
いくつかの実施形態において、通信モジュール８０２は、コンテンツ中心ネットワークなどのコンピュータネットワークを介して他のネットワークノードに対して／他のネットワークノードからデータパケットを送信及び／又は受信することができ、データパケットは、複数のフラグメントにフラグメンテーションされたコンテンツオブジェクトメッセージのフラグメントに対応することができる。受信したフラグメントが最初のフラグメントであるという判定に応答して、ＰＩＴメンテナンスモジュール８０４は、コンテンツオブジェクトのハッシュに基づいており且つ最初のフラグメントに対応する名称を有するインタレストについてのＰＩＴにおける第１のエントリを識別し、コンテンツオブジェクトメッセージについてのダイジェスト又はセグメント識別子に基づいてＰＩＴにおいて第２のエントリを作成し、ＰＩＴから第１のエントリを削除することができる。受信したフラグメントが後続フラグメントであるという判定に応答して、ＰＩＴメンテナンスモジュール８０４は、後続フラグメントに対応するダイジェスト又はセグメント識別子を有するインタレストについての保留インタレスト表におけるエントリを識別することができる。受信したフラグメントが保留インタレスト表におけるエントリに対応するという判定に応答して、ＰＩＴメンテナンスモジュール８０４は、受信フラグメントについての長さ及び位置に基づいて転送されたバイトの合計数を更新することができる。転送されたバイトの全長が全体の長さに等しいという判定に応答して、ＰＩＴメンテナンスモジュール８０４はまた、ＰＩＴから対応するエントリを削除することができる。
【００６９】
コンテンツフラグメンテーションモジュール８０６は、コンテンツ制作装置により、インタレストメッセージに応答するコンテンツオブジェクトメッセージを生成することができ、コンテンツオブジェクトメッセージを複数のフラグメントにフラグメンテーションすることができる。コンテンツフラグメンテーションモジュール８０６はまた、最初のフラグメントにペイロードを含まないか又は再フラグメンテーションを必要としない所定の閾値よりも小さいサイズを有するペイロードを含むことができる。状態計算モジュール８０８は、コンテンツオブジェクトメッセージについての初期化ベクトルに対して実行されたハッシュ関数に基づいて、最初のフラグメントについての中間状態を計算することができる。状態計算モジュール８０８はまた、以前のフラグメント及び後続フラグメントについてのペイロードから中間状態において実行されたハッシュ関数に基づいて、後続フラグメントについての中間状態を計算することができる。
【００７０】
セキュリティモジュール８１０は、コンテンツ制作装置のディジタル署名を最初のフラグメントに含めることができる。コンテンツフラグメンテーションモジュール８０６は、コンテンツオブジェクトメッセージについてのセグメント識別子を生成することができ、複数のフラグメントの各フラグメントにセグメント識別子を含めることができる。コンテンツオブジェクトメッセージが完全に生成されたという判定に応答して、コンテンツフラグメンテーションモジュール８０６は、最後のフラグメントを生成することができる。状態計算モジュール８０８は、以前のフラグメント及び最後のフラグメントについてのペイロードから中間状態において実行されるハッシュ関数に基づいて完全なコンテンツオブジェクトメッセージについてのダイジェストを計算することができる。セキュリティモジュール８１０は、最後のフラグメントにコンテンツ制作装置のディジタル署名を含めることができる。
【００７１】
図９は、本発明の実施形態にかかる、ネットワークを介したコンテンツの効率的且つセキュアな伝送を容易とする例示的なコンピュータシステムを図示している。コンピュータシステム９０２は、プロセッサ９０４と、メモリ９０６と、記憶装置９０８とを含む。メモリ９０６は、管理メモリとして機能し且つ１つ以上のメモリプールを記憶するために使用することができる揮発性メモリ（例えば、ＲＡＭ）を含むことができる。さらにまた、コンピュータシステム９０２は、表示装置９１０、キーボード９１２及びポインティングデバイス９１４に接続されることができる。記憶装置９０８は、オペレーティングシステム９１６、コンテンツ処理システム９１８及びデータ９３０を記憶することができる。
【００７２】
コンテンツ処理システム９１８は、コンピュータシステム９０２によって実行されたときに、本開示に記載される方法及び／又はプロセスをコンピュータシステム９０２に実行させることができる命令を含むことができる。具体的には、コンテンツ処理システム９１８は、コンテンツ中心ネットワークなどのコンピュータネットワークを介して他のネットワークノードに対して／他のネットワークノードからデータパケットを送信及び／又は受信するための命令を含むことができる（通信モジュール９２０）。例えば、コンテンツ処理システム９１８は、中間ノードにより、複数のフラグメントにフラグメンテーションされるコンテンツオブジェクトメッセージのフラグメントに対応するデータパケットを受信するための命令を含むことができる（通信モジュール９２０）。
【００７３】
コンテンツ処理システム９１８は、受信したフラグメントが最初のフラグメントであるという判定に応答して、コンテンツオブジェクトのハッシュに基づいており且つ最初のフラグメントに対応する名称を有するインタレストについてのＰＩＴにおける第１のエントリを識別するための命令を含むことができる（ＰＩＴメンテナンスモジュール９２２）。コンテンツ処理システム９１８はまた、コンテンツオブジェクトメッセージについてのダイジェスト又はセグメント識別子に基づいてＰＩＴにおいて第２のエントリを作成し、ＰＩＴから第１のエントリを削除するための命令を含むことができる（ＰＩＴメンテナンスモジュール９２２）。コンテンツ処理システム９１８は、受信したフラグメントが後続フラグメントであるという判定に応答して、後続フラグメントに対応するダイジェスト又はセグメント識別子を有するインタレストについての保留インタレスト表におけるエントリを識別するための命令を含むことができる（ＰＩＴメンテナンスモジュール９２２）。コンテンツ処理システム９１８はまた、受信したフラグメントが保留インタレスト表におけるエントリに対応するという判定に応答して、受信したフラグメントについての長さ及び位置に基づいて転送されるバイトの合計数を更新するための命令を含むことができる。コンテンツ処理システム９１８は、さらに、転送されるバイトの全長が全体の長さに等しいという判定に応答して、ＰＩＴから対応するエントリを削除するための命令を含むことができる（ＰＩＴメンテナンスモジュール９２２）。
【００７４】
コンテンツ処理システム９１８は、インタレストメッセージに応答するコンテンツオブジェクトメッセージを生成し、コンテンツオブジェクトメッセージを複数のフラグメントにフラグメンテーションすることができるための命令を含むことができる（コンテンツフラグメンテーションモジュール９２４）。コンテンツ処理システム９１８は、最初のフラグメントにペイロードを含めないか又は再フラグメンテーションを必要としない所定の閾値よりも小さいサイズを有するペイロードを含めるための命令を含むことができる（コンテンツフラグメンテーションモジュール９２４）。
【００７５】
コンテンツ処理システム９１８は、コンテンツオブジェクトメッセージについての初期化ベクトルに対して実行されるハッシュ関数に基づいて最初のフラグメントについての中間状態を計算し、以前のフラグメント及び後続フラグメントについてのペイロードから中間状態において実行されるハッシュ関数に基づいて後続フラグメントについての中間状態を計算するための命令を含むことができる（状態計算モジュール９２６）。
【００７６】
コンテンツ処理システム９１８はまた、最初のフラグメントにコンテンツ制作装置のディジタル署名を含めるための命令を含むことができる（セキュリティモジュール９２８）。コンテンツ処理システム９１８は、コンテンツオブジェクトメッセージについてのセグメント識別子を生成し、複数のフラグメントの各フラグメントにセグメント識別子を含めるための命令を含むことができる（コンテンツフラグメンテーションモジュール９２４）。コンテンツ処理システム９１８は、コンテンツオブジェクトメッセージが完全に生成されたという判定に応答して、最後のフラグメントを生成するための命令を含むことができる（コンテンツフラグメンテーションモジュール９２４）。コンテンツ処理システム９１８は、以前のフラグメント及び最後のフラグメントについてのペイロードから中間状態において実行されるハッシュ関数に基づいて完全なコンテンツオブジェクトメッセージについてのダイジェストを計算し（状態計算モジュール９２６）、最後のフラグメントにコンテンツ制作装置のディジタル署名を含める（セキュリティモジュール９２８）ための命令を含むことができる。
【００７７】
データ９３０は、本開示に記載される方法及び／又はプロセスによって入力として要求されるか又は出力として生成される任意のデータを含むことができる。具体的には、データ９３０は、少なくとも、複数のフラグメントにフラグメンテーションされたコンテンツオブジェクトメッセージのフラグメントに対応するパケット；最も一般的なレベルから最も特定のレベルまで順序付けられた連続した名称要素を含むＨＳＶＬＩである固有名称；コンテンツオブジェクトのハッシュに基づいているか又はダイジェストを示す名称；以前のフラグメント及びフラグメントに含まれるデータから中間状態において実行されるハッシュ関数に基づいているフラグメントについての中間状態；保留インタレスト表；コンテンツオブジェクトについてのダイジェスト；セグメント識別子；フラグメントについての開始バイトに対応するバイトオフセット；コンテンツオブジェクトについての全長；ペイロードサイズ；保留インタレスト表におけるエントリ；コンテンツ制作装置のディジタル署名；転送されるバイトの合計数；並びに、中間状態、バイトオフセット及びダイジェストを示す名称を記憶することができる。
【００７８】
この詳細な説明に記載されたデータ構造及びコードは、典型的には、コンピュータシステムによって使用するためのコード及び／又はデータを記憶することができる任意の装置又は媒体であり得るコンピュータ読み取り可能な記憶媒体に記憶される。コンピュータ読み取り可能な記憶媒体は、これらに限定されるものではないが、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（ディジタル多用途ディスク若しくはディジタルビデオディスク）などの磁気及び光記憶装置、又は、現在知られている若しくは今後開発されるコンピュータ読み取り可能な媒体を記憶することができる他の媒体を含む。
【００７９】
詳細な説明のセクションに記載された方法及びプロセスは、上述したようなコンピュータ読み取り可能な記憶媒体に記憶されることができるコード及び／又はデータとして具体化することができる。コンピュータシステムがコンピュータ読み取り可能な記憶媒体に記憶されたコード及び／又はデータを読み取って実行する場合、コンピュータシステムは、データ構造及びコードとして具現化されてコンピュータ読み取り可能な記憶媒体内に記憶された方法及びプロセスを実行する。
【００８０】
さらにまた、上述した方法及びプロセスは、ハードウェアモジュールに含めることができる。ハードウェアモジュールは、これらに限定されるものではないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、及び、現在知られている若しくは今後開発される他のプログラマブル論理デバイスを含むことができる。ハードウェアモジュールが起動されると、ハードウェアモジュールは、ハードウェアモジュールの内部に含まれる方法及びプロセスを実行する。
【図１】
2017054500.tif 000003
【図２Ａ】
2017054500.tif 000004
【図２Ｂ】
2017054500.tif 000005
【図２Ｃ】
2017054500.tif 000006
【図２Ｄ】
2017054500.tif 000007
【図２Ｅ】
2017054500.tif 000008
【図３Ａ】
2017054500.tif 000009
【図３Ｂ】
2017054500.tif 000010
【図４Ａ】
2017054500.tif 000011
【図４Ｂ】
2017054500.tif 000012
【図５Ａ】
2017054500.tif 000013
【図５Ｂ】
2017054500.tif 000014
【図６Ａ】
2017054500.tif 000015
【図６Ｂ】
2017054500.tif 000016
【図６Ｃ】
2017054500.tif 000017
【図６Ｄ】
2017054500.tif 000018
【図７】
2017054500.tif 000019
【図８】
2017054500.tif 000020
【図９】
2017054500.tif 000021