Блог "Дети ОИТа"
/поиск

LUKS2 + TPM2 + Clevis/Tang: автоматизированная разблокировка при безопасном старте

Практическое руководство по настройке автоматической разблокировки LUKS2 с использованием TPM2 и Clevis/Tang для отказоустойчивой инфраструктуры.

Введение

В корпоративных средах и на рабочих станциях с высокими требованиями к безопасности автоматическая разблокировка зашифрованных томов при загрузке — критически важная задача. Классический подход с вводом пароля вручную не масштабируется и подвержен человеческому фактору. Комбинация LUKS2, TPM2 и сетевых сервисов Clevis/Tang позволяет реализовать полностью автоматизированную, но при этом безопасную разблокировку.

Архитектура решения

  • LUKS2 — современный стандарт шифрования блочных устройств в Linux с поддержкой токенов.
  • TPM2 — аппаратный корень доверия, хранящий секреты привязанные к состоянию платформы (PCR).
  • Clevis — фреймворк для автоматической разблокировки с поддержкой плагинов (TPM2, Tang, SSS).
  • Tang — сетевой сервис, предоставляющий ключи для совместной разблокировки (SSS — threshold cryptography).

Сценарий 1: Разблокировка через TPM2 (локальная)

  1. Проверка состояния PCR (Platform Configuration Registers) — гарантирует, что загрузчик и ядро не были подменены.
  2. Извлечение секрета из TPM2 при совпадении PCR.
  3. Передача секрета в LUKS2 для разблокировки.
# Привязка тома к TPM2
clevis bind tpm2 -d /dev/sdaX -k "current" -s 0 -p "sha256" -i "pcr-7,pcr-11"

# Проверка
clevis decrypt tpm2 -d /dev/sdaX

Сценарий 2: Совместная разблокировка с Tang (SSS)

Для отказоустойчивости используется схема (t-of-n): достаточно t серверов Tang из n доступных.

# На сервере Tang
tangd-keygen /var/db/tang
systemctl enable --now tangd

# На клиенте — привязка к 2 из 3 серверов
clevis bind sss -d /dev/sdaX '{"t":2,"pins":{"tang":[{"url":"http://tang1"},{"url":"http://tang2"},{"url":"http://tang3"}]}}'

Интеграция с Secure Boot

Для полной цепочки доверия необходимо:

  • Включить Secure Boot в UEFI
  • Подписать GRUB и ядро
  • Настроить PCR 0,1,4,7,11 для TPM2-привязки
  • Использовать sbsign для подписи дополнительных модулей

Диагностика

# Статус TPM2
tpm2_getcap properties-variable

# Проверка PCR
cat /sys/class/tpm/tpm0/pcr-sha256/7

# Логи Clevis
journalctl -u clevis-luks-askpass

# Тест разблокировки
cryptsetup luksOpen /dev/sdaX test --test-passphrase

Типичные ошибки

  • PCR изменились после обновления ядра/GRUB — требуется перепривязка.
  • Tang недоступен — нужен запасной сценарий (например, TPM2 fallback).
  • Secure Boot блокирует неподписанные модули — проверьте подписи.

Хештеги

#LUKS2 #TPM2 #Clevis #Tang #SecureBoot #автоматизация #шифрование #безопасность

Заключение

Комбинация LUKS2+TPM2+Clevis/Tang — промышленный стандарт для автоматизированной разблокировки в Linux. При правильной настройке PCR и цепочки доверия решение обеспечивает баланс между удобством и безопасностью, исключая ручной ввод паролей и снижая риски при компрометации отдельного узла.