개요
- 대칭키 암호를 이용하는 하나의 인증체계
- 장점 : 공개키 기반구조(PKI)가 요구되지 않는다.
- LAN과 같은 소규모 네트워크에서 사용할 수 있도록 설계
- 인증 및 비밀성과 무결성이 요구되는 세션키를 생성하기 위해 이용
- 원칙적으로 어떤 대칭암호든 커버로스로 이용 가능
→ 하지만, 오늘날에는 커버로스 대신 DES가 쓰임
- 원칙적으로 어떤 대칭암호든 커버로스로 이용 가능
- 인증 및 비밀성과 무결성이 요구되는 세션키를 생성하기 위해 이용
- 대칭키를 기반을 하지만 N명에 사용자에 대해 오직 N개의 키만 필요
- 기존 대칭키 기반 인증체계에서는 N명의 사용자가 있으면 N(N-1)2 * N^2 의 키 필요
→ 대칭키 기반 인증에서는 이용자와 키의 개수는 정비례 관계가 아님 - 커버로스는 가능한 이유? 제3의 신뢰성 있는 기관(TTP)에 의존하기 때문
- 커버로스 TTP는 시스템 보안의 핵심 구성요소 → 반드시 보호 필요 → 보안상 관건
- 기존 대칭키 기반 인증체계에서는 N명의 사용자가 있으면 N(N-1)2 * N^2 의 키 필요
키분배센터(KDC)
- 커버로스 TTP 역할 수행 → 손상되면 시스템 전체 보안이 타격
- KDC는 사용자들과 각각의 대칭키를 공유
- 앨리스와는 대칭키 K_A, 밥과는 대칭키 K_B, 캐럴과는 대칭키 K_C 공유
- 앨리스와는 대칭키 K_A, 밥과는 대칭키 K_B, 캐럴과는 대칭키 K_C 공유
- 오직 KDC에게만 알려진 마스터 키 K_{KDC}를 가짐
- 비상태성 상태를 유지하는 역할 → 거의 모든 서비스 거부 공격으로부터 보호
- KDC의 비상태성은 커버로스의 핵심적인 설계목표로, 성공했음
- 비상태성 상태를 유지하는 역할 → 거의 모든 서비스 거부 공격으로부터 보호
KDC 티켓
- KDC는 여러 형태의 티켓을 발행
- 가장 중요한 티켓은 티켓을 주는 티켓(TGT)
- 가장 중요한 티켓은 티켓을 주는 티켓(TGT)
- 티켓을 주는 티켓(TGT)
- 수신자가 네트워크 자원에 접근할 수 있도록 하는 티켓을 획득할 수 있게 하는 티켓
- TGT의 사용은 커버로스의 비상태성 설계의 핵심 부분
- 모든 TGT는 그 안에 유효기한이 내장되어 있다.
- 세션키, TGT 발행 대상 사용자 ID, 유효기간 등을 포함
- 세션키, TGT 발행 대상 사용자 ID, 유효기간 등을 포함
- 모든 TGT는 그 안에 유효기한이 내장되어 있다.
- 수용자에게 발송되기 전엔 K_{KDC}로 암호화되어 있음 → TGT는 KDC만 읽을 수 있음
→ KDC만이 알 수 있는 키로 암호화해 사용자에게 발송하는 것이 커버로스 특징
커버로스 로그인
- 커버로스 로그인 과정
- 앨리스는 패스워드를 입력
- 앨리스의 컴퓨터는 앨리스의 패스워드로부터 키 K_A를 유도해냄
* 여기서 앨리스와 KDC는 키 K_A를 공유 중 - 앨리스의 컴퓨터는 K_A를 이용하여 KDC로부터 앨리스의 TGT를 얻는다.
- 앨리스는 자신의 자격증명에 해당하는 TGT를 이용해 네트워크 자원에 안전하게 접근 가능
- 표현식
- 키 (K_A)는 앨리스의 패스워드로부터 K_A = h(앨리스의 패스워드)로 유도된다.
- KDC는 세션키 S_A를 생성한다.
- 앨리스의 컴퓨터는 S_A와 TGT를 얻기 위해 K_A를 복호화한 후 K_A를 잊어버린다.
- TGT = E(앨리스, S_A K_{KDC})
- 특징
- 장점 : 패스워드 입력 이후 모든 보안 절차가 앨리스에게 보이지 않음
- 단점 : 패스워드 입력 이후를 KDC 보안에 의존
커버로스 티켓
- 앨리스의 컴퓨터가 TGT를 받으면 네트워크 자원에 접근하기 위해 TGT를 이용 가능
- TGT 획득 후 앨리스가 밥에게 이야기한다고 가정
- 앨리스가 앨리스의 컴퓨터를 이용해 밥에게 대화를 요청한다.
- 앨리스의 컴퓨터는 재연 방지를 위해 설계된 “인증기호”와 함께 앨리스의 TGT를 KDC에 제시
- KDC는 TGT로부터 키 S_A를 얻고 이 키를 사용해 타임스탬프를 확인한다.
- 중요한 점 : 커버로스가 타임스탬프를 이용한다
- 중요한 점 : 커버로스가 타임스탬프를 이용한다
- KDC가 앨리스의 인증기호를 확인 후, “밥으로의 티켓”으로 응답한다.
- 앨리스의 컴퓨터는 밥의 컴퓨터를 통해 밥과 통신할 수 있도록 그 티켓을 이용한다.
- 표현식
- REQUEST = (TGT, 인증기호)
- authenticator = E(타임스탬프, S_A)
- REPLY = E(밥, K_{AB}, 밥으로의 티켓 S_A)
- 밥으로의 티켓 = E(앨리스, K_{AB} K_B)
- K_{AB} : 앨리스와 밥이 세션에 이용할 세션키
- 앨리스와 밥의 접촉 과정
- 밥으로의 티켓 = E(앨리스, K_{AB} K_B) ← 위 그림과 같음
- 인증기호 = E(타임스탬프, K_{AB})
- 밥이 K_{AB}를 얻기 위해 자신의 키 K_B로 “밥으로의 티켓”을 복호화하고 있음
- K_{AB}는 타임스탬프를 확인하는 데 사용
- K_{AB}는 앨리스와 밥 간의 대화에 대한 비밀성과 무결성을 위해 이용
커버로스보안
- 앨리스가 로그인할 때 KDC가 E(S_A, TGT;K_A)를 앨리스에게 전송
- TGT = E(앨리스, S_A;K_{KDC})
→ TGT가 이미 K_{KDC}로 암호화되어 있는데 키 K_A로 다시 암호화- 추가적인 노력을 하고서도 보안 측면에서 추가 이득을 제공하지 않음 ← 커버로스의 결함
- 키 K_{KDC}가 손상된다면 보안체계 전체가 마비됨
- TGT = E(앨리스, S_A;K_{KDC})
- 요청단계에서 앨리스는 익명을 유지
- TGT가 키 K_{KDC}로 암호화되어 있다는 사실에서 얻어지는 부수적 장점인 보안 기능
- 모든 TGT가 K_{KDC}로 암호화되어 있기 때문에 KDC는 복호화 때 누가 요청했는지 알 필요 X
- 커버로스는 상태를 기억하는 현상을 회피하는 데 있어 매우 유리함
- 앨리스가 “밥으로의 티켓”을 단순하게 밥에게 전달하려고 할 때 그 티켓을 앨리스에게로 보내는 이유
- 앨리스가 밥과 접촉하기도 전에 “밥으로의 티켓”이 밥에게 전송된다고 가정
- 키 K_{AB}와 그 키가 앨리스와의 거래에 이용되고 있다는 사실을 기억하고 있어야 함
→ 밥이 현재 상태를 유지해야 한다.
- 키 K_{AB}와 그 키가 앨리스와의 거래에 이용되고 있다는 사실을 기억하고 있어야 함
- 직접 전송되지 않는 경우
- 기억하고 있을 이유가 없다(비상태성)
- 기억하고 있을 이유가 없다(비상태성)
- 앨리스가 밥과 접촉하기도 전에 “밥으로의 티켓”이 밥에게 전송된다고 가정
- 앨리스가 “밥으로의 티켓”을 단순하게 밥에게 전달하려고 할 때 그 티켓을 앨리스에게로 보내는 이유
- 커버로스가 재연 공격을 막는 원리
- 인증기호에 사용된 타임스탬프 → 재연 방지 달성
- 재연 공격을 막기 위해 KDC는 가장 최근의 시간오차(약 5분) 간격 안에 수신된 모든 타임스탬프를 기억
커버로스 설계 대안
- 앨리스 컴퓨터가 패스워드를 기억하고 인증을 위해 사용할 수 있도록 하게 하는 것
- KDC가 필요 없어짐
- 사용자 수가 문제가 되고, 컴퓨터상의 패스워드가 보호받기 어려워짐
- 결과적으로 네트워크상의 모든 컴퓨터가 TTP가 되는 효과 발생
- 세션키를 TGT에 집어넣는 대신 KDC가 이를 기억하도록 하는 것
- TGT가 완전히 필요 없게 만듦
- KDC가 상태를 유지해야 하므로 가장 큰 장점인 비상태성 기능이 사라짐