초보 개발자

AWS KMS 암복호화 과정 본문

AWS

AWS KMS 암복호화 과정

taehyeki 2024. 1. 7. 18:37

KMS에서 커스텀 키(마스터 키)를 생성, 이를 이용해 데이터 키를 생성할 수 있다.

커스텀 키는 전적으로  AWS에서 관리하며 로컬로 내보내기가 불가능하다. 

커스텀 키를 이용해서 데이터 키를 생성한다. 이 데이터 키를 이용해서 파일을 암호화한다. 그리고 마스터 키를 이용해서 데이터 키를 암호화 한 뒤, 데이터 키와 암호화 되기 전의 파일을 삭제한다. 이 후 복호화 하고 싶을 때 커스텀 키를 사용해서 암호화 된 데이터 키를 데이터 키로 바꾼 뒤 이 데이터 키를 이용해서 암호화 된 데이터를 복호화 한다. 

 

 

남에게 보여주고 싶지 않은 나의 비밀 일기장 텍스트 파일이 있다고 해보자. 이 파일을 내 바탕화면에 두었다.

어느날 친구가 놀러와서 내가 화장실에 있는동안 비밀 일기장 파일을 연다고 가정하면 내 비밀스러운 일기가 다 공개되어버린다.

 

이 때 키라는걸 사용해서 암호화를 한다. 암호화를 하면 내 일기장에 적혀있는 텍스트가 한글이아닌 특수문자로 변환되어 친구가 읽고싶어도 읽을 수 없는 형태로 변경이 된다.

 

키 역시 바탕화면에 같이 두었다고 해보자. 컴퓨터를 좀 잘하는 친구라면, 이 키를 이용해서 복호화 할 수도 있다. 이렇다면 내가 키를 이용해서 암호화 한 의미가 사라져버리게 된다.

 

그렇다면 키 역시 암호화를 시키면 어떨까?.  새로운 키2를 만들어서 이 키2로 키1(위에서 사용한 키)를 암호화 시켜버린다. 그리고 키2를 바탕화면이 아닌 찾기 어려운 폴더에 넣어두었다. 

 

이 경우라면, 내가 화장실 간 동안 친구가 바탕화면에 있는 키1(키2에 의해 암호화 됨)를 사용해서 비밀 일기장을 해독할 수 없다. 비밀일기장을 해독하기 위해선 키2를 이용해서 키1을 복호화 한 뒤 복호화 된 키1이 필요하다.

 

친구가 옆에 컴퓨터를 더 잘하는 친구2가 키2의 위치를 찾아버린다면, 앞서 키3던 키4던 몇개를 만들더라도 같은 문제가 발생할 것이다.

 

그래서 나는 어려운 폴더에 있는 키2를 USB에 넣고 그 USB를 금고에 넣어두었다.

이렇게 되면 나는 비밀 일기장을 읽고싶을 때, 금고에 있는 키2를 이용해서 키1을 복호화 하고, 이 키1을 통해서 비밀일기장을 복호화 하면 된다. 

 

물론 금고가 털리면 똑같겠지만, 전에 비하면 더욱 안전해진 것이 아닐까.

 

마스터 키(AWS에서 만든 CMK) : 키2

데이터 키(마스터키로 만든 암호화 키) : 키1

금고 : AWS KMS서비스

비밀 일기장 : 개인정보와 같은 중요한 정보

 

이게 일반적인 흐름인데.

지속적으로 데이터를 암호화하고 싶다면, 같은 데이터 키로 암호화를 해야할 것이고, 당연히 같은 데이터 키로 복호화를 해야할 것이다.

즉 암호화 할 때마다 커스텀 키를 이용해서 새로운 데이터 키를 생성해서 암호화해버리면, 관리해야할 키가 수 없이 많아질 것이다.

--> 그럼 단 하나의 데이터 키를 발급, 이를 암호화 해둠. 이 암호화 된 데이터키를 어딘가에 저장함.

암호화 하고 싶은 데이터가 있다면 아래의 과정을 반복해야하나 ? 이게 베스트 프랙티스란건가? 이에 대한 해답을 쉽게 찾을 수 없었다. 실무에선 어떤식으로 사용한다는 거지.. 

 

암호화

1. 암호화 된 데이터 키를 가지고 와서  복호화 한 뒤,

2. 이 복호화된 데이터키로 데이터를 암호화

 

복호화

1. 암호화 된 데이터 키를 가지고 와서  복호화 한 뒤,

2. 이 복호화된 데이터키로 암호화 된 데이터를 복호화

 

 

 

 

 

 

 

 

'AWS' 카테고리의 다른 글

[CDK] Unable to resolve AWS account to use.  (0) 2024.01.13
AWS Snapshot storage  (0) 2023.08.07
AWS RDS 관련 질문  (0) 2023.06.22
AWS Compute optimizer를 활용하여 EC2타입 변경.  (0) 2023.06.21
AWS RTO, RPO  (0) 2023.06.03