SSL/TLS란?

  • HTTP를 이용하여 데이터를 전송할 때, 우리가 주고받는 데이터는 암호화 되어있지 않다.
  • HTTP 통신 방식에 암호화를 추가한 방식이 HTTPS이다.
    • HTTPS에서 사용하는 암호화를 위해 사용하는 프로토콜이 SSL/TLS이다.

SSL, TLS

SSL(Secure Sockets Layer)은 TLS(Transport Layer Security)의 전신으로 시대를 거쳐 1.0, 2.0 그리고 1996년에 3.0이 출시되었다.

이후 1999년 SSL 3.0을 기초로 한 TLS 1.0이 출시되었고 1.1, 1.2 버전을 거쳐 2018년에 TLS 1.3이 출시되었다.

SSL은 현재는 거의 사용하지 않지만, TLS와 같은 의미로 사용되고 있다.

(이하로 SSL이라고 쓰겠다.)

SSL 인증서

  • SSL은 SSL인증서가 있는 웹사이트만 실행할 수 있다.
  • SSL 인증서는 신뢰할 수 있는 기관(CA)에서 발급한다.
  • SSL인증서에는 웹사이트의 공개 키가 포함되어있다.
    • SSL인증서는 공개 키 암호화 방식(RSA)을 통해 데이터를 암호화한다.
    • 웹 서버에 비밀 키가 존재한다.

SSL 원리

  1. 서버의 공개 키/ 비밀 키를 생성한다.
  2. CA(인증된 기관)에 공개 키와 기타 정보를 전달하여 SSL인증서를 생성한다.
    • SSL인증서는 CA의 비밀 키로 암호화 된다.
  3. 서버에 인증서를 저장하고 내 서버에 접속한 클라이언트에게 인증서를 보내준다.
  4. 클라이언트(브라우저)는 인증서를 CA의 공개 키로 복호화한다.
    • 브라우저에는 CA들의 공개 키가 내장되어 있다.
    • 복호화 성공 여부를 통해 CA에서 발급한 인증서인지 확인한다.
  5. 복호화 한 인증서에 들어있는 서버의 공개 키를 이용해서 통신한다.

SSL Handshake

  1. TCP Handshaking
    • 3-way-handshake를 한다.
    • SSL 통신을 하기위해 TCP연결이 수립 되어야 한다.
  2. SSL Handshaking
    1. Client Hello (Client → Server)
      • 클라이언트가 생성한 랜덤 데이터와 클라이언트가 사용가능한 암호화 방식을 서버로 전송한다.
      • 세션 키를 전송한다
    2. Server Hello (Server → Client)
      • 서버가 생성한 랜덤 데이터와 선택한 암호화 방식을 전송한다.
      • SSL 인증서를 전송한다.
    3. 클라이언트 확인
      • SSL 인증서를 CA의 공개 키를 이용해서 복호화한다.
      • 복호화가 성공했다면 해당 인증서는 CA에서 발급한 인증서라 신뢰할 수 있다는 뜻이다.
      • 복호화하여 서버의 공개 키를 얻을 수 있다.
    4. 대칭 키 암호화를 위한 pre master secret key 생성 (Client → Server)
      • 클라이언트가 생성한 랜덤 데이터 + 서버 랜덤 데이터를 통해 특정값 생성
      • 이 값을 서버의 공개키로 암호화
      • 서버로 전송
    5. session key 생성
      • pre master secret key를 받아 서버 비밀 키로 복호화
      • 이를 통해 session key를 생성하여 클라이언트와 공유
      • session key를 사용하여 데이터를 대칭 키 암호화 방식으로 주고받음

TLS 1.3

HTTPS 패킷 분석(TLS 1.2와 TLS 1.3)

SNI 란?

SNI 차단이 뭐야? TLS 1.3은 해결책이 될 수 있을까.

인증서 체인

ROOT CA 인증서는 무엇인가?

인증서 체인 🔗

154. [Security] SSL과 인증서 구조 이해하기 : CA (Certificate Authority) 를 중심으로

HTTPS 및 SSL을 사용한 보안 | Android 개발자 | Android Developers

'CS > 네트워크' 카테고리의 다른 글

HTTP 버전  (0) 2023.10.22
쿠키와 세션  (0) 2021.12.26
HTTP의 Stateless  (0) 2021.12.26
네트워크의 구성요소  (0) 2021.07.19
컴퓨터 네트워크 첫 걸음  (0) 2021.07.19

+ Recent posts