密钥托管是 KMS 的核心功能,提供密钥的全托管和保护能力,支持基于云原生接口的极简数据加密。
使用 CreateKey 接口创建托管用户主密钥时,用户可以配置密钥的种类,密钥种类基于如下维度划分:
密钥规格(KeySpec)
密钥用途(KeyUsage)
密钥保护级别(ProtectionLevel)
密钥来源(Origin)
密钥种类可以分为:
对称密钥
非对称密钥
对称加密
密钥种类 | 密钥规格 | 密钥用途 | 密钥保护级别 | 算法 | 密钥长度 | 数据加密模式 |
---|---|---|---|---|---|---|
对称密钥 | SYMMETRIC_256 | ENCRYPT_DECRYPT | SOFTWARE / HSM | AES | 256 | GCM |
对称密钥 | SYMMETRIC_128 | ENCRYPT_DECRYPT | HSM | SM4 | 128 | GCM |
非对称加密
密钥种类 | 密钥规格 | 密钥用途 | 密钥保护级别 | 算法 | 密钥长度 |
---|---|---|---|---|---|
非对称密钥 | RSA_2048 | ENCRYPT_DECRYPT、SIGN_VERIFY | SOFTWARE / HSM | RSA | 2048 |
非对称密钥 | RSA_3072 | ENCRYPT_DECRYPT、SIGN_VERIFY | SOFTWARE / HSM | RSA | 3072 |
非对称密钥 | RSA_4098 | ENCRYPT_DECRYPT、SIGN_VERIFY | SOFTWARE / HSM | RSA | 4098 |
非对称密钥 | EC_P256K | SIGN_VERIFY | SOFTWARE / HSM | ECC | 256 |
非对称密钥 | EC_P256 | SIGN_VERIFY | SOFTWARE / HSM | ECC | 256 |
非对称密钥 | EC_P384 | SIGN_VERIFY | SOFTWARE / HSM | ECC | 384 |
非对称密钥 | EC_P521 | SIGN_VERIFY | SOFTWARE / HSM | ECC | 521 |
非对称密钥 | EC_SM2 | ENCRYPT_DECRYPT、SIGN_VERIFY | HSM | SM2 | 256 |
加密上下文(EncryptionContext),作为额外的认证数据(Additional Authenticated Data,简称AAD),在 KMS 的对称密钥使用了分组密码算法的GCM模式时,作为可选参数传入。EncryptionContext 在加密时提供额外的完整性保护。
EncryptionContext 是一个JSON字符串,并且只能是Map<String, String>的形式。
有效的EncryptionContext示例:
{"key1":"value1"} {"name":"bob","path":"/path/to/plaintext.txt"}
接口:
支持加密上下文。
用户主密钥有5种状态:
启用(Enable)
禁用(Disable)
归档(Archived)
计划删除中(PendingDelete)
待导入(PendingImport)
密钥状态影响到API的调用和计量计费问题。
API调用
不同密钥状态和密钥来源可以执行的密钥相关的 API 操作如下表:
密钥状态 | 密钥来源 | 可执行API |
---|---|---|
启用 | 火山引擎KMS | * DescribeKeys * UpdateKey * GenerateDataKey * Encrypt * Decrypt * DisableKey * ScheduleKeyDeletion * ArchiveKey |
启用 | 外部 | * DescribeKeys * UpdateKey * GenerateDataKey * Encrypt * Decrypt * DisableKey * ScheduleKeyDeletion * ArchiveKey * GetParametersForImport * ImportKeyMaterial * DeleteKeyMaterial |
禁用 | 火山引擎KMS | * DescribeKeys * UpdateKey * EnableKey * ScheduleKeyDeletion * ArchiveKey |
禁用 | 外部 | * DescribeKeys * UpdateKey * EnableKey * ScheduleKeyDeletion * ArchiveKey * GetParametersForImport * ImportKeyMaterial * DeleteKeyMaterial |
归档 | 火山引擎KMS | * CancelArchiveKey * Decrypt * ScheduleKeyDeletion |
归档 | 外部 | * CancelArchiveKey * Decrypt * ScheduleKeyDeletion * GetParametersForImport * ImportKeyMaterial * DeleteKeyMaterial |
计划删除中 | 火山引擎KMS | * CancelKeyDeletion |
计划删除中 | 外部 | * CancelKeyDeletion * DeleteKeyMaterial |
待导入 | 外部 | * CancelKeyDeletion * GetParametersForImport * ImportKeyMaterial |
注:密钥环的相关操作不受密钥状态的影响
密钥归档指的是对用户主密钥的存档过程,在密钥存档后,该密钥只支持进行解密功能,而不支持加密功能。当用户主密钥处于归档状态时,该密钥的存储和 API 调用仍需计费。
用户可以在控制台或调用 KMS API 对已创建的用户主密钥进行启用/取消密钥归档设置。
出于用户对安全合规和使用成本的考虑,KMS 提供两种类型的密钥保护等级:
SOFTWARE(软件)
HSM(硬件)
SOFTWARE
SOFTWARE 保护级别的密钥,适用于对安全合规要求较低且预算有限的用户。具有速度快,价格低廉的特性。使用软件保护级别的用户主密钥,密码学运算都在通用的计算芯片中运行。
HSM
HSM 保护级别的密钥使用符合国家密码局标准的加密设备对密钥进行存储和密码学相关运算,具有如下特性:
安全性:
明文密钥材料只会在密码机的内部被处理,用于密码运算,而不会离开密码机硬件的安全边界(注:密文密钥材料会出密码机进行存储,以提高可用性)
密钥材料的产生基于高系统熵值为种子的随机数生成算法,保护密钥不被攻击者恢复或者预判。
易用性:
可用性:
用户创建托管用户主密钥时可指定密钥来源: