Network/L4

TCP와 TLS의 동작 원리 #2

junoshon 2024. 9. 7. 14:32

안녕하세요.

저번 글에서는 TCP 프로토콜의 연결 수립 과정과 종료 과정에 대해 알아봤습니다.

이번 글에서는 SSL/TLS에 대해 알아보고, SSL/TLS의 연결 과정에 대해 분석해 보겠습니다.

 

SSL/TLS 란?

OpenSSL

SSL/TLS 는 Secure Socket Layer/Transport Layer Security의 약자입니다.

오픈소스 소프트웨어인 OpenSSL이 구현한 SSL 1.0과 2.0 버전에서 취약점이 발견되어 SSL 3.0 이 개발되었고, 이를 기존 버전과 구분하기 위해 SSL 3.0 부터는 TLS 로 부르기로 했습니다.

대부분 SSL이라는 이름에 익숙하다 보니 현재는 보안 프로토콜로 TLS로 사용함에도 불구하고 여전히 SSL 이라 부르는 사람이 많아졌고,  곧 보안계층 프로토콜을 SSL/TLS 통칭해 부르곤 합니다.

 

출처 : https://brunch.co.kr/@swimjiy/47

SSL/TLS 는 OSI 7 Layer의 한 계층이라기보다는, 전송 계층과 응용 계층 사이에서 동작하는 보안 계층의 프로토콜입니다.

대표적으로 HTTP 프로토콜로 통신하는 데이터를 SSL/TLS로 암호화합니다. 이를 HTTPS 프로토콜이라 합니다.

 

그럼, SSL/TLS 는 데이터를 어떻게 암호화할까요?

 

SSL/TLS Handshake

출처 : https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/

 

SSL/TLS 는 클라이언트와 서버 간 Handshake를 통해 암호화 과정을 거칩니다.

위 과정에 대해 자세히 알아보겠습니다.

본 글에서는 TCP 연결 수립 과정(위 그림에서 파란색으로 표시된 부분)은 생략하겠습니다. 궁금하신 분은 이전 글을 참고해 주세요. 

 

 

Client Hello

클라이언트(예: 웹 브라우저)가 서버에 접속할 때, 서버에 Client Hello 메시지를 보냅니다. 이 메시지에는 다음 정보가 포함됩니다:

  • 지원하는 SSL/TLS 버전
  • 지원하는 암호화 알고리즘 목록 (Cipher suites)
  • 클라이언트의 랜덤 값 (암호화에 필요한 값)

TLS 통신 과정을 네트워크 패킷 캡처 프로그램인 Wireshark로 캡처해 알아보겠습니다.

 

Client Hello 과정(Random, Cipher suites)
Client Hello 과정(supported_Versions)

이 패킷은 TLS 1.0부터 1.3 버전까지 지원하고, 암호화 알고리즘은 SHA, RSA 등 여러 알고리즘을 지원하네요.

 

Server Hello

서버는 클라이언트의 요청을 받으면 "Server Hello" 메시지로 응답합니다. 이 메시지에는 다음 정보가 포함됩니다.

  • 서버의 랜덤 값
  • 선택된 암호화 알고리즘
  • 서버 인증서 (SSL/TLS 인증서)

Server Hello(Random, Cipher Suite)
Server Hello(Certificates)
Server Hello Done

Server Hello 패킷에서 암호화에 필요한 랜덤 값과 선택한 암호화 알고리즘을 확인할 수 있습니다.

지원하는 여러 암호화 알고리즘 중  AES_256 알고리즘으로 암호화하고 있네요.

 

 

Client Key Exchange

Server Hello 이후에는 Client Key Exchange 단계가 수행됩니다.

Client Key Exchange 단계에서는 아래와 같은 일들이 일어납니다.

 

  • 클라이언트는 서버로 공개 키를 전송합니다. 
  • 이 키를 기반으로 클라이언트와 서버는 세션 키를 생성하게 됩니다. 
    • 세션 키를 생성하는 방법은 암호화 알고리즘에 따라 다릅니다. 여기서는 AES_256 알고리즘을 사용하기 때문에, Diffie-Hellman 알고리즘으로 세션 키를 생성합니다.
  • 이후로 클라이언트에서 서버로 보내는 모든 통신은 이 세션 키를 가지고 대칭 암호화가 될 것임을 알립니다. 이 과정을 Change Cipher Spec이라 합니다.
  • Encrypted Handshake Message로 Client Key Exchange 가 종료되었음을 알립니다.

Client Key Exchange

 

 

 

Change Cipher Spec

Client Key Exchange 과정에서 만든 세션 키로 앞으로의 통신을 대칭 키 암호화를 하겠다는 의미인 Change Cipher Spec 메시지를 전달했습니다. 그런데 또 Change Cipher Spec를 왜 할까요?

 

Client Key Exchange 과정에서 했던 Change Cipher Spec은  클라이언트에서 서버로 보내는 통신이 암호화된다는 의미입니다.

즉, 서버에서 클라이언트로 보내는 통신도 암호화될 거라는 메시지도 전달해야 합니다.

Cipher Spec

 

위 사진에서 3 계층 헤더를 보면 출발지가 192.168.10.11(Server), 도착지가 192.168.10.15(Client)입니다.

즉 이 패킷에서는 앞으로 서버에서 클라이언트로 보내는 모든 통신은 대칭 키 암호화를 통해 암호화된다고 알리고 있습니다.

 

이번 글에서는 SSL/TLS의 연결 과정에 대해서 알아봤습니다.

다음 글에서는 암호화 방식과 HTTPS 프로토콜의 동작 원리에 대해 알아보겠습니다.

 

지적 및 질문을 댓글로 부탁드립니다.

읽어주셔서 감사합니다.

 

참고 자료

- https://brunch.co.kr/@swimjiy/47

- https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/

'Network > L4' 카테고리의 다른 글

Load Balancer 종류 소개  (2) 2025.05.01
암호화 방식과 암호화 알고리즘  (0) 2024.09.09
TCP 와 TLS의 동작 원리 #1  (0) 2024.09.06