Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

TPM 2.0 и Arch: что можно сделать уже сейчас

TPM 2.0 — это аппаратный крипто-процессор, который живёт на материнке и может хранить ключи шифрования. На Arch Linux с ним можно сделать одну полезную вещь прямо сейчас: привязать автоматическую разблокировку LUKS2-диска к состоянию прошивки. Диск будет открываться сам при нормальной загрузке, а пароль останется запасным вариантом. Всё штатное, из коробки, без сторонних демонов.

Что такое TPM 2.0 и зачем он Arch-пользователю

TPM — Trusted Platform Module — микросхема на материнской плате (или программная эмуляция в прошивке). Она генерирует и хранит ключи, считает хеши состояния загрузки и умеет «запечатывать» секреты: отдаёт ключ только если система загрузилась в ожидаемом состоянии.

Для Arch-пользователя TPM полезен в одном сценарии: диски зашифрованы LUKS2, а TPM хранит ключ, который автоматически раскрывает раздел при загрузке. Аналогичный механизм работает в Windows BitLocker и macOS FileVault. Есть и другие применения — SSH-ключи, GnuPG, OpenSSL. Но главное и самое готовое к использованию — именно LUKS2 + systemd.

Как проверить, что TPM работает

Сначала убедись, что прошивка видит 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 через TPM

Главный кейс: при загрузке система сама открывает зашифрованный раздел, без ввода пароля. Пароль при этом остаётся в LUKS-слоте как запасной вариант.

Перед любыми манипуляциями сделай бэкап заголовков LUKS — потеря заголовка равна потере данных.

Шаг 1. Проверить список TPM-устройств

systemd-cryptenroll --tpm2-device=list

Вывод покажет доступные TPM-чипы и драйвер. Если TPM один, дальше используем auto.

Шаг 2. Записать TPM-ключ в LUKS-слот

sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/sdaX

Здесь /dev/sdaX — зашифрованный раздел LUKS2. Команда запросит пароль LUKS (чтобы открыть слот), затем сгенерирует ключ, запишет его в TPM и свяжет с PCR 0 и 7. После этого раздел будет автоматически раскрываться при загрузке.

Шаг 3. Проверить результат

sudo systemd-cryptenroll /dev/sdaX

В выводе появится строка tpm2 — новый слот создан. Для корневого раздела на Arch потребуется настроить initramfs с хуками systemd и sd-encrypt. Порядок важен — неправильная последовательность сделает систему незагружаемой. Если ставил Arch недавно, в пошаговом руководстве это уже может быть сделано.

Что такое PCR и как их трогать

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

Какие PCR выбирать на практике

  • 0+7 — минимальный набор. Проверяет прошивку и Secure Boot.
  • 7+11 — вариант BitLocker. PCR 11 хеш cmdline ядра (при использовании UKI).
  • 7+15 — привязка к LUKS-тому. PCR 15 меняется после раскрытия диска, ключ становится недоступен после первой разблокировки.

Менять PCR после записи TPM-ключа — плохая идея. Если значения изменились, TPM не выдаст ключ, и диск откроется только паролем. Если пароль забыл — данные потеряны.

Что НЕ надо делать с TPM

Не шифровать диск только TPM-ключом без пароля. Потеря железа (материнка сгорела, украдена) = потеря данных навсегда. Пароль или recovery key — обязательный fallback.

Не добавлять много PCR без понимания последствий. Чем больше привязок, тем выше шанс, что система не откроет диск после безобидного обновления. Начни с 0+7, потом докрутишь.

Не обновлять прошивку без понимания PCR. Обновление UEFI меняет PCR 0, и TPM-ключ перестанет работать. Не критично — пароль спасёт, но неприятно.

Не полагаться на TPM как на замену хорошей разметке диска. TPM — дополнительный слой. Базовая защита — это всё ещё правильная разметка GPT с LUKS.

Отзыв TPM-ключа

Если 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 не волшебная палочка, но удобный инструмент, если знаешь, как с ним обращаться.

Полезные ресурсы

  • Trusted_Platform_Module — ArchWiki: проверка TPM, PCR, LUKS, SSH, GnuPG
  • Systemd-cryptenroll — ArchWiki: запись TPM/FIDO2/паролей в LUKS2-слоты
  • Secure Boot на Arch — PCR 7 меняется при включении Secure Boot, разблокировка может сломаться


Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max