HTTP / HTTPS

황인용·2020년 7월 11일
0

Network

목록 보기
8/14
post-thumbnail

HTTP 프로토콜

  • HyperText Transfer Protocol
  • 웹 상에서 클라이언트-서버 간에 요청/응답(request/response)으로 정보를 주고 받을 수 있는 프로토콜
  • 주로 HTML 문서를 주고 받는 데에 사용
  • TCPUDP를 사용하며, 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 재인증이 필요
profile
dev_pang의 pang.log

0개의 댓글