루트 키를 사용하여 데이터 암호화 키 랩핑
권한이 있는 사용자인 경우 IBM Cloud® Hyper Protect Crypto Services 키 관리 서비스 API를 사용하여 루트 키A symmetric wrapping key that is used for encrypting and decrypting other keys that are stored in a data service. 로 암호화 키를 관리하고 보호할 수 있습니다.
루트 키를 사용하여 데이터 암호화 키(DEK)A cryptographic key used to encrypt data that is stored in an application. 를 랩핑할 때 Hyper Protect Crypto Services 는 여러 알고리즘의 강도를 결합하여 암호화된 데이터의 무결성 및 개인정보 보호정책을 보호합니다.
키 랩핑을 통해 클라우드에서 저장 데이터의 보안을 제어하는 방법을 알아보려면 엔벨로프 암호화를 참조하십시오.
API를 사용하여 키 랩핑
Hyper Protect Crypto Services에서 관리하는 루트 키로 지정된 데이터 암호화 키(DEK)를 보호할 수 있습니다.
랩핑을 위해 루트 키를 제공하는 경우 랩핑 호출에 성공할 수 있도록 루트 키가 128, 192 또는 256비트인지 확인하십시오. 서비스에서 루트 키를 작성하는 경우 Hyper Protect Crypto Services은(는) HSM으로부터 AES-CBC 알고리즘에서 지원되는 256비트 키를 생성합니다.
서비스에서 루트 키를 지정하면 다음 엔드포인트에 대한 POST 호출을 작성하여 고급 암호화로 DEK를 랩핑할 수 있습니다.
https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/wrap
-
관리하고 보호할 DEK의 키 자료를 복사하십시오.
Hyper Protect Crypto Services 서비스 인스턴스에 대해 관리자 또는 작성자 권한이 있는 경우
GET /v2/keys/<key_ID>요청을 작성하여 특정 키에 대한 키 자료를 검색할 수 있습니다.. -
랩핑에 사용할 루트 키의 ID를 복사하십시오.
-
다음 cURL 명령을 실행하여 랩핑 오퍼레이션으로 키를 보호하십시오.
curl -X POST \ 'https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/wrap' \ -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 '{ "plaintext": "<data_key>" }'다음 표에 따라 예제 요청의 변수를 대체하십시오.
표 1. 지정된 키를 랩핑하는 데 필요한 변수를 설명합니다. 가변 설명 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입니다. data_key관리하고 보호할 DEK의 키 자료입니다. plaintext값은 base64 인코딩되어야 합니다. 새 DEK를 생성하려면plaintext속성을 생략하십시오. 서비스는 무작위 일반 텍스트 (32바이트) 를 생성하고 해당 값을 랩핑한 후 응답에서 생성된 값과 랩핑된 값을 모두 리턴합니다. 생성되고 랩핑된 값은 base64로 인코딩되며 키를 복호화하기 위해 이 값을 디코딩해야 합니다.base64로 인코딩된 키 자료가 포함된 랩핑된 데이터 암호화 키는 응답 엔티티-본문에 리턴됩니다. 응답 본문에는 제공된 일반 텍스트를 랩핑하는 데 사용된 키 버전의 ID도 포함되어 있습니다. 다음 JSON 오브젝트는 예제 리턴값을 표시합니다.
{ "ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9", "keyVersion": { "id": "02fd6835-6001-4482-a892-13bd2085f75d" } }랩핑 요청을 수행할 때
plaintext속성을 생략하면 서비스는 base64로 인코딩된 형식으로 생성된 데이터 암호화 키(DEK) 및 랩핑된 DEK를 모두 리턴합니다.{ "plaintext": "Rm91ciBzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdv", "ciphertext": "eyJjaXBoZXJ0ZXh0IjoiYmFzZTY0LWtleS1nb2VzLWhlcmUiLCJpdiI6IjRCSDlKREVmYU1RM3NHTGkiLCJ2ZXJzaW9uIjoiNC4wLjAiLCJoYW5kbGUiOiJ1dWlkLWdvZXMtaGVyZSJ9", "keyVersion": { "id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6" } }plaintext값은 랩핑 해제된 DEK를 표시하고ciphertext는 랩핑된 DEK를 표시하며, 이 모두 base64로 인코딩됩니다.keyVersion.id값은 랩핑에 사용된 루트 키 버전을 표시합니다.사용자 대신 Hyper Protect Crypto Services에서 새 데이터 암호화 키(DEK)를 생성하려면 랩핑 요청에 따라 비어 있는 본문도 전달할 수 있습니다. base64로 인코딩된 키 자료가 포함된 생성된 DEK는 랩핑된 DEK와 함께 응답 엔티티-본문에 리턴됩니다.