TPM 2.0 — это аппаратный крипто-процессор, который живёт на материнке и может хранить ключи шифрования. На Arch Linux с ним можно сделать одну полезную вещь прямо сейчас: привязать автоматическую разблокировку LUKS2-диска к состоянию прошивки. Диск будет открываться сам при нормальной загрузке, а пароль останется запасным вариантом. Всё штатное, из коробки, без сторонних демонов.
TPM — Trusted Platform Module — микросхема на материнской плате (или программная эмуляция в прошивке). Она генерирует и хранит ключи, считает хеши состояния загрузки и умеет «запечатывать» секреты: отдаёт ключ только если система загрузилась в ожидаемом состоянии.
Для Arch-пользователя TPM полезен в одном сценарии: диски зашифрованы LUKS2, а TPM хранит ключ, который автоматически раскрывает раздел при загрузке. Аналогичный механизм работает в Windows BitLocker и macOS FileVault. Есть и другие применения — SSH-ключи, GnuPG, OpenSSL. Но главное и самое готовое к использованию — именно LUKS2 + systemd.
Сначала убедись, что прошивка видит TPM. Зайди в BIOS/UEFI и найди опцию — для AMD это обычно fTPM, для Intel — PTT (Platform Trust Technology). Если включена — идём дальше.
Проверка в Arch:
ls /dev/tpm*
Должны появиться /dev/tpm0 и/или /dev/tpmrm0. Если пусто — TPM либо отключён в BIOS, либо аппаратно отсутствует.
Установи tpm2-tools:
sudo pacman -S tpm2-tools
Посмотреть возможности чипа:
tpm2_getcap properties-fixed | grep -i "TPM2_PT_MANUFACTURER\|TPM2_PT_FIRMWARE_VERSION"
Или быстрый способ через systemd:
systemd-analyze has-tpm2
Если ответ «yes» — всё в порядке, можно двигаться дальше.
Главный кейс: при загрузке система сама открывает зашифрованный раздел, без ввода пароля. Пароль при этом остаётся в LUKS-слоте как запасной вариант.
Перед любыми манипуляциями сделай бэкап заголовков LUKS — потеря заголовка равна потере данных.
systemd-cryptenroll --tpm2-device=list
Вывод покажет доступные TPM-чипы и драйвер. Если TPM один, дальше используем auto.
sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/sdaX
Здесь /dev/sdaX — зашифрованный раздел LUKS2. Команда запросит пароль LUKS (чтобы открыть слот), затем сгенерирует ключ, запишет его в TPM и свяжет с PCR 0 и 7. После этого раздел будет автоматически раскрываться при загрузке.
sudo systemd-cryptenroll /dev/sdaX
В выводе появится строка tpm2 — новый слот создан. Для корневого раздела на Arch потребуется настроить initramfs с хуками systemd и sd-encrypt. Порядок важен — неправильная последовательность сделает систему незагружаемой. Если ставил Arch недавно, в пошаговом руководстве это уже может быть сделано.
PCR — Platform Configuration Register — регистры внутри TPM, в которых хранятся хеши состояния системы. Каждый отвечает за свою часть загрузочного процесса:
| PCR | Что хранит | Кто меняет |
|---|---|---|
| PCR 0 | Прошивка (UEFI-код) | Прошивка при обновлении |
| PCR 1 | Данные прошивки (порядок загрузки) | Прошивка |
| PCR 7 | Состояние Secure Boot (ключи, сертификаты) | Прошивка, shim |
Команда --tpm2-pcrs=0+7 означает: «выдать ключ только если PCR 0 и PCR 7 совпадают со значениями при записи». Обновил прошивку — PCR 0 изменился — диск не откроется автоматически, придётся ввести пароль.
Список всех текущих значений PCR:
systemd-analyze pcrs
0+7 — минимальный набор. Проверяет прошивку и Secure Boot.7+11 — вариант BitLocker. PCR 11 хеш cmdline ядра (при использовании UKI).7+15 — привязка к LUKS-тому. PCR 15 меняется после раскрытия диска, ключ становится недоступен после первой разблокировки.Менять PCR после записи TPM-ключа — плохая идея. Если значения изменились, TPM не выдаст ключ, и диск откроется только паролем. Если пароль забыл — данные потеряны.
Не шифровать диск только TPM-ключом без пароля. Потеря железа (материнка сгорела, украдена) = потеря данных навсегда. Пароль или recovery key — обязательный fallback.
Не добавлять много PCR без понимания последствий. Чем больше привязок, тем выше шанс, что система не откроет диск после безобидного обновления. Начни с 0+7, потом докрутишь.
Не обновлять прошивку без понимания PCR. Обновление UEFI меняет PCR 0, и TPM-ключ перестанет работать. Не критично — пароль спасёт, но неприятно.
Не полагаться на TPM как на замену хорошей разметке диска. TPM — дополнительный слой. Базовая защита — это всё ещё правильная разметка GPT с LUKS.
Если TPM-ключ нужно отозвать (продал машину, сменил прошивку):
sudo systemd-cryptenroll /dev/sdaX --wipe-slot=tpm2
Ключ удаляется из LUKS-слота, TPM больше не раскроет диск. Пароль остаётся.
TPM заменяет пароль LUKS? Нет. TPM добавляет ещё один способ раскрыть диск — автоматический, при правильном состоянии загрузки. Пароль остаётся в отдельном слоте как fallback.
Что будет, если обновить прошивку? PCR 0 изменится, TPM-ключ не сработает. Диск откроется паролем, после чего ключ можно перезаписать заново.
TPM на ноутбуке — тот же? Да. На большинстве ноутбуков TPM — это fTPM (AMD) или PTT (Intel), программная реализация в прошивке. Работает так же, как дискретный чип.
Стоит ли включать PCR 15? Для корневого раздела — да. PCR 15 меняется после раскрытия LUKS, что предотвращает повторное использование ключа злоумышленником. Требует настройки initramfs и GPT-автомонтирования.
Можно ли использовать TPM и keyfile одновременно? Да, это штатный режим. TPM-ключ в одном слоте, keyfile — в другом. Работают независимо.
TPM 2.0 на Arch Linux — не экзотика, а штатная фича systemd. Проверил наличие чипа, установил tpm2-tools, записал ключ через systemd-cryptenroll — и диск раскрывается сам при загрузке. Пароль остаётся запасным вариантом. Главное — понимать PCR: обновил прошивку, забыл пароль, потерял диск. TPM не волшебная палочка, но удобный инструмент, если знаешь, как с ним обращаться.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии