TPM 2.0 — это защищённый криптомодуль, который хранит ключи, проверяет состояние загрузки и помогает системе доверять самой себе. На практике это не “накопитель” и не обычный идентификатор устройства, а небольшой аппаратный или firmware-сейф для криптографических операций.

Что такое TPM 2.0

TPM расшифровывается как Trusted Platform Module — доверенный платформенный модуль. Его задача — безопасно хранить секреты и выполнять операции так, чтобы ключи не лежали открыто в памяти ОС и не были доступны обычным программам.

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

Что TPM 2.0 умеет

TPM 2.0 умеет:

  • безопасно хранить ключи и служебные секреты;
  • генерировать случайные данные;
  • измерять и фиксировать состояние загрузки;
  • “запечатывать” секрет так, чтобы он открылся только при правильном состоянии системы;
  • подтверждать, что компьютер загрузился без подмены важных компонентов.

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

Почему именно TPM 2.0

Версия 2.0 — это современный стандарт с актуальными алгоритмами и более гибкой архитектурой. Именно поэтому Windows 11 требует TPM 2.0 как базовый уровень аппаратной безопасности.

Но Linux TPM 2.0 не требует как обязательное условие работы. В Linux он используется по желанию: для LUKS, measured boot, attestation, хранения ключей и других security-сценариев.

Что у тебя за TPM

По твоим выводам у тебя TPM есть, он работает, и система его видит нормально. Команда проверки показала yes, а systemd-cryptenroll увидел /dev/tpmrm0, что означает доступный TPM-ресурс-менеджер.

По свойствам TPM видно TPM2_PT_MANUFACTURER = AMD, а это очень похоже на AMD fTPM, то есть firmware TPM. Это значит, что TPM-функции у тебя реализованы не как отдельная микросхема, а внутри платформенной логики AMD/UEFI-стека.

Где это физически находится

Если упростить:

  • дискретный TPM — это отдельный чип на материнской плате;
  • fTPM — это TPM-функция внутри CPU или firmware-платформы.

В твоём случае это именно fTPM-подобная реализация. То есть “железо” есть, но оно не выглядит как отдельная микросхема на плате. Оно живёт в платформенной инфраструктуре AMD и доступно Linux через стандартный TPM-интерфейс.

Почему это напоминает HSM

Потому что по смыслу действительно похоже:

  • ключи хранятся внутри защищённого модуля;
  • операции выполняются внутри него;
  • секреты не должны утекать наружу в открытом виде.

Но TPM — это не полноценный корпоративный HSM. TPM рассчитан на один ПК и на задачи доверия к конкретной машине: загрузка, шифрование диска, привязка секретов к устройству.

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

Как TPM общается с системой

В TPM нет свободного “файлового” доступа. ОС посылает ему команды, TPM выполняет действие и возвращает результат. Это не похоже на диск и не похоже на обычный USB-накопитель.

Типичный цикл такой:

1. ОС открывает TPM-устройство.
2. Отправляет команду, например: создать ключ, прочитать PCR, получить случайные байты.
3. TPM делает операцию внутри себя.
4. Возвращает результат.

Это и есть TCG TPM 2.0 command interface — набор стандартизированных команд.

Какие команды там есть

У TPM есть целые группы команд:

  • старт и самотестирование;
  • работа с ключами и объектами;
  • чтение и расширение PCR;
  • attestation и quote;
  • NV-память;
  • генерация случайных чисел;
  • управление сессиями и политиками.

Самая “проверка себя” — это GetCapability, через которую можно узнать производителя, размеры буферов, количество PCR, число поддерживаемых команд и другие свойства.

Что означают твои выводы properties-fixed

Из твоего вывода важно вот что:

  • TPM2_PT_FAMILY_INDICATOR: "2.0" — это именно TPM 2.0.
  • TPM2_PT_MANUFACTURER: "AMD" — TPM реализован AMD-платформой.
  • TPM2_PT_PCR_COUNT: 0x18 — 24 PCR-регистра.
  • TPM2_PT_MAX_COMMAND_SIZE и TPM2_PT_MAX_RESPONSE_SIZE по 0x1000 — это размеры обмена командами, не объём хранилища.
  • TPM2_PT_NV_BUFFER_MAX: 0x400 — максимальный размер NV-буфера на одну операцию.
  • TPM2_PT_HR_TRANSIENT_MIN, TPM2_PT_HR_PERSISTENT_MIN и TPM2_PT_HR_LOADED_MIN — это минимальные количества поддерживаемых объектов, а не “место на диске”.

То есть TPM — это не накопитель. У него есть небольшая защищённая NV-область и лимиты на объекты, но не “много гигабайт”, а очень маленький защищённый ресурс для ключей и политики.

Как это связано с Linux

В Linux TPM 2.0 часто используют для:

  • LUKS2 и systemd-cryptenroll;
  • автoразблокировки шифрованного раздела;
  • PCR-политик;
  • Secure Boot и measured boot;
  • attestation;
  • защищённого хранения ключей сервисов.

На твоей системе TPM уже работает, и для Linux это хорошая база для шифрования и более строгой модели доверия.

Как проверить TPM в Linux

Минимум:

systemd-analyze has-tpm2

Если ответ yes, TPM 2.0 доступен системе.

Проверка устройств:

ls -l /dev/tpm*
ls -l /sys/class/tpm/

Если есть /dev/tpmrm0, это хороший знак: современный интерфейс для работы с TPM в Linux.

Как посмотреть, что знает TPM о себе

Самый простой вариант:

tpm2_getcap properties-fixed

Это покажет производителя, версию, размеры буферов, количество PCR и другие свойства.

Если нужен список команд:

tpm2_getcap commands

Если нужны алгоритмы:

tpm2_getcap algorithms

Как это делать через Python

У тебя уже получилось подключиться к TPM через Python-биндинг. Главное, что там методы используют snake_case, поэтому вместо GetRandom нужно писать get_random.

Пример:

from tpm2_pytss import ESAPI

ctx = ESAPI()
data = ctx.get_random(16)
print(data.buffer.hex())

Это означает, что Python реально работает с TPM, а не просто с локальным генератором случайных чисел.

Как объяснить это совсем просто

Если совсем коротко:

  • TPM 2.0 — это маленький защищённый криптомодуль.
  • Он хранит ключи и политики.
  • Он умеет доказывать состояние системы.
  • Он не является обычным хранилищем данных.
  • У тебя, скорее всего, AMD fTPM, встроенный в платформу, а не отдельный чип.

[file-name 000356_2026-03-29_18-02-42.txt]