[네트워크] HTTPS

Updated: Categories:

HTTPS에 대해 알아보자

HTTPS

  • HTTP + S(Secure Socket)
  • 평문 텍스트로 정보를 주고받는 HTTP의 보안취약점을 해결하기 위한 프로토콜
    • 클라이언트와 서버 사이 모든 통신 내용을 암호화
  • SSL 및 TLS 프로토콜을 사용해 세션 데이터를 암호화
  • 443 포트

암호화 방식

  • HTTPS의 암호화 방식은 대칭키 + 비대칭키 방식을 둘 다 사용함
    • 대칭키
      • 비밀키(개인키) 사용
      • 양측에서 공개되지 않는 키를 가지고 암복호화 진행
    • 비대칭키
      • 공개키, 비밀키(개인키) 사용
      • 암호화시엔 공개키를 사용하고, 복호화시엔 양측에서 가지고 있는 비밀키를 사용
  • 클라이언트 <-> 서버간 통신에는 대칭키 사용
  • 인증기관 CA(Certificate Authority)와의 통신에서 비대칭키 방식 사용
  1. 사이트는 공개키와 개인키를 만들고, CA에 자신의 정보와 공개키 관리를 요청
  2. CA는 사이트의 정보를 검증하고 CA의 개인키로 제출한 정보를 암호화해서 인증서를 만들고 서버에 전달
  3. CA는 웹 브라우저에게 자신의 공개키를 제공
  4. 사용자가 사이트에 접속하면 사이트는 인증서를 사용자에게 보냄
  5. 웹 브라우저는 미리 알고 있던 인증기관의 공개키로 인증서를 해독
  6. 이렇게 얻은 사이트의 공개키로 대칭키를 암호화해서 다시 사이트에 보냄
  7. 사이트는 개인키로 암호문을 해독하고 대칭키를 얻음
  8. 앞으로 양쪽에서 대칭키로 암,복호화하며 통신

통신방법

image

  • HTTP의 계층에서 보안 계층이 추가됨
  • HTTP는 SSL과 통신하고, SSL이 TCP와 통신하는 구조

SSL Handshake

  1. 우선 3-way handshake 과정을 거치고, 브라우저는 서버가 https를 사용하고 있다는 것을 인지함
  2. ClientHello : 따라서 브라우저가 사용하는 암호화 방식을 보내고 인증서 요구
  3. ServerHello : 서버가 지원하는 암호화 방식을 보내고 인증서 응답
  4. 브라우저는 인증서를 확인하고, 대칭키(premaster secret)를 만들고 인증서의 공개키로 암호화하여 전송
  5. 서버는 대칭키(premaster secret)를 사이트 개인키로 복호화하고, 다음부터 통신에 해당 대칭키를 사용

단점

  • HTTP의 암복호화 과정(handshake)에서 많은 시간이 소요됨 -> 과부하 발생 가능
  • 신뢰할수 없는 CA에서 발급받은 인증서로 HTTPS로 만들 수 있으므로 HTTPS라 해서 무조건 안전한것은 아님


  • 참고 : https://rachel-kwak.github.io/2021/03/08/HTTPS.html