BranchCache

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016

В этом разделе, предназначенном для специалистов в сфере информационных технологий (ИТ), представлена обзорная информация о службе BranchCache, включая описание ее режимов, компонентов, возможностей и функций, доступных в различных операционных системах.

Примечание.

В дополнение к данному разделу доступна следующая документация по BranchCache.

Кто будет заинтересован в BranchCache?

Если вы системный администратор, архитектор решений в сфере сети и хранения или специалист в другой области ИТ, BranchCache может заинтересовать вас в следующих случаях.

  • Вы проектируете или поддерживаете ИТ-инфраструктуру в организации, где есть два физических офиса или больше и соединение через глобальную сеть (WAN) между филиалами и главным офисом.

  • Вы проектируете или поддерживаете ИТ-инфраструктуру в организации, где развернуты облачные технологии, и сотрудники используют соединение WAN для получения доступа к данным и приложениям, которые находятся в удаленных расположениях.

  • Вы хотите оптимизировать уровень использования пропускной способности WAN путем сокращения сетевого трафика между филиалами и главным офисом.

  • Вы развернули или планируете развернуть серверы содержимого в главном офисе, конфигурация которого соответствует описанной в этом разделе.

  • Клиентские компьютеры в филиалах работают под управлением Windows 10, Windows 8.1, Windows 8 или Windows 7.

Этот раздел включает следующие подразделы:

Что такое BranchCache?

BranchCache — это технология оптимизации пропускной способности сети (WAN), которая входит в некоторые выпуски операционных систем Windows Server 2016 и Windows 10, а также в некоторых выпусках Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 8, Windows Server 2008 R2 и Windows 7. Для оптимизации пропускной способности глобальной сети служба BranchCache получает данные с серверов содержимого в главном офисе или облаке и помещает их в кэш на компьютерах филиала, когда пользователи получают доступ к содержимому на удаленных серверах, что позволяет обеспечить для клиентских компьютеров в филиалах локальный доступ к данным вместо доступа по глобальной сети.

В филиалах содержимое хранится либо на серверах, настроенных для размещения кэша, либо при отсутствии сервера в филиале на клиентских компьютерах под управлением Windows 10, Windows 8.1, Windows 8 или Windows 7. После того как клиентский компьютер запрашивает и получает данные из главного офиса и содержимое кэшируется в филиале, остальные компьютеры этого филиала могут получать данные локально, а не загружать их с сервера содержимого по глобальной сети.

Когда клиентские компьютеры посылают последующие запросы на те же данные, клиенты загружают с сервера сведения о содержимом вместо фактического содержимого. Сведения о содержимом состоят из хэшей, которые вычисляются с помощью блоков исходного содержимого. Их размер исключительно мал по сравнению с содержимым в исходных данных. Затем клиентские компьютеры используют сведения о содержимом, чтобы найти содержимое в кэше филиала, который находится на клиентском компьютере или на сервере. Клиентские компьютеры и серверы также используют сведения о содержимом, чтобы защитить кэшированное содержимое от несанкционированного доступа.

Служба BranchCache увеличивает производительность конечного пользователя, сокращая время обработки запросов контента для клиентских компьютеров и серверов в филиалах, а также повышая производительность сети в результате снижения трафика глобальной сети.

Режимы BranchCache

BranchCache работает в двух режимах: в режиме распределенного кэша и в режиме размещенного кэша.

Если вы развертываете BranchCache в режиме распределенного кэша, кэш содержимого в филиале распределяется между клиентскими компьютерами.

Если вы развертываете BranchCache в режиме размещенного кэша, кэш содержимого в филиале размещается на одном или нескольких серверах, которые называются серверами размещенного кэша.

Примечание.

Вы можете развернуть BranchCache, используя оба режима, но в одном филиале можно использовать только один режим. Например, если в вашей организации два филиала, в одном из которых есть сервер, а в другом — нет, вы можете развернуть BranchCache в режиме размещенного кэша в том филиале, где есть сервер, а в том, где есть только клиентские компьютеры, использовать режим распределенного кэша.

На следующей иллюстрации служба BranchCache развернута в обоих режимах.

BranchCache Modes

Режим распределенного кэша больше подходит для небольших филиалов, где нет локального сервера, который можно использовать в качестве сервера размещенного кэша. Режим распределенного кэша позволяет развернуть BranchCache в филиале без дополнительного оборудования.

Если в филиале, где вы хотите развернуть BranchCache, есть дополнительная инфраструктура, например один или несколько серверов, выполняющих другие функции, развертывание BranchCache в режиме размещенного кэша предпочтительнее по следующим причинам.

Повышенная доступность кэша

В режиме размещенного кэша увеличивается эффективность кэша, так как содержимое будет доступно даже в том случае, если клиент, первоначально запросивший и поместивший в кэш данные, находится в автономном режиме. Так как сервер размещенного кэша всегда доступен, в кэш помещается большее количество содержимого, что обеспечивает значительное увеличение пропускной способности WAN и эффективности BranchCache.

Централизованное кэширование для филиалов с несколькими подсетями

В режиме распределенного кэша используется одна подсеть. В филиале с несколькими подсетями, где настроен режим распределенного кэша, файл, загруженный в одной подсети, будет недоступен клиентским компьютерам в других подсетях.

Поэтому клиенты в других подсетях, не обладая информацией о том, что файл уже загружен, получают файл с сервера содержимого главного офиса, пользуясь в процессе пропускной способностью WAN.

Такое не случится при использовании режима размещенного кэша — все клиенты в филиале с несколькими подсетями могут получить доступ к единому кэшу, который хранится на сервере размещенного кэша, даже если клиенты находятся в разных подсетях. Кроме того, BranchCache в Windows Server 2016, Windows Server 2012 R2 и Windows Server 2012 предоставляют возможность развертывания нескольких размещенных серверов кэша на офис филиала.

Внимание

При использовании службы BranchCache для кэширования папок и файлов по протоколу SMB не отключайте автономные файлы. Если автономные файлы будут отключены, кэширование BranchCache SMB будет работать неправильно.

Серверы содержимого с BranchCache

При развертывании BranchCache исходный контент хранится на серверах содержимого с поддержкой BranchCache в главном офисе или в облачном центре обработки данных. BranchCache поддерживает следующие типы серверов содержимого.

Примечание.

Только исходное содержимое , то есть содержимое, которое клиентские компьютеры изначально получают от сервера содержимого с поддержкой BranchCache, ускоряется с помощью BranchCache. Содержимое, которое клиентские компьютеры получают напрямую из других источников, например с веб-серверов в Интернете или из Центра обновления Windows, не кэшируется клиентским компьютером или сервером размещенного кэша и недоступно другим компьютерам в филиале. Если вы хотите ускорить Обновл. Windows содержимое, вы можете установить сервер приложений Служб обновления Windows Server (WSUS) в главном офисе или облачном центре обработки данных и настроить его как сервер содержимого BranchCache.

Веб-серверы

Поддерживаемые веб-серверы включают компьютеры под управлением Windows Server 2016, Windows Server 2012 R2, Windows Server 2012 или Windows Server 2008 R2 с установленной ролью сервера веб-сервера (IIS), а также с использованием протокола HTTP или HTTP Secure (HTTPS).

Кроме того, на веб-сервере должен быть установлен компонент BranchCache.

Файловые серверы

Поддерживаемые файловые серверы включают компьютеры под управлением Windows Server 2016, Windows Server 2012 R2, Windows Server 2012 или Windows Server 2008 R2 с ролью сервера файлов и службой ролей BranchCache для сетевых файлов.

Эти файловые серверы используют протокол SMB для обмена данными между компьютерами. Чтобы включить BranchCache, после завершения установки файлового сервера необходимо включить совместное использование папок и генерирование хэша для общих папок с помощью групповой политики или политики локального компьютера.

Серверы приложений

Поддерживаемые серверы приложений включают компьютеры под управлением Windows Server 2016, Windows Server 2012 R2, Windows Server 2012 или Windows Server 2008 R2 с установленным и включенным фоновой интеллектуальной службой передачи (BITS).

Кроме того, на сервере приложений должен быть установлен компонент BranchCache. В качестве примеров серверов приложений можно развертывать службы обновления Microsoft Windows Server (WSUS) и серверы точки распространения филиала Microsoft Endpoint Configuration Manager в качестве серверов содержимого BranchCache.

BranchCache и облако

Облако обладает огромным потенциалом с точки зрения сокращения операционных расходов и достижения новых уровней масштабирования, но удаление процессов от работающих с ними людей может увеличить сетевые расходы и снизить эффективность. Пользователи ожидают высокую производительность и не заботятся о том, где размещаются их приложения и данные.

Служба BranchCache может увеличить производительность сетевых приложений и снизить нагрузку на глобальную сеть благодаря использованию общего кэша данных. Она также повышает производительность в филиалах и главных офисах, где сотрудники используют серверы, развернутые в облаке.

Для развертывания BranchCache не нужно дополнительное оборудование или изменение топологии сети, поэтому это идеальное решение для улучшения связи между офисами и общими или частными облаками.

Примечание.

Так как некоторые веб-прокси не могут обрабатывать нестандартные заголовки кодирования содержимого, рекомендуется использовать BranchCache с протоколом Hyper Text Transfer Protocol Secure (HTTPS) и не HTTP.

======= Дополнительные сведения о облачных технологиях в Windows Server 2016 см. в разделе "Программное обеспечение определенных сетей" (SDN).

Версии сведений о содержимом

Существует две версии сведений о содержимом:

  • Сведения о содержимом, совместимые с компьютерами под управлением Windows Server 2008 R2 и Windows 7, называются версия 1 или V1. В сегментации файлов BranchCache версии V1 сегменты файлов крупнее, чем в версии V2, и имеют фиксированный размер. Вследствие большого фиксированного размера сегментов, когда из-за внесенного пользователем изменения меняется длина файла, становится недействительным не только сегмент с изменением, но и все сегменты до конца файла. В результате, когда в следующий раз другой пользователь в филиале обратится к измененному файлу, затраты полосы пропускания WAN будут больше, поскольку измененное содержимое и все содержимое после изменения передаются по каналу WAN.

  • Сведения о содержимом, совместимые с компьютерами под управлением Windows Server 2016, Windows 10, Windows Server 2012 R2, Windows 8.1, Windows Server 2012 и Windows 8 называются версиями 2 или V2. Сведения о содержимом версии V2 используют меньшие сегменты с переменным размером, которые более устойчивы к изменениям в файле. Это повышает вероятность того, что сегменты из более старой версии файла можно будет использовать повторно при обращении пользователя к измененной версии. Поэтому с сервера содержимого будет извлекаться только измененная часть файла и затраты полосы пропускания WAN уменьшатся.

В приведенной ниже таблице показаны версии сведений о содержимом, которые применяются в зависимости от того, какие операционные системы на клиенте, сервере содержимого и сервере размещенного кэша используются в развертывании BranchCache.

Примечание.

В таблице ниже акроним "ОС" означает операционную систему.

ОС клиента ОС на сервере содержимого Ос на сервере размещенного кэша Версия сведений о содержимом
Windows Server 2008 R2 и Windows 7 Windows Server 2012 или более поздней версии; Windows Server 2012 или более поздней версии; Нет для режима распределенного кэша V1
Windows Server 2012 или более поздней версии; Windows 8 или более поздней версии Windows Server 2008 R2 Windows Server 2012 или более поздней версии; Нет для режима распределенного кэша 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 2016, Windows Server 2012 R2 и Windows Server 2012, они используют соответствующую версию сведений о содержимом на основе операционной системы клиента BranchCache, запрашивающего информацию.

Когда компьютеры под управлением Windows Server 2012 и Windows 8 или более поздней версии операционных систем запрашивают содержимое, содержимое и размещенные серверы кэша используют сведения о содержимом версии 2; Если компьютеры под управлением Windows Server 2008 R2 и Windows 7 запрашивают содержимое, содержимое и размещенные серверы кэша используют сведения о содержимом версии 1.

Внимание

При развертывании BranchCache в режиме распределенного кэша клиенты, использующие разные версии сведений о содержимом, не могут совместно использовать содержимое. Например, клиентский компьютер под управлением Windows 7 и клиентский компьютер под управлением Windows 10, установленные в одном филиале, не совместно используют содержимое друг с другом.

Обновление содержимого в файлах с помощью службы BranchCache

Когда пользователи филиала изменяют или обновляют содержимое документов, их изменения записываются непосредственно на сервер содержимого в главном офисе без участия BranchCache. Это происходит независимо от того, загрузил ли пользователь документ с сервера содержимого или извлек его из размещенного или распределенного кэша филиала.

При запросе измененного файла другим клиентом из филиала новые сегменты файла загружаются с сервера главного офиса и добавляются в размещенный или распределенный кэш в данном филиале. Таким образом пользователи из филиала всегда имеют доступ к самым последним версиям кэшированного содержимого.

Руководство по установке BranchCache

Вы можете использовать диспетчер сервера в Windows Server 2016 для установки компонента BranchCache или службы роли BranchCache для сетевых файлов роли сервера файловых служб. Воспользуйтесь следующей таблицей, чтобы определить, следует ли устанавливать службу роли или компонент.

Функция Расположение компьютера Элемент BranchCache, который следует установить
Сервер содержимого (сервер приложений на базе BITS) Главный офис или облачный центр обработки данных Компонент BranchCache
Сервер содержимого (веб-сервер) Главный офис или облачный центр обработки данных Компонент BranchCache
Сервер содержимого (файловый сервер, использующий протокол SMB) Главный офис или облачный центр обработки данных Служба роли "Служба BranchCache для сетевых файлов" для роли сервера файловых служб
Сервер размещенного кэша Офис филиала Компонент BranchCache с включенным режимом сервера размещенного кэша
Клиентский компьютер с BranchCache Офис филиала Установка не требуется, просто включите на клиенте службу и режим BranchCache (распределенного или размещенного кэша)

Чтобы установить службу роли или компонент, откройте диспетчер серверов и выберите компьютеры, на которых вы хотите включить функции BranchCache. Откройте диспетчер серверов, щелкните Управление, а затем нажмите кнопку Добавить роли и компоненты. Откроется мастер добавления ролей и компонентов. Запустите мастер и выберите следующие параметры.

  • На странице мастера Выбор типа установки выберите Установка ролей или компонентов.

  • На странице мастера выберите роли сервера, если вы устанавливаете файловый сервер с поддержкой BranchCache, разверните файловые службы и служба хранилища службы и службы iSCSI, а затем выберите BranchCache для сетевых файлов. Чтобы сэкономить место на диске, можно также выбрать службу роли дедупликации данных, а затем перейти к установке и завершению мастера. Если вы не хотите устанавливать файловый сервер с поддержкой BranchCache, не устанавливайте роль "Файл" и служба хранилища services со службой ролей BranchCache для сетевых файлов.

  • На странице мастера выбор компонентов, если вы устанавливаете сервер содержимого, который не является файловый сервер или устанавливаете размещенный сервер кэша, выберите BranchCache, а затем перейдите к мастеру до установки и завершения. Если вы не хотите устанавливать сервер содержимого, который не является файловым сервером, или сервер размещенного кэша, не устанавливайте компонент BranchCache.

Версии операционных систем для BranchCache

Ниже приведен список операционных систем, поддерживающих различные типы функций BranchCache.

Операционные системы, поддерживающие функцию BranchCache на клиентских компьютерах

Следующие операционные системы предоставляют BranchCache поддержку фоновой интеллектуальной службы передачи данных (BITS), протокола HTTP и блока сообщений сервера (S МБ).

  • Windows 10 Корпоративная

  • Windows 10 для образовательных учреждений

  • Windows 8.1 Корпоративная

  • Windows 8 Корпоративная

  • Windows 7 Корпоративная

  • Windows 7 Максимальная

В следующих операционных системах BranchCache не поддерживает функции HTTP и S МБ, но поддерживает функции BranchCache BITS.

  • Поддержка Windows 10 Pro, BITS только

  • Windows 8.1 Профессиональная, поддержка BITS только

  • Windows 8 Профессиональная, поддержка BITS только

  • Поддержка Windows 7 Pro, BITS только

Примечание.

BranchCache по умолчанию недоступен в операционных системах Windows Server 2008 или Windows Vista. Однако при скачивании и установке обновления Windows Management Framework функциональные возможности BranchCache доступны только для протокола фоновой интеллектуальной передачи (BITS). Дополнительные сведения и скачивание Windows Management Framework см. в разделе Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0 и BITS 4.0) в разделе /PowerShell/scripting/windows-powershell/install/install-the-windows-powershell-2.0-engine.

Операционные системы, поддерживающие функцию BranchCache на серверах содержимого

Вы можете использовать семейства операционных систем Windows Server 2016, Windows Server 2012 R2 и Windows Server 2012 в качестве серверов содержимого BranchCache.

Кроме того, семейство операционных систем Windows Server 2008 R2 можно использовать в качестве серверов содержимого BranchCache, за исключением следующих исключений:

  • BranchCache не поддерживается в установках основных серверных компонентов Windows Server 2008 R2 Enterprise с Hyper-V.

  • BranchCache не поддерживается в установках основных серверных компонентов Центра обработки данных Windows Server 2008 R2 с Hyper-V.

Операционные системы, поддерживающие функцию BranchCache на серверах размещенного кэша

Вы можете использовать семейства операционных систем Windows Server 2016, Windows Server 2012 R2 и 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 для систем на платформе Itanium

  • Windows Server 2008 R2 Datacenter

  • Центр обработки данных Windows Server 2008 R2 с Hyper-V

  • Windows Server 2008 R2 Datacenter Server Core Installation with Hyper-V

Безопасность BranchCache

В службе BranchCache реализован подход встроенной безопасности, который обеспечивает абсолютную совместимость с существующей архитектурой сетевой безопасности и не требует установки дополнительного оборудования или сложной настройки безопасности.

BranchCache не вмешивается в работу процессов проверки подлинности или авторизации Windows и не изменяет их. После развертывания BranchCache проверка подлинности все так же выполняется с помощью учетных данных домена, и авторизация с помощью функций списков управления доступом остается неизменной. Другие конфигурации тоже продолжают работать так же, как до развертывания BranchCache.

Модель безопасности BranchCache основана на создании метаданных в виде серии хэшей. Эти хэши известны также как сведения о содержимом.

После создания сведений о содержимом в обмене сообщениями BranchCache используются эти сведения, а не фактические данные. Обмен происходит с помощью поддерживаемых протоколов (HTTP, HTTPS и SMB).

Кэшированные данные хранятся в зашифрованном виде, и клиенты, у которых нет прав доступа к содержимому из исходного источника, не могут получить к ним доступ. Клиенты должны пройти проверку подлинности и получить авторизацию от исходного источника содержимого, прежде чем они смогут получить метаданные содержимого, которые, в свою очередь, необходимы, чтобы получить доступ к кэшу в филиале.

Создание сведений о содержимом с помощью 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 обрабатывает сведения о содержимом на том же уровне безопасности, который она использует для обработки и передачи фактического содержимого.

Потоки сведений о содержимом и процессы

Поток сведений о содержимом и фактического содержимого делится на четыре этапа.

  1. Процессы BranchCache: запрос содержимого

  2. Процессы BranchCache: поиск содержимого

  3. Процессы BranchCache: получение содержимого

  4. Процессы BranchCache: кэширование содержимого

Эти этапы описаны в приведенных ниже разделах.

Процессы BranchCache: содержимое запроса

На первом этапе находящийся в филиале клиентский компьютер запрашивает содержимое, например веб-страницу, с сервера содержимого, который находится в удаленном расположении, например в главном офисе. Сервер содержимого проверяет, есть ли у клиентского компьютера права на получение запрошенного содержимого. Если такие права есть и если как на сервере содержимого, так и на клиенте включена служба BranchCache, сервер содержимого генерирует сведения о содержимом.

Затем сервер содержимого посылает эти сведения клиенту с помощью того же протокола, который был бы использован для передачи фактического содержимого.

Например, если клиентский компьютер запросил веб-страницу по протоколу HTTP, сервер содержимого пошлет сведения о содержимом по протоколу HTTP. Поэтому гарантии безопасности содержимого и сведений о содержимом на проводном уровне идентичны.

После получения первой части сведений о содержимом (хэша данных и секрета сегмента) клиентский компьютер осуществляет следующие действия.

  • Использует секрет сегмента (Kp) в качестве ключа шифрования (Ke).

  • Генерирует идентификатор сегмента (HoHoDk) из HoD и Kp.

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

Основной угрозой на этом уровне является риск раскрытия секрета сегмента, однако BranchCache шифрует блоки данных содержимого, чтобы защитить этот секрет. BranchCache реализует это с помощью ключа шифрования, созданного из секрета сегмента содержимого, в котором расположены блоки содержимого.

Этот подход гарантирует, что объект, не владеющий секретом сервера, не сможет раскрыть фактическое содержимое в блоке данных. Секрет сегмента обрабатывается с тем же уровнем безопасности, что и сегмент открытого текста, так как знание секрета конкретного сегмента даст объекту возможность получить сегмент от узлов партнеров и расшифровать его. Знание секрета сервера не приведет к немедленному получению конкретного открытого текста, но может быть использовано для получения определенных типов данных из зашифрованного текста и открытия некоторых частично известных данных для атаки методом подбора. Таким образом, секрет сервера следует хранить в тайне.

Процессы BranchCache: поиск содержимого

После того как клиентский компьютер получил сведения о содержимом, он использует идентификатор сегмента, чтобы найти запрошенное содержимое в локальном кэше филиала, который может быть распределен между клиентскими компьютерами или расположен на сервере размещенного кэша.

Если клиентский компьютер работает в режиме размещенного кэша, он настроен на имя сервера размещенного кэша и связывается с этим сервером для получения содержимого.

Если клиентский компьютер работает в режиме распределенного кэша, содержимое может храниться в нескольких кэшах на нескольких компьютерах филиала. Прежде чем получить содержимое, клиентский компьютер должен найти его расположение.

Клиентские компьютеры, работающие в режиме распределенного кэша, определяют расположение содержимого с помощью протокола обнаружения, основанного на протоколе WS-Discovery. Клиенты посылают многоадресные сообщения "Проба" по протоколу WS-Discovery, чтобы обнаружить в сети кэшированное содержимое. Сообщение "Проба" включает идентификатор сегмента, который позволяет клиентам проверить, совпадает ли запрошенное содержимое с тем, что хранится в их кэше. Клиенты, которые получают исходное сообщение "Проба", отвечают пославшему запрос клиенту одноадресными сообщениями "Проба-Соответствие", если идентификатор сегмента соответствует содержимому, которое хранится в локальном кэше.

Успех процесса WS-Discovery зависит от того, есть ли у клиента, осуществляющего поиск, правильные сведения о запрашиваемом содержимом, предоставленные сервером содержимого.

Основную угрозу данным на этапе запроса содержимого представляет раскрытие сведений, так как доступ к сведениям о содержимом подразумевает авторизованный доступ к содержимому. Чтобы снизить этот риск, в процессе обнаружения не раскрываются сведения о содержимом, кроме идентификатора сегмента, и следовательно, не раскрывается сегмент открытого текста, включающий содержимое.

Кроме того, пользователь-злоумышленник, использующий другой клиентский компьютер, который находится в той же подсети, может видеть трафик обнаружения BranchCache к исходному источнику содержимого, проходящий через маршрутизатор.

Если запрашиваемое содержимое не найдено в филиале, клиент запрашивает его непосредственно с сервера содержимого по глобальной сети.

После получения содержимого оно добавляется в локальный кэш либо на клиентском компьютере, либо на сервере размещенного кэша. В этом случае сведения о содержимом не дадут клиенту или серверу размещенного кэша добавить в локальный кэш какое-либо содержимое, которое не соответствует хэшам. Процесс проверки содержимого на соответствие хэшам гарантирует, что в кэш будет добавлено только допустимое содержимое, и тем самым защищает целостность локального кэша.

Процессы BranchCache: получение содержимого

После того как клиентский компьютер обнаружит нужное содержимое на узле содержимого, которым может быть либо сервер размещенного кэша, либо клиентский компьютер, работающий в режиме распределенного кэша, он начинает процесс получения содержимого.

Сначала клиентский компьютер посылает запрос узлу содержимого на первый блок запрашиваемого содержимого. Запрос содержит идентификатор сегмента и диапазон блоков, который идентифицирует нужное содержимое. Так как возвращается только один блок, диапазон блоков содержит только один блок. (В настоящее время запросы для нескольких блоков не поддерживаются.) Клиент также сохраняет запрос в локальном списке невыполненных запросов.

Получив допустимое сообщение запроса от клиента, узел содержимого проверка, существует ли блок, указанный в запросе, в кэше содержимого узла контента.

Если на узле содержимого присутствует блок содержимого, узел посылает ответ, который содержит идентификатор сегмента, идентификатор блока, зашифрованный блок данных и вектор инициализации, используемый для шифрования блока.

Если блок содержимого на узле отсутствует, узел посылает пустое ответное сообщение. Таким образом клиентский компьютер узнает, что на узле содержимого нет запрашиваемого блока. Пустое ответное сообщение содержит идентификаторы сегмента и запрашиваемого блока, а также блок данных нулевого размера.

При получении ответа от узла содержимого клиентский компьютер проверяет соответствие сообщения запросу в списке невыполненных запросов. (Идентификатор сегмента и индекс блока должны соответствовать таковым невыполненного запроса.)

Если процесс проверки неудачен и клиентский компьютер не находит соответствующий запрос в списке невыполненных запросов, сообщение удаляется.

Если процесс проверки удачен и клиентский компьютер находит соответствующий запрос в списке невыполненных запросов, блок расшифровывается. Затем клиент сравнивает расшифрованный блок с соответствующим хэшем блока из сведений о содержимом, которые он получил с исходного сервера содержимого.

Если проверка проходит успешно, расшифрованный блок сохраняется в кэше.

Этот процесс повторяется, пока клиент не получит все запрошенные блоки.

Примечание.

Если целые сегменты содержимого отсутствуют на одном компьютере, протокол извлечения получает и собирает содержимое из нескольких источников: с нескольких клиентских компьютеров, работающих в режиме распределенного кэша, с сервера размещенного кэша и — если содержимое не присутствует в кэше филиала полностью — с исходного сервера содержимого в главном офисе.

Прежде чем BranchCache пошлет сведения о содержимом или само содержимое, данные шифруются. BranchCache шифрует блок в ответном сообщении. В Windows 7 алгоритм шифрования по умолчанию, используемый BranchCache, — AES-128, ключ шифрования — Ke, а размер ключа — 128 бит, как определяется алгоритмом шифрования.

BranchCache генерирует подходящий для алгоритма шифрования вектор инициализации и использует ключ шифрования для шифрования блока. Затем BranchCache записывает алгоритм шифрования и вектор инициализации в сообщение.

Серверы и клиенты никогда не обмениваются, не используют совместно и не посылают друг другу ключ шифрования. Клиент получает ключ шифрования с сервера содержимого, на котором находится исходное содержимое. Затем с помощью алгоритма шифрования и вектора инициализации, полученных с сервера, он расшифровывает блок. В протокол загрузки не встроен никакой другой явный способ проверки подлинности или авторизации.

Угрозы безопасности

Основные угрозы безопасности на этом уровне включают следующее.

  • Незаконное изменение данных:

    Клиент, предоставляющий данные инициатору запроса, незаконно изменяет данные. Модель безопасности BranchCache использует хэши, чтобы подтвердить, что ни клиент, ни сервер не изменили данные.

  • Раскрытие информации:

    BranchCache посылает зашифрованное содержимое любому клиенту, который указал соответствующий идентификатор сегмента. Идентификаторы сегментов общедоступны, поэтому любой клиент может получить зашифрованное содержимое. Однако даже если пользователь-злоумышленник получит зашифрованное содержимое, ему необходимо также знать ключ шифрования, чтобы расшифровать данные. Протокол верхнего уровня выполняет проверку подлинности и передает сведения о содержимом успешно прошедшим эту проверку и авторизованным клиентам. Безопасность сведений о содержимом идентична безопасности самого содержимого, и BranchCache никогда не раскрывает сведения о содержимом.

    Злоумышленник прослушивает сеть, чтобы получить содержимое. BranchCache шифрует все передачи между клиентами с помощью алгоритма AES128 с секретным ключом Ke и предотвращает получение данных путем прослушивания сети. Сведения о содержимом, загружаемые с сервера содержимого, защищены тем же способом, каким были бы защищены сами данные, поэтому информация защищена от раскрытия не больше и не меньше, чем если бы служба BranchCache не использовалась.

  • Отказ в обслуживании.

    Клиент перегружен запросами данных. Протоколы BranchCache включают счетчики и таймеры для управления очередью, чтобы предотвратить перегрузку клиентов.

Процессы BranchCache: кэширование содержимого

На клиентских компьютерах, работающих в режиме распределенного кэша, и серверах размещенного кэша, расположенных в филиалах, кэши содержимого создаются по мере его получения через глобальную сеть.

Если клиентские компьютеры работают в режиме размещенного кэша, они добавляют содержимое в собственный локальный кэш и предлагают данные серверу размещенного кэша. Протокол размещенного кэша предоставляет клиентам механизм, с помощью которого они могут уведомить сервер размещенного кэша о наличии содержимого или сегмента.

Чтобы отправить содержимое на сервер размещенного кэша, клиенты уведомляют сервер о наличии доступного сегмента. Затем сервер размещенного кэша получает все сведения о содержимом, связанные с предлагаемым сегментом, и загружает нужные блоки в рамках сегмента. Этот процесс повторяется, пока клиент не передаст все нужные сегменты серверу размещенного кэша.

Чтобы обновить сервер размещенного кэша с помощью протокола размещенного кэша, необходимо выполнить следующие требования.

  • На клиентском компьютере должен присутствовать набор блоков в рамках сегмента, который он может предложить серверу размещенного кэша. Клиент должен предоставить сведения о содержимом предлагаемого сегмента, включая идентификатор, хэш данных и секрет сегмента, а также список всех хэшей блоков, входящих в сегмент.

  • Для размещенных серверов кэша, работающих под управлением Windows Server 2008 R2, требуется сертификат сервера размещенного кэша и связанный закрытый ключ, а центр сертификации ( ЦС), выдаваемый сертификатом, должен быть доверенным клиентскими компьютерами в филиале. Это позволяет клиенту и серверу успешно участвовать в серверной проверке подлинности HTTPS.

    Внимание

    Размещенные серверы кэша под управлением Windows Server 2016, Windows Server 2012 R2 или Windows Server 2012 не требуют сертификата сервера размещенного кэша и связанного закрытого ключа.

  • На клиентском компьютере настроено имя сервера размещенного кэша и номер порта протокола TCP, по которому сервер размещенного кэша прослушивает трафик BranchCache. Сертификат размещенного сервера кэша привязан к этому порту. Имя сервера размещенного кэша может быть полным доменным именем, если этот сервер является членом домена, или NetBIOS-именем, если он им не является.

  • Клиентский компьютер активно прослушивает входящие запросы блоков. Порт, который он прослушивает, передается в виде части сообщения о предложении от клиента серверу размещенного кэша. Это позволяет серверу размещенного кэша использовать протоколы BranchCache, чтобы подключиться к клиентскому компьютеру и получить блоки данных сегмента.

  • После инициализации сервер размещенного кэша начинает прослушивать входящие HTTP-запросы.

  • Если сервер размещенного кэша настроен на требование проверки подлинности клиентского компьютера, то и клиент и сервер должны поддерживать проверку подлинности HTTPS.

Заполнение кэша в режиме размещенного кэша

Процесс добавления содержимого в кэш размещенного сервера кэша в филиале начинается, когда клиент отправляет INITIAL_OFFER_MESSAGE, включающую идентификатор сегмента. Идентификатор сегмента в запросе INITIAL_OFFER_MESSAGE используется для получения соответствующего хэша сегментов данных, списка хэшей блоков и секрета сегмента из кэша блоков размещенного сервера кэша. Если на сервере размещенного кэша уже есть все сведения о содержимом конкретного сегмента, на запрос INITIAL_OFFER_MESSAGE посылается ответ ОК, а запрос на загрузку блоков не посылается.

Если на сервере размещенного кэша нет всех предлагаемых блоков данных, связанных с хэшами блоков в сегменте, на запрос INITIAL_OFFER_MESSAGE посылается ответ INTERESTED. В этом случае клиент посылает сообщение SEGMENT_INFO_MESSAGE, в котором описан один из предлагаемых сегментов. Сервер размещенного кэша посылает в ответ сообщение ОК и начинает загрузку недостающих блоков с предложившего их клиентского компьютера.

Хэш данных сегмента, список хэшей блоков и секрет сегмента используются, чтобы гарантировать, что загружаемое содержимое не было незаконно изменено каким-либо образом. После этого загружаемые блоки добавляются в кэш блоков сервера размещенного кэша.

Безопасность кэша

В этом разделе содержится информация о том, как BranchCache защищает кэшированные данные на клиентских компьютерах и серверах размещенного кэша.

Безопасность кэша на клиентском компьютере

Самая серьезная угроза для данных, хранящихся в BranchCache, — незаконное изменение. Если злоумышленник сможет незаконно изменить содержимое или сведения о содержимом, хранящиеся в кэше, то существует вероятность, что он сможет воспользоваться ими, чтобы начать атаку на компьютеры, использующие BranchCache. Злоумышленники могут начать атаку, заменив данные вредоносной программой. BranchCache снижает эту опасность, проверяя все содержимое с помощью хэшей блоков, которые входят в сведения о содержимом. Если злоумышленник попытается незаконно изменить эти данные, они будут удалены и заменены действительными данными из исходного источника.

Другая угроза для данных, хранящихся в BranchCache, — раскрытие информации. В режиме распределенного кэша клиент кэширует только то содержимое, которое запрашивает сам. Однако эти данные хранятся в виде открытого текста и подвержены риску. Чтобы к кэшу могла получать доступ только служба BranchCache, локальный кэш защищен разрешениями файловой системы, указанными в ACL.

Хотя ACL является эффективным средством защиты кэша от несанкционированного доступа, пользователи с правами администратора могут получить доступ к кэшу, вручную изменив разрешения, указанные в ACL. BranchCache не защищает от несанкционированного использования учетной записи администратора.

Данные, хранящиеся в кэше содержимого, не шифруются, поэтому если утечка данных имеет для вас критическое значение, вы можете использовать технологии шифрования, например BitLocker или шифрованную файловую систему (EFS). Локальный кэш, используемый BranchCache, не увеличивает угрозу раскрытия информации, актуальную для компьютера в филиале. Кэш содержит только копии файлов, которые присутствуют в незашифрованном виде в другом месте на диске.

Шифрование всего диска особенно важно в средах, где сложно обеспечить физическую безопасность клиентов. Например, шифрование всего диска поможет защитить конфиденциальные данные на мобильных компьютерах, которые можно унести из филиала.

Безопасность кэша на сервере размещенного кэша

В режиме размещенного кэша самой большой угрозой безопасности сервера размещенного кэша является раскрытие информации. В режиме размещенного кэша BranchCache, как и в режиме распределенного кэша, разрешение файловой системы защищает кэшированные данные. Разница в том, что сервер размещенного кэша хранит все содержимое, которое запрашивают все компьютеры с BranchCache в филиале, а не только данные, которые запрашивает один компьютер. Последствия несанкционированного проникновения в этот кэш могут быть значительно более серьезными, потому что риску подвергается большее количество данных.

В среде размещенного кэша, где размещенный сервер кэша работает под управлением Windows Server 2008 R2, рекомендуется использовать такие технологии шифрования, как BitLocker или EFS, если любой из клиентов в филиале может получить доступ к конфиденциальным данным по каналу глобальной сети. Это также необходимо, чтобы предотвратить физический доступ к размещенному кэшу, так как шифрование диска работает только в том случае, если компьютер был выключен в тот момент, когда злоумышленник получил к нему физический доступ. Если компьютер был включен или находился в спящем режиме, шифрование диска не обеспечит защиту.

Примечание.

Размещенные серверы кэша под управлением Windows Server 2016, Windows Server 2012 R2 или Windows Server 2012 шифруют все данные в кэше по умолчанию, поэтому использование дополнительных технологий шифрования не требуется.

Даже если клиент работает в режиме размещенного кэша, он все равно кэширует данные локально, и вы, возможно, захотите защитить локальный кэш в дополнение к кэшу на сервере размещенного кэша.