使用公有密钥执行离线操作
在非对称 KMS 密钥中,私有密钥是在 AWS KMS 中创建的,它永远不会让 AWS KMS 处于未加密状态。要使用私有密钥,必须调用 AWS KMS。您可以通过调用 AWS KMS API 操作在 AWS KMS 内使用公有密钥。或者,可以下载公有密钥并共享以在 AWS KMS 外部使用该密钥。
可以共享公有密钥,让其他人在 AWS KMS 外部加密数据,但您只能用私有密钥解密数据。或者,允许其他人在 AWS KMS 外部验证您使用私有密钥生成的数字签名。或者,与同事共享您的公有密钥以派生共享密钥。
在 AWS KMS 内部使用非对称 KMS 密钥中的公有密钥时,您将从每个 AWS KMS 操作中包含的身份验证、授权和日志记录中获益。您还可以降低对无法解密的数据进行加密的风险。这些功能在 AWS KMS 外部无效。有关更多信息,请参阅 下载公有密钥的特殊注意事项。
提示
正在寻找数据密钥或 SSH 密钥? 本主题介绍如何管理 AWS Key Management Service 中的非对称密钥,私有密钥在其中不可导出。有关私有密钥在其中由对称加密 KMS 密钥保护的可导出数据密钥对,请参阅 GenerateDataKeyPair。有关下载与 Amazon EC2 实例关联的公有密钥的帮助,请参阅《Amazon EC2 用户指南》和《Amazon EC2 用户指南》中的检索公有密钥。
下载公有密钥的特殊注意事项
为保护 KMS 密钥,AWS KMS 提供了访问控制、身份验证加密和每个操作的详细日志。AWS KMS 还允许您暂时或永久地阻止使用 KMS 密钥。最后,AWS KMS 操作旨在最大限度降低对无法解密的数据进行加密的风险。在 AWS KMS 外部使用下载的公有密钥时,这些功能不可用。
- 授权
-
在 AWS KMS 内控制对 KMS 密钥访问的密钥政策和 IAM policy 对在 AWS 外部执行的操作没有影响。任何可获得公有密钥的用户都可以在 AWS KMS 外部使用该公有密钥,即使这些用户无权使用 KMS 密钥加密数据或验证签名。
- 密钥用法限制
-
密钥用法限制在 AWS KMS 之外是无效的。如果您使用
KeyUsage为SIGN_VERIFY的 KMS 密钥调用 Encrypt 操作,则 AWS KMS 操作将失败。但是,如果您在 AWS KMS 外部使用SIGN_VERIFY或KEY_AGREEMENT为KeyUsage的 KMS 密钥的公有密钥加密数据,数据将无法解密。 - 算法限制
-
对 AWS KMS 支持的加密算法和签名算法的限制,在 AWS KMS 之外是无效的。如果在 AWS KMS 外部使用 KMS 密钥的公有密钥加密数据,并使用 AWS KMS 不支持的加密算法,则数据将无法解密。
- 禁用和删除 KMS 密钥
-
为阻止在 AWS KMS 内的加密操作中使用 KMS 密钥所能采取的措施,不会阻止任何人在 AWS KMS 外部使用公有密钥。例如,禁用 KMS 密钥、调度删除 KMS 密钥、删除 KMS 密钥或删除 KMS 密钥的密钥材料,对 AWS KMS 外部的公有密钥没有影响。如果删除非对称 KMS 密钥或者删除或丢失其密钥材料,那么在 AWS KMS 外部使用公有密钥加密的数据将无法恢复。
- 日志记录
-
记录每个 AWS CloudTrail 操作(包括请求、响应、日期、时间和授权用户)的 AWS KMS 日志,不会记录 AWS KMS 外部公有密钥的使用情况。
- 使用 SM2 密钥对进行离线验证(仅限中国区域)
-
要使用 SM2 公钥验证 AWS KMS 外部的签名,您必须指定区分 ID。默认情况下,AWS KMS 使用
1234567812345678作为区分 ID。有关更多信息,请参阅使用 SM2 密钥对进行离线验证(仅限中国区域)。