A ship in harbor is safe, but that is not what ships are built for.

개발일지/기술 면접 대비

2023.01.06 TIL(네트워크 CS Q&A 정리)

플리피나리 2023. 1. 6. 11:33
반응형

💭 HTTPS

  • HTTP는 클라이언트 (웹 브라우저) ↔ 서버 사이의 요청/응답 프로토콜
  • HTTPS는 하이퍼 텍스트 전송 프로토콜 보안, HTTP 프로토콜의 보안 버전
  • SSL을 사용하면 암호화를 할 수 있고, 통신하려는 상대를 보증할 수 있다.
  • HTTPS는 SSL(Secure Socket Layer)을 이용한 HTTP 통신 방식

SSL 통신과정

CA(Certificate authority)란?

  • Client Server 통신에 앞서 Server는 CA에서 인증서를 받는다.
  • 공인된 기관에서 Server가 믿을 수 있는 서버인지 보증하는 SSL 보증서를 발급한다.
  • 자체 CA (사설 CA)로도 SSL 인증서를 발급할 수 있다.
    • 사설 CA도 HTTPS 통신이지만 브라우저 입장에서는 안전하지 않다고 판단한다.

통신과정

  1. Client가 Server에 최초 접속하면서 2가지 정보를 보낸다.
  • Client가 생성한 random data와 암호화 기법 목록을 보낸다.
  • SSL에서 사용되는 암호화 기법은 여러가지가 있다.
  1. Server는 Client에게 3가지 정보를 보낸다.
  • random data
    • Server가 생성한 random data
  • Client가 보낸 암호화 기법 중 자신도 사용할 수 있고, 가장 안정된 암호화 기법을 선택
  • 인증서
    • 인증서에는 서비스 정보와 public key를 보낸다.
    • 서비스 정보: 인증서를 발급한 CA, 서비스의 도메인 등등
      • 서비스 정보는 private key로 암호화된 상태
  1. Client는 믿을 수 있는 CA에서 발급한 인증서인지 확인
  • Browser는 믿을 수 있다고 판단한 CA 기관 목록을 가지고 있다.
  • 공인 CA (믿을 수 있는 CA) / 사설 CA에서 발급한 인증서는 각각 다른 형태로 표시된다.
  1. Client는 실제 CA 기관에서 발급한 인증서인지 확인
  • Server가 보낸 인증서에는 서비스 정보와 public key가 있다.
    • private key와 public key는 하나의 쌍을 이룬다.
    • public key로 암호화 → private key로 복호화
  • private key로 암호화된 서비스를 public key로 복호화할 수 있다면, 두 key는 pair되고 CA 기관에서 발급한 인증서라고 할 수 있다. 즉, 내가 기대한 서버인지 확인하게 된다.

⇒ 대칭키 방식 (public, private key를 사용하는 암호화 방식)

  1. 통신에 사용할 key를 Client와 Server가 공유
    ⇒ 공통키 방식 (하나의 key를 공유하는 암호화 방식)
  • premaster secret은 앞서 언급한 random data를 합쳐 생성
  • public key로 암호화하면 private key로만 복호화할 수 있기 때문에 premaster secret은 안전하다.
  • premaster secret → master secret → session key
    • 일련의 과정을 거쳐 client와 server는 공통키를 가지게 된다.

  • 공통의 session key로 데이터를 암호화/복호화할 수 있다.
반응형