클라이언트와 서버사이에 정보를 주고 받을 때 평문의 형태로 주고 받는 것은 매우 위험하다.
중간의 해커가 탈취시, 내용을 보거나, 변조할 수 있기 때문이다.
이 때문에, 평문 형태로 그래도 보내지 않고, 암호화 해서 보내는 경우가 대부분인데, 이 때 사용하는 두개의 암호화 방식이
대칭키, 비대칭키 암호화 방식이다.
이름 그대로 대칭키 즉 같은 키를 통해서 암호화를 수행하는 것이다.
송신자는 대칭키를 이용해서 암호화를 수행하고, 수신자는 송신자가 보낸 대칭키를 이용해서 복호화를 통해서 정보를 주고 받는다.
이 과정에서 대칭키를 교환하는 과정이 필수적이기 때문에 중간의 해커가 탈취시에 보안상의 문제가 될 수 있다는 단점이 존재한다.
물론 대칭키 알고리즘이 비대칭 방식에 비해서, 연산이 단순해서 시간이 적게 걸린다.
대표적으로 AES, DES등이 있다.
단순하게 데이터베이스에 들어가고 나올 때 해당 정보를 보호하고 싶다면, 속도가 빠른 대칭키 암호화 방식을 채택하는게 더 맞는 방향성이라고 생각한다.
이건 반대로 공개키로 암호화하고, 개인 키로 복호화는 방식으로 키를 두개를 사용한다.
따라서 대칭키 암호화 방식에서 문제라고 여겨지는 대칭키 유출 문제가 발생하지 않으므로, 보안상으로는 전자의 방식에 비해서 훨씬 낫다.
하지만 비대칭키 암호화 방식은 일반적으로 대칭키 암호화 방식에 비해서 알고리즘이 복잡하므로, 시간이 오래 걸린다.
대표적으로는 RSA,DSA등이 있다.
ssl,tls핸드 쉐이크 과정에서 비대칭키 암호화 방식은 많이 사용된다.
특히 CA가 발급한 인증서가 안전한건지를 판별할 때는 , CA에서는 개인키로 암호화하고, 클라이언트단에서는 복호화해서 판별한다.
공개키는 "공개된 정보"이기 때문에 누구나 알 수 있는 값이다.
따라서, 공개키로 데이터를 "서명(암호화)"할 수 있다면 누구나 서명을 생성할 수 있게 됨.-> 따라서 인증을 하는 경우에는 개인키로 암호화하고, 공개키로 복호화한다.
물론 공개키를 안다면 해당 데이터의 정보를 알 수 있지만, 이것은 인증서가 안전한건지늘 판단하기 위한 것이므로, 비밀 유지와는 거리가 있기 때문에 괜찮다.
따라서 비밀 유지를 위한 비대칭키 암호화 방식에서는 공개키로 암호화, 개인키로 복호화하고 인증을 위한 비대칭키 암호화 방식에서는 개인키로 암호화하고, 공개키로 복호화를 진행한다.