Kerberos란 무엇인가?
Kerberos(케르베로스)는 비밀키(대칭키) 암호화 기술을 기반으로 클라이언트/서버 애플리케이션에 강력한 인증 기능을 제공하도록 설계된 네트워크 인증 프로토콜입니다. Kerberos는 네트워크상의 리소스에 최고 수준의 보안을 제공하며, 안전하지 않은 네트워크 환경에서도 사용자와 서버가 서로의 신원을 확실하게 확인할 수 있도록 지원합니다.
MIT가 개발한 네트워크 보안 솔루션
Kerberos는 MIT(매사추세츠공과대학교)가 당시의 네트워크 보안 문제들을 해결하기 위해 개발한 프로토콜입니다. Kerberos는 강력한 암호화 기술을 활용하여, 사용자가 안전하지 않은 네트워크 연결을 통해서도 자신의 신원을 서버에 증명할 수 있게 해주며, 그 반대의 경우도 마찬가지입니다.
클라이언트와 서버가 Kerberos를 통해 서로의 신원을 확인한 후에는, 이후 모든 통신을 암호화하여 업무를 진행하는 동안 프라이버시(기밀성)와 데이터 무결성을 함께 보장할 수 있습니다.
오픈소스로 검증 가능한 신뢰성
Kerberos는 MIT에서 BSD 운영체제나 X 윈도우 시스템과 유사한 라이선스 조건으로 공개적으로 이용할 수 있습니다. MIT는 소스 코드 형태로 Kerberos를 배포하기 때문에, 필요한 누구나 코드를 직접 열어보고 그 신뢰성을 스스로 검증할 수 있습니다. 또한 전문적인 기술 지원이 담긴 제품을 선호하는 사용자를 위해 여러 벤더들이 Kerberos를 상용 제품 형태로도 제공하고 있습니다.
클라이언트/서버 아키텍처와 비밀키 방식
Kerberos는 클라이언트/서버 아키텍처를 채택하고 있으며, 호스트 대 호스트(host-to-host) 인증이 아닌 사용자 대 서버(user-to-server) 인증을 지원합니다. 이 모델에서 보안과 인증은 비밀키 기술에 의존하며, 네트워크에 연결된 각 호스트는 자신만의 고유한 비밀키를 보유하게 됩니다.
KDC의 두 가지 핵심 기능: AS와 TGS
Kerberos 서버(KDC, Key Distribution Center)는 크게 두 가지 주요 기능을 수행합니다.
- 인증 서버(Authentication Server, AS): 클라이언트의 신원을 확인하는 역할
- 티켓 발급 서버(Ticket-Granting Server, TGS): 서비스 접근에 필요한 티켓을 발급하는 역할
애플리케이션 클라이언트와 애플리케이션 서버 사이에 인증된 세션을 생성하는 과정은 다음과 같습니다.
1단계: AS 인증 및 TGT 발급
Kerberos 클라이언트 소프트웨어는 먼저 Kerberos 서버의 AS 기능과 연결을 설정합니다. AS는 해당 클라이언트가 실제로 주장하는 그 신원이 맞는지 인증한 후, 클라이언트에게 이번 로그인 세션용 비밀키(TGS 세션 키)와 티켓 발급 티켓(TGT)을 제공합니다. TGT는 클라이언트가 TGS와 통신할 수 있는 권한을 부여하며, 티켓에는 유효 기간이 설정되어 있어 인증 절차가 주기적으로 반복되도록 설계되어 있습니다.
2단계: TGS를 통한 서비스 키 획득
클라이언트는 원하는 서비스에 접속하기 위해 TGS와 통신하여 애플리케이션 서버의 키를 요청합니다. 이때 클라이언트는 TGS에게 TGS 세션 키와 TGT를 제출합니다. TGS는 이에 대한 응답으로 애플리케이션 세션 키(ASK)와 애플리케이션 서버의 비밀키를 암호화한 형태를 전달합니다. 중요한 점은 이 비밀키가 네트워크상에 평문 형태로 전송되지 않는다는 것입니다.
3단계: 애플리케이션 서버와의 상호 인증
클라이언트는 Kerberos 티켓, 애플리케이션 세션 키, 그리고 암호화된 애플리케이션 서버 비밀키를 제시함으로써 자신의 신원을 애플리케이션 서버에 증명합니다. 애플리케이션 서버 역시 동일하게 암호화된 데이터를 응답하여 자신을 클라이언트에게 인증합니다. 이러한 상호 인증이 완료되면, 클라이언트는 Telnet, FTP, HTTP 또는 전자상거래 거래 세션 설정 등 의도했던 서비스 요청을 본격적으로 시작할 수 있습니다.