제조업 FIDO2·WebAuthn·Passkey 패스워드리스 인증 실무 완벽 가이드 — SMS OTP에서 피싱 방지 키까지 5단계 로드맵

중소·중견 한국 제조사가 FIDO2·WebAuthn·Passkey 패스워드리스 인증을 진단·하이브리드·전면 전환·IdP 통합·고도화까지 진짜 무사히 도입하는 5단계 로드맵. FIDO U2F·UAF·FIDO2(WebAuthn + CTAP2), Roaming/Platform Authenticator, Synced/Device-bound Passkey, RP·Authenticator·Attestation, Korea 행안부 패스워드리스 가이드, NIST AAL3, PSD2·EU CRA·EO 14028·금융권 의무 매핑 실무.

1. 왜 FIDO2·WebAuthn·Passkey인가 — SMS OTP의 종말

패스워드 + SMS OTP는 피싱·SIM 스왑·MitM·OTP-Bot에 모두 취약. Microsoft 2024 보고서: MFA 우회 공격(AiTM·Adversary-in-the-Middle) 분당 1,000+ 시도, SMS OTP 우회 성공률 30%+. 미국 NIST SP 800-63B(개정 6, 2024.8)는 SMS 기반 OTP를 Restricted(권장 X) 분류, Phishing-Resistant MFA 의무화 권고.

FIDO Alliance — 2012년 설립, Apple·Google·Microsoft·Samsung 등 250+ 회원. FIDO2 = WebAuthn(W3C 표준, 2019.3) + CTAP2(Client-to-Authenticator Protocol). 공개키 암호 기반 — RP(Relying Party)는 공개키만 보관, 사용자 디바이스가 비밀키 보유. 피싱 불가능: 인증 시 도메인 원본(origin) 검증 → 위조 도메인에서는 작동 X.

Passkey(2022.5 발표, 2024.2 W3C·FIDO 정식 표준) — FIDO2 자격증명을 디바이스 간 동기화(iCloud·Google Password Manager·Microsoft Authenticator)하거나 QR로 다른 디바이스에 임시 사용. Apple Sign-in with Passkey(2022.10), Google(2023.5), Microsoft(2024.5) 전면 지원.

법적 압박: 미국 EO 14028·OMB M-22-09 연방기관 피싱방지 MFA 의무, EU PSD2 SCA(Strong Customer Authentication) 의무, EU CRA 디지털제품 인증 강화, 한국 행안부 패스워드리스 인증 가이드라인(2024.5) — 공공기관 단계 적용, 금융권 ISMS-P·전자금융감독규정 강화.

2. FIDO 표준 진화·성숙도

표준발표특징
FIDO U2F (CTAP1)2014보조 인증(패스워드 + USB Key)
FIDO UAF2014모바일 패스워드리스
FIDO2 (WebAuthn + CTAP2)2019웹 패스워드리스, Roaming + Platform
Passkey (Multi-device)2022동기화 자격증명, 디바이스 간
Device-bound Passkey2024하드웨어 결속, 최고 보증 (AAL3)
Cross-device QR + BLE2023다른 디바이스 임시 사용

Authenticator 종류:

  • Roaming Authenticator: USB·NFC·BLE 보안키 (YubiKey, Google Titan, Feitian)
  • Platform Authenticator: 디바이스 내장 (Touch ID, Face ID, Windows Hello, Android 지문)

Attestation 모드:

  • None: 검증 없음 (B2C·일반)
  • Indirect: 익명화 (배치 인증서)
  • Direct: 제조사·모델 직접 (정부·금융)
  • Enterprise: 시리얼 번호까지 (군·핵·항공)

3. 핵심 컴포넌트·동작 흐름

컴포넌트 4개:

  • Relying Party(RP): 서비스(웹사이트·앱) — rp.id = 도메인
  • WebAuthn API: 브라우저(Chrome·Safari·Firefox·Edge) 노출 JS API
  • Client(CTAP2): OS·브라우저 — Authenticator와 통신
  • Authenticator: 키 생성·저장·서명 (Platform 또는 Roaming)

등록(Registration) 흐름:

  1. RP가 challenge 생성·전송
  2. 브라우저 navigator.credentials.create() 호출
  3. Authenticator가 키 쌍 생성, 비밀키 보관, 공개키 + Attestation 반환
  4. RP가 검증 후 사용자 ID와 공개키 매핑 저장

인증(Authentication) 흐름:

  1. RP가 challenge 생성
  2. 브라우저 navigator.credentials.get() 호출
  3. Authenticator가 사용자 검증(생체·PIN) 후 비밀키로 서명
  4. RP가 공개키로 서명 검증·세션 발급

4. Stage 1 — 현황 진단·파일럿 (1~2개월)

현황 진단:

  • 현재 인증 방식 매핑 — 패스워드·SMS OTP·OTP 앱(TOTP)·하드웨어 OTP·이메일 매직링크
  • 사용자 분류 — 직원(IAM) / 고객(B2C) / 파트너(B2B)
  • 디바이스 분포 — Windows·Mac·iOS·Android·Linux 비율
  • 브라우저 분포 — Chrome·Safari·Edge·Firefox (대부분 FIDO2 지원, IE 미지원)
  • 컴플라이언스 요구 — EO 14028·PSD2·ISMS-P·CMMC

파일럿 시나리오:

  • 소규모 그룹(임직원 1050명) Roaming Key (YubiKey 5C NFC 평균 710만원) 발급
  • 또는 Platform Authenticator만(Touch ID·Windows Hello)
  • 6~8주 운영 후 사용성·문제점 수집

RP 라이브러리 선택:

  • Node.js: @simplewebauthn/server (가장 활성)
  • Java: webauthn4j, Yubico java-webauthn-server
  • Python: py_webauthn
  • Go: go-webauthn/webauthn
  • .NET: Fido2NetLib
  • PHP: web-auth/webauthn-lib

5. Stage 2 — IdP·SSO 통합 (2~4개월)

IdP가 FIDO2를 지원하면 직접 구현 없이 적용 가능 — 보통 권장.

주요 IdP 지원:

  • Microsoft Entra ID(Azure AD): FIDO2 Security Key(2019~), Passkey Preview(2024~), Windows Hello for Business 통합
  • Okta: WebAuthn(2019~), Okta FastPass(2023~) 자체 Passkey
  • Google Workspace: 보안 키 + Passkey(2023~)
  • Ping Identity: PingOne MFA Passkey
  • ForgeRock: WebAuthn 노드
  • Auth0: Customer Identity Passkey
  • AWS IAM Identity Center: FIDO2(2024.4)

도입 순서:

  1. 고권한 사용자 우선: Admin·CISO·재무·인사 → Roaming Key 의무
  2. 일반 직원 단계 확대 — Platform Authenticator 활용
  3. B2B 파트너 포털 — 외주·협력업체 FIDO2 강제
  4. B2C 고객 — Passkey 우선(친숙도·디바이스 결속 X)

기존 시스템 점진 교체:

  • 모든 SaaS는 SSO(SAML·OIDC) → IdP 통합 → 한 곳에서 FIDO2 적용
  • 레거시 앱은 IdP Federation Gateway·헤더 인증으로 우회

6. Stage 3 — 자체 RP 구현 (필요 시) (3~6개월)

자체 구현 필요 케이스: IdP 미사용, 고객 직접 인증, 특수 요구.

WebAuthn Server 구현 핵심:

// Node.js + SimpleWebAuthn 예시
import { generateRegistrationOptions, verifyRegistrationResponse } from '@simplewebauthn/server';

// 등록 옵션 생성
const options = await generateRegistrationOptions({
  rpName: 'CONTIS',
  rpID: 'contis.co.kr',
  userID: Buffer.from(user.id),
  userName: user.email,
  attestationType: 'none',
  authenticatorSelection: {
    residentKey: 'required',           // Passkey (discoverable)
    userVerification: 'required',       // 생체·PIN 강제
    authenticatorAttachment: 'platform' // 또는 'cross-platform'
  },
  excludeCredentials: existingCredentials,
});
// challenge를 세션에 저장
// 클라이언트로 options 전송

// 응답 검증
const verification = await verifyRegistrationResponse({
  response: clientResponse,
  expectedChallenge: session.challenge,
  expectedOrigin: 'https://contis.co.kr',
  expectedRPID: 'contis.co.kr',
});
if (verification.verified) {
  await db.credentials.create({
    userId: user.id,
    credentialID: verification.registrationInfo.credentialID,
    publicKey: verification.registrationInfo.credentialPublicKey,
    counter: verification.registrationInfo.counter,
    transports: clientResponse.response.transports,
  });
}

클라이언트(브라우저):

const cred = await navigator.credentials.create({ publicKey: options });
// cred를 서버 전송

중요 보안 체크:

  • origin 검증 (서버에서 expected와 일치)
  • rpID hash 검증 (Authenticator Data의 RP ID Hash)
  • counter(signature counter) 증가 검증 — 복제 탐지
  • User Verification(UV) 비트 확인 — 생체·PIN 사용 강제
  • Attestation 검증(필요 시) — FIDO Metadata Service(MDS) 활용

FIDO Metadata Service(MDS): 인증된 Authenticator 모델·취약점 DB 무료 제공, RP는 알려진 취약 모델 차단 가능.

7. Stage 4 — Passkey 전환·UX 최적화 (4~6개월)

Passkey 도입 전략:

  • Synced Passkey: 디바이스 간 동기화(iCloud·Google) — 사용성 최고, 복구 쉬움 — 일반 사용자
  • Device-bound Passkey: 디바이스 결속 — 최고 보안 — Admin·금융

복구·이전 시나리오:

  • 디바이스 분실 — Passkey 동기화로 자동 복구
  • 모든 디바이스 분실 — 백업 코드·이메일·전화 복구 (취약점 — 별도 강력 통제)
  • 신규 디바이스 등록 — 기존 디바이스로 QR 인증 또는 백업 코드

Conditional UI (Passkey Autofill):

  • 로그인 페이지에 자동 Passkey 제안
  • iOS Safari·Android Chrome 지원
  • ID 입력 없이 디바이스 선택 → 생체 인증 → 로그인

Hybrid Transport (Cross-device):

  • 데스크탑에 모바일 Passkey 사용 — QR 코드 + BLE 근접 확인
  • iPhone Passkey로 Windows Chrome 로그인 가능

UX 주의:

  • “Passkey를 만들까요?” 너무 일찍 띄우면 거부
  • 로그인 성공 시 또는 보안 설정 페이지에서 권유
  • 분실 대비 백업 인증 수단 1개 이상 유지
  • 명확한 라벨 — “지문으로 더 빠르게 로그인” 등

8. Stage 5 — AAL3·고도화·NIST 800-63B (지속)

NIST SP 800-63B AAL3 (최고 보증 수준):

  • Hardware-based Authenticator + Verifier Impersonation Resistance
  • = Device-bound FIDO2 Security Key (Synced Passkey는 AAL2)
  • 정부 핵심 시스템·금융 거래 일정 금액 이상 적용

Verifier Impersonation Resistance:

  • FIDO2는 origin·RP ID 검증으로 본질적으로 충족
  • SMS OTP·TOTP는 미충족

Phishing-Resistant MFA 인증된 Authenticator:

  • FIDO2 Security Key
  • Smart Card (PIV·CAC)
  • Windows Hello for Business (Hardware-backed)
  • 비고: TOTP·Push 인증은 피싱 가능

고도화:

  • Continuous Authentication: 세션 중 행동 분석·디바이스 상태 추가 검증
  • Risk-based Authentication: 위험 점수에 따라 추가 인증 요구
  • CIBA(Client-Initiated Backchannel Authentication): 콜센터·POS·키오스크에서 푸시 인증

거버넌스:

  • Passkey 정책 문서 — 등록·복구·이전·해지
  • 사용자 교육 — 분기 1회 보안 알림
  • 분기 KPI — Passkey 등록률·MFA 우회 시도·Key 분실률

9. 비용·ROI

항목비용
YubiKey 5C NFC(직원당)710만 (이중화 2개 = 1520만)
Microsoft Entra ID P1 (직원당/월)$6 (FIDO2 포함)
Auth0 Customer Passkey$0.023~/MAU
자체 구현 — 개발(2~6개월)3천만~3억
사용자 교육·전환 캠페인1천~5천만
합계 (직원 100명)3천~3억(연) + 키 비용

ROI:

  • 피싱 100% 차단 (origin 검증) — 평균 피싱 손실 한국 평균 30~50억(IBM 2024)
  • 패스워드 재설정 헬프데스크 비용 절감 — Forrester $70/회, 평균 25% 감소
  • SMS OTP 비용 0 — 연간 수천만원 SMS 비용 제거
  • 로그인 시간 50%+ 단축 → 생산성 향상
  • 사이버보험 피싱방지 MFA 도입 시 15~25% 할인
  • ISMS-P·EU CRA·PSD2 동시 충족 — 컴플라이언스 비용 절감

10. 자가 점검 — FIDO2·Passkey 도입 상태

  • 현재 인증 방식 매핑(패스워드·SMS·TOTP·FIDO2 비율)
  • NIST AAL 수준 정의(고권한 = AAL3, 일반 = AAL2)
  • 컴플라이언스 요구 분석(EO 14028·PSD2·ISMS-P·CMMC)
  • IdP FIDO2 지원 확인(Entra ID·Okta·Auth0 등)
  • 파일럿 그룹 운영(임원·IT·재무)
  • 고권한 Roaming Key 의무화
  • 일반 직원 Platform Authenticator
  • B2C Passkey UX 통합
  • Conditional UI / Autofill
  • 분실·복구 절차 문서화
  • FIDO MDS 통합 — 취약 모델 차단
  • origin·counter·UV 검증 확인
  • SMS OTP 폐지 로드맵
  • 사용자 교육 분기
  • KPI — 등록률·MFA 우회·키 분실
  • Risk-based·Continuous Auth 검토

11. 마무리 — 패스워드 시대의 종말

FIDO2·WebAuthn·Passkey는 ① 현황 진단·파일럿, ② IdP 통합, ③ 자체 RP 구현(필요 시), ④ Passkey 전환·UX 최적화, ⑤ AAL3·고도화 — 5단계로 점진 도입한다. 패스워드는 향후 10년 내 사라질 운명, 지금 도입하면 피싱·SMS 우회·랜섬웨어 초기 침투 90%+ 차단, ISMS-P·EU CRA·PSD2·EO 14028 자동 충족된다.

통합 사이클