HTTPS란?

Nahyeon.In·2024년 6월 5일

HTTP

HTTP(HyperText Transfer Protocol)는 다양한 시스템 간의 통신을 위한 프로토콜이다. 하지만 서버에서 클라이언트로 전송되는 데이터가 암호화되지 않아 쉽게 도난당할 수 있다.

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 SSL/TLS 보안을 추가한 통신 프로토콜이다. HTTPS는 브라우저와 서버 간의 데이터를 암호화한다. HTTPS가 이러한 통신을 안전하게 보호할 수 있게 하는 주요 메커니즘은 Transport Layer Security(TLS)이며, 이는 이전에 Secure Sockets Layer(SSL)로 알려져 있었다.

SSL

SSL은 웹 서버와 웹 브라우저 간의 보안을 위한 프로토콜이다. TLS/SSL은 비대칭 암호화와 대칭 암호화의 조합을 사용하여 클라이언트와 서버 간의 연결을 세션 시작부터 안전하게 보호한다.

  1. 대칭 암호화

    대칭 암호화는 암호화와 복호화에 동일한 키를 사용한다. 이 키는 비밀로 유지되어야 하며 통신 당사자 간에 공유된다. 이 과정은 비교적 빠르기 때문에 대량의 데이터를 암호화하는 데 적합하다.

  2. 비대칭 암호화

    비대칭 암호화는 공개 키와 개인 키의 한 쌍을 사용한다. 공개 키는 공개적으로 공유되지만 개인 키는 비밀로 유지된다. 공개 키로 암호화된 데이터는 해당 개인 키로만 복호화할 수 있다. 비대칭 암호화는 대칭 암호화에 비해 더 많은 시간과 계산 자원을 필요로 한다.

SSL/TLS는 초기에는 비대칭 암호화를 사용하여 대칭 키를 안전하게 전달한 다음, 효율적이고 안전한 데이터 전송을 위해 대칭 암호화로 전환한다.

  1. A가 B에게 연결 요청을 보낸다.
  2. B가 자신의 공개 키를 A에게 보낸다.
  3. A가 대칭 키를 B의 공개 키로 암호화하여 B에게 보낸다.
  4. B가 자신의 개인 키로 A의 대칭 키를 복호화하여 A의 대칭 키를 획득한다.
  5. 이 대칭 키를 사용하여 A와 B는 안전하게 통신할 수 있다.

인증서 발급 과정

  1. 사이트는 인증 기관(CA)에게 사이트 정보와 공개 키가 포함된 인증서 서명 요청(CSR)을 보낸다.
  2. CA는 사이트 정보의 정확성을 확인한다.
  3. 확인 후, CA는 사이트 정보와 공개 키가 포함된 인증서를 자신의 개인 키로 서명하여 디지털 인증서를 만든다.
  4. 생성된 인증서는 사이트에 보내진다.
  5. CA의 공개 키는 사용자의 브라우저나 운영 체제에 미리 설치된 신뢰할 수 있는 CA 목록의 일부로 포함되어 있다.

SSL/TLS 핸드셰이크

  1. 사용자가 사이트에 접근 요청을 하면 핸드셰이크 과정이 시작된다.
  2. SSL/TLS 핸드셰이크 동안 사이트는 클라이언트에게 자신의 인증서를 제공한다.
  3. 클라이언트는 브라우저에 내장된 CA의 공개 키를 사용하여 사이트의 인증서를 복호화하고 검증한다. 이 검증 과정에서는 인증서의 유효 기간, CA의 서명, 사이트의 도메인을 확인한다.
  4. 클라이언트는 pre-master secret을 생성하고 이를 사이트의 공개 키로 암호화하여 사이트에 보낸다.
  5. 사이트는 자신의 개인 키로 암호화된 pre-master secret을 복호화하고, 이 정보를 양 당사자가 생성한 랜덤 값과 함께 사용하여 세션 키를 생성한다.
  6. 세션 키를 사용하여 사이트와 클라이언트는 암호화된 데이터를 교환하여 안전한 통신을 진행한다.


사진출처: 이해하기-http-vs-https


📁 Reference

HTTPS 동작 과정 (대칭키, 공개키, SSL, TLS, CA)

0개의 댓글