키 랩핑
다음을 사용하여 루트 키로 암호화 키를 관리하고 보호할 수 있습니다. IBM® Key Protect API 및 콘솔.
데이터 암호화 키를애플리케이션에 저장된 데이터를 암호화하는 데 사용되는 암호화 키입니다. 다음과 같이 래핑하는 경우 루트 키데이터 서비스에 저장된 다른 키를 암호화 및 복호화하는 데 사용되는 대칭 랩핑 키입니다. (DEK), Key Protect 감싸는 경우 암호화된 데이터의 개인정보 및 무결성을 보호하기 위해 여러 알고리즘의 장점을 결합합니다.
키 랩핑을 통해 클라우드에서 저장 데이터의 보안을 제어하는 방법을 알아보려면 엔벨로프 암호화로 데이터 보호를 참조하십시오.
콘솔을 사용하여 키 래핑하기
Key Protect의 인스턴스가 이미 있고 그래픽 인터페이스를 사용하여 DEK를 암호화하려는 경우 IBM Cloud 콘솔을 사용할 수 있습니다.
자신의 키 를 가져오거나 생성한 후, 해당 키를 사용하여 데이터를 래핑하려면 다음 단계를 완료하세요:
-
IBM Cloud 콘솔에 로그인하십시오.
-
메뉴에서 리소스 목록 을 선택하여 리소스 목록을 보십시오.
-
IBM Cloud 리소스 목록에서 Key Protect의 프로비저닝된 인스턴스를 선택하십시오.
-
데이터를 랩핑하는 데 사용할 키 목록에서 루트 키를 선택하십시오.
-
⋯아이콘을 클릭한 후 엔벨로프 암호화 옵션을 클릭하여 사이드 패널을 여십시오. “Wrap key” 옵션이 선택되어 있는지 확인하십시오. -
필요에 따라 Key Protect 에서 데이터를 래핑하도록 허용하거나 자체적으로 Base64 인코딩된 일반 텍스트 및 추가 인증 데이터(AAD)를 제공하여 데이터를 래핑할 수 있습니다. 직접 일반 텍스트와 AAD를 제공하기로 선택한 경우, 데이터를 언랩할 때 이를 제공해야 합니다. AAD 및 Base64 인코딩된 일반 텍스트를 생성한 경험이 없다면, ‘Wrap key for me’ 옵션을 선택한 상태로 두어 Key Protect 에서 데이터를 자동으로 인코딩하도록 하세요.
-
키 랩핑 단추를 클릭하십시오.
API를 사용하여 키 랩핑
Key Protect에서 관리하는 루트 키로 지정된 데이터 암호화 키(DEK)를 보호할 수 있습니다.
서비스에서 루트 키를 지정하면 다음 엔드포인트에 대한 POST 호출을 작성하여 고급 암호화로 DEK를 랩핑할 수 있습니다.
https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/wrap
-
관리하고 보호할 DEK의 키 자료를 복사하십시오.
관리자 또는 작성자 권한이 Key Protect 인스턴스에 대해 있는 경우
GET /v2/keys/<keyID_or_alias>요청을 작성하여 특정 키의 키 자료를 검색할 수 있습니다. -
랩핑에 사용할 루트 키의 ID를 복사하십시오.
-
랩핑 오퍼레이션으로 키를 보호하려면 다음
curl명령을 실행하십시오.$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/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>", "aad": [ "<additional_data>", "<additional_data>" ] }'
다음 표에 따라 예제 요청의 변수를 대체하십시오.
| 가변 | 설명 |
|---|---|
| 지역 | 필수. Key Protect 인스턴스가 있는 지리적 영역을 나타내는 us-south 또는 eu-gb와 같은 지역 약어입니다. 자세한 정보는 지역 서비스 엔드포인트를 참조하십시오. |
| keyID_or_alias | 필수. 랩핑에 사용하려는 루트 키의 고유 ID 또는 별명입니다. |
| IAM_token | 필수. 사용자의 IBM Cloud 액세스 토큰입니다. curl 요청에 Bearer 값을 포함하여 IAM 토큰의 전체 컨텐츠를 포함하십시오. 자세한 정보는 액세스 토큰 검색을 참조하십시오. |
| instance_ID | 필수. Key Protect 서비스 인스턴스에 지정된 고유 ID입니다. 자세한 정보는 인스턴스 ID 검색을 참조하십시오. |
| key_ring_ID | 선택사항. 키가 속한 키 링의 고유 ID입니다. 지정되지 않은 경우 Key Protect은(는) 지정된 인스턴스와 연관된 모든 키 링에서 키를 검색합니다. 보다 최적화된 요청을 위해 키 링 ID를 지정하는 것이 좋습니다. x-kms-key-ring 헤더 없이 작성된 키의 키 링 ID는 default입니다. 자세한 정보는 키 그룹화를
참조하십시오. |
| correlation_ID | 선택사항. 트랜잭션을 추적하고 상관시키는 데 사용되는 고유 ID입니다. |
| data_key | 선택사항. 관리하고 보호할 DEK의 키 자료입니다. 일반 텍스트 값은 base64로 인코딩되어야 합니다. 키 자료를 인코딩하는 방법에 대한 자세한 정보는 키 자료 인코딩을 참조하십시오. 새 DEK를 생성하려면 일반 텍스트 속성을 생략하십시오. 서비스는 랜덤 일반 텍스트(32바이트)를 생성하고 이 값을 랩핑한 후 응답에 생성되고 랩핑된 값을 모두 리턴합니다. 생성 및 래핑된 값들은 Base64 방식으로 인코딩되어 있으므로, 키를 복호화하려면 이를 디코딩해야 합니다. |
| additional_data | 선택사항. 키의 보안을 한층 더 강화하기 위해 사용되는 추가 인증 데이터(AAD). 각 문자열은 최대 255자입니다. 서비스에 대한 랩핑 호출을 작성할 때 AAD를 제공한 경우 후속 랩핑 해제 호출 중에 동일한 AAD를 지정해야 합니다. 중요: Key Protect 서비스는 추가 인증 데이터를 저장하지 않습니다. AAD를 제공하는 경우, 데이터를 안전한 위치에 저장하여 이후의 언랩 요청 시에도 동일한 AAD에 액세스하고 제공할 수 있도록 하십시오. |
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 값은 랩핑에 사용된 루트 키 버전을 표시합니다.
사용자 대신 Key Protect에서 새 데이터 암호화 키(DEK)를 생성하려면 랩핑 요청에 따라 비어 있는 본문도 전달할 수 있습니다. base64로 인코딩된 키 자료가 포함된 생성된 DEK는 랩핑된 DEK와 함께 응답 엔티티-본문에 리턴됩니다.