상호 TLS(mTLS)란 무엇일까요?

상호 TLS(mTLS)는 연결에 있어서의 두 당사자가 TLS 프로토콜을 사용하여 서로를 인증하는, 인증 유형의 일종입니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 상호 TLS(mTLS) 작동 방식 설명
  • 상호 TLS와 일반 TLS의 차이점 이해
  • mTLS가 공격을 차단하는 방법 설명

글 링크 복사

상호 TLS(mTLS)란 무엇일까요?

상호 TLS(mTLS)는 상호 인증을 위한 방법입니다.mTLS는 네트워크 연결의 양쪽 끝에 있는 양 당사자가 올바른 개인 를 가지고 있는지 확인하여 그들이 주장하는 당사자인지 확인합니다.해당 TLS 인증서 내의 정보에 따라 추가로 확인이 이루어집니다.

mTLS는 조직 내의 사용자, 장치, 서버를 확인하기 위해 Zero Trust 보안 프레임워크*에서 자주 사용됩니다. API를 안전하게 유지하는 데에도 도움이 될 수 있습니다.

*Zero Trust는 사용자, 장치, 네트워크 트래픽이 기본적으로 신뢰할 수 없음을 의미하며, 이는 많은 보안 취약점을 제거하는 데 도움이 되는 접근 방식입니다.

TLS란 무엇인가요?

전송 계층 보안(TLS)은 인터넷에서 널리 사용되는 암호화 프로토콜입니다.이전에 SSL이라고 불렸던 TLS는 클라이언트-서버 연결에서 서버를 인증하고 클라이언트와 서버 간의 통신을 암호화하여 외부 당사자가 통신을 감시할 수 없도록 합니다.

TLS 작동 방식에 대해 이해해야 할 세 가지 중요한 사항이 있습니다.

1. 공개 키와 개인 키

TLS는 공개 키 암호화라는 기술을 사용하여 작동합니다. 이 기술은 공개 키와 개인 키라는 한 쌍의 키에 의존합니다.공개키로 암호화된 모든 것은 개인 키로만 해독할 수 있습니다.

따라서 공개 키로 암호화된 메시지를 해독하는 서버는 해당 서버에서 개인 키를 보유하고 있음을 증명합니다. 누구나 도메인의 인증서나 서버의 TLS 인증서를 봄으로써 공개 키를 볼 수 있습니다.

2. TLS 인증서

TLS 인증서는 공개 키, 인증서 발급자(TLS 인증서는 인증 기관에서 발급함)에 대한 설명, 인증서 만료 날짜를 포함하여 서버 또는 장치의 ID를 확인하기 위한 중요한 정보가 포함된 데이터 파일입니다.

3. TLS 핸드셰이크

TLS 핸드셰이크는 TLS 인증서와 서버의 개인 키 소유 여부를 확인하는 프로세스입니다.TLS 핸드셰이크는 핸드셰이크가 완료된 후 암호화가 수행되는 방식도 설정합니다.

mTLS는 어떻게 작동할까요?

일반적으로 TLS에서 서버에는 TLS 인증서와 공개/개인 키 쌍이 있지만 클라이언트에는 없습니다. 일반적인 TLS 프로세스는 다음과 같이 작동합니다.

  1. 클라이언트가 서버에 연결
  2. 서버가 TLS 인증서를 제시
  3. 클라이언트가 서버의 인증서를 확인
  4. 클라이언트와 서버가 암호화된 TLS 연결을 통해 정보를 교환
TLS 핸드셰이크의 기본 단계

그러나 mTLS에서는 클라이언트와 서버 모두에 인증서가 있고 양측 모두 공개/개인 키 쌍을 사용하여 인증합니다.일반 TLS와 비교하여 mTLS에는 양 당사자를 확인하기 위한 추가 단계가 있습니다(굵게 표시된 추가 단계).

  1. 클라이언트가 서버에 연결
  2. 서버가 TLS 인증서를 제시
  3. 클라이언트가 서버의 인증서를 확인
  4. 클라이언트가 TLS 인증서를 제시
  5. 서버가 클라이언트의 인증서를 확인
  6. 서버가 액세스 권한을 부여
  7. 클라이언트와 서버가 암호화된 TLS 연결을 통해 정보를 교환
상호 TLS(mTLS) 핸드셰이크의 기본 단계

mTLS에서의 인증 기관

mTLS를 구현하는 조직은 자체 인증 기관 역할을 합니다.이는 인증 기관이 인증서 소유자가 연결된 도메인을 합법적으로 소유하고 있는지 확인하는 외부 조직인 표준 TLS와 대조됩니다(TLS 인증서 유효성 검사에 대해 알아보기).

mTLS에는 "루트" TLS 인증서가 필요합니다. 이를 통해 조직이 자체 인증 기관이 될 수 있습니다. 인증된 클라이언트 및 서버에서 사용하는 인증서는 이 루트 인증서와 일치해야 합니다. 루트 인증서는 자체 서명되며, 이는 조직에서 루트 인증서를 자체적으로 생성함을 의미합니다. (외부 인증 기관이 해당 인증서를 발급해야 하므로 이 접근 방식은 공용 인터넷의 단방향 TLS에는 작동하지 않습니다.)

mTLS를 사용하는 이유는?

mTLS는 클라이언트와 서버 사이에 양 방향에서 트래픽이 안전하고 신뢰할 수 있는지 확인하는 데 도움이 됩니다.따라서 조직의 네트워크 또는 애플리케이션에 로그인하는 사용자에게 추가 보안 계층이 제공됩니다.사물 인터넷(IoT) 장치와 같이 로그인 프로세스를 따르지 않는 클라이언트 장치와의 연결도 확인됩니다.

mTLS로는 다음을 포함한 다양한 종류의 공격이 방지됩니다.

  • 경로상 공격: 경로상 공격자는 클라이언트와 서버 사이에 위치하면서 클라이언트와 서버 사이의 통신을 가로채거나 수정합니다.mTLS를 사용하면 경로상 공격자가 클라이언트나 서버에 인증할 수 없습니다. 따라서 이 공격을 수행하는 것이 거의 불가능합니다.
  • 스푸핑 공격: 공격자는 웹 서버를 사용자에게 "스푸핑"(모방)하거나 그 반대로 시도할 수 있습니다.스푸핑 공격은 양측 모두 TLS 인증서로 인증해야 할 경우 훨씬 더 어렵습니다.
  • 자격 증명 스터핑: 공격자는 데이터 유출로 유출된 자격 증명 집합을 사용하여 합법적인 사용자로서 로그인하려고 시도합니다.합법적으로 발급된 TLS 인증서가 없으면 mTLS를 사용하는 조직에 대한 자격 증명 스터핑 공격은 성공할 수 없습니다.
  • 무차별 대입 공격: 일반적으로 으로 수행되는 무차별 대입 공격은 공격자가 빠른 시행 착오를 이용하여 사용자의 암호를 추측하는 공격입니다.mTLS는 비밀번호가 조직의 네트워크에 액세스하기에 충분하지 않은지 확인합니다.(레이트 리미팅은 이러한 유형의 봇 공격을 처리하는 또 하나의 방법입니다.)
  • 피싱 공격: 피싱 공격의 목표는 사용자 자격 증명을 훔친 다음 해당 자격 증명을 사용하여 네트워크나 애플리케이션을 손상시키는 것일 때가 많습니다.사용자가 그러한 공격에 속더라도 공격자는 해당 자격 증명을 사용하려면 여전히 TLS 인증서와 해당 개인 키가 필요합니다.
  • 악의적 API 요청: API 보안에 사용되는 경우 mTLS는 API 요청이 합법적이고 인증된 사용자로부터만 오도록 합니다.이렇게 하면 공격자가 취약점을 악용하거나 API가 작동해야 하는 방식을 방해하는 것을 목표로 하는 악의적인 API 요청을 보내는 것을 막을 수 있습니다.

웹 사이트에서는 이미 TLS를 사용하고 있는데, 전체 인터넷에서는 mTLS를 사용하지 않는 이유는 무엇일까요?

일상적인 목적을 위해서는 단방향 인증으로 충분한 보호가 제공됩니다.공용 인터넷에서 TLS의 목표는 1) 사람들이 스푸핑된 웹 사이트를 방문하지 않도록 하고, 2) 인터넷을 구성하는 다양한 네트워크를 통과할 때 개인 데이터를 안전하게 암호화하며, 3) 데이터가 전송 중 변경되지 않도록 하는 것입니다.클라이언트가 서버의 ID만 확인하는 단방향 TLS는 이러한 목표를 달성합니다.

또한 모든 최종 사용자 장치에 TLS 인증서를 배포하는 것은 매우 어려울 것입니다. 이를 위해 필요한 수십억 개의 인증서를 생성, 관리, 확인하는 것은 거의 불가능한 작업입니다.

그러나 더 작은 규모에서는 mTLS가 개별 조직에 매우 유용하고 매우 실용적입니다. 특히 해당 조직에서 네트워크 보안에 Zero Trust 접근 방식을 사용할 때 그렇습니다. Zero Trust 접근 방식은 기본적으로 사용자, 장치, 요청을 신뢰하지 않으므로 조직에서는 네트워크의 모든 지점에 액세스를 시도할 때마다 모든 사용자, 장치, 요청을 인증할 수 있어야 합니다. mTLS는 사용자를 인증하고 장치를 확인하여 이를 가능하게 합니다.

Cloudflare는 mTLS를 어떻게 사용할까요?

Cloudflare Zero Trust는 Zero Trust 보안을 위해 mTLS를 사용합니다.Cloudflare API Shield는 또한 mTLS를 사용하여 API 엔드포인트를 확인하여 승인되지 않은 당사자가 잠재적으로 악의적인 API 요청을 보낼 수 없도록 합니다.Cloudflare로 mTLS를 구현하는 방법을 알아보세요.