Банки PCR на устройствах TPM 2.0

Рекомендации по переключению банков PCR на устройствах TPM 2.0 вашего ПК необходимо получить у своего поставщика OEM или UEFI. В этой статье приводятся общие сведения о том, что происходит при переключении банков PCR на устройства TPM 2.0.

Реестр конфигурации платформы (PCR) — участок памяти в доверенном платформенном модуле, который имеет некоторые уникальные свойства. Размер значения, которое можно храниться в PCR, определяется размером дайджеста, сформированного связанным алгоритмом хэширования. В ПЦР SHA-1 может храниться 20 байтов — размер дайджеста SHA-1. Несколько PCR, связанных с одинаковым алгоритмом хэширования, называются банком PCR.

Чтобы сохранить новое значение в PCR, существующее значение расширяется новым значением следующим образом: PCR[N] = HASHalg( PCR[N] || ArgumentOfExtend)

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

Спецификация профиля TPM клиентской платформы ПК TCG определяет включение хотя бы одного банка PCR с 24 регистрами. Единственный способ сбросить первые 16 PCR — сбросить модуль TPM. Это ограничение помогает гарантировать, что значение этих PCR можно изменить только с помощью операции расширения доверенного платформенного модуля.

Некоторые PCR TPM используются, как контрольные суммы событий журнала. События журнала обобщаются в доверенном платформенном модуле по мере возникновения событий. Позже аудитор сможет проверить журналы путем расчета предполагаемых значений PCR из журнала и их сравнения со значениями PCR модуля TPM. Так как первые 16 ПЦР доверенного платформенного модуля не могут быть изменены произвольно, совпадение между ожидаемым значением PCR в этом диапазоне и фактическим значением ПЦР доверенного платформенного модуля обеспечивает гарантию неизмененного журнала.

Каким образом Windows использует PCR?

Чтобы привязать использование ключа на основе доверенного платформенного модуля к определенному состоянию устройства, ключ можно запечатать в ожидаемый набор значений PCR. Например, PCR от 0 до 7 имеют четко определенное значение после загрузки при загрузке ОС. При изменении оборудования, встроенного ПО или загрузчика компьютера изменение может обнаружиться в значениях PCR. Windows использует эту возможность, чтобы обеспечить доступность криптографических ключей только в определенное время при загрузке. Например, ключ BitLocker можно использовать в определенной точке загрузки, но не до или после.

Важно отметить, что эта привязка к значениям PCR также включает алгоритм хэширования, используемый для PCR. Например, ключ можно привязать к определенному значению SHA-1 PCR[12], если используется банк ПЦР SHA-256, даже с той же конфигурацией системы. В противном случае значения PCR не будут совпадать.

Что происходит при переключении банков PCR?

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

В результате, если используемый в настоящее время банк PCR переключен, все ключи, привязанные к предыдущим значениям PCR, перестают работать. Например, если у вас был ключ, привязанный к значению SHA-1 ПЦР[12], а затем вы изменили банк ПЦР на SHA-256, банки не будут совпадать, и вы не сможете использовать этот ключ. Ключ BitLocker защищен с помощью банков PCR, и Windows не сможет его удалить, если банки PCR переключаются при включении BitLocker.

Что можно сделать для переключения PCR при активном BitLocker?

Перед переключением банков PCR следует приостановить или отключить BitLocker или подготовить ключ восстановления. Чтобы узнать, как переключить банки PCR на компьютере, обратитесь к поставщику OEM или UEFI.

Как определить, какой банк PCR используется?

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

  • Раздел реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices
  • DWORD: TPMActivePCRBanks
  • Определяет, какие банки PCR в настоящее время активны. Это значение следует интерпретировать как растровое изображение, для которого биты определены в таблице реестра алгоритмов TCG 21 редакции 1.27.

Windows проверяет, какие банки PCR активны и поддерживаются BIOS. Windows также проверяет, поддерживает ли измеренный журнал загрузки измерения для всех активных банков PCR. Windows предпочтет использовать банк SHA-256 для измерений и вернется к SHA1 PCR bank, если одно из предварительных условий не будет выполнено.

Вы можете определить, какой банк PCR в настоящее время используется Windows, посмотрев в реестре:

  • Раздел реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices
  • DWORD: TPMDigestAlgID
  • ИД алгоритма банка PCR, который в настоящее время используется Windows. Это значение представляет идентификатор алгоритма, определенный в таблице реестра алгоритмов TCG 3 редакции 1.27.

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