<===

ProNotes

2026-03-29 18:02:42
# TPM 2.0: что это, как работает и где оно у тебя в Linux

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

Минимум:

```bash
systemd-analyze has-tpm2
```

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

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

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

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

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

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

```bash
tpm2_getcap properties-fixed
```

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

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

```bash
tpm2_getcap commands
```

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

```bash
tpm2_getcap algorithms
```

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

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

Пример:

```python
from tpm2_pytss import ESAPI

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

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

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

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

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