대칭키와 비대칭키라는 이름만으로 어떤 차이가 있을지 머릿속으로 짐작이 가지만
정확한 차이를 구두로 설명하기가 어려워 블로그에 정리하고자 한다.
암호화와 복호화에 사용되는 키가 동일한 키를 대칭키라고 부른다.
특정 문서를 암호화하여 송수신 한다는 상황을 가정한다면
송신자는 보낼 문서를 대칭키를 통해 암호화하여(=잠근다) 수신자에게 키와 함께 전달한다.
수신자는 받은 키와 문서를 함께 받았으니 키로 문서를 열어서 내용을 확인할 수 있다.
이러한 대칭키의 방식에는 문제점이 존재한다.
해당 문서를 보고 싶어하는 악성 사용가 존재한다면, 네트워크 상에서 전송되는 키와 문서를 중간에서 가로채서 확인할 수 있게 되는 것이다. 노출되어선 안 될 문서가 제 3자에게 노출되는 셈이다.
이러한 문제점을 보완하기 위해 나온 것이 비대칭키 방식이다.
비대칭키는 암호화와 복호화에 사용되는 키가 서로 다른 키를 뜻한다.
비대칭키 방식에서서는 공개키(public key)와 개인키(private key)가 존재한다.
공개키는 제 3자에게 공개적으로 노출이 되어도 되는 키다.
개인키는 제 3자에게 노출이 되어선 안 될 키다. 서버 내부에 저장한다.
공개키와 개인키는 한 쌍으로 존재하며 공개키로 암호화한 것은 개인키로만 복호화 할 수 있고,
반대로 개인키로 암호화한 것은 공개키로만 복호화 할 수 있다.
위의 상황에서의 대칭키를 썼던 예시를 비대칭키로 바꿔서 예를 들어보자면
문서를 받을 사람은 공개키와 개인키를 생성하여 공개키를 문서를 보낼 사람에게 전송한다.
공개키를 받은 사람은 해당 공개키로 보낼 문서를 암호화한다. (= 잠근다)
암호화한 문서를 다시 전달한다. 전달받은 수신자는 개인키를 통해 복호화하여 문서를 확인할 수 있다. 이러한 방식을 통해 제 3자로부터 가로채는 등 정보가 노출될 위험을 방지할 수 있다.
비대칭키 방식은 대칭키 방식에서의 보안성을 강화해주지만, 대칭키 방식에 비해 더 많은 절차가 필요하므로, 비용이 많이 든다는 단점이 있다.