호우동의 개발일지

Today :

article thumbnail

개요

  • 대칭키 암호를 이용하는 하나의 인증체계
  • 장점 : 공개키 기반구조(PKI)가 요구되지 않는다.
  • LAN과 같은 소규모 네트워크에서 사용할 수 있도록 설계
    • 인증 및 비밀성과 무결성이 요구되는 세션키를 생성하기 위해 이용
      • 원칙적으로 어떤 대칭암호든 커버로스로 이용 가능
        → 하지만, 오늘날에는 커버로스 대신 DES가 쓰임

  • 대칭키를 기반을 하지만 N명에 사용자에 대해 오직 N개의 키만 필요
    • 기존 대칭키 기반 인증체계에서는 N명의 사용자가 있으면 N(N-1)2 *  N^2 의 키 필요
      → 대칭키 기반 인증에서는 이용자와 키의 개수는 정비례 관계가 아님

    • 커버로스는 가능한 이유? 제3의 신뢰성 있는 기관(TTP)에 의존하기 때문
      • 커버로스 TTP는 시스템 보안의 핵심 구성요소 → 반드시 보호 필요 → 보안상 관건

 


키분배센터(KDC)

  • 커버로스 TTP 역할 수행 → 손상되면 시스템 전체 보안이 타격
  • KDC는 사용자들과 각각의 대칭키를 공유
    • 앨리스와는 대칭키 K_A, 밥과는 대칭키 K_B, 캐럴과는 대칭키 K_C 공유

  • 오직 KDC에게만 알려진 마스터 키 K_{KDC}를 가짐
    • 비상태성 상태를 유지하는 역할 → 거의 모든 서비스 거부 공격으로부터 보호
      • KDC의 비상태성은 커버로스의 핵심적인 설계목표로, 성공했음

 


KDC 티켓

  • KDC는 여러 형태의 티켓을 발행
    • 가장 중요한 티켓은 티켓을 주는 티켓(TGT)

  • 티켓을 주는 티켓(TGT)
    • 수신자가 네트워크 자원에 접근할 수 있도록 하는 티켓을 획득할 수 있게 하는 티켓
    • TGT의 사용은 커버로스의 비상태성 설계의 핵심 부분
      • 모든 TGT는 그 안에 유효기한이 내장되어 있다.
        • 세션키, TGT 발행 대상 사용자 ID, 유효기간 등을 포함

    • 수용자에게 발송되기 전엔 K_{KDC}로 암호화되어 있음 → TGT는 KDC만 읽을 수 있음
      KDC만이 알 수 있는 키로 암호화해 사용자에게 발송하는 것이 커버로스 특징

 


커버로스 로그인

  • 커버로스 로그인 과정
    앨리스 패스워드
    1. 앨리스는 패스워드를 입력
    2. 앨리스의 컴퓨터는 앨리스의 패스워드로부터 키 K_A를 유도해냄
      * 여기서 앨리스와 KDC는 키 K_A를 공유 중
    3. 앨리스의 컴퓨터는 K_A를 이용하여 KDC로부터 앨리스의 TGT를 얻는다.
    4. 앨리스는 자신의 자격증명에 해당하는 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 획득 후 앨리스가 밥에게 이야기한다고 가정
    커버로스 티켓
    1. 앨리스가 앨리스의 컴퓨터를 이용해 밥에게 대화를 요청한다.
    2. 앨리스의 컴퓨터는 재연 방지를 위해 설계된 “인증기호”와 함께 앨리스의 TGT를 KDC에 제시
    3. KDC는 TGT로부터 키 S_A를 얻고 이 키를 사용해 타임스탬프를 확인한다.
      • 중요한 점 : 커버로스가 타임스탬프를 이용한다

    4. KDC가 앨리스의 인증기호를 확인 후, “밥으로의 티켓”으로 응답한다.
    5. 앨리스의 컴퓨터는 밥의 컴퓨터를 통해 밥과 통신할 수 있도록 그 티켓을 이용한다.
  • 표현식
    • 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가 키 K_{KDC}로 암호화되어 있다는 사실에서 얻어지는 부수적 장점인 보안 기능
    • 모든 TGT가 K_{KDC}로 암호화되어 있기 때문에 KDC는 복호화 때 누가 요청했는지 알 필요 X

  • 커버로스는 상태를 기억하는 현상을 회피하는 데 있어 매우 유리함
    • 앨리스가 “밥으로의 티켓”을 단순하게 밥에게 전달하려고 할 때 그 티켓을 앨리스에게로 보내는 이유
      • 앨리스가 밥과 접촉하기도 전에 “밥으로의 티켓”이 밥에게 전송된다고 가정
        • 키 K_{AB}와 그 키가 앨리스와의 거래에 이용되고 있다는 사실을 기억하고 있어야 함
          → 밥이 현재 상태를 유지해야 한다.

      • 직접 전송되지 않는 경우
        • 기억하고 있을 이유가 없다(비상태성)

  • 커버로스가 재연 공격을 막는 원리
    • 인증기호에 사용된 타임스탬프 → 재연 방지 달성
    • 재연 공격을 막기 위해 KDC는 가장 최근의 시간오차(약 5분) 간격 안에 수신된 모든 타임스탬프를 기억

 


커버로스 설계 대안

  • 앨리스 컴퓨터가 패스워드를 기억하고 인증을 위해 사용할 수 있도록 하게 하는 것
    • KDC가 필요 없어짐
    • 사용자 수가 문제가 되고, 컴퓨터상의 패스워드가 보호받기 어려워짐
    • 결과적으로 네트워크상의 모든 컴퓨터가 TTP가 되는 효과 발생

  • 세션키를 TGT에 집어넣는 대신 KDC가 이를 기억하도록 하는 것
    • TGT가 완전히 필요 없게 만듦
    • KDC가 상태를 유지해야 하므로 가장 큰 장점인 비상태성 기능이 사라짐