Обзор BranchCache

 

Применимо к: Windows Server 2012, Windows 8

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

Кому интересна BranchCache?

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

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

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

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

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

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

Эта статья содержит следующие разделы.

  • Что такое BranchCache?

  • Режимы BranchCache

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

  • BranchCache и облако

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

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

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

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

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

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

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

Что такое BranchCache?

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

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

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

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

Режимы BranchCache

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

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

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

Примечание

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

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

Режимы BranchCache

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

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

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

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

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

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

Предупреждение

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

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

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

Примечание

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

Веб-серверы

В качестве веб-серверов поддерживаются компьютеры под управлением Windows Server 2012 или Windows Server® 2008 R2 с установленной ролью сервера "Веб-сервер (IIS)", которые используют протоколы HTTP или HTTPS. Кроме того, на веб-сервере должен быть установлен компонент BranchCache. Дополнительные сведения о веб-сервере (IIS) из Windows Server 2012 см. в разделе Веб-сервер (IIS).

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

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

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

В качестве серверов приложений поддерживаются компьютеры под управлением Windows Server 2012 или Windows Server 2008 R2 с установленной и включенной фоновой интеллектуальной службой передачи (BITS). Кроме того, на сервере приложений должен быть установлен компонент BranchCache. Например, вы можете развернуть серверы служб Windows Server Update Services и точки распространения филиала System Center Configuration Manager в качестве серверов содержимого BranchCache.

BranchCache и облако

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

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

Дополнительные сведения об облачных технологиях из Windows Server 2012 см. в разделе Building Your Cloud Infrastructure.

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

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

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

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

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

Примечание

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

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

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

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

  • На странице мастера Выбор ролей сервера выберите Файловые службы, если вы устанавливаете файловый сервер с BranchCache. Далее в процессе настройки выберите также Служба BranchCache для сетевых файлов. Если вы не хотите устанавливать файловый сервер с BranchCach, не устанавливайте роль файловых служб со службой роли "Служба BranchCache для сетевых файлов".

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

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

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

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

  • Windows® 8 Enterprise

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

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

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

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

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

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

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

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

Семейство операционных систем Windows Server 2012 можно использовать в качестве серверов размещенного кэша BranchCache.

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

  • Windows Server® 2008 R2 Enterprise

  • Windows Server 2008 R2 Enterprise с Hyper-V

  • Установка основных серверных компонентов Windows Server 2008 R2 Enterprise

  • Установка основных серверных компонентов Windows Server 2008 R2 Enterprise с Hyper-V

  • Windows Server 2008 R2 для систем на платформе Itanium

  • Windows Server® 2008 R2 Datacenter

  • Windows Server® 2008 R2 Datacenter с Hyper-V

  • Установка основных серверных компонентов Windows Server 2008 R2 Datacenter с 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 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 2012 шифруют все данные в кэше по умолчанию, поэтому использовать дополнительные технологии шифрования не требуется.

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