BranchCache Overview

 

対象: Windows Server 2012、Windows 8

このトピッでクは、情報テクノロジ (IT) のプロフェッショナルを対象として、BranchCache のモード、特徴、機能や、さまざまなオペレーティング システムで使用できる BranchCache の機能など、BranchCache の概要について説明します。

BranchCache の対象ユーザー

BranchCache は、次の状況が考えられるシステム管理者、ネットワークまたはストレージ ソリューション アーキテクト、またはその他の IT プロフェッショナルに有用です。

  • 複数の物理的な場所があり、ワイド エリア ネットワーク (WAN) を使用してブランチ オフィスからメイン オフィスに接続している組織の IT インフラストラクチャを設計またはサポートする。

  • クラウド テクノロジが展開され、従業員が WAN 接続を使用して遠隔地にあるデータやアプリケーションにアクセスする組織の IT インフラストラクチャを設計またはサポートする。

  • ブランチ オフィスとメイン オフィスの間のネットワーク トラフィックを減らして WAN 帯域幅の使用量を最適化する。

  • このトピックで説明している構成に該当するコンテンツ サーバーをメイン オフィスに展開している、または展開する計画がある。

  • ブランチ オフィスに配置されたクライアント コンピューターで Windows® 8 または Windows® 7 が実行されている。

このトピックには、次のセクションが含まれています。

  • BranchCache とは

  • BranchCache モード

  • BranchCache が有効なコンテンツ サーバー

  • BranchCache とクラウド

  • コンテンツ情報のバージョン

  • BranchCache でファイルの内容更新を処理する方法

  • BranchCache インストール ガイド

  • BranchCache をサポートするオペレーティング システムのバージョン

  • BranchCache のセキュリティ

  • コンテンツ フローとプロセス

  • キャッシュのセキュリティ

BranchCache とは

BranchCache は、Windows Server® 2012 および Windows® 8 オペレーティング システムの一部のエディション、Windows Server ® 2008 R2 および Windows® 7 の一部のエディションに組み込まれているワイド エリア ネットワーク (WAN) 帯域幅最適化テクノロジです。 ユーザーがリモート サーバー上のコンテンツにアクセスするときの WAN の帯域幅を最適化するため、BranchCache ではメイン オフィスまたはホスト型クラウドのコンテンツ サーバーからコンテンツがコピーされ、ブランチ オフィスの場所にキャッシュされます。これにより、ブランチ オフィスのクライアント コンピューターは WAN を経由せずにローカルにコンテンツにアクセスできます。

ブランチ オフィスでは、キャッシュをホストするように構成されているサーバーにコンテンツが格納されます。ブランチ オフィス内でサーバーを使用できない場合は、Windows 8 または Windows 7 を実行しているクライアント コンピューターにコンテンツが格納されます。 クライアント コンピューターがコンテンツを要求してメイン オフィスからコンテンツを受信すると、コンテンツがブランチ オフィスにキャッシュされます。すると、同じブランチ オフィスにある他のコンピューターは、WAN リンクを経由してコンテンツ サーバーからコンテンツをダウンロードしなくてもコンテンツをローカルに取得できるようになります。

その後クライアント コンピューターが同じコンテンツを要求するとき、クライアントは、実際のコンテンツではなく、コンテンツ情報をサーバーからダウンロードします。 コンテンツ情報は、元のコンテンツのチャンクを使用して計算されるハッシュから構成されます。コンテンツ情報は、元のデータの内容と比較するとサイズが非常に小さくなります。 次に、クライアント コンピューターは、コンテンツ情報を使用して、ブランチ オフィス内のキャッシュからコンテンツを探します。キャッシュがクライアント コンピューターとサーバーのどちらにあるかは関係ありません。 さらに、クライアント コンピューターとサーバーは、コンテンツ情報を使用して、承認されていないユーザーからアクセスを防ぐために、キャッシュされたコンテンツをセキュリティで保護します。

BranchCache は、ブランチ オフィス内のクライアントとサーバーでコンテンツのクエリ応答時間を向上させることによってエンド ユーザーの生産性を高めます。また、WAN リンク経由のトラフィックが減少するのでネットワーク パフォーマンスの向上にも役立ちます。

BranchCache モード

BranchCache には、分散キャッシュ モードとホスト型キャッシュ モードという 2 つの操作モードがあります。

分散キャッシュ モードで BranchCache を展開すると、ブランチ オフィスのコンテンツ キャッシュはクライアント コンピューター間に分散されます。

ホスト型キャッシュ モードで BranchCache を展開すると、ブランチ オフィスのコンテンツ キャッシュは 1 台以上のサーバー コンピューターでホストされます。このようなサーバー コンピューターは、ホスト型キャッシュ サーバーと呼ばれます。

注意

BranchCache はどちらのモードでも展開できますが、1 つのブランチ オフィスで使用できるモードはどちらか一方です。 たとえば、サーバーが配置されているブランチ オフィスとサーバーが配置されていないブランチ オフィスの 2 つがある場合、サーバーが配置されているオフィスにはホスト型キャッシュ モードの BranchCache を展開し、クライアント コンピューターのみが配置されているオフィスには分散キャッシュ モードで BranchCache を展開できます。

次の図で、BranchCache は 2 つのモードで展開されています。

BranchCache モード

分散キャッシュ モードは、ホスト型キャッシュ サーバーとして使用されるローカル サーバーを持たない小規模のブランチ オフィスに適しています。 分散キャッシュ モードでは、ブランチ オフィスにハードウェアを追加することなく BranchCache を展開できます。

BranchCache を展開する予定のブランチ オフィスに追加のインフラストラクチャ (たとえば、他のワークロードを実行している 1 つまたは複数のサーバー) が配置されている場合は、次の理由から、BranchCache をホスト型キャッシュ モードで展開する方が有用です。

キャッシュの可用性の向上

ホスト型キャッシュ モードでは、データを最初に要求およびキャッシュしたクライアントがオフラインであってもコンテンツが使用できるので、キャッシュの効率が向上します。 ホスト型キャッシュ サーバーは常に利用できるため、より多くのコンテンツがキャッシュされます。その結果、より多くの WAN 帯域幅が節約され、BranchCache の効率が向上します。

複数のサブネットがあるブランチ オフィスのキャッシュの一元化

分散キャッシュ モードは単一のサブネットでのみ動作します。 複数のサブネットがあるブランチ オフィスで分散キャッシュ モードが構成されている場合、1 つのサブネットにダウンロードされたファイルを他のサブネット上のクライアント コンピューターと共有することはできません。 このため、他のサブネット上のクライアントは、そのファイルがダウンロード済みであることを識別できず、プロセスの WAN 帯域幅を使用してメイン オフィスのコンテンツ サーバーからこのファイルをダウンロードします。 しかし、ホスト型キャッシュ モードを展開すると、この状況を回避できます。複数のサブネットがあるブランチ オフィス内のすべてのクライアントは、異なるサブネット上にあっても、ホスト型キャッシュ サーバー上に格納されている単一のキャッシュにアクセスできます。 さらに、Windows Server 2012 の BranchCache では、1 つのブランチ オフィスに複数のホスト型キャッシュ サーバーを展開できます。

注意

ファイルとフォルダーの SMB キャッシュに BranchCache を使用する場合は、オフライン ファイルを無効にしないでください。 オフライン ファイルを無効にすると、BranchCache の SMB キャッシュは正しく機能しません。

BranchCache が有効なコンテンツ サーバー

BranchCache を展開すると、ソース コンテンツはメイン オフィス内の BranchCache が有効なコンテンツ サーバーに格納されます。 BranchCache では、次の種類のコンテンツ サーバーがサポートされます。

注意

BranchCache によって高速化されるのは、ソース コンテンツ (BranchCache が有効なコンテンツ サーバーからクライアント コンピューターが最初に取得したコンテンツ) のみです。 クライアント コンピューターが他のソース (インターネット上の Web サーバー、Windows Update など) から直接取得したコンテンツは、クライアント コンピューターまたはホスト型キャッシュ サーバーによってキャッシュされず、ブランチ オフィス内の他のコンピューターとも共有されません。 Windows Update のコンテンツを高速化するには、Windows Server Update Services (WSUS) アプリケーション サーバーをメイン オフィスにインストールし、これを BranchCache コンテンツ サーバーとして構成します。

Web サーバー

Web サーバーとしては、Windows Server 2012 または Windows Server ® 2008 R2 を実行するコンピューターがサポートされます。"Web サーバー" (IIS) のサーバー役割がインストールされていること、さらに、ハイパーテキスト転送プロトコル (HTTP) または HTTP セキュア (HTTPS) が使用されていることが必要となります。 加えて、Web サーバーには、BranchCache 機能がインストールされている必要があります。Windows Server 2012 の Web サーバー (IIS) の詳細については、「Web サーバー (IIS)」を参照してください。

ファイル サーバー

ファイル サーバーとしては、Windows Server 2012 または Windows Server 2008 R2 が実行され、"ファイル サービス" サーバー役割と "ネットワーク ファイル用 BranchCache" 役割サービスのインストールされているコンピューターがサポートされます。 これらのファイル サーバーでは、サーバー メッセージ ブロック (SMB) がコンピューター間の情報のやり取りに使用されます。 ファイル サーバーのインストールを完了した後は、フォルダーを共有する必要があります。さらに、BranchCache を有効にするグループ ポリシーまたはローカル コンピューター ポリシーを使用して、共有フォルダーのハッシュ生成を有効にする必要があります。Windows Server 2012 のファイル サービスおよび記憶域サービスの詳細については、「ファイル サービスおよび記憶域サービス」を参照してください。

アプリケーション サーバー

アプリケーション サーバーとしては、Windows Server 2012 または Windows Server 2008 R2 を実行するコンピューターがサポートされます。バックグラウンド インテリジェント転送サービス (BITS) がインストールされ、なおかつ有効にされている必要があります。 加えて、アプリケーション サーバーには、BranchCache 機能がインストールされている必要があります。 たとえば、Microsoft Windows Server Update Services (WSUS) サーバーと Microsoft System Center Configuration Manager ブランチ配布ポイント サーバーを BranchCache コンテンツ サーバーとして展開できます。

BranchCache とクラウド

クラウドには、運用コストを引き下げ、新しいレベルのスケールを実現する大きな潜在力があります。しかし、ワークロードに依存するユーザーからワークロードを遠ざけると、ネットワーキング コストが増加し、生産性が悪化する可能性があります。 ユーザーが期待するのは高いパフォーマンスであり、アプリケーションやデータがどこでホストされているかについては気にしません。 BranchCache は、データのキャッシュを共有することで、ネットワークに接続されたアプリケーションのパフォーマンスを向上させ、帯域幅の使用量を削減します。 BranchCache を使用すると、従業員がクラウドに展開されたサーバーを使用することで、ブランチ オフィスや本社の生産性が向上します。

BranchCache は、新しいハードウェアの追加やネットワーク トポロジの変更が必要ないため、オフィスの場所とパブリックおよびプライベートのクラウドとの間の通信を向上させる優れたソリューションです。

Windows Server 2012 のクラウド テクノロジの詳細については、「Building Your Cloud Infrastructure」を参照してください。

コンテンツ情報のバージョン

コンテンツ情報には、次の 2 種類のバージョンがあります。

  • Windows Server 2008 R2 および Windows 7 を実行するコンピューターとの互換性があるコンテンツ情報は、Version 1 または V1 と呼ばれます。 V1 の BranchCache ファイル セグメント化では、ファイル セグメントのサイズが V2 より大きく、固定です。 セグメント サイズが大きく固定であるため、ファイル長が変わるような変更をユーザーが行うと、変更されたセグメントが無効になるだけでなく、ファイルの最後までのすべてのセグメントが無効になります。 このため、ブランチ オフィスにいる別のユーザーが、変更されたファイルを次に要求すると、変更されたコンテンツと変更以降のすべてのコンテンツが WAN リンクから送信されるため、WAN 帯域幅が節約される度合いが低くなります。

  • Windows Server 2012 および Windows 8 を実行するコンピューターとの互換性があるコンテンツ情報は、Version 2 または V2 と呼ばれます。 V2 のコンテンツ情報に使用されるセグメントのサイズは可変で V1 より小さく、ファイル内の変更に対する耐性が高くなっています。 これにより、更新バージョンにユーザーがアクセスした際に、以前のバージョンのファイルからのセグメントが再利用され、ユーザーがコンテンツ サーバーから取得するのはファイル内の変更された部分のみであり、使用される WAN 帯域幅が小さくなる確率が高くなります。

次の表は、BranchCache 展開内で使用するクライアント、コンテンツ サーバー、およびホスト型キャッシュ サーバーのオペレーティング システムに応じて使用されるコンテンツ情報のバージョンに関する情報を示しています。

注意

次の表の "OS" は、オペレーティング システムを表します。

クライアントの OS コンテンツ サーバーの OS ホスト型キャッシュ サーバーの OS コンテンツ情報のバージョン
Windows Server 2008 R2とWindows 7 Windows Server 2012 または Windows Server 2008 R2 Windows Server 2012 または Windows Server 2008 R2 (いずれも分散キャッシュ モード対応ではない) V1
Windows Server 2012とWindows 8 Windows Server 2008 R2 Windows Server 2012 または Windows Server 2008 R2 (いずれも分散キャッシュ モード対応ではない) V1
Windows Server 2012とWindows 8 Windows Server 2012 Windows Server 2008 R2 (分散キャッシュ モード対応ではない) V1
Windows Server 2012とWindows 8 Windows Server 2012 Windows Server 2012 (分散キャッシュ モード対応ではない) V2

コンテンツ サーバーおよびホスト型キャッシュ サーバーで Windows Server 2012 を実行している場合、情報を要求する BranchCache クライアントのオペレーティング システムに基づいて、適切なバージョンのコンテンツ情報が使用されます。Windows Server 2012 および Windows 8 を実行するコンピューターがコンテンツを要求した場合、コンテンツ サーバーおよびホスト型キャッシュ サーバーでは、V2 のコンテンツ情報が使用されます。Windows Server 2008 R2 および Windows 7 を実行するコンピューターがコンテンツを要求した場合、コンテンツ サーバーおよびホスト型キャッシュ サーバーでは、V1 のコンテンツ情報が使用されます。

分散キャッシュ モードで BranchCache を展開した場合、使用するコンテンツ情報のバージョンが異なるクライアント間では、コンテンツが共有されません。

BranchCache でファイルの内容更新を処理する方法

ブランチ オフィスのユーザーがドキュメントの内容を変更または更新すると、メイン オフィスにあるコンテンツ サーバーに変更内容が直接書き込まれ、BranchCache の処理は発生しません。 ユーザーがコンテンツ サーバーからドキュメントをダウンロードするときや、ブランチ オフィスのホスト型キャッシュまたは分散型キャッシュからドキュメントを取得するときも同様です。

ブランチ オフィスにある別のクライアントから変更後のファイルが要求された場合、ファイルの新しいセグメントがメイン オフィスのサーバーからダウンロードされ、そのブランチの分散型キャッシュまたはホスト型キャッシュに追加されます。 そのため、ブランチ オフィスのユーザーは、キャッシュされたコンテンツの最新版を常に入手できます。

BranchCache インストール ガイド

Windows Server 2012 のサーバー マネージャーを使用すると、BranchCache 機能またはファイル サービス サーバー役割のネットワーク ファイル用 BranchCache 役割サービスをインストールできます。 役割サービスと機能のどちらをインストールするかについては、次の表を参考にしてください。

機能 コンピューターの場所 インストールする BranchCache 要素
コンテンツ サーバー (BITS ベースのアプリケーション サーバー) メイン オフィスまたはクラウド データ センター BranchCache 機能
コンテンツ サーバー (Web サーバー) メイン オフィスまたはクラウド データ センター BranchCache 機能
コンテンツ サーバー (SMB プロトコルを使用するファイル サーバー) メイン オフィスまたはクラウド データ センター ファイル サービス サーバー役割のネットワーク ファイル用 BranchCache 役割サービス
ホスト型キャッシュ サーバー ブランチ オフィス ホスト型キャッシュ サーバー モードを有効にした BranchCache 機能
BranchCache が有効なクライアント コンピューター ブランチ オフィス インストールの必要なし。クライアント上で BranchCache と BranchCache モード (分散またはホスト型) を有効化

役割サービスまたは機能をインストールするには、サーバー マネージャーを開き、BranchCache 機能を有効にするコンピューターを選択します。 サーバー マネージャーで、[管理] をクリックし、[役割と機能の追加] をクリックします。役割と機能の追加ウィザードが起動されます。 ウィザードの指示に従って、次のようにオプションを選択します。

  • ウィザードの [インストールの種類の選択] ページで、[役割ベースまたは機能ベースのインストール] を選択します。

  • ウィザードの [サーバーの役割の選択] ページで、BranchCache が有効なファイル サーバーをインストールする場合は [ファイル サービス] を選択します。 後のウィザード構成プロセスで、[ネットワーク ファイル用 BranchCache] も選択します。 BranchCache が有効なファイル サーバーをインストールしない場合は、ネットワーク ファイル用 BranchCache 役割サービスと共にファイル サービス役割をインストールしないでください。

  • ウィザードの [機能の選択] ページで、ファイル サーバーではないコンテンツ サーバーをインストールする場合またはホスト型キャッシュ サーバーをインストールする場合は [BranchCache] を選択します。 ファイル サーバーではないコンテンツ サーバーまたはホスト型キャッシュ サーバーをインストールしない場合は [BranchCache] 機能をインストールしないでください。

BranchCache をサポートするオペレーティング システムのバージョン

BranchCache の各種機能をサポートするオペレーティング システムの一覧を次に示します。

BranchCache クライアント コンピューター用のオペレーティング システム

  • Windows® 8 Enterprise

  • Windows® 7 Enterprise

  • Windows® 7 Ultimate

BranchCache コンテンツ サーバー用のオペレーティング システム

Windows Server 2012 ファミリのオペレーティング システムは、BranchCache コンテンツ サーバーとして使用できます。

これに加え、オペレーティング システムの Windows Server ® 2008 R2 ファミリも、BranchCache コンテンツ サーバーとして使用できます。ただし、次の例外があります。

  • Windows Server® 2008 R2 Enterprise の Server Core インストール (Hyper-V) では、BranchCache はサポートされていません。

  • Windows Server® 2008 R2 Datacenter の Server Core インストール (Hyper-V) では、BranchCache はサポートされていません。

BranchCache ホスト型キャッシュ サーバー用のオペレーティング システム

Windows Server 2012 ファミリのオペレーティング システムは、BranchCache ホスト型キャッシュ サーバーとして使用できます。

これに加え、次の Windows Server ® 2008 R2 オペレーティング システムを BranchCache ホスト型キャッシュ サーバーとして使用できます。

  • Windows Server® 2008 R2 Enterprise

  • Windows Server 2008 R2 Enterprise (Hyper-V)

  • Windows Server 2008 R2 Enterprise Server Core インストール

  • Windows Server 2008 R2 Enterprise Server Core インストール (Hyper-V)

  • Windows Server 2008 R2 for Itanium-Based Systems

  • Windows Server® 2008 R2 Datacenter

  • Windows Server® 2008 R2 Datacenter (Hyper-V)

  • Windows Server 2008 R2 Datacenter Server Core インストール (Hyper-V)

BranchCache のセキュリティ

BranchCache には、既存のネットワーク セキュリティ アーキテクチャと並行にシームレスに動作する "設計段階でのセキュリティの確保" アプローチが実装されていて、追加の機器やセキュリティ構成は必要ありません。

BranchCache は非侵入型で、Windows の認証と承認のプロセスは一切改変されません。 BranchCache を展開した後も、認証はドメインの資格情報を使用して行われ、アクセス制御リスト (ACL) 機能による承認方法も変更されません。 さらに、他の構成も、BranchCache を展開する前と変わらずに機能します。

BranchCache セキュリティ モデルは、メタデータの作成に基づきます。メタデータは、一連のハッシュの形式で存在します。 これらのハッシュは、コンテンツ情報とも呼ばれます。

コンテンツ情報が作成された後は、BranchCache のメッセージ交換には、実際のデータではなくコンテンツ情報が使用されます。サポートされているプロトコル (HTTP、HTTPS、および SMB) を使用して、コンテンツ情報がやり取りされます。

キャッシュされたデータは暗号化された状態で維持されます。元のソースのコンテンツにアクセスするためのアクセス許可を持たないクライアントはキャッシュされたデータにアクセスできません。 クライアントは、コンテンツ メタデータを取得する前に元のコンテンツ ソースによって認証および承認される必要があり、ローカル オフィス内のキャッシュにアクセスするためにコンテンツ メタデータを保持している必要があります。

BranchCache によるコンテンツ情報の生成

コンテンツ情報は複数の要素から作成されるため、コンテンツ情報の値は常に一意です。 これらの要素には、次の要素が含まれます。

  • ハッシュの生成元の実際のコンテンツ (Web ページ、共有ファイルなど)。

  • 構成パラメーター (ハッシュ アルゴリズム、ブロック サイズなど)。 コンテンツ情報を生成するために、コンテンツ サーバーは、コンテンツをセグメントに分割し、さらにそのセグメントをブロックに分割します。 BranchCache は、セキュリティで保護された暗号化ハッシュを使用して、それぞれのブロックおよびセグメントを識別および検証します。BranchCache では、SHA256 ハッシュ アルゴリズムがサポートされます。

  • サーバー シークレット。 すべてのコンテンツ サーバーには、任意の長さのバイナリ値であるサーバー シークレットを構成する必要があります。

注意

サーバー シークレットを使用すると、クライアント コンピューターでコンテンツ情報を生成することができなくなります。 これにより、クライアントが以前のバージョンにアクセスする必要がある一方で現在のバージョンにアクセスできない状況において、悪意のあるユーザーが BranchCache が有効なクライアント コンピューターにブルート フォース攻撃を使ってバージョン間のコンテンツのわずかな変更点を推測するのを防ぐことができます。

コンテンツ情報の詳細

BranchCache は、サーバー シークレットをキーとして使用して、承認されたクライアントに送信されるコンテンツに固有のハッシュを生成します。 結合サーバー シークレットとデータのハッシュにハッシュ アルゴリズムを適用することで、このハッシュが生成されます。

このハッシュは、セグメント シークレットと呼ばれます。 BranchCache は、セグメント シークレットを使用して、通信をセキュリティで保護します。 加えて、BranchCache は、ハッシュされたデータ ブロックのリストであるブロック ハッシュ リストと、ブロック ハッシュ リストをハッシュして生成される "データのハッシュ" を作成します。

コンテンツ情報には、次のものがあります。

  • ブロック ハッシュ リスト:

    BlockHashi = Hash(dataBlocki) 1<=i<=n

  • データのハッシュ (HoD):

    HoD = Hash(BlockHashList)

  • セグメント シークレット (Kp):

    Kp = HMAC(Ks, HoD)

BranchCache は、Peer Content Caching プロトコルと Retrieval Framework プロトコルを使用して、コンテンツ キャッシュ間のデータのキャッシングと取得をセキュリティで保護するために必要なプロセスを実装します。

加えて、BranchCache は、実際のコンテンツそのものの操作および転送時に使用するのと同じセキュリティ レベルでコンテンツ情報を処理します。

コンテンツ フローとプロセス

コンテンツ情報および実際のコンテンツを分割する手順は、次の 4 つのフェーズに分けられます。

  1. BranchCache のプロセス: コンテンツの要求

  2. BranchCache のプロセス: コンテンツの検出

  3. BranchCache のプロセス: コンテンツの取得

  4. BranchCache のプロセス: コンテンツのキャッシング

以降のセクションでは、これらのフェーズについて説明します。

BranchCache のプロセス: コンテンツの要求

最初のフェーズでは、ブランチ オフィスにあるクライアント コンピューターが、メイン オフィスなどの遠隔地にあるコンテンツ サーバーに対してコンテンツ (ファイル、Web ページなど) を要求します。 コンテンツ サーバーは、要求されたコンテンツを受け取る権限がクライアント コンピューターに与えられていることを確認します。 クライアント コンピューターが承認され、コンテンツ サーバーとクライアントの両方で BranchCache が有効な場合、コンテンツ サーバーはコンテンツ情報を生成します。

次に、コンテンツ サーバーは、実際のコンテンツに対して使用されるのと同じプロトコルを使用して、コンテンツ情報をクライアント コンピューターに送信します。 たとえば、クライアント コンピューターが HTTP 経由で Web ページを要求した場合、コンテンツ サーバーは HTTP を使用してコンテンツ情報を送信します。 このため、ネットワーク レベルのセキュリティによって、コンテンツおよびコンテンツ情報の同一性が保証されます。

コンテンツ情報の初期部分 (データのハッシュ + セグメント シークレット) を受け取った後、クライアント コンピューターは次の操作を実行します。

  • セグメント シークレット (Kp) を暗号化キー (Ke) として使用します。

  • HoD および Kp からセグメント ID (HoHoDk) を生成します。

    HoHoDk = HMAC(Kp, HoD + C), where C is the ASCII string “MS_P2P_CACHING” with NUL terminator.

このレイヤーの重大な脅威はセグメント シークレットに関する危険ですが、BranchCache ではコンテンツ データ ブロックを暗号化してセグメント シークレットを保護します。 BranchCache は、コンテンツ ブロックが配置されているコンテンツ セグメントのセグメント シークレットから生成された暗号化キーを使用してこの操作を実行します。 これにより、サーバー シークレットを所有していないエンティティは、データ ブロック内の実際のコンテンツを検出できません。 セグメント シークレットはプレーンテキスト セグメントそのものと同じセキュリティ レベルで処理されます。なぜなら、特定のセグメントのセグメント シークレットがわかると、ピアからセグメントを取得し、暗号化を解除することが可能になるからです。 サーバー シークレットを知られることがそのまま特定のプレーンテキストが取得されることにはなりません。しかし、暗号テキストから特定の種類のデータが引き出され、部分的に判明している一部のデータに対するブルート フォース攻撃に利用される可能性があります。 したがって、サーバー シークレットは秘密にしておく必要があります。

BranchCache のプロセス: コンテンツの検出

コンテンツ情報がクライアント コンピューターで受け取られた後、クライアントは、キャッシュがクライアント コンピューター間で分散されているかホスト型キャッシュ サーバーに配置されているかどうかに関係なく、セグメント ID を使用して、ローカル ブランチ オフィスのキャッシュ内で要求されたコンテンツを見つけます。

クライアント コンピューターがホスト型キャッシュ モード用に構成されている場合、その構成にホスト型キャッシュ サーバーのコンピューター名が使用されています。クライアント コンピューターは、このサーバーにアクセスしてコンテンツを取得します。

ただし、クライアント コンピューターが分散キャッシュ モードに構成されている場合、コンテンツはブランチ オフィス内の複数のコンピューターの複数のキャッシュに格納されている可能性があります。 クライアント コンピューターは、コンテンツを取得する前に、目的のコンテンツがどこにあるかを検出する必要があります。

分散キャッシュ モード用に構成されている場合、クライアント コンピューターは、Web Services Dynamic Discovery (WS-Discovery) プロトコルに基づく検出プロトコルを使用してコンテンツを検出します。 クライアントは、WS-Discovery マルチキャスト プローブ メッセージを送信して、ネットワーク上のキャッシュされたコンテンツを検出します。 プローブ メッセージにはセグメント ID が含まれます。これにより、クライアントは、要求されたコンテンツがキャッシュに格納されているコンテンツと一致するかどうかを判定できます。 初期プローブ メッセージを受け取ったクライアントは、セグメント ID がローカルにキャッシュされているコンテンツと一致する場合、ユニキャスト Probe-Match メッセージを照会元のクライアントに返信します。

WS-Discovery プロセスが成功するかどうかは、検出操作を実行しているクライアントが、要求したコンテンツに関する適切なコンテンツ情報をコンテンツ サーバーから提供されているかどうかにかかっています。

コンテンツの要求フェーズでのデータに対する主な脅威は、情報が暴露される危険性です。それは、コンテンツ情報にアクセスすることは、コンテンツに対する承認されたアクセスを暗示するからです。 このリスクを軽減するため、検出プロセスではセグメント ID 以外のコンテンツ情報が明らかにされません。これにより、コンテンツを含むプレーンテキスト セグメントに関する情報は何も暴露されません。

また、同じネットワーク サブネット上の別のクライアント コンピューターを悪意のあるユーザーが使用した場合、ルーターを通過する元のコンテンツ ソースに対する BranchCache 検出トラフィックを見ることができます。

要求したコンテンツがブランチ オフィスに見つからなかった場合、クライアントは、WAN リンクを介してコンテンツ サーバーに直接コンテンツを要求します。

受け取ったコンテンツは、クライアント コンピューターまたはホスト型キャッシュ サーバーのローカル キャッシュに追加されます。 このとき、コンテンツ情報に基づいて、クライアントまたはホスト型キャッシュ サーバーは、ハッシュと一致しないコンテンツをローカル キャッシュに追加しません。 ハッシュを照合してコンテンツを検証することにより、有効なコンテンツのみがキャッシュに追加され、ローカル キャッシュの整合性が保護されます。

BranchCache のプロセス: コンテンツの取得

クライアント コンピューターは、コンテンツ ホスト (ホスト型キャッシュ サーバーまたは分散キャッシュ モード クライアント コンピューター) 上に目的のコンテンツを検出すると、コンテンツの取得プロセスを開始します。

最初に、クライアント コンピューターが、必要な最初のブロックの要求をコンテンツ ホストに送信します。 この要求には、目的のコンテンツを識別するセグメント ID とブロック範囲が含まれています。 返されるブロックは 1 つだけであるため、ブロック範囲には 1 つのブロックしか含まれていません (複数ブロックの要求は現在サポートされていません)。 さらに、クライアントは、要求をローカルの未処理の要求リストに格納します。

コンテンツ ホストは、クライアントから有効な要求メッセージを受け取ると、要求に指定されたブロックがコンテンツ ホストのコンテンツ キャッシュにあるかどうかを確認します。

コンテンツ ブロックを保有している場合、コンテンツ ホストは、セグメント ID、ブロック ID、暗号化されたデータ ブロック、ブロックの暗号化に使用された初期化ベクトルが含まれた応答を送信します。

コンテンツ ブロックを保有していないコンテンツ ホストは、空の応答メッセージを送信します。 空の応答メッセージを受け取ったクライアント コンピューターは、要求したブロックがコンテンツ ホストにないと判断します。 空の応答メッセージには、要求されたブロックのセグメント ID とブロック ID、およびサイズが 0 のデータ ブロックが含まれています。

クライアント コンピューターは、コンテンツ ホストから応答を受け取ると、メッセージが未処理の要求リスト内の要求メッセージに対応していることを確認します (未処理の要求との間でセグメント ID とブロック インデックスが一致する必要があります)。

この確認プロセスが失敗し、クライアント コンピューターの未処理の要求リストに対応する要求メッセージが含まれていない場合、クライアント コンピューターはメッセージを破棄します。

この確認プロセスが成功し、クライアント コンピューターの未処理の要求リストに対応する要求メッセージが含まれている場合、クライアント コンピューターはブロックの暗号化を解除します。 クライアントは、次に、暗号化が解除されたブロックを、クライアントが最初に元のコンテンツ サーバーから取得したコンテンツ情報の適切なブロック ハッシュに対して検証します。

ブロックの検証が成功した場合、暗号化が解除されたブロックがキャッシュに格納されます。

必要なすべてのブロックをクライアントが取得できるまで、このプロセスが繰り返されます。

注意

コンテンツの完全なセグメントが 1 台のコンピューターに存在しない場合、取得プロトコルは、さまざまなソースからコンテンツを取得して構成します。つまり、分散キャッシュ モード クライアント コンピューターのセット、ホスト型キャッシュ サーバーのほか、ブランチ オフィスのキャッシュに完全なコンテンツが含まれていない場合はメイン オフィスの元のコンテンツ サーバーが使用されます。

BranchCache がコンテンツ情報またはコンテンツを送信する前に、データは暗号化されます。 BranchCache は、応答メッセージ内のブロックを暗号化します。Windows 7 で BranchCache が使用する既定の暗号化アルゴリズムは AES-128 です。この暗号化アルゴリズムで使用される暗号化キーは Ke、キー サイズは 128 ビットです。 BranchCache は、暗号化アルゴリズムに適した初期化ベクトルを生成し、暗号化キーを使用してブロックを暗号化します。 BranchCache は、次に、暗号化アルゴリズムと初期化ベクトルをメッセージを記録します。 サーバーとクライアントが暗号化キーを交換、共有、またはやり取りすることはありません。 クライアントは、ソース コンテンツをホストするコンテンツ サーバーから暗号化キーを受け取ります。 次に、サーバーから受け取った暗号化アルゴリズムと初期化ベクトルを使用して、ブロックの暗号化が解除されます。 ダウンロード プロトコルには、その他の明示的な認証または承認は組み込まれていません。

セキュリティ上の脅威

このレイヤーの重大なセキュリティ上の脅威には、次の脅威が含まれます。

  • データの改ざん:

    データを要求元に提供するクライアントがデータを改ざんします。 BranchCache セキュリティ モデルでは、ハッシュを使用して、クライアントまたはサーバーによってデータが改変されていないことを確認します。

  • 情報の漏洩:

    BranchCache が、暗号化されたコンテンツを適切なセグメント ID を指定したすべてのクライアントに送信します。 セグメント ID は公開されているため、すべてのクライアントが暗号化されたコンテンツを受信できます。 ただし、悪意のあるユーザーが暗号化されたコンテンツを入手した場合でも、コンテンツの暗号化を解除するには暗号化キーを知っている必要があります。 認証を行い、コンテンツ情報を認証および承認されたクライアントに渡すのは、上層のプロトコルの役割です。 コンテンツ情報に対してはコンテンツ自体に適用されるセキュリティと同等のセキュリティが適用され、BranchCache によってコンテンツ情報が公開されることはありません。

    攻撃者がネットワークをスニッフィングしてコンテンツを入手します。 BranchCache は、ネットワーク上のデータのスニッフィング対策用に秘密鍵が Ke の AES128 を使用して、クライアント間のすべての転送を暗号化します。 コンテンツ サーバーからダウンロードされるコンテンツ情報はデータ自体に適用される方法と同じ方法で保護されます。したがって、BranchCache を使用していない場合と比較して、情報が漏洩する可能性は大きくも小さくもありません。

  • サービス拒否:

    大量のデータ要求によってクライアントをパンク状態にします。 BranchCache プロトコルには、クライアントに負荷がかかりすぎるのを防止するためのキュー管理カウンターおよびタイマーが用意されています。

BranchCache のプロセス: コンテンツのキャッシング

分散キャッシュ モードのクライアント コンピューターおよびブランチ オフィスに配置されているホスト型キャッシュ サーバーでは、WAN リンクからコンテンツが取得されるのに応じてコンテンツ キャッシュが構築されます。

ホスト型キャッシュ モードで構成されているクライアント コンピューターは、コンテンツをローカル キャッシュに追加したうえで、データをホスト型キャッシュ サーバーにも提供します。 ホスト型キャッシュ プロトコルは、クライアントがコンテンツとセグメントの可用性に関する情報をホスト型キャッシュ サーバーに通知するためのメカニズムを提供します。 コンテンツをホスト型キャッシュ サーバーにアップロードするために、クライアントは、使用できるセグメントがあることをサーバーに通知します。 次に、ホスト型キャッシュ サーバーは、提供されるセグメントに関連付けられているすべてのコンテンツ情報を取得し、実際に必要なセグメント内のブロックをダウンロードします。 クライアントがホスト型キャッシュ サーバーに提供するセグメントがなくなるまで、この操作が繰り返されます。

ホスト型キャッシュ プロトコルを使用してホスト型キャッシュ サーバーを更新するには、次の要件を満たす必要があります。

  • クライアント コンピューターは、ホスト型キャッシュ サーバーに提供できるセグメント内にブロックのセットを保有している必要があります。 クライアントは、提供されるセグメントのコンテンツ情報を提供する必要があります。これは、セグメント ID、セグメント データのハッシュ、セグメント シークレット、およびセグメントに含まれるすべてのブロック ハッシュのリストから構成されます。

  • Windows Server 2008 R2 が実行されているホスト型キャッシュ サーバーでは、ホスト型キャッシュ サーバー証明書と関連する秘密キーが必要です。さらに、証明書を発行した証明機関 (CA) は、ブランチ オフィスのクライアント コンピューターから信頼されている必要があります。 これにより、クライアントとサーバーは正常に HTTPS サーバー認証に参加できます。

    重要

    Windows Server 2012 が実行されているホスト型キャッシュ サーバーでは、ホスト型キャッシュ サーバー証明書と関連する秘密キーを必要としません。

  • クライアント コンピューターは、ホスト型キャッシュ サーバーのコンピューター名と、ホスト型キャッシュ サーバーが BranchCache トラフィックをリッスンする伝送制御プロトコル (TCP) ポート番号を使用して構成されます。 ホスト型キャッシュ サーバーの証明書は、このポートにバインドされます。 ホスト型キャッシュ サーバーがドメイン メンバー コンピューターの場合、ホスト型キャッシュ サーバーのコンピューター名に完全修飾ドメイン名 (FQDN) を使用できます。ホスト型キャッシュ サーバーがドメイン メンバーでない場合は、コンピューター名に NetBIOS 名を使用できます。

  • クライアント コンピューターは、着信ブロック要求をアクティブにリッスンします。 リッスンしているポートは、クライアントからホスト型キャッシュ サーバーへの提供メッセージの一部として渡されます。 これにより、ホスト型キャッシュ サーバーは、BranchCache プロトコルを使用してクライアント コンピューターに接続し、セグメント内のデータ ブロックを取得します。

  • ホスト型キャッシュ サーバーは、初期化されたときに着信 HTTP 要求のリッスンを開始します。

  • クライアント コンピューター認証を要求するようにホスト型キャッシュ サーバーが構成されている場合、クライアントとホスト型キャッシュ サーバーの両方で HTTPS 認証をサポートする必要があります。

ホスト型キャッシュ モードのキャッシュ保護

ブランチ オフィス内のホスト型キャッシュ サーバーのキャッシュにコンテンツを追加する処理は、クライアントがセグメント ID を含む INITIAL_OFFER_MESSAGE を送信したときに開始されます。 INITIAL_OFFER_MESSAGE 要求に含まれるセグメント ID は、対応するセグメント データのハッシュ、ブロック ハッシュのリスト、およびセグメント シークレットをホスト型キャッシュ サーバーのブロック キャッシュから取得するために使用されます。 ホスト型キャッシュ サーバーが特定のセグメントのすべてのコンテンツ情報を持つ場合、INITIAL_OFFER_MESSAGE に対して OK の応答が返され、ブロックをダウンロードするための要求は発行されません。

ホスト型キャッシュ サーバーがセグメント内のブロック ハッシュに関連付けられたすべての提供データ ブロックを持たない場合、INITIAL_OFFER_MESSAGE の応答は INTERESTED となります。 クライアントは、次に、提供される単一のセグメントを記述した SEGMENT_INFO_MESSAGE を送信します。 ホスト型キャッシュ サーバーは、OK メッセージで応答し、提供元のクライアント コンピューターから不足しているブロックのダウンロードを開始します。

セグメントのデータのハッシュ、ブロック ハッシュのリスト、およびセグメント シークレットは、ダウンロードされているコンテンツが改ざんまたは改変されていないことを保証するために使用されます。 その後、ダウンロードされたブロックは、ホスト型キャッシュ サーバーのブロック キャッシュに追加されます。

キャッシュのセキュリティ

ここでは、クライアント コンピューターおよびホスト型キャッシュ サーバー上でキャッシュされたデータに対する BranchCache によるセキュリティ保護について説明します。

クライアント コンピューターのキャッシュのセキュリティ

BranchCache に格納されたデータの最大の脅威は、データが改ざんされることです。 キャッシュに格納されているコンテンツとコンテンツ情報を攻撃者が改ざんできる場合、攻撃者はこれを利用して、BranchCache が使用されているコンピューターに対して攻撃を仕掛けることができます。 攻撃者は、悪意のあるソフトウェアを他のデータに代えて挿入することで、攻撃を開始します。 BranchCache では、コンテンツ情報に含まれるブロック ハッシュを使用してすべてのコンテンツを検証することによって、この脅威を緩和しています。 攻撃者がこのデータの改ざんを試みた場合、そのデータは破棄され、元のソースの有効なデータで置き換えられます。

BranchCache に格納されたデータの 2 つ目の脅威は、情報の漏洩です。 分散キャッシュ モードでは、クライアントは自身で要求したコンテンツのみをキャッシュします。ただし、このデータはクリア テキストで保存されるため、危険にさらされる可能性があります。 キャッシュへのアクセスを BranchCache サービスのみに制限するために、ローカル キャッシュは、ACL に指定されたファイル システムのアクセス許可によって保護されます。 ACL は承認されていないユーザーがキャッシュにアクセスするのを防ぐうえで効果的です。しかし、管理者特権を持つユーザーであれば、ACL に指定されたアクセス許可を手動で変更してキャッシュにアクセスすることができます。 BranchCache では、管理者アカウントの悪用に対する保護は提供されません。

コンテンツ キャッシュに格納されたデータは暗号化されていません。したがって、データの漏洩が心配な場合は、BitLocker や暗号化ファイル システム (EFS) などの暗号化テクノロジを使用できます。 BranchCache によって使用されるローカル キャッシュは、ブランチ オフィス内のコンピューターにおける情報漏洩の脅威を大きくすることにはなりません。キャッシュには、ディスク上のどこかに暗号化されていない状態で存在するファイルのコピーが含まれているだけです。 クライアントの物理的セキュリティを確保するのが困難な環境では、ディスク全体を暗号化することが特に重要になります。 たとえば、ディスク全体を暗号化すると、ブランチ オフィス環境から持ち出される可能性のあるモバイル コンピューター上の機密性の高いデータをセキュリティで保護できます。

ホスト型キャッシュ サーバーのキャッシュのセキュリティ

ホスト型キャッシュ モードの場合、ホスト型キャッシュ サーバーのセキュリティに関する最大の脅威は、情報の漏洩です。 ホスト型環境の BranchCache は、分散キャッシュ モードの場合と同様に、ファイル システムのアクセス許可によってキャッシュされたデータを保護します。 その違いは、ホスト型キャッシュ サーバーでは、単一のクライアントが要求したデータのみではなく、ブランチ オフィス内の BranchCache が有効なコンピューターから要求されたすべてのコンテンツが格納されるという点にあります。 より多くのデータが危険にさらされるこのキャッシュへの不正侵入は、より深刻な事態を招く可能性があります。

ホスト型キャッシュ サーバーで Windows Server 2008 R2 が実行されているホスト型キャッシュ環境でブランチ オフィス内のいずれかのクライアントが WAN リンクを介して機密性の高いデータにアクセスできる場合は、BitLocker や EFS などの暗号化テクノロジを使用することをお勧めします。 これに加え、ホスト型キャッシュへの物理的なアクセスを防ぐことも必要です。なぜなら、ディスクの暗号化は、攻撃者が物理的にアクセスした際にコンピューターがオフになっているときにのみ効果を発揮するからです。 コンピューターがオンのとき、またはスリープ モードのとき、ディスクの暗号化による保護はほとんど効果がありません。

注意

Windows Server 2012 が実行されているホスト型キャッシュ サーバーでは、既定でキャッシュ内のすべてのデータが暗号化されるため、追加で暗号化テクノロジを使用する必要はありません。

クライアントがホスト型キャッシュ モードで構成されている場合でも、データはローカルにキャッシュされます。このため、ホスト型キャッシュ サーバー上のキャッシュに加えて、ローカル キャッシュを保護するための手順を実行する必要があります。