ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] HTTP vs HTTPS
    CS/Network 2021. 9. 29. 11:49

    이 포스팅은 세미나를 위해 https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network를 참고하여 작성하였습니다.

     

    HTTP(Hypertext Transfer Protocol)

    텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.

     

    HTTP 동작

    출처: https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

    클라이언트가 브라우저를 통해서 어떠한 서비스를 URL을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.

     

    HTTP 특징

    • TCP를 사용한다.
    • stateless
      • 서버는 클라이언트의 요청(request)에 대한 정보를 유지하지 않는다.
        → 서버에는 수많은 요청이 들어오기 때문에 클라이언트의 state를 저장하기에 너무 복잡해짐(complex).
        → state를 저장할 필요가 없는 경우가 많음 (단순 조회 e.g., 로그인 하지 않은 홈 조회)
        CookieSession을 사용하여 클라이언트의 state를 저장할 수 있음
    • 연결 상태
      • Persistent HTTP: 초기 TCP 연결을 성립하고 요청에 대한 응답이 끝나더라도 연결을 해제하지 않는다. 일정 시간(timeout) 이후 연결이 해제된다.
      • Non-persistent HTTP: 매 요청마다 TCP 연결을 성립한다. 요청마다 TCP 연결을 위한 Round-trip time(RTT)가 추가로 든다. → HTTP Response time이 비교적 길어진다.

    HTTP 문제점

    • HTTP는 평문 통신이기 때문에 도청이 가능하다.
    • 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
    • 완전성을 증명할 수 없기 때문에 변조가 가능하다.

    TCP/IP는 도청 가능한 네트워크이다.

    TCP/IP 구조의 통신은 전부 통신 경로 상에서 엿볼 수 있다. 패킷을 수집하는 것만으로 도청할 수 있다. 평문으로 통신을 할 경우 메시지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 한다.

     

    보안 방법

    • 통신 자체 암호화: SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는 다른 프로토콜을 조합함으로써 HTTP 의 통신 내용을 암호화할 수 있다. SSL 을 조합한 HTTP 를 HTTPS(HTTP Secure) or HTTP over SSL이라고 부른다.
    • 콘텐츠를 암호화: HTTP 메시지에 포함되는 콘텐츠만 암호화하는 것이다. 암호화해서 전송하면 받은 측에서는 그 암호를 해독하여 출력하는 처리가 필요하다.

    통신 상대를 확인하지 않기 때문에 위장이 가능하다.

    HTTP 에 의한 통신에는 상대가 누구인지 확인하는 처리는 없기 때문에 누구든지 리퀘스트를 보낼 수 있다. IP 주소나 포트 등에서 그 웹 서버에 액세스 제한이 없는 경우 요청이 오면 상대가 누구든지 응답을 반환한다. 이러한 특징은 여러 문제점을 유발한다.

    1. 리스폰스를 반환한 곳의 클라이언트가 원래 의도한 요청을 보낸 클라이언트인지를 확인할 수 없다.
    2. 통신하고 있는 상대가 접근이 허가된 상대인지를 확인할 수 없다.
    3. 어디에서 누가 요청 했는지 확인할 수 없다.
    4. 의미없는 리퀘스트도 수신한다. → DoS 공격을 방지할 수 없다.

    보안 방법

    • SSL을 사용하여 SSL이 제공하는 디지털 증명서로 요청 상대를 확인할 수 있다.
    • 증명서는 신뢰할 수 있는 제 3 자 기관에 의해 발행되는 것이기 때문에 서버나 클라이언트가 실재하는 사실을 증명한다.
    • 이 증명서를 이용함으로써 통신 상대가 내가 통신하고자 하는 서버임을 나타내고 이용자는 개인 정보 누설 등의 위험성이 줄어들게 된다.

    완전성을 증명할 수 없기 때문에 변조가 가능하다

    • 완전성 즉, 정보의 정확성을 증명할 수 없다.
      → 수신측에서 수신한 데이터가 송신측에서 보낸 내용과 일치한다는 것을 보장할 수 없음
      → 발신 후에 메세지를 빼앗아 변조하는 공격인 중간자 공격(Man-in-the-Middle)을 통해 메세지가 변조될 수 있음

    보안 방법

    • MD5, SHA-1 암호화 해시 함수 사용 or 디지털 서명으로 송신자의 신원을 증명한다.
      → 확실하지 않음
    • SSL을 사용하여 SSL이 제공하는 메세지 다이제스트를 통하여 변조 여부를 확인한다.
      → 데이터 자체에서 계산한 메세지 다이제스트 값을 첨부하여 전송함
      → 데이터 수신 측에서는 데이터에서 계산한 메세지 다이제스트 값과 첨부된 메세지 다이제스트 값을 비교해 변조 유무를 확인함

    HTTPS

    • HTTP 통신하는 Transport layer protocol을 TCP가 아닌 SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는 프로토콜로 대체하는 것
    • HTTP는 SSL과 통신하고 SSL이 TCP와 통신한다.

    HTTPS 단점

    • HTTPS는 HTTP에 비해 CPU나 메모리 등 리소스를 더 많이 필요로 한다.
      → 최근 하드웨어의 발달로 HTTPS를 사용하더라도 속도 저하가 일어나지 않음
      → HTTP 2.0을 함께 사용하면 HTTPS가 오히려 HTTP보다 빠르게 동작함
      → 현재 모든 웹 페이지에서 HTTPS를 적용하고 있음

    Reference

    https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

    'CS > Network' 카테고리의 다른 글

    [Network] IP 주소 체계와 Subnet  (0) 2021.12.11
    [Network] DNS 동작 원리  (0) 2021.09.29
    [Network] TCP vs UDP  (0) 2021.09.28
    [Network] TCP 연결과 해제  (0) 2021.09.28
    [Network] HTTP Methods - GET, POST, PUT, PATCH, DELETE  (0) 2021.09.27

    댓글

Designed by Tistory.