키 구성 요소 가져오기 2단계: 래핑 퍼블릭 키 및 가져오기 토큰 다운로드 - AWS Key Management Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

키 구성 요소 가져오기 2단계: 래핑 퍼블릭 키 및 가져오기 토큰 다운로드

키 자료가 AWS KMS key 없는 파일을 만든 후에는 AWS KMS 콘솔 또는 API를 사용하여 RSA 래핑 공개 키와 해당 KMS 키에 대한 가져오기 토큰을 다운로드하십시오. GetParametersForImport 래핑 퍼블릭 키와 가져오기 토큰은 분리할 수 없는 세트이므로 함께 사용해야 합니다.

래핑 퍼블릭 키를 사용하여 전송용 키 구성 요소를 암호화합니다. 다운로드하기 전에 RSA 래핑 키 쌍의 길이(키 사양)와 3단계에서 전송하기 위해 가져온 키 구성 요소를 암호화하는 데 사용할 래핑 알고리즘을 선택합니다.

각 래핑 퍼블릭 키와 가져오기 토큰 세트는 24시간 동안 유효합니다. 다운로드한 후 24시간 내에 이를 이용해 키 구성 요소를 가져오지 않을 경우, 새로운 세트를 다운로드해야 합니다. 언제든지 새로운 래핑 퍼블릭 키를 다운로드하고 토큰 세트를 가져올 수 있습니다. 이를 통해 RSA 래핑 키 길이(‘키 사양’)를 변경하거나 손실된 세트를 교체할 수 있습니다.

래핑 퍼블릭 키와 가져오기 토큰 세트를 다운로드하여 동일한 키 구성 요소를 KMS 키로 다시 가져올 수도 있습니다. 이 방법으로 키 구성 요소의 만료 시간을 설정 또는 변경하거나, 만료되었거나 삭제된 키 구성 요소를 복원할 수 있습니다. AWS KMS로 키 구성 요소를 가져올 때마다 키 구성 요소를 다운로드하고 다시 암호화해야 합니다.

래핑 퍼블릭 키 사용

다운로드에는 래핑 퍼블릭 키라고도 불리는 AWS 계정에 대해 고유한 퍼블릭 키가 포함되어 있습니다.

키 구성 요소를 가져오기 전에 래핑 퍼블릭 키로 키 구성 요소를 암호화한 후, 암호화된 키 구성 요소를 AWS KMS에 업로드합니다. AWS KMS가 암호화된 키 구성 요소를 수신하면 해당 프라이빗 키로 키 구성 요소를 해독한 다음, AES 대칭 키로 키 구성 요소를 다시 암호화합니다. 이 모든 작업은 AWS KMS 하드웨어 보안 모듈(HSM) 내에서 이루어집니다.

가져오기 토큰 사용

다운로드에는 키 구성 요소를 올바르게 가져올 수 있도록 하는 메타데이터가 포함된 가져오기 토큰이 포함되어 있습니다. 암호화된 키 구성 요소를 AWS KMS에 업로드할 때 이 단계에 다운로드한 가져오기 토큰을 업로드해야 합니다.

래핑 퍼블릭 키 사양 선택

가져오는 동안 키 구성 요소를 보호하려면 AWS KMS에서 다운로드한 래핑 퍼블릭 키와 지원되는 래핑 알고리즘을 사용하여 암호화합니다. 래핑 퍼블릭 키와 가져오기 토큰을 다운로드하기 전에 키 사양을 선택합니다. 모든 래핑 키 쌍은 AWS KMS 하드웨어 보안 모듈(HSM)에서 생성됩니다. 프라이빗 키는 절대 일반 텍스트로 HSM을 벗어나지 않습니다.

래핑 퍼블릭 키의 키 사양에 따라 AWS KMS로 전송되는 동안 키 구성 요소를 보호하는 RSA 키 쌍의 키 길이가 결정됩니다. 일반적으로, 실용적이고 가장 긴 래핑 퍼블릭 키를 사용하는 것이 좋습니다. 다양한 HSM 및 키 관리자를 지원하기 위해 여러 가지 래핑 퍼블릭 키 사양을 제공하고 있습니다.

AWS KMS는 별도로 언급된 경우를 제외하고 모든 유형의 키 구성 요소를 가져오는 데 사용되는 RSA 래핑 키에 대해 다음과 같은 키 사양을 지원합니다.

  • RSA_4096(권장)

  • RSA_3072

  • RSA_2048

    참고

    ECC_NIST_P521 키 구성 요소, RSA_2048 퍼블릭 래핑 키 사양, RSAES_OAEP_SHA_* 래핑 알고리즘과 같은 조합은 지원되지 않습니다.

    ECC_NIST_P521 키 구성 요소를 RSA_2048 퍼블릭 래핑 키로 직접 래핑할 수는 없습니다. 더 큰 래핑 키나 RSA_AES_KEY_WRAP_SHA_* 래핑 알고리즘을 사용하세요.

래핑 알고리즘 선택

가져오는 동안 키 구성 요소를 보호하려면 다운로드한 래핑 퍼블릭 키와 지원되는 래핑 알고리즘을 사용하여 암호화합니다.

AWS KMS는 몇 가지 표준 RSA 래핑 알고리즘과 2단계 하이브리드 래핑 알고리즘을 지원합니다. 일반적으로, 가져온 키 구성 요소 및 래핑 키 사양과 호환되는 가장 안전한 래핑 알고리즘을 사용하는 것이 좋습니다. 일반적으로 키 구성 요소를 보호하는 하드웨어 보안 모듈(HSM) 또는 키 관리 시스템에서 지원되는 알고리즘을 선택합니다.

다음 테이블에는 각 유형의 키 구성 요소 및 KMS 키에 지원되는 래핑 알고리즘이 나와 있습니다. 알고리즘은 기본 설정 순서대로 나열됩니다.

키 구성 요소 지원되는 래핑 알고리즘 및 사양
대칭 암호화 키

256비트 AES 키

128비트 SM4 키(중국 리전 전용)

래핑 알고리즘:

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

더 이상 사용되지 않는 래핑 알고리즘:

RSAES_PKCS1_V1

참고

2023년 10월 10일부터 RSAES_PKCS1_V1_5 래핑 알고리즘은 지원되지 AWS KMS 않습니다.

래핑 키 사양:

RSA_2048

RSA_3072

RSA_4096

비대칭 RSA 프라이빗 키
래핑 알고리즘:

RSA_AES_KEY_WRAP_SHA_256

RSA_AES_KEY_WRAP_SHA_1

래핑 키 사양:

RSA_2048

RSA_3072

RSA_4096

비대칭 타원 곡선(ECC) 프라이빗 키

RSA_2048 래핑 키 사양과 함께 RSAES_OAEP_SHA_* 래핑 알고리즘을 사용하여 ECC_NIST_P521 키 구성 요소를 래핑할 수 없습니다.

래핑 알고리즘:

RSA_AES_KEY_WRAP_SHA_256

RSA_AES_KEY_WRAP_SHA_1

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

래핑 키 사양:

RSA_2048

RSA_3072

RSA_4096

HMAC 키
래핑 알고리즘:

RSAES_OAEP_SHA_256

RSAES_OAEP_SHA_1

래핑 키 사양:

RSA_2048

RSA_3072

RSA_4096

  • RSA_AES_KEY_WRAP_SHA_256 -생성한 AES 대칭 키로 키 구성 요소를 암호화한 다음 다운로드한 RSA 퍼블릭 래핑 키와 RSAES_OAEP_SHA_256 래핑 알고리즘을 사용하여 AES 대칭 키를 암호화하는 2단계 하이브리드 래핑 알고리즘입니다.

    RSA 프라이빗 키 구성 요소를 래핑하려면 RSA_AES_KEY_WRAP_SHA_* 래핑 알고리즘이 필요합니다.

  • RSA_AES_KEY_WRAP_SHA_1 -생성한 AES 대칭 키로 키 구성 요소를 암호화한 다음 다운로드한 RSA 래핑 퍼블릭 키와 RSAES_OAEP_SHA_1 래핑 알고리즘을 사용하여 AES 대칭 키를 암호화하는 2단계 하이브리드 래핑 알고리즘입니다.

    RSA 프라이빗 키 구성 요소를 래핑하려면 RSA_AES_KEY_WRAP_SHA_* 래핑 알고리즘이 필요합니다.

  • RSAES_OAEP_SHA_256 – SHA-256 해시 기능이 있는 OAEP(Optimal Asymmetric Encryption Padding)를 사용한 RSA 암호화 알고리즘입니다.

  • RSAES_OAEP_SHA_1 – SHA-1 해시 기능이 있는 OAEP(Optimal Asymmetric Encryption Padding)를 사용한 RSA 암호화 알고리즘입니다.

  • RSAES_PKCS1_V1_5(더 이상 사용되지 않음, AWS KMS는 2023년 10월 10일부터 RSAES_PKCS1_V1_5 래핑 알고리즘은 지원하지 않음) - PKCS #1 버전 1.5에 정의된 패딩 형식을 사용한 RSA 암호화 알고리즘입니다.

래핑 퍼블릭 키 및 가져오기 토큰 다운로드(콘솔)

AWS KMS 콘솔을 이용해 래핑 퍼블릭 키와 가져오기 토큰을 다운로드할 수 있습니다.

  1. 방금 키 구성 요소 없이 KMS 키를 생성하기 위한 절차를 마쳤고 현재 Download wrapping key and import token(래핑 키 및 가져오기 키 다운로드) 페이지에 있다면 단계 9으로 넘어갑니다.

  2. AWS Management Console에 로그인하고 https://console.aws.amazon.com/kms에서 AWS Key Management Service(AWS KMS) 콘솔을 엽니다.

  3. AWS 리전을 변경하려면 페이지의 오른쪽 상단 모서리에 있는 리전 선택기를 사용합니다.

  4. 탐색 창에서 고객 관리형 키를 선택합니다.

    작은 정보

    키 구성 요소는 오리진외부(키 구성 요소 가져오기)인 KMS 키로만 가져올 수 있습니다. 이는 키 구성 요소 없이 KMS 키가 생성되었음을 나타냅니다. 테이블에 Origin(오리진) 열을 추가하려면 페이지의 오른쪽 상단 모서리에서 설정 아이콘( )을 선택합니다. Origin(오리진)을 활성화한 다음, 확인을 선택합니다.

  5. 가져오기가 보류 중인 KMS 키의 별칭 또는 키 ID를 선택합니다.

  6. 암호화 구성(Cryptographic configuration) 탭을 선택하고 해당 값을 봅니다. 일반 구성 섹션 아래에 탭이 있습니다.

    키 구성 요소는 오리진외부(키 구성 요소 가져오기)인 KMS 키로만 가져올 수 있습니다. 가져온 키 구성 요소가 있는 KMS 키를 생성하는 방법은 키용 AWS KMS 키 자료 가져오기 섹션을 참조하십시오.

  7. 키 구성 요소 탭을 선택한 다음 키 구성 요소 가져오기를 선택합니다.

    키 구성 요소 탭은 오리진 값이 외부(키 구성 요소 가져오기)인 KMS 키에 대해서만 표시됩니다.

  8. 래핑 키 사양 선택에서 KMS 키의 구성을 선택합니다. 이 키를 생성한 후에는 키 사양을 변경할 수 없습니다.

  9. [Select wrapping algorithm]에서 키 구성 요소 암호화에 사용할 옵션을 선택합니다. 옵션에 대한 자세한 내용은 래핑 알고리즘 선택을 참조하십시오.

  10. 래핑 퍼블릭 키 및 가져오기 토큰 다운로드를 선택한 후 파일을 저장합니다.

    다음 옵션이 있는 경우 지금 프로세스를 계속하려면 다음을 선택합니다. 나중에 계속하려면 취소를 선택합니다.

  11. 앞 단계에 저장한 .zip 파일(Import_Parameters_<key_id>_<timestamp>)의 압축을 해제합니다.

    폴더에는 다음 파일이 포함되어 있습니다.

    • WrappingPublicKey.bin이라는 이름의 파일에 퍼블릭 키를 래핑하는 RSA입니다.

    • ImportToken.bin이라는 이름의 파일에 있는 가져오기 토큰입니다.

    • README.txt라는 이름의 텍스트 파일입니다. 이 파일에는 래핑 퍼블릭 키, 키 구성 요소를 암호화하는 데 사용할 래핑 알고리즘, 래핑 퍼블릭 키와 가져오기 토큰이 만료되는 날짜와 시간에 대한 정보가 포함되어 있습니다.

  12. 프로세스를 계속하려면 키 구성 요소를 암호화를 참조하십시오.

래핑 퍼블릭 키 및 가져오기 토큰 다운로드(AWS KMS API)

공개 키를 다운로드하고 토큰을 가져오려면 API를 사용하십시오. GetParametersForImport 가져온 키 구성 요소와 연결될 KMS 키를 지정합니다. 이 KMS 키에는 EXTERNAL오리진 값이 있어야 합니다.

이 예시에서는 RSA_AES_KEY_WRAP_SHA_256 래핑 알고리즘, RSA_3072 래핑 퍼블릭 키 사양, 예시 키 ID를 지정합니다. 이러한 예시 값을 다운로드에 사용할 수 있는 유효한 값으로 바꾸세요. 키 ID의 경우, 이 작업에 키 ID키 ARN을 사용할 수 있지만 별칭 이름이나 별칭 ARN은 사용할 수 없습니다.

$ aws kms get-parameters-for-import \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --wrapping-algorithm RSA_AES_KEY_WRAP_SHA_256 \ --wrapping-key-spec RSA_3072

명령이 제대로 실행되면 다음과 비슷한 출력이 표시됩니다.

{ "ParametersValidTo": 1568290320.0, "PublicKey": "public key (base64 encoded)", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "ImportToken": "import token (base64 encoded)" }

다음 단계를 위한 데이터를 준비하려면 퍼블릭 키와 가져오기 토큰을 base64로 디코딩하고 디코딩된 값을 파일에 저장합니다.

퍼블릭 키 및 가져오기 토큰을 base64로 디코딩하려면

  1. base64로 인코딩된 퍼블릭 키(예제 출력에 퍼블릭 키(base64로 인코딩됨)로 표시됨)를 복사하여 새 파일에 붙여넣은 후 파일을 저장합니다. PublicKey.b64와 같은 파일을 설명하는 이름을 지정합니다.

  2. OpenSSL을 이용해 파일의 콘텐츠를 base64로 디코딩하고 디코딩된 데이터를 새 파일에 저장합니다. 다음 예제는 앞의 단계에서 저장한 파일(PublicKey.b64)의 데이터를 디코딩하고 출력을 WrappingPublicKey.bin이라는 새 파일에 저장합니다.

    $ openssl enc -d -base64 -A -in PublicKey.b64 -out WrappingPublicKey.bin
  3. base64로 인코딩된 가져오기 토큰(예제 출력에 가져오기 토큰(base64로 인코딩됨)로 표시됨)을 복사하여 새 파일에 붙여넣은 후 파일을 저장합니다. importtoken.b64처럼 파일을 설명하는 이름을 지정합니다.

  4. OpenSSL을 이용해 파일의 콘텐츠를 base64로 디코딩하고 디코딩된 데이터를 새 파일에 저장합니다. 다음 예제는 앞의 단계에서 저장한 파일(ImportToken.b64)의 데이터를 디코딩하고 출력을 ImportToken.bin이라는 새 파일에 저장합니다.

    $ openssl enc -d -base64 -A -in importtoken.b64 -out ImportToken.bin

3단계: 키 구성 요소 암호화로 이동합니다.