봄수의 연구실

Kerberos 본문

Computer Science/Security

Kerberos

berom 2023. 4. 11. 19:47

Kerberos

커버로스는 대칭 암호 원리 기초를 기반으로하는 컴퓨터 네트워크 인증프로토콜이다
주로 클라이언트-서버 시스템에 사용 되며, 인터넷 같이 보안이 보장되지 않는 네트워크에서 사용자 인증, 데이터 무결성, 기밀성 제공합니다

인터넷에서 데이터를 주고 받을 때의 위협은 무엇인가?

  1. 사용자 위장
  2. 네트워크 주소 변경 (Spoofing)
  3. 재전송 공격

커버로스에서 사용자는 서버를 인증할 수 있는 기능을 갖춘 중앙 집중식 인증 서버를 가지게 된다

커버로스 프로토콜의 핵심 요소

  1. 클라이언트(Client) : 서비스를 사용하려는 사용자 또는 시스템
  2. 서비스 서버(Service Server) : 클라이언트에게 서비스를 제공하는 시스템
  3. 인증서버(Authentication Server, AS) : 사용자의 인증 정보를 확인하고, 티켓 인증서를 발급하는 서버
  4. 티켓 인증서(Ticket Granting Ticket, TGT) : 클라이언트가 서비스 서버에 접근하기 위해 필요한 인증 정보를 포함하는 티켓
  5. 티켓 인증서 발급 서버(Ticket Granting Server, TGS) : 클라이언트가 TGT를 이용하여 서비스 서버 접근 허가를 요청할 수 있는 서버

커버로스 동작 과정 상세도

클라이언트 - AS(인증 서버)


AS는 모든 사용자의 패스워드를 중앙 집중식 데이터베이스에 저장하고 있는 서버이다.
또한, 각 서버와 유일한 비밀 키를 공유한다(이 키는 안전한 방법으로 공유 되었다)

  • C - AS : TGT(티켓-발행 티켓) 요청
    • ID_c : 자신의 신원을 AS에게 알려주기 위함
    • ID_tgs : TGS와 데이터를 주고 받기 위한 세션 키 때문
    • 타임스탬프 : 클라이언트와 AS의 시간을 동기화하기 위함
  • AS - C : 세션(공유) 키와 티켓 전송 : AS는 DB 조회하여, 세션키와 티켓을 만든다
    • K_c,tgs
    • ID_tgs
    • TGS 티켓(TGT) : 티켓을 받기 위한 티켓
      • E(K_tgs,K_c,tgs + ID_c + AD_c + ID_tgs + TS + Lifetime)
    • 타임 스탬프
    • 라이프 타임(유효 기간)

AS는 사용자 패스워드를 암호화 키로 사용하여, 클라이언트와 TGS 간의 세션 키 및 TGT를 암호화하여 클라이언트에게 전송합니다
클라이언트는 자신의 패스워드로 암호화 된 내용을 해독하기 때문에, 사용자 인증이 최소화 된다(패스워드 유출 걱정 노!)

클라이언트 - TGS(AS)(티켓 발행 서버)


이 단계에서 클라이언트는 특정 서비스에 대한 접근 허용을 받을 수 있다

  • C - TGS : 서비스 승인 티켓 요청
    • TGS 티켓(TGT)
    • 요청 되는 서비스 ID
    • Authenticator : E(K_c,tgs,ID_c + AD_c + TS)
  • TGS - C
    • C와 TGS의 세션 키
    • 서비스 ID
    • 타임 스탬프
    • Ticket V(서비스 접근 티켓)
      • E(K_v,K_c,v+ID_c + AD_c +서비스 ID+TS + Lifetime)
        TGS는 자신의 비밀키를 통해 TGT를 복호화한다.
  • TGS는 자신의 ID를 확인하여 복호화가 성공적이었음을 확신한다.
  • TGS는 TGT와 Authenticator의 유저 ID를 비교해, 유저를 인증한다
    • 정상적으로 AS를 거쳐 TGS에 요청 보냈음을 알 수 있다

사용자가 서비스(V)에 접속이 허락된 상태라면, TGS는 서비스 접근 티켓을 발행한다

클라이언트 - 서비스 제공자


유저는 TGS와 했던 것처럼 동일하게 Authenticator를 새로 만든다.
암호화도 마찬가지로 TGS에게 받은 C와 V의 세션키로 한다.

  • C - V
    • Ticket V(서비스 접근 티켓)
    • Authenticator : E(K_cv,사용자 ID+사용자 주소+타임스탬프)
  • V - C
    • E(K_cv,[Ts_s+1])
      서비스는 Authenticator와 SS를 복호화하여, 유저 아이디가 일치하는지 확인한다.
      일치한다면, Authenticator에 들어있던 타임 스탬프를 K_cv로 암호화하여 유저에게 보낸다

유저는 받은 데이터를 K_cv로 복호화 하여 앞서 보낸 Authenticator의 스탬프와 일치하는지 확인

  • 타임 스탬프가 일치하다면, 서비스를 신뢰 할 수 있다

이제 여기까지 끝냈다면, 유저와 서버는 서로 신뢰하는 통신이 가능하다

레퍼런스

728x90

'Computer Science > Security' 카테고리의 다른 글

네트워크 접근 통제  (0) 2023.04.12
X.509 인증서  (1) 2023.04.11
Kerberos 5  (0) 2023.04.11
Kerberos 4  (0) 2023.04.11
대칭 암호를 이용한 대칭키 분배  (0) 2023.04.08