[TIL] HTTP, HTTPS

river·2022년 6월 8일
0

스터디

목록 보기
3/9

HTTP (Hyper TexT Protocol)

하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종.
서버와 클라이언트 사이에서 어떻게 메시지를 교환할지 정해놓은 규칙.

요청(Request)과 응답(Response)으로 구성되어있으며, 일반적으로 80번 포트를 사용한다.

웹 브라우저에서 인터넷 주소 맨 앞에 들어가는 http://가 바로 이 프로토콜을 사용해서 정보를 교환하겠다는 표시이다.

❓ 하이퍼텍스트

책을 비롯한 기존 인쇄물의 경우, 한 문서에서 다른 문서로 넘어가는 과정이 선형적으로 이루어진다. (페이지를 넘기는 등의 작업이 필연적으로 이루어짐.) 하이퍼텍스트는 이런 기존의 텍스트와 달리, 하이퍼링크를 통해 각 텍스트가 비선형적으로 연결된다.
예를 들어 이 블로그의 [TIL] useEffect와 useLayoutEffect의 차이 게시글로 이동하고 싶을 때, 굳이 목록으로 돌아가 해당 게시글을 찾을 필요 없이 연결된 하이퍼링크를 클릭하면 모든 작업을 건너뛰고 바로 이동할 수 있다.

HTTPS (HTTP Secure)

사용자 컴퓨터와 방문한 사이트 간에 전송되는 사용자 데이터의 무결성과 기밀성을 유지할 수 있게 해주는 인터넷 통신 프로토콜

TLS를 사용해 암호화된 연결을 하는 HTTP를 말한다. 웹사이트 주소는 http://가 아닌 https://로 시작되며, 포트 또한 80이 아닌 443번을 사용한다.

HTTPS와 달리 암호화되지 않은 HTTP 방식의 경우 중간자 공격, 도청의 가능성이 높아 위험하다.

SSL? TLS?

SSL(Secure Sockets Layer, 보안 소켓 계층)

  • 암호화 기반 인터넷 보안 프로토콜. 전달되는 모든 데이터를 암호화하고 특정한 유형의 사이버 공격도 차단한다.

TLS(Transport Layer Security, 전송 계층 보안)

  • SSL의 업데이트 버전. Netscape의 이탈로 소유권 변경을 위해 명칭이 변경되었을 뿐 SSL과 동일하다.

작동 방식

  1. 암호화 : 교환되는 데이터를 암호화해 침입자로부터 보호한다. 복호화가 거의 불가능하기 때문에 사용자가 웹사이트를 탐색하는 동안 아무도 대화를 도청할 수 없고, 페이지에서의 활동을 추적할 수 없으며, 정보를 도용할 수 없다.
  2. 데이터 무결성 : 데이터에 디지털 서명을 하여 데이터가 전송되는 동안 의도에 관계 없이 데이터가 변경되거나 손상되는 일을 방지한다.
  3. 인증 : 사용자가 의도된 웹사이트와 통신중임을 입증한다. 중간자 공격을 차단하고, 사용자의 신뢰를 구축한다.

HandShake

  1. 클라이언트에서 서버로 메세지를 전송한다. 핸드셰이크의 시작으로, 이 메세지에 TLS 버전, 암호화 알고리즘, 무작위 바이트 문자열이 포함된다.

  2. 서버에서 클라이언트로 메세지를 전송한다. 클라이언트 메세지에 대한 응답으로, 서버의 SSL 인증서, 선택한 암호화 알고리즘, 서버에서 생성한 무작위 바이트 문자열이 포함된다.

  3. 클라이언트가 서버의 SSL 인증서를 인증 발행 기관에 검증한다.

  4. 클라이언트는 무작위 바이트 문자열을 공개 키로 암호화된 pre-master secret key를 서버로 전송한다.

  5. 서버가 pre-master secret key를 개인 키를 통해 복호화한다.

  6. 클라이언트와 서버는 클라이언트가 생성한 무작위 키, 서버가 생성한 무작위 키, pre-master secret 키를 통해 세션 키를 생성한다. 양쪽 모두 같은 키가 생성되어야 한다.

  7. 클라이언트는 세션 키로 암호화된 완료 메세지를 전송한다.

  8. 서버 역시 암호화된 완료 메세지를 전송한다.

  9. 핸드셰이크가 완료되고, 세션 키를 사용해 통신을 진행한다.

profile
가보자고

0개의 댓글