우리가 흔히 알고있는 HTTP (HyperText Transfer protocol)는 OSI 7계층 중 응용계층에 위치하고 있는 인터넷에서 데이터를 주고 받을 수 있는 프로토콜이다.
HTTP는 데이터가 전송될 때 암호화되지 않기 때문에 내용이 그대로 노출돼서 보안에 취약하다는 단점이 있다. 이를 해결하기 위해 기존의 HTTP에 SSL
을 추가해 보안이 강화된 프로토콜이 HTTPS이다.
SSL은 인터넷 암호화 통신 프로토콜이다. SSL/TLS는 응용계층과 전송계층 사이에서 동작하는 독립적인 프로토콜이다.
응용계층의 HTTP 프로토콜에서 사용자의 데이터를 받고 전송계층으로 캡슐화되기 이전에 SSL 프로토콜에 의해 데이터가 암호화된다. 반대 과정도 마찬가지로 복호화를 하고 응용계층으로 보낸다.
즉, SSL 프로토콜만 적용하면 기존 통신과정에 영향을 미치지 않고 데이터의 암호화/복호화를 통해 보안 과정만 강화가 된다.
SSL에서는 암호화와 복호화를 두가지 방식을 혼합하여 사용한다.
위 그림의 3번은 클라이언트가 서버에 접속을 요청하면 SSL 인증서를 응답으로 하는 과정이다.
SSL 인증서는 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장하고 SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.
이 인증서는 민간기업들 중 CA 기업이 제공하는데, SSL을 통해서 암호화된 통신을 제공하려는 서비스는 CA를 통해서 인증서를 구입해야 한다.
대칭키: 데이터의 암호화와 복호화를 하나의 키로 진행