Decrypt

Prev Next

最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

Classic/VPC環境で利用できます。

キーで暗号化された暗号文を復号化します。AES256または RSA2048キータイプでのみリクエストできます。

注意

マスターキーで暗号化されて返されるデータはKMS prefix + 暗号文で構成されています。KMS prefixはncpkms:バージョン情報で構成されていて、復号化リクエスト時に指定されたキーバージョンで復号化されるため、暗号文と一緒に KMS prefixを正確に明示する必要があります。KMS prefixが正しくないと正確に復号化されません。任意に削除したり操作せずに、返された暗号化形式のままで管理してください。

ncpkms:v1:XjsPWPjqPrBi1N2DupSiSbX/ATkGmKA
---------- -------------------------------
KMS prefix             暗号文

リクエスト

リクエスト形式を説明します。リクエスト形式は次の通りです。

メソッド URI
POST /kms/v1/keys/{keyTag}/decrypt

リクエストヘッダ

Key Management Service APIで共通して使用されるヘッダの詳細は、Key Management Serviceのリクエストヘッダでアカウント認証方式をご参照ください。

リクエストパスパラメータ

リクエストパスパラメータの説明は次の通りです。

フィールド タイプ 必須の有無 説明
keyTag String Required キータグ
  • キー名から派生したキーの固有 ID
  • Get Key Listを参照
  • REST APIで暗号化または復号化をリクエストする際に使用
  • キータグは機密情報として扱われない

リクエストボディ

リクエストボディの説明は次の通りです。

フィールド タイプ 必須の有無 説明
ciphertext Stringまたは Array[String] Required 平文を暗号化して作成された文字列データ
context String Conditional Base64でエンコードされた文字列データ
  • 収束暗号化(convergent encryption)が適用されたキーでデータを暗号化した時に使用したcontextパラメータの値を必ず入力

リクエスト例

リクエストのサンプルコードは次の通りです。

  • ciphertextを Stringタイプでリクエスト
curl --location --request POST 'https://ocapi.ncloud.com/kms/v1/keys/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/decrypt' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--data '{
  "ciphertext": "{CIPHERTEXT}",
  "context": "{BASE64_CONTEXT}"
}'
  • ciphertextを Array[String]タイプでリクエスト
curl --location --request POST 'https://ocapi.ncloud.com/kms/v1/keys/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/decrypt' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--data '{
  "ciphertext": ["{CIPHERTEXT_1}", "{CIPHERTEXT_2}", "{CIPHERTEXT_3}"],
  "context": "{BASE64_CONTEXT}"
}'

レスポンス

レスポンス形式を説明します。

レスポンスボディ

レスポンスボディの説明は次の通りです。

フィールド タイプ 必須の有無 説明
code String - 成功したかどうか
data Object - レスポンス結果
data.plaintext Stringまたは Array[String] - 復号化された文字列データ
  • 暗号化前の Base64でエンコードされた文字列データ

レスポンスステータスコード

Key Management Service APIで共通して使用されるレスポンスステータスコードの詳細は、Key Management Serviceのレスポンスステータスコードをご参照ください。

レスポンス例

レスポンスのサンプルコードは次の通りです。

  • ciphertextを Stringタイプでリクエスト
{
    "code": "SUCCESS",
    "data": {
        "plaintext": "{BASE64_PLAINTEXT}"
    }
}
  • ciphertextを Array[String]タイプでリクエスト
{
    "code": "SUCCESS",
    "data": {
        "plaintext": [
            "{BASE64_PLAINTEXT_1}",
            "{BASE64_PLAINTEXT_2}",
            "{BASE64_PLAINTEXT_3}"
        ]
    }
}

RSA2048公開鍵で暗号化したデータの復号化

RSA2048の場合、NCP KMS APIを呼び出さずに公開鍵で直接暗号化したデータも、Encryptに明示された条件と同様に暗号化していれば、このAPIで復号化できます。

復号化をリクエストする際は、RSA暗号文をBase64でエンコードした後、KMS暗号文識別プレフィックスを付けてciphertextとして渡す必要があります。

ncpkms:v{キーバージョン}:{Base64(RSA暗号文)}

公開鍵の照会と暗号化例はGet Public Keyをご参照ください。

参考

Decryptは暗号化時に使用されたパラメータでKMSが復号化するため、別途アルゴリズムパラメータを指定する必要はありません。公開鍵で直接暗号化したデータを復号化する場合はパラメータを同様に合わせる必要があり、詳細はEncryptの暗号化パラメータをご参照ください。