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 (локальная)
- Проверка состояния PCR (Platform Configuration Registers) — гарантирует, что загрузчик и ядро не были подменены.
- Извлечение секрета из TPM2 при совпадении PCR.
- Передача секрета в 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 и цепочки доверия решение обеспечивает баланс между удобством и безопасностью, исключая ручной ввод паролей и снижая риски при компрометации отдельного узла.