HTTPS는 HTTP의 보안이 강화된 버전이라고 설명할 수 있다. HTTPS를 설명하기에 앞서 HTTP를 간단히 정리하자면 HTML 같은 리소스들을 교환하기 위한 프로토콜이다. 클라이언트는 서버에 데이터를 요청하고, 서버는 이에 대해 응답하는 구조를 갖는다.
HTTP를 통해 교환하는 데이터들은 텍스트 형태를 갖는다. 즉, 데이터가 전달되는 네트워크의 전송 신호를 인터셉트하면 데이터의 유출이 발생할 수 있다는 것이다. 이런 HTTP의 취약한 보안때문에 이를 막기위한 방법이 필요했고, 그 대안이 HTTPS이다.
현재 HTTP는 민감하지 않은 데이터를 다루는 사이트에서 사용되며, 인증이나 전자상거래 등의 데이터는 HTTPS로 다룬다. 그러나 보안에 대한 관심이 증가하여 HTTP를 사용하는 사이트를 브라우저에서 경고 메세지를 띄워주고 있으며, HTTPS로 대부분 전환해가는 추세이다.
그럼 HTTPS는 어떻게 동작하기에 HTTP의 보안을 강화할 수 있었는지 자세히 살펴보자. 일단 HTTPS의 핵심은 공개키 암호화 방식이다. 암호화와 복호화를 할 수 있는 2개의 키가 존재한다. 만약 1번 키로 데이터를 암호화 했다면, 다른 2번 키로만 복호화할 수 있다. 반대로 2번 키로 암호화 했다면, 1번 키로 복호화할 수 있는 방식이다.
생성된 2개의 키 중 하나는 공개 키 저장소에 존재한다. 또한 다른 하나는 서버가 소지하고 있다.
클라이언트가 서버에 데이터 처리를 요청할 때, 공개 키 저장소에 있던 키를 통해 데이터 암호화를 진행한다.
공개 키를 통해 암호화 된 데이터를 포함하는 HTTPS 요청이 들어오면, 서버는 이에 대응하는 다른 키를 통해 복호화를 진행한다.
복호화된 데이터를 가지고 클라이언트의 요청을 처리하고 다시 클라이언트에 서버가 가진 키를 통해 암호화를 진행한 결과를 응답한다. 클라이언트는 이를 다시 공개 키를 통해 복호화를 진행해 데이터를 얻는다.