네트워크

[네트워크] SSL/TLS 쉽게 개념 및 특징 정리

찌르비 2024. 3. 1. 17:40
반응형

◇  공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 

 

 

 

 

결론

SSL은 통신하는 데이터를 암호화하는 프로토콜.
SSL이 처음 나오고,  SSL의 문제점을 보완시킨 TLS가 다음으로 탄생.
(일반적으로 SSL/TLS이라고 표기)
  • SSL은 1995년에 탄생.
  • TLS는 1999년에 탄생.

 

 

Secure Sockets Layer, SSL

SSL

 

웹 브라우저와 웹 서버 간의 데이터 통신을 🔒암호화하는 데 사용되는 프로토콜이다.

📖 역사

  • SSL은 넷스케이프(Netscape)에서 1995년에 탄생되었다.
  • SSL 3.0 버전이 1996년에 나왔다
    • SSL 3.0의 보안 취약점 발견
    • 보안 취약점을 보완하기 위해 TLS 1.0이 1999년에 나왔다.

 

 

Transport Layer Security

TLS (= SSL/TLS)

TLS는 SSL의 진화 버전이다. 일반적으로 "SSL/TLS"라고 표기한다.

 

SSL/TLS HTTPS 프로토콜에서 사용되기 때문에 유명하다.
하지만 SMTPS, POP3S, IMAPS와 같은 다른 프로토콜에서 SSL/TLS을 사용하여 안전한 통신을 제공할 수 있다.

📖 역사

  • 가장 최신 TLS 1.3 버전은 2018년에 나왔다.
  • 현재는 TLS 1.2와 TLS 1.3가 주로 사용되고 있다.

 

HTTP와 HTTPS의 차이점

 

SSL/TLS 동작방식

동작원리를 이해하기 전에 사전지식 확인이 필요하다.

 

대칭키비대칭키 원리: https://jibinary.tistory.com/171

 

[네트워크] 대칭키 및 비대칭키 암호 쉽게 개념 및 특징 정리 (Symmetric & Asymmetric Key)

◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇ Symmetric Key Algorithm 대칭키 암호 대칭키는 🔑하나의 키를 사용하여 데이터를 암호화(Encryption)하고 복호화(Decryption)하

jibinary.tistory.com

 

📜 SSL/TLS 인증서란?

공인된 기관CA(Certificate authority)에서 서버가 믿을 수 있는 보증하는 SSL/TLS 보증서를 발급한다.

SSL/TLS 인증서가 필요한 이유: 👤 서버의 신원 확인

 

SSL/TLS 프로토콜을 사용하면 통신 내용을 암호화하기 때문에 안전한다.

하지만 악성 서버가 다른 서버인 척해서 개인 정보를 입력하게 만들게하면 어쩔수 없이 정보가 뺏긴다.

그렇기 때문에 SSL/TLS 인증서를 통해서 서버의 신원을 확인한다.

🧐 예시) 온라인 쇼핑

고객이 웹 브라우저에서 쇼핑 웹사이트에 접속했다.

브라우저는 웹 사이트로부터 전송된 SSL/TLS 인증서를 확인한다.

이를 통해 브라우저는 쇼핑 웹사이트 서버가 진짜 쇼핑 웹사이트의 서버임을 확인한다.

만약 인증서가 없다면, 해커는 가짜 쇼핑 웹 사이트를 만들어 고객을 속일 수 있다.

 

 


 

SSL/TLS의 통신 과정

🤵 클라이언트 ↔ 서버 🗄️

SSL은 공개키대칭키를 혼합해서 사용한다.

(공개키 방식은 컴퓨팅의 파워를 많이 소모한다. 그렇기 때문에 공개키와 대칭키 혼합 사용.)

 

🗃️ 실제 데이터 : 대칭키 방식

🔑 대칭키의 키 : 공개키 방식 

 

 

통신 과정에서 사용되는 키

  • 서버의 Public Key (공개키)
  • 서버의 Private Key (비밀키)
  • Session Key (대칭 키)
    • 진화 전: Master secret (셀 1형태), Pre Master secret (셀 2형태)
    • 진화 후: Session Key (셀 3형태)

 

SSL/TLS의 기본적인 3가지 단계

악수 → 전송 → 세션 종료

  1. 악수(Handshake): 상대방이 존재하는지, 데이터를 주고 받기 위해서 어떤 방법을 사용할지 파악
  2. 전송 : 데이터를 전송 (암호화하고 복호화하는 방법을 정하고)
  3. 세션 종료

 

구체적인 단계

 

Step 1. 🤝Handshake(핸드셰이크) 단계:

  1. 🤵 Client Hello: 클라이언트가 서버에 접속한다. (도메인을 입력해서 서버에 접속)
    • 클라이언트 측에서 랜덤 데이터를 생성한다. 그리고 서버로 전송한다.
    • 클라이언트 측에서 지원하는 암호화 방식을 서버에 전송한다. (암호화 방법 여러가지 있기 때문)
  2. 🗄️ Server Hello: 서버는 클라이언트의 인사에 답변한다.
    • 서버 측에서도 생성한 랜덤 데이터를 클라이언트에 전송한다.
    • 서버 측에서도 지원하는 암호화 방식(가장 안정한 방식)을 클라이언트에 전송한다.
    • 서버 측에서 📜인증서를 클라이언트에 전송한다
  3. 🤵 클라이언트 측: 서버의 인증서가 CA에 의해서 발급된 것인지 확인한다.
    • CA (Certificate Authority)란?
      CA는 디지털 인증서를 발급하고 관리하는 역할을 하는 신뢰할 수 있는 제3자 기관이다. 
    • 인증서가 브라우저의 CA 리스트에 내장된 인증서인지 확인한다.
      • CA 리스트에 있으면 →✅ OK!
      • CA 리스트에 없으면 →📛 경고 메시지가 띈다.
    • ⭐ 인증서 안에는 서버가 생성한 공개키가 들어가 있다.  
    • 클라이언트는 "Client Hello에서 만든 랜덤 데이터"와 "Server Hello 에서 만든 랜덤 데이터"를 조합해서 Pre Master secret이라는 키를 생성한다.
    • 인증서 안에 있던 공개키를 사용해서 Pre Master secret를 암호화 한뒤 서버에 전송한다.
  4. 🗄️ 서버 측: Pre Master secret → Master secretSession Key
    • 서버는 비공개 키를 가지고 있기 때문에, 비공개 키로  Pre Master secret를 복호화 한다.
    • 이로써 서버와 클라이언트는  Pre Master secret의 값을 공유하게 된다.
    • 그리고 Pre Master secret Master secret이라는 값으로 만든다.
    • 그리고 Master secret은 Session Key를 만든다.
    • Session Key 값을 이용해서 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화 하고 주고 받는다.

이로써 Handshake(핸드셰이크) 단계 끝!!

 

Step 2. Session(세션) 단계:

대칭키 방식으로 데이터를 암호화 하고 복호화하면서 데이터를 주고 받는다.

 

 

Step 3. Session(세션) 종료:

데이터 전송이 끝나면 SSL 통신 종료. ❗세션 키는 폐기한다.

728x90
반응형