Share via


Windows에서 암호 없는 인증을 위한 WebAuthn API

암호를 사용하면 악의적인 사용자의 데이터 침해 및 보안 공격에 취약해질 수 있습니다.

Microsoft는 오랫동안 암호 없는 인증을 지지해 왔으며, Windows 10(버전 1903)에서 W3C/FIDO2(Fast IDentity Online 2) Win32 WebAuthn 플랫폼 API를 도입했습니다.

Windows 11 버전 22H2부터 WebAuthn API는 ECC 알고리즘을 지원합니다.

무슨 의미인가요?

개발자 파트너와 개발자 커뮤니티는 WebAuthn API를 사용하여 Windows Hello 또는 FIDO2 보안 키를 사용하여 Windows 디바이스에서 애플리케이션에 대한 암호 없는 다단계 인증을 구현할 수 있습니다.

이러한 앱 또는 사이트의 사용자는 암호 없는 인증을 위해 WebAuthn API를 지원하는 모든 브라우저를 사용할 수 있습니다. 사용자는 어떤 브라우저를 사용하든 Windows에서 친숙하고 일관된 환경을 갖습니다.

개발자는 WebAuthn API를 사용하여 사용자에게 일관된 방식으로 FIDO2 인증 키를 지원해야 합니다. 또한 개발자는 상호 작용 및 관리 오버헤드를 방지하면서 FIDO2 사양(USB, NFC 및 BLE)에 따라 사용할 수 있는 모든 전송을 사용할 수 있습니다.

참고

이러한 API를 사용하는 경우 Windows 10 브라우저 또는 애플리케이션은 FIDO 관련 메시징을 위한 FIDO2 전송에 직접 액세스할 수 없습니다.

큰 그림

클라이언트에서 인증자 프로토콜 2(CTAP2) 및 WebAuthn은 강력한 인증 자격 증명에 대한 에코시스템을 만드는 추상화 계층을 정의합니다. 이 에코시스템에서 지정된 클라이언트 디바이스에서 실행되는 상호 운용 가능한 클라이언트(예: 네이티브 앱 또는 브라우저)는 표준화된 메서드를 사용하여 상호 운용 가능한 인증자와 상호 작용합니다. 상호 운용 가능한 인증자에는 클라이언트 디바이스(플랫폼 인증자)에 기본 제공되는 인증자 및 USB, BLE 또는 NFC 연결(로밍 인증자)을 사용하여 클라이언트 디바이스에 연결하는 인증자가 포함됩니다.

인증 프로세스는 사용자가 작업에 대한 동의를 나타내는 특정 사용자 제스처를 만들 때 시작됩니다. 클라이언트의 요청에 따라 인증자는 강력한 암호화 키를 안전하게 만들고 로컬에 저장합니다.

이러한 클라이언트별 키를 만든 후 클라이언트는 등록 및 인증에 대한 증명을 요청할 수 있습니다. 프라이빗 키가 사용하는 서명 유형은 만들어진 사용자 제스처를 반영합니다.

다음 다이어그램은 CTAP 및 WebAuthn이 상호 작용하는 방법을 보여줍니다. 연한 파란색 점선 화살표는 플랫폼 API의 특정 구현에 따라 상호 작용을 나타냅니다.

이 다이어그램은 WebAuthn API가 신뢰 당사자 및 CTAPI2 API와 상호 작용하는 방법을 보여 줍니다.

암호 없는 인증에 참여하는 구성 요소의 관계

결합된 WebAuthn/CTAP2 댄스에는 다음과 같은 문자 캐스트가 포함됩니다.

  • 클라이언트 디바이스. 클라이언트 디바이스는 지정된 강력한 인증을 호스트하는 하드웨어입니다. 노트북 및 휴대폰은 클라이언트 디바이스의 예입니다.

  • 신뢰 당사자 및 클라이언트. 신뢰 당사자는 강력한 자격 증명을 사용하는 웹 또는 네이티브 애플리케이션입니다. 신뢰 당사자는 클라이언트 디바이스에서 실행됩니다.

    • 신뢰 당사자인 네이티브 애플리케이션은 WebAuthn 클라이언트 역할을 하여 직접 WebAuthn 호출을 수행할 수도 있습니다.

    • 신뢰 당사자인 웹 애플리케이션은 WebAuthn API와 직접 상호 작용할 수 없습니다. 신뢰 당사자는 브라우저를 통해 거래를 중개해야 합니다.

    참고

    앞의 다이어그램은 SSO(단일 Sign-On) 인증을 표시하지 않습니다. FIDO 신뢰 당사자와 페더레이션 신뢰 당사자를 혼동하지 않도록 주의하세요.

  • WebAuthn API. WebAuthn API를 사용하면 클라이언트가 인증자를 요청할 수 있습니다. 클라이언트는 인증자에게 키를 만들고, 키에 대한 어설션을 제공하고, 기능을 보고하고, PIN을 관리하도록 요청할 수 있습니다.

  • CTAP2 플랫폼/호스트. 플랫폼(CTAP2 사양의 호스트라고도 함)은 인증자와 협상하는 클라이언트 디바이스의 일부입니다. 플랫폼은 요청의 원본을 안전하게 보고하고 CTAP2 CBOR(간결한 이진 개체 표현) API를 호출할 책임이 있습니다. 플랫폼이 CTAP2를 인식하지 못하는 경우 클라이언트 자체는 더 많은 부담을 줍니다. 이 경우 이전 다이어그램에 표시된 구성 요소와 상호 작용이 다를 수 있습니다.

  • 플랫폼 인증자. 플랫폼 인증자는 일반적으로 클라이언트 디바이스에 상주합니다. 플랫폼 인증자의 예로는 기본 제공 노트북 지문 판독기를 사용하는 지문 인식 기술과 기본 제공 스마트폰 카메라를 사용하는 얼굴 인식 기술이 있습니다. USB, NFC 또는 BLE과 같은 플랫폼 간 전송 프로토콜은 플랫폼 인증자에 액세스할 수 없습니다.

  • 로밍 인증자. 로밍 인증자는 여러 클라이언트 디바이스에 연결할 수 있습니다. 클라이언트 디바이스는 상호 작용을 협상하기 위해 지원되는 전송 프로토콜을 사용해야 합니다. 로밍 인증자의 예로는 USB 보안 키, BLE 지원 스마트폰 애플리케이션 및 NFC 지원 근접 카드가 있습니다. 로밍 인증자는 CTAP1, CTAP2 또는 두 프로토콜을 모두 지원할 수 있습니다.

많은 신뢰 당사자와 클라이언트는 단일 클라이언트 디바이스에서 많은 인증자와 상호 작용할 수 있습니다. 사용자는 WebAuthn을 지원하는 여러 브라우저를 설치할 수 있으며, 동시에 기본 제공 지문 판독기, 플러그 인 보안 키 및 BLE 지원 모바일 애플리케이션에 액세스할 수 있습니다.

상호 운용성

WebAuthn 및 CTAP2 이전에는 U2F 및 CTAP1이 있었습니다. U2F는 FIDO Alliance 유니버설 2단계 사양입니다. CTAP1을 말하고 U2F 자격 증명을 관리하는 많은 인증자가 있습니다. WebAuthn은 CTAP1 Authenticators와 상호 운용되도록 설계되었습니다. 신뢰 당사자에 FIDO2 전용 기능이 필요하지 않은 경우 WebAuthn을 사용하는 신뢰 당사자는 U2F 자격 증명을 계속 사용할 수 있습니다.

FIDO2 인증자는 이미 구현되었으며 WebAuthn 신뢰 당사자는 다음과 같은 선택적 기능이 필요할 수 있습니다.

다음 옵션은 나중에 유용할 수 있지만 아직 야생에서 관찰되지 않았습니다.

  • 트랜잭션 승인
  • 사용자 확인 인덱스(서버는 시간이 지남에 따라 로컬에 저장된 생체 인식 데이터가 변경되었는지 여부를 확인할 수 있습니다.)
  • 사용자 확인 방법(인증자가 정확한 메서드를 반환함)
  • 생체 인식 성능 범위(신뢰 당사자는 허용 가능한 거짓 수락 및 거짓 거부율을 지정할 수 있습니다).

Microsoft 구현

Microsoft FIDO2 구현은 수년 동안 제작되었습니다. 소프트웨어 및 서비스는 표준 규격 엔터티로 독립적으로 구현됩니다. Windows 10, 버전 1809(2018년 10월) 릴리스를 기준으로 모든 Microsoft 구성 요소는 최신 WebAuthn 후보 릴리스를 사용합니다. 사양이 최종적으로 비준되기 전에 규범적으로 변경되지 않을 것으로 예상되는 안정적인 릴리스입니다. Microsoft는 FIDO2를 배포하는 세계 최초의 국가 중 하나이기 때문에 인기 있는 타사 구성 요소의 일부 조합은 아직 상호 운용할 수 없습니다.

다음은 Microsoft 비트가 이동하는 위치의 대략적인 레이아웃입니다.

이 다이어그램은 WebAuthn API가 Microsoft 신뢰 당사자 및 CTAPI2 API와 상호 작용하는 방법을 보여 줍니다.

Microsoft의 WebAuthn 및 CATP2 API 구현

  • WebAuthn 신뢰 당사자: Microsoft 계정. Microsoft 계정에 익숙하지 않은 경우 Xbox, Outlook 및 기타 여러 사이트에 대한 로그인 서비스입니다. 로그인 환경에서는 클라이언트 쪽 JavaScript를 사용하여 Microsoft Edge를 트리거하여 WebAuthn API와 통신합니다. Microsoft 계정에는 인증자가 다음과 같은 특성이 있어야 합니다.

    • 키는 원격 서버가 아닌 인증자에 로컬로 저장됩니다.
    • 오프라인 시나리오가 작동합니다(HMAC를 사용하여 사용)
    • 사용자는 동일한 인증자에 여러 사용자 계정에 대한 키를 넣을 수 있습니다.
    • 필요한 경우 인증자는 클라이언트 PIN을 사용하여 TPM 잠금을 해제할 수 있습니다.

    중요

    Microsoft 계정에는 FIDO2 CTAP2 인증자에 고유한 기능 및 확장이 필요하므로 CTAP1(U2F) 자격 증명을 허용하지 않습니다.

  • WebAuthn 클라이언트: Microsoft Edge. Microsoft Edge는 이 문서에서 설명하는 WebAuthn 및 CTAP2 기능에 대한 사용자 인터페이스를 처리할 수 있습니다. 또한 AppID 확장을 지원합니다. Microsoft Edge는 CTAP1 및 CTAP2 인증자와 상호 작용할 수 있습니다. 상호 작용을 위한 이 scope U2F 및 FIDO2 자격 증명을 모두 만들고 사용할 수 있음을 의미합니다. 그러나 Microsoft Edge는 U2F 프로토콜을 말하지 않습니다. 따라서 신뢰 당사자는 WebAuthn 사양만 사용해야 합니다. Android의 Microsoft Edge는 WebAuthn을 지원하지 않습니다.

    참고

    WebAuthn 및 CTAP에 대한 Microsoft Edge 지원에 대한 신뢰할 수 있는 정보는 레거시 Microsoft Edge 개발자 설명서를 참조하세요.

  • 플랫폼: Windows 10, Windows 11. Windows 10 및 Windows 11 Win32 Platform WebAuthn API를 호스트합니다.

  • 로밍 인증자. Microsoft 로밍 인증자가 없다는 것을 알 수 있습니다. 그 이유는 강력한 인증을 전문으로 하는 제품의 강력한 에코시스템이 이미 있고 모든 고객(기업 또는 개인)은 보안, 사용 편의성, 배포 및 계정 복구에 대한 요구 사항이 다르기 때문입니다. 계속 증가하는 FIDO2 인증 인증자 목록에 대한 자세한 내용은 FIDO 인증 제품을 참조하세요. 목록에는 기본 제공 인증자, 로밍 인증자 및 디자인을 인증한 칩 제조업체도 포함됩니다.

개발자 참조

WebAuthn API는 Microsoft/webauthn GitHub 리포지토리에 설명되어 있습니다. FIDO2 인증자의 작동 방식을 이해하려면 다음 두 가지 사양을 검토합니다.