密钥管理系统 非对称加解密

当需要进行传递敏感信息时(例如密钥的交换),需要对敏感数据进行加密,使用非对称密钥加解密的方案从信息接收者的角度来说,需要进行以下操作1. 在密钥管理系统 KMS 中创建非对称加密密钥。

相关产品
密钥管理系统 产品页,含版本规格、价格与购买入口。

一、操作流程

2. 在密钥管理系统 KMS 中获取公钥,详情请参见 获取非对称密钥的公钥。

3. 信息接收者将公钥分发给信息发送者。

4. 信息发送者用得到的公钥对敏感数据进行本地加密后,将密文发送给信息接收者。

5. 信息接收者拿到密文后,调用 KMS 的解密功能对密文解密。API 详情请参见 非对称密钥 SM2 解密 和 非对称密钥 RSA 解密 ,TCCLI 方式请参见 非对称密钥解密。

在整个敏感数据的传输的过程中,使用密文进行传输,而唯一能解密该密文的密钥托管在密钥管理系统 KMS 中保护,包括腾讯云在内的任何人都无法获取到你的密钥,极大程度上提高了敏感数据加密传输安全性。

二、RSA 示例

1. 创建非对称加密密钥

tccli kms CreateKey –Alias test –KeyUsage ASYMMETRIC_DECRYPT_RSA_2048

返回结果:

{ "Response": { "KeyId": "22d79428-61d9-11ea-a3c8-525400******", "Alias": "test", "CreateTime": 1583739580, "Description": "", "KeyState": "Enabled", "KeyUsage": "ASYMMETRIC_DECRYPT_RSA_2048", "RequestId": "0e3c62db-a408-406a-af27-dd5ced******" }}

2. 下载公钥

请求:

tccli kms GetPublicKey –KeyId 22d79428-61d9-11ea-a3c8-525400******

返回结果:

{ "Response": { "RequestId": "408fa858-cd6d-4011-b8a0-653805******", "KeyId": "22d79428-61d9-11ea-a3c8-525400******", "PublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzQk7x7ladgVFEEGYDbeUc5aO9TfiDplIO4WovBOVpIFoDS31n46YiCGiqj67qmYslZ2KMGCd3Nt+a+jdzwFiTx3O87wdKWcF2vHL9Ja+95VuCmKYeK1uhPyqqj4t9Ch/cyvxb0xaLBzztTQ9dXCxDhwj08b24T+/FYB9a4icuqQypCvjY1X9j8ivAsPEdHZoc9Di7JXBTZdVeZC1igCVgl6mwzdHTJCRydE2976zyjC7l6QsRT6pRsMF3696N07WnaKgGv3K/Zr/6RbxebLqtmNypNERIR7jTCt9L+fgYOX7anmuF5v7z0GfFsen9Tqb1LsZuQR0vgqCauOj************", "PublicKeyPem": "—–BEGIN PUBLIC KEY—–\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzQk7x7ladgVFEEGYDbeU\\nc5aO9TfiDplIO4WovBOVpIFoDS31n46YiCGiqj67qmYslZ2KMGCd3Nt+a+jdzwFi\\nTx3O87wdKWcF2vHL9Ja+95VuCmKYeK1uhPyqqj4t9Ch/cyvxb0xaLBzztTQ9dXCx\\nDhwj08b24T+/FYB9a4icuqQypCvjY1X9j8ivAsPEdHZoc9Di7JXBTZdVeZC1igCV\\ngl6mwzdHTJCRydE2976zyjC7l6QsRT6pRsMF3696N07WnaKgGv3K/Zr/6RbxebLq\\ntmNypNERIR7jTCt9L+fgYOX7anmuF5v7z0GfFsen9Tqb1LsZuQR0************\\n1QIDAQAB\\n—–END PUBLIC KEY—–\\n" }}

3. 使用公钥加密

3.1 将公钥 PublicKey 存入文件 public_key.base64,并进行 base64解码。

存入文件:

base64 解码获取公钥实际内容:

openssl enc -d -base64 -A -in public_key.base64 -out public_key.bin

3.2 创建测试明文文件:

echo "test" > test_rsa.txt

3.3 使用 OpenSSL 进行公钥加密 test_rsa.txt 文件内容。

openssl pkeyutl -in test_rsa.txt -out encrypted.bin -inkey public_key.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

3.4 将公钥加密后的数据进行 base64 编码,方便传输。

openssl enc -e -base64 -A -in encrypted.bin -out encrypted.base64

4. 通过 KMS 使用私钥解密

将上述 encrypted.base64 base64 编码之后的密文作为 AsymmetricRsaDecrypt 的 Ciphertext 参数,进行私钥的解密。

请求:

tccli kms AsymmetricRsaDecrypt –KeyId 22d79428-61d9-11ea-a3c8-525400****** –Algorithm RSAES_OAEP_SHA_256 –Ciphertext "DEb/JBmuhVkYS34r0pR7Gv1WTc4khkxqf7S1WIr7/GXsAs/tfP/v/2+1SwsIG7BqW7kUZqr38/FGkaIEqYeewot37t3+Jx0t5w7/yXkUnyUfyfPpXlHXf94g3wFOjijEWWsjWWzaXTkTr8uWOfRBenq+bcaY783FIy03XjJW/Y0wKWjD3tULvKndCJO/3bkb65kn1Fbsfm20xrUUwqV/p2DVLXBdG1ymr0DjsbG7R0tb3ytc2LmH33YPAQE32eP27ciKzSml+w2tdUM3dw3nEZcTGMs1wFDGk0O1WB052jZ7TitUD9zCftFv2dKlZD3LRx1+vHqpNVgPhLmL******=="

返回结果:

{ "Response": { "RequestId": "6758cbf5-5e21-4c37-a2cf-8d47f5******", "KeyId": "22d79428-61d9-11ea-a3c8-525400******", "Plaintext": "dGVzdAo=" }}

注意:说明:

注意:使用 SM2 非对称密钥加解密流程类似,私钥解密接口详情请参见 非对称密钥SM2解密。

赞 (0)
上一篇 5天前
下一篇 5天前