CH.05 커버로스 인증절차
description
Transcript of CH.05 커버로스 인증절차
CH.05 커버로스 인증절차
기존 시스템 로그인 과정의 문제점
인증서버만 사용한 제 3 자 인증절차
커버로스 v5 의 동작 절차 (Authentication Service Exchange 과정 ) : TGT 와 K(A,tgs) 확보과정(Ticket-Granting Service Exchange 과정 ) : TGT 를 이용하여 세션 티켓과 세션키
확보과정(Client-Server Authentication Exchange 과정 ) : 상호인증과정
1) Arami AS : (AP-REQ 메시지 )
paData || kdc-options || Cname(=IDA) || Realm || Sname (=IDtgs)||Times || Nonce || HostAddr
• paData = PreAuthentication Data = EKa [ A’s system time] • Times = key-expiration, authtime, starttime, endtime, renew-till
2) ASArami: (AP-REP 메시지 )
CRealm || Cname(=IDA)|| TGT || EncASRepPart
• TGT = tkt-vno || realm || Sname (=IDtgs )|| EncTicketPart
• EncTicketPart = EKtgs[Flags || KA,tgs || Crealm || Cname || Times || Caddr || Authorization-data]
• EncASRepPart = EKA [ KA,tgs || last-Req || Nonce || Times || SRealm || Sname || Caddr ]
Ticket-Granting Service Exchange 과정
(Ticket-Granting Service Exchange 과정 ) : TGT 를 이용하여 세션 티켓과 세션키 확보과정
3) AramiTGS : (TGS-REQ 메시지 )
paData || kdc-options || Cname(=IDA) || Realm || Sname (=IDB) ||Times || Nonce || HostAddr
• paData = TGT || AP-Options || Authenticator(A,tgs) • Authenticator(A,tgs) = EK(A,tgs) [ vno || Crealm || Cname || Cksum || Ctime
|| Subkey || Seq-Number || aut-data, ]
4) TGS(A : (TGS-REP 메시지 )
CRealm || Cname (=IDA) || SGT || EncTGSRepPart
• SGT = tkt-vno || realm || Sname(=IDB)|| EncTicketPart• EncTicketPart = EKB[Flags || KA,B || Crealm || Cname || Times || Caddr ||
Authorization-data]• EncTGSRepPart = EK(A,tgs) [ KA,B || last-Req || Nonce || Times || SRealm ||
Sname || Caddr ]
Client-Server Authentication Exchange 과정
(Client-Server Authentication Exchange 과정 ) : 상호인증과정
5) AB : (AP-REQ 메시지 )
SGT || AP-Options || AuthenticatorAB
• AuthenticatorAB = EK(A,B)[vno || Crealm || Cname || Cksum || Ctime || Subkey || Seq-Number || aut-data,,, ]
6) BA: (AP-REP 메시지 )
EncAPRepPart = EK(A,B) [Ctime ||subkey || Seq-Number ]
커버로스 동작 절차 (1)
Borami 에 대한 SGT 요청
커버로스 동작 절차 (2)
Ticket Granting Ticket 의 재사용 절차 (1)
Ticket Granting Ticket 의 재사용 절차 (2)
커버로스 메시지의 기본 형식
AS-REQ(10)Pvno=5
Message-type=10
Pre-authentication
A’s system time(encrypted with Ka)
Request Body
KDC-optionsCname=“Arami”
Realm=“West”Sname=“krbtgt”,
”West”Till=“2004-09..”
Rtime=“2004-09..”
NonceEncType={rc4-hmac, des-cbc-
md5…}Host Address =NetBios Address
(:Arami ..”)
AP-REQ(14)
Pvno=5Message-type=14
AP-options
Session GrantingTicket
AuthenticatorEncrypted with K(a,b)
vnoCrealmCnameCksumTimessubkey
Seq-numberauth-data
AS-REP(11)Pvno=5
Message-type=11
Response Body
Crealm=“WEST.COM”
Cname=“Arami”
Ticket GrantingTicket
tkt-vno=5Realm=“WEST.COM
”Sname=“krbtgt”,
“West.Com”Enc-part with Ktgs
K(a, tgs)CnameCaddrTimes
CRealm
EncASRepPartWith EkaK(a, tgs)
IDtgsTimesNonceRealm
AP-REP(15)
Pvno=5Message-type=15
EncAPRepPartWith K(a,b)
Ctimesubkey
Seq-number
커버로스 메시지 형식
윈도우 커버로스의 동작 절차
BoramiComAramiCom
AS-REQ메시지의 예
6a 82 01 2c ; [Application 10] 메시지로서 , 데이터 부분의 길이는 0x12c 바이트이다 .30 82 01 28 ; Sequence 형식으로서 , 데이터 부분의 길이는 0x128 바이트이다 .a1 03 ; Context-specific [1] 형식이므로 , pvno[1], 즉 , version 항목이고 , 길이는 3 이다 .02 01 05 ; 정수형으로서 05 이다 . a2 03 ; Context-specific [2] tag 를 가지므로 , msg-type[2], 즉 , 메시지 형식 항목 , 길이는 3.02 01 0a ; 정수형으로서 , 0a = 10, 즉 KRB_AS_REQ 를 지시한다 .a3 5f ; padata[3] : 길이는 5f,30 5d … ; …
AS_REP
TGS_REQ
“BoramiCom”
TGS_REP
“BORAMICOM$”
AP_REQ
AP_REP
도메인 경계를 통한 인증절차
실험
• 도메인구성과 액티브 디렉터리 확인– 사용자 등록 (Arami, Borami)
• Arami, Borami 의 도메인 가입 설정• Borami
– 커버로스 인증기능을 지원하는 Web Server설정
• 커버로스 동작 절차 분석– Arami 의 로그온시 AS_REQ/AS_REP 패킷 수집 및 분석
– Borami 웹 서버에 접속시 TGS_REQ/TGS_REP/AP_REQ/AP_REP 패킷 분석
• 도메인경계 인증실험– Child Domain 설정
실험
도메인 경계를 통한 인증 실험망의 구성
Note
• 사용자이름과 PC 이름은 다르게 설정해야 한다 .– Arami = 사용자이름– AramiCom = PC 이름