[네트워크] HTTP와 HTTPS

hyyyynjn·2021년 9월 16일
0

면접대비

목록 보기
11/31
post-thumbnail

✅HTTP와 HTTPS의 공통 개념

HTTP & HTTPS 모두

  • TCP/IP의 최상위 계층에서 클라이언트/서버간 리소스 요청/제공을 담당하는 프로토콜이다
  • 상태를 유지하지 않는 Stateless(무상태성) Protocol이다
    • 많은 데이터를 빠르게, 확실하게 처리하는 범위성을 확보하기 위해 상태를 유지하지 않는다.
    • 쿠키/세션 또는 토큰 방식의 OAuth/JWT를 사용하여 HTTP 통신에서 상태를 관리할 수 있다.

✅HTTP


http://www.hyunjoon.com

HTTP는 Hypertext Transfer Protocol의 약자로
서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다.

  • 서버에서 브라우저(클라이언트)로 데이터를 전송해주는 용도로 많이 사용된다.
  • 또한 인터넷 초기의 모든 웹사이트에서 기본적으로 사용된 프로토콜이다.
  • 80번 포트를 사용한다.

HTTP/1.0

  • 비연결지향 (Connectionless) 프로토콜이다.
    • HTTP 통신을 할 때마다 TCP에 의해 연결/종료된다. (Response, Request를 한번 주고 받으면 연결을 끊는다)
      • 연결을 끊어 서버에 부담을 줄이지만 리소스 요청시 오버헤드가 발생하여 오히려 더 큰 부하를 발생시킬 수 있다.
    • 연결 상태를 유지하기 위해서
      Request Header의 Connection 속성에 keep-alive를 적용하기도 한다.

HTTP/1.0 이후

  • 지속 연결(Persistent Connections), 파이프라이닝(Pipelining)
    • 서버 또는 클라이언트가 명시적으로 연결을 종료하지 않는 이상 TCP 연결을 계속 유지한다.
      • TCP 연결/해체를 위한 오버헤드가 줄어들어 서버에 부하가 경감된다.
    • 파이프라이닝 기능으로 클라이언트가 서버에게 Request를 병행해서 보낼 수 있다.
      👉 Communication Latency 가 감소된다.

✅HTTP와 TCP/IP의 문제점

서버에서 클라이언트로 전송되는 데이터가 암호화되지 않는 평문 통신을 하기 때문에 📌도청을 하거나,
완전성을 증명할 수 없기에 📌변조가 가능하다는 보안 취약점을 가진다.
또한 통신 상대를 확인하지 않기 때문에 📌위장이 가능하다.

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

TCP/IP 구조의 통신은 전송되는 데이터를 통신 경로 상에서 엿볼 수 있기 때문에 패킷을 수집하는 것만으로도 도청이 가능하다.

보완 방법

  1. SSL(Secure Socket Layer), TLS(Transport Layer Security)라는 다른 프로토콜을 함께 조합하여 HTTP의 통신 내용을 암호화할 수 있다.
    (HTTP와 SSL를 조합한 것을 HTTPS 또는 HTTP over SSL이라고 부른다.)

  2. HTTP를 사용하면서 HTTP 메시지에 포함되는 콘텐츠만 암호화하여 전송한다. 메시지를 받은 측에서 그 암호흫 해독하는 처리가 필요하다.

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

HTTP에 의한 통신은 상대가 누군지 확인하는 처리가 없기 때문에 누구든지 Request를 보낼 수 있다.
서버 측에서 IP 주소, Port 에 대한 접근 제한이 없을 경우 Request가 오면 상대가 누구든지 Response를 반환한다.

여러 문제점들

  1. 클라이언트 입장에서 웹 서버A에게 Request를 보내지만, 클라이언트는 자신에게 Response를 보내는 웹 서버가 A인지 B인지 확인할 수 없다
  2. 서버 입장에서 클라이언트B에게 Response를 반환하지만, 서버는 자신에게 Request를 보낸 클라이언트가 A인지 B인지 확인할 수 없다
  3. 통신하고 있는 상대가 접근이 허가된 상대인지 확인 할 수 없다.
  4. 어디에서 누가 Request를 보냈는지 확인할 수 없다
  5. 의미 없는 Request에 대해 Response를 수신한다. (DoS 공격을 방지할 수 없다)

보완 방법

SSL 인증서로 상대를 확인할 수 있다.

SSL은 상대를 확인하는 수단으로 SSL Certificate (인증서)를 제공하고 있다. 이 인증서는 신뢰할 수 있는 제 3자 기관에 의해 발행되는 것으로 서버/클라이언트가 실재하는 사실을 증명한다.

  • SSL 인증서를 이용하면 통신하는 상대가 의도한 통신 서버임이 나타난다.
  • 이용자는 개인 정보 누설 등의 위험이 줄어든다.
  • 클라이언트는 SSL 인증서로 본인을 확인하고 웹사이트 인증에서도 이용할 수 있다.

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

완전성이란 정보의 정확성을 의미한다.
완전성을 증명할 수 없다는 뜻은 서버/클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치한다는 것을 보장할 수 없다는 의미다.

  • Request/Response가 발신된 후 상대가 수신하는 사이에 누군가에 의해 변조되더라도 이를 알 수 없다.
    • 중간자 공격 (Man-in-the-middle) : 공격자가 도중에 Request/Response를 빼앗아 변조하는 공격이다.

보완 방법

SSL에는 인증이나 암호화, Digest 기능을 제공하기 때문에 HTTPS를 사용하여 중간자 공격을 방지해야 한다.

  • 해시값(MD5, SHA-1)을 확인하는 방법, 파일의 디지털 서명을 확인하는 방법이 있지만 확실하지 않다. 그렇기 때문에 HTTPS를 사용해야한다.

✅HTTPS


https://www.hyunjoon.com

HTTPS는 Hypertext Transfer Protocol Secure의 약자이다. HTTPS는 HTTP의 일반 텍스트(text)에 SSL이나 TLS프로토콜을 씌워 통해 데이터를 암호화하는 기법으로 HTTP의 보안 문제를 보완한 프로토콜이다.

  • 새로운 애플리케이션 계층 프로토콜이 아니라,
    HTTP 통신하는 소켓 부분을 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)라는 프로토콜로 대체한 것이다.
  • 원래의 HTTP는 TCP와 직접 통신하지만
    HTTPS에서는 HTTP는 SSL과 통신하고, SSL이 TCP와 통신한다.
  • SSL을 사용한 HTTPS는 암호화, 증명서, 안전성 보호를 이용할 수 있다.
  • HTTP와 다르게 433번 포트를 사용하다.

SSL < TLS

  • SSL
    웹 서버와 브라우저간에 암호화 된 링크를 설정하기위한 표준 보안 프로토콜이다.
    • SSL 계층은 TCP / IP 프로토콜에서 추가 계층이다.
    • 컴퓨터 네트워크에서 통신 보안을 제공하는 프로토콜이다.
  • TLS
    인터넷을 통해 서로 통신하는 클라이언트/서버 응용 프로그램 간의 통신 보안을 제공하는 프로토콜이다.
    • SSL 프로토콜의 발전이며 추가적인 개인 정보 보호 및 보안 기능으로 구성된다

HTTPS의 동작방식

HTTPS는 대칭키 암호화를 사용 하며 다음과 같은 과정을 거친다.

  1. 클라이언트가 서버에 접속요청을 하면 서버는 CA에서 발급받은 인증서를 보낸다.
    (인증서에는 CA의 비밀키로 암호화된 사이트 정보와 공개키가 들어있다)
  2. 클라이언트는 인증서를 받아 CA의 공개키복호화하여 접속 요청 서버가 신뢰할만한지 검증한다
  3. 복호화가 완료되면 인증서가 신뢰할만하기 때문에 클라이언트는 데이터를 주고 받을 대칭키를 생성한다
  4. 클라이언트는 대칭키를 서버의 공개키암호화하여 서버에게 전송한다.
  5. 서버는 자신의 비밀키로 클라이언트가 보낸 대칭키복호화한 뒤 그 대칭키를 통해 데이터를 주고 받는다.

HTTPS의 특징

기밀성

인터넷과 같은 공공 매체에서 두 참여자 간의 통신을 보호한다.

무결성

정보를 변조되지 않게 목적지에 도달하게 한다.

인증

HTTPS를 통해 웹사이트의 진위 여부를 확인할 수 있다.

속도

1. HTTP보다 빠른 HTTPS

  • 평문 통신에 비해 암호화 통신은 CPU/메모리와 같은 리소스를 많이 요구한다. 그러므로 서버 한 대당 처리가능한 Request 수가 평문 통신에 비해 줄어든다.
  • 하지만 하드웨어의 발달로 인해 HTTPS를 사용하더라도 속도저하가 거의 일어나지 않고, HTTP/2.0을 함께 이용하면 HTTP보다 HTTPS가 더 빠르게 동작한다.
  • 따라서 과거에는 민감한 정보를 다루는 경우에만 HTTPS에 의한 암호화 통신을 사용했지만 현재는 모든 웹 페이지에서 HTTPS를 적용하는 방향으로 바뀌고 있다.

2. AMP

  • 가속화된 모바일 페이지 (AMP, Accelerated Mobile Pages)를 만들기 위해서 HTTPS 프로토콜을 사용해야한다.
    • AMP란 모바일 기기에서 HTML의 불필요한 부분을 없애 더 빠르게 콘텐츠를 로딩하기 위한 방법으로 구글이 개발한 것이다.

검색 엔진 최적화 (SEO)

대표적인 검색 포털 사이트 (구글, 네이버, 다음)에서
SEO(Search engine optimization) 를 통해 동일한 키워드를 포함한 사이트들 중 HTTPS 기반 사이트를 상위 노출해준다.

0개의 댓글