본문 바로가기
쿤즈 Secure/암호이야기

대칭키 암호화의 원리! 너와 나의 비밀 데이터!

by :)Koon 2020. 8. 15.

지난 포스팅에서 비밀번호 암호화와 관련하여 단방향 암호화에 대해서 올렸습니다. 우리가 사용하는 비밀번호는 단방향 암호화로 포털사이트 DB(데이터베이스) 에 저장되고 있습니다. 절대로 복호화를 하여 원래의 문장이나 텍스트를 가져올 수 있는 암호화가 단방향 암호화입니다.

 

 

[암호] 내 비밀번호는 단방향 암호화 (Hash) 로 저장한다

이번 포스팅에서는 암호이야기 첫 포스팅으로 모든 포털 사이트 혹은 모든 웹 사이트에서 비밀번호를 저장하는 방법에 대해서 이야기를 하려합니다. 암호화에는 두가지 방법이 있습니다. 암호�

koonsland.tistory.com

 

 

이번 포스팅에서는 두 사람의 비밀정보를 주고 받을 때 사용하는 암호화 방법을 알려드릴까 합니다. 이는 대칭키 암호화라고 합니다. 서로간에 주고받는 데이터를 암호화하고 복호화 하기 위해서 사용하는 암호화 방법입니다. 그럼 어떤 방법으로 암호화를 진행하는지 한번 알아보도록 하겠습니다.


사전 용어 설명

가장 먼저 용어부터 맞춰놓고 시작하겠습니다.

원문이란 원래의 문장을 의미합니다. 우리가 눈으로 보고 읽을 수 있는 문장이라 생각하시면 됩니다.

암호문이란 원문을 암호화해서 우리가 알아보지 못하는 문장으로 바꿔버리는 것입니다.

그래서 원문을 암호문으로 바꾸는 작업을 암호화, 암호문을 원문으로 다시 바꾸는 과정으로 복호화라고 합니다.

 

그리고 암호관련 설명을 하기 위해서는 앨리스와 밥이라는 가상의 인물이 등장합니다. 이는 영어에서 Alice, Bob 으로 알파벳 순서대로 이름이 지어진 것으로 보시면 될것 같네요.


너와 나의 연결 암호키. 그리고 공유된 대칭키

암호키는 원문을 암호문으로 바꿀때 반드시 사용하는 열쇠라고 생각하시면 됩니다. 자물쇠가 있는 금고가 있고 이 금고의 자물쇠를 열수 있는 키는 단 하나 뿐입니다. 암호화도 마찬가지 원리입니다. 원문에 자물쇠를 걸어서 암호문을 만들기 위한 열쇠가 존재하고 이 열쇠로 내가 아닌 다른 누군가가 볼 수 없게 잠궈버리는 것이죠. 따라서 열쇠 관리가 가장 중요한 부분입니다.

 

 

이제 이 열쇠를 암호키라고 부르겠습니다. 그리고 이 암호키를 이용해서 내가 가진 모든 데이터를 암호화해서 저장할 수 있습니다. 그리고 이 암호키 만으로 복호화가 가능하니 나만의 암호화 데이터가 안성되는 것입니다.

 

그런데 만약 이 데이터를 다른 누군가에게 주고 보게 하고 싶다면 어떻게 해야할까요?

 

네. 그 사람에게 암호키와 데이터를 같이 전달하면 됩니다. 이렇게 전달된 둘만 아는키를 지금부터는 대칭키라고 합니다. 이제 공유된 키를 가진 두 사람은 대칭키로 데이터를 전달받아 볼 수 있습니다. 그럼 예를들어서 다시 한번 살펴볼까요?


대칭키 암호화의 예. 밥과 앨리스의 러브레터

밥은 앨리스와 메세지를 주고 받습니다. 평상시에도 잘 주고 받고 있었습니다. 하루에 있었던 일과나 일어난 일, 오늘 갑자기 생각났던 일, 기타 여러가지 글과 편지들을 주고 받고 있습니다.

그런데 어느날부터인가 밥이 보낸 글에 대한 답장이 이상합니다. 내가 질문한 내용이 아닌 다른 내용의 답글이 포함되어 있는 것입니다. 오늘도 답장은 엉뚱한 소리를 하기 시작합니다. 아무래도 너무 이상해서 앨리스에게 직접 찾아가 물었습니다. 그랬더니 밥이 보낸 글이 아닌 다른 글들이 온 것입니다.

 

이게 어떻게 된 것일까요? 밥이 보낸 데이터가 회손되었습니다. 이유를 이렇습니다.

둘 사이를 질투하던 이브가 밥이 보낸 데이터를 가져가 본인이 읽고 내용일 변경한 뒤에 앨리스에게 보내는 것입니다. 밥이 보낸 데이터 뿐만 아니라 앨리스가 보낸 데이터도 밥에게 바꿔서 전달하고 있었습니다. 즉, 밥과 앨리스 사이에서 이브는 데이터를 본인에게 거쳐가게 하서 모든 데이터를 회손시킨것입니다.

 

이러한 해킹 기법은 MIMT(Man In The Middle) 이라고 합니다. 이는 다음 포스팅에서 다시 자세히 알아보도록 하겠습니다.

 

그럼 해결 방법이 없을까요? 밥과 앨리스는 서로간에 대칭키(암호키) 를 공유합니다. 그리고 앞으로 메세지를 주고받을 때에는 반드시 이 대칭키를 사용해서 암호화해서 보내고 받아서 복호화해서 보도록 합니다. 그리고 이 대칭키는 절대로 다른사람과는 공유하지 않도록 합니다. 그럼 어떻게 될까요?

이제부터 밥과 앨리스가 보낸 메세지를 이브는 더이상 확인 할 수 없습니다. 밥과 앨리스가 공유한 대칭키(암호키)를 알 수 없기 때문입니다. 이로써 중요한 데이터를 외부에 노출하지 않고 주고 받을 수 있게 되었습니다.

 

그럼 대칭키는 어떻게 주고받는 것일까요? 이는 다음 포스팅인 공개키 암호화에서 자세기 다루겠습니다.


대칭키 암호화 알고리즘(Algorithm) 종류

대칭키 암호화 알고리즘에는 여러가지 종류가 있습니다. 그리고 알고리즘은 이미 다 오픈되어 있습니다. 사실상 요즘 중요한것은 어떤 알고리즘으로 암호화 했는가가 보다는 암호키를 어떻게 보관하는가가 더 중요한 시점입니다.

 

 

암호화 만큼 중요한 암호키 관리는 어떻게 할까?

이제는 네트워크 상에서 가장 중요한 요소중 하나는 암호화가 아닐까 생각됩니다. 내가 누구가에게 보내는 데이터가 원문 그대로 날아간다면 큰 문제가 될 것입니다. 누군가는 내 정보를 볼 수�

koonsland.tistory.com

대칭키 암호화 알고리즘중 대표적인 몇 개의 알고리즘은 다음과 같습니다.

 

  • DES (Data Encryption Standard)
  • AES (Advanced Encryption Standard)
  • SEED
  • LEA (Lightweight Encryption Algorithm)
  • HIGHT (HIGh security and light weigHT)

각각의 알고리즘의 수학적 원리를 알기에는 너무 힘든 내용이니 간단히 어떤 알고리즘인지만 알아볼께요.


DES (Data Encryption Standard)

DES(데스라고 보통 읽습니다) 알고리즘은 1974년 IBM에서 '루시퍼' 라는 암호 알고리즘을 개발했습니다. 그 이후 1975년 DES 라는 이름으로 정식 암호화 알고리즘을 발표하였습니다. DES는 1979년 국가 표준 암호 알고리즘으로 정착되었고, 암호화 방법이 블록 단위로 암호화 한다고 하여 블록알고리즘이라 불렀습니다.

 

 

DES 알고리즘은 현대 사회로 오면서 개인PC 의 사양이 급격히 높아졌고, 수시간안에 DES 의 암호화를 뚫을 수 있는 취약점이 발견되었습니다. DES 알고리즘은 키가 하나가 존재합니다. 취약점 발견 이후 이 문제를 해결하기 위해서 3TDES(키가 3개인 DES) 를 만들었습니다. 기존의 키 길이는 56비트인데 이 키길이를 3배로 늘린것입니다.

 

키 길이가 늘어나면 암호문을 해독하는는 키를 찾는데 걸리는 시간이 더 오래 걸립니다. 하지만 그만큼 암복호화 시간도 오래 걸립니다.

 

이후 새로운 암호화 알고리즘이 필요했고 2001년 미국에서는 공모전을 통해서 새로운 표준 알고리즘을 정하기로 했습니다. 그리고 등장한 새로운 알고리즘이 바로 AES 입니다.


AES (Advanced Encryption Standard)

DES 에 이어서 두번째로 채택된 표준 알고리즘입니다. 이 역시 블록 알고리즘입니다. 높은 안전성과 속도로 인해서 현재 전 세계에서 가장 많이 사용하는 알고리즘 중 하나입니다.

 

AES 역시 키 길이가 여러개입니다. 128bit, 192bit, 256bit 의 키를 사용하고 있기에 각각의 이름을 AES-128, AES-192, AES-256 으로 부릅니다. 이 역시 하드웨어의 발전 속도로 인해서 현재는 256bit 의 사용을 권고하고 있습니다. 국내에서도 많이 사용하고 있지만 국내에서는 SEED 라는 알고리즘도 매우 많이 사용하고 있습니다.


SEED

SEED알고리즘은 1999년 2월 KISA(한국정보보호진흥원)에서 개발한 128bit, 256bit 의 대칭키 블록 알고리즘입니다. AES 를 보고 만들었다는 알고리즘이긴 하지만 오히려 구조는 DES 와 비슷한 구조를 가지고 있습니다. SEED 는 국산 알고리즘으로 민간암호화 뿐만 아니라 대국민행정서비스용으로도 많이 보급되어 이는 알고리즘입니다.

 

KISA에서는 SEED 뿐만 아니라 ARIA 라는 알고리즘도 개발했습니다. 사실 SEED 는 AES 보다 상대적으로 느린 속도를 가지고 있습니다. 그래서 고성능의 알고리즘이 필요했고 ARIA 를 만들어냈습니다.

 


LEA (Lightweight Encryption Algorithm)

LEA 는 경량알고리즘입니다. 이름 그대로 경량화 된 환경, 즉, 모바일기기와 같은 경량 환경에서 빅데이터, 클라우드등의 데이터들을 주고받을때 이 암호화 알고리즘을 사용하도록 하기위해서 만든 것입니다. 이 알고리즘은 국산 알고리즘입니다. 2013년에 개발되었으며 이 역시 키 길이가 LEA-128, LEA-192, LEA-256으로 나눠진 블록 암호 알고리즘입니다.

 

측정값에 의하면 LEA 알고리즘은 AES 에 비해서 1.5배에서 2배정도의 속도를 낸다고 합니다.


HIGHT (HIGh security and light weigHT)

HIGHT 알고즘 역시 국내에서 개발된 경량 알고리즘입니다. 높은 보안성과 저전력으로 경량화에 제공하기 위한 알고리즘으로 개발되었습니다. 2005년 KISA 와 ETRI 부설 연구소, 고려대학교에서 공동으로 개발한 64비트 블록 암호 알고리즘입니다.


오늘 포스팅에서는 대칭키 암호화에 대해서 알아보았습니다. 대칭키 암호화는 지금도 쓰이고 앞으로도 사용될 암호화 방법입니다. 두 사람의 개인정보를 주고받을때 가장 빠르고 안전하며 간단한 방법입니다.

 

위에 사용하는 알고리즘들은 모두 오픈되어 있는 알고리즘들입니다. 공개되어도 전혀 상관이 없다는 것이죠. 게다가 현대 암호화에서는 암호화 알고리즘보다는 암호키를 어떻게 관리하고 보관하는지가 가장 중요한 이슈입니다. 그래서 키관리 서버(KMS) 를 가지고 있거나 DB 암호화를 사용하는 곳들도 많이 있는것으로 알고 있습니다.

 

다음 포스팅에서는 공개키 암호화에 대해서 알아보도록 하겠습니다.

 

 

댓글