[정보보안]Key Distribution Center(KDC)와 Kerberos의 개념 정리
정보보안기사를 준비하면서 암호학이 특히 어렵습니다. 다양한 알고리즘과 그들의 약어, 그리고 동일한 이름인데 다른 개념으로 설명될 때가 당황스럽습니다. 동일한 이름인데 다른 개념으로 설명되는 것 중에 하나가 “Key Distribution Center(KDC)”입니다. 일반적인 보안 용어로서의 KDC와 Kerberos에서 사용하는 KDC는 역할과 프로세스가 다르게 작동합니다. 이제부터 저를 어렵게 만들었던 개념을 정리해 볼까합니다.
Key Distribution Center(KDC)
일반적인 KDC는 비밀 키를 안전하게 교환하고 관리하는 중앙화된 시스템을 지칭합니다. 이 용어는 다양한 보안 프로토콜이나 시스템에서 사용될 수 있습니다. 여러 보안 시스템에서 키 분배와 관리의 중요성을 강조하기 위해 사용되는 개념입니다.
KDC는 비밀키(세션키)를 만들어서 대칭키 암호화 통신을 원하는 사람들에게 해당 비밀키(세션키)를 나누어 주는 역할을 한다.
먼저 KDC 키 분배 과정에서 사용되는 키를 알아야 합니다.
- Master Key:
– KDC와 사용자 간에 공유하는 유일한 키입니다.
– 사용자가 N일 경우 필요한 마스터키 : N 개 - Session Key:
– 사용자 간의 통신을 암호화하는데 사용되는 임시 키로 논리적인 연결이 종료되면 폐기됩니다.
– KDC로부터 Master Key로 암호화되어 전송받습니다.
– 사용자가 N일 경우 필요한 세션키 : N(N-1)/2
KDC를 이용한 키 분배 과정을 알아보겠습니다.

출처: https://blog.naver.com/tmk0429/222310821240
- A가 KDC에게 A와 B의 통신을 위한 세션키 요구 메시지를 보냅니다.
– 전송 내용에는 A, B의 신원과 자신(A)의 신원 정보 ID(A)가 포함됩니다. - KDC는 A, B 모두에게 요청받은 세션키를 생성하여 보냅니다.
– KDC는 A와 B에게 각각의 마스터키를 이용해 세션키(SK), 상대방의 신원 정보, Time Stamp(T)를 암호화하여 전송합니다.
– EKA [ SK, ID(B), T]: SK, B의 신원 정보 ID(B), T를 A와 공유한 마스터키(KA)로 암호화하여 A에게 전송합니다.
– EKB [ SK, ID(A), T]: A와 동일하게 SK, A의 신원 정보 ID(A), T를 B와 공유한 마스터키(KB)로 암호화하여 B에게 전송합니다.
이 과정에서 B는 A가 자신과 통신을 하고자 함을 확인합니다. - A가 KDC로부터 제공받은 세션키를 이용하여 자신의 신원 정보와 T를 암호화하여 B에게 전송합니다.
– 메시지를 받은 B는 A의 신원을 신원 정보 ID(A)와 T를 이용해 확인합니다. - B가 세션키를 이용하여 자신의 신원 정보와 T+1을 암호화하여 A에게 전송합니다.
– 메시지를 받은 A는 B의 신원을 신원 정보 ID(B)와 T+1을 이용해 확인합니다.
Kerberos
Kerberos는 네트워크 보안 프로토콜 중 하나로, 클라이언트/서버 모델에서 안전한 통신을 위한 인증 서비스를 제공하는 프로토콜입니다. 주로 컴퓨터 네트워크에서 사용자나 시스템 간의 안전한 통신을 구현하기 위해 활용됩니다. Kerberos는 대부분의 운영체제에서 지원되며, 사용자가 자신의 신원을 입증하고 안전한 통신을 수행할 수 있도록 합니다.
분산 컴퓨팅 환경에서 대칭키 암호화 기법에 바탕을 둔 티켓기반 인증 프로토콜이라고 정의하며 티켓을 가진 사용자만이 서버에 접속 할 수 있습니다. Authentication(인증), Authorization(인가), Accounting(과금) 등 3A를 지원하여 AAA서버라고도 합니다. Kerberos의 Key Distribution Center(KDC)에서 사용하는 키 분배 프로토콜는 니덤-슈로더 프로토콜(Needham-Schroeder Protocol)로 MITM(Man In The Middle) 공격에 취약해서 timestamp 값을 키 교환 시 추가하여 암호화를 시켜 이 문제를 해결할 수 있다. timestamp 값을 추가함으로써 티켓을 재사용해서 공격을 수행하는 재생 공격(Replay Attack)을 방지합니다.
그럼 Kerberos의 구성 요소를 알아보겠습니다.
- Key Distribution Center(KDC)
- Authentication Server와 Ticket Granting Server로 구성
- 사용자와 서비스 암호키(비밀키)를 유지
- 인증 서비스를 제공하고 세션키를 만들고 분배
- Authentication Server(AS)
- 실질적인 인증 수행
- 사용자 이름, 발급시간, 유효기간 등이 포함된 시작 티겟(Ticket Granting Ticket)을 전송
- Ticket Granting Server(TGS)
- 티겟을 만들고 세션키를 포함한 Principals에게 티겟을 분배
- Kerberos Database
- 사용자 ID 및 비밀번호 저장
- Service Server
- 사용자가 실제 접속하고자 하는 서비스 또는 서버(호스트)
- Principals
- 인증을 위해 Kerberos 프로토콜을 사용하는 모든 실체를 이르는 말
- Ticket
- 인증 토큰
Kerberos 인증의 동작 원리을 알아보겠습니다.

출처: https://www.freecodecamp.org/news/how-does-kerberos-work-authentication-protocol/
- 사용자는 AS에게 인증 요청을 합니다.: TGS에 대한 시작 티겟을 요청합니다.
- AS는 Kerberos Database에 사용자가 등록되어 있는지 확인합니다.
- AS는 사용자에게 사용자-TGS 세션키와 시작 티겟(TGT)을 발급합니다.
- 사용자는 TGS에게 티겟을 요청합니다.: 서비스 서버에 대한 서비스 티겟을 요청합니다.
- TGS는 Kerberos Database에 사용자가 등록되어 있는지 확인합니다.
- TGS는 사용자에게 사용자-서비스 서버 세션키와 서비스 티겟을 발급합니다
- 사용자는 서비스 티켓을 가지고 서비스 서버에 접속 허용을 요청합니다.
- 서비스 서버는 사용자에게 접속을 허용합니다.