키 구성 요소 가져오기 3단계: 키 구성 요소 암호화 - AWS Key Management Service

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

키 구성 요소 가져오기 3단계: 키 구성 요소 암호화

퍼블릭 키 및 가져오기 토큰을 다운로드한 후에는 다운로드한 퍼블릭 키와 지정한 래핑 알고리즘을 사용하여 키 구성 요소를 암호화합니다. 퍼블릭 키 또는 가져오기 토큰을 교체해야 하거나 래핑 알고리즘을 변경해야 하는 경우 새 퍼블릭 키와 가져오기 토큰을 다운로드해야 합니다. AWS KMS 지원하는 퍼블릭 키와 래핑 알고리즘에 대한 자세한 내용은 래핑 퍼블릭 키 사양 선택 및 을 참조하십시오래핑 알고리즘 선택.

키 구성 요소는 이진 형식이어야 합니다. 자세한 내용은 가져온 키 구성 요소에 대한 요구 사항섹션을 참조하세요.

참고

비대칭 키 페어의 경우 개인 키만 암호화하여 가져오십시오. AWS KMS 개인 키에서 공개 키를 가져옵니다.

ECC_ NIST _P521 키 자료, RSA _2048 공개 래핑 키 사양, _ _* 래핑 알고리즘 등의 조합이 NOT 지원됩니다. RSAES OAEP SHA

NIST__P521 키 자료를 ECC _2048 공개 래핑 키로 직접 래핑할 수는 없습니다. RSA 더 큰 래핑 키나 RSA _ _ _ AES KEY _ WRAP _* 래핑 알고리즘을 사용하십시오. SHA

RSA_ _ _ AES KEY WRAP _ SHA _256 및 _ RSA _ _ _ AES KEY WRAP _ SHA _1 래핑 알고리즘은 중국 지역에서 지원되지 않습니다.

일반적으로 하드웨어 보안 모듈 (HSM) 또는 키 관리 시스템에서 키 자료를 내보낼 때는 키 자료를 암호화합니다. 키 자료를 바이너리 형식으로 내보내는 방법에 대한 자세한 내용은 사용 중인 HSM 또는 키 관리 시스템의 설명서를 참조하십시오. Open을 사용한 개념 증명 데모를 제공하는 다음 섹션을 참조할 수도 SSL 있습니다.

키 구성 요소를 암호화하는 경우 퍼블릭 키와 가져오기 토큰을 다운로드할 때 지정한 동일한 래핑 알고리즘을 사용합니다. 지정한 래핑 알고리즘을 찾으려면 관련 GetParametersForImport요청의 CloudTrail 로그 이벤트를 참조하십시오.

테스트용 키 구성 요소 생성

다음 Open SSL 명령은 테스트를 위해 지원되는 각 유형의 키 자료를 생성합니다. 이러한 예제는 테스트 및 proof-of-concept 데모용으로만 제공됩니다. 프로덕션 시스템의 경우 보안이 보안 모듈이나 키 관리 시스템과 같은 보다 안전한 방법을 사용하여 키 구성 요소를 생성합니다.

비대칭 키 쌍의 개인 키를 DER -encoded 형식으로 변환하려면 키 자료 생성 명령을 다음 명령으로 파이프하십시오. openssl pkcs8 topk8파라미터는 Open이 개인 키를 입력으로 받아 #8 형식의 키를 SSL 반환하도록 지시합니다. PKCS (기본 동작은 반대입니다.)

openssl pkcs8 -topk8 -outform der -nocrypt

다음 명령은 지원되는 각 유형에 대한 테스트 키 구성 요소를 생성합니다.

  • 대칭 암호화 키(32바이트)

    이 명령은 256비트 대칭 키(32바이트 임의 문자열)를 생성하여 PlaintextKeyMaterial.bin 파일에 저장합니다. 이 키 구성 요소를 인코딩할 필요는 없습니다.

    openssl rand -out PlaintextKeyMaterial.bin 32

    중국 리전에서만 128비트 대칭 키(16바이트 임의 문자열)를 생성해야 합니다.

    openssl rand -out PlaintextKeyMaterial.bin 16
  • HMAC키

    이 명령은 지정된 크기의 임의 바이트 문자열을 생성합니다. 이 키 구성 요소를 인코딩할 필요는 없습니다.

    키 길이는 키의 HMAC 키 사양에 정의된 길이와 일치해야 합니다KMS. 예를 들어 키가 HMAC _384인 경우 384비트 (48바이트) KMS 키를 가져와야 합니다.

    openssl rand -out HMAC_224_PlaintextKey.bin 28 openssl rand -out HMAC_256_PlaintextKey.bin 32 openssl rand -out HMAC_384_PlaintextKey.bin 48 openssl rand -out HMAC_512_PlaintextKey.bin 64
  • RSA프라이빗 키

    openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_2048_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:3072 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_3072_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_4096_PrivateKey.der
  • ECC프라이빗 키

    openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P256_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-384 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P384_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-521 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P521_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:secp256k1 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_SECG_P256K1_PrivateKey.der
  • SM2개인 키 (중국 지역만 해당)

    openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 | openssl pkcs8 -topk8 -outform der -nocrypt > SM2_PrivateKey.der

Open을 사용하여 키 자료를 암호화하는 예 SSL

다음 예는 Open을 SSL 사용하여 다운로드한 공개 키로 키 자료를 암호화하는 방법을 보여줍니다. SM2공개 키 (중국 지역만 해당) 를 사용하여 키 자료를 암호화하려면 클래스를 사용하십시오. SM2OfflineOperationHelper 각 래핑 알고리즘이 지원하는 주요 자료 유형에 대한 자세한 내용은 을 참조하십시오래핑 알고리즘 선택.

중요

이 예시는 개념 증명 데모일 뿐입니다. 프로덕션 시스템의 경우 보다 안전한 방법 (예: 상용 HSM 또는 키 관리 시스템) 을 사용하여 키 자료를 생성하고 저장하십시오.

ECC_ NIST _P521 키 자료, RSA _2048 공개 래핑 키 사양 및 _ _ _* 래핑 알고리즘의 조합이 NOT 지원됩니다. RSAES OAEP SHA

NIST__P521 키 자료를 ECC _2048 공개 래핑 키로 직접 래핑할 수는 없습니다. RSA 더 큰 래핑 키나 RSA _ _ _ AES KEY _ WRAP _* 래핑 알고리즘을 사용하십시오. SHA

RSAES_OAEP_SHA_1

AWS KMS 대칭 암호화 키 (RSAESOAEP_DEFAULT), 타원 곡선 (ECC) 개인 키, 개인 키 및 키에 대해 SYMMETRIC _ _ SHA _1을 지원합니다. SM2 HMAC

RSAES_ OAEP _ SHA _1은 개인 키에는 지원되지 않습니다. RSA 또한 RSA _2048 공개 래핑 키를 _ _ SHA _* 래핑 알고리즘과 함께 사용하여 RSAES OAEP _ _P521 (NISTsecp521r1) 개인 키를 래핑할 수 없습니다. ECC 더 큰 공개 래핑 키나 _ _ _ 래핑 알고리즘을 사용해야 합니다. RSA AES KEY WRAP

다음 예제는 다운로드한 공개 키와 RSAES _ OAEP _ SHA _1 래핑 알고리즘을 사용하여 키 자료를 암호화하고 파일에 저장합니다. EncryptedKeyMaterial.bin

이 예제에서는 다음이 적용됩니다.

  • WrappingPublicKey.bin 다운로드한 래핑 공개 키가 들어 있는 파일입니다.

  • PlaintextKeyMaterial.bin 암호화하는 키 자료 (예: 또는) 가 들어 있는 파일입니다. PlaintextKeyMaterial.bin HMAC_384_PlaintextKey.bin ECC_NIST_P521_PrivateKey.der

$ openssl pkeyutl \ -encrypt \ -in PlaintextKeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha1
RSAES_OAEP_SHA_256

AWS KMS 대칭 암호화 키 (RSAESOAEP_DEFAULT), 타원 곡선 (ECC) 개인 키, 개인 키 및 키에 대해 SYMMETRIC _ _ SHA _256을 지원합니다. SM2 HMAC

RSAES_ OAEP _ SHA _256은 개인 키에는 지원되지 않습니다. RSA 또한 RSA _2048 공개 래핑 키를 _ _ SHA _* 래핑 알고리즘과 함께 사용하여 RSAES OAEP _ _P521 (NISTsecp521r1) 개인 키를 래핑할 수 ECC 없습니다. 더 큰 공개 키나 _ _ 래핑 알고리즘을 사용해야 합니다. RSA AES KEY WRAP

다음 예제는 다운로드한 퍼블릭 키와 RSAES OAEP _ SHA _256 래핑 알고리즘을 사용하여 키 자료를 암호화하고 파일에 저장합니다. EncryptedKeyMaterial.bin

이 예제에서는 다음이 적용됩니다.

  • WrappingPublicKey.bin 다운로드한 공개 래핑 키가 들어 있는 파일입니다. 콘솔에서 퍼블릭 키를 다운로드한 경우, 이 파일 이름은 wrappingKey_KMS key_key_ID_timestamp(예: wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909)입니다.

  • PlaintextKeyMaterial.bin 암호화하는 키 자료 (예:, 또는) 가 들어 있는 파일입니다. PlaintextKeyMaterial.bin HMAC_384_PlaintextKey.bin ECC_NIST_P521_PrivateKey.der

$ openssl pkeyutl \ -encrypt \ -in PlaintextKeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256 \ -pkeyopt rsa_mgf1_md:sha256
RSA_AES_KEY_WRAP_SHA_1

RSA_ _ _ AES KEY WRAP _ SHA _1 래핑 알고리즘에는 두 가지 암호화 작업이 포함됩니다.

  1. 생성한 대칭 키와 AES 대칭 암호화 알고리즘을 사용하여 키 자료를 암호화합니다. AES

  2. 다운로드한 공개 키와 RSAES _ _ OAEP _1 래핑 알고리즘으로 사용한 AES 대칭 키를 암호화합니다. SHA

RSA_ _ _ AES KEY WRAP _ SHA _1 래핑 알고리즘에는 Open 버전 3이 필요합니다. SSL x 이상.

  1. 256비트 AES 대칭 암호화 키 생성

    이 명령은 256개의 임의 비트로 구성된 AES 대칭 암호화 키를 생성하여 파일에 저장합니다. aes-key.bin

    # Generate a 32-byte AES symmetric encryption key $ openssl rand -out aes-key.bin 32
  2. 대칭 암호화 키를 사용하여 키 자료를 암호화합니다. AES

    이 명령은 AES 대칭 암호화 키로 키 자료를 암호화하고 암호화된 키 자료를 파일에 저장합니다. key-material-wrapped.bin

    이 예시 명령에서는 다음과 같습니다.

    • PlaintextKeyMaterial.bin 가져오려는 주요 자료 (예:,, 또는) 가 들어 있는 파일입니다. PlaintextKeyMaterial.bin HMAC_384_PlaintextKey.bin RSA_3072_PrivateKey.der ECC_NIST_P521_PrivateKey.der

    • aes-key.bin 이전 명령에서 생성한 256비트 AES 대칭 암호화 키가 들어 있는 파일입니다.

    # Encrypt your key material with the AES symmetric encryption key $ openssl enc -id-aes256-wrap-pad \ -K "$(xxd -p < aes-key.bin | tr -d '\n')" \ -iv A65959A6 \ -in PlaintextKeyMaterial.bin\ -out key-material-wrapped.bin
  3. 공개 키로 AES 대칭 암호화 키를 암호화합니다.

    이 명령은 다운로드한 공개 키와 RSAES _ OAEP _ SHA _1 래핑 알고리즘을 사용하여 AES 대칭 암호화 키를 암호화하고 DER -인코딩한 다음 파일에 저장합니다. aes-key-wrapped.bin

    이 예시 명령에서는 다음과 같습니다.

    • WrappingPublicKey.bin 다운로드한 공개 래핑 키가 들어 있는 파일입니다. 콘솔에서 퍼블릭 키를 다운로드한 경우, 이 파일 이름은 wrappingKey_KMS key_key_ID_timestamp(예: wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909)입니다.

    • aes-key.bin 이 예시 시퀀스의 첫 번째 명령에서 생성한 256비트 AES 대칭 암호화 키가 들어 있는 파일입니다.

    # Encrypt your AES symmetric encryption key with the downloaded public key $ openssl pkeyutl \ -encrypt \ -in aes-key.bin \ -out aes-key-wrapped.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha1 \ -pkeyopt rsa_mgf1_md:sha1
  4. 가져올 파일 생성

    파일을 암호화된 키 자료와 연결하고 파일을 암호화된 키로 연결합니다. AES EncryptedKeyMaterial.bin 파일에 저장합니다. 이 파일은 4단계: 키 구성 요소 가져오기에서 가져올 파일입니다.

    이 예시 명령에서는 다음과 같습니다.

    • key-material-wrapped.bin 암호화된 키 자료가 들어 있는 파일입니다.

    • aes-key-wrapped.bin 암호화된 AES 암호화 키가 들어 있는 파일입니다.

    # Combine the encrypted AES key and encrypted key material in a file $ cat aes-key-wrapped.bin key-material-wrapped.bin > EncryptedKeyMaterial.bin
RSA_AES_KEY_WRAP_SHA_256

RSA_ _ _ AES KEY WRAP _ SHA _256 래핑 알고리즘에는 두 가지 암호화 작업이 포함됩니다.

  1. 직접 생성한 대칭 키와 AES 대칭 암호화 알고리즘을 사용하여 키 자료를 암호화합니다. AES

  2. 다운로드한 퍼블릭 키와 RSAES _ OAEP _256 래핑 알고리즘으로 사용한 AES 대칭 키를 암호화합니다. SHA

RSA_ _ _ AES KEY WRAP _ SHA _256 래핑 알고리즘에는 오픈 버전 3이 필요합니다. SSL x 이상.

  1. 256비트 AES 대칭 암호화 키 생성

    이 명령은 256개의 임의 비트로 구성된 AES 대칭 암호화 키를 생성하여 파일에 저장합니다. aes-key.bin

    # Generate a 32-byte AES symmetric encryption key $ openssl rand -out aes-key.bin 32
  2. 대칭 암호화 키를 사용하여 키 자료를 암호화합니다. AES

    이 명령은 AES 대칭 암호화 키로 키 자료를 암호화하고 암호화된 키 자료를 파일에 저장합니다. key-material-wrapped.bin

    이 예시 명령에서는 다음과 같습니다.

    • PlaintextKeyMaterial.bin 가져오려는 주요 자료 (예:,, 또는) 가 들어 있는 파일입니다. PlaintextKeyMaterial.bin HMAC_384_PlaintextKey.bin RSA_3072_PrivateKey.der ECC_NIST_P521_PrivateKey.der

    • aes-key.bin 이전 명령에서 생성한 256비트 AES 대칭 암호화 키가 들어 있는 파일입니다.

    # Encrypt your key material with the AES symmetric encryption key $ openssl enc -id-aes256-wrap-pad \ -K "$(xxd -p < aes-key.bin | tr -d '\n')" \ -iv A65959A6 \ -in PlaintextKeyMaterial.bin\ -out key-material-wrapped.bin
  3. 공개 키로 AES 대칭 암호화 키를 암호화합니다.

    이 명령은 다운로드한 공개 키와 RSAES _ OAEP _ SHA _256 래핑 알고리즘을 사용하여 AES 대칭 암호화 키를 암호화하고 DER -인코딩한 다음 파일에 저장합니다. aes-key-wrapped.bin

    이 예시 명령에서는 다음과 같습니다.

    • WrappingPublicKey.bin 다운로드한 공개 래핑 키가 들어 있는 파일입니다. 콘솔에서 퍼블릭 키를 다운로드한 경우, 이 파일 이름은 wrappingKey_KMS key_key_ID_timestamp(예: wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909)입니다.

    • aes-key.bin 이 예시 시퀀스의 첫 번째 명령에서 생성한 256비트 AES 대칭 암호화 키가 들어 있는 파일입니다.

    # Encrypt your AES symmetric encryption key with the downloaded public key $ openssl pkeyutl \ -encrypt \ -in aes-key.bin \ -out aes-key-wrapped.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256 \ -pkeyopt rsa_mgf1_md:sha256
  4. 가져올 파일 생성

    파일을 암호화된 키 자료와 연결하고 파일을 암호화된 키로 연결합니다. AES EncryptedKeyMaterial.bin 파일에 저장합니다. 이 파일은 4단계: 키 구성 요소 가져오기에서 가져올 파일입니다.

    이 예시 명령에서는 다음과 같습니다.

    • key-material-wrapped.bin 암호화된 키 자료가 들어 있는 파일입니다.

    • aes-key-wrapped.bin 암호화된 AES 암호화 키가 들어 있는 파일입니다.

    # Combine the encrypted AES key and encrypted key material in a file $ cat aes-key-wrapped.bin key-material-wrapped.bin > EncryptedKeyMaterial.bin

4단계: 키 구성 요소 가져오기로 이동합니다.