HTTP

서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.

TCP/IP 위에서 작동하지만, HTTP는 상태가 없는 stateless 프로토콜이다.

그러나 HTTP는 평문 데이터를 전송하기 때문에 보안 문제가 있다.

이를 개선한 방법으로 HTTPS가 있다.

HTTPS

HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다.

SSL/TLS 프로토콜을 이용하여 암호화를 하는데, 공개키/개인키 기반으로 데이터를 암호화 한다.

SSL/TLS는 인증된 기관인 CA로부터 서버와 클라이언트를 인증한다.

SSL/TLS 동작방식

TCP 3-way-Hanshake 이후

  1. Client→Server 랜덤 데이터 전송
  2. Server→Client 응답 후, 인증서와 랜덤 데이터를 전송
  3. Client는 Server의 인증서가 CA에서 발급된 것인지 확인하고 공개키로 인증서를 복호화한다.
  4. Client+Server의 랜덤 데이터를 이용하여 pre master secret(대칭 키) 생성