본문 바로가기

정보보안기사/암호학

대칭키와 공개키 비교

대칭키

○ 암호화키 = 복호화키

 

※ 보통 다른 블로그나 책에서는 암호화키와 복호화키를 암호키로 통칭하여 부른다. 나의 블로그에서는 암호화키와 복호화키를 정확히 구분하기 위해 각 명칭을 사용하도록 하겠다.

(대칭키에서는 암호화 키와 복호화 키를 따로 구분지을 필요가 없다. 왜냐! 두 키가 동일하기 때문에..)

 

궁금한 점 1. 키가 동일하다는 것을 보면 보안상 문제가 있지는 않을까?

 

당연히 동일한 키를 사용하면 제3자가 키 하나만 탈취해도 암복호화가 동시에 일어날 수 있기 때문에 취약하다.

 

궁금한 점 2. 그럼 왜 사용해??

 

보안적인 취약점을 안고도 대칭키는 빠른 속도로 암복호화가 이뤄지는 장점은 있다.

 

궁금한 점 3. 데이터를 주고 받는 두 대상간에 키를 어떻게 공유를 할까?  

 

사실 대칭키하면 제일먼저 화두되는 것이 이 전달방식이다.

 

암호화 하는 대상(A)과 복호화 하려는 대상(B)사이에서 암복호화하는 과정을 각각 수행하기 위해서는 서로 어떤 키를 사용하는지 미리 협의가 되어야 한다.

 

대칭키의 기본적인 전달방식의 메커니즘은 단순하다. 그냥 B가 A에게 데이터를 요구하면 B는 암호화키로 암호화를 하고 A에게는 암호화된 데이터와 키 값을 알려주는 것이다. 혹은 데이터를 요구 시 키 값을 미리 알려주고 데이터를 보내든지.. 

 

온라인 상임을 가정할때 정보통신망을 통해 서로 이야기(키 값을 무엇으로 할지)가 오고가야 한다. 그러나 네트워크 중간에서 해당 이야기를 누군가가 엿들어 키 값을 알게되면... 그야말로 암호화는 무용지물이게 되는 것이다.

 

이를 방지하기 위해 개발된 것이 공개키이다.

 

대칭키의 제일 큰 고민거리 : 키 공유 방법(키 교환)

 

고민거리 해결 방법 : 키 배포 센터에 의한 해결, Diffle-Hellman 키 교환 방법에 의한 해결, 공개키 암호에 의한 해결

(자세한 설명은 아래 참고)

 

공개키(비대칭키)

● 암호화키 ≠ 복호화 키

 

일단 대칭키의 약점을 다시 정리해보면,

- 암호화할때랑 복호화할때 동일한 키 값을 가지고 수행하기 때문에,

키를 공유하는 과정에서(네트워크 중간에서) 탈취될 경우 제3자가 복호화 가능 또는 복호화 한 데이터의 값을 변조 후 다시 암호화하여 전달 가능(패킷의 암호화가 되어 있지 않거나 복호화가 가능하다는 것은 전제)

 

 

대칭키의 약점(위에서 정리)을 해결할 수 있는 방법은 키를 공유하는 과정 즉, 네트워크 중간에서 탈취되어도 복호화가 불가능 하도록 하는 것이며 또한, 탈취된다고 해도 복호화가 거의 불가능하게 해야 한다는 점이다.

 

이를 구현하기 위한 대안이 암호화 키와 복호화 키를 서로 다르게 하는 것이다.

 

일명! 공개키와 개인키!!!

공개키는 암호화 키를 말하며 개인 키는 복호화 키를 말한다.

 

이제부터 좀 헷갈리고 나중에 가면 다시 까먹는 내용...

 

● 공개키 개념.

 

A와 B가 데이터를 주고 받기 위해 해당 데이터를 암호화할 경우,

아래와 같은 조건을 만족시킨다.

 

1) 각자 다른 암호화 키와 복호화 키를 소유하고 있다.

2) 암호화 키와 복호화 키는 다르다.

 

앞서 언급한 바에 따르면 대칭키의 약점을 보완한다고 하였다. 그럼 대칭키의 약점을 중심으로 어떠한 점이 보완되었는지를 파악하며 개념을 이해해보자.

 

- 키가 동일할 경우 보안상 취약하지 않을까? (대칭키 약점)

 

=> A와 B는 서로 다른 각자의 암호화 키와 복호화 키를 가지고 있다. 그래서 A의 암호화 키로 암호화할 경우 A의 복호

 

화 키로 복호화를 할 수 있다.(B도 마찬가지)

 

그럼 여기서 궁금증 하나. 그럼 A와 B가 어떻게 데이터를 주고 받아?

 

내가 말하고 싶은 내용의 핵심포인트이다.

 

이부분은 궁금한 점 3번과 엮이는 문제이다.

 

- 데이터를 주고 받는 두 대상간에 키를 어떻게 공유를 할까? (대칭키 약점)

 

 

B가 A에게 데이터를 요청하였을 때,

B는 A에게 "나만 복호화 할 수 있도록 내 암호화 키를 먼저 알려 줄께! 그걸로 암호화 해서 나에게 전달해줘~!"와 같은 말을 한다.

그럼 A는 B의 암호화 키로 암호화 하여 전달할 뿐 복호화는 할 수 없다. 그 어느누구도..

딱 눈치가 오지 않나??ㅋㅋ(나만오나..)

공개키는 통신하려는 대상들간에 서로 자신의 공개키를 공유하고 복호화 키는 자신들만 가지고 있게 되는 것이다.

즉, 공개키는 누가 알든 상관 없어 막뿌려..ㅋㅋ

 

사진출처 : https://cholol.tistory.com/426h

 

▶종류

대칭키

DES, 3DES, AES, RC4, SEED(국내개발), ARIA(국내개발)등이 존재한다.

 

공개키(비대칭키)

RSA, ECC 등이 존재한다.

 

===============================================================================

키 배포 센터(KDC, Key Distribution Center)

- 대칭키 전송방식에서 문제가 되었던 키 공유문제를 해결하고자 KDC가 중간에서 대칭키를 서로에게 분배해준다.

 

① HostA는 HostB와 연결하고 싶어 KDC에게 요청

② 연결요청 허락 & KDC와 사전에 주고받은 개별 키(일회용 세션키라고도 함)를 가지고 세션키(Host B와 공유할 공개키)를 암호화 하여 전달

③ Host B와 사전에 주고받은 개별 키로 세션 키를 암호화 하여 전달

④ Host A는 세션 키로 데이터를 암호화 하여 전달

 

<-> 키 사전분배

키 사전분배란 TA(Trusted Authority)가 사전에 사용자(A,B) 사이의 대칭키를 만들어서 비밀경로를 통하여 전달하는 방식이다.

키 배포 센터는 키 사전분배의 약점을 보완한 방식이라 볼수 있다.

키 사전분배 방법은 TA와 네트워크상의 모든 사용자 사이에 안전한 통로가 필요하다. 그러나 사용자가 많을 경우 TA는 물로 사용자들도 많은 키를 관리해야 하는 문제점을 가지고 있다.

이와는 달리 키 배포 센터를 이용한 방법은 TA가 네트워크의 모든 사용자와 필요할때 마다 키를 공유하는 방법이다. 즉, 사용자 A와 B가 비밀통신을 원할 때 일시적으로 TA가 키를 생성하여 A와 B가 복호화 할 수 있도록 암호화된 상태로 키를 전달하여 사용케 하고ㅗ 통신이 끝나면 키를 버리는 방법이다.

 

 

'정보보안기사 > 암호학' 카테고리의 다른 글

전자서명  (0) 2020.05.24
대칭키 - 블록암호 알고리즘  (0) 2019.03.03
[암호학] 스트림암호 - 동기식vs비동기식  (0) 2019.02.18