KMS에 자신의 대칭 및 비 대칭 키 가져오는 방안

3분 분량
콘텐츠 수준: 기초
3

해당 기사에서는 AWS Key Management Service(KMS)에 자신이 관리하는 대칭 및 비 대칭키를 가져오는 방안에 대해서 설명합니다.

AWS Key Management Service(KMS) 키는 암호화 키를 논리적으로 표현한 것입니다. KMS 키의 메타데이터에는 데이터를 암호화하고 해독하는 데 사용되는 키 자료의 ID가 포함됩니다. KMS 키를 생성하면 기본적으로 AWS KMS는 해당 KMS 키에 대한 키 구성 요소를 생성합니다. 그러나 키 자료 없이 KMS 키를 생성한 다음 자체 키 자료를 해당 KMS 키로 가져올 수 있습니다. 이 기능은 종종 “Bring Your Own Key”(BYOK)라고 알려져 있습니다. [1]

또한 2023년 6월부터 비대칭 키와 HMAC 키를 KMS로 가져와서 AWS 서비스와 자체 애플리케이션 내에서 사용할 수 있게 되었습니다. [2] 자체 키를 가져오면 키의 생성, 수명 주기 관리 및 내구성을 직접 제어할 수 있습니다. 만료 기간을 설정하거나 언제든지 키를 삭제하고 다시 가져와서 가져온 키의 가용성을 제어할 수 있습니다.

사전 요구 사항

  • Ubuntu Server 20.04 LTS (HVM), SSD Volume Type
  • AWS CLI Version 2

대칭 키(Symmetric key) 가져오기

1. 키 구성 요소 없이 KMS 대칭 키 생성 [3]

aws kms create-key --origin EXTERNAL

여기에 이미지 설명 입력

2. 래핑 공개 키 및 Import 토큰 다운로드 [4]

export KEY=`aws kms --region "Your Region" get-parameters-for-import --key-id "Your Key ID" --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey, Token:ImportToken}' --output text`

echo $KEY | awk '{print $1}' > PublicKey.b64
echo $KEY | awk '{print $2}' > ImportToken.b64

* base64 decoding using openssl
openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
openssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin

3. 256비트 대칭 키 생성

openssl rand -out PlaintextKeyMaterial.bin 32

4. 키 구성 요소 암호화 [5]

openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

5. 키 구성 요소 가져오기 [6]

aws kms --region "Your Region" import-key-material --key-id "Your Key ID" --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

여기에 이미지 설명 입력

비 대칭 키(Asymmetric Key) 가져오기

1. 키 구성 요소 없이 KMS 비 대칭 키 생성 [3]

aws kms create-key --key-spec ECC_SECG_P256K1 --key-usage SIGN_VERIFY --origin EXTERNAL

여기에 이미지 설명 입력

2. 래핑 공개 키 및 Import 토큰 다운로드 [4]

export KEY=`aws kms --region "Your Region" get-parameters-for-import --key-id "Your Key ID" --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_4096 --query '{Key:PublicKey, Token:ImportToken}' --output text`

echo $KEY | awk '{print $1}' > PublicKey.b64
echo $KEY | awk '{print $2}' > ImportToken.b64

* base64 decoding using openssl
openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
openssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin

3. ECC 개인 키 생성

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

4. 키 구성 요소 암호화 [5]

openssl pkeyutl -in ECC_SECG_P256K1_PrivateKey.der -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 -pkeyopt rsa_mgf1_md:sha256

5. 키 구성 요소 가져오기 [6]

aws kms --region "Your Region" import-key-material --key-id "Your Key ID" --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

여기에 이미지 설명 입력


관련 정보

[1] 키의 키 자료 가져오기 AWS KMS - https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/importing-keys.html

[2] AWS KMS, 이제 비대칭 키 및 HMAC 키 가져오기 지원 - https://aws.amazon.com/ko/about-aws/whats-new/2023/06/aws-kms-importing-asymmetric-hmac-keys/

[3] 키 구성 요소 가져오기 1단계: 키 구성 요소 없이 AWS KMS key 생성 - https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/importing-keys-create-cmk.html

[4] 키 자료 가져오기 2단계: 래핑 공개 키 및 가져오기 토큰 다운로드 - https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/importing-keys-get-public-key-and-token.html

[5] 키 구성 요소 가져오기 3단계: 키 구성 요소 암호화 - https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/importing-keys-encrypt-key-material.html

[6] 키 구성 요소 가져오기 4단계: 키 구성 요소 가져오기 - https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/importing-keys-import-key-material.html

1 댓글

좋은글 감사합니다.

profile pictureAWS
지원 엔지니어
답글을 게시함 8달 전

관련 콘텐츠