有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作流程

当您需要进行传递敏感信息时(例如密钥的交换),需要对敏感数据进行加密,使用非对称密钥加解密的方案从信息接收者的角度来说,您需要进行以下操作:
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解密