Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

heyday2024 님의 블로그

HTTP, HTTPS 본문

프론트엔드 부트캠프

HTTP, HTTPS

heyday2024 2024. 11. 28. 21:51

1. HTTP란?

  • HTTP(Hypertext Transfer Protocol)는 서버와 클라이언트 간 데이터를 주고받는 통신 프로토콜.
  • 특징:
    • 80번 포트를 사용.
    • 데이터를 평문(Plain Text)으로 전송.
    • 빠르고 효율적이지만 보안이 취약.
  • 사용 사례:
    • 뉴스, 공개된 정보와 같은 민감하지 않은 데이터 전송.

HTTP의 문제점

  1. 도청 가능: 데이터가 암호화되지 않아 네트워크에서 쉽게 읽힘.
  2. 데이터 변조 가능: 전송 중 데이터가 손쉽게 변조될 수 있음.
  3. 신원 위조 가능: 클라이언트가 서버의 신뢰성을 검증할 수 없음.

2. HTTPS란?

  • HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 SSL/TLS 암호화를 추가하여 보안을 강화한 프로토콜.
  • 특징:
    • 443번 포트를 사용.
    • 데이터를 암호화해 제3자가 도청하거나 변조하지 못하도록 보호.
    • TLS(Transport Layer Security)를 통해 기밀성, 무결성, 인증을 제공.
  • 사용 사례:
    • 로그인, 결제 정보, 민감한 데이터 전송.

3. HTTP와 HTTPS의 주요 차이점

특징HTTPHTTPS

포트 번호 80번 443번
보안 수준 암호화 없음 (평문 데이터) 암호화 (TLS 사용)
속도 빠름 암호화 과정 때문에 약간 느림
비용 무료 인증서 발급 및 유지 비용 발생
도청 가능성 높음 매우 낮음
사용 사례 공개된 정보 민감한 데이터

4. HTTPS 통신 암호화 과정

1단계: 웹서버와 CA 간 인증서 발급

  1. 웹서버에서 공개키(A)와 비공개키(A') 생성:
    • 서버는 A(Public Key)와 A'(Private Key)를 생성.
  2. CSR 파일 작성 및 제출:
    • 서버는 CSR(Certificate Signing Request)을 작성해 CA에 제출.
    • CSR에는 서버의 공개키(A)와 서버 정보가 포함되며, 서버의 비공개키(A')로 서명.
  3. CA에서 인증서 발급:
    • CA는 서버 정보를 검증한 뒤, 인증서를 생성.
    • 인증서에는 서버의 공개키(A)와 CA의 서명(D')이 포함됨.
  4. 웹서버로 인증서 전송:
    • CA는 인증서를 서버로 전달. 서버는 인증서와 자신의 비공개키(A')를 보관.

2단계: 브라우저와 웹서버 간 TLS Handshake

  1. 브라우저가 HTTPS 요청 전송:
    • 사용자가 HTTPS URL에 접속하면 브라우저가 서버에 연결 요청.
  2. 서버에서 인증서 제공:
    • 서버는 인증서를 브라우저에 전송. 인증서에는:
      • 서버의 Public Key(A).
      • CA의 서명(D').
  3. 브라우저에서 인증서 검증:
    • 브라우저는 미리 설치된 CA의 **Public Key(D)**를 사용해 CA의 서명(D')을 검증.
    • 검증이 성공하면 서버의 **Public Key(A)**가 신뢰할 수 있음을 확인.

3단계: 세션 키(C) 교환

  1. 브라우저에서 세션 키(C) 생성:
    • 브라우저는 임의의 세션 키(C)를 생성.
    • 서버의 **Public Key(A)**로 C를 암호화.
  2. 암호화된 세션 키 전송:
    • 브라우저는 A로 암호화된 세션 키(C)를 서버로 전송.
  3. 서버에서 세션 키 복호화:
    • 서버는 자신의 비공개키(A')로 세션 키(C)를 복호화.
  4. 세션 키(C) 공유 완료:
    • 서버와 브라우저는 동일한 세션 키(C)를 공유.

4단계: 데이터 암호화 통신

  1. 대칭 암호화로 데이터 전송:
    • 서버와 브라우저는 공유된 세션 키(C)를 사용해 데이터를 암호화 및 복호화.
  2. 안전한 통신:
    • 네트워크를 통해 전송되는 데이터는 암호화되어, 도청 및 변조 방지.

5. HTTPS의 보안 문제 해결

  1. 도청 방지:
    • TLS 암호화를 통해 데이터를 보호. 공격자가 데이터를 가로채도 내용을 알 수 없음.
  2. 변조 방지:
    • TLS는 데이터의 무결성을 보장해 변조된 데이터를 탐지 가능.
  3. 신원 위조 방지:
    • CA 인증서를 통해 서버의 신뢰성을 검증. 가짜 서버로 유도 방지.

6. 중간자 공격(MITM) 방지

중간자 공격이란?

  • 공격자가 클라이언트와 서버 간 통신을 가로채, 가짜 공개키(A')를 전송하여 대칭키(C)를 생성.
  • 결과적으로 공격자는 데이터를 가로채고 변조 가능.

HTTPS의 방어 방법

  1. CA 인증서 사용:
    • 브라우저는 CA의 **Public Key(D)**로 서버 인증서를 검증.
    • 공격자는 CA 서명을 위조할 수 없으므로 신뢰를 얻을 수 없음.
  2. 세션 키 교환 보호:
    • 브라우저는 서버의 **진짜 공개키(A)**로만 세션 키(C)를 암호화.
    • 공격자는 서버의 비공개키(A') 없이 C를 복호화할 수 없음.

  • 이전에 보안 관련 수업에서 E2EE, 대칭/비대칭 암호화 등을 배운 기억이 있는데 조금씩 그 기억이 잊혀질 때쯤 다시 HTTP, HTTPS를 찾아보면서, 이전의 기억들 다시 조금 살아났다.