如何使用密钥实现数据加解密?
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
支持
不支持
SM4
HSM
支持
不支持
非对称密钥
RSA_2048
Software
HSM
支持
支持
SM2
HSM
支持
支持
软件保护级别和硬件保护级别的区别是什么?
软件保护级别的密钥通过软件模块进行保护,其根密钥通过公钥加密形成密文存储在软件文件系统中;而用于解密根密钥密文的私钥,通过对称加密形成密文存储在文件系统中的不同位置;同时对称密钥也存储在不同位置,进而增加系统根密钥的安全性;
硬件保护级别的密钥通过专用硬件保护密钥,硬件根密钥需要存储密码机的内部密钥索引,通过索引确认根密钥;所有涉及根密钥使用的过程均在密码机内部完成,包括加密解密等。
密钥自动轮转周期的可设置范围是什么?
对称密钥支持设置自动轮转周期,周期最短为7天,最长为730天(2年)。
对称密钥支持设置自动轮转,系统根据自动轮转周期自动生成新的密钥版本,并将最新的版本设置为主版本,原密钥版本作为非主版本保存在KMS中,KMS不会删除或禁用非主版本,它们需要被用作解密数据。
非对称密钥是否支持自动轮转?
非对称密钥不支持设置自动轮转,可以手动创建新的版本。
由于公私钥使用场景的特殊性,KMS不支持对非对称的用户主密钥进行自动轮转。可在指定用户主密钥中人工创建新的密钥版本,生成全新的一对公钥和私钥。
除此之外,和对称类型的用户主密钥不同,非对称的用于主密钥没有主版本(PrimaryKeyVersion)的概念,因此使用非对称密码运算的接口除需指定用户主密钥标志符(或别名)之外,还需指定密钥版本。
什么情况下需要导入外部密钥?
当用户拥有自己的密钥材料,需要继续使用该密钥材料实现数据加解密,比如用户需要将本地加密数据迁移到云上时,云上云下共用同一个密钥材料,此时可以将密钥材料导入至KMS中进行托管,便于后续使用。
当您选择密钥材料来源为外部,使用您自己导入的密钥材料时,需要注意以下几点:
- 请确保您使用了符合安全要求的随机源生成密钥材料;
- 在使用导入密钥时,需要对自己密钥材料的可靠性负责;
- 请保存密钥材料的原始备份,以便在意外删除密钥材料时,能及时将备份的密钥材料重新导入KMS。
什么类型的密钥支持导入外部密钥材料?
当前AES_256类型的对称密钥,支持导入外部密钥材料。
您可通过控制台创建密钥,选择AES_256类型的对称密钥后,密钥材料来源选项选择 外部 ,并勾选“我了解使用外部密钥材料的方法和意义”,点击确定即可完成密钥创建;
密钥创建成功后,您需要进入密钥详情页,进行密钥材料导入操作。导入密钥材料前需要先获取导入材料参数,包括加密公钥、导入令牌,具体操作步骤可参考用户指南中的相关章节。
外部导入的密钥材料是否支持自动轮转?
不支持。外部导入的密钥材料不支持自动轮转,无密钥版本概念。
导入密钥材料时,可以设置可以设置密钥材料过期时间,密钥材料过期后,KMS将自动删除密钥材料,但该主密钥及其元数据仍然保留。
外部导入的密钥材料支持手动删除,但该主密钥及其元数据仍然保留。
当密钥材料被误删或已经过期导致密钥不可用,如何处理使密钥恢复可用?
密钥材料被删除或过期时,可以再次导入相同的密钥材料,成功后密钥将恢复可用。您需要自行备份密钥材料,以便密钥材料失效或误删除时进行重新导入。
用户主密钥CMK与密钥材料具有关联性,当您将密钥材料导入某个CMK时,该CMK与该密钥材料永久关联,不能将其他密钥材料导入该CMK中,即便密钥材料已经过期或者被删除。
当用户主密钥的密钥材料删除或过期后,是否可以导入其他的密钥材料到该主密钥中?
不可以。用户主密钥包含密钥元数据(密钥ID、密钥别名、描述、密钥状态与创建日期)和用于加解密数据的密钥材料。
将密钥材料成功导入主密钥后,该主密钥与密钥材料永久关联,不能再将其他密钥材料导入该主密钥中。
具备相同密钥材料的不同用户主密钥,是否可以相互加解密数据?
不可以。用户主密钥包含密钥元数据(密钥ID、密钥别名、描述、密钥状态与创建日期)和用于加解密数据的密钥材料。
用户主密钥具有唯一性,使用主密钥加密的数据,只能用相同的主密钥解密。即使其他主密钥具有相同的密钥材料,也无法解密该主密钥加密的数据。
用户主密钥别名的作用是什么?
为密钥创建别名方便用户管理密钥,一个别名对应唯一的用户主密钥。在通过openAPI调用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)的概念,因此使用非对称密码运算的接口除需指定用户主密钥标志符(或别名)之外,还需指定密钥版本。
使用密钥进行加密数据时,是否需要指定密钥版本?
使用密钥加密是否需要指定密钥版本与密钥类型有关。
调用对称密钥加密数据时,不需要指定密钥版本,系统会默认使用最新的主版本进行数据加密。
调用非对称密钥加密数据时,除了要指定主密钥外,还需要指定密钥版本。