Product SiteDocumentation Site

80.4. Использование TPM 2.0

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

Примечание

TPM поддерживается только на оборудовании, имеющем соответствующий чип. Если TPM не определяется системой, его может потребоваться включить в настройках UEFI/BIOS.
Для TPM 2.0 требуется загрузка в режиме UEFI. Режим Legacy/CSM может препятствовать корректной работе.

Примечание

PCR (Platform Configuration Registers) — это 24 регистра в TPM, которые хранят хеши ключевых компонентов загрузочной цепочки (прошивка, загрузчик, ядро и т.д.).
Разблокировка возможна только если текущие значения PCR совпадают с теми, что были при привязке. Изменение любого из компонентов (например, обновление GRUB) изменит PCR — и TPM откажется расшифровать ключ.
Механизм работы LUKS2 с TPM:
  • На этапе настройки:
    • Генерируется временный ключ LUKS.
    • Ключ шифруется с помощью ключа, защищённого TPM, и сохраняется в заголовке LUKS.
    • Указывается политика PCR (например, 0+2+4+7).
  • При загрузке:
    • Загрузчик (GRUB) и initramfs измеряют компоненты и обновляют PCR.
    • На этапе initramfs:
      • systemd-cryptsetup запрашивает у TPM расшифровку ключа.
      • TPM сравнивает текущие значения PCR с политикой.
      • Если совпадают — возвращает расшифрованный ключ.
      • Ключ используется для для расшифровки и открытия LUKS-раздела.
  • Если PCR не совпадают:
    • TPM отклоняет запрос.
    • Система предлагает ввести пароль или резервный ключ восстановления (recovery key).
Проверка поддержки TPM:
  • Просмотр журнала ядра:
    # journalctl -k --grep=tpm
    …
    авг 14 15:14:12 host-200 kernel: ACPI: TPM2 0x0000000071592000 00004C (v04 _ASUS_ Notebook 00000001 AMI  00000000)
    
  • Проверка наличия устройства /dev/tpm0:
    # ls /dev/tpm0
    
Проверка работоспособности TPM:
  • Проверка версии TPM:
    # tpm2_getcap properties-fixed
    TPM2_PT_FAMILY_INDICATOR:
      raw: 0x322E3000
      value: "2.0"
    …
    
  • Проверка доступности TPM:
    # tpm2_pcrread
    
    Если TPM отвечает и возвращает значения PCR, значит он активен и готов к использованию.
  • Чтение конкретного банка PCR:
    # tpm2_pcrread sha256
      sha256:
        0 : 0xA40AFF58CB8F9C93CBF758194517846804AE1324D72BEAAD88FB096FB36CFE8C
        1 : 0x4E5700BB7921018584DF1E990E21474AC1B1A2E9465A68273C3B718282571374
    …
    

80.4.1. Создание зашифрованного раздела

Создание зашифрованного раздела:
  1. Инициализировать LUKS2 на устройстве:
    # cryptsetup luksFormat --type luks2 /dev/sdb1
    
  2. Открыть зашифрованный раздел:
    # cryptsetup open /dev/sdb1 sdb1_encrypted
    
  3. Создать файловую систему:
    # mkfs.ext4 /dev/mapper/sdb1_encrypted
    
  4. Закрыть раздел:
    # cryptsetup close sdb1_encrypted