KERBEROS 박재홍
CONTENT KDC를 이용한 대칭 키 분배 KERBEROS
KDC를 이용한 대칭 키 분배 1 Host A 2 4 KDC : 키 분배센터 (Key Distribution Center) 3 Host B 3 =A의 요청을 전달하고 B가 동의하면 세션 키 전달 ※ 세션 키 - 클라이언트들간의 통신내용을 암호화하는데 사용하는 비밀키 - 세션이 유지되는 동안 사용하고, 세션이 종료되면 폐기
KDC를 이용한 대칭 키 분배 대칭키 암호 방식 – 수신자와 송신자가 동일한 키를 공유 KDC를 이용할 때의 문제점 : - 클라이언트가 늘어나면 보관해야 할 키가 늘어남 (클라이언트가 n이라면 n(n+1)/2개) - KDC가 공격 당하면 사용자들의 키가 노출 됨. 키의 개수에 대한… 예 1> Client A, Client B, KDC (클라이언트의 수 : 2) – KDC가 보관해야 할 키 : Ka-KDC, Kb-KDC, Ka-b(총 3개) 예 2> Client A, Client B, Client C, KDC (클라이언트의 수 : 3) – KDC가 보관해야 할 키 : Ka-KDC, Kb-KDC, Kc-KDC, Ka-b, Ka-c, Kb-c (총 6개)
KERBEROS -MIT에서 개발한 대칭키 방식의 키 분배 및 사용자 인증 서비스 - 수년 동안 유닉스 시스템에서 사용되었으며, 현재 윈도우 서버 운영체제에서 기본 인증 기법으로 사용. -사용자가 어떤 서비스 또는 서버에 접속하기 위해서 사용자를 인증하고 네트워크 상의 서버에게 사용자의 신분을 보증 -version 4와 version 5가 존재하며, version 4의 보안상 허점을 보완하여 version 5가 인터넷 표준으로 제안 - SSO(Single Sign-on : 한번의 인증을 통해 재인증 없이 접근할 수있게 하는 방식.)을 이용 할 수 있게 해준다.
KERBEROS 구성요소 - 클라이언트 : 사용자의 컴퓨터 - 서버: 사용자가 접속하려고 하는 대상 - 인증서버(AS,Authentication Server) : 클라이언트를 인증하는 서버. 모든 사용자의 아이디와 패스워드를 DB에 저장.;TGT 발급. - 티켓 승인 티켓(TGT, Ticket Granted Ticket) : 티켓을 발급받는데 필요한 티켓 - 티켓 발행 서버(TGS, Ticket Granted Server) : 인증 값인 티켓을 클라이언트에게 발급해주는 서버 인증 서버와 티켓 발행 서버를 통틀어 키 분배 센터라 부름(KDC) - 서비스 승인 티켓(Ticket) : 클라이언트가 서버에 접속할 때 필요 - 세션키 : 서비스 세션 당 한번씩 사용하는 비밀 키. - 인증자(Authenticator) : 서비스 요청자가 클라이언트 자신을 인증. - 타임스탬프(TS), 유효기간(LifeTime): 티켓의 재사용 방지.
KERBEROS 간단한 인증 프로토콜. 1 2 3 4 5 6 = 로그인 (ID, PassWord) AS에 ID, PassWord 등록 여부 확인 2 = CI, CP, SI 전송 AS(Authentication Server) 4 Ticket 발급하고 암호화 한 뒤 전송= 5 = CI와 암호화 되어있는 Ticket을 전송 ※ Ticket = E[Ka-s(CI, Cip, SI)] 6 = 클라이언트로 받은 CI와 Ticket 안의 CI가 일치하면 서비스 시작 (인증) Server ※ CI : 클라이언트의 ID, CP : 클라이언트의 패스워드, SI : 서버의 ID, Cip : 클라이언트의 IP주소 Ka-s : AS와 Sever가 사전에 공유하고 있는 비밀 키
KERBEROS 간단한 인증 프로토콜의 문제점 ②번 과정에서 패스워드가 평문으로 전송됨을 확인 : 전송 중간에 패스워드 가로채기 가능 Solution - 패스워드를 암호화하여 전송 서비스마다 새로운 티켓이 요구됨 다른 서비스 사용에는 패스워드 입력을 다시 해야 하는 불편함 Solution - 티켓 발행 서버(TGS)를 사용하여 해결
(Key Distribution Center) TGS를 사용한 인증 프로토콜 = Ticket을 복호화 (인증!) 8 = 티켓 승인티켓 생성 = 서비승인티켓 발행 2 5 Server KDC (Key Distribution Center) AS (Authentication Server) TGS (Ticket Granted Server) 4 = CI, SI,TGT 전송 7 = CI, Ticket 전송 1 = CI, TI 전송 Ticket 전송= 6 E[K-p(TGT)] = 3 서비스 세션당 한번 서비스 유형별 한번 로그온 시 한번 TGT=E[Ka-t(CI, Cip, Ti,TgtT)] Ticket=E[Kt-s(CI, Cip, SI, TT)] ※ K-p : 패스워드로부터 얻은 키, Ka-t : AS와 TGS가 사전에 공유하고 있는 비밀 키 TI : TGS의 ID, Kt-s : TGS와 Sever가 사전에 공유하고 있는 비밀 키 TgtT : TGT의 유효기간, TT : Ticket의 유효기간
KERBEROS TGS를 사용한 인증 프로토콜 : 부가 설명 ③ E[K-p(TGT)] 전송과정에서 패스워드를 입력받아, 패스워드로부터 키 K-p를 만들어 복호화. 올바른 패스워드라면 K-p를 만들어 복호화가 가능하고 TGT를 획득할 수 있음 ⑤ 서비스 승인 티켓 발행과정에서 TGS는 TGT를 복호화하여 TI의 존재여부, 유효기간 확인, 클라이언트의 ID와 IP주소 유효성 판단 후 티켓을 발행 TGS를 사용한 인증 프로토콜 : 문제점 TGT의 유효기간 문제 ① 유효기간이 너무 짧을 때 세션이 진행 중에도 패스워드를 입력해야 하는 경우가 생길 수 있음 ② 유효기간이 너무 길 때 클라이언트가 서비스를 정상적으로 사용하고 로그아웃한 경우에도 TGT는 사용이 가능하기 때문에, 침입자가 유효기간이 남은 TGT를 이용하여 서버에 접속가능 Solution 티켓을 사용하고 있는 사람과 티켓을 발행받은 사람이 같음을 증명 서버의 인증 문제 가짜 서버가 사용자가 입력한 정보를 가로채서 이용할 수 있음(Spoofing) 서버의 식별자(SI) 를 위조할 수 있다면 누구든 서버 흉내를 내서 클라이언트가 보내는 메시지를 받아볼 수 있 는 문제가 생김 Solution 서버가 서버 자신을 사용자에게 인증(상호 인증이 필요)
(Key Distribution Center) Kerberos ver.4의 인증 프로토콜 = Ticket을 복호화 (인증!) 8 = 티켓 승인티켓 생성 = 서비승인티켓 발행 2 5 Server KDC (Key Distribution Center) AS (Authentication Server) TGS (Ticket Granted Server) = SI, TGT, A1전송 4 7 =Ticket, A2 전송 1 = CI, TI,TS1 전송 E[Kc-t(Kc-s,SI,TS4,Ticket)] 전송 || E[K-p(Kc-t, TI, TS2, TgtT, TGT)] || 6 E[Kc-s,(TS5+1)전송= 9 3 서비스 유형별 한번 서비스 세션당 한번 로그온 시 한번 티켓 승인티켓 TGT=E[K-p(Kc-t, TI, TS2, TT) 서비스 승인 티켓 Ticket =E[Kc-t(Kc-s, SI, TS4, Lifetime4 인증자 A1 = E[Kt-s(Kc-s(CI, Cip, TS3) 인증자 A2 = E[Kc-s(TS5+1)
KERBEROS Kerberos ver.4의 인증 프로토콜 설명 ①로그온을 하고 TGS에 대한 접근 요청 클라이언트의 ID, TGS의 ID, TS(요청 메시지를 발송한 시간) ②AS는 TGT를 생성 ③AS의 응답 메시지 클라이언트와 TGS 사이의 세션 키와 TS2(TGT를 발송한 시각), 응답 메시지의 유효기간, TGT를 K-p로 암호화하여 전송 클라이언트는 K-p로 복호화 하여 TGT를 획득 가능 ④서버에 대한 접근 요청 : 서버의 ID와 TGT, 인증자 전송. TGT와 인증자를 복호화하여 나온 클라이언트의 ID와 IP주소의 일치 여부를 확인하여 일치하면 Ticket 발행 ⑤클라이언트와 서버 사이의 세션 키와 서버의 ID, TS4(Ticket을 발송한 시각), Ticket을 클라이언토와 TGS 사이의 세션 키로 암호화 하여 전송 클라이언트는 클라이언트와 TGS 사이의 세션 키로 복호화 하여 Ticket과 클라이언트 서버 사이의 세션키 획득 ⑥서버 접속 : 클라이언트는 서버에 Ticket과 인증자를 전송 ⑦ 응답 : 서버는 인증자에서 얻은 타임스탬프 값에 1을 더한 다음 세션 키로 암호화하여 전송 서버의 상호 인증 구현 ⑧Server는 티켓 복호화하여 인증 ⑨ 클라이언트와 서버간의 통신에서 timestamp값에 1을 증가시킴. 서로간 인증하기 위해 AS가 만듬
KERBEROS Kerberos ver.4의 인증 프로토콜 설명 -공유키 : 통신 전 사전에 미리 공유하는 키 -세션키 : 인증 또는 세션을 위해 만들어진 비밀키, 일회용 - 패스워드를 통해 얻어진 키 키 분류 설명 공유 키 Ka-t = AS와 TGS 사이에 TGT를 암호화 하여 클라이언트가 임의로 변경 못하게 함. Kt-s = TGS와 Server사이 Ticket을 암호화 하여 클라이언트가 임의로 변경 못하게 함. 세션 키 Kc-t = 클라이언트와 TGS 사이이며 Ticket줄 때 암호화에 사용한다. Kc-s = 클라이언트와 서버사이 통신에 사용함. 패스워드를 통해 얻어진 키 K-p = AS가 클라이언트에게 전송할 때 패스워드를 입력 받아 패스워드로부터 키 K-p를 만들어 복호화한다.
(Key Distribution Center) KERBEROS Kerberos ver.4의 인증 프로토콜 설명 1 TGS 접속요청 AS (Authentication Server) 2 TGT, 세션키(클라이언트, TGS 통신) KDC (Key Distribution Center) 3 서비스 승인 티켓요구 +인증 4 서비스 승인티켓, 세션키(클라이언트, 서버 통신) TGS (Ticket Granted Server) 5 서비스 요청+ 인증 Server 6 서버 인증 후 서비스 시작
KERBEROS Kerberos 간단히 생각하기 2. 검표한다 1.매표소로 간다 3. 마음껏 이용한다.
KERBEROS Kerveros간의 인증. (이를 응용해 SSO를 구현한다) 1. Kerberos 서버(AS+TGS), 다수의 클라이언트, 다수의 응용서버 로 구성 된 환경을 위해 - Kerberos 서버는 모든 사용자의 ID와 해시된 패스워드를 DB 에 저장되어 있어야 함. - Kerberos 서버는 특히 각 서버와 비밀키를 공유해야함 - 서로 다른 Kerberos는 상호간 등록 해야함.도메인 사이의 인증 2. 도메인사이의 인증 - 서로 다른 Kerberos 서버끼리 비밀키 공유 - 클라이언트가 Kerberos에 다른 도메인의 서버를 요청 했을 경우 DNS를 이용하여 다른 도메인의 경로를 찾음. 그 과정에서 인증서를 통해 상호 인증.
KERBEROS Domain A 1 2 3 4 5 Domain B 7 6 Kerveros간의 인증. Server Kerberos Server 1 Local TGS 요청 2 Local TGT 전송 AS (Authentication Server) 3 원격 TGT 요청 4 원격 TGT 전송 TGS (Ticket Granted Server) 5 원격 Ticket 요청 Kerberos Server Domain B 7 원격 서비스 요청 AS (Authentication Server) Server 원격 Ticket 전송 6 TGS (Ticket Granted Server)
KERBEROS Kerberos ver.4의 문제점과 해결책으로써의 Kerberos ver.5 암호화 알고리즘 : DES사용 티켓 유효시간 : 5분 단위로 8비트 사용가능. 최대 2^8*5 = 1280분 동안 사용가능 ver.5 : 시작 시간과 끝 시간을 따로 표시하여 유효기간 설정이 자유로움 클라이언트가 접근에 사용했던 인증서를 한 가지 서버에만 이용가능 ver.5 : 인증서를 서로 다른 서버에서도 이용 가능 인터넷 프로토콜에 의해 의존. IP주소 사용 ver.5 다른형식 주소 사용 가능.
KERBEROS Kerberos ver5의 장단점 - 장점 인증 절차와 사용자와 서비스 간의 통신 내용 을암호화 키 및 암호 프로세스를 이용하여 보 호하 기 때문에 데이터의 기밀성과 무결성을 보장 할 수 있음. - 단점 키 분배 센터에서 각 구성요소의 암호화 키를 가지고 있기 때문에 키 분배 센터에 오류가 발 생하면 전체 서비스 사용 불가능 패스워드 공격에 취약 : 클라이언트를 공격당 하여 패스워드가 유출되어도 KDC서버는 인지 못 함.
Refrence http://www.ibm.com/support/knowledgecenter/SS7K4U_8.5.5/com.ibm.websphere.zseries.doc/ae/csec_kerb_auth_explain.html?lang=ko http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.sec.doc/doc/c0011990.html?lang=ko https://docs.oracle.com/cd/E26925_01/html/E25888/intro-25.html http://s2kiess.blog.me/220335809677 http://sol9501.blog.me/70104706140 http://blog.naver.com/dbdlfgo1/220625995681 http://weroot.co.kr/itwiki/375 http://blog.naver.com/nettier/220589346227 https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwj90sKP_OPLAhVFtpQKHVgDDskQFggkMAA&url=http%3A%2F%2Fpel.smuc.ac.kr%2Fphpbb%2Fdownload%2Ffile.php%3Fid%3D7%26sid%3D34ebd1cdcf77b7582a6220bab751fa7f&usg=AFQjCNGhe4iIt4N6vh1npzgvhrwhatG5fw&sig2=jTDrLkWnWzS5bImt7F9NGQ&bvm=bv.117868183,d.dGo http://pel.smuc.ac.kr/phpbb/download/file.php?id=64&sid=1adefb2890ec1232bf9d6db241e041ee