HTTP를 넘어(HTTPS, HTTP/2,3, 웹소켓, VPN)

임혁진·2023년 12월 25일
0

네트워크

목록 보기
5/5

HTTPS

HTTPS는 웹 통신의 보안을 강화하기 위한 프로토콜로, 클라이언트와 서버간의 데이터를 암호화 하여 내부의 정보를 보호한다.

CA 인증서

HTTPS 통신은 CA(인증 기관)가 발급한 인증서로 시작한다. 이 인증서는 웹사이트의 신뢰성을 보장하고, 유니코드 문자 변형과 같은 공격으로부터 보호한다. (ex a위에 점을 붙인 가짜사이트 등)

  • CA에서 인증서 발급: 대부분의 웹사이트는 CA로부터 인증서를 발급받는다. 이 인증서는 사이트의 신뢰성을 입증한다.

  • 발급받은 인증서를 웹 서버에 저장한다. 무료로 제공되는 서비스(Let's Encrypt)도 있다.

  • CA는 브라우저에게 공개키를 준다. 공개키는 데이터 암호화와 서버 신뢰성 확인에 사용된다.

  • 클라이언트와 서버 간의 통신은 데이터를 RSA와 같은 암호화 알고리즘을 사용하여 보호합니다.

RSA

클라이언트와 서버 간의 통신 데이터를 암호화 하여 보호하는 기술.

  • 클라이언트와 서버는 데이터 암호화용 키를 공개키로 암호화하여 서로에게 전송한다.

  • 브라우저에서 만든 암호화 키를 서버와 클라이언트가 공유한다.

  • 데이터를 암호화 키를 통해 읽을 수 있고 키가 없는 외부 공격자는 읽을 수 없다. 그러나 이 암호화용 키 자체를 해킹당할 가능성은 존재한다.

=> 해결책: DH을 통해 키 보호

  • HTTP3, TLS1.3은 DH로 이 암호화용 키를 보호한다. RSA와는 다르게 키를 만들 수 있는 조각들만 보내서 조각을 합쳐서 키를 만든다.

  • DHE: 키를 주기적으로 바꿔서 순간적으로 해킹당하더라도 다음에는 방지한다.

HTTP/2 HTTP/3

HTTP/2와 HTTP/3는 이전 프로토콜보다 효율성과 속도를 개선하기 위한 프로토콜로 요즘에 멀티미디어(이미지, 동영상)의 전송이 증가하면서 통신의 비효율성과 커넥션 제한 문제를 해결하기 위해 개발되었다.

HTTP/2

  • 구글에서 개발됨
  • 헤더 압축: 헤더 정보를 압축하여 통신 효율을 높인다.
  • 다중 스트림: 하나의 커넥션 안에서 여러 개의 스트림을 병렬로 처리할 수 있어, 동시에 여러 요청을 보내고 받을 수 있다.
  • 서버 푸시: 클라이언트가 요청하지 않은 데이터도 서버에서 미리 보내놓을 수 있다.
  • HTTPS가 필수다.

HTTP/3

  • UDP를 기반으로 하는 QUIC 프로토콜과 TLS1.3을 사용하여 개발됨
  • TCP의 비효율성을 UDP를 사용해 극복했다.
  • 0RTT (Zero Round Trip Time): 보안 위혐은 존재하지만 3-way handshake를 피해 빠른 연결이 가능하다. (일반 적으론 1 Round tripo time 소요)
  • UDP와 QUIC을 사용하기 때문에 L4, L5 레이어에서 작동한다.

웹소켓

클라이언트에서 항상 먼저 요청을 보내야 하는 기존 HTTP프로토콜의 문제를 통신을 유지하며 서버에서도 데이터를 보낼 수 있는 웹소켓을 사용해 해결

  • 기존 모델은 지속적인 데이터(실시간 데이터)를 다룰 때 클라이언트에서 주기적으로 서버에 요청을 보내는 비용이 발생한다. 이 요청을 처리하는 비용이 모두 서버에 부과되는 문제가 있었다.
  • ws는 http와 다른 프로토콜, 같은 포트에 사용이 가능하다.
  • 서버에 ws 프로토콜 업그레이드를 요청하면 업그레이드 응답과 함께 연결이 가능하다.
  • 개발자 도구 messages 탭에서 데이터를 확인할 수 있다.
  • 실시간 데이터, 양방향 데이터에서 고려할 수 있다.
  • https처럼 보안을 강화한 wss도 있다.

VPN

  • PN: Private Network(사설망)
  • VPN: Virtual Private Network(가상 + 사설망)
  • 인터넷은 전세계에 연결되어있는 망, 사설망은 독립적으로 임의의 구역끼리만 통신할 수 있는 망
  • 직접 사설망을 구축할 수도 있지만 인터넷상에서 사설망과 비슷한 효과를 내는 VPN을 구축할 수 있다.
  • VPN 내부에선 감시, 필터링을 할 수 있고 원하지 않으면 외부에 공개되지 않는다.
  • 해외 VPN: 위와 같은 사설망 효과를 통해 다른 지역에 있는 것처럼 동작한다.

프록시

[클라이언트 - (포워드 프록시)] -> 인터넷 -> [(리버스 프록시) -> 서버 모델]

포워드 프록시

  • 불필요한 헤더 제거 혹은 필터링

리버스 프록시

  • 불필요한 요청 필터링
  • Apache, Nginx 등을 통해 구현 가능, 실제 서버보다 잘하는 기능들을 수행한다
  • HTTPS를 적용시켜준다.
  • 정적 파일 서빙(html, css, js, image, font)
  • 압축 기능 지원
  • 구동중인 서버가 여러개일 경우 로드 밸런싱, 오토 스케일링 등의 기능을 수행함

게이트웨이

  • 클라이언트(HTTPS) -> 인터넷 -> 게이트(HTTP, ws, ftp) -> 서버
  • 기존 목적은 프로토콜을 바꾸는 용도
    요즘엔 리버스 프록시가 비슷한 역할(HTTPS요청을 내부에서 HTTP로 변환해서 통신)을 하기 때문에 프록시와 비슷한 뜻으로 사용된다.
  • AWS의 API Gateway도 프록시의 역할을 한다.
  • HTTP method의 CONNECT는 프록시를 거쳐도 그대로 보내는 요청이다.
profile
TIL과 알고리즘

0개의 댓글