형주의 블로그

HTTPS와 SSL

2022-04-29

웹 클라이언트와 웹 서버간에 전송되는 사용자 데이터의 보안을 위한 인터넷 통신 프로토콜.
TCP/IP 통신에서 일반 텍스트를 이용하는 대신에 SSL이나 TSL 프로토콜을 통해 세션 데이터를 암호화한다.

TLS(Transfer Layer Security): 웹 통신을 할 때 데이터 보안을 위한 보안 프로토콜이다.
SSL(Secure Sockets Layer): TLS의 향상된 버전의 보안 프로토콜이다. 결제 페이지, 로그인, 블로그 및 정보 사이트에 이용된다.

전송 계층 보안 프로토콜(TLS)을 통한 보안 강화

  • 암호화
    • 교환되는 데이터를 암호화하여 침입자로부터 데이터를 보호한다.
  • 데이터 무결성
    • 전송되는 동안 데이터가 손상되거나 변경되는 것을 방지한다.
  • 인증
    • 클라이언트가 의도된 웹 서버와 통신중임을 입증한다.
    • MITM(spoofing)을 차단한다.

SSL

  • Handshake protocol
    • 비대칭 암호화를 통해 서버와 클라이언트간의 암호화된 연결을 수립한다.
    • https 연결은 언제나 SSL shake를 통해 시작된다.
  • 인증: 사용자가 웹 사이트를 시작하는 모든 세션에 대해 웹 서버와 각각 다른 SSL 인증서를 교환 및 검증한다.
  • 암호화: 서버와 브라우저가 공개키를 공유하고 이를 통해 pre-master key를 생성하고 암호화한다.
  • 복호화: 서버가 개인 키를 사용한 pre-master key를 복호화하고 세션 기간동안 사용되는 암호화된 보안 연결을 수립한다.

대칭키

  • 데이터를 암호화할 떄 사용되는 일종의 비밀번호이다.
  • 암호화된 데이터를 복호화할 때 동일한 키를 이용한다.

공개키

  • 암호를 주고받는 사람들 사이에서는 대칭키 전달이 어렵다.
  • 대칭키의 단점을 보안하여 공개키를 통해 암호화 하는 방법은 개인키와 공개키를 통해 공개키로 암호화하고, 개인키로 복호화 할 수 있도록 하는 방법이다.
  • 클라이언트가 데이터를 공개키를 통해 암호화하여 서버로 전달하면, 서버는 개인키를 통해 복호화하고, 다시 공개키로 암호화 하여 통신할 수 있다.

SSL 인증서

  • SSL 인증서가 제공된 도메인 이름 및 데이터
  • 서버 측 공개 키

IP Spoofing

  • 클라이언트의 IP 주소를 가로채 서버 요청을 보내 실제 클라이언트가 서버 응답을 받게 하는 공격이다.

SSL 인증서가 서비스를 보장하는 방법

  1. CA(Certificate Authority)가 웹 서버에 인증서를 제공한다.
  2. 클라이언트가 서버에 첫 요청을 보낼 떄 서버는 무조건 해당 인증서를 클라이언트에 전송한다.
  3. 클라이언트(브라우저)는 유효한 CA리스트와 해당 공개키들을 미리 알고 있다.
  4. 클라이언트가 서버로부터 전송받은 인증서를 CA리스트에 있는지 확인하고, 해당 공개키를 통해 인증서를 복호화한다. (전자서명)

참고자료

ssl certificate
tls handshake
생활코딩 - https와 ssl 인증서