HTTP와 HTTPS의 차이점

특징 HTTP HTTPS
이름 Hypertext Transfer Protocol Hypertext Transfer Protocol Secure
데이터 암호화 암호화되지 않음 (평문) SSL/TLS로 암호화됨
보안성 가로채기 취약 데이터가 가로채기에서 안전함
인증 별도의 인증 없음 서버의 신원 인증을 함
기본 포트 80 443
URL 형식 http:// https://

HTTPS 암호화 과정(기술적인 상세 설명)

HTTPS는 비대칭키(공개키/개인키) 방식과 대칭키(공유키) 방식 모두를 사용합니다. 이 과정은 SSL/TLS 프로토콜을 통해 이루어지며, 데이터 암호화뿐만 아니라 신원 인증, 무결성 보장까지 수행합니다.

단계별 HTTPS 접속/암호화 동작 흐름

  1. 클라이언트 Hello

    • 브라우저(클라이언트)가 서버에 HTTPS로 연결을 요청합니다.
  2. 서버 인증서 전송

    • 서버는 SSL/TLS 인증서를 보냅니다. 이 인증서에는:
      • 서버의 신원 정보
      • 서버의 공개키
      • 공인된 인증기관(CA)의 디지털 서명이 포함되어 있습니다.
  3. 인증서 검증

    • 브라우저는 이 인증서가 신뢰할 만한 기관(CA)에서 왔는지, 만료되지 않았는지 등을 체크해 신뢰성을 확인합니다.
  4. 키 교환(핸드셰이크)

    • 인증서가 유효하다면, 브라우저는 랜덤한 세션 대칭키(symmetric session key)를 생성합니다.
    • 이 세션키를 서버의 공개키로 암호화하여 서버에 전송합니다.
    • 오직 서버만이 자신의 개인키로 이 세션키를 복호화할 수 있습니다.
  5. 대칭키 세션 암호화

    • 이후의 모든 데이터 전송은 새로 교환한 대칭 세션키(예: AES)로 빠르고 효율적으로 암호화되어 전송됩니다.
    • 대칭키 암호화는 비대칭키 방식보다 빠르기 때문에 실제 데이터 교환에 사용합니다.
  6. 데이터 보호

    • 이 세션 동안의 모든 HTTP 요청/응답 데이터가 암호화되어 이동합니다.
    • 중간에서 누군가 데이터 패킷을 탈취하더라도, 세션키 없이는 해독할 수 없습니다.
  7. 무결성/인증 제공

    • HTTPS는 데이터가 변조되지 않았음을 보장(무결성)하고, 접속한 서버가 진짜임을 인증합니다.

암호화 플로우 요약

암호화 과정 도식화

단계 암호화 방식 목적
서버가 인증서 전송 공개키(RSA 등) 서버 인증, 키 교환 시작
클라이언트가 세션키 전송 공개키로 암호화 대칭 세션키를 안전하게 전달
데이터 교환 대칭키(AES 등) 실제 데이터 암호화

왜 HTTPS가 중요한가?

요약하자면:
HTTP는 평문 통신 방식이며, HTTPS는 HTTP 위에 강력한 암호화와 인증 절차를 더해 모든 사용자·서버간 데이터를 안전하게 보호합니다.

HTTPS 핸드셰이크 설명

HTTPS 핸드셰이크(SSL/TLS 핸드셰이크)는 브라우저와 웹 서버가 안전하고 암호화된 연결을 만드는 과정입니다. 단계별 과정을 설명합니다.

1. 개요

목적:

2. 단계별 HTTPS 핸드셰이크 진행 과정

단계 설명
Client Hello 클라이언트가 지원하는 TLS 버전, 암호화 방식, 랜덤값(Client Random)을 서버에 보냄
Server Hello 서버가 결정한 버전/암호화 방식, 자신의 랜덤값(Server Random), 그리고 서버 인증서를 클라이언트에 반환
인증서 검증 클라이언트가 서버의 인증서를 신뢰할 수 있는지 검증(공인 CA 확인 등)
키 교환 클라이언트가 pre-master secret(임시 키)을 생성, 서버의 공개키로 암호화해 서버로 전송
세션키 생성 양쪽이 교환한 random 값들과 pre-master secret을 조합해 동일한 대칭 세션키를 생성
암호화된 통신 시작 이후 데이터는 모두 이 대칭 세션키로 빠르게 암호화해 주고받음

3. HTTPS 핸드셰이크 과정 설명

4. 보안의 원리