15장. 사용자 인증
학습 목표
- 식별(identification)과 검증(verification)의 차이를 이해한다.
- 대칭/비대칭 암호를 사용한 원격 인증 기법을 제시한다.
- Kerberos의 동작 원리와 v4/v5 차이를 설명한다.
- 다중 영역(realm) 간 인증을 이해한다.
- 연합 ID 관리(Federated Identity Management)의 필요성과 구조를 이해한다.
- PIV 메커니즘의 사용자 인증 시스템 내 활용을 설명한다.
15.1 원격 사용자 인증 원칙
인증의 두 단계
- 식별 (Identification): 보안 시스템에 식별자를 제시하는 단계
- 검증 (Verification): 개체와 식별자 간의 결합을 증명하는 인증 정보를 제시·생성하는 단계
NIST 전자 인증 모델 (SP 800-63-2)
등록과 인증이 분리된 구조:
- 등록: 신청자 → 등록기관(RA) → 자격증명 서비스 제공자(CSP) → 토큰·자격증명 발급
- 인증: 구독자(claimant) → 검증자(verifier) → 신뢰 당사자(RP)에 인증 주장(assertion) 전달
인증의 네 가지 수단
| 수단 | 예시 |
|---|---|
| 알고 있는 것 | 비밀번호, PIN, 보안 질문 |
| 가지고 있는 것 | 암호키, 스마트카드, 토큰 |
| 자신인 것 (정적 생체) | 지문, 망막, 얼굴 |
| 하는 것 (동적 생체) | 음성 패턴, 필기, 타이핑 리듬 |
상호 인증과 재전송 공격
상호 인증의 두 핵심 이슈: 기밀성 (비밀 정보의 암호화 전송)과 적시성 (재전송 공격 방어).
재전송 공격 유형:
- 단순 재전송 — 메시지를 복사·재전송
- 유효 시간 내 재전송 — 타임스탬프 윈도우 안에서 원본과 함께 도착
- 억제 후 재전송 — 원본을 차단하고 나중에 재전송 (탐지 불가)
- 역방향 재전송 — 대칭 암호 사용 시 송신자에게 되돌려 보내기
방어 수단:
| 수단 | 장점 | 단점 |
|---|---|---|
| 시퀀스 번호 | 순서 보장 | 각 상대방별 상태 유지 필요 → 오버헤드 |
| 타임스탬프 | 상태 불필요 | 클록 동기화 필요, suppress-replay 공격 위험 |
| 챌린지/응답 (논스) | 동기화 불필요 | 비연결 환경에서는 핸드셰이크 오버헤드 |
단방향 인증
이메일 등 비대화형 통신에 사용. 송·수신자가 동시에 온라인일 필요가 없다. 메일 헤더는 평문으로 유지하되, 본문은 암호화하여 메일 핸들링 시스템이 복호화 키를 갖지 않도록 한다.
15.2 대칭 암호 기반 원격 인증
Needham-Schroeder 프로토콜
이전 세션키 가 타협되면, 공격자 X가 3단계를 재전송하여 B를 속일 수 있다. B는 이전 세션키를 무한정 기억하지 않으므로 재전송을 탐지할 수 없다.
Denning의 개선 (타임스탬프 추가)
메시지 2, 3에 타임스탬프 를 추가:
수신자는 를 확인하여 적시성을 검증한다. 단, 클록 동기화에 의존하므로 suppress-replay 공격 위험이 있다 — 송신자의 시계가 수신자보다 앞서 있으면, 공격자가 메시지를 가로챘다가 타임스탬프가 유효해지는 시점에 재전송할 수 있다.
Neuman-Stubblebine 프로토콜 (논스 기반)
타임스탬프 대신 논스만으로 적시성을 보장:
는 B 자신의 시계에서 생성되므로 네트워크 전체의 동기화가 불필요하다. 만료 전까지 A는 티켓을 재사용하여 새 세션을 개시할 수 있다.
단방향 인증 (이메일)
수신자만 읽을 수 있고, 송신자가 A임을 인증하지만, 재전송 방지는 제한적이다.
15.3 Kerberos
동기
개방형 분산 환경에서 세 가지 위협: (1) 워크스테이션 사용자 위장, (2) 네트워크 주소 변조, (3) 도청·재전송.
요구사항: 안전성(secure), 신뢰성(reliable), 투명성(transparent), 확장성(scalable).
Kerberos는 대칭 암호만 사용하는 중앙집중 인증 서버 방식이다.
Kerberos v4 — 3단계 대화
(a) AS 교환 — TGT 획득 (로그온 당 1회):
AS는 사용자 비밀번호에서 도출된 키 로 응답을 암호화. 올바른 비밀번호를 입력해야만 복호화 가능 → 비밀번호가 평문으로 전송되지 않는다. 티켓에는 세션키 가 포함되어 이후 TGS와의 통신에 사용된다.
(b) TGS 교환 — 서비스 티켓 획득 (서비스 유형별 1회):
티켓은 재사용 가능하지만, 도난 시 위험하다. 인증자는 1회용이며 매우 짧은 수명을 가진다. TGS는 티켓의 세션키로 인증자를 복호화하여, 티켓의 , 와 인증자의 값을 대조한다. 일치하면 티켓 제시자가 정당한 소유자임을 확인한다. "시각 에, 나는 를 사용한다"는 것이 인증자의 의미이다.
(c) 클라이언트/서버 교환 (서비스 세션별 1회):
서버는 을 반환하여 자신이 를 알고 있음을 증명 → 서버 인증.
다중 영역 (Inter-realm) 인증
각 Kerberos **영역(realm)**은 하나의 Kerberos 서버와 등록된 클라이언트·서버로 구성된다.
다른 영역의 서버에 접근하려면:
1–2. 로컬 AS에서 TGT 획득 (일반 절차) 3–4. 로컬 TGS에서 원격 TGS용 티켓 획득 5–6. 원격 TGS에서 원격 서버용 티켓 획득 7. 원격 서버에 접근
개 영역에서 개의 키 교환이 필요 → 확장성 제한.
Kerberos v5 개선점
환경적 개선:
| 항목 | v4 제한 | v5 해결 |
|---|---|---|
| 암호 알고리즘 | DES 고정 | 암호 유형 태그 → 어떤 알고리즘이든 사용 가능 |
| 네트워크 프로토콜 | IP 주소 고정 | 주소 유형·길이 태그 → 어떤 주소 체계든 수용 |
| 메시지 바이트 순서 | 비표준 (송신자 결정) | ASN.1 + BER → 명확한 바이트 순서 |
| 티켓 수명 | 분 ≈ 21시간 최대 | 시작·종료 시각 명시 → 임의 수명 |
| 인증 전달/위임 | 불가 | FORWARDABLE/PROXIABLE 플래그로 지원 |
| 영역 간 인증 | 키 교환 | 계층적 경로 → 적은 관계로 가능 |
기술적 개선:
| 항목 | 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
긴 수명의 위험과 짧은 수명의 오버헤드를 절충. 티켓에 개별 만료 시각과 최대 허용 만료 시각을 함께 포함하여, TGS에 갱신을 요청하면 새 만료 시각의 티켓을 발급한다. 도난 보고된 티켓은 갱신을 거부할 수 있다.
15.4 비대칭 암호 기반 원격 인증
상호 인증 (Denning 프로토콜)
인증 서버(AS)가 공개키 인증서를 제공:
세션키 는 A가 선택·암호화 → AS에 의한 노출 위험 없음. 타임스탬프 로 재전송 방지.
단방향 인증 (이메일)
기밀성만:
인증 + 기밀성:
인증서 포함:
15.5 연합 ID 관리
ID 관리 (Identity Management)
사용자 신원 정보를 중앙에서 관리. 핵심 개념은 SSO(Single Sign-On) — 한 번의 인증으로 모든 네트워크 자원에 접근.
주요 서비스: 접점(Point of Contact), SSO 프로토콜 서비스, 신뢰 서비스, 키 서비스, ID 서비스, 인가, 프로비저닝, 관리.
ID 연합 (Identity Federation)
서로 다른 보안 도메인 간에 디지털 ID를 공유하여 한 번의 인증으로 여러 조직의 서비스에 접근. 중앙집중 제어 없이 합의된 표준과 상호 신뢰에 기반한 연합을 형성한다.
주요 표준:
| 표준 | 역할 |
|---|---|
| XML | 데이터 객체·구조 정의 |
| SOAP | XML 기반 원격 프로시저 호출 |
| WS-Security | SOAP 메시지에 보안 토큰을 부여하여 무결성·기밀성 제공 |
| 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 필요 | 보증 수준 | 설명 |
|---|---|---|---|
| CHUID | No | 낮음 | 서명된 CHUID 데이터 검증 |
| Card Auth Key | No | 낮음 | 챌린지-응답으로 카드 자체 인증 |
| BIO | Yes | 높음 | 지문을 카드 내 생체 데이터와 비교 (무인) |
| BIO-A | Yes | 매우 높음 | 위와 동일 + 공식 관찰자 참석 |
| PKI | Yes | 매우 높음 | PIV 인증 개인키로 챌린지-응답 + 인증서 검증 |
PKI 기반 인증 절차
- 시스템이 카드 감지 → 애플리케이션 선택
- PIV Auth 인증서 요청 → 인증서 유효성 검증 (서명, 만료, 폐기)
- 소유자에게 PIN 입력 요청 → 카드 내 PIN과 비교
- 시스템이 논스 전송 → 카드가 PIV Auth 개인키로 서명
- 시스템이 PIV Auth 공개키로 서명 검증
이 시나리오는 세 가지 인증을 동시에 달성한다:
- 카드 소유 + PIN 지식 → 소유자 인증
- PIV Auth 인증서 → 카드 자격증명 검증
- 챌린지-응답 → 카드 자체 인증
주요 용어
| 한글 | 영문 |
|---|---|
| 인증 | authentication |
| 인증 서버 | authentication server (AS) |
| 챌린지/응답 | challenge/response |
| 자격증명 | credential |
| 연합 ID 관리 | federated identity management |
| ID 관리 | identity management |
| Kerberos | Kerberos |
| 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 |