IT 그리고 정보보안/Knowledge base

커버로스(KERBEROS) 인증

plummmm 2021. 4. 16. 06:29
반응형

케르베로스? 커버로스? 하튼 그리스로마 신화에 지옥을 지키는 머리 셋달린 강아지에 대해서 알아보자.

케르베로스라는 인증시스템!

MIT에서 개발한 네트워크 인증시스템으로서 현재 IETF에서 표준으로 채택되어 있다. 

 

어떠한 경우든 사용자는 서버에 있는 서비스에 접근을 한다. 이에 따라 항상 사용자를 위협하는 요소들이 존재한다.

커버로스는 이런 위협에 대하여 중앙 집중 인증 서버를 사용자에게 제공한다.

 

telnet, ftp, pop과 서비스는 보통 사용자의 패스워드를 평문 형태로 전달하기 때문에 

패킷 분석을 하면 다 뽀록난다. 

 

따라서 인가되지 않은 사용자들은 접속할 수 없도록 통제해야 하므로 

암호기술을 사용하여 안전하게 인증하는 것이 요구된다. 

 

커버로스 시스템은 방금 전 포스트에 적은 Needham과 Schroeder의 프로토콜에 기반하고 있다.

버전4와 버전5 두가지가 있다. 

 

접때도 말했지만 커버로스는 대칭키 암호를 사용한다. (버전4는 DES 알고리즘으로 만들어짐)

 

뭐 더 개념만 자꾸 설명하면 개념설명충이 될 것 같아ㅋ 

커버로스에 대해 자세히 한번 알아봅시다.

 

일단 커버로스는 위에서 말했듯이 중앙 인증 서버를 사용한다고 했다.

그리고 TGS 라는 ticket granting server 에서 발급받은 티켓을 이용해서 서버로부터 인증을 받는다.

이쯤하고 기본 환경에 대해 알아보자.

 

1. KERBEROS 기본 환경

 

용어 설명부터 하자. 

AS : authenticates Server ; 인증 서버

TGS : ticket granting server; 티켓을 발급하는 서버

S : application server

 

1, 2번 과정 : 유저가 로그인하는 과정

3, 4번 과정 : 유저가 어플리케이션 서버에 접근할 때 필요한 과정

5, 6번 과정 : 유저가 어플리케이션 서버에 접근하는 과정

 

기본 환경은 이러하다. 그럼 이제 커버로스 v4 부터 한번 과정을 살펴보자.

 

 

2. KERBEROS version 4의 동작 과정

용어 같은 건 하면서 설명하고 일단 전체적인 그림을 보겠다.

클라이언트가 3개랑 왔다리갔다리 한다.

 

용어 설명을좀 하자.

•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로 부터 받는 티켓의 내용이다.

 

 

세번째, 클라이언트와 서버의 서비스 교환이다.

뭐 클라이언트가 서버에 서비스를 요청하는 것이다. (지가 하고 싶은 작업)

사용자가 서버에 접근할 때마다 일어난다.

위 내용은 클라이언트로부터 서버에게 가는 인증자 내용이다.

자..과정은 이러합니다. 그럼 KERBEROS v4 의 특징을 알아보자.

 

 

3. KERBEROS version 4의 특징 및 문제점

일단 Needham과 Schroeder의 프로토콜에 기반하고 있다고 했다. 고로 세션키 분배, 타임스탬프, 인증자 개념이 있겠지.

특징적인 부분이 있다면 인증자가 딱 한번만 사용된다. reply attack을 방지하기 위해서 이다.

 

클라이언트와 서버간의 통신을 봐서 알겠지만 timestamp 값을 1 증가시켜서 다시 보내닌다.

그리고 클라이언트는 복호화 후, 값을 확인한다. 메세지를 복호화 하려면 세션키를 알아야 하기 때문에

서버가 v라는걸 확신할 수 있는 것이다.

 

허나.. v4도 문제점이 있다., 가장 큰 문제점은 암호화 알고리즘을 하나에만 의존한다는 것이다.

DES PCBC 모드 라는 것인데, DES의 비표준화 모드이다. 공격에 취약하다.

많은 취약점들이 있지만 v5를 설명하면서 같이 말함.

 

 

4. KERBEROS version 5에서 개선, 보완 사항

현재 KERBEROS version 5는 인터넷 표준으로 등록되어 있다. (RFC 1510)

그만큼 뭐 괜춘하니까 그런거 아니겠습니까.. 바로 설명에 들어가겠다.  

 

암호화 시스템에 대한 의존 : DES 사용 → Version 5는 다른 암호 알고리즘 사용 가능

 

인터넷 프로토콜에 대한 의존 : IP 주소 사용  Version 5는 다른 형식의 주소 사용 가능

 

메시지 바이트 순서 : 순서 표시 고정 → Version 5 : ASN.1 BER 인코딩 규칙 표준 사용

 

티켓 유효시간 : 최대 28*5 = 1280 분 동안만 사용 가능 → Version 5 : 시작 시간과 끝시간 표시(충분한 유효시간)

 

인증의 발송이 불가능 → Version 5에서는 가능

 

상호 인증 → Version 5에서는 Kerberos  Kerberos의 상호 인증이 가능

 

전 4에서는 DES의 비표준 모드인 PCBC 모드 사용 : 공격에 취약  → 버전 5에서는 표준 모드인 CBC 모드 사용

 

n세션키 : 버전 4에서는 세션키의 연속적 사용 가능(재전송 공격)  → 버전 5에서는 단 1회만 사용되는 서브 세션키 협약 가능

 

n패스워드 공격 : 패스워드를 추측하는 공격이 가능  → 버전 5에서는 패스워드 추측 공격이 더 어렵도록 만듦(사전 인증 기능)

반응형