Kerberos
커버로스는 대칭 암호 원리 기초를 기반으로하는 컴퓨터 네트워크 인증프로토콜이다
주로 클라이언트-서버 시스템에 사용 되며, 인터넷 같이 보안이 보장되지 않는 네트워크에서 사용자 인증, 데이터 무결성, 기밀성 제공합니다
인터넷에서 데이터를 주고 받을 때의 위협은 무엇인가?
- 사용자 위장
- 네트워크 주소 변경 (Spoofing)
- 재전송 공격
커버로스에서 사용자는 서버를 인증할 수 있는 기능을 갖춘 중앙 집중식 인증 서버를 가지게 된다
커버로스 프로토콜의 핵심 요소
- 클라이언트(Client) : 서비스를 사용하려는 사용자 또는 시스템
- 서비스 서버(Service Server) : 클라이언트에게 서비스를 제공하는 시스템
- 인증서버(Authentication Server, AS) : 사용자의 인증 정보를 확인하고, 티켓 인증서를 발급하는 서버
- 티켓 인증서(Ticket Granting Ticket, TGT) : 클라이언트가 서비스 서버에 접근하기 위해 필요한 인증 정보를 포함하는 티켓
- 티켓 인증서 발급 서버(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로 암호화하여 유저에게 보낸다
- E(K_cv,[Ts_s+1])
유저는 받은 데이터를 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 |