초보 개발자

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' 카테고리의 다른 글

「AWS」EC2에 접속하는 4가지 방법  (0) 2024.09.22
[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