密钥服务概述

密钥服务是KMS的核心组件,支持管理软件密钥、硬件密钥、默认密钥,提供密钥的全生命周期管理和安全存储能力,同时支持基于云原生接口的极简数据加密和数字签名。本文介绍KMS提供的密钥管理类型及密码运算API。

密钥管理类型

KMS提供默认密钥、软件密钥和硬件密钥、外部密钥四种密钥管理类型,以满足不同业务场景、安全与合规要求。具体内容如下表所示。

使用默认密钥无需购买KMS实例,使用软件密钥、硬件密钥、外部密钥,需要购买KMS实例。关于实例功能间的区别,请参见产品选型

密钥管理类型

应用场景

功能描述

算法类型

密钥规格

说明

默认密钥

被云产品集成用于服务端加密。更多信息,请参见云产品集成KMS加密概述

仅支持数据加密解密。

AES

Aliyun_AES_256

默认密钥包含:

  • 服务密钥:由云产品代您创建和托管。

  • 主密钥:每个地域可创建一个,由您自主管理生命周期,密钥材料可由KMS生成也可以由您自主导入。

软件密钥

  • 被自建应用集成用于构建应用层密码技术方案。

    例如:创建AES算法的主密钥,用于自定义数据加密和解密方案;创建RSA算法的主密钥,用于数字签名计算和验证。

  • 被云产品集成用于服务端加密。更多信息,请参见云产品集成KMS加密概述

支持数据加密解密和数字签名。

AES、RSA、ECC

  • 对称密钥规格:Aliyun_AES_256

  • 非对称密钥规格:RSA_2048、RSA_3072、EC_P256、EC_P256K

更多信息,请参见密钥管理类型和密钥规格

由您在KMS创建和管理生命周期,密钥材料由KMS生成。

说明

暂不支持您自主导入密钥材料。

硬件密钥

  • 被自建应用集成用于构建应用层密码技术方案。

    例如:创建AES/SM4算法的主密钥,用于自定义数据加密和解密方案;创建RSA/ECC/SM2算法的主密钥,用于数字签名计算和验证。

  • 被云产品集成用于服务端加密。更多信息,请参见云产品集成KMS加密概述

支持数据加密解密和数字签名。

AES、RSA、ECC、SM4

  • 对称密钥规格:Aliyun_AES_256、Aliyun_AES_192、Aliyun_AES_128、Aliyun_SM4

  • 非对称密钥规格:RSA_2048、RSA_3072、RSA_4096、EC_P256、EC_P256K、EC_SM2

更多信息,请参见密钥管理类型和密钥规格

由您在KMS创建和管理生命周期,密钥材料可由KMS生成,也可以由您自主导入。

重要

使用硬件密钥管理功能前,您需要购买加密服务提供的密码机实例并完成密码机集群的相关配置。具体操作,请参见配置KMS硬件密钥管理实例的密码机集群密码机实例可满足GM/T 0028 第二级的合规性。

外部密钥

  • 被自建应用集成用于构建应用层密码技术方案。

    例如:创建AES/SM4算法的主密钥,用于自定义数据加密和解密方案。

  • 被云产品集成用于服务端加密。更多信息,请参见云产品集成KMS加密概述

支持数据加密解密。

AES、SM4

Aliyun_AES_256、Aliyun_SM4

密钥由您在XKI管理服务中创建,然后导入到KMS中。在XKI中创建的密钥由您自行管理生命周期。

密码运算API

KMS提供了云原生的密码运算API,与传统密码机或密码软件库的API相比更简单易用。同时,KMS提供了多种SDK以加速开发过程。关于应用程序如何集成主密钥进行数据加密、解密等密码方案,请参见SDK参考

使用KMS提供的密钥接口前,请关注以下信息:

  • AdvanceEncrypt、AdvanceDecrypt、AdvanceGenerateDataKey和GenerateDataKey:KMS密钥应为对称密钥。

  • Encrypt和Decrypt:KMS密钥可以为对称密钥,也可以为非对称密钥。

  • Sign、Verify和GetPublicKey:KMS密钥应为非对称密钥。

API

描述

AdvanceEncrypt

用于将明文数据通过KMS密钥加密为密文。

重要
  • 如果密钥开启了自动轮转,请您使用AdvanceEncrypt、AdvanceDecrypt和AdvanceGenerateDataKey接口,以避免轮转功能不生效。关于密钥轮转的相关内容,请参见密钥轮转

  • 您需要存储密文(CiphertextBlob)和认证数据(Aad),然后使用AdvanceDecrypt解密。

AdvanceDecrypt

将使用KMS密钥加密的密文解密为明文。

AdvanceGenerateDataKey

用于生成数据密钥,对数据按照KMS信封加密方式加密。

重要

您需要存储密文(CiphertextBlob)和认证数据(Aad),然后使用AdvanceDecrypt解密。

Encrypt

用于将明文数据通过KMS密钥加密为密文。

重要

您需要存储密钥的全局唯一标识符(KeyId)、密文(CiphertextBlob)、加密算法(Algorithm)、初始向量(Iv)、填充模式(PaddingMode)和认证数据(Aad),然后使用Decrypt或AdvanceDecrypt解密。

Decrypt

将使用KMS密钥加密的密文解密为明文。

GenerateDataKey

用于生成数据密钥,对数据按照KMS信封加密方式加密。

Sign

使用非对称密钥进行签名。

重要

您可以通过Verify接口验证签名,也可获取公钥(GetPublicKey)到本地自行验证签名。

Verify

使用非对称密钥进行验签。

GetPublicKey

获取指定非对称密钥的公钥。