All Products
Search
Document Center

Key Management Service:Enkripsi dan dekripsi data menggunakan CMK asimetris

Last Updated:Jul 06, 2025

Topik ini menjelaskan cara menggunakan kunci master pelanggan (CMK) asimetris untuk mengenkripsi dan mendekripsi data di Alibaba Cloud CLI.

Proses enkripsi dan dekripsi asimetris umumnya mencakup langkah-langkah berikut:
  1. Penerima informasi mendistribusikan kunci publik kepada pengirim informasi.
  2. Pengirim informasi menggunakan kunci publik untuk mengenkripsi informasi sensitif.
  3. Pengirim informasi mengirimkan ciphertext yang dihasilkan dari informasi sensitif kepada penerima informasi.
  4. Penerima informasi menggunakan kunci privat untuk mendekripsi ciphertext.

Prasyarat

Sebuah CMK asimetris dibuat di Key Management Service (KMS) dengan memanggil operasi CreateKey, dengan parameter KeySpec diatur ke tipe CMK asimetris yang diperlukan dan parameter KeyUsage diatur ke ENCRYPT/DECRYPT.

Buat CMK tipe RSA_2048:

aliyun kms CreateKey --KeySpec=RSA_2048 --KeyUsage=ENCRYPT/DECRYPT --ProtectionLevel=HSM

Memperoleh kunci publik

1. Panggil operasi GetPublicKey untuk memperoleh kunci publik dari CMK asimetris.

aliyun kms GetPublicKey --KeyId=5c438b18-05be-40ad-b6c2-3be6752c**** --KeyVersionId=2ab1a983-7072-4bbc-a582-584b5bd8****

Keluaran yang Diharapkan:

{
        "RequestId": "82c383eb-c377-4mf6-bxx8-81hkc1g5g7ab",
        "KeyId": "5c438b18-05be-40ad-b6c2-3be6752c****",
        "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
        "PublicKey": "PublicKey-Data****"
}
2. Simpan kunci publik ke file rsa_publickey.pub. PublicKey-Data**** adalah placeholder. Gantilah dengan kunci publik yang diperoleh.
echo PublicKey-Data**** > rsa_publickey.pub

Gunakan kunci publik untuk mengenkripsi data

1. Buat file teks biasa contoh plaintext-file.txt yang berisi "this is plaintext".

echo "this is plaintext" > plaintext-file.txt

2. Gunakan OpenSSL untuk mengenkripsi file dan tulis ciphertext biner yang diperoleh ke dalam file plaintext-file.enc.

openssl pkeyutl -encrypt -in plaintext-file.txt \ 
  -inkey rsa_publickey.pub -pubin \
  -pkeyopt rsa_padding_mode:oaep \
  -pkeyopt rsa_oaep_md:sha256 \
  -pkeyopt rsa_mgf1_md:sha256 \
  -out plaintext-file.enc

Panggil operasi API KMS untuk mendekripsi data

Anda harus memanggil operasi API KMS dan menggunakan kunci privat untuk mendekripsi data.

1. Sebelum mentransmisikan ciphertext melalui jaringan, enkode dalam Base64.
openssl base64 -in plaintext-file.enc

Keluaran yang Diharapkan:

5kdCB06HHeAwgfH9ARY4/9Nv5vlpQ94GXZcmaC9FE59Aw8v8RYdozT6ggSbyZbi+
8STKVq9402MEfmUDmwJLuu0qgAZsCe5wU4JWHh1y84Qn6HT068j0qOy5X2HIlrjs
fCdetgtMtVorSgb3bbERk2RV67nHWrDkecNbUaz+6ik4AlZxv2uWrV62eQ9yUBYm
Jb956LbqnfWdCFxUSHH/qB5QCnLpijzvPmfNlZr653H4nF08gpZjnmlF4FjTu3i2
mGLzK4J3Rh/l7PQHiVMdc4hSnXosg68QmMVdZBGLK9/cD9SYngPDiirU7z0q7Git
dIeloyCAUDFyuQC6a+SqzA==
2. Kirim ciphertext yang di-enkode Base64 ke KMS untuk mendekripsi data.
aliyun kms AsymmetricDecrypt \
  --KeyId 5c438b18-05be-40ad-b6c2-3be6752c**** \
  --KeyVersionId 2ab1a983-7072-4bbc-a582-584b5bd8**** \
  --Algorithm RSAES_OAEP_SHA_256 \
  --CiphertextBlob 5kdCB06HHeAwgfH9ARY4/9Nv5vlpQ94GXZcmaC9FE59Aw8v8RYdozT6ggSbyZbi+8STKVq9402MEfmUDmwJLuu0qgAZsCe5wU4JWHh1y84Qn6HT068j0qOy5X2HIlrjsfCdetgtMtVorSgb3bbERk2RV67nHWrDkecNbUaz+6ik4AlZxv2uWrV62eQ9yUBYmJb956LbqnfWdCFxUSHH/qB5QCnLpijzvPmfNlZr653H4nF08gpZjnmlF4FjTu3i2mGLzK4J3Rh/l7PQHiVMdc4hSnXosg68QmMVdZBGLK9/cD9SYngPDiirU7z0q7GitdIeloyCAUDFyuQC6a+SqzA==

Keluaran yang Diharapkan:

{
        "KeyId": "5c438b18-05be-40ad-b6c2-3be6752c****",
        "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
        "Plaintext": "dGhpcyBpcyBwbGFpbnRleHQgDQo=",
        "RequestId": "6be7a8e4-35b9-4549-ad05-c5b1b535a22c"
}
3. Dekode plaintext yang di-enkode Base64 yang dikembalikan dalam Base64.
echo dGhpcyBpcyBwbGFpbnRleHQgDQo= | openssl base64 -d
Plaintext berikut setelah dekripsi dikembalikan:
this is plaintext