Kerberos란?
Kerberos는 신뢰할 수 있는 호스트간의 서비스 요청에 대한 인증을 처리하는 티켓형 인증 프로토콜이다
Kerberos를 사용하면 서비스가 인증을 요청하는 각 호스트에 대한 정보를 가질 필요가 없으며, 티켓 기반의 프로토콜로 SSO를 쉽게 구현할 수 있는 등의 이점이 있다
Kerberos 인증 동작 과정
1. AS-REQ
사용자가 현재 타임스템프를 유저의 개인키로 암호화한 Authenticator 와 유저네임(plain text)을 KDC로 보낸다
2. AS-REP
KDC가 AS-REQ의 유저네임과 일치하는 유저의 개인키를 꺼내 Authenticator 검증에 성공하면 이후의 교환과정을 보호하기 위해 세션키를 생성한다(KDC는 state-less로 운용되기 때문에 세션키를 따로 저장하지 않는다)
이후 AS-REP을 두가지 요소를 사용자에게 보내는데, 그 중 TGT는 사용자의 정보 및 세션키를 KDC의 개인키로 암호화해 만들어진다(사용자는 TGT를 복호화 할 수 없다)
•
TGT(Ticket Grant Ticket)
•
사용자의 키로 암호화한 세션키
3. TGS-REQ
사용자가 KDC에 TGS를 요청한다. 이때 TGS-REQ는 3가지 구성요소로 이루어진다.
•
서비스 이름(SPN)
•
TGT
•
세션키로 암호화한 Authenticator
4. TGS-REP
KDC가 TGT를 해독해 얻은 세션키로 Authenticator 의 검증에 성공하면 이후의 호스트-서비스 간의 교환과정을 보호하기 위해 세션키를 생성한다
KDC는 서비스에 직접 제출할 TGS를 생성하는데, 새로운 세션키와 유저정보를 사용자가 요청한 서비스의 개인키로 암호화해 만들어진다
이후 TGS-REP은 두가지 요소를 TGT로 부터 얻은 세션키를 이용해 암호화해 사용자에게 전송한다.
•
TGS
•
세션키
5. AP-REQ
사용할 서비스에 AP-REQ를 보낸다
•
TGS(Ticket-Granting Service)
•
세션키로 암호화한 Authenticator
6. AP-REP
TGS내의 세션키를 이용해 Authenticator 검증에 성공하면 타임스탬프를 암호화해 클라이언트에 응답한다
그런 다음 클라이언트는 이 메세지를 받고 서비스 요청을 시작한다