개요
암호화 방법으로는 크게 대칭키와 비대칭키 암호화 방식으로 구분을 합니다.
이 두가지 암호화 알고리즘 방법에 대해 가볍게 알아보고, 각각의 암호화 알고리즘을 언제 사용하는지, 차이점은 무엇인지에 대해 정리해보보려 합니다.
대칭키 암호화 방식이 무엇인가?
대칭키 암호화 방식은 암/복호화를 위한 키를 동일한 키로 사용하는 암호화 방식입니다. 암/복호화를 위한 키가 동일하다는 말은 키가 대칭적이다라는 말이되며, 이러한 어원에 의해 대칭키 암호화 방식이라고 불립니다.
암/복호화키가 동일하다보니 아래와 같은 점이 중요한 포인트로 작용합니다.
- 대칭키를 어떻게 안전하게 관리를 하느냐
- 암/복호화를 위해서 각각의 엔드포인트간 대칭키를 어떻게 안전하게 공유하느냐
암호화하는 쪽과 암호화된 암호문을 복호화하는 쪽 모두 동일한 키를 사용하기 위해서는 각각 동일한 키를 네트워크를 통해서 공유가 되어야 합니다. 그러나 키를 네트워크상에 그대로 전달을 하게 되면 MITM(Man In The Middle) 등과 같은 공격에 의해 키를 탈취당할 수 있습니다.
그래서 보다 안전한 키 공유를 위해 공개키 기반의 암호화 방식이 이용됩니다. 그리고 이 공개키 기반의 암호화 방식을 위해서 공개키 기반 구조가 필요하게 됩니다.
비대칭키(공개키) 암호화 방식이 무엇인가?
비대칭키 암호화 방식은 암/복호화를 위한 키가 다른 암호화 방식입니다. 다른 말로 공개키 암호화 방식이라고도 합니다.
비대칭키 암호화 방식에서는 공개키와 비밀키가 이용이 됩니다. 말그대로 공개키는 누구에게나 공개가 되어도 상관없는 키이며, 비밀키는 누구에게도 공개되지 말아야하는 키입니다.
공개키와 비밀키는 각각 어떻게 이용이 될까요?
일반적으로 데이터 암호화 기준에서는 아래와 같이 사용됩니다.
- 공개키는 평문을 암호화하는데 사용되어짐.
- 비밀키는 암호문을 복호화하는데 사용되어짐.
- 공개키로 누구나 평문을 암호화 할 수 있지만, 복호화는 비밀키를 가지고 있는 쪽에서만 가능함.
반대의 개념으로 사용하게 되면 전자서명에 이용이 되지만, 해당 내용은 이후에 다시 거론하도록 하겠습니다.
비대칭키 암호화 방식의 키 성격을 이용하여 데이터전달을 간략하게 표현하면, 아래와 같이 진행이 됩니다.
개인키를 통해서만 복호화가 이루어지기 때문에 중간자 공격에 의해 암호문이 탈취되더라도 개인키가 없으면 복호화가 불가능한 구조가 됩니다. 그러나 조금 더 생각을 하게 되면, 단순 공개키 방식의 암호화 전송에서는 중간에 해커가 해커의 공개키/개인키를 만들어 클라이언트와 서버 사이에서 마치 본인이 클라이언트/서버인 것처럼 행동하여 데이터를 위조할 수 있습니다.
그래서 공개키가 실제 내가 통신하려는 서버의 공개키가 맞는지를 보증하기 위해서 공개키 기반 구조가 사용됩니다. 여기서 CA/RA와 같은 인증서 인증기관이 나오게 되며, 이러한 인증기관을 통해서 내가 받은 공개키가 실제 통신하려는 서버의 공개키 임을 보증할 수 있게 됩니다.
각각의 장단점은 무엇인가?
대칭키 암호화 방식은 비대칭키 암호화 방식에 비해 속도가 빠르지만, 키 공유에 대한 문제가 발생합니다.
반면, 비대칭키 암호화 방식은 속도는 대칭키 암호화 방식에 비해 느리고, 위에서 언급하였듯이 기반 구조가 필요하여 비용이 더 발생하게 되지만, 대칭키 암호화 방식에 비해 보안상 더욱 안전하다고 볼 수 있습니다.
그럼 언제 어떤 암호화 방식을 사용하나?
위에서 언급한 대칭키 암호화 방식과 비대칭키 암호화 방식의 장단점으로 인해, 비대칭키(공개키) 암호화 방식을 이용하여 대칭키를 상호간에 공유하고, 실제 통신을 위한 데이터는 공개키 암호화 방식을 통해 안전하게 공유된 대칭키를 이용하여 암/복호화를 하는데 이용이 됩니다.
대칭키와 비대칭키 암호화 알고리즘 종류
대칭키 암호화 알고리즘 | 비대칭키 암호화 알고리즘 |
---|---|
DES, IDEA, AES | DH, ECC, RSA |