본문 바로가기
IT

[인증서] SSL/TLS 란? (개념, 특징, 동작 과정, 중간자 공격(MITM))

by 유나니나노 2024. 4. 15.
반응형

 

SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 인터넷상에서 데이터를 안전하게 전송하기 위한 프로토콜입니다. 이 두 프로토콜은 데이터의 기밀성과 무결성을 보장하여, 사용자와 서버 간의 통신이 도청이나 데이터 변조 없이 안전하게 이루어질 수 있도록 합니다.

 

 

SSL (Secure Sockets Layer)

  • SSL은 Netscape에 의해 1990년대 초반에 개발되었습니다.
  • SSL은 안전한 인터넷 통신을 위해 설계되었으며, 처음 목적은 웹 브라우저와 웹 서버 간의 안전한 통신을 보장하는 것이었습니다.
  • SSL 3.0은 이 프로토콜의 마지막 버전이며, 이후 TLS의 등장으로 점진적으로 대체되었습니다.
  • SSL 프로토콜은 대칭 암호화를 사용하여 데이터를 암호화하고, 비대칭 암호화를 통해 키를 교환합니다. 또한, 메시지 인증 코드(MAC)를 사용하여 데이터의 무결성을 검증합니다.

TLS (Transport Layer Security)

  • TLS는 SSL의 후속 버전으로, 1999년에 처음 발표된 TLS 1.0은 사실상 SSL 3.1과 동일합니다.
  • TLS는 SSL을 기반으로 하면서 보안성을 강화하고 다양한 암호화 알고리즘을 지원합니다.
  • 현재는 TLS 1.2와 TLS 1.3이 널리 사용되고 있으며, 특히 TLS 1.3에서는 연결 설정 시간을 단축하고 보안을 더욱 강화했습니다.
  • TLS는 암호화된 통신을 위해 핸드셰이크 프로토콜을 사용하여 서버와 클라이언트 간에 세션 키를 안전하게 교환합니다. 이 세션 키는 대칭 암호화에서 사용됩니다.
  • TLS는 또한 서버와 클라이언트의 인증서를 통해 서로의 정체성을 확인할 수 있으며, 이는 일반적으로 CA(Certificate Authority)에 의해 발급됩니다.

공통점 & 차이점

  • 공통점: 두 프로토콜 모두 데이터의 기밀성과 무결성을 보장하며, 암호화된 통신을 위해 대칭 및 비대칭 암호화 방법을 사용합니다.
  • 차이점: TLS는 SSL을 기반으로 하지만, 보안성을 강화하고 더 다양한 암호화 알고리즘을 지원합니다. 또한, TLS는 프로토콜의 효율성과 안전성을 개선하기 위해 지속적으로 업데이트되고 있습니다.

 

TLS 동작 과정

TLS(Transport Layer Security) 프로토콜의 동작 과정은 복잡하지만, 크게 핸드셰이크, 안호화된 데이터 전송, 세션 종료의 세 단계로 나눌 수 있습니다. 여기서는 핸드셰이크 단계를 중심으로 설명하겠습니다. 이 과정은 클라이언트와 서버 간의 안전한 통신 채널을 설정하기 위해 필요한 정보와 암호화 키를 교환하는 과정입니다.

 

1. 클라이언트 헬로(ClientHello)

  • 클라이언트는 서버에 연결을 시도하며 TLS 핸드셰이크를 시작합니다.
  • 이 단계에서 클라이언트는 지원하는 TLS 버전, 암호화 알고리즘 목록, 세션 ID(이전 연결 세션이 있다면), 그리고 무작위 문자열(Random Bytes)을 서버에 전송합니다.

2. 서버 헬로(ServerHello)

  • 서버는 클라이언트의 헬로 메시지를 받고, 선택한 TLS 버전, 선택된 암호화 알고리즘, 세션 ID, 그리고 자신의 무작위 문자열을 클라이언트에게 응답합니다.

3. 서버 인증 및 키 교환

  • 서버는 자신의 인증서와 함께(필요하다면) 서버 키 교환 메시지를 클라이언트에게 전송합니다. 인증서는 서버의 공개 키를 포함하고 있으며, 클라이언트는 이를 통해 서버의 신원을 확인할 수 있습니다.
  • TLS 1.3에서는 서버의 인증서와 함께 클라이언트가 서버의 공개키를 사용하여 암호화한 사전 마스터 비밀(Pre-Master Secret)을 전송하지 않고, 더 간결한 키 교환 메커니즘을 사용합니다.

4. 클라이언트 인증 (선택 사항)

  • 서버가 클라이언트 인증을 요구하는 경우, 클라이언트는 자신의 인증서를 서버에게 전송합니다. 이는 주로 엔터프라이즈 환경에서 클라이언트의 신원을 확인할 필요가 있을 때 사용됩니다.

5. 사전 마스터 비밀 생성 및 암호화된 핸드셰이크 메시지 교환

  • 클라이언트와 서버는 무작위 문자열과 사전 마스터 비밀(Pre-Master Secret)을 사용하여 마스터 비밀(Master Secret)을 도출합니다. 이 마스터 비밀은 이후 세션 중에 데이터를 암호화하는 데 사용될 세션 키를 생성하는 데 사용됩니다.
  • 클라이언트와 서버는 "Finished" 메시지를 교환하여 핸드셰이크 과정이 성공적으로 완료되었음을 확인합니다. 이 메시지는 암호화되어 전송되며, 이를 통해 양쪽 모두 상대방이 핸드셰이크 메시지를 정확히 받았는지 검증합니다.

6. 암호화된 데이터 전송

  • 핸드셰이크가 성공적으로 완료된 후, 클라이언트와 서버는 마스터 비밀을 기반으로 생성된 세션 키를 사용하여 데이터를 암호화하여 안전하게 교환할 수 있습니다.

7. 세션 종료

중간자 공격(Man-in-the-Middle, MITM) 방지 

TLS에서 중간자 공격을 방지할 수 있는 주요 이유는 TLS가 제공하는 인증, 암호화, 무결성 검증 기능 때문입니다. 이러한 기능들은 TLS 프로토콜의 핵심 구성 요소로, 데이터의 기밀성과 무결성을 보장하며, 통신하는 양쪽 당사자의 정체성을 확인합니다.

 

1. 인증서를 통한 서버 인증

  • TLS에서는 클라이언트가 서버에 연결할 때, 서버는 자신의 인증서를 클라이언트에게 제공합니다. 이 인증서는 신뢰할 수 있는 인증 기관(CA)에 의해 발급되며, 서버의 공개 키, 인증서 발급 기관, 유효 기간 등의 정보를 포함합니다.
  • 클라이언트는 인증서의 유효성을 검증함으로써 연결하려는 서버가 실제로 주장하는 당사자임을 확인합니다. 이 과정은 중간자가 가짜 서버로 가장하려 할 때 이를 탐지하고 방지하는 데 중요합니다.

2. 공개 키 인프라(PKI)

  • TLS는 공개 키 인프라(PKI)를 사용하여 통신의 양쪽 당사자 간에 안전한 키 교환을 가능하게 합니다. 이를 통해, 클라이언트와 서버는 공개 키 암호화를 사용하여 안전하게 비밀 키(세션 키)를 교환할 수 있으며, 이 세션 키는 이후 통신에서 데이터를 암호화하는 데 사용됩니다.
  • 중간자가 이 키 교환 과정을 가로채려 하더라도, 공개 키 암호화와 개인 키가 없이는 이 비밀 키를 해독할 수 없기 때문에 데이터를 복호화할 수 없습니다.

3. 무결성 검증

  • TLS는 전송된 데이터의 무결성을 검증하기 위해 메시지 인증 코드(MAC) 또는 해시 기반 메시지 인증 코드(HMAC)를 사용합니다. 이를 통해 데이터가 전송 중에 변조되지 않았는지 확인할 수 있습니다.
  • 만약 중간자가 데이터를 가로채어 내용을 변경하려 하더라도, 무결성 검증 실패로 인한 이러한 시도는 탐지되고 거부됩니다.

4. 전방비밀성(Forward Secrecy)

  • TLS는 전방비밀성을 지원하는 키 교환 알고리즘(ex: Diffie-Hellman 키 교환)을 사용할 수 있습니다. 이는 각 세션마다 고유한 세션 키를 생성하므로, 하나의 키가 노출되더라도 과거 또는 미래의 세션 통신을 복호화하는 데 사용될 수 없습니다.
  • 따라서, 중간자가 어느 시점에서 키를 획득하더라도, 이전 또는 이후의 통신 내용을 복호화할 수 없어, 통신의 보안을 크게 강화합니다.

 

오늘은 SSL/TLS에 대해서 알아보았습니다.

네트워크 관련된 내용을 아시면 도움이 되니 참고 바랍니다!

2024.04.23 - [IT] - [네트워크] 프로토콜 및 OSI 7 계층 모델(개념, 특징, 면접)

 

[네트워크] 프로토콜 및 OSI 7 계층 모델(개념, 특징, 면접)

프로토콜 프로토콜은 네트워크 상에서 데이터를 교환하기 위한 규칙이나 표준을 의미합니다. 컴퓨터 또는 다양한 네트워크 장비들이 서로 정보를 주고받을 때, 이를 원활하게 하기 위해 정해진

yuna-ninano.tistory.com

반응형