有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
文档中心 > 密钥管理系统 > 最佳实践 > 白盒密钥管理 > 使用 KMS 白盒密钥保护 SecretKey 最佳实践
本文为您介绍对于 API SecretKey 进行白盒密钥加解密的操作示例,详情步骤如下:

密钥的管理和分发

步骤1:创建白盒密钥

注意
白盒密钥为收费项,详情请参见 计费概述购买方式
创建白盒密钥对是通过调用白盒服务来实现的,支持控制台方式和 API 方式,本文示例采用控制台方式。
1. 登录 密钥管理系统(合规)控制台,在左侧菜单栏选择白盒密钥管理页面,根据业务需求切换“地域” ,单击新建

2. 在弹出的对话框,填写白盒密钥名称,选择加密算法,描述信息及标签(两者选填),单击确定,即可完成白盒密钥的创建。



步骤2:控制台获取 API SecretKey

1. 使用主账号登录 API 密钥管理控制台,查看您的 API 密钥 。
2. 在密钥操作列中,单击显示,完成身份验证,获取并复制 SecretKey。


步骤3:对 SecretKey 明文进行 base64 编码

将步骤2中获取的 SecretKey 内容进行 base64 编码。 例如,要加密的 SecretKey 明文是:lY9Ynrabcdj05YH1234LE370HOM,使用 openssl 命令生成 base64 编码后的结果为:bFk5WW5yYWJjZGowNVlIMTIzNExFMzcwSE9NCg==
echo lY9Ynrabcdj05YH1234LE370HOM | openssl base64

步骤4:使用白盒密钥加密 API SecretKey

1. 登录 密钥管理系统(合规)控制台,在白盒密钥列表,单击白盒密钥ID/名称操作列的加密

2. 在弹出的对话框,将步骤3中获取的编码内容填充至明文(base64)文本框中,单击白盒加密


3. 加密成功之后,会返回随机生成的初始化向量(简称 IV) 和加密后的密文,单击下载IV下载密文 ,即可完成内容的下载。
说明
其中初始化向量(简称 IV) 和加密后的密文均已进行 base64 编码。


步骤5:下载解密密钥

1. 登录 密钥管理系统(合规)控制台,在左侧菜单栏选择白盒密钥管理页面,单击白盒密钥ID/名称,进入密钥基本信息页面。
2. 在密钥基本信息页面,单击下载解密密钥,并命名为 decrypt_key_sm4.bin。



步骤6:下载解密 SDK 文件

1. 登录 密钥管理系统(合规)控制台,在左侧菜单栏选择白盒密钥管理页面,单击右侧的下载解密SDK文件

2. 在弹出的对话框,根据各业务系统自身的编程语言,选择下载相应编程语言的解密 SDK,并将 SDK 集成到业务系统中。



步骤7:白盒解密密钥和 API SecretKey 密文分发

管理员将上述步骤中下载的解密密钥、IV 和密文三个文件,分发给各业务系统的开发或运维人员。其中,解密密钥部署到相应业务系统的文件中,而初始化向量 IV 和密文会作为 SDK 的传参。
注意
下载的解密密钥是一个二进制 bin 文件,需要将该文件和可执行文件(已经集成了解密 SDK)放在相同的服务器上,文件路径将作为 SDK 的解密参数。 例如:代码示例 中指定目录为 ./data,表示放在和可执行文件相同父目录的 data 子目录中。

业务集成

使用 API SecretKey 密文

在业务逻辑中调用 SDK 的解密函数(whitebox_decrypt),传入参数:decrypt_key_bin_dir(步骤7中解密密钥存放的目录)、decrypt_key_sm4.bin(步骤5中下载的解密密钥,其对应的文件名)、InitializationVector(步骤4中下载的 IV)、CipherText(步骤4中用白盒加密后的 SecretKey 密文)和 algorithmType,从而获得解密后的明文。
其中 algorithmType 是生成密钥时使用的算法类型,取值为0或1。0表示 AES_256,1表示 SM4。
关于白盒密钥如何进行解密,请参考 白盒密钥解密代码示例 ,各语言 SDK 均有详细的代码示例。