본문 바로가기
IT Network System/Network

Kerberos

by Skills 2021. 5. 20.

* Kerberos

- 커버로스란 그리스 신화에서 저승의 신 하데스의 문을 지키는 머리가 셋 달린 개라고 한다. 제 3의 인증 서버를 이용해 사용자 간에 인증, 즉 신분의 확인을 인증서버를 통해 하는 것이다.

- 커버로스는 비밀 키 암호화를 사용하여 클라이언트 / 서버 애플리케이션에 대한 강력한 인증을 제공하도록 설계된 네트워크 인증 프로토콜이다.

- 사용자 / 클라이언트 / 서버간에 인증 기능을 제공하기 위해 개발됐으며 Spoofing이나 Sniffing을 막을 수 있다.

이미지 출처 : https://slidesplayer.org/slide/14769294/

 

* Kerberos가 사용되는 경우

- 서버의 수가 많아지고, 유저의 수도 많아져서 사용자와 권한에 대한 관리 비용이 높아지는 경우

- 서버별로 접근 가능한 사용자를 관리해야 할 때

- 서버가 추가될 때마다 혹은 유저가 추가/삭제될 때마다 유저를 등록 관리해야 하는 경우

 

* Kerberos 주요 개념

- 서비스를 제공받는 Client

- 인증을 제공하는 AS(Authentication Server)

- 티켓을 발행해주는 TGS(Ticket Granting Server)

- 서비스를 제공해주는 SS(Service Server)

 

* 마스터, 슬레이브 KDC 서버

- 각 영역에는 주체 데이터베이스의 마스터 복사본을 유지 관리하는 서버가 있어야 한다. 이 서버를 마스터 KDC 서버라고 한다.

- 각 영역에는 주체 데이터베이스의 복제 복사본을 포함하는 슬레이브 KDC 서버도 한 개 이상 있어야 한다.

- 마스터 KDC 서버와 슬레이브 KDC 서버 모두 인증을 설정하는 데 사용되는 티켓을 만든다.

 

* Kerberos 시간 동기화

티켓은 사용 가능한 기간이 정해져있다. Kerberos를 사용하려면 관련 호스트의 시간이 동기화되어야 한다. HMC 시간이 KDC 서버의 시간과 5분 이상 동기화되지 않으면 인증은 실패한다.

 

* Kerberos 인증 방식

이미지 출처 : https://linuxconfig.org/how-to-install-kerberos-kdc-server-and-client-on-ubuntu-18-04

사용자 클라이언트 기반 로그인

① 클라이언트는 사용자로부터 아이디와 비밀번호를 입력받는다.

② 비밀번호를 대칭키로 변환하여 암호키를 생성한다.

 

클라이언트 인증

③ 클라이언트는 AS에게 사용자 아이디를 전송한다.

④ AS는 사용자 아이디로 데이터베이스를 조회하고 두 개의 메시지를 생성한다.

 - 메시지 A → 클라이언트 비밀번호를 기반으로 Client / TGS 세션 키 생성

 - 메시지 B → TGS의 비밀키로 TGT를 암호화

 - TGT = ( Client ID + network IP + expired time + TGS session key)

⑤ ②에서 만든 암호키를 기반으로 메시지 A를 해독(DB의 비밀번호와 사용자가 입력한 비밀번호가 동일하면 성공)하고 TGS 세션 키를 획득한다. 클라이언트는 TGS 비밀키를 가지고 있지 않으므로 해독하지 않고 가지고 있다.

 

고객 서비스 인증

⑥ 클라이언트는 메시지 A, B를 통해 메시지 C와 D를 생성한다.

 - 메시지 C → TGT + Service ID

 - 메시지 D → (클라이언트 ID + Timestamp)를 TGS 세션 키로 암호화 생성된 메시지는 AS의 TGS로 전송된다.

⑦ TGS는 메시지 C, D를 기반으로 메시지 E, F를 생성한다.

 - 메시지 E → Client to Server Ticket → Server Secret Key로 암호화 (TGS와 SS는 Server Secret Key를 알고 있으므로 해독 가능하다)

 - 메시지 F → Client / Server Session Key → Client / TGS 세션 키로 암호화

 

※ 여기서 생성된 메시지는 클라이언트에게로 전송된다.

고객 서비스 요청

⑧ 메시지 E와 F를 받은 사용자는 서비스를 이용할 자격을 갖추게 되었다. 클라이언트는 서비스를 제공받기 위해 메시지 E, G를 SS에게 전송한다.

 - 메시지 E → ⑦에서 받은 Client to Server Ticket

 - 메시지 G → (클라이언트 ID + Timestamp) → Client / Server 세션 키로 암호화

⑨ SS는 E와 G를 통해 클라이언트의 신원을 확인하고 정보가 일치하는 경우 메시지 H를 통해 Client에게 신원을 확인시켜 준다.

 - 메시지 H → (메시지 D의 Timestamp + 메시지 G의 Timestamp) → Client / Server 세션 키를 통해 암호화

⑩ 메시지 H를 받은 Client는 해독 후 Timestamp를 확인하고 SS에 서비스를 요청하기 시작한다.

 

* Kerberos 인증 방식 (요약)

Kerberos를 기반으로 한 클라이언트(일반적으로 사용자 또는 서비스)는 KDC로 티켓에 대한 요청을 보낸다. KDC는 클라이언트에 대한 TGT(Ticket Granting Ticket)를 작성하고 클라이언트의 비밀번호를 키로 사용하여 암호화한 후 암호화된 TGT를 다시 클라이언트로 전송한다. 그러면 클라이언트는 비밀번호를 사용하여 TGT 복호화를 시도한다. 성공적으로 TGT를 복호화하면(즉, 클라이언트가 올바른 비밀번호를 제공한 경우) 클라이언트는 클라이언트의 ID를 증명하는 복호화된 TGT를 보관한다.

 

* Kerberos 프로토콜의 단점

- 사용자 몰림으로 인해 과도한 티켓 생성 시 서버 부하가 발생할 수 있다.

- AS 다운 시 인증과정이 중단된다.

- 각 서버의 시간 설정이 잘못되어있는 경우 인증 과정에서 문제가 발생한다.

 

Reference

https://as9070.tistory.com/107

https://real-dongsoo7.tistory.com/117

https://m.blog.naver.com/PostView.naver?blogId=ryuvsken&logNo=71773021&proxyReferer=https:%2F%2Fwww.google.com%2F

https://usheep91.tistory.com/44

https://docs.oracle.com/cd/E26925_01/html/E25888/intro-25.html

https://linuxconfig.org/how-to-install-kerberos-kdc-server-and-client-on-ubuntu-18-04

728x90

'IT Network System > Network' 카테고리의 다른 글

게이트웨이(Gateway)  (0) 2022.02.18
암호화 / 인증  (0) 2021.04.28
IPsec VPN  (0) 2021.04.28
FTP  (0) 2021.02.25
공인 IP, 사설 IP, NAT  (0) 2021.02.24

댓글