1. 대칭키 암호화
- 클라이언트와 서버가 통신할 때 동일한 키를 사용하여 암호화와 복호화를 하는 방식
- 동일한 키를 공유해야하므로 통신을 통해 키를 전달해야한다.
- 서버와 클라이언트가 동일한 키를 사용하기 때문에 간단하고 빠르게 암호화, 복호화를 거칠 수 있음
- 다만 통신과정 중에 전달한 키가 탈취당하면 보안에 구멍이 생김
2. 공개키 암호화
- 클라이언트와 서버가 통신할 때 공개키와 개인키를 사용하여 암호화 및 복호화를 하는 방식
- 공개키 : 암호화 할 때 사용하는 키, 이름대로 공개된 키이며 탈취 당해도 상관없음
- 개인키 : 복호화 할 때 사용하는 키, 공개키로 암호화 된 데이터를 받아서 개인키를 사용해 복호화 한다. 공개되면 안됨
- 암호화를 위한 키와 복호화를 위한 키가 분리되어 있기 때문에 통신중에 제 3자에 의해 공개키가 탈취되어도 보안에 문제가 생기지 않는다.
- 암호화, 복호화 과정이 더 복잡하기 때문에 속도가 느리고 복잡하다
3. SSL
- SSL은 독립적인 프로토콜 계층인 보안 계층을 만들어 application layer와 transport layer 사이에 위치
- 서버는 클라이언트의 요청이 들어오면 공개키를 암호화하여 전송한다.
- 클라이언트는 전달받은 공개키를 복호화하고 대칭키로 사용할 키를 암호화하여 다시 전송한다
- 이제 양 측이 대칭키를 모두 가지게 되었고 이후 통신에서는 대칭키를 사용한다
- 먼저 전송되는 키는 공개키이므로 탈취되더라도 보안 상의 문제가 없다
- 대칭키를 공개키로 암호화 하였지만 복호화에는 개인키가 필요하므로 해커는 대칭키를 얻을 수 없다
- 키 전송의 문제를 공개키 암호화 방식으로 해결하고 통신의 속도가 더 빠른 대칭키 방식으로 통신한다