HTTP 프로토콜
- HyperText Transfer Protocol
- 웹 상에서 클라이언트-서버 간에 요청/응답(request/response)으로 정보를 주고 받을 수 있는 프로토콜
- 주로 HTML 문서를 주고 받는 데에 사용
- TCP와 UDP를 사용하며, 80포트를 사용
- 비연결(Connectionsless)
- 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊김
- 무상태(Stateless)
- 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며, 상태 정보를 유지하지 않는다
- 네트워크 상에 HTTP로 주고받은 문서는 공개가 되는 단점이 있음
HTTPS 프로토콜
- HyperText Transfer Protocol over Secure Socket Layer
- 또는 HTTP over TLS, HTTP over SSL, HTTP Secure 라고 함
- 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전의 프로토콜
- TCP/IP 포트인 443포트를 사용
- 소캣 통신에서 일반 텍스트를 이용하는 대신, 웹 상에서 정보를 암호화하는 TLS이나 SSL 프로토콜을 사용하여 데이터를 암호화함
- 기밀성(사생활 보호), 데이터 무결성, ID 및 디지털 사용한 인증을 제공하는 방식
- 보호의 수준은 웹 브라우저의 구현 정확도와 서버 소프트웨어, 지원하는 암호화 알고리즘에 따라 달라짐
HTTPS가 필요한 이유?
- 클라이언트인 웹브라우저가 서버에 HTTP를 통해 웹 페이지나 이미지 정보를 요청하면 서버는 이 요청에 응답하여 요구하는 정보를 제공
- 웹 페이지(HTML)는 텍스트이고, HTTP를 통해 이런 텍스트 정보를 교환하는 것
- 이때 주고 받는 정보들은 네트워크를 통해 공유되고, 이런 정보들 중 개인정보 또는 보안상 민감한 정보인 경우, 보안상 큰 문제가 된다
- 즉, 중간에 중요한 정보를 볼 수 없도록 주고받는 정보를 암호화하는 방법인 HTTPS를 사용하는 것
HTTPS의 원리
- 공개키 알고리즘 방식
- 암호화, 복호화시킬 수 있는 서로 다른 키(공개키, 개인키)를 이용한 암호호 방법
- 공개키 : 모두에게 공개, 공개키 저장소에 등록
- 개인키(비공개키) : 개인에게만 공개, 클라이언트-서버 구조에서는 서버가 가지고 있는 키가 비공개키
- 클라이언트 → 서버
- 사용자의 데이터를 공개키로 암호화(공개키를 얻은 인증된 사용자)
- 서버로 전송(데이터를 가로채도 개인키가 없으므로 복호화를 할 수 없음)
- 서버의 개인키를 통해 복호화하여 요청을 처리함
HTTPS의 장단점
- 장점
- 네트워크 상에서 열람, 수정이 불가능하므로 안전
- 단점
- HTTPS는 설치 및 인증서를 유지하는 데 추가 비용이 발생
- 암호화하는 과정이 웹 서버에 부하를 줌
- HTTP에 비해 속도가 느림
- 인터넷의 연결이 끊긴 경우 재인증 시간이 소요
- HTTP는 비연결형으로 웹페이지를 보는 중 인터넷 연결이 끊겼다가 다시 연결되어도 페이지를 계속 볼 수 있음
- HTTPS는 소켓(데이터를 주고 받는 경로) 자체에서 인증을 하기 때문에 인터넷의 연결이 끊기면 소켓도 끊어져서 다시 HTTPS 재인증이 필요