tencent cloud

密钥管理系统

产品简介
产品概述
产品优势
应用场景
基本概念
购买指南
计费概述
购买方式
续费说明
欠费说明
控制台指南
入门概述
密钥管理
访问控制
审计
TCCLI 管理指南
操作总览
创建密钥
查看密钥
编辑密钥
启用禁用密钥
密钥轮换
对称密钥加解密
非对称密钥解密
删除密钥
实践教程
对称加解密
非对称加解密
KMS 后量子密码实践
外部密钥导入
指数回退策略应对服务限频
云产品集成 KMS 实现透明加密
API 文档
History
Introduction
API Category
Key APIs
Making API Requests
Asymmetric Key APIs
Data Types
Error Codes
服务等级协议
常见问题
一般性问题
开发接入相关问题
KMS 政策
隐私政策
数据处理和安全协议
联系我们
词汇表

非对称数据加解密

PDF
聚焦模式
字号
最后更新时间: 2024-01-11 16:31:21

操作流程

当您需要进行传递敏感信息时(例如密钥的交换),需要对敏感数据进行加密,使用非对称密钥加解密的方案从信息接收者的角度来说,您需要进行以下操作:
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 解码。 存入文件:
echo "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzQk7x7ladgVFEEGYDbeUc5aO9TfiDplIO4WovBOVpIFoDS31n46YiCGiqj67qmYslZ2KMGCd3Nt+a+jdzwFiTx3O87wdKWcF2vHL9Ja+95VuCmKYeK1uhPyqqj4t9Ch/cyvxb0xaLBzztTQ9dXCxDhwj08b24T+/FYB9a4icuqQypCvjY1X9j8ivAsPEdHZoc9Di7JXBTZdVeZC1igCVgl6mwzdHTJCRydE2976zyjC7l6QsRT6pRsMF3696N07WnaKgGv3K/Zr/6RbxebLqtmNypNERIR7jTCt9L+fgYOX7anmuF5v7z0GfFsen9Tqb1LsZuQR0vgqCauOj************" > public_key.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解密

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈