Security

HSM

HSM — аппаратный модуль безопасности: защищённое устройство, которое хранит криптоключи и выполняет операции с ними, не выдавая ключи наружу.

Что такое HSM

HSM расшифровывается как Hardware Security Module — аппаратный модуль безопасности. Это специализированное устройство, которое генерирует, хранит криптографические ключи и выполняет операции с ними — подпись, шифрование, проверку — так, что приватный ключ никогда не покидает устройство.

Именно в этом вся идея, и её стоит проговорить отдельно. Обычно приложение читает ключ из файла в свою память, а дальше он живёт в оперативке процесса: его видно в дампе памяти, он утекает через уязвимости класса Heartbleed, копируется вместе со снапшотом виртуальной машины и уносится на флешке вместе с бэкапом.

С HSM модель переворачивается: приложение никогда не получает ключ. Оно отправляет в модуль данные и команду «подпиши», получает обратно подпись. Ключ физически не существует за пределами устройства. Скомпрометированный сервер позволит атакующему пользоваться HSM, пока есть доступ, но не позволит украсть ключ и продолжить пользоваться им потом. Разница между «пока я в системе» и «навсегда» — это и есть то, за что платят.

Защита от вскрытия

HSM — устройство с физической защитой. Корпус сделан tamper-evident (следы вскрытия невозможно скрыть) и tamper-resistant, а в старших моделях — tamper-responsive: при попытке вскрытия, выходе температуры за диапазон или скачке напряжения модуль стирает ключи сам. Лучше потерять ключи, чем отдать.

Международный критерий оценки — FIPS 140 (версии 140-2 и 140-3) с четырьмя уровнями: от базовых требований к криптомодулю на уровне 1 до активного реагирования на физическое вмешательство на уровне 4.

Форм-факторы и применение

Форм-фактор Где стоит
PCIe-карта Внутри сервера, минимальная задержка
Сетевое устройство Стойка в ЦОД, общий ресурс для многих серверов
USB-токенНебольшие объёмы, персональные ключи
Облачный HSM Сервис провайдера, аренда выделенного модуля

Где HSM действительно нужен:

  • Корневые ключи удостоверяющих центров. Утечка ключа CA означает, что можно выпустить сертификат на любой домен. Корневые ключи публичных УЦ живут в HSM в физически охраняемых помещениях, и церемонии доступа к ним проводятся по протоколу с несколькими операторами.
  • PCI DSS. Обработка PIN-блоков и работа с ключами платёжной инфраструктуры — область, где HSM обязателен по требованиям платёжных систем.
  • Квалифицированная электронная подпись и инфраструктура PKI.
  • Подпись кода и прошивок — ключ, которым подписываются обновления, компрометировать нельзя категорически.
  • Мастер-ключи шифрования БД — HSM хранит ключ, которым зашифрованы остальные ключи.

Как подключается

Стандартный интерфейс — PKCS#11: приложение работает с ключами через библиотеку, не зная их значений. Есть также KMIP для управления ключами и JCE для Java.

# ключ живёт в HSM, наружу выходит только публичная часть
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so \
            --login --keypairgen --key-type rsa:4096 \
            --label "ca-signing-key" --id 01

# nginx может брать ключ из HSM через OpenSSL-движок
# ssl_certificate     /etc/ssl/cert.pem;
# ssl_certificate_key engine:pkcs11:pkcs11:object=ca-signing-key;

Для разработки и тестов есть SoftHSM — программная эмуляция интерфейса PKCS#11. Полезна, чтобы отладить интеграцию, но никакой защиты не даёт: ключи лежат в обычных файлах.

Российский контекст

Ключи по ГОСТ и квалифицированная подпись требуют средств, сертифицированных ФСБ, — это область СКЗИ, и зарубежные HSM здесь не подходят, каким бы ни был их уровень FIPS. Применяются КриптоПро HSM, решения «Аладдин Р.Д.», Rutoken. Классы КС1–КА и требования к эксплуатации те же, что для остальных СКЗИ.

Стоит ли

Честно: HSM — дорого. Устройство, лицензии, кластеризация для отказоустойчивости (модуль на критическом пути: он лежит — подпись не работает), обученный персонал, процедуры доступа. Для типового веб-проекта это избыточно.

Разумная лестница выглядит так: файл с правами 600 → секреты в HashiCorp Vault → облачный HSM/KMS у провайдера → собственный HSM. Vault закрывает потребности большинства команд: централизованное хранение, аудит, ротация, динамические учётные данные — за несравнимо меньшие деньги. HSM берут, когда этого требует регулятор, или когда цена компрометации одного конкретного ключа выше стоимости всей инфраструктуры вокруг него.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер