You need to enable JavaScript to run this app.
导航

密钥托管

最近更新时间2024.02.26 15:46:03

首次发布时间2021.11.24 19:45:10

密钥托管是 KMS 的核心功能,提供密钥的全托管和保护能力,支持基于云原生接口的极简数据加密。

密钥种类

使用 CreateKey 接口创建托管用户主密钥时,用户可以配置密钥的种类,密钥种类基于如下维度划分:

  • 密钥规格(KeySpec)

  • 密钥用途(KeyUsage)

  • 密钥保护级别(ProtectionLevel)

  • 密钥来源(Origin)

密钥种类可以分为:

  • 对称密钥

  • 非对称密钥

对称加密

密钥种类密钥规格密钥用途密钥保护级别算法密钥长度数据加密模式
对称密钥SYMMETRIC_256ENCRYPT_DECRYPTSOFTWARE / HSMAES256GCM
对称密钥SYMMETRIC_128ENCRYPT_DECRYPTHSMSM4128GCM

非对称加密

密钥种类密钥规格密钥用途密钥保护级别算法密钥长度
非对称密钥RSA_2048ENCRYPT_DECRYPT、SIGN_VERIFYSOFTWARE / HSMRSA2048
非对称密钥RSA_3072ENCRYPT_DECRYPT、SIGN_VERIFYSOFTWARE / HSMRSA3072
非对称密钥RSA_4098ENCRYPT_DECRYPT、SIGN_VERIFYSOFTWARE / HSMRSA4098
非对称密钥EC_P256KSIGN_VERIFYSOFTWARE / HSMECC256
非对称密钥EC_P256SIGN_VERIFYSOFTWARE / HSMECC256
非对称密钥EC_P384SIGN_VERIFYSOFTWARE / HSMECC384
非对称密钥EC_P521SIGN_VERIFYSOFTWARE / HSMECC521
非对称密钥EC_SM2ENCRYPT_DECRYPT、SIGN_VERIFYHSMSM2256

加密上下文

加密上下文(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 保护级别的密钥使用符合国家密码局标准的加密设备对密钥进行存储和密码学相关运算,具有如下特性:

  • 安全性:

    • 明文密钥材料只会在密码机的内部被处理,用于密码运算,而不会离开密码机硬件的安全边界(注:密文密钥材料会出密码机进行存储,以提高可用性)

    • 密钥材料的产生基于高系统熵值为种子的随机数生成算法,保护密钥不被攻击者恢复或者预判。

  • 易用性:

    • 硬件加密机完全托管,用户无需关注加密机的采购、部署、运维等流程,极大节省成本。
  • 可用性:

    • 硬件加密机集群化部署,做到高可用、弹性伸缩
    • 密文密钥存储3副本冗余,最大程度保证用户密钥存储的高可用。

密钥来源

用户创建托管用户主密钥时可指定密钥来源:

  • 火山引擎KMS(默认):指用户主密钥的密钥材料由火山引擎KMS派生
  • 外部:指用户主密钥的密钥材料由用户通过BYOK(Bring Your Own Key)能力安全的导入到火山引擎KMS