[F-Lab 멘토링 학습]

HTTPS 암호화 작동원리

everydeveloper 2023. 11. 4. 15:37

HTTPS 암호화 작동원리

HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 SSL/TLS 암호화를 추가한 프로토콜입니다. HTTPS의 암호화 작동 원리는 크게 다음 단계로 나눌 수 있습니다.

1. 핸드셰이크 단계

  1. 클라이언트 → 서버: "안녕하세요, 접속하고 싶어요."
    • 클라이언트가 서버에게 초기 연결 요청을 보냅니다.
  2. 서버 → 클라이언트: "안녕하세요, 이건 제 공개키입니다."
    • 서버는 클라이언트에게 자신의 공개키와 인증서를 보냅니다.
  3. 클라이언트: "이 공개키를 믿을 수 있나?"
    • 클라이언트는 받은 인증서가 신뢰할 수 있는 CA(Certificate Authority)에 의해 발급되었는지 검증합니다.
  4. 클라이언트: "이건 우리만의 비밀번호(Pre-Master Secret)"
    • 클라이언트는 서버의 공개키로 암호화한 'Pre-Master Secret'라는 임시 키를 생성하고 서버에게 보냅니다.
  5. 서버: "이걸로 암호화 키를 만들자"
    • 서버는 자신의 개인키로 'Pre-Master Secret'를 복호화하고, 이를 바탕으로 세션 키를 생성합니다.
  6. 클라이언트 & 서버: "이 키로 통신하자"
    • 클라이언트와 서버 양쪽 모두 같은 'Pre-Master Secret'를 사용해 세션 키를 생성합니다. 이 키는 이후의 통신에서 사용됩니다.

2. 데이터 전송 단계

  • 클라이언트와 서버는 핸드셰이크 단계에서 생성한 세션 키를 사용하여 데이터를 암호화하고 복호화합니다.

3. 세션 종료

  • 통신이 끝나면 세션 키는 폐기되며, 다음 세션에서는 새로운 세션 키가 생성됩니다.

이렇게 HTTPS는 암호화와 인증 과정을 거쳐 안전한 통신을 가능하게 합니다.

여기서 세션이란?

세션(session)이란 클라이언트와 서버 간에 일정 시간 동안 유지되는 상호작용을 의미합니다. 즉, 한 쪽이 다른 쪽에 처음 연결을 요청해서 통신이 종료될 때까지의 시간 동안의 일련의 정보 교환 과정을 말합니다.

세션 관리는 여러 가지 방법으로 이루어질 수 있습니다:

1. 쿠키(Cookie)

클라이언트 측에서 정보를 저장하는 방법으로, 서버는 HTTP 응답 헤더를 통해 쿠키를 클라이언트에게 전달합니다.

2. 세션 스토리지(Session Storage) / 로컬 스토리지(Local Storage)

웹 브라우저에서 제공하는 저장 공간을 활용하는 방법입니다.

3. URL 매개변수

URL에 파라미터를 포함시켜 클라이언트를 식별하는 방법입니다.

4. 서버 측 세션 저장

서버 측에서 클라이언트의 정보를 저장하는 방법으로, 일반적으로 데이터베이스, 파일, 또는 메모리 등을 활용합니다.

5. 토큰 기반 인증(JWT 등)

토큰을 사용해 클라이언트를 식별하고 인증하는 방법입니다.

세션은 사용자의 로그인 상태 유지, 쇼핑 카트 기능, 사용자 설정 등을 관리하는 데 사용되며, HTTP 자체는 상태를 유지하지 않는(stateless) 프로토콜이기 때문에 세션 관리는 매우 중요한 역할을 합니다.