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 키 태그
  • 키 이름에서 파생된 키의 고유 식별자
  • 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-ocapi-token: {Access Token}' \
--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-ocapi-token: {Access Token}' \
--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의 암호화 파라미터를 참조해 주십시오.