共用方式為

将受 HSM 保护的密钥导入托管 HSM (BYOK)

Azure Key Vault托管 HSM 支持导入在本地硬件安全模块(HSM)中生成的密钥。 密钥永远不会离开 HSM 保护边界。 此方案通常称为自带密钥(BYOK)。 托管 HSM 使用 Marvell LiquidSecurity HSM 适配器(FIPS 140-3 级别 3 验证)来保护密钥。

本文中的信息有助于规划、生成并传输自己的受 HSM 保护的密钥,以便与托管 HSM 一起使用。

注意

此导入方法仅适用于支持的 HSM

有关详细信息,以及有关开始使用托管 HSM 的教程,请参阅 什么是托管 HSM?

概述

这里是该过程的概述。 本文后面将介绍要完成的具体步骤。

  • 在托管 HSM 中,生成密钥(称为 Key Exchange 密钥(KEK))。 KEK 必须是仅具有 import 密钥操作的 RSA-HSM 密钥。
  • 以 .pem 文件形式下载 KEK 公钥。
  • 将 KEK 公钥传输到连接到本地 HSM 的脱机计算机。
  • 在脱机计算机中,使用 HSM 供应商提供的 BYOK 工具来创建 BYOK 文件。
  • 目标密钥通过 KEK 进行加密,且在传输到托管 HSM 之前一直处于加密状态。 只有加密版本的密钥会离开本地 HSM。
  • 在托管 HSM 内生成的 KEK 不可导出。 HSM 会执行一项规则,确保在托管 HSM 之外不存在 KEK 的明文版本。
  • KEK 必须位于将导入目标密钥的同一托管 HSM 中。
  • 将 BYOK 文件上传到托管 HSM 时,托管 HSM 使用 KEK 私钥解密目标密钥材料并将其导入为 HSM 密钥。 此操作完全在 HSM 内发生。 目标密钥始终保留在 HSM 保护边界内。

先决条件

若要使用本文中的Azure CLI命令,必须具有以下项:

若要使用 CLI 登录到Azure,请键入:

az login

有关通过 CLI 的身份验证选项的详细信息,请参阅 sign with Azure CLI

支持的 HSM

供应商名称 供应商类型 支持的 HSM 模型 详细信息
Cryptomathic ISV(企业密钥管理系统) 多个 HSM 品牌和型号,包括
  • nCipher
  • Thales
  • Utimaco
有关详细信息,请参阅 Cryptomathic 站点
委托 制造商,
HSM 服务化
  • nShield 系列 HSM
  • nShield 即服务
nCipher 新款 BYOK 工具和文档
Fortanix 制造商,
HSM 服务化
  • 自防御密钥管理服务 (SDKMS)
  • Equinix SmartKey
将 SDKMS 密钥导出到 BYOK 云提供商 - Azure Key Vault
IBM 制造商 IBM 476x、CryptoExpress IBM Enterprise Key Management Foundation
Marvell 制造商 所有具有以下固件版本的 LiquidSecurity HSM
  • 固件版本 2.0.4 或更高版本
  • 固件版本 3.2 或更高版本
Marvell BYOK 工具和文档
Securosys SA 制造商,HSM即服务 Primus HSM 系列,Securosys Clouds HSM Primus BYOK 工具和文档
StorMagic ISV(企业密钥管理系统) 多个 HSM 品牌和型号,包括
  • Utimaco
  • Thales
  • nCipher
请参阅 StorMagic 站点以了解详细信息
SvKMS 和 Azure Key Vault BYOK
Thales 制造商
  • 固件版本为 7.3 或更高版本的 Luna HSM 7 系列
Luna BYOK 工具和文档
Utimaco 制造商,
HSM 服务化
u.trust Anchor, 加密服务器 Utimaco BYOK 工具和集成指南

支持的密钥类型

键名 密钥类型 密钥大小/曲线 来源 说明
密钥交换密钥(KEK) RSA-HSM 2,048 位比特
3,072 位
4,096 位
托管的 HSM 在托管 HSM 中生成的由 HSM 支持的 RSA 密钥对
目标密钥
RSA-HSM 2,048 位比特
3,072 位
4,096 位
供应商 HSM 要传输到托管 HSM 的密钥
EC-HSM P-256
P-384
P-521
供应商 HSM 要传输到托管 HSM 的密钥
对称密钥 (oct-hsm) 128 位
192 位
256 位
供应商 HSM 要传输到托管 HSM 的密钥

生成密钥并将其传输到托管 HSM

步骤 1:生成 KEK

KEK 是在托管 HSM 中生成的 RSA 密钥。 使用 KEK 对要导入的密钥( 目标 密钥)进行加密。

KEK 必须满足以下条件:

  • RSA-HSM 密钥(2,048 位、3,072 位或 4,096 位)
  • 在要导入目标密钥的同一托管 HSM 中生成
  • 在允许的关键操作设置为 import 的情况下创建

注意

KEK 必须import 是唯一允许的密钥操作。 import 与所有其他按键操作是互斥的。

使用 az keyvault key create 命令创建将密钥操作设置为 import 的 KEK。 记录从以下命令返回的密钥标识符 (kid)。 (你将在 `` 中使用< 第3步 的值。)

az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --hsm-name <hsm-name>

步骤 2:下载 KEK 公钥

使用 az keyvault key download 将 KEK 公钥下载到 .pem 文件。 导入的目标密钥是使用 KEK 公钥进行加密的。

az keyvault key download --name KEKforBYOK --hsm-name <hsm-name> --file KEKforBYOK.publickey.pem

KEKforBYOK.publickey.pem 文件传输到脱机计算机。 在下一步中需要此文件。

步骤 3:生成并准备要传输的密钥

若要下载并安装 BYOK 工具,请参阅 HSM 供应商的文档。 按照 HSM 供应商的说明生成目标密钥,然后创建密钥传输包(BYOK 文件)。 BYOK 工具使用kid步骤 1KEKforBYOK.publickey.pem步骤 2 中下载的文件在 BYOK 文件中生成加密的目标密钥。

将 BYOK 文件传输到连接的计算机。

注意

不支持导入 RSA 1,024 位密钥。 支持导入 EC-HSM P256K 密钥。

已知问题:仅固件版本 7.4.0 或更高版本支持从 Luna HSM 导入 RSA 4K 目标密钥。

步骤 4:将密钥传输到托管 HSM

若要完成密钥导入,请将密钥传输包(BYOK 文件)从断开连接的计算机传输到连接到 Internet 的计算机。 使用 az keyvault key import 命令将 BYOK 文件上传到托管 HSM。

az keyvault key import --hsm-name <hsm-name> --name <key-name> --byok-file KeyTransferPackage-<key-name>.byok

如果上传成功,Azure CLI显示导入密钥的属性。

后续步骤

现在可以在托管 HSM 中使用此受 HSM 保护的密钥。 有关详细信息,请参阅此价格和功能比较