케르베로스(Kerberos)란 무엇인가?
케르베로스(Kerberos)는 안전하지 않은 네트워크 환경에서 통신하는 노드들의 신원을 검증하기 위해 티켓(ticket) 기반으로 작동하는 인증 프로토콜입니다. 그리스 신화에 등장하는 저승의 문을 지키던 세 개의 머리를 가진 개 '케르베로스(Cerberus)'에서 이름을 따온 이 프로토콜은, 인터넷과 같은 신뢰할 수 없는 네트워크 위에서도 서비스 요청을 안전하게 인증할 수 있도록 설계되었습니다.
케르베로스를 사용하면 사용자가 서버에, 서버가 사용자에게 각각 상호 인증을 수행할 수 있으며, 이 모든 과정은 중앙화된 인증 서버를 통해 이루어집니다. 또한 케르베로스 프로토콜로 전송되는 메시지는 도청(eavesdropping)과 재전송 공격(replay attack)으로부터 보호됩니다.
케르베로스의 3가지 핵심 구성 요소
케르베로스 프로토콜은 세 가지 주요 부분으로 구성됩니다.
- 클라이언트(Client): 서비스를 요청하는 사용자 또는 프로그램
- 서버(Server): 클라이언트의 요청을 처리하는 애플리케이션 서버
- 신뢰할 수 있는 제3자(키 분배 센터, KDC): 양측 사이에서 중재 역할을 하는 인증 기관
클라이언트는 키 분배 센터(KDC, Key Distribution Center)로부터 티켓을 발급받아, 서버와 연결을 설정할 때 해당 티켓을 제시함으로써 자신의 신원을 증명합니다.
세 개의 머리가 의미하는 것
그리스 신화의 케르베로스가 세 개의 머리를 가진 것처럼, 케르베로스 프로토콜 역시 클라이언트(주체, Principal), 네트워크 리소스(애플리케이션 서버), 키 분배 센터(KDC)라는 세 개의 축으로 이루어져 있습니다. 바로 이 구조 덕분에 케르베로스는 제3자 인증(third-party authentication) 기능을 제공할 수 있습니다.
케르베로스의 목적과 보안성
케르베로스의 핵심 목적은 안전하지 않은 네트워크 환경에서도 서비스 접근을 안전하게 인증하는 것입니다. 인증은 티켓 방식으로 수행되며, 비밀번호는 네트워크를 통해 절대 전송되지 않습니다. 대신 비밀 키 암호화(secret-key cryptography)와 신뢰할 수 있는 제3자를 활용해 클라이언트-서버 방식으로 사용자의 신원을 검증합니다.
물론 케르베로스 역시 공격자들에 의해 공격당한 사례가 있지만, 여전히 효과적인 보안 접근 제어 프로토콜로 입증되어 왔습니다. 강력한 암호화 알고리즘을 사용해 비밀번호와 인증 티켓을 보호할 수 있다는 점이 큰 장점입니다.
케르베로스의 작동 원리: 단계별 이해
케르베로스의 동작 과정은 다음과 같이 진행됩니다.
- 로그인: 사용자가 시스템에 로그인합니다.
- TGT 요청: 클라이언트가 키 분배 센터(KDC)에 티켓 허가 티켓(TGT, Ticket Granting Ticket)을 요청합니다.
- 사용자 확인: KDC가 데이터베이스에서 해당 사용자를 검색합니다.
- TGT 발급: KDC는 클라이언트의 비밀번호를 키로 사용해 TGT를 암호화한 뒤 클라이언트에게 전송합니다.
- 복호화 및 세션 키 획득: 클라이언트는 TGS 세션 키를 확보합니다.
- 서비스 요청: 클라이언트는 발급받은 티켓을 제시하여 특정 서비스 이용을 요청합니다.
요약하면, 클라이언트가 KDC에 티켓을 요청하면, KDC는 클라이언트의 비밀번호를 암호화 키로 사용하여 티켓 허가 티켓(TGT)을 생성하고 이를 클라이언트에 되돌려줍니다. 이후 클라이언트는 이 TGT를 활용해 실제 서비스에 접근하게 됩니다.
KDC(키 분배 센터)의 구성
키 분배 센터(KDC)는 케르베로스 시스템의 심장부라고 할 수 있는 가장 중요한 구성 요소입니다. KDC는 다음과 같은 하위 서비스들을 포함합니다.
- 인증 서비스(Authentication Service): 사용자의 초기 신원을 확인
- 티켓 허가 서비스(Ticket Granting Service): 서비스 접근용 티켓 발급
- 케르베로스 배포 서비스: 티켓 및 키의 관리와 배포
액티브 디렉터리(AD)와 케르베로스
마이크로소프트의 액티브 디렉터리(Active Directory)는 서버와 클라이언트 간 인증을 위해 케르베로스 버전 5를 기본 인증 프로토콜로 사용합니다. 케르베로스는 본래 수많은 시스템이 접근 가능한 개방형 네트워크에서 서버와 클라이언트 간의 인증을 보호하기 위해 만들어졌기 때문에, AD 환경과 잘 맞습니다.
케르베로스의 암호화 유형
케르베로스는 다양한 암호화 알고리즘을 지원합니다. 대표적인 암호화 유형은 다음과 같습니다.
- des-cbc-md5
- des-cbc-crc
- des3-cbc-sha1-kd
- arcfour-hmac-md5
- arcfour-hmac-md5-exp
- aes128-cts-hmac-sha1-96
- aes256-cts-hmac-sha1-96
특히 AES 기반 암호화(aes128, aes256)는 현재 가장 널리 권장되는 강력한 암호화 방식입니다.
케르베로스는 UDP인가, TCP인가?
일반적으로 케르베로스는 UDP 연결을 사용하지만, 티켓 크기가 클 경우 TCP로 전환(fallback)할 수 있습니다. 일부 환경에서는 케르베로스 서버(KDC)가 UDP 응답을 보낼 수 있도록 방화벽 설정을 별도로 조정해야 할 수도 있습니다. 케르베로스 클라이언트는 88번 포트를 통해 UDP 및 TCP 패킷을 주고받으며 케르베로스 서버와 통신합니다.
정리
케르베로스는 비밀번호를 네트워크에 노출시키지 않으면서도, 티켓 기반의 상호 인증을 통해 안전하지 않은 네트워크에서 안전한 서비스 접근을 가능하게 하는 검증된 인증 프로토콜입니다. 클라이언트, 서버, KDC라는 삼각 구조와 강력한 암호화 알고리즘을 바탕으로 오늘날에도 액티브 디렉터리 등 다양한 엔터프라이즈 환경에서 핵심적인 보안 기술로 활용되고 있습니다.