커버로스(Kerberos)
비보안 네트워크 환경에서 사용자의 신원을 안전하게 인증(Authentication)하기 위한 티켓 기반 인증 프로토콜이다. 보안이 보장되지 않은 네트워크 환경에서 유저와 서버가 서로의 신뢰성 확인을 위해 사용한다.
- 키 배포 센터(KDC)라는 신뢰할 수 있는 제3자(TTP, Trusted third party)를 사용하여
- 대칭 키 암호화를 통해
사용자 인증을 수행한다.
암호(비밀번호)가 네트워크 상에서 전송되지 않아 보안성이 높다. Windows 등 다양한 OS에 내장되어 있으며, 사용자가 한 번의 로그인으로 여러 서비스에 접근할 수 있는 SSO의 기반이 되기도 한다.
작동 방식

- 사용자가 KDC(AS+TGS, Authentication Server + Ticket Granting Server)에 로그인
- KDC → 티켓(Ticket Granting Ticket, TGT), 세션키 발급
- 사용자는 티켓으로 서비스 서버(SS, Service Server)에 접근 요청
- 서비스 서버(SS) → 티켓 검증 후 접근 허용
Ticket
= 유저 아이디 + 유저 호스트의 IP 주소 + 타임 스탬프 + 티켓 수명 + 세션키
티켓은 항상 비밀키로 암호화된다.
- Session Key
- 메시지 전달을 위한 대칭키
- 항상 암호화되어 전달됨
- Secret Key
- 비대칭키 (외부에 노출되면 안됨)
- 티켓을 암호화하거나 유저로부터 전달받은 티켓의 복호화를 위해 사용됨
- Authenticator
- [유저 아이디 + 타임스탬프]를 세션키로 암호화한 것

- 초록색 키: 유저의 비밀번호
- 노란색 키: TGS 비밀키
- 빨간색 키: TGS 세션키
- 검은색 키: SS 비밀키
- 파란색 키: SS 세션키
커버로스 도입을 고려할 만한 상황
- 서비스 서버가 많아지고, 유저들도 늘어나서 사용자와 권한에 대한 관리 비용이 높아질 때
- 서버 별로 접근 가능한 사용자(클라이언트)들의 권한을 관리해야 할 때
- 서버가 추가될 때마다 혹은 유저가 추가/삭제 될 때마다 매번 유저를 등록/관리해야 하는 경우
이런 경우에 클라이언트/서버 외에 제3의 인증 서버(AS)를 도입하고, 이와 연동된 티켓 부여 서버(TGS)를 통해 티켓을 발급하여 유효한 티켓이 있는 유저만 서비스 서버(SS)에 접속할 수 있도록 제어하는 커버로스 프로토콜을 도입하여 편리하게 관리할 수 있다.
실제로 회사에서 사내망을 통해 서비스를 이용할 때 커버로스 인증방식을 사용하는 경우가 많다고 한다.
출처
https://www.letmecompile.com/kerberos-protocol/