커버로스
커버로스(Kerberos)
- 티켓(ticket) 기반 인증 프로토콜
- 대칭키 사용. 윈도우 서버 운영체제의 기본 인증방법으로 활용(LDAP)
- AS(Authentication Server) : 인증 수행하는 서버
- TGS(Ticket Granting Server) : AS에서 인증된 클라이언트에게 티켓을 발급해주는 역할
- SS(Service Server) : 서비스가 구현된 서버. 인증처리가 필요한 서비스
- TGT(Ticket Granting Ticket) : Ticket을 받기 위한 Ticket으로 Client 아이디와 TGS 세션키 등 여러 정보를 TGS 비밀키로 암호화한 Ticket
- Ticket : 사용자 인증을 위한 토큰. 다른 SS와 통신 시 패스워드를 재입력하지 않게 함.
상세 절차
① Client -> AS
Client는 자신의 ID/Password를 AS에 보내고 TGT를 요청한다.
② AS -> Client
AS는 수신받은 계정정보가 데이터베이스에 존재하는지 확인하여 TGT와 TGS 세션키를 Client에게 전송한다.
TGT는 Client 아이디, ip주소, TGS 세션키 등 포함하여 TGS 비밀키로 암호화한다.
TGS 세션키는 Client 비밀번호를 이용하여 암호화한다.
③ Client -> TGS
Client는 자신의 비밀번호로 암호화된 TGS 세션키를 복호화하여 TGS 세션키를 획득하고, TGS 세션키로 암호화한 Authenticator를 만들어 TGT와 함께 TGS로 보낸다.
Authenticator는 Client 아이디, 타임스탬프를 TGS 세션키로 암호화한다.
④ TGS -> Client
TGS는 수신받은 TGT와 Authenticator를 복호화하여 Client 아이디가 일치하는지 확인하고 Ticket과 SS 세션키를 발급하여 Client에게 전송한다.
TGT는 TGS 비밀키로 암호화되어있기 때문에 TGS는 자신의 비밀키로 복호화가 가능하다.
Authenticator는 TGS 세션키로 암호화되어있으며, TGT를 복호화해서 얻은 TGS 세션키로 복호화가 가능하다.
SS 세션키는 TGS 세션키로 암호화한다.
Ticket은 Client 아이디와 SS 세션키 등을 포함하여 SS 비밀키로 암호화한다.
⑤ Client -> SS
Client는 수신받은 SS 세션키를 복호화하여 새로운 Authenticator를 만들어 Ticket과 함께 SS로 전송한다.
Client는 이미 TGS 세션키를 가지고 있기 때문에 SS 세션키의 복호화가 가능하다.
- 새로운 Authenticator에는 Client 아이디와 타임스탬프를 SS 세션키로 암호화한다.
⑥ SS -> Client
SS는 수신받은 Ticket과 Authenticator를 복호화하여 Client 아이디가 서로 일치하는지 확인하고 Authenticator에 들어있던 타임스탬프를 SS 세션키로 암호화해서 Client에게 전송한다.
Ticket은 SS 비밀키로 암호화되어있기 때문에 SS는 자신의 비밀키로 복호화가 가능하다.
Authenticator는 SS 세션키로 암호화되어있으며, Ticket을 복호화하여 SS 세션키를 획득했기 때문에 복호화가 가능하다.
Client는 수신받은 타임스탬프가 자신이 보낸 타임스탬프와 일치하는지 확인하여 SS와의 통신을 신뢰할 수 있다.