Что такое TPM в Windows? — иллюстрированное руководство по «сейфу, который не выпускает ключи наружу» и измеряемой загрузке
· Обновлено: · Го Комура · TPM, Windows, BitLocker, Безопасность, Windows 11, Информационные системы, C#
«Мы не можем перейти на Windows 11». «После обновления BIOS у нас запросили ключ восстановления BitLocker». «Мы не хотим, чтобы закрытый ключ приложения уезжал с машины». Эти вопросы выглядят разными, но каждый из них встаёт на место, как только становится понятно, для чего нужен TPM.
TPM — это процессор, предназначенный для безопасности, который создаёт криптографические ключи, хранит их и управляет их использованием. Это не компонент, ускоряющий шифрование, и не компонент, который сам по себе останавливает вирусы. В этой статье сначала показано, как проверить состояние и что делать, когда что-то пошло не так, а затем объясняется, как устроены защита ключей и измеряемая загрузка.1
1. Сначала вывод: разделяем две задачи TPM
| Задача | Что делает | Типичный пример в Windows |
|---|---|---|
| Позволяет пользоваться закрытым ключом, не выпуская его наружу | Подписывает и расшифровывает неизвлекаемым ключом и возвращает только результат | Windows Hello, защита ключей сертификатов и собственных приложений |
| Делает запись о загрузке условием использования ключа | Записывает измерения времени загрузки в PCR и запечатывает ключ по ожидаемому состоянию | BitLocker |
Первая, «ключ не выходит наружу», означает, что неизвлекаемый сам закрытый ключ никогда не передаётся. Вторая, «высвобождение ключа», означает, что запечатанный секрет становится пригодным к использованию только при совпадении условий. Как только вы разделите вычисление с помощью ключа и снятие печати с ключа, диаграммы в дальнейшем будут читаться легче.23
Измеренное состояние загрузки используется ещё и для подтверждения работоспособности. Однако это другая операция, отличная от запечатывания и высвобождения ключей. TPM формирует отчёт (quote), подписанный по текущим измерениям, а сервис и MDM оценивают его содержимое. Подробно об этом — в разделе 8.3.3
PCR — это запись, в которой накапливаются хэши кода и настроек, загруженных во время загрузки. Поскольку BitLocker привязывает к этой записи свой ключ, изменение микропрограммы или конфигурации загрузки может привести к запросу ключа восстановления. Очистка TPM или замена материнской платы, напротив, проблема не потому, что измерения изменились, а потому, что ключи исходного TPM больше нельзя использовать.45
Прежде чем менять любую настройку TPM, убедитесь, где находится ключ восстановления и как вы будете восстанавливаться. Очистка TPM — это не рутинный этап осмотра, а операция, способная уничтожить ключи и данные, которые они защищают. Глава 3 собирает всю процедуру, включая приостановку BitLocker и возобновление защиты после изменения.5
| Ваша ситуация или цель | Где читать |
|---|---|
| Экран запроса ключа восстановления прямо сейчас | Раздел 3.1: разбор запроса ключа восстановления → Глава 11: таблица решений для практика |
| Переход на Windows 11 или инвентаризация парка ПК | Глава 2: проверка состояния → Глава 4: требования Windows 11 |
| Хотите разобраться с очисткой TPM или блокировкой | Глава 3: разделяем три вида проблем |
| Вы отвечаете за промышленные ПК или встраиваемое оборудование | Раздел 4.4: исключение для IoT Enterprise → Глава 9: реализации и закупка |
| Нужно объяснить механизм кому-то ещё | Глава 5: защита ключей → Глава 6: внутренние роли → Глава 7: измеряемая загрузка |
| Хотите использовать TPM из собственного приложения | Глава 5: защита ключей → Глава 10: работа с CNG и эксплуатация |
| Хотите знать, на какие функции Windows это влияет | Глава 8: как Windows его использует |
На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 34, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle
2. Сначала проверьте состояние: разделяем наличие, готовность и версию спецификации
Узнать нужно три вещи: есть ли TPM, может ли Windows его использовать и равна ли версия спецификации 2.0. Держите наблюдение за состоянием отдельно от изменения настроек и очистки устройства. Первое, что стоит усвоить: Windows 10 и 11 инициализируют TPM и автоматически получают права владельца. Поэтому обычно у вас нет причин трогать настройки в консоли управления TPM (tpm.msc), и Microsoft указывает, что в большинстве случаев настройку TPM там следует избегать. Исключения — ситуации, связанные со сбросом ПК или чистой установкой.1 Кстати, активная разработка консоли управления TPM завершилась на Windows Server 2019 и Windows 10 версии 1809.1
2.1. Смотрим через графический интерфейс
Win + R→tpm.mscоткрывает консоль управления TPM. Она показывает, есть ли TPM, его состояние, версию спецификации и производителя. Экран разделён на область Состояние (пригоден ли он к использованию) и область Сведения о производителе TPM (имя производителя, версия производителя и версия спецификации), и именно то, равна ли версия спецификации2.0, определяет выполнение требования Windows 11 к TPM. На машине без TPM или с отключённым TPM консоль сообщает, что совместимый TPM не найден (порядок проверок в этом случае приведён в разделе 2.4).- Безопасность Windows показывает ту же информацию в разделе Безопасность устройства → Сведения о процессоре безопасности. С этого экрана можно перейти в Устранение неполадок процессора безопасности → Очистить TPM (глава 3 посвящена этому, но это не кнопка, которую нажимают легкомысленно).5
2.2. Смотрим через PowerShell
Если машин больше нескольких, надёжный путь — PowerShell. В модуле TrustedPlatformModule есть полный набор командлетов.6
# Проверяем состояние TPM в одном месте (запуск от имени администратора)
Get-Tpm
Вывод выглядит так.7
TpmPresent : True
TpmReady : True
TpmEnabled : True
TpmActivated : True
TpmOwned : True
ManufacturerIdTxt : INTC
ManufacturerVersion : 402.1.0.0
ManagedAuthLevel : Full
OwnerClearDisabled : False
AutoProvisioning : Enabled
LockedOut : False
LockoutHealTime : 10 minutes
LockoutCount : 0
LockoutMax : 31
Не считайте значения из примера вывода настройками вашей собственной машины; читайте вместо этого следующие пункты.7
| Что проверять | Свойство | Как читать |
|---|---|---|
| Есть ли TPM | TpmPresent |
Если False, проверьте оборудование или настройки UEFI |
| Может ли Windows его использовать | TpmReady |
Если TPM есть, а здесь False, проверьте инициализацию и получение прав владельца |
| Не остановила ли его защита от подбора | LockedOut / LockoutCount / LockoutMax / LockoutHealTime |
Проверьте счётчик и интервал восстановления. LockedOut = True — это временная блокировка |
| Может ли ОС очистить его с авторизацией владельца | OwnerClearDisabled |
Если True, очистка этим путём невозможна |
| Включено ли автоматическое развёртывание в Windows | AutoProvisioning |
Проверьте, включено автоматическое развёртывание или отключено |
Если нужно механически определить, равна ли версия спецификации 2.0, удобен путь через WMI.
# Получаем версию спецификации, производителя и состояние включения
Get-CimInstance -Namespace 'root/CIMv2/Security/MicrosoftTpm' -ClassName Win32_Tpm |
Select-Object SpecVersion, ManufacturerId, ManufacturerVersion,
IsEnabled_InitialValue, IsActivated_InitialValue, IsOwned_InitialValue
Свойство, на которое здесь нужно обратить внимание, — ManufacturerId. Возвращаемое Get-Tpm свойство ManufacturerIdTxt (строка вроде INTC) существует только на стороне Get-Tpm; в классе Win32_Tpm его нет.8 Если небрежно написать Select-Object ManufacturerIdTxt, этот столбец молча вернётся пустым.
В Win32_Tpm есть ManufacturerId — uint32, байты которого при интерпретации как ASCII-символы образуют строку (например, 1414548736 → 0x54 0x50 0x4D 0x00 → TPM).8 Если нужна строка, либо декодируйте её сами, как показано ниже, либо просто используйте Get-Tpm.
# Преобразуем ManufacturerId (uint32) в ASCII-строку и выводим списком
Get-CimInstance -Namespace 'root/CIMv2/Security/MicrosoftTpm' -ClassName Win32_Tpm |
Select-Object SpecVersion, ManufacturerVersion,
@{ Name = 'ManufacturerText'; Expression = {
$bytes = [System.BitConverter]::GetBytes([uint32]$_.ManufacturerId)
# Читаем uint32 начиная со старшего байта (например, 1229870147 -> 0x49 0x4E 0x54 0x43 -> INTC)
if ([System.BitConverter]::IsLittleEndian) { [array]::Reverse($bytes) }
-join ($bytes | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ })
} }
SpecVersion возвращается в форме «версия спецификации, ревизия, errata», например 2.0, 0, 1.16.8 То, начинается ли он с 2.0, и используется для определения выполнения требования Windows 11 к TPM (остальные требования — процессор, память, накопитель — нужно проверять отдельно; см. главу 11). О запуске этого на множестве машин удалённо см. «Введение в PowerShell Remoting (WinRM)».
Кроме того, Get-TpmEndorsementKeyInfo показывает сведения об EK и его сертификате, а Get-TpmSupportedFeature — поддержку конкретной функции. Unblock-Tpm снимает блокировку, Clear-Tpm сбрасывает TPM.6
2.3. Смотрим инструментами командной строки
tpmtool — стандартный инструмент для получения сведений о TPM и диагностики.9
:: Показать базовые сведения о TPM
tpmtool getdeviceinformation
:: Собрать журналы TPM в текущий каталог
tpmtool gatherlogs
Чтобы посмотреть это вместе с состоянием BitLocker, используйте рядом manage-bde -status или Get-BitLockerVolume. Процедура исследования со стороны журнала событий собрана в статье «Изучаем журнал событий на практике с Get-WinEvent».
2.4. Порядок проверок, когда «должен быть TPM 2.0, но он не работает»
Сначала разделите случаи по TpmPresent и TpmReady из Get-Tpm, затем проверьте версию спецификации и состояние блокировки. Не переходите к очистке TPM только потому, что он «не находится».
Результат Get-Tpm |
Что это значит | Что делать дальше |
|---|---|---|
TpmPresent : False |
Windows не видит TPM | Сначала заподозрьте настройки UEFI (см. ниже). Если он всё ещё не виден после их изменения, возможно, его действительно нет |
TpmPresent : True / TpmReady : False |
Он есть, но Windows пока не может его использовать | Инициализация или получение прав владельца застряли. Проверьте отображение состояния в tpm.msc. Официальное руководство по устранению неполадок собирает шаги для случая, когда TPM не обнаружен или не может стать готовым5 |
SpecVersion начинается с 1.2 |
TPM есть, но версия слишком старая | Некоторые модели можно обновить, но в принципе это проблема оборудования. Переходите к решению из главы 4 |
LockedOut : True |
Защита от подбора заблокировала вас | Переходите к разделу 3.3 |
Вот на что смотреть в настройках UEFI. На многих моделях микропрограммный TPM отключён по умолчанию, и достаточно его включить.
- Название пункта отличается от производителя к производителю. На платформах Intel он обычно обозначается PTT (Platform Trust Technology), на платформах AMD — fTPM (
AMD fTPM,AMD CPU fTPMи так далее), поэтому на некоторых моделях словоTPMна экране вообще не появляется. Не делайте вывод «пункта TPM нет, значит, его нет в машине». - Обычно он находится в разделе Security или Advanced. Он может располагаться и под заголовками вроде
Trusted ComputingилиPCH-FW Configuration. - На некоторых моделях есть настройка переключения между дискретной микросхемой (dTPM) и микропрограммным TPM. Этот случай — ровно та ситуация из раздела 3.2, когда «переключение между несколькими TPM отправляет BitLocker в режим восстановления», поэтому выбрав один раз, не меняйте его.5
- Проверьте, не включён ли режим legacy/CSM. TPM 2.0 не работает в режиме CSM. Когда причина именно в этом, перед переходом на UEFI нужен
MBR2GPT(глава 4).10 - Прежде чем менять настройки TPM в UEFI, убедитесь, где находится ключ восстановления, и приостановите BitLocker. Это меняет предпосылки измерений, поэтому обращайтесь с этим ровно так же, как с таблицей причин и следствий в начале главы 3. Включите это в подготовку перед изменением, а не в разбор последствий после него.
3. Разбор проблем: разделяем ключ восстановления, очистку TPM и блокировки
Запрос ключа восстановления, очистка TPM и блокировка PIN — это разные проблемы. Не делайте «раз запросили ключ восстановления, значит, очищу TPM» своим порядком действий. Очистка уничтожает ключи и относится к другой категории, чем рутинная проверка состояния или выход из блокировки.
Если вы собираетесь что-то менять, сначала убедитесь, где хранится ключ восстановления, и приостановите BitLocker. Это касается обновлений UEFI, изменения настроек Secure Boot, очистки TPM и замены материнской платы. Место хранения — доменные службы Active Directory или Microsoft Entra ID для организации, либо учётная запись Microsoft для частного лица. Организация может настроить хранение ключей восстановления в AD DS.3
Если экран запроса ключа восстановления уже на экране, определите причину по операции, которая непосредственно ему предшествовала. PCR — это запись состояния загрузки. «Запись изменилась» и «ключ, запечатанный исходным TPM, больше нельзя использовать» — разные причины, поэтому читайте следующую таблицу с учётом этого различия.4115
| Операция | Что меняется | Переходит ли в режим восстановления | Результат и реакция |
|---|---|---|---|
| Обновление микропрограммы UEFI/BIOS | PCR 0 (исполняемый код базовой микропрограммы системы) и другие | Да, в конфигурациях, запечатанных по PCR 0/2/4. Менее вероятно, если ключ запечатан по PCR 7/11 | Правильное решение — приостановить BitLocker перед обновлением. Даже если вы всё-таки попали в восстановление, разблокировка ключом восстановления запечатывает ключ заново по новым измерениям |
| Отключение Secure Boot или изменение доверенных ключей | PCR 7 (состояние Secure Boot) | Да | Верните настройку обратно или разблокируйте ключом восстановления |
| Включение режима CSM (legacy) | PCR 7. Кроме того, TPM 2.0 не работает в режиме CSM (глава 4) | Да | Верните обратно. Если цель — переход на UEFI, сначала запустите MBR2GPT (глава 4) |
| Загрузка другой ОС с USB и подобного, изменение порядка загрузки | Конфигурация загрузки, включая измерение диспетчера загрузки (PCR 4) | Да | Восстановите конфигурацию загрузки и перезапустите |
| Атакующий загружает свою ОС и пытается высвободить ключ | PCR 11 (он меняется с 0 на 1 в момент, когда диспетчер загрузки передаёт управление) | Высвободить нельзя (защита работает как задумано) | Как объясняет глава 7, это доказательство того, что защита держится |
| Очистка TPM, замена материнской платы или перенос только диска с ОС на другой ПК | Не PCR: самого запечатанного ключа нет под рукой | Да (если вы не приостановили BitLocker, ключ восстановления — единственный путь) | Если приостановить BitLocker заранее, можно загрузиться без ключа восстановления и запечатать заново (раздел 3.1) |
Верхние пять строк — это случаи, когда измерения или этап загрузки, запрашивающий ключ, не совпадают с условиями. Нижняя строка — случай, когда ключ, привязанный к исходному TPM, больше нельзя использовать. При режиме восстановления, вызванном обычным изменением, вы либо восстанавливаете конфигурацию, либо разблокируете ключом восстановления. В нижней строке, если вы не приостановили защиту заранее и у вас нет ключа восстановления, восстановление невозможно. Строка про высвобождение ключа атакующим описывает защиту на уровне проекта, а не процедуру восстановления.
Перенос диска с ОС попадает в нижнюю строку потому, что запечатанный ключ находится внутри TPM исходного ПК. Установка диска в другой ПК не переносит ключ с собой. Даже если вы намереваетесь только поменять диск, на практике это равнозначно замене материнской платы. Если перенос планируется, приостановите BitLocker перед работой или держите ключ восстановления под рукой.
3.1. У вас запросили ключ восстановления BitLocker
Проверьте последнее изменение и решите, можно ли вернуть настройку обратно или нужно разблокировать ключом восстановления. Если вы не можете объяснить ни одного изменения, исследуйте с учётом возможности атаки и разблокируйте после сбора журналов.
flowchart TD
S["Экран запроса ключа восстановления появился при загрузке"] --> Q1{"Меняли ли вы что-нибудь прямо перед этим?"}
Q1 -->|"Обновили UEFI/BIOS"| A1["Измерения вроде PCR 0 изменились<br/>Со следующей загрузки ключ запечатывается заново,<br/>поэтому разблокируйте ключом восстановления и продолжайте"]
Q1 -->|"Изменили настройки Secure Boot<br/>Включили CSM"| A2["Измерение PCR 7 изменилось<br/>Верните настройку обратно или разблокируйте ключом восстановления"]
Q1 -->|"Очистили TPM<br/>Заменили материнскую плату"| A3["Сам запечатанный ключ исчез<br/>Если BitLocker не был приостановлен заранее,<br/>ключ восстановления — единственный путь"]
Q1 -->|"Загрузили другую ОС с USB<br/>Изменили порядок загрузки"| A4["Измерение конфигурации загрузки изменилось<br/>Верните обратно и перезапустите"]
Q1 -->|"Ничего не приходит в голову"| A5["Исследуйте, в том числе на возможность атаки<br/>Соберите журналы, затем разблокируйте ключом восстановления"]
A1 --> R["Убедитесь, где хранится ключ восстановления<br/>AD DS / Entra ID / учётная запись Microsoft"]
A2 --> R
A3 --> R
A4 --> R
A5 --> R
Рисунок 1: Разбор ситуации с запросом ключа восстановления BitLocker
Обновление микропрограммы — классический триггер режима восстановления. Сама Microsoft советует приостанавливать BitLocker перед обновлением микропрограммы, если настроенный профиль включает PCR 0.4 Иначе говоря, на машинах, где Secure Boot настроен правильно и ключ привязан к PCR 7, обновления микропрограммы реже приводят к режиму восстановления.4 На машинах с поддержкой Modern Standby измерение PCR 7 является требованием для логотипа, и при правильно настроенных TPM и Secure Boot ключ по умолчанию привязывается к PCR 7 и PCR 11.4
Наличие приостановки перед работой полностью меняет объём последующих усилий. Приостановка BitLocker оставляет на томе защитник с открытым ключом, поэтому даже если вы очистите TPM или перейдёте на новый TPM, машина загрузится без ввода ключа восстановления (возобновление защиты после загрузки запечатывает ключ заново уже по новому TPM). На рисунке 1 «ключ восстановления — единственный путь» сказано для случая, когда вы очистили или заменили, не приостановив защиту. Иначе говоря, один подготовительный шаг полностью убирает эту ветку.
3.2. Вы хотите очистить TPM или уже сделали это
Очистка TPM приводит к потере данных. Предупреждение в официальной документации однозначно. Очистка уничтожает все ключи, созданные в связи с TPM, вместе с данными, которые эти ключи защищают (виртуальные смарт-карты, PIN-коды для входа и так далее). Для любых данных, которые TPM защищает или шифрует, обязательно подготовьте резервную копию и способ восстановления.5
Даже когда очистка необходима, соблюдайте следующие условия.5
- Не очищайте TPM машины, которая вам не принадлежит (рабочий или школьный ПК), без указания её администратора.
- Всегда очищайте через функцию ОС (
tpm.mscили Безопасность Windows), никогда напрямую из UEFI. - Если вы хотите лишь временно остановить TPM, используйте «отключить TPM», а не очистку.
После очистки Windows автоматически заново инициализирует TPM и снова получает права владельца.5
Очистка TPM и стирание диска при утилизации — разные работы
Здесь стоит подчеркнуть, что очистка TPM — это не стирание данных (санитизация). Очистка уничтожает ключи внутри TPM; на диске не стирается ни один байт данных. Ключи восстановления BitLocker обычно выгружаются в AD DS, Microsoft Entra ID или учётную запись Microsoft, поэтому тот, у кого такой ключ есть, всё ещё сможет расшифровать том и после того, как вы очистили TPM.
Когда вы передаёте машину третьей стороне, главное событие — процедура стирания накопителя: «Сбросить этот компьютер (удалить всё)» в Windows, специальный инструмент стирания, криптографическое стирание или физическое уничтожение. Очистка TPM — лишь завершающий штрих. Вся процедура утилизации и передачи собрана в статье «Чек-лист по утилизации и передаче Windows-ПК».
Не переключайтесь между несколькими TPM бездумно
В некоторых системах установлено больше одного TPM и есть возможность переключаться между ними в UEFI, но Windows такую конфигурацию не поддерживает. После переключения Windows может не обнаружить новый TPM корректно, и BitLocker переходит в режим восстановления. Если вы всё же переключились, придётся очистить TPM и переустановить Windows. Microsoft настоятельно рекомендует на системе с двумя TPM выбрать один и больше его не менять.5
3.3. TPM заблокирован
Повторяющиеся ошибки ввода PIN приводят к блокировке TPM. В конфигурации Windows по умолчанию TPM 2.0 блокируется после 32 неудачных попыток авторизации и забывает одну неудачу каждые 10 минут. Даже пока он заблокирован, из блокировки можно выйти, оставив машину включённой на интервал восстановления.2 Десять минут — это лишь значение по умолчанию в Windows, поэтому проверьте фактический интервал в LockoutHealTime, который возвращает Get-Tpm на этой машине (глава 2). Иногда оставить всё как есть быстрее, чем в панике перезагружаться снова и снова.
Если нужно снять блокировку немедленно, отправьте команду сброса блокировки. Учтите, однако, что пароль владельца и авторизация блокировки — не одно и то же. Начиная с Windows 10 версии 1607 Windows не сохраняет пароль владельца при развёртывании TPM (она задаёт случайное значение с высокой энтропией, а затем отбрасывает его).12 Процедура, построенная на допущении «у администратора есть пароль владельца», встанет на месте в реальной работе.
Вместо него используется авторизация блокировки (lockout authorization). Значение по умолчанию 5 у OSManagedAuthLevel означает для TPM 2.0 «сохранять только авторизацию блокировки».12 Иначе говоря, состояние по умолчанию таково: «полный пароль владельца утрачен, но авторизация, нужная для снятия блокировки, осталась», и сброс времени блокировки в tpm.msc и Unblock-Tpm обычно работают именно с этой авторизацией. Есть настройка, сохраняющая сам пароль владельца (установка OSManagedAuthLevel в 4 в реестре), но Microsoft настоятельно не рекомендует её.12
Учтите также, что даже без пароля владельца остаётся путь для операций управления — включения, отключения и очистки TPM — через подтверждение физического присутствия в UEFI.12 Однако это не альтернативный способ немедленно и без разрушений снять блокировку. Когда авторизация блокировки недоступна, базовый ответ — ждать восстановления со временем (одна неудача каждые 10 минут), а очистка — крайняя мера, уничтожающая все ключи (раздел 3.2).
Учтите ещё и то, что в конфигурациях, где значение авторизации вводят для сброса явно, при попытке сброса с неверным значением TPM не разрешит повторную попытку сброса в течение 24 часов.2 Не пробуйте значения наугад.
И наконец, учтите, что TPM 2.0 допускает также ключи, созданные без значения авторизации, и они остаются пригодными к использованию, пока TPM заблокирован. Конфигурация BitLocker «только TPM», принятая по умолчанию, позволяет загрузить Windows даже при заблокированном TPM.2
4. Требования Windows 11: разделяем TPM 2.0, UEFI и условия IoT
4.1. Чем TPM 1.2 отличается от 2.0
Если вы работаете со старыми ПК, вы всё ещё встречаете TPM 1.2. Разрыв между ними больше, чем «версия выросла».10
| Аспект | TPM 1.2 | TPM 2.0 |
|---|---|---|
| Криптографические алгоритмы | Только RSA и SHA-1 | Поддержка нескольких алгоритмов (криптографическая гибкость) |
| Политика блокировки | Зависит от реализации и различается у производителей | Настраивается Windows, которая гарантирует единообразную защиту от подбора |
| Форма реализации | По сути дискретная микросхема | Дискретная / интегрированная / микропрограммная |
| Стандартизация | — | Стандартизирован на международном уровне как ISO/IEC 11889:2015 |
| Требование к микропрограмме | BIOS допустим | Требуется нативный UEFI (CSM отключён) |
Сильнее всего бьёт SHA-1. NIST требовал от большинства федеральных агентств перехода на SHA-256 начиная с 2014 года, а Microsoft и Google в 2017 году прекратили поддержку подписей и сертификатов на основе SHA-1. Поскольку спецификация TPM 1.2 позволяет использовать только SHA-1, она не может следовать этому сдвигу.10
4.2. «Поддержка Secure Boot» и «Secure Boot включён» — разные вещи
Минимальные требования Windows 11 для обычных ПК — это 64-разрядный процессор из списка совместимости, 4 ГБ памяти, 64 ГБ накопителя, графическая подсистема с поддержкой DirectX 12 и новее и драйвером WDDM 2.0, дисплей крупнее 9 дюймов с разрешением 720p и выше и 8 битами на канал, системная микропрограмма «UEFI, с поддержкой Secure Boot» и TPM 2.0.13
Читайте это точно. Минимальное требование требует, чтобы система была способна работать с Secure Boot, а не чтобы он был включён.13 Само требование выполняется и при отключённом Secure Boot, поэтому трогать настройки UEFI только ради перехода на Windows 11 не нужно. Тем не менее, если вы включите Secure Boot и платформа также соответствует условиям привязки к PCR 7, BitLocker привязывается к PCR 7 и реже попадает в режим восстановления (глава 7). Включение само по себе не даёт такого результата автоматически, поэтому проверьте, к каким PCR том привязан на самом деле, по профилю проверки PCR в manage-bde -protectors -get C:. Включать его ради этой практической выгоды, а не потому что это требование, — правильная формулировка.
4.3. Переход с legacy/CSM на UEFI — не просто смена настроек
Ещё один момент, который легко упустить: TPM 2.0 не поддерживается на BIOS в режиме legacy или в режиме CSM (Compatibility Support Module). Устройство с TPM 2.0 должно иметь режим BIOS, настроенный как «только нативный UEFI», а параметры legacy/CSM должны быть отключены.10
На практике это создаёт неудобную ситуацию, потому что ОС, установленная в режиме legacy, перестаёт загружаться, как только вы переводите режим BIOS в UEFI. Прежде чем менять режим BIOS, нужно с помощью средства MBR2GPT привести ОС и диск в состояние, пригодное для UEFI.10 Машина, которая «TPM имеет, но всё равно не может быть обновлена до Windows 11», очень часто находится именно в таком состоянии. Общая картина решения о переходе с Windows 10 собрана в статье «Реалистичные варианты после окончания поддержки Windows 10 — таблица решений по ESU, LTSC и замене».
Учтите также, что для аттестации работоспособности устройства Windows поддерживает именно TPM 2.0, и устройство с legacy BIOS не будет вести себя ожидаемым образом, даже если несёт на себе TPM 2.0.1
4.4. Исключение для IoT Enterprise: определяем по редакции и версии
Всё сказанное выше про «Windows 11 требует TPM 2.0» касается редакций для обычных ПК. У Windows 11 IoT Enterprise отдельно определён смягчённый набор минимальных требований для специализированных устройств, и на IoT Enterprise LTSC (а также на не-LTSC версиях 24H2 и новее) и TPM, и Secure Boot являются необязательными (Optional).14 На промышленных ПК и во встраиваемом оборудовании знание этого переворачивает вывод «на этой плате Windows 11 не пойдёт».
Официальная таблица требований имеет две колонки: PREFERRED и OPTIONAL (минимум для специализированных устройств).14
| Пункт | Windows 11 для обычных ПК | Windows 11 IoT Enterprise LTSC PREFERRED |
Windows 11 IoT Enterprise LTSC OPTIONAL |
|---|---|---|---|
| TPM | Требуется TPM 2.0 | TPM 2.0 | Необязательно |
| Secure Boot | Требуется поддержка | Включён | Необязательно |
| Системная микропрограмма | UEFI | UEFI | BIOS допустим |
| Память | 4 ГБ | 4 ГБ | 2 ГБ |
| Накопитель | 64 ГБ | 64 ГБ | 16 ГБ |
Обратить внимание нужно на три вещи.
- Это не значит «LTSC — и TPM не нужен». Смягчённые требования определены для IoT Enterprise, и Windows 11 Enterprise LTSC (без IoT) рассматривается так же, как редакции для обычных ПК. Названия похожи настолько, что их легко перепутать, но от того, какую лицензию вы закупаете, зависит вывод.
- Не-LTSC версии IoT Enterprise отличаются по версии. В требованиях OPTIONAL для 21H2–23H2 TPM 2.0 по-прежнему обязателен (необязателен только Secure Boot), и TPM становится необязательным лишь начиная с 24H2.14
- Требования к процессору определены отдельно. Даже там, где TPM и Secure Boot необязательны, список поддерживаемых процессоров задан в другом месте, поэтому обязательно проверьте его.14
Microsoft и сама предостерегает относительно того, что означает выбор смягчённых требований. Суть в том, что снижение требований на устройстве, куда конечные пользователи смогут позже добавлять программное обеспечение, заслуживает тщательного обдумывания, и что отсутствие TPM может повлиять на программное обеспечение, необходимое конечным пользователям.14 Без TPM BitLocker не может запечатать свой ключ по состоянию загрузки, а ключи Windows Hello переходят на программную защиту. Смените ход рассуждения с «мы ставим его, чтобы выполнить требование» на «мы ставим его, чтобы получить защиту, нужную этому устройству».
Общая картина того, как выбирать между IoT Enterprise и LTSC и как закупать лицензии, собрана в статье «Какой Windows ставить на промышленный ПК? — практическое руководство по Windows IoT Enterprise и LTSC».
5. Защита ключей: не отдавать закрытый ключ, возвращать только результат
5.1. Чем это отличается от программной защиты ключей?
Начните с представления мира без TPM. Если пытаться защитить закрытый ключ только программно, ключ в какой-то момент неизбежно становится открытым текстом в памяти, потому что процессору нужно прочитать значение ключа, чтобы вычислить подпись или расшифрование. Иначе говоря, его в принципе нельзя скрыть от вредоносного ПО, добравшегося до ядра, или от атакующего, способного физически прочитать память. Официальная документация говорит об этом прямо: программная защита ключей «подвержена атакам с обратной разработкой, которые анализируют, как ключ хранится в памяти во время использования и как создаются его копии».3
Когда вы создаёте в TPM неизвлекаемый закрытый ключ, нет необходимости загружать ключ в процесс и вычислять там. Приложение или ОС просит TPM «подпиши это» или «расшифруй это» и получает только результат. Это механизм, который разделяет получение закрытого ключа и его использование.3
flowchart TB
subgraph SW["A. Защита ключа только программными средствами"]
A1["Приложение / ОС"] -->|"Загружает ключ и вычисляет"| A2["Закрытый ключ в памяти<br/>Есть момент, когда он открытым текстом"]
A2 -.->|"Можно прочитать"| A3["Вредоносное ПО, добравшееся до ядра<br/>Анализ памяти, физическая атака"]
end
subgraph HW["B. Передача ключа на попечение TPM"]
B1["Приложение / ОС"] -->|"Отправляет только запрос<br/>подписать или расшифровать"| B2["TPM"]
B2 --> B3["Вычисляет закрытым ключом внутри TPM<br/>Ключ не покидает чип"]
B3 -->|"Возвращает только результат"| B4["Приложение / ОС получает только<br/>подпись или результат расшифрования"]
B5["Вредоносное ПО, добравшееся до ядра<br/>Анализ памяти, физическая атака"] -.->|"Сам ключ извлечь нельзя"| B2
end
SW ~~~ HW
Рисунок 2: Разница между программной защитой ключа и передачей его на попечение TPM
5.2. TPM сам по себе не следит за вирусами
Важный момент здесь — TPM пассивен. Он ничего не отслеживает по своей инициативе и не останавливает вирусы. Это компонент, который принимает команды и возвращает ответы, и не более того.10 Именно поэтому извлечение пользы из TPM требует от OEM (производителя ПК) тщательной интеграции оборудования и микропрограммы, и именно поэтому Windows строит свои функции поверх этой интеграции.
5.3. Ограничиваем число попыток подбора PIN на стороне TPM
Вторая опора — защита от подбора. У ключа, который защищает TPM, может быть значение авторизации, например PIN. Когда попытки угадать значение авторизации терпят неудачу определённое число раз, TPM отказывает в дальнейших попытках и блокируется. Для TPM 2.0 это поведение настраивает Windows. Конкретно: блокировка после 32 неудачных попыток авторизации и забывание одной неудачи каждые 10 минут. После 320 минут вообще без неудач запомненное число неудач возвращается к нулю.2
Работает это благодаря тому, что «ограничение попыток находится в оборудовании». Если считать неудачи программно, счётчик можно обойти перезапуском машины, переводом системных часов назад или откатом файла, в котором записан счётчик. С TPM ничего из этого невозможно.3 Именно в этом основание утверждать, что четырёхзначный PIN Windows Hello безопаснее пароля.
6. Внутренние роли: подтверждение личности, защита ключей, запись загрузки
Заучивать все аббревиатуры сразу не нужно. Читайте их по роли: EK и AIK подтверждают личность, SRK защищает ключи, PCR записывают загрузку, а NVRAM — энергонезависимое хранилище. Сначала посмотрите на общую картину на диаграмме, затем прочитайте о каждой связи.
flowchart TB
TPM["TPM 2.0"]
TPM --> EK["EK / ключ подтверждения<br/>Выводится из зерна, заданного при изготовлении<br/>Поставляется с сертификатом производителя"]
TPM --> SRK["SRK / корневой ключ хранилища<br/>Родительский ключ, которым оборачивают другие ключи"]
TPM --> PCR["PCR 0-23<br/>Накапливают измерения загрузки"]
TPM --> NV["NVRAM<br/>Небольшая область, переживающая потерю питания"]
EK --> AIK["AIK / ключ подтверждения личности<br/>Удостоверение, предъявляемое наружу вместо EK"]
SRK --> K1["Ключ BitLocker"]
SRK --> K2["Ключ Windows Hello"]
SRK --> K3["Закрытый ключ сертификата"]
PCR -.->|"Ограничивает: высвобождается<br/>только при этих значениях"| K1
Рисунок 3: Основные компоненты TPM и отношения родитель-потомок между ключами
6.1. EK и AIK: доказываем, что TPM настоящий, и избегаем отслеживания устройства
EK (Endorsement Key) — это асимметричная пара ключей, уникальная для данного TPM. Закрытая половина хранится внутри TPM и никогда не раскрывается наружу и не доступна извне.2 С ним поставляется сертификат EK, подписанный производителем, который показывает, что «этот ключ действительно находится внутри TPM, изготовленного нами». Именно так можно отличить настоящий TPM от вредоносного ПО, притворяющегося им.3
Отступление: EK в TPM 2.0 — не «вшитый ключ», а «ключ, выведенный из зерна»
Документация Microsoft описывает EK как пару ключей RSA,2 но эта формулировка восходит ко временам TPM 1.2. Неизменяемый секрет, записываемый в чип TPM 2.0 при изготовлении, строго говоря, представляет собой зерно под названием endorsement primary seed, и EK выводится из этого зерна по фиксированной процедуре (шаблону). Вывод из одного и того же зерна всегда даёт один и тот же ключ, поэтому, хотя EK можно воссоздать, он остаётся фактически ключом, уникальным для данного TPM. Выводить можно как EK на RSA, так и EK на ECC, и нередко на реальной машине есть оба. Для понимания основной линии это не нужно, так что можете это пропустить.
Показывать EK напрямую внешнему миру, однако, означало бы однозначно идентифицировать ПК и создать проблему конфиденциальности. Поэтому в реальных сценариях используют AIK (Attestation Identity Key). Удостоверяющий центр с помощью EK и его сертификата доказывает, что «этот AIK существует внутри настоящего TPM», и выпускает сертификат AIK. Поскольку для каждой доверяющей стороны можно использовать другой AIK, несколько проверяющих не смогут сговориться и отследить одну и ту же машину.3
6.2. SRK: зашифрованные ключи могут храниться и во внешнем хранилище
SRK (Storage Root Key) — это родительский ключ, которым оборачивают другие ключи. TPM может зашифровать созданный им ключ и выдать его наружу, и расшифровать такой ключ сможет только тот же самый TPM. Эта операция называется оборачиванием (wrapping) или привязкой (binding).2 Иначе говоря, хранить все ключи в небольшом объёме памяти внутри TPM не требуется. Размещая зашифрованные ключи во внешнем хранилище и используя их только на исходном TPM, можно работать с большим числом ключей. «Закрытый ключ нельзя извлечь» и «зашифрованные данные ключа можно сохранять наружу» друг другу не противоречат.
6.3. PCR и NVRAM: запись загрузки и энергонезависимое хранилище
PCR (Platform Configuration Register) — это специальные регистры, накапливающие измерения времени загрузки. Их 24, с номерами от 0 до 23, и для каждого определено, что именно он измеряет.4 Важное свойство: нельзя записать произвольное значение напрямую; значение можно продвинуть только операцией Extend. Extend — односторонняя операция, которая конкатенирует текущее значение с новым измерением, хэширует результат и делает его новым значением, поэтому «стереть по пути только неудобную часть записи» в принципе невозможно. Значения сбрасываются при перезагрузке.3
У TPM 2.0 есть также PCR со сбрасываемым атрибутом (для DRTM и прикладного использования). Однако PCR, по которым запечатывает BitLocker (0, 2, 4, 7 и 11), — это статические PCR измеряемой загрузки, и их нельзя сбросить до перезагрузки. Объяснение в этой статье предполагает именно их.
NVRAM — это небольшая энергонезависимая область, используемая для хранения, например, сертификатов. TPM 2.0 улучшен по сравнению с TPM 1.2 в части алгоритмов, криптографии, иерархий, корневых ключей, авторизации и NVRAM.10
7. Измеряемая загрузка: записываем хэши и высвобождаем ключ в ожидаемом состоянии загрузки
Даже если ключ можно хранить безопасно, чтобы «не дать другой ОС воспользоваться этим ключом», нужно ещё условие использования. BitLocker создаёт это условие, запечатывая ключ по записи измеряемой загрузки (Measured Boot). Ниже объяснение идёт в порядке: вычисление хэша → запись в PCR → высвобождение ключа.3
7.1. Что вообще означает «измерение»?
Прежде чем идти дальше, сделаем слово «измерение» конкретным. Измерение здесь — это не измерение физической величины вроде веса или температуры. Это вычисление хэша по всей последовательности байтов программы или данных конфигурации, которые собираются выполняться. Хэш — это значение фиксированной длины, вроде отпечатка содержимого, со следующими свойствами.
- Одно и то же содержимое всегда даёт одно и то же значение, кто бы и когда бы его ни вычислял
- Если содержимое отличается хотя бы на один байт, значение получается совершенно другим
- Восстановить исходное содержимое из значения практически невозможно
Например, при вычислении хэша SHA-256 abc превращается в
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
а abd, отличающийся только последним символом, — в
a52d159f262b2c6ddb724a61840befc36eb30c88877a4030b65cbe86298449c9
Различие в один символ меняет значение полностью, и сравнение двух значений не оставляет даже намёка на то, что содержимое было похожим. SHA-256 любого файла можно вычислить с помощью Get-FileHash в PowerShell, так что ощущение этого «отпечатка» можно получить и на своей машине.
Короче говоря, «измерения загрузки» — это хэши микропрограммы, загрузчика и настроек, участвующих в процессе загрузки. Если все измерения совпадают с предыдущей загрузкой, можно с уверенностью утверждать, что программное обеспечение и конфигурация, участвовавшие в загрузке, были в точности такими же, как в прошлый раз. И наоборот, если загрузчик был изменён или машина загрузилась с другой ОС, соответствующее измерение гарантированно изменится. Это и есть основа измеряемой загрузки.
7.2. Цепочка измерений — измеряем то, что загружаем, до его запуска
Механизм прост. Внутри системной микропрограммы есть безусловно доверенная отправная точка под названием CRTM (Core Root of Trust for Measurement). CRTM безусловно хэширует следующий исполняемый программный компонент и записывает это измерение в TPM. Каждый последующий компонент повторяет то же самое — то, что загружаешь, измеряешь до запуска. Поскольку измерение отправляется до выполнения, компонент не может стереть своё измерение из TPM.3
sequenceDiagram
autonumber
participant FW as Микропрограмма UEFI CRTM
participant BM as Диспетчер загрузки Windows
participant OS as Ядро Windows
participant T as TPM
FW->>T: Extend хэша кода, который будет выполнен следующим
Note over T: PCR 0 / 2 / 4 / 7 обновляются
FW->>BM: Передаёт управление
BM->>T: Просит высвободить запечатанный ключ BitLocker
alt PCR содержат те же значения, что и при запечатывании
T-->>BM: Возвращает ключ
BM->>BM: Расшифровывает том ОС
BM->>T: Extend ядра, ELAM и загрузочных драйверов
Note over BM,T: Измеряем до выполнения, затем передаём управление
BM->>OS: Передаёт управление и запускает Windows
else PCR содержат другие значения
T-->>BM: Ключ не возвращает
BM->>BM: Переходит к экрану ввода ключа восстановления
end
Рисунок 4: Поток измеряемой загрузки и высвобождения ключа BitLocker
На диаграмме ядро измеряется после расшифрования потому, что, согласно принципу измеряемой загрузки, то, что загружается, измеряется до запуска. Загрузчик Windows проверяет цифровую подпись ядра перед его загрузкой, а ядро, в свою очередь, проверяет загрузочные драйверы, файлы запуска и ELAM, образуя цепочку.15 Если бы ядро измеряло себя после запуска, измерение можно было бы просто пропустить, что свело бы весь смысл на нет.
BitLocker создаёт внутри TPM ключ, который можно использовать только тогда, когда эти измерения имеют ожидаемые значения. Ожидаемые значения вычисляются для момента, когда диспетчер загрузки Windows работает с тома ОС на системном диске. Если машина загружается с другой ОС или конфигурация изменена, измерения внутри TPM меняются, TPM не разрешает использование ключа, и зашифрованный том ОС расшифровать нельзя.3
7.3. PCR, которые использует BitLocker: 0, 2, 4 и 11 против 7 и 11
Так какие же PCR на самом деле отслеживаются? Профиль проверки платформы по умолчанию для конфигураций с нативным UEFI выглядит следующим образом.4
| PCR | Что измеряется |
|---|---|
| PCR 0 | Исполняемый код базовой микропрограммы системы |
| PCR 1 | Данные базовой микропрограммы системы |
| PCR 2 | Расширяемый или подключаемый исполняемый код |
| PCR 3 | Данные расширяемой или подключаемой микропрограммы |
| PCR 4 | Диспетчер загрузки |
| PCR 5 | GPT / таблица разделов |
| PCR 6 | События выхода из состояний питания S4 и S5 |
| PCR 7 | Состояние Secure Boot |
| PCR 11 | Управление доступом BitLocker |
| PCR 12-14 | События данных, сведения о загрузочных модулях, загрузочные полномочия |
По умолчанию PCR 0, 2, 4 и 11 являются целями запечатывания. Однако когда состояние Secure Boot (PCR 7) поддерживается, запечатывание использует вместо них PCR 7 и PCR 11.4 Это важное различие. PCR 0/2/4 — это хэши самих образов микропрограммы и диспетчера загрузки, поэтому их значения меняются при каждом обновлении микропрограммы, что отправляет машину в режим восстановления. PCR 7, напротив, измеряет «включён ли Secure Boot и каким ключам доверяют», поэтому, пока подписывающая сторона одна и та же, значение не меняется при обновлении образа. Microsoft тоже объясняет, что привязка к PCR 7 снижает вероятность попадания в режим восстановления из-за обновления микропрограммы или образа.4
7.4. PCR 11: не даём запросить ключ позже диспетчера загрузки
PCR 11 также ограничивает, какой этап загрузки может запросить ключ, даже когда используется TPM той же самой машины. Сценарий, на который он отвечает, таков: атакующий оставляет машину жертвы как есть (сохраняя оборудование и микропрограмму) и заменяет только диск с ОС на свой. Поскольку ключ запечатан по исходному TPM, менять всю машину было бы бессмысленно; смысл в том, чтобы продолжать использовать TPM жертвы. Атакующий извлекает запечатанный блоб ключа BitLocker из метаданных раздела ОС жертвы, загружает ОС под своим контролем, вызывает API TPM и пытается снять печать (unseal) с этого блоба ключа.
Это не срабатывает потому, что Windows запечатывает ключ со значением PCR 11, равным 0, а диспетчер загрузки всегда меняет PCR 11 на 1, когда передаёт управление следующему загрузчику, легальному или нет. К моменту, когда ОС атакующего работает, диспетчер загрузки уже отдал управление, и PCR 11 точно уже не 0. Поэтому даже на той же машине с тем же TPM ключ нельзя запросить с этапа, более позднего, чем диспетчер загрузки.11
Сам Secure Boot тоже является частью защиты BitLocker. По умолчанию BitLocker использует защиту целостности Secure Boot через измерение PCR 7, не позволяя неавторизованной микропрограмме EFI, загрузочным приложениям EFI и загрузчикам запускаться и получать ключ BitLocker.11
8. Как Windows его использует: сравниваем BitLocker, Hello и аттестацию работоспособности
Каждая функция Windows использует своё свойство TPM. BitLocker — это высвобождение ключа в соответствии с состоянием загрузки, Hello — аутентификация с помощью ключа, привязанного к устройству, а аттестация работоспособности — сообщение об измерениях. Сначала посмотрите на весь набор применений, затем прочитайте о нужной вам функции.
flowchart LR
TPM["TPM 2.0"]
TPM --> BL["BitLocker / шифрование устройства<br/>Запечатывает ключ по состоянию загрузки"]
TPM --> WH["Windows Hello<br/>Защищает ключ, привязанный к PIN или биометрии<br/>Защита от подбора делает короткий PIN безопасным"]
TPM --> CG["Credential Guard<br/>Защищает ключ изолированной среды измерениями"]
TPM --> MB["Измеряемая загрузка / удалённая аттестация<br/>Выдаёт quote, подписанный по состоянию загрузки"]
TPM --> HA["Аттестация работоспособности устройства<br/>Материал для решений MDM об условном доступе"]
TPM --> PCP["Platform Crypto Provider<br/>Делает закрытый ключ сертификата неизвлекаемым"]
Рисунок 5: Основные средства защиты Windows, построенные на TPM
8.1. BitLocker и шифрование устройства
BitLocker и шифрование устройства. Как разобрано в главе 7. Есть четыре способа разблокировки — только TPM, TPM + PIN, TPM + ключ запуска и TPM + PIN + ключ запуска — и «только TPM» описывается как самый удобный и, соответственно, менее безопасный, чем способы, требующие дополнительного фактора аутентификации.11
Учтите, что предварительные условия шифрования устройства (механизма, который включает BitLocker автоматически) за последние годы изменились. Раньше требовалось соответствие требованиям Modern Standby или HSTI и отсутствие внешних портов с поддержкой DMA, но начиная с Windows 11 версии 24H2 эти предварительные условия были сняты, и теперь в область действия попадает больше машин.16 Утверждение из старых материалов, что «это работает только на машинах с поддержкой Modern Standby», начиная с 24H2 неверно. Проверить, попадает ли конкретная машина в область действия, можно в разделе «Поддержка шифрования устройства» в msinfo32.exe (Сведения о системе).16
8.2. Windows Hello и Credential Guard
Windows Hello и Windows Hello for Business. Они выполняют аутентификацию, комбинируя ключ, подготовленный для каждого устройства, с PIN или биометрией. Если TPM есть, ключ защищает TPM; если нет — он защищается программно. Биометрические данные используются только на этой машине для получения доступа к подготовленному ключу и не передаются между машинами.3 На машине с TPM ключ нельзя скопировать куда-то ещё, что даёт свойство: даже если учётные данные утекут, их нельзя будет использовать на другой машине.
Credential Guard. Эта функция выполняет хэширование учётных данных в изолированной области памяти, недоступной ядру. Эта изолированная область инициализируется и защищается в процессе загрузки, и Credential Guard использует TPM, чтобы защитить свой ключ измерениями. Ключ доступен только на том этапе процесса загрузки, где инициализируется изолированная область, и не может быть использован из обычного ядра.3
8.3. Аттестация работоспособности, сертификаты и виртуальные смарт-карты
Измеряемая загрузка и удалённая аттестация. С помощью AIK TPM может сформировать утверждение (quote), криптографически подписанное по текущему состоянию измерений. Отправка его удалённой стороне доказывает, «с каким программным обеспечением и в какой конфигурации машина загрузилась и инициализировала ОС».3 Поскольку измерение останавливается на начальном состоянии Windows, оно не содержит конфиденциальной информации вроде того, какие приложения вы используете.3
Аттестация работоспособности устройства. Служба аттестации работоспособности Microsoft выпускает сертификаты AIK для TPM разных производителей, анализирует сведения измеряемой загрузки и преобразует их в простые утверждения вроде «включён ли BitLocker», «включён ли Secure Boot» и «включён ли DEP». MDM, например Intune, затем может использовать эти утверждения вместо того, чтобы самому разбирать сложный quote, для изоляции машины или отключения её доступа к облачным службам.13
Platform Crypto Provider. Он защищает закрытый ключ сертификата с помощью TPM. Шаблон сертификата может указывать «использовать Platform Crypto Provider в TPM», и закрытый ключ сертификата, настроенного как неизвлекаемый, нельзя вынести из TPM. Для сертификата, требующего PIN, защита TPM от подбора применяется автоматически.3 Это точка входа в тему для разработчика, которой посвящена глава 10.
Виртуальные смарт-карты. Эта функция заставляет TPM вести себя как «смарт-карта, которая всегда вставлена», устраняя расходы на покупку и распространение физических карт и считывателей.3 Однако сейчас Microsoft рекомендует пользователям виртуальных смарт-карт переходить на Windows Hello for Business или ключи безопасности FIDO2.2 Как существующий актив это сохраняется, но для нового проекта это не то направление, которое стоит выбирать.
9. Реализации и закупка: сравниваем dTPM, интегрированный TPM, fTPM и Pluton
9.1. Не превращайте различия реализаций в простой рейтинг защищённости
Из-за того, что прижилось выражение «чип TPM», принято считать, будто TPM обязан быть отдельным компонентом, но форм реализации три.10
flowchart LR
C1["CPU"] ---|"Шина LPC / SPI"| T1["Отдельная микросхема TPM<br/>= дискретная, dTPM"]
C2["Корпус CPU /<br/>набора микросхем"] --> T2["Выделенное оборудование в том же корпусе,<br/>логически разделённое<br/>= интегрированная"]
C3["Универсальный CPU"] --> T3["Работает в доверенной среде исполнения, TEE,<br/>реализация в микропрограмме<br/>= микропрограммная, fTPM"]
C4["SoC"] --> T4["Разработанный Microsoft<br/>процессор безопасности<br/>= Pluton"]
Рисунок 6: Три формы реализации TPM и Pluton как их продолжение
- Дискретный TPM (dTPM) — это отдельная микросхема в собственном полупроводниковом корпусе. Она установлена на материнской плате и имеет то преимущество, что OEM может оценивать и сертифицировать её отдельно от самой системы.10
- Интегрированный TPM находится в том же корпусе, что и другие компоненты, будучи реализованным как логически разделённое выделенное оборудование.10
- Микропрограммный TPM (fTPM) запускает TPM как микропрограмму в доверенной среде исполнения (TEE) универсального вычислительного блока.10 Он подходит для небольших устройств с низким энергопотреблением, где отдельная микросхема нерациональна.
Windows использует любой совместимый TPM одинаково. Microsoft не занимает позиции по тому, какую форму реализации должен использовать TPM, говоря, что широкая экосистема отвечает любым потребностям.10 Иначе говоря, fTPM — не второсортный TPM.
9.2. Pluton: интеграция в CPU и путь обновления микропрограммы
Microsoft Pluton развивает интегрированную форму на шаг дальше. Это защищённый криптографический процессор, разработанный Microsoft, изготовляемый партнёрами по кремнию и встроенный в CPU, спроектированный так, чтобы обеспечивать функциональность TPM и одновременно давать средства защиты за пределами спецификации TPM 2.0.17 По состоянию на 2026 год Pluton доступен на машинах с Windows 11 со следующими наборами микросхем.17
- AMD: серии Ryzen 6000 / 7000 / 8000 / 9000, серия Ryzen AI
- Intel: серия Core Ultra 200V, процессоры Core Ultra Series 3 и Series 3
- Qualcomm: Snapdragon 8cx Gen 3, серия Snapdragon X
С точки зрения эксплуатации отличительная особенность Pluton в том, что у него два пути обновления микропрограммы. Помимо традиционного обновления микропрограммы на SPI-флеш материнской платы через капсулу UEFI, новую микропрограмму Pluton можно загружать динамически через обновления ОС. При загрузке системы он инициализируется микропрограммой на SPI-флеш, а во время запуска Windows загружается последняя версия, полученная через Windows Update (если она есть).17 Когда обнаруживается уязвимость в микропрограмме TPM, возможность получить исправление, не дожидаясь обновления BIOS от производителя ПК, на практике приятна.
На этапе закупки не решайте, что «отдельная микросхема лучше» или «fTPM хуже»; проверьте политику поддержки производителя и то, насколько надёжно он поставляет обновления микропрограммы. Сделайте критерием не форму реализации, а то, можно ли обновлять устройство так долго, как долго вы собираетесь им пользоваться.
10. Для разработчиков: защищаем ключи через CNG и проектируем повторное использование, права и восстановление
Когда в вашем приложении возникает требование — «мы хотим привязать лицензионный ключ к машине», «мы хотим использовать машинно-специфичный клиентский сертификат для подключения к серверу», «мы хотим, чтобы секретные значения в файле конфигурации можно было расшифровать только на этой машине» — TPM является сильным вариантом.
10.1. Используйте CNG, а не TBS
Windows предлагает TBS (TPM Base Services) как низкоуровневый API. Это системная служба, которая централизованно управляет доступом приложений к TPM, предоставляется как API поверх RPC и кооперативно планирует доступ к TPM на основе приоритета, указанного вызывающей стороной.18
Если ваша цель — хранить ключи, подписывать и шифровать ими и обеспечивать их сохранность, Microsoft рекомендует вместо TBS использовать более высокоуровневые API хранения ключей. Разделите «я хочу управлять TPM напрямую» и «я хочу защитить ключи своего приложения»; для второго идите через CNG.18
Использовать следует поставщик хранения ключей CNG (Cryptography API: Next Generation) с именем «Microsoft Platform Crypto Provider». CNG разделяет криптографические провайдеры и поставщики хранения ключей, а Platform Crypto Provider — это KSP, который использует TPM для безопасного хранения закрытых ключей и защиты их от извлечения.19
Platform Crypto Provider даёт два свойства, которых чисто программный поставщик CNG дать не может (или не может дать в той же мере).3
- Защита ключа: он может создать ключ с ограничениями на использование внутри TPM. ОС может загрузить ключ и использовать его внутри TPM, не копируя в системную память. Его можно настроить как неизвлекаемый. Ключ, созданный TPM, существует только в этом TPM, и этот TPM никогда не становится источником копий ключа.
- Защита от подбора: ключ может требовать значение авторизации, например PIN, и при слишком большом числе попыток TPM отказывает на определённое время.
10.2. Минимальный пример и практический, который открывает существующий ключ
Из .NET с этим работают через классы CNG из System.Security.Cryptography. Сначала минимальная форма, которая создаёт ключ внутри TPM и делает его неизвлекаемым, — вот такая короткая (.NET 8 / Windows).
using System.Security.Cryptography;
var parameters = new CngKeyCreationParameters
{
// Поставщик хранения ключей, использующий TPM
Provider = new CngProvider("Microsoft Platform Crypto Provider"),
// Не разрешать экспорт закрытого ключа вообще
ExportPolicy = CngExportPolicies.None,
};
using var key = CngKey.Create(CngAlgorithm.Rsa, "KomuraSoft.DeviceKey", parameters);
using var rsa = new RSACng(key);
С этим закрытый ключ создаётся внутри TPM и никогда не появляется в памяти процесса. Однако в эксплуатации приходится также обрабатывать «открыть существующий ключ начиная со второго запуска», «на пользователя или на машину» и «гонки между одновременными запусками». Следующий код закладывает всё это внутрь.
using System;
using System.Security.Cryptography;
const string KeyName = "KomuraSoft.DeviceKey";
// NTE_EXISTS: «объект уже существует» (ключ с тем же именем уже есть)
const int NTE_EXISTS = unchecked((int)0x8009000F);
// Поставщик хранения ключей, использующий TPM
var provider = new CngProvider("Microsoft Platform Crypto Provider");
// Решаем, будет ключ на пользователя или на машину (используется из службы или задачи).
// Создающая и потребляющая стороны обязаны всегда совпадать — расхождение здесь
// превращается в «созданный мной ключ не находится».
const bool UseMachineKey = false;
var openOptions = UseMachineKey ? CngKeyOpenOptions.MachineKey : CngKeyOpenOptions.None;
var creationOptions = UseMachineKey
? CngKeyCreationOptions.MachineKey // для создания требуются права администратора
: CngKeyCreationOptions.None;
CngKey OpenOrCreateKey()
{
if (CngKey.Exists(KeyName, provider, openOptions))
{
// Начиная со второго запуска открываем существующий ключ (он сохранён в TPM)
return CngKey.Open(KeyName, provider, openOptions);
}
var creationParameters = new CngKeyCreationParameters
{
Provider = provider,
KeyCreationOptions = creationOptions,
// Не разрешать экспорт закрытого ключа вообще — в этом весь смысл использования TPM
ExportPolicy = CngExportPolicies.None,
};
creationParameters.Parameters.Add(
new CngProperty("Length", BitConverter.GetBytes(2048), CngPropertyOptions.None));
try
{
return CngKey.Create(CngAlgorithm.Rsa, KeyName, creationParameters);
}
catch (CryptographicException ex) when (ex.HResult == NTE_EXISTS)
{
// Если другой процесс создаст ключ с тем же именем между Exists и Create,
// Create завершится с NTE_EXISTS. Только в этом случае открываем ключ,
// созданный победителем.
// Любая другая ошибка (TPM недоступен, недостаточно прав и так далее)
// пробрасывается вызывающей стороне.
return CngKey.Open(KeyName, provider, openOptions);
}
}
using (var key = OpenOrCreateKey())
using (var rsa = new RSACng(key))
{
byte[] payload = System.Text.Encoding.UTF8.GetBytes("device-attestation-challenge");
// Подпись выполняется внутри TPM. Закрытый ключ никогда не появляется в памяти процесса
byte[] signature = rsa.SignData(payload, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
10.3. Три ключевых момента в коде: запрет экспорта, область действия и обработка гонок
ExportPolicy = CngExportPolicies.None — это главное. Оставьте здесь значение по умолчанию, и можно получить конфигурацию, где ключ удаётся вынести, несмотря на использование TPM. «Ключ не выходит наружу» — это причина использовать TPM, поэтому указывайте неизвлекаемость явно.
Другая ловушка — путаница между ключами на пользователя и ключами на машину. Перегрузки CngKey.Exists и CngKey.Open с двумя аргументами ищут только ключи на пользователя. Если изменить только создающую сторону на CngKeyCreationOptions.MachineKey, а потребляющую оставить как есть, существующий машинный ключ не будет найден, и вы получите режим отказа, когда код «каждый раз пытается заново создать ключ под тем же именем и терпит неудачу». Как в коде выше, выровняйте одну и ту же область действия во всех трёх местах — создание, проверка существования и открытие (CngKeyCreationOptions.MachineKey и CngKeyOpenOptions.MachineKey).
Есть также причина выделить OpenOrCreateKey в функцию и поместить внутрь try/catch: «проверить, что существует, а затем создать» плохо переносит гонки. Если два процесса — скажем, из-за двойного запуска приложения — оба увидят Exists == false и затем перейдут к Create, победит тот, кто создаст первым, а проигравший потерпит неудачу с сообщением «ключ с тем же именем уже существует». Это случается только при первом запуске и даже тогда редко, так что тесты почти никогда в это не попадут. Заложите уборку с самого начала: проигравший заново открывает ключ, созданный победителем.
Заново открывать ключ уместно, однако, только когда причина отказа — «ключ с тем же именем уже существует» (NTE_EXISTS). Если направить по тому же пути и другие отказы, например недоступность TPM или недостаточные права, настоящая причина подменяется другим исключением из Open про то, что «ключ не найден», и расследование уходит в сторону. Именно поэтому код выше сужает условие по HResult в фильтре исключения.
10.4. Проектирование эксплуатации: скорость, потеря ключей, ACL и машины без TPM
Работающий код — ещё не всё для эксплуатации. В частности, то, где хранится ключ, и то, какому учётному имени разрешено им пользоваться, — две разные вещи. Заранее решите вопросы скорости и того, в каком потоке выполняется работа, повторной регистрации после ремонта, прав доступа и обращения с машинами без TPM.
- TPM не быстрый. Это выделенный микроконтроллер или небольшой процессор, работающий в защищённом режиме CPU.2 Генерация ключа, занимающая несколько секунд, не редкость. Никогда не используйте ключ TPM напрямую для шифрования больших объёмов данных. Шифруйте данные симметричным ключом, например AES, и защищайте этот симметричный ключ ключом TPM — в два этапа.
- Не запускайте генерацию ключа и подпись в потоке пользовательского интерфейса. Медлительность из предыдущего пункта проявляется напрямую как зависание.
- Очистка TPM уничтожает ключи. Исходите из того, что они будут потеряны при ремонте, замене материнской платы или переустановке ОС, и заложите путь повторной регистрации (например, процедуру перерегистрации устройства на стороне сервера). Проект, в котором «если ключ пропал, всё встало», в реальной работе обязательно сломается.
- Решите, на пользователя или на машину. Ключ на пользователя привязан к профилю. Если его будет использовать служба или задание планировщика, нужен ключ на машину (
CngKeyCreationOptions.MachineKey), а для его создания требуются права администратора. Не забудьте передатьCngKeyOpenOptions.MachineKeyи на потребляющей стороне. О том, как рассуждать о месте хранения данных, стоит прочитать также «Как выбрать, где приложение Windows хранит свои данные». - Сделать ключ машинным само по себе не даёт учётному имени службы пользоваться им.
MachineKeyопределяет только место хранилища ключей; кто может пользоваться ключом, определяется ACL (дескриптором безопасности), привязанным к ключу. Классическая поломка: администратор создаёт ключ, а неадминистраторское учётное имя службы не может его открыть с сообщением «доступ запрещён». Исправление — либо создать ключ под тем удостоверением, которое будет им пользоваться (учётным именем службы), либо при создании предоставить SID службы в дескрипторе безопасности (свойствоSecurity Descrв CNG). В любом случае обязательно проверяйте работу под фактическим учётным именем выполнения. - Решите, как обращаться со средами без TPM. Отклонять их как несоответствующие требованию или откатываться на
Microsoft Software Key Storage Providerи принимать сниженный уровень защиты? В смешанных средах на практике применяют подход, при котором шаблон сертификата предпочитает Platform Crypto Provider, но допускает и программный поставщик.3 - Тщательно обдумайте, привязывать ли к ключу PIN. Защита от подбора — преимущество, но блокировка TPM глобальная. Управлять числом неудач отдельно для каждого ключа технически нереалистично, поэтому слишком много неудач авторизации блокируют весь TPM.2 Это значит, что опечатка в вашем собственном приложении может вывести из строя Windows Hello на той же машине.
- Обращение с самими учётными данными остаётся отдельной проблемой. Как спроектировать систему так, чтобы в скриптах и файлах конфигурации ничего не хранилось открытым текстом, собрано в статье «Безопасная работа с учётными данными в PowerShell».
11. Обычная практика (таблица решений)
| Ситуация | Что делать | Причина и примечания |
|---|---|---|
| Хотите выяснить, можно ли перевести машину на Windows 11 | Решайте с помощью Проверки работоспособности ПК (PC Health Check) или средства управления. Если проверяете вручную, пройдите до конца: список поддерживаемых процессоров, 4 ГБ памяти, 64 ГБ накопителя, GPU с DirectX 12 и новее и драйвером WDDM 2.0, дисплей крупнее 9 дюймов с 720p и 8 битами на канал, микропрограмма с нативным UEFI и поддержкой Secure Boot и TPM 2.0 | Не делайте вывод «обновиться можно», посмотрев только на TPM. GPU и дисплей тоже входят в минимальные требования. Реальный риск — что-то упустить, поэтому по правилу решение оставляйте инструменту13 |
| Хотите проверить только требование TPM по всему парку | Подтвердите 2.0 через Get-Tpm и SpecVersion у Win32_Tpm |
Это проверка требования к TPM, а не само определение пригодности для Windows 11138 |
| TPM есть, но машина не соответствует требованиям Windows 11 | Проверьте, не в режиме ли legacy/CSM режим BIOS. Преобразуйте в UEFI с помощью MBR2GPT перед переключением |
TPM 2.0 не работает в режиме CSM10 |
| У промышленного ПК или встраиваемого устройства нет TPM или его нельзя поставить | Проверьте минимальные требования OPTIONAL для Windows 11 IoT Enterprise. Обязательно различайте редакцию (IoT Enterprise или Enterprise LTSC без IoT) и версию (LTSC, либо 24H2 и новее, если не-LTSC) | TPM необязателен на IoT Enterprise LTSC и на не-LTSC версиях 24H2 и новее. Не-LTSC версии 21H2–23H2 требуют TPM 2.0. Enterprise LTSC без IoT под смягчение не попадает14 |
| Обновляете UEFI/BIOS | Приостановите BitLocker заранее и убедитесь, где хранится ключ восстановления | Обновление микропрограммы меняет измерения PCR4 |
| Хотите очистить TPM | Сначала обеспечьте резервную копию и путь восстановления. Делайте это через функцию ОС (никогда из UEFI) | Очистка уничтожает все ключи, производные от TPM, и их данные5 |
| Появился экран запроса ключа восстановления | Перечислите недавние изменения (микропрограмма, Secure Boot, порядок загрузки, TPM) | Причина в том, что изменение сдвинуло измерения411 |
| TPM заблокировался | Оставьте машину включённой на интервал восстановления (по умолчанию 10 минут; проверьте LockoutHealTime в Get-Tpm). Если спешите, используйте сброс времени блокировки в tpm.msc или Unblock-Tpm |
Пароль владельца не сохраняется с 1607 года. По умолчанию TPM 2.0 сохраняет только авторизацию блокировки. Сброс с неверным значением авторизации приводит к запрету повторных попыток на 24 часа122 |
| Машина, модель угроз которой включает физическую атаку | Настройте TPM + PIN (усиленный PIN), отключите сон и работайте со спящим режимом или выключением питания | «Только TPM» — конфигурация, отдающая приоритет удобству11 |
| Хотите защитить ключи в собственном приложении | Microsoft Platform Crypto Provider из CNG плюс ExportPolicies.None |
API хранения ключей над TBS — рекомендуемый уровень1819 |
| Хотите зашифровать большой объём данных | Шифруйте симметричным ключом и защищайте с помощью TPM только этот ключ | TPM медленный и не подходит для массового шифрования напрямую2 |
| Утилизируете или передаёте машину | Сделайте основой процедуры стирание диска (сброс Windows, специальный инструмент стирания или физическое уничтожение), а очистку TPM выполняйте последней как одну из её частей | Очистка TPM не стирает данные на диске. Отдельно сохранённый ключ восстановления всё ещё позволит их расшифровать. Учтите также, что неверный порядок может лишить вас доступа к собственным данным5 |
12. Итоги
Отправная точка понимания TPM — различение «позволить пользоваться закрытым ключом, не передавая его» и «сделать измерения загрузки условием использования ключа». TPM — пассивный компонент, и именно ОС и микропрограмма используют его функции. В измеряемой загрузке то, что загружается, измеряется до запуска, а статические PCR, которые использует BitLocker, нельзя откатить до перезагрузки.310
При проверке состояния разделяйте наличие TPM, его готовность и версию спецификации. Не делайте вывод, что одного TPM 2.0 достаточно для перехода на Windows 11; проверьте также UEFI, процессор и остальное. Минимальное требование к Secure Boot — это поддержка, что не то же самое, что включённое состояние. Конфигурация, соответствующая условиям привязки к PCR 7, имеет преимущество в виде меньшего числа восстановлений BitLocker из-за обновлений микропрограммы.134
Держите в голове отдельно Windows 11 для обычных ПК и смягчённые требования IoT Enterprise. TPM необязателен на IoT Enterprise LTSC и на не-LTSC версиях 24H2 и новее; не-LTSC версии 21H2–23H2 и Enterprise LTSC без IoT рассматриваются иначе. Не ранжируйте формы реализации по одному названию; выбирайте по нужной вам защите и по тому, как поставляются обновления и поддержка.1410
В эксплуатации сделайте проверку ключа восстановления и приостановку BitLocker перед изменением, а возобновление защиты после него одной непрерывной процедурой. Очистка TPM — не стирание диска. В разработке используйте Platform Crypto Provider из CNG и проектируйте не только неизвлекаемость, но и область действия ключа, ACL, гонки при создании и повторную регистрацию после потери.51819
Похожие статьи
- Реалистичные варианты после окончания поддержки Windows 10 — таблица решений по ESU, LTSC и замене
- Какой Windows ставить на промышленный ПК? — практическое руководство по Windows IoT Enterprise и LTSC
- Чек-лист по утилизации и передаче Windows-ПК
- Введение в PowerShell Remoting (WinRM) — управляем множеством машин Windows сразу
- Изучаем журнал событий на практике с Get-WinEvent — от скорости фильтрации зависит, сколько займёт расследование
- Безопасная работа с учётными данными в PowerShell — изгоняем пароли открытым текстом из скриптов
- Как выбрать, где приложение Windows хранит свои данные
Смежные области консультаций
Компания KomuraSoft LLC выполняет инвентаризацию аппаратных требований, связанных с переходом на Windows 11, консультирует по эксплуатации BitLocker и занимается заказной разработкой бизнес-приложений для Windows, включая управление машинно-специфичными ключами с помощью TPM.
- Разработка приложений для Windows
- Расследование дефектов и анализ первопричин
- Поддержка повторного использования и миграции существующих активов
- Связаться с нами
Справочные материалы
-
Microsoft Learn, Trusted Platform Module Technology Overview. О том, что TPM — это защищённый криптографический процессор, устойчивый к взлому благодаря нескольким механизмам физической защиты; о том, что вредоносное ПО не может изменить функции безопасности TPM; о трёх преимуществах — генерации, хранении и ограничении использования ключей, а также аутентификации устройства и целостности платформы; о том, что загрузочный код измеряется и записывается при старте; о том, что Windows 10/11 инициализируют TPM и автоматически получают права владельца, поэтому настройку через tpm.msc обычно следует избегать; о том, что активная разработка консоли управления TPM завершилась на Windows Server 2019 и Windows 10 1809; и о том, что аттестация работоспособности устройства требует TPM 2.0 и микропрограммы UEFI и не ведёт себя ожидаемым образом на устройстве с legacy BIOS даже при наличии TPM 2.0. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Trusted Platform Module (TPM) fundamentals. О том, что закрытые части корневого ключа хранилища и ключа подтверждения никогда не раскрываются никакому другому компоненту, программному обеспечению, процессу или пользователю; об оборачивании и привязке ключей; о запечатывании по измерениям платформы и снятии печати; о том, что EK — это пара ключей RSA, закрытая половина которой никогда не покидает TPM; об аттестации ключей; о том, что защита от подбора является глобальной блокировкой; о том, что Windows настраивает TPM 2.0 на блокировку после 32 неудачных попыток авторизации и на забывание одной неудачи каждые 10 минут; о том, что память возвращается к нулю после 320 минут без неудач; о том, что заблокированную машину можно оставить включённой на 10 минут, чтобы выйти из блокировки; о немедленном сбросе паролем владельца и о запрете повторных попыток на 24 часа после неверного ввода; о том, что ключи без значения авторизации остаются пригодными к использованию во время блокировки, поэтому конфигурация BitLocker «только TPM» всё ещё может загружаться; о том, что TPM работает как выделенный микроконтроллер или в защищённом режиме CPU; и о том, что пользователям виртуальных смарт-карт рекомендуется переходить на Windows Hello for Business или FIDO2. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, How Windows uses the TPM. О том, что программная защита ключей подвержена атакам с обратной разработкой; о защите ключа и защите от подбора у Platform Crypto Provider; о том, что сертификат EK подтверждает подлинность TPM, а AIK защищает конфиденциальность; о том, что CRTM безусловно хэширует следующий компонент и записывает его в TPM, измеряя до выполнения, поэтому измерения нельзя стереть (измерения очищаются при перезагрузке); о том, что BitLocker создаёт внутри TPM ключ, который можно использовать только при совпадении измерений загрузки с ожидаемыми значениями; о том, что ключи восстановления можно хранить в AD DS; о том, что измеряемая загрузка записывает ядро Windows, драйвер ELAM и загрузочные драйверы; о quote, формируемых с помощью AIK, и удалённой аттестации; о работе службы аттестации работоспособности совместно с MDM; о том, что Credential Guard защищает ключ изолированной среды измерениями TPM; о защите ключей Windows Hello for Business и о том, что биометрические данные не передаются за пределы машины; о виртуальных смарт-картах; и о практике работы с шаблонами сертификатов в смешанных средах. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22
-
Microsoft Learn, Configure BitLocker. О списке PCR с 0 по 23 и о том, что измеряет каждый PCR, в политике «Configure TPM platform validation profile for native UEFI firmware configurations»; о том, что профиль по умолчанию для нативного UEFI — это PCR 0, 2, 4 и 11; о том, что при поддержке состояния Secure Boot (PCR 7) запечатывание по умолчанию выполняется по PCR 7 и PCR 11; о том, что PCR 7 указывает, включён ли Secure Boot и каким ключам доверяют, поэтому его использование вместо PCR 0, 2 и 4 — которые являются хэшами реальных образов микропрограммы и Bootmgr — снижает вероятность попадания в режим восстановления после обновления микропрограммы или образа; о том, что BitLocker нужно приостанавливать перед обновлением микропрограммы в конфигурациях, включающих PCR 0; и о том, что измерение PCR 7 является требованием для логотипа на системах с поддержкой Modern Standby, где при правильно настроенных TPM и Secure Boot ключ по умолчанию привязывается к PCR 7 и PCR 11. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12
-
Microsoft Learn, Troubleshoot the TPM. О том, что Windows инициализирует TPM и автоматически получает права владельца, поэтому создавать пароль владельца не требуется; о том, что очистка TPM приводит к потере данных и уничтожает все производные от TPM ключи и их данные, включая виртуальные смарт-карты и PIN-коды для входа; о том, что нельзя очищать машину, которая вам не принадлежит, без указания её администратора; о том, что очистку всегда выполняют через функцию ОС (tpm.msc), а не напрямую из UEFI; о возможности отключить TPM, если нужно лишь временно его остановить; о процедуре очистки через «Безопасность устройства» → «Сведения о процессоре безопасности» → «Устранение неполадок» в Безопасности Windows; о том, что после очистки Windows автоматически заново инициализирует TPM и снова получает права владельца; о том, что Windows не поддерживает переключение между TPM на системе с более чем одним TPM, из-за чего переключение отправляет BitLocker в режим восстановления; и о проверке настроек UEFI, когда TPM 2.0 не обнаруживается. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, TrustedPlatformModule Module. О ролях командлетов Clear-Tpm, ConvertTo-TpmOwnerAuth, Disable-TpmAutoProvisioning, Enable-TpmAutoProvisioning, Get-Tpm, Get-TpmEndorsementKeyInfo, Get-TpmSupportedFeature, Import-TpmOwnerAuth, Initialize-Tpm, Set-TpmOwnerAuth и Unblock-Tpm. ↩ ↩2
-
Microsoft Learn, Get-Tpm (TrustedPlatformModule). О том, что Get-Tpm возвращает TpmObject, и о значении каждого свойства, включая TpmPresent, TpmReady, TpmEnabled, TpmActivated, TpmOwned, ManagedAuthLevel, OwnerAuth, OwnerClearDisabled, AutoProvisioning, LockedOut, LockoutHealTime, LockoutCount, LockoutMax и SelfTest, вместе с примером вывода. ↩ ↩2
-
Microsoft Learn, Win32_Tpm class. О свойствах класса Win32_Tpm (IsActivated_InitialValue, IsEnabled_InitialValue, IsOwned_InitialValue, SpecVersion, ManufacturerVersion, ManufacturerVersionInfo, ManufacturerId, PhysicalPresenceVersionInfo). В том числе о том, что ManufacturerId — это uint32, байты которого при интерпретации как ASCII-символы образуют строку (например, 1414548736 → 0x54/0x50/0x4D/0x00 → «TPM»), и что SpecVersion — это строка, содержащая основную и дополнительную версии спецификации TCG вместе с ревизией и errata. ManufacturerIdTxt в число свойств этого класса не входит. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, tpmtool. О том, что tpmtool — это служебная программа для получения сведений о TPM; о том, что getdeviceinformation отображает базовые сведения о TPM; и о том, что gatherlogs собирает журналы TPM в текущий каталог. ↩
-
Microsoft Learn, TPM recommendations. О том, что TPM пассивен, это компонент, принимающий команды и возвращающий ответы; о том, что TPM 1.2 поддерживает только RSA и SHA-1; о том, что NIST требовал перехода на SHA-256 начиная с 2014 года, а Microsoft и Google в 2017 году прекратили поддержку подписей и сертификатов SHA-1; о криптографической гибкости TPM 2.0 и его международной стандартизации как ISO/IEC 11889:2015; о том, что политика блокировки TPM 1.2 различается от реализации к реализации, тогда как для TPM 2.0 её настраивает Windows, гарантируя единообразную защиту от подбора; о трёх реализациях (дискретная/dTPM, интегрированная, микропрограммная/fTPM), при том что Windows использует все их одинаково и Microsoft не занимает позиции по форме реализации; и о том, что TPM 2.0 не поддерживается на BIOS в режиме legacy или CSM, требует конфигурации с нативным UEFI, а ОС, установленная в режиме legacy, нуждается в MBR2GPT перед изменением режима BIOS. Учтите, что на той же странице Modern Standby указан как предварительное условие для шифрования устройства, но это условие было снято в Windows 11 версии 24H2 (см. раздел 8.1 и
[^bitlockerindex]). ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 -
Microsoft Learn, BitLocker countermeasures. О том, что по умолчанию BitLocker использует защиту целостности Secure Boot через измерение PCR 7, поэтому неавторизованная микропрограмма EFI, загрузочные приложения и загрузчики не могут получить ключ BitLocker; о четырёх способах разблокировки (только TPM, TPM + ключ запуска, TPM + PIN, TPM + ключ запуска + PIN), где «только TPM» отдаёт приоритет удобству и относительно менее безопасен; о том, что изменения TPM, конфигурации BIOS/UEFI, загрузочных файлов или конфигурации загрузки отправляют машину в режим восстановления; о том, что буткиты и руткиты обнаруживаются измерениями PCR, поэтому ключ не высвобождается; о том, что Windows запечатывает ключ со значением PCR 11, равным 0, а диспетчер загрузки всегда меняет PCR 11 на 1 при передаче управления, из-за чего разблокировка подменой диска не работает; и о рекомендации TPM + усиленный PIN и отключения сна, когда физическая атака входит в модель угроз. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Microsoft Learn, Change the TPM owner password. О том, что начиная с Windows 10 версии 1607 Windows не сохраняет пароль владельца TPM при развёртывании TPM, задавая случайное значение с высокой энтропией и затем отбрасывая его. О том, что сохранить его можно, установив
OSManagedAuthLevelв разделе реестраHKLM\Software\Policies\Microsoft\TPMв 4, чего Microsoft настоятельно не рекомендует; о том, что значением по умолчанию в версиях новее Windows 10 1703 является 5, что для TPM 2.0 означает «сохранять авторизацию блокировки»; и о том, что операции управления, такие как включение, отключение и очистка, остаются возможными через подтверждение физического присутствия в UEFI даже без пароля владельца. ↩ ↩2 ↩3 ↩4 ↩5 -
Microsoft Learn, Windows 11 requirements. О минимальных требованиях Windows 11 (совместимый 64-разрядный CPU или SoC с частотой 1 ГГц и выше и двумя или более ядрами, 4 ГБ памяти и более, 64 ГБ накопителя и более, графическая карта с поддержкой DirectX 12 и новее и драйвером WDDM 2.0, системная микропрограмма «UEFI, с поддержкой Secure Boot», TPM 2.0, дисплей крупнее 9 дюймов с разрешением 720p и выше и 8 битами на канал, а также подключение к интернету). В том числе о том, что требование состоит в поддержке Secure Boot, а не в его включённом состоянии. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Minimum System Requirements - Windows IoT Enterprise. О том, что минимальные требования PREFERRED для Windows IoT Enterprise совпадают с требованиями для потребительских устройств, и о гибкости отклонения от этого уровня для специализированных устройств (минимальные требования OPTIONAL). О том, что минимальные требования OPTIONAL для Windows 11 IoT Enterprise LTSC составляют 2 ГБ памяти, 16 ГБ накопителя, BIOS в качестве системной микропрограммы, TPM «Optional» и Secure Boot «Optional». О не-LTSC версии Windows 11 IoT Enterprise, где требования OPTIONAL для 21H2/22H2/23H2 по-прежнему требуют TPM 2.0, а необязателен только Secure Boot, и TPM становится необязательным начиная с 24H2. О том, что требования к процессору определены на отдельной странице. И об утверждении, что снижение требований для специализированного устройства, куда конечные пользователи могут добавлять программное обеспечение, заслуживает тщательного обдумывания, поскольку отсутствие TPM может повлиять на программное обеспечение, необходимое конечным пользователям (в отличие от смены типа накопителя, которая влияет лишь на производительность чтения и записи). Эти смягчённые требования применяются к семейству редакций Windows IoT Enterprise. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Learn, Secure the Windows boot process. О ролях Secure Boot, Trusted Boot, ELAM и Measured Boot; о том, что в Trusted Boot загрузчик проверяет цифровую подпись ядра до его загрузки, а ядро, в свою очередь, проверяет загрузочные драйверы, файлы запуска и ELAM; о том, что ELAM загружается раньше сторонних загрузочных драйверов; и о том, что в Measured Boot микропрограмма UEFI сохраняет в TPM хэши микропрограммы, загрузчика, загрузочных драйверов и всего остального, загружаемого до антивирусного приложения. ↩
-
Microsoft Learn, BitLocker overview. О том, что шифрование устройства требовало соответствия требованиям безопасности Modern Standby или HSTI и отсутствия внешних портов с поддержкой DMA, и о том, что начиная с Windows 11 версии 24H2 предварительные условия по DMA и HSTI/Modern Standby были сняты, поэтому в область действия автоматического и ручного шифрования устройства попадает больше устройств; о том, что шифрование устройства шифрует только диск с ОС и фиксированные диски; о том, что ключ восстановления сохраняется в Microsoft Entra ID, AD DS или учётной записи Microsoft до удаления открытого ключа; и о том, что проверить выполнение предварительных условий можно в разделе «Поддержка шифрования устройства» в msinfo32.exe. ↩ ↩2
-
Microsoft Learn, Microsoft Pluton security processor. О том, что Pluton — это защищённый криптографический процессор, встроенный в CPU; о том, что он спроектирован обеспечивать функциональность TPM и одновременно давать средства защиты за пределами спецификации TPM 2.0; о поддерживаемых наборах микросхем (AMD Ryzen 6000/7000/8000/9000 и серия Ryzen AI, Intel Core Ultra 200V и Core Ultra Series 3, Qualcomm Snapdragon 8cx Gen 3 и серия Snapdragon X); о том, что микропрограмма загружается при старте из SPI-флеш материнской платы, а во время запуска Windows используется последняя версия, полученная через Windows Update; и о двух путях обновления — через капсулу UEFI и через обновление ОС. ↩ ↩2 ↩3
-
Microsoft Learn, TPM Base Services. О том, что TBS — это системная служба, централизованно управляющая доступом приложений к TPM и предоставляющая API поверх RPC; о том, что она кооперативно планирует доступ к TPM на основе приоритета, указанного вызывающей стороной; и о том, что Microsoft рекомендует разработчикам использовать для хранения ключей более высокоуровневые и простые в использовании API хранения ключей, а не TBS. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, CNG Key Storage Providers. О том, что CNG разделяет криптографические провайдеры и поставщики хранения ключей (KSP); о том, что Microsoft Platform Crypto Provider — это KSP, использующий TPM для безопасного хранения закрытых ключей и защиты их от извлечения даже вредоносным программным обеспечением; и о том, что для его использования в NCryptOpenStorageProvider передаётся MS_PLATFORM_CRYPTO_PROVIDER. ↩ ↩2 ↩3
Похожие статьи
Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.
BitLocker на практике — шифрование диска начинается с ключа восстановления
Начиная с Windows 11 24H2 при чистой установке шифрование устройства включено по умолчанию, и случаи «обнаружили уже зашифрованным» уже п...
Именованные каналы на практике — от проектирования до безопасности IPC в Windows
Практический разбор именованных каналов — стандартного IPC в Windows. По первоисточникам: выбор байтового режима и режима сообщений, серв...
Политика аудита безопасности Windows и расследование журнала событий на практике — как стать ИТ-службой, которая умеет читать 4625
Практическое руководство, чтобы ответить на просьбу «посмотрите журналы неудачных входов». Разбирает связь базовой и расширенной политики...
Windows LAPS на практике — больше не используем один локальный пароль администратора на всех ПК
Один локальный пароль администратора на всех ПК — благодатная почва для Pass-the-Hash: компрометация одной машины открывает остальные. Ра...
Хранилище сертификатов Windows на практике — пользователь или компьютер
Куда помещать клиентский сертификат — в хранилище пользователя или компьютера. Практическое руководство закрывает типичные сбои: разница ...
Связанные темы
Эти страницы показывают тему статьи в более широком контексте услуг и решений.
Технические темы Windows
Раздел о разработке Windows, расследовании сбоев и использовании существующих активов.
Услуги по этой теме
Статья напрямую связана со следующими услугами.
Разработка приложений для Windows
Бизнес-приложения, интеграция оборудования и средства связи — от требований до разработки.
Частые вопросы
Вопросы, которые часто возникают при консультациях по теме статьи.
- Что вообще делает TPM?
- Если коротко — это небольшой сейф, который позволяет пользоваться закрытым ключом, не выпуская сам ключ наружу. Закрытый ключ, созданный внутри TPM, в зависимости от настроек может вообще никогда не покидать чип. Приложения и ОС получают не сам ключ, а просят TPM «подпиши эти данные» или «расшифруй этим ключом» и получают только результат. Вдобавок хэши микропрограммы и загрузчика, загруженных при старте, накапливаются и записываются в область под названием PCR, а ключ можно запечатать так, чтобы он высвобождался только тогда, когда эти значения совпадают с ожидаемыми. Именно из-за этого механизма BitLocker нельзя разблокировать, если внутренности ПК подменили.
- Почему в Windows 11 TPM 2.0 сделали обязательным?
- Потому что BitLocker, Windows Hello, Credential Guard и аттестация работоспособности устройства рассчитаны на аппаратный корень доверия. TPM 1.2 умел работать только с RSA и SHA-1, а его поведение при блокировке отличалось от производителя к производителю, тогда как TPM 2.0 поддерживает новые алгоритмы, и защиту от подбора Windows настраивает единообразно. Учтите, что TPM 2.0 не работает в режиме совместимости с legacy BIOS (CSM), поэтому обязательным условием является конфигурация с нативным UEFI. Исключение — Windows 11 IoT Enterprise: для IoT Enterprise LTSC и для не-LTSC версий 24H2 и новее и TPM, и Secure Boot необязательны (в не-LTSC версиях 21H2–23H2 TPM 2.0 по-прежнему обязателен, а похожая по названию Windows 11 Enterprise LTSC, без IoT, под смягчение не попадает).
- Чем отличаются dTPM, fTPM и Pluton? Что выбрать?
- Способом реализации. dTPM (дискретный TPM) — это отдельная микросхема на материнской плате, fTPM (микропрограммный TPM) — программная реализация, работающая в доверенной среде исполнения процессора, а Pluton — разработанный Microsoft процессор безопасности, интегрированный в CPU. Для Windows все они используются одинаково, и Microsoft прямо заявляет, что не занимает позиции по выбору реализации. Практические различия таковы: у дискретной микросхемы между ней и CPU есть шина, которая может стать целью физической атаки; поведение fTPM зависит от обновлений микропрограммы CPU; микропрограмму Pluton можно обновлять через Windows Update. Если на этапе закупки есть выбор, для корпоративных машин реалистичный критерий — политика поддержки производителя и то, насколько надёжно он поставляет обновления микропрограммы.
- Обновил BIOS, и система запросила ключ восстановления BitLocker. Почему?
- Ключ BitLocker запечатан по измерениям времени загрузки (PCR), поэтому когда измеряемое меняется, ключ не высвобождается и машина переходит в режим восстановления. Обновление микропрограммы — как раз операция, меняющая измерения, например PCR 0. Сама Microsoft советует приостанавливать BitLocker перед обновлением микропрограммы, если в профиле есть PCR 0. После разблокировки ключом восстановления ключ запечатывается заново по новым измерениям, поэтому то же самое не повторится. С точки зрения эксплуатации: всегда приостанавливайте BitLocker перед обновлением UEFI, изменением настроек Secure Boot, очисткой TPM или заменой материнской платы и заранее проверяйте, где хранится ключ восстановления (Active Directory, Microsoft Entra ID или учётная запись Microsoft).
- Как защитить ключи с помощью TPM из собственного приложения?
- Вместо того чтобы подавать команды TPM напрямую, используют поставщик хранения ключей CNG (Cryptography API: Next Generation) с именем «Microsoft Platform Crypto Provider». В .NET достаточно передать этот поставщик и ExportPolicies.None в CngKey.Create, и закрытый ключ будет создан внутри TPM в состоянии, из которого его нельзя извлечь. Низкоуровневые службы TPM Base Services (TBS) тоже открыты, но сама Microsoft рекомендует для хранения ключей, подписи и шифрования использовать более высокоуровневые API хранения ключей. В плане реализации заложите в проект то, что операции TPM медленные, что очистка TPM уничтожает ключи и что нужно решить, как поступать на машинах без TPM.
Об авторе
Страница с профилем автора статьи.
Го Комура
Представитель KomuraSoft LLC
Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.