aws-kms-봉투암호화

소개

서비스를 배포하고 운영하는 과정에서 sensitive 한 데이터를 보관하고자 할 경우에는 암호화하여 저장하는 것이 무엇보다 보안적으로 중요합니다.

AWS 를 통하여 서비스 및 인프라를 운영하고 있다면 다들 봉투 암호화를 들어보셨을 텐데요.
AWS 에서는 데이터를 암호화를 하고자 할때는 KMS 를 이용한 봉투 암호화 사용을 권장하고 있습니다.

그렇다면 이 봉투 암호화가 어떤 이점이 있고, 암호화 과정이 세부적으로 어떻게 이루어 지는지를 한번 정리해보려 합니다.

KMS 봉투 암호화의 이점

KMS 봉투암호화는 Data Key 와 Master Key 두가지 키를 이용하여 암호화하게 되는데요. 데이터를 직접 암호화하는 Data Key 와, Data Key 자체를 암호화하는 Master Key 를 이용합니다. 이러한 방식을 통해,

  • 데이터 암호화시 사용되는 Data Key 를 별도 저장할 필요가 없으며,
  • Key Rotate 가 더욱 용이한 이점을 가지게 됩니다.

봉투 암호화 기본 보안 강화 원리

  • 데이터는 Data Key 로 암호화되고,
  • Data Key 는 KMS의 Master Key 로 암호화됩니다.
  • Master Key 는 KMS 안에서 안전하게 보관되어 지고, 사용자가 직접 액세스할 수 없어 보안 강화 유지가 가능해 집니다.
  • 키 회전도 가능
    • Data Key 변화 없이, KMS 에서 회전된 Master Key 로 Data Key 를 재암호활 수 있어 키회전이 가능합니다.

KMS 암호화 과정

흔히 암호화 과정은 어플리케이션 내에서 SDK 를 이용하여 암호화 후, 데이터베이스에 저장하거나 다른 storage 에 저장을 하게 됩니다. 아니면 AWS CLI 를 이용하여 별도로 plain text 를 암호화 하여 storage 에 저장할 수 도 있겠지요.

아래는 이러한 AWS CLI 또는 SDK 를 이용한 애플리케이션 내부에서 봉투 암호화가 어떤 순서로 이루어지는지를 나타냅니다.

핵심은 데이터를 암/복호화할때 사용하는 Data Key 를 나중에 복호화를 위해 별도 보관하지 않아도 되는 것입니다.

  • 암호화 과정은 먼저 SDK 에서 KMS 로 Data-Key 생성을 요청합니다.
  • KMS 에서는 가지고 있는 KMS-Key(Master Key) 로 Data-Key 를 암호화하여 Data-Key + KMS-Key 로 암호화된 Data-Key 두가지를 응답해 줍니다.
  • SDK 에서는 받은 Data-Key 로 평문을 암호화하여 암화문을 만들고, KMS-Key 로 암호화된 Data-Key 를 함께 묶어 최종 봉투암호문을 만들게 됩니다.

KMS 복호화 과정

이번에는 복호화 과정이 어떤 순서로 이루어지는지를 보면 아래와 같습니다.

  • 암호화된 데이터인 봉투암호문에는 암호문 + 암호화된 Data-Key 를 포함합니다.
  • 복호화시 SDK 에서는 봉투암호문에서 암호문, 암호화된 Data-Key를 각각 추출합니다.
  • 여기서 Data-Key 를 추출하기 위해서 암호화된 Data-Key 를 이용하게 됩니다.
    • Data-Key 를 추출하기 위해 암호화된 Data-Key 를 KMS 전달하고,
    • KMS 에서는 안전히 가지고 있는 KMS-Key(Master Key) 로 암호화된 Data-Key 를 복호화하여 Data-Key 를 추출하게 됩니다.
  • 추출된 Data-Key 로 암호문에서 평문을 최종적을 추출하게 됩니다.

마치며

봉투암호화 방식은 다양한 보안적 키관리 로직에 사용이 되고 있습니다. 암/복호화 방식을 정확히 이해한다면 다른 서비스에서의 안전한 키관리에서도 이용 가능할 듯합니다.

Refs

AWS Document – 봉투 암호화

  • https://docs.aws.amazon.com/ko_kr/encryption-sdk/latest/developer-guide/concepts.html

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Back To Top