눈송이의 개발생활

[Network]HTTP와 HTTPS 본문

Computer Science/Network

[Network]HTTP와 HTTPS

꾸지새미언니

HTTP

  • Hyper Text Transfer Protocol
  • 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터 주고 받을 수 있는 프로토콜
  • 포트 번호 80번 사용
  • 애플리케이션 레벨의 프로토콜 ⇒ TCP/IP 위에서 작동
  • 비연결(connectionless)
    • 클라이언트가 요청한 응답을 서버에서 보내면 바로 연결이 끊김
  • 무상태(statelss)
    • 연결 끊으면 서버의 통신은 끝나고 상태 정보를 유지하지 않음
  • Method, Path, Version, Headers, Body로 구성됨

단점

  1. 평문 통신이기 때문에 도청이 가능
  2. 통신 상대를 확인하지 않기 때문에 위장 가능
  3. 완전성을 증명할 수 없어서 변조 가능

HTTP Method

  기능 설명
 POST  create  body부분에 데이터 담김. 서버값 변경
 GET  read  header부분에 url 담겨져 전송. ?로 data 실어서 query 작성. 브라우저에서 caching 가능
 PUT  update  리소스 전체 수정할 때 사용
 DELETE  delete  어떤 data 삭제할지 url에 드러나게 전달
 PATCH  update  리소스 일부 수정

 

 

HTTPS

  • Hyper Text Transfer Protocol Secure
  • 웹 통신 프로토콜인 HTTP의 보안이 강화된 버젼
  • HTTP에 데이터 암호화가 추가된 프로토콜
  • 통신하는 소켓 부분을 SSL 또는 TLS 프로토콜로 교체
  • 포트 번호 443번 사용
  • 암호화, 증명서, 안전성 보호 이용할 수 있음
  • 대칭키 암호화 방식과 비대칭키 암호화 방식 모두 사용
  • 암호화 통신은 CPU나 메모리 등의 리소스를 평문 통신(HTTP)보다 많이 요구
    • BUT 하드웨어의 발달로 이제는 속도 저하 거의 일어나지 않음
  • 데이터의 적절한 보호 보장
    • 구현 정확도, 서버 소프트웨어, 암호화 알고리즘 → 보호 성능 결정
  • 원리
    • 공개키 알고리즘 방식
    • 암호화, 복호화시킬 수 있는 서로 다른 키를 이용한 암호화
      • 공개키 : 모두에게 공개
      • 개인키(비공개키) : 개인에게만 공개. 서버가 갖는 비공개키(클-서 구조에서)
    • 클라이언트 → 서버
      1. 사용자의 데이터 공개키로 암호화
      2. 서버로 전송 (복호화 불가능)
      3. 서버의 개인키로 복호화

장점

  1. 네트워크 상에서 열람, 수정이 불가능해 안전함

단점

  1. 암호화 하는 과정이 웹 서버에 부하를 줌
  2. HTTP에 비해 느림
  3. HTTPS 설치 및 인증서 유지하는데 추가 비용 발생
  4. 인터넷 연결 끊긴 경우 재인증 시간 소요

 

HTTPS 동작 과정

  • Handshaking
    • 서버와 클라이언트 간의 세션키 교환
    • 세션키 : 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키. 빠른 연산 속도 필요하기 때문
    • 처음 연결을 성립하여 안전하게 세견키를 공유하는 과정에서 비대칭키 사용
    • 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키 사용
  • 흐름
    1. 클라이언트(브라우저)가 서버로 최초 연결 시도를 함
    2. 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨줌
    3. 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함
    4. 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송함
    5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
    6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행함

SSL

  • Secure Sockets Layer
  • 클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있도록 돕는 보안 계층
  • HTTP와 같은 계층의 프로토콜(FTP, SMTP 등)과 조합해 사용 가능
  • TLS
    • Transport Layer Security
    • SSL2.0에 취약점이 발견되어 구조를 재설계해서 SSL 3.0 발표 ⇒ 이전 버젼과 구분하기 위해 이름을 TLS로 변경!
Comments