본문으로 건너뛰기

15장. 사용자 인증

학습 목표

  • 식별(identification)과 검증(verification)의 차이를 이해한다.
  • 대칭/비대칭 암호를 사용한 원격 인증 기법을 제시한다.
  • Kerberos의 동작 원리와 v4/v5 차이를 설명한다.
  • 다중 영역(realm) 간 인증을 이해한다.
  • 연합 ID 관리(Federated Identity Management)의 필요성과 구조를 이해한다.
  • PIV 메커니즘의 사용자 인증 시스템 내 활용을 설명한다.

15.1 원격 사용자 인증 원칙

인증의 두 단계

  • 식별 (Identification): 보안 시스템에 식별자를 제시하는 단계
  • 검증 (Verification): 개체와 식별자 간의 결합을 증명하는 인증 정보를 제시·생성하는 단계

NIST 전자 인증 모델 (SP 800-63-2)

등록과 인증이 분리된 구조:

  1. 등록: 신청자 → 등록기관(RA) → 자격증명 서비스 제공자(CSP) → 토큰·자격증명 발급
  2. 인증: 구독자(claimant) → 검증자(verifier) → 신뢰 당사자(RP)에 인증 주장(assertion) 전달

인증의 네 가지 수단

수단예시
알고 있는 것비밀번호, PIN, 보안 질문
가지고 있는 것암호키, 스마트카드, 토큰
자신인 것 (정적 생체)지문, 망막, 얼굴
하는 것 (동적 생체)음성 패턴, 필기, 타이핑 리듬

상호 인증과 재전송 공격

상호 인증의 두 핵심 이슈: 기밀성 (비밀 정보의 암호화 전송)과 적시성 (재전송 공격 방어).

재전송 공격 유형:

  1. 단순 재전송 — 메시지를 복사·재전송
  2. 유효 시간 내 재전송 — 타임스탬프 윈도우 안에서 원본과 함께 도착
  3. 억제 후 재전송 — 원본을 차단하고 나중에 재전송 (탐지 불가)
  4. 역방향 재전송 — 대칭 암호 사용 시 송신자에게 되돌려 보내기

방어 수단:

수단장점단점
시퀀스 번호순서 보장각 상대방별 상태 유지 필요 → 오버헤드
타임스탬프상태 불필요클록 동기화 필요, suppress-replay 공격 위험
챌린지/응답 (논스)동기화 불필요비연결 환경에서는 핸드셰이크 오버헤드

단방향 인증

이메일 등 비대화형 통신에 사용. 송·수신자가 동시에 온라인일 필요가 없다. 메일 헤더는 평문으로 유지하되, 본문은 암호화하여 메일 핸들링 시스템이 복호화 키를 갖지 않도록 한다.


15.2 대칭 암호 기반 원격 인증

Needham-Schroeder 프로토콜

1.  AKDC:  IDAIDBN11.\; A \to \text{KDC}:\; ID_A \| ID_B \| N_1

2.  KDCA:  E(Ka,  [KsIDBN1E(Kb,  [KsIDA])])2.\; \text{KDC} \to A:\; E(K_a,\;[K_s \| ID_B \| N_1 \| E(K_b,\;[K_s \| ID_A])])

3.  AB:  E(Kb,  [KsIDA])3.\; A \to B:\; E(K_b,\;[K_s \| ID_A])

4.  BA:  E(Ks,  N2)4.\; B \to A:\; E(K_s,\;N_2)

5.  AB:  E(Ks,  f(N2))5.\; A \to B:\; E(K_s,\;f(N_2))

취약점

이전 세션키 KsK_s가 타협되면, 공격자 X가 3단계를 재전송하여 B를 속일 수 있다. B는 이전 세션키를 무한정 기억하지 않으므로 재전송을 탐지할 수 없다.

Denning의 개선 (타임스탬프 추가)

메시지 2, 3에 타임스탬프 TT를 추가:

2.  KDCA:  E(Ka,  [KsIDBTE(Kb,  [KsIDAT])])2.\; \text{KDC} \to A:\; E(K_a,\;[K_s \| ID_B \| T \| E(K_b,\;[K_s \| ID_A \| T])])

수신자는 ClockT<Δt1+Δt2|\text{Clock} - T| < \Delta t_1 + \Delta t_2를 확인하여 적시성을 검증한다. 단, 클록 동기화에 의존하므로 suppress-replay 공격 위험이 있다 — 송신자의 시계가 수신자보다 앞서 있으면, 공격자가 메시지를 가로챘다가 타임스탬프가 유효해지는 시점에 재전송할 수 있다.

Neuman-Stubblebine 프로토콜 (논스 기반)

타임스탬프 대신 논스만으로 적시성을 보장:

1.  AB:  IDANa1.\; A \to B:\; ID_A \| N_a

2.  BKDC:  IDBNbE(Kb,  [IDANaTb])2.\; B \to \text{KDC}:\; ID_B \| N_b \| E(K_b,\;[ID_A \| N_a \| T_b])

3.  KDCA:  E(Ka,  [IDBNaKsTb])E(Kb,  [IDAKsTb])Nb3.\; \text{KDC} \to A:\; E(K_a,\;[ID_B \| N_a \| K_s \| T_b]) \| E(K_b,\;[ID_A \| K_s \| T_b]) \| N_b

4.  AB:  E(Kb,  [IDAKsTb])E(Ks,  Nb)4.\; A \to B:\; E(K_b,\;[ID_A \| K_s \| T_b]) \| E(K_s,\;N_b)

TbT_bB 자신의 시계에서 생성되므로 네트워크 전체의 동기화가 불필요하다. TbT_b 만료 전까지 A는 티켓을 재사용하여 새 세션을 개시할 수 있다.

단방향 인증 (이메일)

1.  AKDC:  IDAIDBN11.\; A \to \text{KDC}:\; ID_A \| ID_B \| N_1

2.  KDCA:  E(Ka,  [KsIDBN1E(Kb,  [KsIDA])])2.\; \text{KDC} \to A:\; E(K_a,\;[K_s \| ID_B \| N_1 \| E(K_b,\;[K_s \| ID_A])])

3.  AB:  E(Kb,  [KsIDA])E(Ks,  M)3.\; A \to B:\; E(K_b,\;[K_s \| ID_A]) \| E(K_s,\;M)

수신자만 읽을 수 있고, 송신자가 A임을 인증하지만, 재전송 방지는 제한적이다.


15.3 Kerberos

동기

개방형 분산 환경에서 세 가지 위협: (1) 워크스테이션 사용자 위장, (2) 네트워크 주소 변조, (3) 도청·재전송.

요구사항: 안전성(secure), 신뢰성(reliable), 투명성(transparent), 확장성(scalable).

Kerberos는 대칭 암호만 사용하는 중앙집중 인증 서버 방식이다.

Kerberos v4 — 3단계 대화

(a) AS 교환 — TGT 획득 (로그온 당 1회):

1.  CAS:  IDCIDtgsTS11.\; C \to AS:\; ID_C \| ID_{tgs} \| TS_1

2.  ASC:  E(KC,  [KC,tgsIDtgsTS2Lifetime2Tickettgs])2.\; AS \to C:\; E(K_C,\;[K_{C,tgs} \| ID_{tgs} \| TS_2 \| \text{Lifetime}_2 \| \text{Ticket}_{tgs}])

Tickettgs=E(Ktgs,  [KC,tgsIDCADCIDtgsTS2Lifetime2])\text{Ticket}_{tgs} = E(K_{tgs},\;[K_{C,tgs} \| ID_C \| AD_C \| ID_{tgs} \| TS_2 \| \text{Lifetime}_2])

AS는 사용자 비밀번호에서 도출된 키 KCK_C로 응답을 암호화. 올바른 비밀번호를 입력해야만 복호화 가능 → 비밀번호가 평문으로 전송되지 않는다. 티켓에는 세션키 KC,tgsK_{C,tgs}가 포함되어 이후 TGS와의 통신에 사용된다.

(b) TGS 교환 — 서비스 티켓 획득 (서비스 유형별 1회):

3.  CTGS:  IDVTickettgsAuthenticatorC3.\; C \to TGS:\; ID_V \| \text{Ticket}_{tgs} \| \text{Authenticator}_C

4.  TGSC:  E(KC,tgs,  [KC,VIDVTS4TicketV])4.\; TGS \to C:\; E(K_{C,tgs},\;[K_{C,V} \| ID_V \| TS_4 \| \text{Ticket}_V])

AuthenticatorC=E(KC,tgs,  [IDCADCTS3])\text{Authenticator}_C = E(K_{C,tgs},\;[ID_C \| AD_C \| TS_3])

인증자(Authenticator)의 역할

티켓은 재사용 가능하지만, 도난 시 위험하다. 인증자는 1회용이며 매우 짧은 수명을 가진다. TGS는 티켓의 세션키로 인증자를 복호화하여, 티켓의 IDCID_C, ADCAD_C와 인증자의 값을 대조한다. 일치하면 티켓 제시자가 정당한 소유자임을 확인한다. "시각 TS3TS_3에, 나는 KC,tgsK_{C,tgs}를 사용한다"는 것이 인증자의 의미이다.

(c) 클라이언트/서버 교환 (서비스 세션별 1회):

5.  CV:  TicketVAuthenticatorC5.\; C \to V:\; \text{Ticket}_V \| \text{Authenticator}_C

6.  VC:  E(KC,V,  [TS5+1])(상호 인증 시)6.\; V \to C:\; E(K_{C,V},\;[TS_5 + 1]) \quad\text{(상호 인증 시)}

서버는 TS5+1TS_5 + 1을 반환하여 자신이 KC,VK_{C,V}를 알고 있음을 증명 → 서버 인증.

다중 영역 (Inter-realm) 인증

각 Kerberos **영역(realm)**은 하나의 Kerberos 서버와 등록된 클라이언트·서버로 구성된다.

다른 영역의 서버에 접근하려면:

1–2. 로컬 AS에서 TGT 획득 (일반 절차) 3–4. 로컬 TGS에서 원격 TGS용 티켓 획득 5–6. 원격 TGS에서 원격 서버용 티켓 획득 7. 원격 서버에 접근

NN개 영역에서 N(N1)/2N(N-1)/2개의 키 교환이 필요 → 확장성 제한.

Kerberos v5 개선점

환경적 개선:

항목v4 제한v5 해결
암호 알고리즘DES 고정암호 유형 태그 → 어떤 알고리즘이든 사용 가능
네트워크 프로토콜IP 주소 고정주소 유형·길이 태그 → 어떤 주소 체계든 수용
메시지 바이트 순서비표준 (송신자 결정)ASN.1 + BER → 명확한 바이트 순서
티켓 수명28×52^8 \times 5분 ≈ 21시간 최대시작·종료 시각 명시 → 임의 수명
인증 전달/위임불가FORWARDABLE/PROXIABLE 플래그로 지원
영역 간 인증O(N2)O(N^2) 키 교환계층적 경로 → 적은 관계로 가능

기술적 개선:

항목v4 문제v5 해결
이중 암호화티켓이 2회 암호화 → 낭비불필요한 암호화 제거
PCBC 모드비표준 DES 모드, 블록 교환 공격에 취약표준 CBC + 명시적 무결성 검사(체크섬/해시)
세션키 재사용같은 티켓 = 같은 세션키 → 재전송 위험서브세션키(Subkey) 협상 가능
비밀번호 공격AS 응답을 오프라인에서 시도 가능사전 인증(Pre-authentication) 지원

v5 티켓 플래그: INITIAL, PRE-AUTHENT, HW-AUTHENT, RENEWABLE, MAY-POSTDATE, POSTDATED, INVALID, PROXIABLE, PROXY, FORWARDABLE, FORWARDED

RENEWABLE 티켓

긴 수명의 위험과 짧은 수명의 오버헤드를 절충. 티켓에 개별 만료 시각최대 허용 만료 시각을 함께 포함하여, TGS에 갱신을 요청하면 새 만료 시각의 티켓을 발급한다. 도난 보고된 티켓은 갱신을 거부할 수 있다.


15.4 비대칭 암호 기반 원격 인증

상호 인증 (Denning 프로토콜)

인증 서버(AS)가 공개키 인증서를 제공:

1.  AAS:  IDAIDB1.\; A \to AS:\; ID_A \| ID_B

2.  ASA:  E(PRas,  [IDAPUaT])E(PRas,  [IDBPUbT])2.\; AS \to A:\; E(PR_{as},\;[ID_A \| PU_a \| T]) \| E(PR_{as},\;[ID_B \| PU_b \| T])

3.  AB:  E(PRas,  [IDAPUaT])E(PRas,  [IDBPUbT])E(PUb,  E(PRa,  [KsT]))3.\; A \to B:\; E(PR_{as},\;[ID_A \| PU_a \| T]) \| E(PR_{as},\;[ID_B \| PU_b \| T]) \| E(PU_b,\;E(PR_a,\;[K_s \| T]))

세션키 KsK_s는 A가 선택·암호화 → AS에 의한 노출 위험 없음. 타임스탬프 TT로 재전송 방지.

단방향 인증 (이메일)

기밀성만:

AB:  E(PUb,  Ks)E(Ks,  M)A \to B:\; E(PU_b,\;K_s) \| E(K_s,\;M)

인증 + 기밀성:

AB:  E(PUb,  [ME(PRa,  H(M))])A \to B:\; E(PU_b,\;[M \| E(PR_a,\;H(M))])

인증서 포함:

AB:  ME(PRa,  H(M))E(PRas,  [TIDAPUa])A \to B:\; M \| E(PR_a,\;H(M)) \| E(PR_{as},\;[T \| ID_A \| PU_a])


15.5 연합 ID 관리

ID 관리 (Identity Management)

사용자 신원 정보를 중앙에서 관리. 핵심 개념은 SSO(Single Sign-On) — 한 번의 인증으로 모든 네트워크 자원에 접근.

주요 서비스: 접점(Point of Contact), SSO 프로토콜 서비스, 신뢰 서비스, 키 서비스, ID 서비스, 인가, 프로비저닝, 관리.

ID 연합 (Identity Federation)

서로 다른 보안 도메인 간에 디지털 ID를 공유하여 한 번의 인증으로 여러 조직의 서비스에 접근. 중앙집중 제어 없이 합의된 표준과 상호 신뢰에 기반한 연합을 형성한다.

주요 표준:

표준역할
XML데이터 객체·구조 정의
SOAPXML 기반 원격 프로시저 호출
WS-SecuritySOAP 메시지에 보안 토큰을 부여하여 무결성·기밀성 제공
SAML인증 정보를 주장(assertion) 형태로 교환하는 XML 기반 언어

연합 시나리오 예시:

시나리오구조
계정 연결Workplace.com → Health.com: 사용자 ID를 안전하게 전달, 양쪽 도메인에 계정 존재
역할 기반Workplace.com → PartsSupplier.com: 역할(엔지니어/구매자)에 따라 접근 권한 결정, 개별 ID 불필요
체인형 웹 서비스구매 요청 → SOAP/XML 문서에 보안 토큰 포함 → 공급사 → 배송사로 체인

15.6 개인 신원 확인 (PIV)

FIPS 201-2 표준. 연방 직원/계약자의 신원 확인을 위한 스마트카드 기반 인증 시스템.

PIV 카드 구성

듀얼 인터페이스(접촉·비접촉) 카드에 다음을 저장: 소유자 사진, X.509 인증서, 암호키, 생체 데이터(지문·홍채), CHUID(카드소유자 고유 식별자).

보증 수준

수준요소
일부 신뢰 (Some)카드 리더 + PIN
높은 신뢰 (High)+ 지문 생체 비교 (무인 환경)
매우 높은 신뢰 (Very High)+ 공식 관찰자가 있는 환경에서 수행

PIV 인증 메커니즘

메커니즘PIN 필요보증 수준설명
CHUIDNo낮음서명된 CHUID 데이터 검증
Card Auth KeyNo낮음챌린지-응답으로 카드 자체 인증
BIOYes높음지문을 카드 내 생체 데이터와 비교 (무인)
BIO-AYes매우 높음위와 동일 + 공식 관찰자 참석
PKIYes매우 높음PIV 인증 개인키로 챌린지-응답 + 인증서 검증

PKI 기반 인증 절차

  1. 시스템이 카드 감지 → 애플리케이션 선택
  2. PIV Auth 인증서 요청 → 인증서 유효성 검증 (서명, 만료, 폐기)
  3. 소유자에게 PIN 입력 요청 → 카드 내 PIN과 비교
  4. 시스템이 논스 전송 → 카드가 PIV Auth 개인키로 서명
  5. 시스템이 PIV Auth 공개키로 서명 검증
3중 인증

이 시나리오는 세 가지 인증을 동시에 달성한다:

  1. 카드 소유 + PIN 지식 → 소유자 인증
  2. PIV Auth 인증서 → 카드 자격증명 검증
  3. 챌린지-응답 → 카드 자체 인증

주요 용어

한글영문
인증authentication
인증 서버authentication server (AS)
챌린지/응답challenge/response
자격증명credential
연합 ID 관리federated identity management
ID 관리identity management
KerberosKerberos
Kerberos 영역Kerberos realm
상호 인증mutual authentication
논스nonce
단방향 인증one-way authentication
개인 신원 확인Personal Identity Verification (PIV)
재전송 공격replay attack
신뢰 당사자relying party (RP)
억제-재전송 공격suppress-replay attack
티켓ticket
티켓 승인 서버ticket-granting server (TGS)
타임스탬프timestamp