상호 인증이란? | 양방향 인증

양방향 인증이라고도 불리는 상호 인증은 연결의 양 당사자가 서로의 ID를 확인할 때 발생합니다.

학습 목표

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

  • '상호 인증'의 정의
  • 상호 인증 작동 방식 설명
  • 상호 인증의 주요 사용 사례 나열

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

상호 인증이란?

상호 인증은 한쪽에서만 다른 쪽을 확인하는 대신 통신 채널의 양쪽에서 서로의 신원을 확인하는 것입니다. 상호 인증은 프로세스가 양방향으로 진행되기 때문에 "양방향 인증"이라고도 합니다.

승차 공유 앱을 사용하는 사람은 일반적으로 차량 번호판이나 차량 설명을 확인하여 올바른 차에 타고 있는지 확인합니다. 공유자가 타면 운전자는 승객에게 이름을 묻고 올바른 사람을 태운 것인지 확인합니다. 승객과 운전자는 각자가 의도한 사람과 상호 작용하고 있는지 확인합니다. 따라서 운전자가 올바른 서비스를 제공하고 승객이 목적지로 가는 차에 탔으며 둘 다 승차 공유 앱으로 확인된 사람과 함께 있는 것을 확인할 수 있습니다.

마찬가지로, 디지털 통신 채널에서도 상호 인증으로 양 당사자를 확인합니다.예를 들어, 상호 인증을 사용하는 클라이언트와 서버는 클라이언트만 서버를 인증하는 대신 서로의 ID를 독자적으로 확인하는 단계를 수행합니다.사물 인터넷(IoT) 장치 간의 연결과 같은 장치 간 연결에서는 종종 상호 인증도 사용됩니다.

상호 인증은 가장 일반적으로 전송 계층 보안(TLS) 프로토콜과 연결되지만, 다른 프로토콜과 다른 컨텍스트에서도 사용될 수 있습니다.상호 TLS에 대해 알아보세요.

상호 인증은 어떻게 작동할까요?

통신 채널의 끝을 상호 인증하는 데는 세 가지 주요 방법이 있습니다.

1. 공개 키 인증: 이 방법은 공개 키 암호화에 의존합니다.는 데이터를 암호화하거나 디지털 서명하는 데 사용할 수 있는 데이터 문자열입니다.공개 키 암호화에는 공개 키와 개인 키의 두 가지 키가 사용됩니다.공개키로 암호화된 데이터는 개인키로 해독할 수 있습니다.

공개 키 상호 인증에서 통신의 양측은 공개 키를 광고하고 이름을 확인하기 위해 정부에서 발급한 신분증을 보여주는 사람처럼 공개 키와 함께 개인 키를 소유하고 있음을 증명해야 합니다. 양측은 디지털 서명을 상대방에게 보냅니다. 공개 키로 서명을 확인할 수 있으면 올바른 개인 키가 사용되었으며 서명을 보낸 당사자가 합법적인 것입니다.

2. 인증서 인증: 이 접근 방식은 공개 키 인증과 유사하지만, 양쪽 당사자 모두 공개 키 대신 공개 키 인증서를 가지고 있습니다.인증서에는 인증서 및 공개 키를 발급한 사람, 인증서가 적용되는 대상, 인증서 만료 시기 등 당사자의 신원을 확인하는 데 도움이 되는 추가 정보가 포함되어 있습니다.양쪽 모두 인증서가 있는 경우 이러한 유형의 상호 인증에 TLS 인증서를 사용할 수 있습니다.

3. 사용자 이름 및 비밀번호: 이름과는 달리 이 상호 인증 방법은 여전히 서버 측에서 인증서를 사용합니다.서버가 클라이언트에 인증서를 제공하며, 클라이언트가 인증서를 확인합니다.클라이언트 측의 입장에서는 일반적인 사용자 이름/비밀번호 인증과 같습니다. 클라이언트가 사용자 이름과 비밀번호 조합을 서버로 전송하면, 서버가 자격 증명을 확인합니다.

상호 인증은 언제 사용될까요?

단방향 인증은 인터넷에서 항상 발생합니다.사용자가 HTTPS를 사용하는 웹 사이트를 로드할 때마다 사용자의 장치에서는 서버의 TLS 인증서를 확인하여 웹 서버의 ID를 인증합니다.또 다른 예로는 애플리케이션에서 자신의 계정에 로그인하는 사용자가 있습니다. 이 경우 애플리케이션은 해당 사용자를 인증합니다.

상호 인증은 일부 보안 결함을 제거하고 일부 유형의 공격을 수행하기 훨씬 어렵게 만드는 반면, 정보 교환에 더 많은 시간과 컴퓨팅 성능을 추가합니다. 상호 인증은 또한 사전 설정이 필요합니다. 통신의 양쪽에서는 자격 증명 세트나 공개-개인 키 쌍이나 공개 키 인증서(사용 중인 인증 유형에 따라 다름)가 필요합니다. 따라서 일반 사용자에 대해 상호 인증을 구현하기가 어려워지며, 바로 이것이 웹 애플리케이션을 사용할 때 상호 인증이 일반적으로 TLS의 일부가 아닌 이유입니다.

상호 인증의 주요 사용 사례는 다음과 같습니다.

  • IoT : 대부분의 IoT 장치는 제대로 작동하려면 원격 서버에 연결해야 합니다.이러한 장치는 다른 IoT 장치에도 연결해야 할 수 있습니다.IoT 장치는 보호되지 않은 네트워크(인터넷)를 통해 연결해야 합니다.상호 인증은 수신하는 데이터가 정확하고 합법적인 출처에서 온 것인지 확인하는 데 도움이 되므로 공격자 때문에 연결이 손상되엇을 가능성이 줄어듭니다.
  • API 보안: 인증은 API 요청이 합법적인 소스에서 오는지 확인합니다.상호 인증은 API가 공격자의 요청을 수락하지 않고 API 사용자가 스푸핑된 API 응답을 수락하지 않도록 하는 한 가지 방법입니다.
  • Zero Trust 보안: "Zero Trust"는 모든 사용자 또는 장치가 위협이 될 수 있다고 가정하는 개념입니다.연결되는 양쪽 모두에 인증을 요구함으로써 상호 인증은 합법적인 사용자만 네트워크, 서버, 애플리케이션에 연결되도록 합니다.반대로 사용자는 올바른 네트워크, 서버, 애플리케이션에 연결했는지 확인할 수 있습니다.

상호 인증은 어떤 종류의 공격을 막는 데 도움이 될까요?

경로상 공격: 경로상 공격에서 공격자는 두 당사자 간의 연결 중간에 있습니다.공격자는 양방향 통신을 가로채서 대화의 두 끝인 것처럼 가장합니다.상호 인증은 공격자가 통신의 양쪽 끝에서 인증할 수 없기 때문에 이러한 유형의 공격을 막는 데 도움이 됩니다.

스푸핑 및 사칭: 공격자는 이러한 공격을 사용하여 서버나 사용자가 자신을 알려진 신뢰할 수 있는 당사자라고 생각하도록 속입니다.공격자는 사용자에게 웹 서버를 스푸핑하거나 그 반대로 시도할 수도 있습니다.이러한 공격은 양측에서 인증해야 할 경우에는 훨씬 더 어렵습니다.

자격 증명 도용: 일부 형태의 상호 인증은 비밀번호 기반이며 여전히 자격 증명 도용의 대상이 될 수 있습니다(공격자가 합법적인 사용자의 암호를 훔치는 경우).그러나 상호 인증은 일반적으로 공개 키 기반이므로 도용할 자격 증명이 없기 때문에 자격 증명 도용이 불가능합니다.따라서 피싱 공격의 영향을 막을 수 있습니다.

상호 인증을 지원하는 프로토콜은 무엇일까요?

이러한 네트워킹 프로토콜에는 상호 인증이 내장되어 있거나 상호 인증을 사용하는 옵션을 제공합니다.

SSH(Secure Shell Protocol): SSH는 원격 서버 또는 장치에 안전하게 연결하기 위한 터널링 프로토콜입니다.SSH는 공개 키 인증 또는 인증서 인증을 사용할 수 있습니다.다시 말해서, 공개 키 또는 공개 키 인증서로 SSH에서 상호 인증이 가능합니다.

TLS: TLS는 기본적으로 연결의 양쪽 끝을 상호 인증하지 않지만 이러한 목적으로 사용할 수 있습니다. mutual TLS(mTLS)는 가장 일반적으로 적용되는 상호 인증 유형 중 하나입니다. mTLS에서는 연결의 양쪽에서 TLS 인증서를 보유합니다. mTLS는 일반적으로 API 보안, IoT 보안, Zero Trust 보안 앱에 사용됩니다.

Cloudflare는 상호 인증을 제공할까요?

상호 인증은 Cloudflare에서 제공하는 여러 Zero Trust 보안 솔루션의 핵심입니다. 애플리케이션 액세스 제어 및 인터넷 브라우징을 위한 플랫폼인 Cloudflare Zero Trust는 사용자 및 장치 확인을 위한 mTLS를 제공합니다. Cloudflare API Shield는 API 인증 및 보안을 위해 mTLS를 지원합니다.