操作类

2025-01-07 07:28:59

如何使用密钥实现数据加解密?

KMS提供了REST(Representational State Transfer)风格API,支持通过HTTPS请求调用。用户可使用提供的API实现加解密运算等操作。下面以使用用户主密钥进行数据加解密为例介绍实现过程:

加密流程(以加密证书为例):

1.通过KMS控制台或者调用CreateKey接口,创建一个用户主密钥(CMK);

2.调用KMS服务的Encrypt接口,将明文证书加密为密文证书;

3.将密文证书部署在服务器上;

4.当服务器启动需要使用证书时,调用KMS服务的Decrypt接口将密文证书解密为明文证书。

 

如何导入外部自带密钥?

创建密钥后,首先进入密钥详情页获取导入主密钥材料的参数,参数包括加密公钥及导入令牌,用户使用获取到的公钥加密自带密钥材料,然后在控制台密钥详情页,根据页面提示上传自带密钥材料即可。

从KMS获取到的导入令牌与加密密钥材料的公钥具有绑定关系,一个令牌只能为其生成时指定的主密钥导入密钥材料。导入令牌的有效期为24小时,在有效期内可以重复使用,失效以后需要获取新的导入令牌和加密公钥。

 

如何删除密钥?

KMS不支持立即删除,仅支持计划删除,即用户需设置预删除周期(自定义7~30天),系统会在到期时自动删除密钥,预删除期间密钥仍托管至系统中,但无法被调用实现加解密等相关功能。

设置密钥计划删除后,密钥将不再产生费用。若您在预删除期间发现密钥仍需继续使用,则可以选择取消计划删除,使密钥重新变为可用。

 

为什么KMS不支持立即删除密钥?

由于密钥删除后不可恢复,一旦删除密钥,所有使用该密钥加密的数据均无法解密,因此删除密钥的操作需要非常谨慎,KMS通过计划删除的机制,即执行计划删除操作后,密钥状态变为待删除,密钥不会立即删除,系统会根据用户设置的预删除周期推迟删除密钥。到达执行时间点,系统才会真正删除密钥,在此之前用户均可以取消删除计划。KMS通过这种方式来减少用户误操作所带来的损失。

处于待删除状态的密钥不可用,无法用于加解密、产生数据密钥等。

如果您不再使用密钥,推荐您先禁用密钥,确保不影响您的业务后再通过计划删除密钥来进行删除。为避免误删,您可以开启删除保护功能。

 

KMS是否支持国密算法?

支持。KMS支持创建SM2、SM4类型的密钥,适用于数据加解密、签名验签等场景。

密码算法大类

密码算法子类

保护级别

是否支持加解密

是否支持签名验签

对称密钥

AES_256

Software

HSM

支持

不支持

非对称密钥

RSA_2048

Software

HSM

支持

支持

 

 

软件保护级别和硬件保护级别的区别是什么?

软件保护级别的密钥通过软件模块进行保护,其根密钥通过公钥加密形成密文存储在软件文件系统中;而用于解密根密钥密文的私钥,通过对称加密形成密文存储在文件系统中的不同位置;同时对称密钥也存储在不同位置,进而增加系统根密钥的安全性;

硬件保护级别的密钥通过专用硬件保护密钥,硬件根密钥需要存储密码机的内部密钥索引,通过索引确认根密钥;所有涉及根密钥使用的过程均在密码机内部完成,包括加密解密等。

 

密钥自动轮转周期的可设置范围是什么?

对称密钥支持设置自动轮转周期,周期最短为7天,最长为730天(2年)。

对称密钥支持设置自动轮转,系统根据自动轮转周期自动生成新的密钥版本,并将最新的版本设置为主版本,原密钥版本作为非主版本保存在KMS中,KMS不会删除或禁用非主版本,它们需要被用作解密数据。

 

非对称密钥是否支持自动轮转?

非对称密钥不支持设置自动轮转,可以手动创建新的版本。

由于公私钥使用场景的特殊性,KMS不支持对非对称的用户主密钥进行自动轮转。可在指定用户主密钥中人工创建新的密钥版本,生成全新的一对公钥和私钥。

除此之外,和对称类型的用户主密钥不同,非对称的用于主密钥没有主版本(PrimaryKeyVersion)的概念,因此使用非对称密码运算的接口除需指定用户主密钥标志符(或别名)之外,还需指定密钥版本。

 

什么情况下需要导入外部密钥?

当用户拥有自己的密钥材料,需要继续使用该密钥材料实现数据加解密,比如用户需要将本地加密数据迁移到云上时,云上云下共用同一个密钥材料,此时可以将密钥材料导入至KMS中进行托管,便于后续使用。

当您选择密钥材料来源为外部,使用您自己导入的密钥材料时,需要注意以下几点:

Ÿ   请确保您使用了符合安全要求的随机源生成密钥材料;

Ÿ   在使用导入密钥时,需要对自己密钥材料的可靠性负责;

Ÿ   请保存密钥材料的原始备份,以便在意外删除密钥材料时,能及时将备份的密钥材料重新导入KMS。

 

什么类型的密钥支持导入外部密钥材料?

当前AES_256类型的对称密钥,支持导入外部密钥材料。

您可通过控制台创建密钥,选择AES_256类型的对称密钥后,密钥材料来源选项选择外部,并勾选“我了解使用外部密钥材料的方法和意义”,点击确定即可完成密钥创建;

密钥创建成功后,您需要进入密钥详情页,进行密钥材料导入操作。导入密钥材料前需要先获取导入材料参数,包括加密公钥、导入令牌,具体操作步骤可参考用户指南中的相关章节。

 

外部导入的密钥材料是否支持自动轮转?

不支持。外部导入的密钥材料不支持自动轮转,无密钥版本概念。

导入密钥材料时,可以设置可以设置密钥材料过期时间,密钥材料过期后,KMS将自动删除密钥材料,但该主密钥及其元数据仍然保留。

外部导入的密钥材料支持手动删除,但该主密钥及其元数据仍然保留。

 

当密钥材料被误删或已经过期导致密钥不可用,如何处理使密钥恢复可用?

密钥材料被删除或过期时,可以再次导入相同的密钥材料,成功后密钥将恢复可用。您需要自行备份密钥材料,以便密钥材料失效或误删除时进行重新导入。

用户主密钥CMK与密钥材料具有关联性,当您将密钥材料导入某个CMK时,该CMK与该密钥材料永久关联,不能将其他密钥材料导入该CMK中,即便密钥材料已经过期或者被删除。

 

当用户主密钥的密钥材料删除或过期后,是否可以导入其他的密钥材料到该主密钥中?

不可以。用户主密钥包含密钥元数据(密钥ID、密钥别名、描述、密钥状态与创建日期)和用于加解密数据的密钥材料。

将密钥材料成功导入主密钥后,该主密钥与密钥材料永久关联,不能再将其他密钥材料导入该主密钥中。

 

具备相同密钥材料的不同用户主密钥,是否可以相互加解密数据?

不可以。用户主密钥包含密钥元数据(密钥ID、密钥别名、描述、密钥状态与创建日期)和用于加解密数据的密钥材料。

用户主密钥具有唯一性,使用主密钥加密的数据,只能用相同的主密钥解密。即使其他主密钥具有相同的密钥材料,也无法解密该主密钥加密的数据。

 

用户主密钥别名的作用是什么?

为密钥创建别名方便用户管理密钥,一个别名对应唯一的用户主密钥。在通过调用KMS服务接口时,参数中的密钥ID可以用别名代替。

别名必须依附于用户主密钥存在,其特点如下:

Ÿ   一个用户主密钥下可以绑定多个别名,删除别名不会删除其关联的用户主密钥。

Ÿ   别名不可修改。您可以通过为一个用户主密钥创建新的别名,并且删除旧的别名来达到修改主密钥别名的目的。

Ÿ   可以调用UpdateAlias接口更改别名绑定的用户主密钥,而不会影响用户主密钥。

Ÿ   默认主密钥的别名不能删除和添加。

 

用户主密钥与别名的对应关系是什么?

别名作为用户主密钥的可选标识,必须与密钥关联。同一个账户在一个地域中的别名具有唯一性。

一个用户主密钥可以绑定多个别名,同一个别名只能指向唯一的用户主密钥。

默认主密钥的别名不支持删除、更改。

 

别名支持修改吗?

别名不支持直接修改,您可以通过创建新的别名,并删除旧的别名来达到修改别名的目的。

为密钥创建新的别名时,不会影响已有的其他别名。删除旧的别名前,请确保该别名已不再使用,否则可能会导致数据加密失败。

默认主密钥的别名不支持删除和添加。

 

删除别名是否会影响用户主密钥的使用?

别名是用户主密钥的可选标识,支持删除别名,删除别名不会删除其关联的用户主密钥。

创建别名的作用是可以在调用API接口时,使用别名来代替密钥ID。因此删除如果仍在使用别名作为api调用参数时,删除别名会导致服务调用失败,请确保预删除的别名已不再使用。

 

同一资源池内的用户主密钥,是否可以设置相同的别名?

不可以。同一个账户在同一个地域中的别名具有唯一性,每个别名只能指向同地域的一个用户主密钥,但是每个用户主密钥可以绑定多个别名。

相同的别名可以绑定不同资源池内的用户主密钥。

 

为用户主密钥设置自动轮转的目的是什么?

KMS提供密钥轮转功能,支持通过密钥版本化和定期轮转来加强密钥使用的安全性,有效提升业务数据的安全性。

通过密钥轮转,可以减少每个密钥版本加密的数据量,降低没密码分析攻击风险;

密钥轮转可以减小破解密钥的时间窗口。应对密码分析攻击风险的有效实践是在定期轮转密钥的基础上,将旧密钥加密的密文数据使用新版本的密钥重新加密,这意味着如果想要破解密码拿到明文数据,需要在密钥轮转周期内完成密码破解。密钥轮转周期即为密钥破解时间窗口,该窗口越小,破解难度越大。

 

密钥经过轮转产生新的密钥版本后,是否会影响旧数据的解密?

不影响。密钥轮转产生新的版本后,加密数据时将使用新的版本;同时旧版本不会删除或禁用,在解密旧数据时,需要使用旧版本密钥完成。

对称密钥版本分为主版本和非主版本。主版本是CMK的活跃加密密钥(Active Encryption Key)。每个CMK在任何时间点上有且仅有一个主版本。调用GenerateDataKey、Encrypt等加密API接口时,KMS使用指定CMK的主版本对明文进行加密。非主版本是CMK的非活跃加密密钥(Inactive Encryption Key)。每个CMK可以有零到多个非主版本。非主版本历史上曾经是主版本,在当时被用作活跃加密密钥。密钥轮转产生新的主版本后,KMS不会删除或禁用非主版本,它们需要被用作解密数据。

 

非对称密钥是否支持自动轮转?

不支持。由于非对称密钥公钥使用场景的特殊性,KMS不支持对非对称密钥进行自动轮转。用户可以人工手动创建新的版本,生成全新的一对公钥和私钥。

和对称类型的用户主密钥不同,非对称的用于主密钥没有主版本(PrimaryKeyVersion)的概念,因此使用非对称密码运算的接口除需指定用户主密钥标志符(或别名)之外,还需指定密钥版本。

 

 

使用密钥进行加密数据时,是否需要指定密钥版本?

使用密钥加密是否需要指定密钥版本与密钥类型有关。

调用对称密钥加密数据时,不需要指定密钥版本,系统会默认使用最新的主版本进行数据加密。

调用非对称密钥加密数据时,除了要指定主密钥外,还需要指定密钥版本。


SUFJxEEiQ_m1