본문 바로가기

Security/Cryptology

[1] 암호화 키, 교환 및 암호화

1 키의 공유

 

전장에서 대칭키 암호화와 대칭키 암호화에 사용 되는 비밀키에 대해서 공부 했었습니다. 잠깐 언급 했었지만, 키의 길이에 상관 없이(DES 56비트의 키, 3DES 168 비트의 키 혹은 AES 256 비트의 키 등) 대칭키 암호화에서는 암호문을 교환하려는 사람들 사이에는 같은 키를 공유해야 하는데 여기서 문제가 발생 할 수 있습니다.

그 이유는 대칭키 암호화의 기본적인 메커니즘 때문으로, 대칭키 암호화에서는 같은 키를 사용하여 암호화, 복호화가 이루어 지기 때문에 평문을 암호문으로 암호화 하는 사람과, 그 암호문을 평문으로 복호화 하는 사람은 같은 키를 가지고 있어야만 합니다. 이런 필수적인 같은 키의 공유라는 사항 때문에 여러 가지 문제가 발생할 수 있는 거죠.

이번 절에서는 키의 공유에 관한 몇 가지 개념을 알아 봅니다. 그리고 대칭키 암호화 통신을 하는 사람들은 같은 키를 공유하여야 한다는 대칭키 암호화의 메커니즘으로 인하여 발생하는 문제에 대해 알아 봅니다.

 

 

1.1 키 교환이란 무엇일까

 

대칭키 암호화 통신을 하기 위해서는 키를 제 3자로의 유출 없이 안전하게 공유 하는 방법이 있어야 합니다. 기밀성을 보장하기 위해서 사용되는 대칭키 암호화 통신에서 키의 유출은 곧 기밀성을 보장 받지 못한다는 것을 의미 합니다.

앨리스와 밥은 대칭키 암호화를 이용해서 서로 암호화된 메시지를 교환 하기로 했습니다. 앨리스와 밥은 암호화된 메시지를 교환 하기 전에 서로 대칭키 암호화에 사용될 키를 정해야 합니다. 그리고 이 키는 절대로 앨리스와 밥 이외의 사람에게 알려지면 안될 것입니다. 키가 어떤 제 3의 인물, 즉 악의적인 해커에게 알려진다면 이 해커는 앨리스와 밥이 보내고 받는 메시지를 복호화 할 수 있습니다. 이렇게 된다면 메시지의 기밀성은 깨어 지게 되겠죠.

따라서, 키의 안전한 공유는, 대칭키 암호화에 있어서 가장 우선적으로 이루어져야 할 단계 입니다. 대칭키 암호화 통신에서 키를 양쪽이 공유할 때 주로 사용 되는 방법은 다음과 같습니다.

l 한 사람이 키를 만들어 암호화 통신을 할 상대방에게 그 키를 전달하는 방법으로 키를 서로 공유 합니다.

 

 

 

[그림 3-001.tif] 앨리스는 키를 만들어 밥에게 보낸다

l 중간의 어떤 사람이 키를 만들어서 암호화 통신을 하려는 사람들에게 키를 전달 합니다. 키를 만든 사람은 실제로 암호화 통신을 하진 않습니다. 키를 나누어 준 후, 자신은 그 키를 사용하지 않으므로 삭제 합니다.

 

 

 

 

[그림 3-002.tif] 샐리는 키를 만들어 앨리스와 밥에게 모두 보낸다

l 암호화 통신을 하려고 하는 양 쪽 모두가 참여하여 특수한 프로토콜을 사용하여 공동의 키를 만듭니다.

 

 

 

 

[그림 3-003.tif] 앨리스와 밥은 키를 만드는 특수한 프로토콜을 사용해서 키를 공유한다

위에서 설명한 것들을 모두 키 교환 이라고 합니다. 말 그대로 키 교환은 키의 공유를 위해 키를 생성하여 교환 하는 것입니다.

키 분배 라는 개념도 있습니다. 키 분배는 크게 보면 키 교환과 거의 같은 의미로 쓰일 수도 있습니다. 일반적으로 키 분배는 위의 2번의 상황에 더 맞습니다. 그렇지만 거의 키 분배는 키 교환 이란 말과 비슷하게 쓰인다고 생각 하시면 됩니다.

대칭키 암호화 통신을 위해서는 통신 을 하려는 사람들끼리 키를 항상 교환해서 공유 해야 하지만, 앞쪽에서도 이야기 했듯이 이로 인한 문제가 발생 할 수 있습니다. 중요한 문제는 다음의 두 가지 입니다.

l 키 유출 문제 : 키를 교환 할 때 중간에서 누군가가 키를 가로 챌 수 있습니다.

l 키 관리 문제 : 키를 공유하는 사람들이 많아 질수록 , 그리고 암호화 통신을 하는 횟수가 많아 질수록 키의 관리가 어려워 집니다.

위 두 가지 문제점은 다음 절부터 좀더 자세히 알아 볼 것입니다.

 

1.2 키 유출에 대한 문제

 

암호화 통신을 하는 상대방 이외의 제 3자에게 키가 유출 될 수 있는 경우는 다음의 두 가지입니다.

1) 키를 저장하고 있는 장소에서 키를 훔친다.

2) 키를 상대방에게 보낼 때 키를 가로챈다.

1)번의 경우는 아주 흔히 일어 날수 있는 일이며, 충분히 주의를 해야 합니다.

하지만 이번 장은 암호화 통신을 할 때의 키의 교환에 관한 내용에 대해서 설명 하므로 1번에 관한 내용은 이번 장에서는 생각 하지 않겠습니다. 하지만 이 책의 후반부에 실제의 암호화 프로그래밍을 배우면서 키를 안전하게 보관 하는 방법에 대해서 설명 합니다.

2)번이 이번 장에서 다루는 중요한 문제 입니다. 키 전달과 키 분배 작업 같은 키를 교환 하는 작업 시에 제3의 인물인 해커는 언제나 키를 중간에서 가로 챌 수 있는 가능성이 존재 합니다. 키가 유출 되면 큰 문제가 될 것입니다.

 

 

 

 

[그림 3-004.tif] 키의 전달 과정에서 해커가 키를 가로 챌 수 있다

 

 

 

 

 

[그림 3-005.tif] 키의 분배 과정에서 해커가 키를 가로 챌 수 있다

그럼 키를 안전하게 , 외부의 유출 없이 키를 메시지를 보내고 받을 상대방에게 전달 할 수 있는 방법은 무엇일까요. 이장의 후반부에서 그 방법을 설명 합니다.

 

[잠깐 시작]

혼자만을 위한 키 사용

상대방과 암호화된 메시지 교환을 위해 대칭키 암호화를 사용하는 경우가 아니라 파일이나 문서를 암호화 하는 경우라면 키를 다른 사람에게 전달할 필요가 없겠죠. 암호화 하는 사람과 , 복호화 하는 사람이 자기 자신이니까요.

이런 경우도 대칭키 암호화가 흔히 쓰이는 분야의 하나 입니다. 이런 경우는 키의 교환이 필요 없습니다. 하지만 키의 유출이 없도록 잘 보관해야 하겠죠.

[잠깐 끝]

 

 

1.3 키 관리에 대한 문제

 

암호화된 메시지를 교환 하는 사람이 많아 질 경우 메시지 교환을 하는 사람 마다 서로 다른 키를 구별하여 가지고 있어야 합니다.

앨리스는 밥과 대칭키 암호화를 이용해서 암호화된 메시지를 교환 합니다. 앨리스는 밥과의 메시지 교환을 위한 키를 비밀스럽게 보관하고 있겠죠. 그러나 엘리스는 밥 이외에도 셀리라는 사람과도 암호화된 메시지를 교환하게 되었습니다. 엘리스는 밥과 암호화 통신을 하기 위한 키를 보관 하고 있던 것과 마찬가지로 셀리와의 메시지 교환을 위한 키도 보관하고 있어야 합니다.

문제는 이렇게 한, 두 명의 키를 보관 하고 있을 때에는 별 문제가 없겠지만, 수백 명과 암호화된 메시지 교환을 한다면 수백 개의 비밀키를 보관, 관리 해야 하므로 문제가 발생할 수 있습니다.

 

 

 

 

[그림 3-006.tif] 앨리스는 밥 과만 암호화 통신을 하므로 밥과의 암호화 통신을 키 하나만 관리 하면 된다.

 

 

 

 

[그림 3-007.tif] 앨리스는 많은 사람들과 암호화 통신을 하므로 많은 키를 관리 해야 한다.

그 문제는 아마 다음과 같을 것입니다.

 

l 많은 키를 생성하고 그 키를 상대방에게 전달해야 한다. 혹은, 많은 키를 전달 받아야 한다.

l 각 키와 그 키를 공유하는 상대방을 명확히 파악하고 있어야 한다. 메시지를 주고 받는 암호화 통신을 하는 상대방에 해당하는 키를 사용 해야 한다.

l 모든 키를 외부의 유출 없이 자신만의 안전한 장소에 안전하게 보관해야 한다.

키가 많으면 많을수록 위의 문제는 더 커질 것입니다. 이런 키 관리의 문제를 해결 하는 방법을 이장의 후반부에서 설명 할 것입니다.

다음 절에서는 키 교환 문제나, 키 관리 문제를 근본적으로는 해결 하지는 못하지만, 어느 정도는 완화 할 수 있는 방법을 소개 합니다.

 

2 키 분배 센터  

 

 

2.1 키 분배 센터를 이용한 키 교환

키 교환을 하기 위한 방법 중 하나는 키 분배 센터 ( KDC , Key Distribution Center ) 라고 하는 중간의 기관을 이용하는 것입니다.

이 키 분배 센터가 하는 역할은 간단합니다. 비밀키를 만들어서 대칭키 암호화 통신을 원하는 사람들에게 키를 나누어 주는 것입니다. 그리고 키 분배 센터를 사용한 키 교환을 하기 위한 중요한 조건은 키를 분배 받는 모든 사람은 키 분배 센터를 신뢰해야 한다는 것입니다.

키 분배 센터를 이용해서 얻는 이익은 키를 대칭키 암호화 통신을 하는 사람들은 키를 생성 할 필요가 없다는 것, 그리고 키의 관리를 키 분배 센터가 해줄 수 있다는 것입니다. 또한 키를 암호화 해서 전송 하기 때문에 중간에 누군가가 키를 몰래 얻는다고 해도 키는 암호화되어 있으므로 그 키를 사용 할 수는 없습니다.

예를 한번 보겠습니다.

셀리라는 사람이 키 분배 센터 역할을 한다고 합시다. 앨리스 와 밥 은 셀리를 신뢰 합니다. 앨리스와 셀리는 서로 비밀키를 공유 하고 있고 , 밥과 셀리도 서로 비밀키를 공유 하고 있습니다.

그러나 앨리스와 밥은 비밀키를 서로 공유하고 있지 않습니다. 하지만 앨리스와 밥은 대칭키 암호화 통신을 하기 위해 비밀키를 공유하고 싶어 합니다.

 

 

 

[그림 3-008.tif] 앨리스와 밥은 둘 다 신뢰하는 사람인 샐리를 통해서 키를 교환하려 한다

앨리스와 밥은 둘 모두 신뢰하는 제3의 곳인 셀리를 통해서 비밀키를 공유 할 수 있습니다.

셀리는 비밀키를 생성합니다. 그리고 앨리스와 공유하고 있는 비밀키를 이용해서 새로 만든 비밀키를 암호화 합니다. 그리고 이 암호문을 앨리스에게 보냅니다. 앨리스는 셀리와 공유하고 있는 비밀키를 이용해서 복호화 합니다.

그리고 , 마찬가지로 셀리는 밥과 공유하고 있는 비밀키를 이용해서 새로 만든 비밀키를 암호화 합니다. 그리고 이 암호문을 밥에게 보냅니다. 밥은 셀리와 공유하고 있는 비밀키를 이용해서 복호화 합니다.

결과로 앨리스와 밥은 셀리로 부터 안전하게 같은 비밀키를 분배 받았습니다. 이제 앨리스와 밥은 서로 같은 비밀키를 공유하게 되었고 , 이 키를 사용하여 대칭키 암호화 통신을 할 수 있습니다.

 

 

 

 

[그림 3-009.tif] 샐리는 앨리스와 밥에게 공통된 키를 암호화 하여 나누어 준다

셀리는 밥과 앨리스에게 키를 분배 한 후에 보안상의 이유로 밥과 앨리스의 비밀키를 자신에게서 삭제 하는 것이 좋을 것입니다. 그렇지만 앨리스와 밥 누군가가 키를 분실할 경우를 대비해 키를 보관하는 것도 필요 합니다. 이런 역할을 하는 것을 키 복구 센터 라고 합니다. 대부분 키 분배 센터는 키 복구 센터의 역할도 합니다. 

 

이렇듯 비록 키 분배 센터를 통해서 비밀키를 안전하게 공유 할 수 있지만, 사실 현실에서 이런 키 분배 센터를 사용 해서 키를 교환하는 것은 매우 드뭅니다. 그 이유는, 대칭키 암호화 통신을 하는 사용자가 많아 질수록 키의 관리가 어렵기 때문입니다.

사용자가 많아질때 키의 관리가 얼마나 어려운지 한번 볼까요?

2.2 키 분배 센터를 이용한 키 교환의 문제점

위의 예에서는 셀리가 키 분배 센터의 역할을 했습니다. 앨리스와 밥 , 그리고 키 분배 센터 자신인 셀리만 존재 했던 위의 예에서 키 분배 센터인 셀리는 다음의 3개의 키를 보관하고 있어야 합니다.

l 앨리스와 셀리 간의 비밀키

l 밥 과 셀리 간의 비밀키

l 앨리스와 밥 간의 비밀키

그러나 서로 신뢰하는 관계이며 서로 대칭키 암호화 통신을 할 수 있는 이들 셋의 관계에 톰이라는 사람이 새로 참여 하게 되었습니다. 이제 셋에서 넷으로 한명이 늘어 났고, 셀리가 관리해야 하는 사람이 셋으로 늘어나게 되었습니다.

그렇게 된다면 셀리는 다음의 6개의 키를 보관하고 있어야 합니다.

l 앨리스와 셀리 간의 비밀키

l 밥 과 셀리 간의 비밀키

l 앨리스와 밥 간의 비밀키

l 앨리스와 톰 간의 비밀키

l 밥과 톰 간의 비밀키

l 셀리와 톰 간의 비밀키

일반적으로 n명이 서로 대칭키 암호화 통신을 하기 위해서 키 분배 센터 는 n(n-1)/2 개의 키를 보관하고 있어야 합니다. 만약 1000명이 서로 대칭키 암호화 통신을 한다면, 1000*999/2 , 499500 개의 키를 보관하고 있어야 겠죠.

현실적으로 이렇게 많은 키를 관리하기는 불가능 합니다.

그리고 , 이렇게 키를 한곳에서 관리한다는 것은 매우 위험합니다. 키 분배 센터는 모든 키가 보관되어 있다는 이유로 해커의 가장 중요한 공격 목표가 될 것입니다. 그리고 이곳의 비밀 정보들이 외부에 유출된다면 모든 사용자들의 키가 유출 될 것입니다.

다음 절에서는 키 분배 센터 없이 효과적으로 키를 교환하는 방법을 알아보겠습니다. 위에서 설명 했던 키 교환과 키 관리의 문제를 매우 획기적으로 해결 할 수 있는 방법입니다.

 

 

Post By- HOSA

Write BY- CISA