ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네트워크] HTTP와 HTTPS
    legacy/Network 2024. 7. 7. 21:08

     

    1. HTTP

    1-1. HTTP란?

    HTTP란 Hyper Text Transfer Protocol의 약자로써, 서버/클라이언트 모델에서 데이터를 주고받기 위한 프로토콜이다. HTTP는 80 포트를 사용하며 클라이언트로부터 요청이 오기를 기다린다.

     

    1-2. HTTP 구조

    GET /index.html HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    • 요청 라인(Request Line)
      • GET → HTTP 메서드
      • /index.html → 요청하는 자원의 URL
      • HTTP/1.1 → HTTP 프로토콜 버전
    • 요청 헤더 (Request Headers)
      • Host → 요청 도메인
      • User-Agent → 브라우저에 대한 정보
      • Accept → 클라이언트가 수신할 수 있는 Content 타입
      • Accept-Language → 클라이언트가 지원하는 인코딩 유형
    • 바디 (Body)
      • 예시의 경우 GET 요청이므로 바디를 포함하지 않는다.

     

    2. HTTPS

    2-1. HTTPS란?

    HTTPS란 기존의 HTTP 프로토콜에 Secure 기능이 추가된 프로토콜이다. HTTP는 80포트를 사용하고 HTTPS는 443 포트를 사용한다.

    HTTP 통신은 요청-응답 과정에서 데이터를 암호화하지 않는다. 이는 네트워크 상에서 중간에 제 3자가 데이터를 볼 수 있는 위험성을 갖고 있다. 따라서 HTTPS 통신을 통해 중간에 데이터를 볼 수 없도록 암호화해야 한다.

     

    2-2. 데이터 암호화

    HTTPS는 데이터를 보호하기 위해 SSL(Secure Sockets Layer) 또는 TLS(Transfer Layer Secure) 프로토콜을 사용한다. HTTPS의 암호화 과정에는 공개키와 비밀키가 둘 다 사용된다.

    • 대칭키 암호화
      • 데이터 암호화 및 복호화 시에 같은 키를 사용한다.
        • A라는 키로 암호화하였다면 이를 복호화하기 위해서는 A키가 필요하다.
      • 암호화 및 복호화를 동일한 키로 수행하기 때문에 속도가 빠르다.
      • 동일한 키로 암호화 및 복호화를 수행하므로 키가 노출되어서는 안 된다.
    • 비대칭키 암호화
      • 데이터를 암호화 및 복호화할 때, 서로 다른 키를 사용한다.
      • 데이터를 암호화할 때는 공개키를 사용하고 복화화 시에는 비밀키가 사용된다.
        • 비밀키를 토대로 공개키가 생성되기 때문에 클라이언트가 공개키로 암호화한 데이터를 서버에서는 비밀키를 사용하여 해독할 수 있다.
      • 암호화 및 복호화를 서로 다른 키로 수행하기 때문에 속도가 느리다.
      • 공개키를 탈취했다고 하더라도 복호화하기 위한 비밀키가 없기 때문에 안전하다.

     

     

    참고로 HTTPS를 사용하지 않으면 안전하지 않는 파일이라고 뜬다.

Designed by Tistory.