HTTP (HyperText Transfer Protocol)
정의
하이퍼텍스트(HyperText)를 주고받기 위해 사용되는 프로토콜
하이퍼텍스트란, 한 문서에서 다른 문서로 접근할 수 있는 텍스트(현대에는 이를 주로 하이퍼링크라고 부름)이다.
문제점
HTTP만을 이용하여 통신하면 데이터를 평문으로 주고받기 때문에 누군가가 이를 가로채 데이터 유출이 일어날 수 있다.
이러한 보안 취약점을 해결하기 위해 도입된 것이 HTTPS 프로토콜이다.
HTTPS (HyperText Transfer Protocol Secure Socket)
정의
기본 형식이나 사용 목적은 HTTP와 유사하지만, HTTP의 보안 취약점 해결을 위해 데이터를 암호화하여 주고받는다
.
HTTPS는 암호화를 위해 대칭키 암호화 방식
과 공개키 암호화 방식
을 이용한다.
대칭키 암호화 방식
하나의 키를 이용해 암호화와 복호화를 모두 수행하는 알고리즘
공개키 암호화 방식
한 쌍의 키인 공개키(Public Key)
와 개인키(Primary Key)
로 암호화와 복호화를 수행하는 알고리즘
공개키로 암호화한 것은 개인키로만 복호화할 수 있고, 개인키로 암호화한 것은 공개키로만 복호화할 수 있다.
HTTPS의 동작 흐름
- 서버는 미리
공개키/개인키
를 발급하여SSL 인증서
를 발급받은 후 클라이언트의 연결을 기다림 - 클라이언트(브라우저)가 서버에 연결을 시도
- 서버는
SSL 인증서
를 클라이언트에게 제공 - 클라이언트는 인증서가 신뢰할 수 있는 것인지 알기 위해 유효성 검증을 수행
- 신뢰할 수 있다면 클라이언트는
세션키
를 발급하여 보관하고 서버에게도 제공(서버의 공개키로 암호화하여 서버로 전송) - 서버는 자신의 개인키로 암호화된 세션키를 복호화하여 보관
- 이후 서로 데이터를 주고받을 때에는 세션키로 암호화/복호화를 모두 수행
- 1~5번의 과정을 통해 세션키를 탈취당하지 않을 수 있기 때문
- 굳이 대칭키 암호화를 사용하는 이유는 빠른 연산 속도를 보장하기 위함
무조건 HTTPS?
HTTPS는 다음과 같은 장단점을 가진다.
HTTPS의 장점
- 데이터를 안전하게 주고받을 수 있다.
- 대부분의 검색 엔진에서는 HTTPS 사이트를 HTTP 사이트보다 우선적으로 노출한다.
HTTPS의 단점
- 암호화/복호화를 수행하므로 HTTP보다 속도가 조금 더 느리다. (최근에는 서버와 네트워크가 발전하여 체감하기 어려울 정도)
- SSL 인증서를 발급하고 유지하기 위해 추가 비용이 발생한다.
결론
따라서 웹 서비스의 특징에 따라 적절한 프로토콜을 선택하는 것이 좋다.
데이터가 유출되면 안 되는 서비스의 경우(고객 정보 이용 등) 반드시 HTTPS를 사용해야 하지만, 단순히 데이터를 제공하는 정도의 서비스에는 HTTPS가 적용되지 않아도 좋다.