HTTPS의 개념과 암호화 방식, 동작원리

민준·2025년 1월 27일
post-thumbnail

HTTPS는 인터넷 상에서 안전한 통신을 보장하기 위해 사용하는 프로토콜.
HTTP에 SSL/TLS 프로토콜을 결합해 통신 내용을 암호화 하고, 통신 상대의 신원을 보장.
이를 통해 중간자 공격(MITM) 과 같은 위협으로부터 데이터를 보호.

1. HTTPS의 목적과 주요 개념

(1). 암호화: 데이터를 안전하게 보호

  • 암호화: 서버와 클라이언트 간 데이터를 암호화 하여, 도청(Sniffing)이나 패킷 가로채기(Session Hijacking)등을 방지
  • 복호화: 암호화된 데이터를 해독할 수 있는 권한은 해당 통신 상대방에게만 있음.

(2). 인증: 상대가 진짜인지 확인

  • HTTPS는 신뢰할 수 있는 CA(인증 기관)를 통해 서버가 진짜임을 보장
  • 인증서에는 서버의 정보(도메인, 소유자 등)와 공개키가 포함
  • 이를 통해 사용자가 피싱 사이트나 악성 서버와 통신하지 않도록 보호

2. HTTPS의 암호화 방식

  • HTTPS는 비대칭키와 대칭키의 장점을 결합해서 사용.

(1). 비대칭키 암호화

  • 구조: 키 쌍(Pair)인 공개키(Public Key)비공개키(Private Key)가 존재

    • 공개키: 누구에게나 공개 가능(노출되어도 안전)
    • 비공개키: 서버만이 보관(절대 노출되면 안됨)
  • 작동 방식:

    • 클라이언트가 서버의 공개키를 이용해 데이터를 암호화
    • 서버는 해당 데이터를 자신의 비공개키로 복호화
  • 특징: 공개키는 노출돼도 안전하지만, 암호화/ 복호과 과정이 연산적으로 무겁고 느림

(2). 대칭키 암호화

  • 구조: 하나의 키만 사용 (암호화와 복호화에 동일한 키)

  • 작동 방식:

    • 클라이언트와 서버가 동일한 대칭키(세션키)를 공유
    • 이 키로 데이터를 암호화/복호화
  • 특징: 연산이 빠르고 효율적이지만, 키가 노출되면 매우 위험

왜 비대칭키와 대칭키를 모두 사용할까?

HTTPS는 속도와 보안을 모두 충족시키기 위해 두 방식을 결합해서 사용

1. 비대칭키로 세션키를 안전하게 공유:

  • 클라이언트와 서버는 대칭키를 주고받지 않고, 대신 비대칭키를 이용해 안전하게 세션키를 교환
  • 서버의 공개키로 세션키를 암호화하여 서버로 전송 → 서버는 비공개키로 이를 복호화
  • 이렇게 공유된 세션키는 이후 통신에 사용

2. 대칭키로 빠르게 암호화 통신:

  • 세션키가 공유된 이후부터는 대칭키 암호화를 사용하여 데이터를 교환
  • 대칭키는 연산 속도가 빠르기 때문에 HTTPS 통신 성능을 유지할 수 있음.

3. HTTPS 동작 과정(HTTPS Handshake)

(1) 서버 인증서 전달

  1. 클라이언트가 HTTPS 요청을 보냄.
  2. 서버는 자신의 인증서(SSL/TLS 인증서)를 클라이언트에게 보냄.
  • 이 인증서에는 서버의 공개키와 서버 정보가 포함되어 있음.
  • 인증서는 CA의 비공개키로 암호화되어 신뢰성을 보장.

(2) 클라이언트가 인증서 확인

  1. 클라이언트는 CA의 공개키를 사용해 서버 인증서를 복호화하고 확인
  • CA의 공개키는 모든 주요 웹 브라우저에 기본적으로 저장되어 있음.
    • CA(Certificate Authority)는 인증서 발급 기관으로, 인터넷에서 안전한 통신이 이루어지도록 서버의 신원을 보증해 주는 역할
      CA → 이 서버는 믿을만한 서버입니다! 라고 도장을 찍어주는 공인된 신뢰 기관
  • 서버의 도메인과 인증서 정보가 일치하는지 확인.

(3) 세션키 생성 및 공유

  1. 클라이언트는 임의의 대칭키(세션키)를 생성.
  2. 이 세션키를 서버의 공개키로 암호화하여 서버로 전송

(4) 서버가 세션키 수신

  1. 서버는 자신의 비공개키를 사용해 세션키를 복호화.
  • 이제 클라이언트와 서버는 동일한 세션키를 공유하게 됨.

(5) 대칭키로 안전한 통신

  1. 이후 통신은 대칭키(세션키)를 사용하여 암호화/복호화 진행.
  • 클라이언트와 서버만 해당 데이터를 읽을 수 있음.

(6) HTTPS Handshake 과정 이후

  • 클라이언트와 서버는 공유한 세션키(대칭키)를 사용해 암호화된 통신을 시작
  • 이후 데이터 전송은 빠르고 효율적인 대칭키 암호화를 사용

HTTPS 동작과정(그림)

0개의 댓글