HTTP와 HTTPS 차이 정리

Keunjae Song·2020년 8월 7일

HTTP의 기본 개념

  • HyperText Transfer Protocol의 약자
  • 클라이언트인 웹 브라우저와 서버간 정보 요청/응답을 위한 프로토콜

HTTP의 보안상 문제

  • HTTP는 바이너리 교환이 아닌 텍스트 교환이기 때문에 웹브라우저와 서버 통신 중에 누군가 데이터를 가로채어 내용을 확인할 수 있다.
    • 내용이 노출될 수 있음.
    • 특히나, 금융과 관련된 경우, 유저의 패스워드나 계좌비밀번호 등도 모두 웹브라우저와 서버간 통신이므로 HTTP의 경우 해당 정보가 노출될 수 있음.

HTTPS 개념

  • 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고 받는 통신 규약
  • HTTPS의 S는 Secure Socket을 의미

HTTPS 암호화 원리


(출처: http://cryptocat.tistory.com/3)

  1. 모두에게 공개하는 공개키를 공개키 저장소에 등록하고, 서버는 서버만 알 수 있는 개인키를 소유함.
  2. 공개키로 암호화된 요청이 오면, 서버는 개인키로 해당 요청을 복호화한다.
  3. 서버는 요청에 해당하는 응답을 다시 개인키로 암호화하여 클라이언트에 보낸다.
  4. 클라이언트는 공개키로 해당 응답을 복호화하여 사용한다.

서버가 등록한 공개키로만 해당 응답을 복호화할 수 있으므로 해당 서버로부터 온 응답임을 확신할 수 있다.

서버의 공개키 등록 / 클라이언트에서 공개키 가져오는 방법

CA(Certificate Authority) 업체: 공개키를 암호화하여 암호화된 인증서를 제공해주는 업체

  1. HTTPS를 적용하기 위해 서버의 공개키와 개인키를 CA 업체에 관리를 요청한다.
  2. CA업체에서는 본인들의 공개키와 개인키로 "CA 업체의 이름과 관리를 요청한 서버의 공개키, 공개키의 암호화 방법" 등의 정보를 담은 인증서를 만든다.
  3. 해당 인증서를 CA 업체의 개인키로 암호화하여 서버 개발 업체에 제공한다.
  4. 서버는 클라이언트로부터 요청이 오면 인증서를 클리이언트에게 준다.
  5. 세계적인 CA 기업의 공개키는 브라우저가 이미 알기 때문에 브라우저의 CA 리스트 중, 인증서에 적힌 CA 업체의 이름과 같은 업체를 찾는다.
  6. 찾은 CA 업체의 공개키로 해당 인증서를 복호화한다.
  7. 인증서를 복호화하여 서버의 공개키를 얻는다.
  8. 클라이언트에서 서버의 공개키로 요청을 암호화해서 요청을 날리고, 응답을 서버의 공개키로 복호화하여 데이터를 얻는다.

Reference

0개의 댓글