すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:非対称CMKを使用してデータを暗号化および復号化する

最終更新日:Jan 22, 2025

このトピックでは、非対称カスタマーマスターキー (CMK) を使用してAlibaba Cloud CLIでデータを暗号化および復号化する方法について説明します。

非対称暗号化および復号化には、通常、次の手順が含まれます。
  1. 情報受信機は、公開鍵を情報送信機に配布する。
  2. 情報送信機は、秘密情報を暗号化するために公開鍵を使用する。
  3. 情報送信機は、機密情報から生成された暗号文を情報受信機に送信する。
  4. 情報受信者は、秘密鍵を用いて暗号文を復号する。

前提条件

非対称CMKは、KeySpecパラメータを必要な非対称CMKタイプに設定し、KeyUsageパラメータをENCRYPT/DECRYPTに設定して、CreateKey操作を呼び出すことによってキー管理サービス (KMS) で作成されます。

RSA_2048タイプのCMKを作成します。

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

公開鍵の取得

1。 GetPublicKey操作を呼び出して、非対称CMKの公開鍵を取得します。

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

期待される出力:

{
        "RequestId": "82c383eb-c377-4mf6-bxx8-81hkc1g5g7ab",
        "KeyId": "5c438b18-05be-40ad-b6c2-3be6752c ****" 、
        "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
        "PublicKey": "PublicKey-データ ****"
}
2. 公開鍵をrsa_publickey.pubファイルに保存します。 PublicKey-Data **** はプレースホルダーです。 取得した公開鍵に置き換えます。
echo PublicKey-データ **** > rsa_publickey.pub

公開鍵を使用したデータの暗号化

1。 "this is plaintrain" を含むサンプルの平文ファイルplaintext-file.txtを作成します。

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

2. OpenSSLを使用してファイルを暗号化し、取得したバイナリ暗号文を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

KMS APIを呼び出してデータを復号化する

KMS API操作を呼び出し、秘密鍵を使用してデータを復号化する必要があります。

1。 ネットワーク経由で暗号文を送信する前に、Base64でエンコードします。
openssl base64-plaintext-file.enc语

期待される出力:

5kdCB06HHeAwgfH9ARY 4/9Nv5vlpQ94GXZcmaC9FE59Aw8v8RYdozT6ggSbyZbi +
8STKVq9402MEfmUDmwJLuu0qgAZsCe5wU4JWHh1y84Qn6HT068j0qOy5X2HIlrjs
fCdetgtMtVorSgb3bbERk2RV67nHWrDkecNbUaz + 6ik4AlZxv2uWrV62eQ9yUBYm
Jb956LbqnfWdCFxUSHH/qB5QCnLpijzvPmfNlZr653H4nF08gpZjnmlF4FjTu3i2
mGLzK4J3Rh/l7PQHiVMdc4hSnXosg68QmMVdZBGLK9/cD9SYngPDiirU7z0q7Git
dIeloyCAUDFyuQC6a + SqzA==
2. Base64-encoded暗号文をKMSに渡して、データを復号化します。
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==

期待される出力:

{
        "KeyId": "5c438b18-05be-40ad-b6c2-3be6752c ****" 、
        "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
        "Plaintext": "dGhpcyBpcyBwbGFpbnRleHQgDQo=",
        "RequestId": "6be7a8e4-35b9-4549-ad05-c5b1b535a22c"
}
3。 返されたBase64-encoded平文をBase64でデコードします。
echo dGhpcyBpcyBwbGFpbnRleHQgDQo= | openssl base64 -d
復号後に次の平文が返されます。
this is plaintext