HTTP와 HTTPS

HTTP (HyperText Transfer Protocol)

정의

하이퍼텍스트(HyperText)를 주고받기 위해 사용되는 프로토콜

하이퍼텍스트란, 한 문서에서 다른 문서로 접근할 수 있는 텍스트(현대에는 이를 주로 하이퍼링크라고 부름)이다.

문제점

HTTP만을 이용하여 통신하면 데이터를 평문으로 주고받기 때문에 누군가가 이를 가로채 데이터 유출이 일어날 수 있다.

이러한 보안 취약점을 해결하기 위해 도입된 것이 HTTPS 프로토콜이다.


HTTPS (HyperText Transfer Protocol Secure Socket)

정의

기본 형식이나 사용 목적은 HTTP와 유사하지만, HTTP의 보안 취약점 해결을 위해 데이터를 암호화하여 주고받는다.

HTTPS는 암호화를 위해 대칭키 암호화 방식공개키 암호화 방식을 이용한다.

대칭키 암호화 방식

하나의 키를 이용해 암호화와 복호화를 모두 수행하는 알고리즘

공개키 암호화 방식

한 쌍의 키인 공개키(Public Key)개인키(Primary Key)로 암호화와 복호화를 수행하는 알고리즘

공개키로 암호화한 것은 개인키로만 복호화할 수 있고, 개인키로 암호화한 것은 공개키로만 복호화할 수 있다.


HTTPS의 동작 흐름

  1. 서버는 미리 공개키/개인키를 발급하여 SSL 인증서를 발급받은 후 클라이언트의 연결을 기다림
  2. 클라이언트(브라우저)가 서버에 연결을 시도
  3. 서버는 SSL 인증서를 클라이언트에게 제공
  4. 클라이언트는 인증서가 신뢰할 수 있는 것인지 알기 위해 유효성 검증을 수행
  5. 신뢰할 수 있다면 클라이언트는 세션키를 발급하여 보관하고 서버에게도 제공(서버의 공개키로 암호화하여 서버로 전송)
  6. 서버는 자신의 개인키로 암호화된 세션키를 복호화하여 보관
  7. 이후 서로 데이터를 주고받을 때에는 세션키로 암호화/복호화를 모두 수행
    • 1~5번의 과정을 통해 세션키를 탈취당하지 않을 수 있기 때문
    • 굳이 대칭키 암호화를 사용하는 이유는 빠른 연산 속도를 보장하기 위함

무조건 HTTPS?

HTTPS는 다음과 같은 장단점을 가진다.

HTTPS의 장점

  • 데이터를 안전하게 주고받을 수 있다.
  • 대부분의 검색 엔진에서는 HTTPS 사이트를 HTTP 사이트보다 우선적으로 노출한다.

HTTPS의 단점

  • 암호화/복호화를 수행하므로 HTTP보다 속도가 조금 더 느리다. (최근에는 서버와 네트워크가 발전하여 체감하기 어려울 정도)
  • SSL 인증서를 발급하고 유지하기 위해 추가 비용이 발생한다.

결론

따라서 웹 서비스의 특징에 따라 적절한 프로토콜을 선택하는 것이 좋다.

데이터가 유출되면 안 되는 서비스의 경우(고객 정보 이용 등) 반드시 HTTPS를 사용해야 하지만, 단순히 데이터를 제공하는 정도의 서비스에는 HTTPS가 적용되지 않아도 좋다.