HTTP&HTTPS / SSL

EricHan·2022년 8월 25일
0

HTTP(HyperText Tranfer Protocol)는 가장 널리 퍼진 인터넷에서 데이터를 주고 받을 수 있는 프로토콜(통신규약)을 뜻한다.

대표적인 특징으로는

  • HTTP는 Connectionless 방식으로 동작한다.

  • 기본적으로 자원 하나에 하나의 연결을 만든다.
    그래서 서버에 연결-요청-응답 후에 연결을 끊는다.
    (이를 위해 쿠키나 세션, 토큰방식의 OAuth, JWT가 사용)

  • TCP(HTTP/1, 2) 와 UDP(HTTP/3) 사용

  • application layer 프로토콜

이며, 작동 방식으로는

  • HTTP는 서버/클라이언트 모델을 따른다.
  • 클라이언트에서 request(요청)을 보내면, 서버는 요청을 처리해서 response(응답)을 보낸다.
  • 웹서버는 보통 표준포트인 80번 포트로 서비스한다

불특정한 다수를 대상으로 서비스 할 수 있고 다수의 사용자가 서비스를 사용하더라도 접속유지를 최소한으로 할 수 있기 때문에 많은 유저의 요청을 처리 할 수 있다는 장점이 있지만,

Connectionless 방식으로 연결을 끊으므로, 클라이언트의 이전 상태를 알 수 없는점 --- stateless(Connectionless에서 파생되는 특징이다)
쿠키로 데이터가 저장되기 때문에 클라이언트의 로그인 상태를 유지할 수 없다는 점

무엇보다

  • 암호화 X -> 도청 가능성 존재
  • Request의 출처, Client를 확신할 수 X
  • 신원이 보장된 특정 Client와만 통신할 수 X
  • 대량의 Request를 통한 Dos 공격 위험성 존재
  • Response의 출처, Server를 확신할 수 X
  • Response를 보낸 Server가 의도한 Server인지 확신할 수 X (위장 Server일 가능성)
  • 완전성(정보의 정확성) X
  • Client 와 Server가 보낸 정보를 중간에 누군가 바꿀 위험성 존재
    (하나같이 전부 다 안전성 및 보안성의 문제이다...)

이와 같은 문제점이 있어 한계가 분명한 프로토콜이다.

이와 같은 보안적인 부분을 보완하고자 나온 프로토콜이 HTTPS(HyperText Transfer Protocol over Secure Socket Layer)이다.

여기서 추가된 S의 의미는

HTTP 레이어에서 SSL(TLS) 프로토콜을 얹어 평문 데이터를 암호화 한다는 것을 말한다.

HTTPS의 특징으로는

  • 443 포트 사용

  • HTTP 메시지를 TCP로 보내기전, 암호화하는 보안 계층으로 보냄

  • SSL이나 TLS 프로토콜을 통해 세션데이터 암호화

  • TLS(Transport Layer Security) - SSL에서 이름이 변경된 것. (즉 똑같은 말이다... 하지만 SSL이라는 명칭을 더 많이 사용)

  • 클라이언트(웹 브라우저)는 웹 resource에 대한 transaction 수행을 요청받으면 URL의 scheme를 검사함

  • http scheme -> 서버에 80포트 연결, 명령전송

  • https scheme -> 443포트 연결, handshake, 암호화된 HTTP 명령

SSL의 동작 방식으로는
공개키 암호화 방식 + 대칭키 암호화 방식

공개키 방식은 느리기 때문에 대칭키를 전달하는데에 사용하고 공유된 대칭키로 통신 진행한다.

SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 SSL이 정보를 도난당하지 않도록 막아주는 역할을 한다.

HTTPS는 보안적인 부분에서 매우 강하다는 장점이 있지만,
암호화된 정보를 교환 하기 때문에 서버에 과부하가 걸리는 경우가 생길 수 있으며, 아직까진 HTTP보다는 느리다는 단점 또한 가지고 있다.(이제 거의 차이 없음...)

profile
desarollitor

0개의 댓글