HTTP와 HTTPS

break 없는 while loop·2024년 12월 7일
post-thumbnail

1. HTTP? HTTPS?

  1. HTTP (HyperText Transfer Protocol)

    • 기본적인 특징:
      • 클라이언트(브라우저)와 서버 간의 데이터 전송을 위한 프로토콜
      • 데이터를 암호화하지 않고 전송하므로 텍스트 형태로 전송됨
      • 일반적으로 포트 80을 사용
    • 보안:
      • 암호화가 적용되지 않아서 전송 중 데이터가 탈취될 가능성이 있음
      • 중요한 정보(로그인 정보, 신용카드 정보 등)를 주고 받기에는 부적합
    • 주요 용도:
      • 보안이 필요하지 않은 일반적인 웹 페이지(예: 블로그, 공지사항 페이지)
  2. HTTPS (HyperText Transfer Protocol Secure)

    • 기본적인 특징:
      • HTTP에 SSL/TLS(보안 프로토콜)를 추가하여 데이터를 암호화
      • 데이터를 안전하게 전송하기 위해 HTTPS 사용
      • 일반적으로 포트 443 사용
    • 보안:
      • 데이터 암호화를 통해 전송 중 탈취되어도 내용을 읽을 수 없음
      • 데이터 무결성을 보장하여 전송 중 변경이 발생하지 않도록 함
      • 서버와 클라이언트 간의 신원을 인증하여 신뢰할 수 있는 통신을 보장
    • 주요 용도:
      • 로그인, 결제, 개인정보 처리 등 보안이 중요한 웹 서비스
  3. 핵심 차이점

구분HTTPHTTPS
보안암호화되지 않음SSL/TLS를 통해 암호화
포트 번호80443
속도빠름 (암호화 없음)조금 느림 (암호화로 인한 오버헤드)
사용성보안이 필요 없는 사이트보안이 필요한 사이트
브라우저 표시일반적인 URL 표시🔒 자물쇠 아이콘 및 "https://"

2. HTTPS의 원리

HTTPS는 SSL/TLS 프로토콜을 사용해 클라이언트와 서버 간 데이터를 암호화하여 안전하게 통신한다. 이를 위해 공개키 암호화와 대칭키 암호화를 조합한 하이브리드 방식을 사용한다.

※ SSL/TLS?

TLS는 SSL의 업그레이드 버전이다.

항목SSLTLS
풀네임Secure Sockets LayerTransport Layer Security
버전SSL 2.0, SSL 3.0TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3
보안성취약점 발견 (SSL 3.0 이후로 사용 중단)더 강력한 암호화 알고리즘과 보안 개선
암호화 알고리즘상대적으로 오래된 알고리즘 사용최신 암호화 알고리즘 및 키 교환 방식
핸드셰이크 속도느림개선된 핸드셰이크 속도로 더 빠름
HMAC 방식MD5와 SHA-1 같은 약한 해시 사용SHA-256 같은 더 강력한 해시 사용
버전 관리 기관NetscapeIETF (Internet Engineering Task Force)
  1. HTTPS 통신 과정

    1. 클라이언트 요청:
      사용자가 브라우저에서 https://로 시작하는 URL을 입력하면, 클라이언트는 HTTPS 연결을 요청한다.
    2. 서버 인증서 제공:
      서버는 SSL/TLS 인증서를 클라이언트에게 전송한다. 이 인증서는 다음 정보를 포함한다.
    • 서버의 공개키(Public Key)
    • 서버 도메인 정보
    • 인증 기관(CA, Certificate Authority)의 서명
    1. 인증서 검증:
      클라이언트는 서버의 인증서가 신뢰할 수 있는 인증 기관(CA)에 의해 발급된 것인지 확인한다. (브라우저는 사전에 신뢰할 수 있는 CA 목록을 보유하고 있음)
    2. 세션 키 생성:
    • 클라이언트는 인증서의 공개키를 사용해 대칭키(세션키)를 암호화하여 서버로 전송한다.
    • 서버는 자신의 개인키(Private Key)로 이 암호화된 대칭키를 복호화한다.
    • 이제 클라이언트와 서버는 같은 대칭키를 공유하게 된다.
    1. 데이터 암호화 통신:
    • 대칭키를 사용해 데이터 전송 시 모든 데이터를 암호화
    • 암호화된 데이터는 중간에서 가로채더라도 복호화할 수 없음
  2. 사용되는 암호화 기법

    1. 공개키 암호화 (비대칭키 암호화)
    • 역할: 초기 단계에서 대칭키(클라이언트가 생성, 랜덤 알고리즘 사용)를 안전하게 전달하기 위해 사용
    • 원리:
      • 서버는 공개키(Public Key)를 클라이언트에 제공
      • 클라이언트는 공개키로 데이터를 암호화
      • 서버는 개인키(Private Key)로 암호화된 데이터를 복호화
    1. 대칭키 암호화
    • 역할: 본격적인 데이터 전송 단계에서 사용
    • 원리:
      • 동일한 키를 사용해 데이터를 암호화 및 복호화
      • 공개키 암호화에 비해 속도가 빠르며, 대량의 데이터 전송에 적합
  3. 요약
    HTTPS는 비대칭키 암호화로 대칭키를 안전하게 교환하고, 이후 데이터 전송에는 대칭키 암호화를 사용하여 효율적이고 안전한 통신을 구현한다. 이러한 구조 덕분에 기밀성과 무결성을 유지하면서도 속도를 보장할 수 있다.

profile
프로그래밍 지식 아카이브용

0개의 댓글