루트 키를 사용하여 데이터 암호화 키 랩핑 해제
권한이 있는 사용자인 경우 IBM Cloud® Hyper Protect Crypto Services 키 관리 서비스 API를 사용하여 컨텐츠에 액세스하기 위해 데이터 암호화 키(DEK)A cryptographic key used to encrypt data that is stored in an application. 를 랩핑 해제할 수 있습니다. DEK를 랩핑 해제하면 컨텐츠의 무결성을 확인하고 복호화하여 원래의 키 자료를 IBM Cloud 데이터 서비스로 리턴합니다.
키 랩핑을 통해 클라우드에서 저장 데이터의 보안을 제어하는 방법을 알아보려면 엔벨로프 암호화를 참조하십시오.
API를 사용하여 키 랩핑 해제
서비스에 대한 랩핑 호출을 작성한 후에는 컨텐츠에 액세스하기 위해 다음 엔드포인트에 대한 POST
호출을 작성하여 지정된 데이터 암호화 키(DEK) 를 랩핑 해제할 수 있습니다.
https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/unwrap
동일한 키 자료가 포함된 루트 키는 동일한 데이터 암호화 키(WDEK)를 랩핑 해제할 수 있습니다.
-
초기 랩 요청을 수행하는 데 사용한 루트 키A symmetric wrapping key that is used for encrypting and decrypting other keys that are stored in a data service. 의 ID를 복사하십시오.
GET /v2/keys
요청을 작성하거나 UI에서 키를 보고 키의 ID를 검색할 수 있습니다. -
초기 랩핑 요청 중에 리턴된
ciphertext
값을 복사하십시오. -
다음 cURL 명령을 실행하여 키 자료를 복호화하고 인증하십시오.
curl -X POST \ 'https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>?action=unwrap' \ -H 'accept: application/vnd.ibm.kms.key_action+json' \ -H 'authorization: Bearer <IAM_token>' \ -H 'bluemix-instance: <instance_ID>' \ -H 'content-type: application/vnd.ibm.kms.key_action+json' \ -H 'x-kms-key-ring: <key_ring_ID>' \ -H 'correlation-id: <correlation_ID>' \ -d '{ "ciphertext": "<encrypted_data_key>" }'
다음 표에 따라 예제 요청의 변수를 대체하십시오.
표 1. Hyper Protect Crypto Services 에서 키를 랩핑 해제하는 데 필요한 변수에 대해 설명합니다. 가변 설명 region
필수입니다. Hyper Protect Crypto Services 서비스 인스턴스가 상주하는 지리적 영역을 표시하는 지역 약어(예: us-south
또는au-syd
)입니다. 자세한 정보는 지역 서비스 엔드포인트를 참조하십시오.port
필수입니다. API 엔드포인트의 포트 번호입니다. key_ID
필수입니다. 초기 랩핑 요청에 사용한 루트 키의 고유 ID입니다. IAM_token
필수입니다. 사용자의 IBM Cloud 액세스 토큰입니다. cURL 요청에 Bearer 값 등 IAM
토큰의 전체 컨텐츠를 포함하십시오. 자세한 정보는 액세스 토큰 검색을 참조하십시오.instance_ID
필수입니다. Hyper Protect Crypto Services 서비스 인스턴스에 지정된 고유 ID입니다. 자세한 정보는 인스턴스 ID 검색을 참조하십시오. key_ring_ID
선택사항. 키가 속한 키 링의 고유 ID입니다. 지정되지 않은 경우 Hyper Protect Crypto Services은(는) 지정된 인스턴스와 연관된 모든 키 링에서 키를 검색합니다. 더욱 최적화된 요청을 위해 키 링 ID를 지정하는 것이 좋습니다. 참고:
x-kms-key-ring
헤더 없이 작성된 키의 키 링 ID는 default입니다. 자세한 정보는 키 링 관리를 참조하십시오.correlation_ID
선택사항. 트랜잭션을 추적하고 상관시키는 데 사용되는 고유 ID입니다. encrypted_data_key
랩핑 조작 중에 리턴된 ciphertext
값입니다.원래 키 자료는 응답 엔티티-본문에 리턴됩니다. 응답 본문에는 제공된 암호문을 랩핑 해제하는 데 사용한 키 버전의 ID도 포함되어 있습니다. 다음 JSON 오브젝트에서는 샘플 리턴값을 보여줍니다.
{ "plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv", "keyVersion": { "id": "02fd6835-6001-4482-a892-13bd2085f75d" } }
Hyper Protect Crypto Services에서 데이터를 랩핑 해제하고 이에 액세스하는 데 필요한 루트 키를 순환할 경우, 서비스도 랩핑 해제 응답 본문에서 새로 랩핑된 데이터 암호화 키를 리턴합니다(
ciphertext
). 새rewrappedKeyVersion
와 연관된 최신 키 버전(ciphertext
)도 리턴됩니다. 다음을 저장하고 사용하십시오. 데이터가 최신 루트 키로 보호되도록 향후 엔벨로프 암호화 조작을 위한ciphertext
값입니다.
키 자료 디코딩
데이터 암호화 키를 랩핑 해제하는 경우 키 자료는 base64 인코딩으로 리턴됩니다. 암호화하기 전에 키를 디코딩해야 합니다.
OpenSSL을 사용하여 키 자료 디코딩
-
OpenSSL을 다운로드하여 설치하십시오.
-
다음 명령을 실행하여 키 자료를 base64로 인코딩하십시오.
$ openssl base64 -d -in <infile> -out <outfile>
다음 표에 따라 예제 요청의 변수를 대체하십시오.
표 2. 키 자료를 디코드하는 데 필요한 변수를 설명합니다. 가변 설명 infile
base64 인코딩된 키 자료 문자열이 상주하는 파일의 이름입니다. outfile
명령이 실행된 후 디코딩된 키 자료가 출력되는 파일의 이름입니다. 파일이 아닌 명령행에서 직접 디코딩된 자료를 출력하려면
openssl enc -base64 -d <<< '<key_material_string>'
명령을 실행하십시오. 여기서 key_material_string은 랩핑 해제 요청에서 리턴된 일반 텍스트입니다.