重新包装钥匙
通过使用 IBM® Key ProtectAPI.
当您 旋转Key Protect中的根密钥、 新的加密密钥材料可用于保护与根密钥相关联的数据加密密钥(DEK)。 加密密钥(DEK)。 使用重新封装 应用程序接口,你可以重新加密或重新封装你的 DEK,而不会暴露其明文形式的密钥。 明文形式。
了解信封加密如何帮助您控制云中静态数据的安全 的安全性,请参阅 使用信封加密保护数据。
使用应用程序接口重包密钥
您可以使用在 * 中管理的根密钥重新加密指定的数据加密密钥(DEK) 中管理Key Protect根密钥重新加密指定的数据加密密钥(DEK),而不会暴露 明文形式的数据加密密钥。
重包按键的工作原理是将 unwrap
和 wrap
组合起来调用服务。 For example, you can emulate a rewrap
operation by first calling the unwrap
API to access a DEK, and then calling the wrap
API to reencrypt
the DEK by using the newest root key material.
旋转服务中的根密钥后、 重新封装与根密钥相关联的数据加密密钥,方法是在根密钥上输入
POST
call to the following endpoint.
https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap
-
复制用于执行初始封装请求的已旋转根密钥的 ID。 请求。
您可以通过
GET api/v2/keys
请求或 查看Key Protect中的密钥。 图形用户界面。 -
复制最近一次打包请求时返回的
ciphertext
值。 -
使用最新的根密钥材料重新封装密钥,方法如下
curl
command.$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap" \ -H "accept: application/vnd.ibm.kms.key_action+json" \ -H "authorization: Bearer <IAM_token>" \ -H "bluemix-instance: <instance_ID>" \ -H "content-type: application/vnd.ibm.kms.key_action+json" \ -H "x-kms-key-ring: <key_ring_ID>" \ -H "correlation-id: <correlation_ID>" \ -d '{ "ciphertext": "<encrypted_data_key>", "aad": [ "<additional_data>", "<additional_data>" ] }'
根据下表替换示例请求中的变量。
变量 | 描述 |
---|---|
区域 | 需要。 地区缩写,如 us-south 或 eu-gb ,表示您的Key Protect实例所在的地理区域。For more information, see 区域服务终端. |
keyID_or_alias | 需要。 用于初始封装请求的根密钥的唯一标识符或别名。 |
IAM_token | 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。 For more information, see 读取访问令牌. |
instance_ID | 需要。 指定给您的 Key Protect 服务实例的唯一标识。 For more information, see 检索实例 ID. |
键环 ID | 可选。 钥匙所属钥匙圈的唯一标识符。 如果未指定,Key Protect将在与指定实例关联的每个钥匙圈中搜索钥匙。 建议指定钥匙圈 ID,以优化请求。 Note: The key ring ID of keys that are created without an x-kms-key-ring header is: default.For more information, see 分组键. |
correlation_ID | 用于跟踪和关联事务的唯一标识。 |
加密数据密钥 | 需要。 原始打包操作返回的密文值。 |
additional_data | 可选用于进一步确保密钥安全的附加验证数据 (AAD)。 每个字符串可含有最多 255 个字符。 如果您为首次缠绕调用提供了 AAD,则必须在随后的解缠绕或重缠绕调用中指定相同的 AAD Important: The Key Protect service does not save additional authentication data. 如果您提供了 AAD,请将数据保存到安全位置,以确保在随后的拆包或重包请求中可以访问和提供相同的 AAD。 |
新封装的数据加密密钥,原始密钥版本 keyVersion
) 与所提供的密文和最新密钥版本相关联的
rewrappedKeyVersion
) 关联的最新密钥版本将在 响应实体内容。 以下 JSON 对象显示返回值示例。
{
"ciphertext": "eyJjaX ... h0Ijoi ... c1ZCJ9",
"keyVersion": {
"id": "02fd6835-6001-4482-a892-13bd2085f75d"
},
"rewrappedKeyVersion": {
"id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
}
}
针对未来包络加密操作存储并使用新的 ciphertext
值,从而通过最新根密钥保护数据。
可选验证
Verify that the key was successfully rewrapped by base64 decoding the ciphertext
value.
$ echo <ciphertext> | base64 --decode
将 <ciphertext>
替换为上一步返回的base64编码值。 替换为 下面的 JSON 对象显示了一个 CLI 输出示例。
{
"ciphertext": "mIzRrwZAA8+WqRckG6gt1ji8HlEEJPSiV+TRBSR4GVr+FlAZlC5KvRriRF0=",
"iv": "lbwxXlAW2DS7+5jGz5Y1Kg==",
"version": "4.0.0",
"handle": "8e309bae-b3ec-4270-9b87-89f8697fe54f"
}