내용으로 건너뛰기

OpenSSL을 사용하여 AWS KMS 비대칭 키로 파일을 암호화하려면 어떻게 해야 합니까?

3분 분량
0

OpenSSL을 사용하여 AWS Key Management Service(AWS KMS) 키로 파일을 암호화하고 싶습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

RSA 키 페어 생성, 퍼블릭 키 다운로드, AES 256비트 키 생성

다음 단계를 완료하십시오.

  1. RSA 키 페어를 생성합니다.
  2. 퍼블릭 키를 다운로드하려면 get-public-key AWS CLI 명령을 실행합니다.
    aws kms get-public-key --key-id your-key-id --output text --query 'PublicKey' > RSAPublic.b64 && base64 -d RSAPublic.b64 > RSAPublic.bin
    참고: your-key-id를 비대칭 키 ID로 바꾸십시오. --query 함수는 퍼블릭 키를 가져온 다음 base64 파일을 DER 키로 디코딩합니다.
  3. 다음 OpenSSL rand 명령을 실행하여 고급 암호화 표준(AES) 256비트 키를 생성합니다.
    openssl rand -base64 32 > key.bin

데이터 암호화

다음 단계를 완료하십시오.

  1. key.bin 파일을 사용하여 다음 OpenSSL enc 명령을 실행합니다.
    openssl enc -aes-256-cbc -salt -pbkdf2 -in FILE_TO_ENCRYPT -out FILE_TO_ENCRYPT.enc -pass file:./key.bin
    참고: FILE_TO_ENCRYPT를 해당 파일 이름으로 바꾸십시오. -pbkdf2 명령은 OpenSSL 1.1.1에서만 사용할 수 있습니다. Amazon Linux 2 Amazon Machine Image(AMI)는 OpenSSL 1.0.2를 사용하며 -pbkdf2 명령을 지원하지 않습니다.
  2. AWS KMS 퍼블릭 키로 key.bin 파일을 암호화하십시오. 이렇게 하면 키 데이터가 보호됩니다. AWS KMS 프라이빗 키에 액세스할 수 있는 사용자만 key.bin 파일에 액세스할 수 있습니다. 이렇게 하려면 OpenSSL pkeyutl 명령을 실행합니다.
    openssl pkeyutl -in key.bin -out enc.key.bin -inkey RSAPublic.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
    참고: pkeyutl 명령은 AWS KMS API RSAES_OAEP_SHA_256에 의한 암호 해독을 지원하는 암호화 알고리즘을 사용합니다. AWS KMS 퍼블릭 키 RSAPublic.bin은 AES 256비트 키를 암호화하고 enc.key.bin이라는 새 파일을 생성합니다.
  3. key.bin 파일을 암호화하여 사용자가 enc.key.bin 파일의 암호를 해독해야 key.bin에 액세스할 수 있도록 하려면 rm AWS CLI 명령을 실행합니다.
    aws s3 rm key.bin && rm FILE_TO_ENCRYPT
    참고: FILE_TO_ENCRYPT를 해당 파일 이름으로 바꾸십시오.
  4. (선택 사항) 암호화하려고 한 원본 파일을 삭제하여 사용자가 파일에 액세스할 수 없도록 합니다.

이제 다음과 같은 리소스를 사용할 수 있습니다.

  • FILE_TO_ENCRYPT.enc 파일의 암호화된 데이터
  • 암호화된 AES 256비트 키 enc.key.bin
  • AWS KMS 퍼블릭 키 RSAPublic.bin

참고: 암호화된 데이터를 가진 사용자가 암호를 해독할 파일을 보내 주어야 합니다.

파일 암호 해독

암호화된 데이터를 검색하려면 enc.key.bin의 암호를 해독한 다음 해당 키를 사용하여 FILE_TO_ENCRYPT.enc 파일의 암호를 해독합니다.

참고: AWS KMS 프라이빗 키는 일반 텍스트로 볼 수 없기 때문에 AWS KMS API에 액세스할 수 있어야 합니다.

다음 단계를 완료하십시오.

  1. enc.key.bin 파일의 암호를 해독하여 AWS KMS API로 전송하려면 decrypt AWS CLI 명령을 실행합니다.
    aws kms decrypt --key-id your-key-id --ciphertext-blob fileb://enc.key.bin --encryption-algorithm RSAES_OAEP_SHA_256 --output text --query 'Plaintext' | base64 --decode > decryptedKey.bin
    참고: your-key-id를 해당 키 ID로 바꾸십시오. --query 함수는 일반 텍스트를 선택한 다음 base64 값을 decryptedKey.bin 파일에 디코딩합니다.
  2. 해독된 파일을 출력하려면 다음 OpenSSL enc 명령을 실행할 때 decryptedKey.bin 파일을 사용하십시오.
    openssl enc -d -aes-256-cbc -pbkdf2 -in FILE_TO_ENCRYPT.enc -out DECRYPTED_FILE -pass file:./decryptedKey.bin
    참고: DECRYPTED_FILE을 해당 파일 이름으로 바꾸십시오.
  3. 암호화 및 암호 해독이 성공적으로 완료되었는지 확인하려면 DECRYPTED_FILE과 FILE_TO_ENCRYPT를 비교하십시오.
AWS 공식업데이트됨 일 년 전