- Kerberos 개요
커버로스는 중앙집중형 인증방식으로 한번의 인증으로 여러 서비스를 이용할 수 있는 통합 인증(SSO : Single Sign On) 기능을 제공합니다.
대칭키 암호기법을 기반으로 하는 티켓기반 인증 프로토콜로써 윈도우 서버 운영체제의 기본 인증방법으로 활용되고 있으며 분산 환경을 위한 SSO의 대표 예입니다.
- Kerberos 구성
구성요소 | 설명 | 비고 |
KDC(Key Distribution Center) | 키 분배 서버
모든 사용자와 서비스들의 암호화키 보유 |
TGS와 AS로 구성 |
AS(Authentication Server) | 실질적 인증 수행 | |
TGS(Ticket Granting server) | 티켓 부여 서버 | |
Ticket | 사용자에 대한 인증 확인을 위한 토큰
다른 주체들과 통신 시 패스워드 재입력을 필요하지 않게 함 |
|
Principals | 인증을 위하 Kerberos 프로토콜을 사용하는 모든 개체 |
- Kerberos 동작방식
AS는 모든 사용자의 패스워드를 알고 있으며, 중앙저장소에 저장합니다. 이 때 중앙 저장소는 분산환경에서의 인증 및 권한을 위해 설계된 LDAP을 주로 사용합니다.
실제 Kerberos의 동작방식은 다음의 그림을 통해 설명하도록 하겠습니다.
[그림] Kerberos 동작방식
1. 사용자가 ID/PW 또는 공개키로 로그인을 시도
2. 클라이언트는 유저 아이디를 인증서버(AS)로 전송
3. 인증서버(AS)는 중앙저장소(LDAP)에 유저 아이디 확인 후 존재할 경우 다음을 반환
– 클라이언트 PW 기반으로 암호화한 티켓 발급 서버(TGS)의 세션키
– 클라이언트 ID, 주소, 유효기간, TGS 세션키를 TGS 비밀키로 암호화한 티켓발급용 티켓(TGT : Ticket Granting Ticket)
4. 클라이언트는 다음 두 가지를 티켓 발급 서버(TGS)에게 전송
– 클라이언트 ID, Timestamp를 TGS 세션키로 암호화한 인증자
– 티켓 발급용 티켓(TGT) (클라이언트는 TGS 비밀키를 모르므로 복호화 및 조작 불가)
5. 티켓 발급 서버(TGS)는 인증자(TGS 세션키로 복호화)와 TGT(TGS 비밀키로 복호화)를 복호화 하여 Client ID가 일치할 경우 아래 두 메시지를 반환
– 티켓발급서버(TGS) 세션키로 암호한 SS 세션키
– 클라이언트 ID, 주소, 유효기간, SS세션키를 SS 비밀키로 암호화한 티켓
6. 클라이언트는 다음 두 메시지를 서비스 서버(SS)로 전달
– 클라이언트 ID, Timestamp를 SS 세션키로 암호화한 인증자
– 티켓
7. 서비스 서버(SS)는 Ticket, 인증자를 복호화하여 Client ID가 일치 할 경우 다음 메시지를 반환
– Timestamp를 SS세션키로 암호화하여 반환
8. 클라이언트는 전달받은 timestamp와 자신이 인증자에 담아보냈던 timestamp의 값을 확인하여 일치하는 경우 실제 작업을 시작
- Kerberos 인증방식의 장단점
장점 | 단점 |
기밀성과 무결성 보장 | 패스워드 사전공격에 취약 |
재생공격 예방 | 비밀키, 세션키가 임시로 단밀기에 저장되어 공격당할 수 있음 |
이기종간 서비스 인증 가능(SSO) | 타임스템프로 인한 시간 동기화 필요 |
대칭키를 사용하여 도청으로부터 보호 | KDC가 단일 실패지점으로 TGS&AS는 물리 공격 및 악성코드에 취약 |