Envoyfilter란?
mTLS(Mutual TLS, 상호 TLS)는 클라이언트와 서버가 서로의 신원을 인증하는 방식의 보안 프로토콜입니다. 기존의 TLS(Transport Layer Security)가 서버의 신원만을 검증하는 데 초점을 두는 반면, mTLS는 양쪽 모두가 상대방의 인증서를 확인하여 ‘서버 → 클라이언트’뿐만 아니라 ‘클라이언트 → 서버’ 방향의 상호 신뢰 검증을 수행합니다.
TLS(일반적인 서버 인증 방식)와의 차이점
- 인증 방향
- TLS: 보통 ‘단방향 인증’이라고도 부릅니다. 클라이언트는 서버의 인증서를 확인하여 서버가 신뢰할 수 있는 대상인지 확인합니다.
- mTLS: ‘양방향 인증’ 혹은 ‘상호 인증’이라고 불립니다. 서버는 클라이언트에게도 인증서를 요구하고, 클라이언트의 인증서를 검증함으로써, 서버와 클라이언트 서로가 상대방의 신뢰성을 보장합니다.
- 클라이언트 인증서
- TLS: 클라이언트는 일반적으로 인증서를 요구받지 않으며, 서버의 인증서를 검사하는 역할만 수행합니다.
- mTLS: 클라이언트 역시 X.509 인증서를 소유하여야 하며, 서버에게 인증서를 제시합니다. 서버는 해당 인증서를 별도의 신뢰 저장소(CA) 또는 인증 체인을 통해 검증합니다.
- 보안 강화 수준
- TLS: 주로 외부에서 서버로 들어오는 트래픽이나 브라우저-웹 서버 간 보안을 유지하기 위해 사용되며, 서버 식별에 중점을 둡니다.
- mTLS: 서버뿐만 아니라 클라이언트도 보안적으로 검증해야 하는 환경에서 사용됩니다. 예를 들어, 내부 서비스 간 통신, API 서버와 마이크로서비스, 금융권/공공기관의 고도 보안 환경, Zero Trust 아키텍처에서의 마이크로세그멘테이션 등에 적용하면 각 컴포넌트마다 유효한 인증서를 통해 상호 신뢰를 검증합니다.
- 핸드셰이크 과정
- TLS
- 클라이언트가 서버에 연결 요청
- 서버가 인증서(공개 키)를 제시
- 클라이언트가 서버 인증서의 유효성을 CA를 통해 검증
- 대칭키 교환을 통해 암호화된 통신 수행
- mTLS
- (TLS와 동일) 클라이언트가 서버에 연결 요청
- 서버가 인증서(공개 키)를 제시, 클라이언트가 서버 인증서 검증
- 서버가 클라이언트에게 인증서 제시를 요구
- 클라이언트가 자신의 인증서를 서버에게 전송, 서버가 검증
- 검증 완료 후 대칭키 교환을 통해 암호화된 통신 수행
mTLS의 장점
- 강력한 보안
클라이언트와 서버가 서로를 동시에 검증하기 때문에, 중간자 공격(Man-in-the-Middle)이 발생하더라도 인증서를 위조하거나 훔치지 않는 한 쉽게 침투할 수 없습니다.
- Zero Trust 환경 적합
최근 보안 트렌드인 Zero Trust 아키텍처에서는 ‘네트워크 내부라도 모두 신뢰하지 않는다’라는 기조로, 각 요청마다 철저히 인증 및 인가를 수행합니다. mTLS는 이러한 요구사항에 특히 잘 부합합니다.
- 세밀한 접근 제어
각 클라이언트에 고유한 인증서를 발급하고, 필요한 경우 인증서를 폐기(리보크, revoke)하거나 만료하게 하여, 개별 클라이언트 단위로 접근 제어 정책을 적용할 수 있습니다.
mTLS 적용 시 고려사항
- 인증서 발급 및 관리(PKI)
클라이언트 인증서도 서버 인증서처럼 CA(인증 기관)로부터 발급받거나 내부 PKI를 통해 발급해야 합니다. 클라이언트 수가 많아질수록 인증서 자동 발급, 갱신, 폐기 등 자동화 관리가 중요해집니다.
- 성능 및 운영 복잡도
서버-클라이언트 간에 상호 인증 핸드셰이크가 이루어지므로, TLS에 비해 약간의 성능 부담이 생길 수 있습니다. 또한, 인증서 주기가 짧아지면 잦은 재발급, 재배포가 필요합니다.