KERBEROS(커버로스) - MoonGyeongHyeon/Keyword_Study GitHub Wiki
KERBEROS (커버로스)
커버로스는 사용자의 인증을 위한 대표적인 매커니즘이다. 현재 네트워크 상에서 사용자의 인증을 위해 가장 많이 사용되고 있는 인증 시스템 중의 하나라 할 수 있다. 앞으로 더 자세히 살펴보겠지만, 커버로스 인증 시스템은 문구-응답 인증 방법을 부분적으로 사용하고 있다. 그리고 사용자가 서버의 인증을 얻기 위해서 티켓
이라는 인증 값을 사용한다.
커버로스는 MIT에서 네트워크를 기반으로 한 인증시스템을 목적으로 개발했다. 현재 네트워크의 인증 시스템으로 상용화된 여러 제품 중 다수가 이 커버로스를 기반으로 하고 있다.
기본 환경
커버로스 인증 매커니즘에는 네 가지 종류의 개체가 등장한다. 각 개체와 그 역할은 다음과 같다.
- 클라이언트: 인증을 얻길 원하는 사용자.
- 서버: 클라이언트가 접속하려고 하는 서버. 클라이언트가 서버에 접속하려면 인증이 필요하다.
- 인증 서버: 클라이언트를 인증하는 서버.
- 티켓 발급 서버: 인증 값인 티켓을 클라이언트에게 발급해주는 서버.
커버로스 환경은 위 네 가지의 개체들로 이루어져 있다. 보통 여러 개의 클라이언트와 서버가 존재하며 한 개의 인증 서버와 티켓 발급 서버로 구성되어 있다.
간단히 개체 간의 역할을 설명하면, 클라이언트는 서버에 접속하기 위해 인증 서버로부터 인증을 얻는다. 클라이언트는 인증 서버로부터 인증을 얻기 위해 패스워드를 사용하여 인증 서버에 자신을 인증한다. 인증 서버는 인증된 클라이언트에게 티켓 발급 서버로부터 티켓을 발행하는 것을 허락한다. 티켓 발급 서버는 인증된 클라이언트에게 티켓을 발급하고, 클라이언트는 이 티켓을 사용하여 서버에 접속하게 된다. 서버는 티켓을 확인하고 인증한 다음 접속을 허락한다.
예시
극장을 예로 들어보자. 요즘은 인터넷으로 영화 예매가 가능해졌다. 앨리스는 영화를 보기 위해 인터넷으로 영화를 예매했다. 이때 앨리스가 영화를 예매했다고 주장할 수 있는 증거는 인터넷으로 발급된 예매번호이다. 앨리스는 예매번호를 가지고 극장으로 간다. 극장의 매표소에서는 앨리스의 예매번호를 보고 앨리스가 인터넷으로 영화를 예매했다는 인증을 하고 티켓을 앨리스에게 준다. 앨리스는 이 티켓을 가지고 극장 안으로 입장한다. 극장의 출입구에서는 티켓을 보고 앨리스를 인증할 수 있으므로 앨리스를 입장시킨다.
위의 예에서 앨리스는 클라이언트, 예매번호는 앨리스의 패스워드, 매표소는 인증서버와 티켓 발급 서버, 극장 티켓은 티켓, 극장은 서버라 생각하면 된다.
티켓
커버로스 시스템의 목적은 인증된 클라이언트만이 서버에 접속할 수 있게 하는 것이다. 한 커버로스 시스템에 속해있는 클라이언트와 서버들의 범위를 영역(realm)이라 한다. 즉, 영역은 커버로스 시스템이 영향력을 가질 수 있는 범위라 생각하면 된다. 그리고 신임장(credential)은 티켓 발급 서버가 클라이언트에게 발급하는 것으로, 서버에게 제출할 인증 값이다. 클라이언트는 이 신임장을 서버에 보냄으로써 서버에게 인증받는다. 신임장은 티켓(ticket)과 인증자(authenticator)로 구성되어 있다. 인증자는 티켓이 유효하다는 것을 증명하기 위해 사용되는 값으로 부가 정보를 포함하고 있다.
티켓에는 다음과 같은 정보가 들어있다.
- 클라이언트가 접속하기를 원하는 서버의 ID
- 클라이언트의 ID
- 클라이언트의 네트워크 주소
- 티켓의 유효기간
- 클라이언트와 서버가 서비스 기간동안 공유하는 세션 키
영역 안에 있는 클라이언트들은 영역 안의 각 서버에 대하여 권한이 다르다. 그리고 클라이언트는 자기의 권한에 따라 서버에 접속할 수 있는 기간이 달라지게 된다. 티켓에는 유효기간이 있으므로 서버는 티켓을 접수한 다음에 티켓에 있는 클라이언트의 ID에 해당하는 클라이언트에 대해서, 그 티켓에 있는 유효기간 동안만 접속을 허용한다.
커버로스 v4 동작 과정
전체적인 그림은 다음과 같다.
용어 설명
- AS: Authentication Server
- V: Server
- IDc: IDentifier of user on Client
- IDv: IDentifier of V
- Pc: Password of user on Client
- ADc: network ADdress of Client
- Kv: secret encryption Key shared by AS and V
- TS: timestamp
- ||: concatenation
클라이언트와 AS의 서비스 교환 과정
티켓승인. 티켓을 얻기 위해 클라이언트는 AS(인증 서버)에 요청한다.
로그인 시 한번 일어나는 과정이다.
위 과정은 AS에서 보내는 티켓에 들어있는 내용이다.
클라이언트와 TGS의 서비스 교환 과정
서비스 승인. 티켓을 얻기 위해 클라이언트는 TGS(티켓 승인 서버)로 접근한다. 이건 클라이언트가 새로운 서버로 접근하고 싶을 때마다 이루어지는 과정이다. 즉, 각 서비스마다 한번씩 일어난다는 말이다.
위 내용은 TGS로 보내는 인증자와 TGS로부터 받는 티켓의 내용이다.
클라이언트와 서버의 서비스 교환 과정
클라이언트가 서버에 서비스를 요청하는 것이다. 사용자가 서버에 접근할 때마다 일어난다.
위 내용은 클라이언트로부터 서버에게 가는 인증자 내용이다.