tencent cloud

文档反馈

非对称数据加解密

最后更新时间: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解密
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持