AWS

[AWS] KMS symmetric key import

동스토리 ㅣ 2023. 6. 27. 12:52

반응형

0. 개요

KMS 키의 메타데이터에는 데이터를 암호화하고 해독하는 데 사용되는 키 자료의 ID가 포함됩니다. KMS 키를 생성할 때 기본적으로 AWS KMS는 해당 KMS 키에 대한 키 자료를 생성합니다. 그러나 키 자료 없이 KMS 키를 생성한 다음 자체 키 자료를 해당 KMS 키로 가져와 사용할 수 있습니다. CLI를 통해서 KMS key 생성 및 가져오기를 보여드리도록 하겠습니다.

 

1. 키 자료 없이 KMS 키 생성

aws kms create-key --origin EXTERNAL

 

2.  256 비트 대칭 키 생성

openssl rand -out PlaintextKeyMaterial.bin 32

 

3. wrapping public key and import token 가져오기

export KEY=`aws kms --region *region name* get-parameters-for-import --key-id *Key ID from KMS output* --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

 

4. Binary 파일로 변환

openssl을 사용하여 base64로 디코딩 후 binary 파일에 저장합니다.

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

 

5. wrapping public key를 사용하여 키 구성 요소 암호화

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

이 과정에서 MAC OS를 사용하시는 분은 아래 에러가 발생할 수 있습니다. 그러한 이유는 MAC이 SHA-1을 RSAES-OAEP 해시 함수로 설정하였기에 에러가 발생합니다. openssl 버전을 업그레이드 또는 MAC말고 다른 OS에서 실행하시면 됩니다.(저는 Linux에서 하였습니다.)

An error occurred (InvalidCiphertextException) when calling the ImportKeyMaterial operation:

 

6. 암호화된 키 구성 요소 가져오기

aws kms --region $REGION import-key-material --key-id $KEY_ID --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

 

반응형