접근통제(Access Control): 커버로스(Kerberos)

탱구리·2025년 9월 15일

보안

목록 보기
10/16

커버로스(Kerberos)

비보안 네트워크 환경에서 사용자의 신원을 안전하게 인증(Authentication)하기 위한 티켓 기반 인증 프로토콜이다. 보안이 보장되지 않은 네트워크 환경에서 유저와 서버가 서로의 신뢰성 확인을 위해 사용한다.

  • 키 배포 센터(KDC)라는 신뢰할 수 있는 제3자(TTP, Trusted third party)를 사용하여
  • 대칭 키 암호화를 통해

사용자 인증을 수행한다.

암호(비밀번호)가 네트워크 상에서 전송되지 않아 보안성이 높다. Windows 등 다양한 OS에 내장되어 있으며, 사용자가 한 번의 로그인으로 여러 서비스에 접근할 수 있는 SSO의 기반이 되기도 한다.

작동 방식

  1. 사용자가 KDC(AS+TGS, Authentication Server + Ticket Granting Server)에 로그인
  2. KDC → 티켓(Ticket Granting Ticket, TGT), 세션키 발급
  3. 사용자는 티켓으로 서비스 서버(SS, Service Server)에 접근 요청
  4. 서비스 서버(SS) → 티켓 검증 후 접근 허용

Ticket
= 유저 아이디 + 유저 호스트의 IP 주소 + 타임 스탬프 + 티켓 수명 + 세션키

티켓은 항상 비밀키로 암호화된다.

  • Session Key
    • 메시지 전달을 위한 대칭키
    • 항상 암호화되어 전달됨
  • Secret Key
    • 비대칭키 (외부에 노출되면 안됨)
    • 티켓을 암호화하거나 유저로부터 전달받은 티켓의 복호화를 위해 사용됨
  • Authenticator
    • [유저 아이디 + 타임스탬프]를 세션키로 암호화한 것

  • 초록색 키: 유저의 비밀번호
  • 노란색 키: TGS 비밀키
  • 빨간색 키: TGS 세션키
  • 검은색 키: SS 비밀키
  • 파란색 키: SS 세션키

커버로스 도입을 고려할 만한 상황

  1. 서비스 서버가 많아지고, 유저들도 늘어나서 사용자와 권한에 대한 관리 비용이 높아질 때
  2. 서버 별로 접근 가능한 사용자(클라이언트)들의 권한을 관리해야 할 때
  3. 서버가 추가될 때마다 혹은 유저가 추가/삭제 될 때마다 매번 유저를 등록/관리해야 하는 경우

이런 경우에 클라이언트/서버 외에 제3의 인증 서버(AS)를 도입하고, 이와 연동된 티켓 부여 서버(TGS)를 통해 티켓을 발급하여 유효한 티켓이 있는 유저만 서비스 서버(SS)에 접속할 수 있도록 제어하는 커버로스 프로토콜을 도입하여 편리하게 관리할 수 있다.

실제로 회사에서 사내망을 통해 서비스를 이용할 때 커버로스 인증방식을 사용하는 경우가 많다고 한다.

출처
https://www.letmecompile.com/kerberos-protocol/

0개의 댓글