HTTP/HTTPS통신 암호화 과정(MITM란? PKI란? CA란?)
IT/네트워크

HTTP/HTTPS통신 암호화 과정(MITM란? PKI란? CA란?)

반응형

Intro

  • 웹브라우저를 통해  웹서비스를 이용할 때 사용자는 HTTP/HTTPS 프로토콜로 데이터를 주고 받게 됩니다.
  • HTTPS/HTTP 통신은 대칭암호화, 비대칭암호화 방식을 적절하게 혼합하여 데이터를 암호화 합니다.
  • 네트워크구간에서 데이터 유출을 막기 위한 방법으로 HTTPS통신을 사용해야합니다.
  • HTTPS통신은 SSL/TLS인증서가 필요하고, SSL인증서는 CA기관에서 발급을 받을 수 있습니다.
  • 오늘은 HTTP/HTTPS가 어떻게 암호화하는지 알아 보도록 하겠습니다.

필요 사전 지식

  • HTTP/HTTPS
  • SSL/TLS
  • 대칭암호화, 비대칭암호화
  • 중간자공격(MITM)
  • 공개키 인증구조(PKI)
  • 인증기관(CA)

* 대칭암호화 란? 비대칭암호화 란?https://kim-dragon.tistory.com/67?category=834254

 

대칭암호화(symmetric encryption)와 비대칭암호화(asymmetric encryption)란?

대칭암호화(symmetric encryption)란? 대칭키(symmetric key)를 생성하여 이를 통해 데이터를 암호화/복호화 하는 방식 사용자가 대칭키(symmetric key)로 데이터를 암호화하고, 서버도 같은 대칭키(symmetric key.

kim-dragon.tistory.com

* HTTPS란? SSL/TLS란? https://kim-dragon.tistory.com/66?category=834254

 

HTTP란? HTTPS란? SSL이란? TLS란?

HTTP란? HTTP(HyperText Transfer Protocol)는 인터넷상에서 정보를 주고받을 수 있는 프로토콜 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response)을 위한 프로토콜 주로 일반 텍스트로 이루어

kim-dragon.tistory.com

 

HTTP 통신 암호화 과정

  1. 웹서버에서 웹서버의 public key(보라색 자물쇠)와 private key(보라색 열쇠)를 생성

 

  1. 웹서버에서 브라우저로 웹서버의 public key(보라색 자물쇠)를 복사

 

  1. 브라우저만의 private key(빨간색 열쇠)가 생성됨

 

  1. 웹서버에서 넘어온 public key(보라색 자물쇠)로 private key를(빨간색 열쇠)를 암호화 함 (키가 키를 암호화)

 

  1. public key(보라색 자물쇠)로 private key를(빨간색 열쇠)를 암호된 키를 웹서버로 전달

 

  1. 웹서버에서는 자기가 갖고 있는 private key(보라색 열쇠)로 이것을 복호화함

 

  1. 각각에 웹서버의 public key(보라색 자물쇠)와 브라우저의 private key(빨간색 열쇠)로 symmetric key(녹색 열쇠)를 생성함

 

  1. 이제 브라우저에서 symmetric key(녹색 열쇠)를 사용하여 데이터를 암호화하고 서버와 통신하게됨 

그러면 이제 보안이 완벽히 안전한가? → No

  • 해커들은 송신자와 수신자 통신 중간에서 가짜 웹서버로 들어오게 하여 symmetric key(녹색 열쇠)를 만들고 데이터를 약탈함
  • 이것을 중간자 공격 (MITM, Main In The Middle) 이라함

 

중간자 공격 (MITM, Main In The Middle) 과정

  1. 가짜 웹서버에서 가짜 웹서버의 public key(검은색 자물쇠)/private key(검은색 열쇠)를 생성 

 

  1. 중간자 공격자는 웹서버와 동일한 가짜 웹서버를 만들고 중간에 라우터를 조정하여 가짜 웹으로 접속하게 만듬

 

  1. 가짜 웹서버에서 브라우저로 웹서버의 public key(검은색 자물쇠)를 복사

 

  1. 브라우저만의 private key(빨간색 열쇠)가 생성됨

 

  1. 가짜 웹서버에서 넘어온 public key(검은색자물쇠)로 private key를(빨간색 열쇠)를 암호화 함 (키가 키를 암호화)

 

  1. public key(검은색 자물쇠)로 private key(빨간색 열쇠)를 암호된 키가 가짜 웹서버로 복사됨

 

  1. 가짜 웹서버에서는 자기가 갖고 있는 private key(검은색 열쇠)로 이것을 복호화함

 

  1. 각각에 가짜 웹서버의 public key(검은색 자물쇠)와 브라우저의 private key(빨간색 열쇠)로 symmetric key(녹색 열쇠)를 생성함

 

  1. 이제 브라우저에서 이 symmetric key(녹색 열쇠)를 사용하여 데이터를 암호화하고 가짜 웹서버와 통신하게됨

이를 방지하기 위한 공개키 인증구조(PKI, Public Key Infrastructure)

  • 중간에 신뢰할 수 있는 제3자가(CA, Certificate Authority) 웹서버에서 브라우저로 넘어어오는 public key가 인증된 것인지 확인해주는 것을 말함

 

HTTPS 통신 암호화 과정 (CA 인증  사용)

    1. 브라우저는 CA에서 발급한 public key(주황색 자물쇠)를 갖고 있음 

 

 

  1. 웹서버에서 CSR을 사용하여 public key를 생성(보라색 자물쇠)하고 CA로 보냄 (.csr 파일은 웹서버 private key로 생성)
    * [참고] CSR(Certificate Signing Request) : SSL 인증서를 발행해 달라고 요청하는 서명 요청서
     

 

  1. CA는 CSR을 통해서 인증서를 만들고, CA의 private key(주황색 열쇠)로 인증서와 public key(보라색 자물쇠)를 암호화하여 다시 웹서버로 전달 (이 형태가 바로 .crt 파일)
    *[참고] 인증서란? :  사용자의 웹브라우저와 인터넷 사이트의 웹서버간 암호화 통신을 가능 하게 하는 제3의 신뢰기관이 인증한  인증서

 

  1. 웹서버는 private key(주황색 열쇠)로 암호화된 public key(보라색 자물쇠)와 인증서를 브라우저로 전달

 

  1. 브라우저는 갖고 있는 CA의 public key(노란색 자물쇠)로 이것을 복호화 함

 

  1. 브라우저만의 private key(빨간색 열쇠)를 생성

 

  1. 웹서버의 public key(보라색 자물쇠)로 브라우저의 private key(빨간색 열쇠)를 암호화하여 웹서버로 전달
    그림7-1
    그림7-2

 

  1. 웹서버의 private key(보라색 열쇠)로 이것을 복호화함
     

 

  1. 각각에 웹서버의 public key(보라색 자물쇠)와 브라우저의 private key(빨간색 열쇠)로 symmetric key(녹색 열쇠)를 생성함

 

  1. 이제 브라우저에서 symmetric key(녹색 열쇠)를 사용하여 데이터를 암호화하고 서버와 통신하게 됨
반응형