HTTP
HTTP란?
서버 클라이언트 모델에 따라 인터넷 통신에서 데이터를 주고 받기 위해 사용하는 프로토콜로 텍스트 기반으로 동작한다.
HTTP의 특징
- 애플리케이션 레벨의 프로토콜로 TCP/IP위에서 동작한다.
- 클라이언트 서버 구조로 되어있다.
- 무상태 프로토콜로 비연결성을 가진다.
- HTTP 메시지를 통해 데이터를 교환한다.
- 단순하고 확장에 용이하다.
- HTTP 서버는 기본 포트로 80번 포트를 사용한다.
HTTP의 문제점
- HTTP는 텍스트 기반의 평문으로 정보를 주고받기 때문에 네트워크에서 정보를 탈취하거나 변조할 수 있는 보안적 위험이 있다.
- HTTP를 사용한 요청과 응답에서는 통신 상대를 확인하지 않아 요청이 들어오면 누구든 응답을 반환해준다.
HTTPS
HTTPS란?
HTTPS는 보안이 강화된 HTTP 프로토콜이다. HTTP 프로토콜만으로 통신을 수행하면 평문 데이터가 모두 노출된다. 즉, 암호화되지 않은 데이터를 전송하기 때문에 서버와 클라이언트가 주고받는 메시지를 외부에서 볼 수 있기 때문에 보안에 취약하다. 이를 보완하기 위해 컴퓨터 네트워크 통신 보안을 제공하는 SSL(보안소켓계층)을 사용해 클라이언트와 서버가 전송 데이터를 암호화하여 안전하게 사용할 수 있도록 만들어진 프로토콜이다.
HTTPS의 특징
- 전송 데이터가 암호화되지 않는 단점을 가지고 있는 HTTP의 단점을 SSL을 이용해 보완한 프로토콜이다.
- HTTPS는 HTTP 자체를 암호화하는 것이 아니라 HTTP를 사용해서 운반되는 내용, HTTP 메시지의 바디를 암호화한다.
- HTTP 헤더는 암호화되지 않는다.
- 기본 포트로 443포트를 사용한다.
HTTPS가 통신하는 과정
- HTTPS를 적용하기 위해서 공개키와 개인키를 만든다.
- 신뢰할 수 있는 CA에 내 서버의 공개키를 맡긴다.
- CA는 공개키와 개인키를 가지고 있는데 CA의 이름과 내서버의 공개키 그리고 공개키의 암호화 방법 등의 정보를 담은 인증서를 만들고 해당 인증서를 CA의 개인키로 암호화해서 내 서버에게 제공한다.
- 내 서버에서 클라이언트로부터 첫 요청이 오면 이 암호화된 인증서를 준다.
- 클라이언트는 세계적으로 신뢰할 수 있는 CA공개키를 가지고 있다. CA 리스트에서 인증서에 적혀있는 이름과 같은 CA의 공개키를 찾아서 인증서를 해독해내고 내 서버의 공개키를 얻는다.
- 클라이언트는 대칭키를 만들어 내 서버의 공개키를 사용해서 암호화하고 서버로 보낸다.
- 서버에서는 내 서버의 개인키로 이를 복호화해서 대칭키를 얻는다.
- 이후 클라이언트와 서버가 통신할 때 이 대칭키를 사용해서 정보를 암호화하고 복호화해서 통신하게 된다.
CA란?
HTTPS는 클라이언트와 서버간의 통신을 제 3자가 인증해주어야 한다. 이러한 인증을 해주는 일을 하는 공인된 회사들을 CA(Certificate Authority)라고 한다. 이러한 CA는 SSL인증서를 기준으로 클라이언트가 접속한 서버가 신뢰할 수 있는 서버인지 확인해준다.
SSL이란?
컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약으로 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 서버와 브라우저가 민감한 정보를 주고받을 때 해당 정보가 도난당하는것을 막아준다.
대칭키란?
대칭키란 암호화와 복호화 과정에서 같은 암호키(대칭키)를 사용하는 방식의 암호화 기법을 말한다.
공개키란?
암호키를 하나만 가지는 대칭키 암호화와 달리, 암호화와 복호화에 사용하는 암호키를 분리한 2개의 키를 사용하는 알고리즘 방식으로 비 대칭키라고도 불린다.