Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эффективное управление ключами имеет решающее значение для оптимизации производительности, безопасности и эффективности облачного устройства HSM Azure. В этой статье даны рекомендации и лучшие практики по взаимодействию с ограничениями на хранение ключей, безопасности упаковки ключей, атрибутам ключей и стратегиям кэширования.
Управление ограничением хранилища ключей
Аппаратные модули безопасности (HSM) имеют ограничения на максимальное количество маркеров и ключей сеансов, которые могут храниться в один раз. Дополнительные сведения об этих ограничениях см. в ограничениях службы Azure Cloud HSM.
Чтобы избежать превышения ограничений службы Azure Cloud HSM, рекомендуется использовать одну или несколько следующих стратегий для эффективного управления ключами:
- Смена клавиш: часто сменяйте ключи, чтобы убедиться, что старые ключи заменяются, а пространство освобождается для новых. Частая ротация помогает удерживать HSM в пределах ограничений хранилища, обеспечивая безопасность.
- Иерархия ключей. Используйте иерархию ключей, в которой используются первичные ключи для шифрования других ключей. Эта иерархия уменьшает количество ключей, которые должны храниться непосредственно в HSM.
- Общий доступ к ключам и повторное использование. Для приложений с несколькими сеансами или токенами рекомендуется использовать ключи общего доступа или повторно использовать их, чтобы уменьшить общее число сохраненных.
- Удаление ключей. После того, как ключ больше не нужен (например, после окончания сеанса), убедитесь, что он безопасно удаляется, чтобы освободить место для новых ключей.
Примечание.
Подождите 24 часа после создания ключа, чтобы убедиться, что синхронизация и резервные копии в развертывании Azure Cloud HSM завершены.
Управление обертыванием ключей
Атрибут EXTRACTABLE в Azure Cloud HSM используется для маркировки ключей как извлекаемых или неизвлекаемых. По умолчанию ключи HSM задаются как извлекаемые. Вы можете экспортировать извлекаемые ключи из HSM через оболочку ключей, которая шифрует ключи. Затем ключи необходимо распаковать с использованием того же ключа обертки перед их использованием.
Ключи, которые нельзя извлекать, не могут быть экспортированы из Облачного HSM Azure ни при каких условиях. После того как вы установили ключи как неизвлекаемые, невозможно сделать их извлекаемыми. Важно тщательно рассмотреть необходимость извлечения ключей и задать соответствующий атрибут ключа.
Если приложение требует упаковки ключей, рекомендуется использовать оболочку доверенных ключей. Этот подход ограничивает пользователей HSM шифровать и расшифровывать только те ключи, которые администратор явно обозначил как доверенные.
EXTRACTABLE=0: ключи, созданные с атрибутомEXTRACTABLEустановленным на0, не могут быть экспортированы, за исключением маскированных объектов. Они идеально подходят для ключей, которые не следует извлекать из HSM.WRAP_WITH_TRUSTED=1. По умолчанию извлекаемые ключи, созданные с помощью пакета SDK azure Cloud HSM, используют оболочку доверенных ключей. Однако спецификация PKCS#11 по умолчанию устанавливаетWRAP_WITH_TRUSTEDравнымCK_FALSE (0). Без упаковки доверенных ключей пользователь криптографии может экспортировать частный материал ключа без авторизации. Любой пользователь, имеющий доступ к клиентскому приложению и использующий эти ключи, может экспортировать их в виде обычного текста.
Поддержка ключевых атрибутов для поставщиков azure Cloud HSM
| Поставщик Azure Cloud HSM | Атрибуты по умолчанию для частных и симметричного ключей | Поддерживает EXTRACTABLE=0 | Поддерживает настройку WRAP_WITH_TRUSTED в поставщике | Значение WRAP_WITH_TRUSTED по умолчанию |
|---|---|---|---|---|
azcloudhsm_util |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
Да | Да |
1 (0 можно задать с помощью параметров) |
| PKCS#11 |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
Да | Да |
0 (указано в спецификации PKCS#11, но его можно задать 1 в API) |
| CNG/KSP |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
нет | нет | 1 |
| Подсистема OpenSSL |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
нет | нет | 1 |
| JCE |
!EXTRACTABLE, !PERSISTANT, !WRAP_WITH_TRUSTED |
Да | нет | 1 |
Ключи, создаваемые с помощью API шифрования: поставщик следующего поколения (CNG) всегда задан как EXTRACTABLE. Вы можете использовать CavImportKey.exe инструмент для импорта ключей из других инструментов Azure Cloud HSM в поставщик CNG с помощью их идентификаторов ключей. Этот импорт создает ключ в поставщике хранилища ключей (KSP) из существующих дескрипторов ключей.
Для центров сертификации, использующих CNG или KSP в качестве поставщика, все ключи, созданные в поставщике CNG, по-прежнему помечены как извлекаемые. Если ключ помечается как TRUSTED на HSM (например, ключ шифрования ключей, созданный пользователем), он может использоваться для извлечения открытого текста закрытого ключа этих ключей, в том числе и после WRAP_WITH_TRUSTED изменения.
В таких случаях рекомендуется использовать azcloudhsm_util для создания ключа, если вы не хотите, чтобы он был помечен как EXTRACTABLE. Мы рекомендуем использовать getAttribute, чтобы убедиться, что созданные ключи имеют нужные атрибуты.
Использование ключевых атрибутов для управления разрешениями ключа
Используйте ключевые атрибуты для управления возможностями ключей, такими как разрешения. При создании ключа используйте ключевые атрибуты, чтобы указать разрешения, разрешающие или ограничивающие определенные операции для этого ключа. Мы советуем создавать ключи только с необходимыми атрибутами для их целевой цели.
Например, ключ расширенного шифрования (AES), используемый для шифрования, не должен иметь возможность упаковки ключей за пределами HSM. Дополнительные сведения об атрибутах пакета SDK azure Cloud HSM см. в руководствах по интеграции.
Оптимизация задержки путем кэширования ключевых объектов
Чтобы уменьшить задержку, рассмотрите возможность кэширования ключевых объектов по возможности. При поиске ключей выполняется запрос к каждому HSM в вашем кластере Azure Cloud HSM. Эта операция является дорогостоящей и не масштабируется эффективно. Метод поиска ключей зависит от поставщика:
- Для PKCS#11 поиск ключей использует API
C_FindObjects. - Для расширения Java Cryptography Extension (JCE) ключи ищутся с использованием значения
KeyStore.
Для оптимальной производительности рекомендуется использовать команды поиска ключей (например findKey , и key list) только один раз во время запуска приложения. Сохраните возвращенный объект ключа в памяти приложения. Если этот ключевой объект понадобится позже, получите его из кэша вместо запроса к нему с каждой операцией. Запрос к нему вызывает значительные затраты на производительность.