На этой странице собрана сводная информация о криптографических механизмах Stronghold:
- какие алгоритмы используются для TLS;
- как шифруются данные в хранилище;
- как HSM дополняет встроенное шифрование;
- какие алгоритмы доступны в
PKI; - какие алгоритмы доступны в
Transit.
Краткая сводка
| Область | Основные алгоритмы и механизмы |
|---|---|
| TLS | Настраиваемые версии TLS 1.0-TLS 1.3, наборы шифров для TLS 1.2 и ниже, проверка серверных и клиентских сертификатов |
| Шифрование хранилища | Встроенный криптографический барьер AES-256-GCM |
| Дополнительная защита | seal "pkcs11" для HSM и seal wrap для дополнительного шифрования критичных данных |
| PKI | RSA, EC, Ed25519, а также поддерживаемые варианты GOST |
| Transit | AES-GCM, ChaCha20-Poly1305, RSA, ECDSA, Ed25519, HMAC, а также поддерживаемые варианты GOST |
ГОСТ-алгоритмы
Stronghold поддерживает сценарии, где требуется использование ГОСТ-криптографии:
- в
TLSподдерживаетсяTLS 1.3с проверкой сертификатов на ключахГОСТ 34.10, а также с использованием ГОСТ-шифрованияМагмаиКузнечик; - механизм
PKIподдерживает выпуск сертификатов с ключамиГОСТ 34.10; - механизм
Transitподдерживает подпись с помощью асимметричных ключейГОСТ 34.10, а также шифрование с помощью симметричных алгоритмовГОСТ 34.12(Магма,Кузнечик) иГОСТ 28147-89; - при использовании
Managed KeysиHSM, поддерживающих ГОСТ-криптографию, сохраняется возможность работы не только сRSA, но и с ключами и сертификатами на базе поддерживаемых ГОСТ-алгоритмов.
TLS: версии, наборы шифров и проверка сертификатов
TLS для API Stronghold настраивается в секции listener "tcp" через параметры Standalone-конфигурации.
Поддерживаемые версии TLS
Параметры tls_min_version и tls_max_version поддерживают значения:
tls10;tls11;tls12;tls13.
Для production-сред рекомендуется использовать только TLS 1.2 и TLS 1.3.
Поддерживаемые наборы шифров
Параметр tls_cipher_suites позволяет явно задать список шифров для TLS 1.2 и более ранних версий.
Важно учитывать:
tls_cipher_suitesне влияет наTLS 1.3; дляTLS 1.3наборы шифров определяются реализацией Go TLS;- имена допустимых шифров соответствуют списку из Go
crypto/tls; - если указать только наборы шифров, запрещённые спецификацией
HTTP/2, CLI и другие клиенты на базеnet/httpмогут работать некорректно.
Практический подход:
- ограничить
tls_min_versionзначениемtls12; - задавать
tls_cipher_suitesтолько при наличии требований ИБ или совместимости; - после изменения набора шифров проверять работу CLI, UI и балансировщиков.
Проверка сертификатов
Stronghold поддерживает несколько уровней проверки TLS-сертификатов:
tls_cert_fileиtls_key_fileзадают серверный сертификат и приватный ключ;- в
tls_cert_fileможно передать полную цепочку PEM, где сертификат узла должен идти первым; tls_require_and_verify_client_cert = trueвключает обязательную проверку клиентских сертификатов;tls_client_ca_fileзадаёт CA-файл, по которому Stronghold проверяет клиентские сертификаты;tls_disable_client_certs = trueполностью отключает проверку клиентских сертификатов.
В средах, где используется ГОСТ-криптография, Stronghold поддерживает TLS 1.3 с проверкой сертификатов ГОСТ 34.10, а также TLS-шифрование на алгоритмах Магма и Кузнечик.
Шифрование хранилища
Stronghold защищает данные в хранилище встроенным криптографическим барьером на основе AES-256-GCM.
Это означает:
- для шифрования данных в хранилище используется
AES-GCMс 256-битным ключом; - барьер обеспечивает не только конфиденциальность, но и контроль целостности данных;
- для каждой записи используется отдельный
nonce; стандартный размерGCM nonceсоставляет 96 бит (12 байт); - Stronghold поддерживает ротацию ключей барьера, поэтому новые записи могут шифроваться новым ключом без потери доступа к ранее сохранённым данным.
Шифрование барьером работает поверх выбранного storage backend-а. Поэтому независимо от того, используется raft, filesystem, etcd или postgresql, в физическое хранилище записываются уже зашифрованные значения Stronghold.
Важно различать:
- криптографическую защиту данных Stronghold, которую обеспечивает барьер
AES-256-GCM; - операционные процедуры резервного копирования storage backend-а, которые остаются зоной ответственности администратора.
Дополнительное шифрование через HSM
Поддержка HSM не заменяет встроенный барьер AES-256-GCM, а дополняет его.
В типовом сценарии:
- данные в storage backend-е продолжают защищаться барьером Stronghold;
- root key и операции распечатывания могут быть защищены через
seal "pkcs11"и внешний HSM; - для части критичных внутренних данных может использоваться дополнительное шифрование через
seal wrap.
Таким образом, Stronghold использует несколько уровней защиты:
- встроенное шифрование хранилища через
AES-256-GCM; - защиту root key и auto-unseal через HSM;
- при необходимости дополнительную
seal wrap-обёртку для наиболее чувствительных значений.
Если HSM или внешний ключевой провайдер поддерживает ГОСТ-криптографию, этот подход сохраняется и для сценариев с ГОСТ-ключами: внешний модуль защищает ключевой материал, а Stronghold продолжает использовать его в PKI, Transit и связанных криптографических операциях.
Поддержка seal "pkcs11" относится к Standalone-установке Stronghold.
Подробнее:
Алгоритмы в PKI
Механизм секретов PKI отвечает за выпуск и подпись сертификатов X.509.
При настройке ролей и генерации ключей доступны следующие типы ключей:
rsa;ec;ed25519;gost3410;
Значение any может использоваться в ролях как служебный режим, если нужно разрешить работу с любым поддерживаемым типом ключа. Это не отдельный криптографический алгоритм.
Дополнительно для PKI можно задавать параметры размера ключа:
- для
rsa:2048,3072,4096; - для
ec:224,256,384,521; - для
ed25519параметрkey_bitsне используется; - для ГОСТ-параметров тип ключа уже определяет соответствующий набор параметров.
Для алгоритма подписи параметр signature_bits поддерживает:
256дляSHA-2-256;384дляSHA-2-384;512дляSHA-2-512.
Если signature_bits не задан, Stronghold подбирает значение автоматически:
- для
RSAиспользуетсяSHA-2-256; - для
NIST P-Curvesвыбирается хеш, соответствующий размеру кривой.
Практически это означает, что PKI в Stronghold покрывает типовые корпоративные сценарии с RSA и EC, современные сценарии с Ed25519, а также инфраструктуры, где требуется использование поддерживаемых ГОСТ-алгоритмов.
В частности, PKI поддерживает выпуск сертификатов с ключами ГОСТ 34.10, включая поддерживаемые наборы параметров 256 и 512 бит.
Подробнее о настройке PKI см. раздел Механизм секретов PKI.
Алгоритмы в Transit
Transit предоставляет криптографические операции как сервис: шифрование, дешифрование, подпись, проверку подписи, HMAC, хеширование и операции с data keys.
Основные типы ключей Transit
Симметричные алгоритмы шифрования:
aes128-gcm96;aes256-gcm96- значение по умолчанию;chacha20-poly1305;gost28147;gost341264;gost3412128.
Асимметричные алгоритмы подписи и, для части случаев, шифрования:
ecdsa-p256;ecdsa-p384;ecdsa-p521;ed25519;rsa-2048;rsa-3072;rsa-4096;gost3410.
Специализированные типы:
hmacдля HMAC-операций;managed_keyдля операций через внешний managed key, если он предварительно настроен.
Тип managed_key не является отдельным алгоритмом шифрования: в этом режиме Transit использует заранее настроенный внешний ключевой источник.
Если managed_key указывает на HSM или другой внешний провайдер с поддержкой ГОСТ-криптографии, Transit может использовать и внешние ГОСТ-ключи.
Какие операции доступны
aes128-gcm96,aes256-gcm96,chacha20-poly1305и поддерживаемые симметричныеGOST-типы подходят дляencrypt/decrypt;RSAподходит дляencrypt/decrypt, а такжеsign/verify;ECDSA,Ed25519и поддерживаемые асимметричныеGOST-типы используются дляsign/verify;- все типы ключей могут использоваться в HMAC-сценариях через отдельный HMAC-ключ, который Transit ведёт вместе с основным ключом;
- тип
hmacпредназначен только для HMAC-операций.
Для ГОСТ-сценариев это означает:
gost3410-*используется для операцийsign/verify;gost3412128иgost341264соответствуют симметричным алгоритмамГОСТ 34.12(КузнечикиМагма);gost28147покрывает сценарии сГОСТ 28147-89.
Для RSA в Transit используются:
OAEPдля шифрования и дешифрования;PSSдля подписи и проверки подписи;PKCS#1 v1.5для подписи и проверки подписи.
Для симметричных ключей поддерживаются производные ключи, а для некоторых типов - конвергентное шифрование. Для AES-GCM Stronghold рекомендует регулярную ротацию ключей в зависимости от нагрузки.
Подробнее о возможностях Transit см. раздел Механизм секретов Transit.
Практические рекомендации
- Для публичного и межсервисного API устанавливайте
tls_min_version = "tls12"или выше. - Не ограничивайте
tls_cipher_suitesбез явной причины: это может неожиданно повлиять на совместимость клиентов. - Рассматривайте HSM как дополнительный уровень защиты, а не как замену встроенному шифрованию Stronghold.
- Для PKI заранее стандартизируйте допустимые типы ключей и длины ключей на уровне ролей.
- Для Transit определяйте допустимые типы ключей отдельно по сценариям: симметричное шифрование, подпись, HMAC, BYOK, managed keys.