대칭키 vs 비대칭키
대칭키와 비대칭키에 대해 알아보기 전에 암호화란 무엇이고, 어떤 방식으로 이뤄지는 지 알아보자.
암호화란?
- 위키백관에 따르면 “암호화란 특정 정보를 소유한 사람을 제외하고는 누구든지 읽을 수 없게 특정 알고리즘 을 이용하여 정보를 감추는 것“이라고 한다.
- 그럼 해당 암호화된 정보는 복호화하는 과정이 없다면 그 암호화된 정보의 평문을 알아볼 수 없게 된다.
즉 암호화는 특정 알고리즘을 이용해 감추고 싶은 정보를 암호화하고 복호화하는 과정을 거쳐 정보가 전송되는 과정에서 보안성을 높일 수 있는 방식이다.
암호화 키란?
- 고전적인 암호화 방식의 가장 큰 한계는 암호화에 사용되는 암호화 알고리즘을 알아낼 수 있다면 공격자가 암호문을 탈취해 복호화할 수 있다는 점이다.
- 이런 치명적인 단점을 보완하기 위해서 ‘암호화 키’가 등장했다. ‘암호화 키’를 사용한다면 암호화 알고리즘이 노출되더라도 ‘암호화 키’가 없다면 해독할 수 없다.
위의 그림을 보면 암호화 과정에서 ‘암호화 키’를 사용하기 때문에 암호화 알고리즘 만으로는 암호문을 복호화 할 수 없다.
암호화 키의 등장 이후 다양한 키 관리 기법과 키의 종류가 파생되었다. 그 중 대칭키와 비대칭키를 알아보기 전에 공개키와 개인키의 차이점에 대해 알아보자.
공개키와 개인키
공개키
- 공개키란 누구든지 키를 사용할 수 있도록 공개된 키를 의미한다. 즉, 누구든지 해당 대칭키를 원한다면 확인할 수 있다.
개인키
- 개인키란 자기자신만 가지고 있는 키로 자신 말고는 그 누구도 해당 키를 확인할 수 없다. (즉, 노출되지 않도록 관리해야 한다.)
대칭키란?
- 대칭키는 이름에서 유추할 수 있듯이, 암호화와 복호화 시에 사용하는 동일한 키를 사용하는 것을 말한다.
- 즉 암호화된 정보를 전달하고 전달받은 측에서 해당 암호문을 복호화하기 위해서는 송신자와 똑같은 키를 가지고 있어야 한다.
대칭키 암호화 방식의 핵심은 해당 대칭키를 안전하게 교환하는 것이 핵심이다.
비대칭키란?
- 비대칭키 역시 이름에서 알 수 있듯, 정보를 암호화와 복호화 할 때 사용하는 키가 다른 것을 말한다.
- 대칭키와 다르게 비대칭키는 개인키와 공개키 모두가 사용된다.
- 개인키와 공개키를 모두 사용하기 때문에, 개인키로 암호화하는 방식과 공개키로 암호화하는 방식 두 가지로 나뉘게 된다.
공개키로 암호화하는 경우
- 공개키는 공개되어 있기 때문에, 특정 사용자에게 보낼 때 그 사용자의 공개키로 정보를 암호화하여 전송한다.
- 예를 들자면, A가 B에게 B의 공개키로 정보를 암호화하여 전송하면 B는 자신의 개인키로 암호문을 복호화할 수 있다.
즉, 공개키로 암호화 되었다면 그 공개키 소유자의 개인키로 복호화할 수 있다.
개인키로 정보를 암호화하는 경우
- 개인키는 자신만이 가지고 있기 때문에 특정 정보를 보낼 때 자신의 개인키를 통해 정보를 암호화한다.
- 그럼 수신자는 송신자의 공개키를 이용해 해당 암호문을 복호화할 수 있다.
- 예를 들자면, A가 자신의 개인키로 특정 정보를 암호화하여 B에게 전달한다면 B는 A의 공개키로 해당 정보를 복호화하여 사용할 수 있다.
그런데 여기서 패킷 탈취와 같은 방식으로 해당 암호문을 가로채서 A의 공개키로 복호화하는 상황이 발생할 수 있기 때문에 이 방식은 암호문의 내용이 중요한 경우가 아니라 보내는 사람의 초점을 두는 경우에 많이 사용된다.