WebAuthn
WebAuthn![]() USB 인터페이스를 갖춘 로밍 암호화 하드웨어 인증 프로그램 | |
줄임말 | WebAuthn |
---|---|
상황 | W3C 권장사항(REC) |
시작한 해 | 2016년 5월 31일( |
초판 | 2016년 5월 31일( |
최신 버전 | 레벨 2 권장 사항 2021년 4월 21일 ( |
프리뷰 버전 | 레벨 3()FPWD 2021년 12월 15일( |
조직 | FIDO2 프로젝트(FIDO Alliance 및 W3C) |
위원회. | 웹 인증 작업 그룹 |
에디터 | 현재 에디터
이전 에디터
|
기본 규격 |
|
도메인 | 인증 |
Web Authentication(WebAuthn)은 World Wide Web Consortium(W3C)[1][2][3]에 의해 공개된 웹 표준입니다.WebAuthn은 FIDO [4]Alliance의 지도 아래 FIDO2 프로젝트의 핵심 구성요소입니다.이 프로젝트의 목표는 공개 키 암호화를 사용하여 웹 기반 애플리케이션 및 서비스에 대한 사용자 인증을 위한 인터페이스를 표준화하는 것입니다.
클라이언트 측에서는 WebAuthn에 대한 지원을 다양한 방법으로 구현할 수 있습니다.기본적인 암호화 조작은 오센티케이터에 의해 실행됩니다.오센티케이터는 주요 자료의 관리 방법에 대해 대부분 독립적입니다.이를 통해 프로세서의 신뢰할 수 있는 실행 환경 또는 Trusted Platform Module(TPM)을 사용하여 소프트웨어만으로 WebAuthn 지원을 구현할 수 있습니다.또한 기밀 암호화 작업은 USB, Bluetooth Low Energy 또는 근거리 통신을 통해 액세스할 수 있는 로밍 하드웨어 인증자에게 오프로드될 수도 있습니다.온(NFC)로밍 하드웨어 오센티케이터는 FIDO Client to Authenticator Protocol(CTAP)[5]에 준거하고 있기 때문에 WebAuthn은 FIDO Universal 2nd Factor(U2F) [6]규격과 실질적으로 하위 호환됩니다.
기존 U2F와 마찬가지로 Web Authentication은 검증자 위장, 즉 액티브한 man-in-the-middle [7]공격에 대한 내성이 있지만 U2F와 달리 WebAuthn은 기존의 패스워드를 필요로 하지 않습니다.게다가 호스트 머신상에서 실행되고 있는 소프트웨어에는, 개인 키 재료가 액세스 할 수 없기 때문에, 로밍 하드웨어 인증자는 말웨어에 대한 내성이 있습니다.
WebAuthn 레벨 1 표준은 2019년 [8][9]3월 4일 W3C 권고로 발표되었다.레벨 2 사양은 [10]개발 중입니다.레벨 3 사양은 현재 First Public Working Draft(FPWD)입니다.
배경
FIDO2는 FIDO Universal 2nd Factor(U2F) 레거시 프로토콜의 후속입니다.FIDO2 인증에는 U2F의 모든 이점이 있습니다.주요 차이점은 FIDO2 오센티케이터는 싱글 팩터(패스워드리스) 오센티케이터로도 사용할 수 있다는 것입니다.U2F 프로토콜은 기존 사용자 이름/비밀번호 기반 로그인 흐름을 강화하기 위한 두 번째 요소로 기능하도록 설계되었습니다.
FIDO2 오센티케이터는 싱글팩터 모드 또는 멀티팩터 모드 중 하나로 사용할 수 있습니다.싱글 팩터 모드에서는 오센티케이터는 보통 간단한 버튼 누름으로 구성된 사용자 존재 테스트에 의해 활성화됩니다.멀티 팩터 모드에서는, 오센티케이터(사용하고 있는 것)가 유저 검증을 실행합니다.오센티케이터의 기능에 따라서는,[12] 다음과 같은 것이 있습니다.
어느 경우든 오센티케이터는 디바이스 상에서 로컬로 사용자 검증을 수행합니다.오센티케이터에 저장된 비밀 또는 바이오메트릭은 웹 사이트에서 [13]공유되지 않습니다.또한 사용자 검증이 정상적으로 완료된 후 인증자가 인증요청 서비스에 사용할 올바른 암호키 소재를 선택하기 때문에 하나의 비밀 또는 바이오메트릭이 모든 웹사이트에서 작동합니다.
오센티케이터의 비밀과 바이오메트릭은 스마트폰에서 사용하는 것과 마찬가지로 함께 사용할 수 있습니다.예를 들어 스마트폰에 편리하게 액세스할 수 있도록 지문을 사용하지만 경우에 따라 지문 액세스가 실패하여 PIN을 사용할 수 있습니다.
개요
이전 FIDO U2F와 마찬가지로 W3C Web Authentication(WebAuthn)에는 웹 사이트, 웹 브라우저 및 [1]오센티케이터가 포함되어 있습니다.
- 웹사이트는 WebAuthn에 준거하고 있다.
- 브라우저가 준거 WebAuthn 클라이언트입니다.
- 오센티케이터는 FIDO2 오센티케이터입니다.즉, WebAuthn 클라이언트와 호환성이 있는 것으로 간주됩니다.
WebAuthn은 청구인이 WebAuthn Relending Party라고 불리는 검증자에게 FIDO2 오센티케이터의 소유와 제어를 증명하는 방법을 지정합니다.인증 프로세스는 WebAuthn Client라고 불리는 엔티티에 의해 중재됩니다.이 엔티티는 준거 웹 브라우저에 지나지 않습니다.
인증
그림에서는 오센티케이터가 로밍 하드웨어 오센티케이터라고 가정합니다(기타 옵션에 대해서는, 이하를 참조해 주세요).어느 경우든 오센티케이터는 공개키 암호화를 사용하여 WebAuthn Reling Party를 대상으로 한 인증 어설션에 서명하는 멀티팩터 암호화 오센티케이터입니다.오센티케이터가 사용자 검증에 PIN을 사용하는 경우 오센티케이터 자체는 사용자가 가지고 있는 것이며 PIN은 사용자가 알고 있는 것입니다.
WebAuthn 인증 [14]플로우를 시작하기 위해 WebAuthn Relending Party는 JavaScript를 통해 WebAuthn 클라이언트(브라우저)에 그 의도를 나타냅니다.WebAuthn 클라이언트는 브라우저에 구현된 JavaScript API를 사용하여 오센티케이터와 통신합니다.로밍 오센티케이터는 FIDO Client to Authenticator Protocol에 준거합니다.
WebAuthn 에서는 로밍 하드웨어 오센티케이터가 반드시 필요한 것은 아닙니다.또는 소프트웨어 오센티케이터(스마트폰 등에 실장) 또는 플랫폼 오센티케이터(WebAuthn 클라이언트 디바이스에 직접 실장된 오센티케이터)를 사용할 수 있습니다.플랫폼 인증자의 관련 예로는 Windows[15] Hello 및 Android 운영 [16]체제가 있습니다.
이 흐름은 PIN 기반의 사용자 검증에 의존합니다.사용성 면에서는 일반적인 패스워드 인증보다 약간 개선된 수준에 불과합니다.실제로 사용자 검증을 위해 바이오메트릭스를 사용하면 WebAuthn의 [citation needed]사용성을 개선할 수 있습니다.그러나 바이오메트릭스의 배후에 있는 물류는 아직 잘 알려져 있지 않다.바이오메트릭 데이터는 패스워드와 같은 방식으로 네트워크를 통해 전송되지만 그렇지 않다는 [17][18]오해가 사용자들 사이에서 여전하다.
등록.
WebAuthn Relending Party가 브라우저로부터 서명된 인증 어설션을 수신하면, 어설션의 디지털 서명은, 유저의 신뢰할 수 있는 공개 키를 사용해 검증됩니다.WebAuthn Relending Party는 애초에 그 신뢰할 수 있는 공개 키를 어떻게 입수합니까?
사용자의 공개 키를 얻기 위해 WebAuthn Relending Party는 위의 인증 흐름과 매우 유사한 WebAuthn 등록[19] 흐름을 시작합니다.주요 차이점은 인증자가 증명 개인 키로 증명문에 서명한다는 것입니다.서명된 증명문에는 WebAuthn Relending Party가 서명된 인증 어설션을 확인하는 데 최종적으로 사용하는 공용 키의 복사본이 포함되어 있습니다.증명문에는 인증자 자체를 설명하는 메타데이터도 포함되어 있습니다.
증명문의 디지털 서명은 해당 인증자의 특정 모델에 대한 신뢰할 수 있는 증명 공개 키로 검증됩니다.WebAuthn Reling Party가 신뢰할 수 있는 증명 공개 키의 저장소를 가져오는 방법은 지정되지 않았습니다.하나의 옵션은 FIDO 메타데이터 [20]서비스를 사용하는 것입니다.
JavaScript에 지정된 증명 유형에 따라 신뢰 모델이 결정됩니다.예를 들어, 최초 사용 시 신뢰 모델이 기본적으로 신뢰되는 자가 확인이라는 증명 유형이 필요할 수 있습니다.
지지하다
WebAuthn Level 1 표준은 [8][9][21]2019년 3월 4일 Web Authentication Working Group에 의해 W3C 권장사항으로 발행되었습니다.WebAuthn은 Google Chrome, Mozilla Firefox, Microsoft Edge, Apple[9] Safari 및 [22]Opera에서 지원됩니다.
Google Chrome의 데스크톱 버전은 버전 [23]67부터 WebAuthn을 지원했습니다.이전 FIDO U2F 표준을 완전히 지원하지 않았던 Firefox는 2018년 [24]5월 9일에 출시된 Firefox 버전 60에 WebAuthn을 포함 및 활성화했습니다.Microsoft Edge(Build 17682)의 초기 Windows Insider 릴리스에서는 Windows Hello 및 외부 보안 [25]키와 함께 작동하는 WebAuthn 버전이 구현되었습니다.
기존 FIDO U2F 보안 키는 WebAuthn 표준과 대부분 호환되지만 WebAuthn은 오래된 인증자가 저장할 [1]수 없는 계정별 "사용자 핸들" 식별자를 참조하는 기능을 추가했습니다.2018년 [26]4월 10일 발표된 유비코의 2세대 보안키는 FIDO2와 호환되는 최초의 인증업체 중 하나입니다.
"Goldengate"라고 불리는[28] 첫 번째 보안 레벨 2 인증 FIDO2 키는 1년 후인 2019년 [27]4월 8일에 eWBM에 의해 발표되었습니다.
Dropbox는 2018년 [29]5월 8일 WebAuthn 로그인(세컨드 팩터) 지원을 발표했습니다.
애플은 Face ID 또는 Touch ID를 2020년 [30]6월 24일 사파리와 함께 WebAuthn 플랫폼 인증자로 사용할 수 있다고 발표했다.
API
WebAuthn은 W3C의 보다 일반적인 credential 관리의 확장을 구현합니다.API는 사용자 자격 증명을 교환할 때 웹 사이트와 웹 브라우저 간의 상호 작용을 공식화하는 시도입니다.Web Authentication[31][32] API는 credential 관리를 확장합니다.navigator.credentials.create()
그리고.navigator.credentials.get()
JavaScript 메서드를 사용하여publicKey
파라미터를 지정합니다.그create()
공개키 오센티케이터를 사용자 계정에 관련짓기 위한 일부로서 등록하기 위해 사용됩니다(초기 계정 생성 시 갱신되지만 기존 계정에 새로운 보안 디바이스를 추가할 때 갱신될 가능성이 높아집니다).get()
인증에는 방식(로그인 시 등)이 사용됩니다.
브라우저가 WebAuthn을 지원하는지 여부를 확인하려면 스크립트는 이 스크립트에서window.PublicKeyCredential
인터페이스가 정의되어 있습니다.에 더하여PublicKeyCredential
또, 표준에서는AuthenticatorResponse
,AuthenticatorAttestationResponse
,그리고.AuthenticatorAssertionResponse
다양한 사전 및 기타 데이터 유형 외에 인터페이스도 사용할 수 있습니다.
API는 초기 생성을 요청하는 것 외에는 개인 키에 대한 직접 액세스 또는 조작을 허용하지 않습니다.
접수처
2018년 8월 Paragon Initiative Enterprise는 WebAuthn 표준에 대한 보안 감사를 실시했습니다.구체적인 악용은 찾을 수 없었지만,[33] 기본 암호화가 표준에서 사용되고 의무화되는 방식에 몇 가지 심각한 약점을 드러냈습니다.
비판의 요점은 과거에 다른 암호화 시스템에서 문제가 됐던 다음 두 가지 잠재적인 문제를 중심으로 합니다.따라서 같은 종류의 공격에 희생되지 않기 위해서는 피해야 합니다.
- WebAuthn은 COSE(RFC 8152)의 필수 사용을 통해 PKCS1v1.5 패딩에 의한 RSA도 지원합니다.이 패딩 스킴은 적어도 20년간 특정 공격에 취약한 것으로 알려져 있으며 과거 RSA 암호 시스템의 다른 프로토콜 및 구현에서 성공적으로 공격을 받았습니다.WebAuthn의 맥락에서 주어진 조건 하에서 이용하기는 어렵지만, 보다 안전한 암호화 프리미티브와 패딩 스킴이 있다는 것을 고려하면 이는 여전히 잘못된 선택이며 암호학자들 사이에서 더 이상 모범 사례로 간주되지 않습니다.
- FIDO Alliance는 비대칭 암호 [34]체계 ECDAA를 기반으로 표준화되었습니다.이것은 타원 곡선에 기초한 직접 익명 증명 버전이며 WebAuthn의 경우 핸들의 글로벌 상관관계를 허용하지 않기 때문에 인증자의 무결성을 검증하는 동시에 사용자의 프라이버시를 보호하는 데 사용됩니다.단, ECDAA는 지난 수십 년 동안 타원 곡선 암호 분야에서 연구한 일부 교훈을 포함하지 않는다. 선택한 곡선은 이러한 유형의 곡선에 고유한 보안 결함을 가지고 있기 때문에 보안 보장이 상당히 감소하기 때문이다.또한 ECDAA 표준은 무작위 비결정론적 서명을 포함하며, 이는 이미 과거에 문제가 된 바 있다.
Paragon Initiative Enterprises는 또한 제안서가 사전에 공개되지 않았고 경험이 풍부한 암호학자들이 제안과 피드백을 요청받지 않았기 때문에 표준이 처음 어떻게 개발되었는지도 비판했습니다.따라서 이 표준은 학계의 광범위한 암호 연구의 대상이 되지 않았다.
이러한 단점에도 불구하고 Paragon Initiative Enterprises는 여전히 WebAuthn을 계속 사용하도록 권장하고 있지만, 표준이 완성되기 전에 구현될 수 있기를 바라는 잠재적 구현자 및 표준 개발자에게 몇 가지 권장 사항을 제시했습니다.이러한 실수를 가능한 한 빨리 피하면 업계에서는 규격이 깨지고 하위 호환성이 필요하기 때문에 발생하는 문제를 방지할 수 있습니다.
ECDAA는 디바이스 증명과 조합하여 사용하도록 설계되어 있습니다.WebAuthn의 이 특정 기능은 인증에 반드시 필요한 것은 아닙니다.현재 구현에서는 사용자가 등록식 중에 증명문을 보낼지 여부를 결정할 수 있습니다.독립적으로, 의존 당사자는 증명 요구 여부를 선택할 수 있습니다.ECDAA는 브라우저나 의존 [35]관계자에 의해 구현되지 않았기 때문에 WebAuthn 레벨2에서 삭제되었습니다.
레퍼런스
- ^ a b c Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Liao, Angelo; Lindemann, Rolf; Lundberg, Emil, eds. (4 March 2019). "Web Authentication: An API for accessing Public Key Credentials Level 1" (Recommendation ed.). World Wide Web Consortium (W3C). Retrieved 4 March 2019.
- ^ "Web Authentication Working Group". World Wide Web Consortium (W3C). Retrieved 2018-05-11.
- ^ Strickland, Jonathan (18 March 2019). "What is WebAuthn". TechStuff. iHeartMedia. 20:35 minutes in. Retrieved 20 March 2019.
- ^ "FIDO2 Project". FIDO Alliance. Retrieved 2018-05-11.
- ^ Brand, Christiaan; Czeskis, Alexei; Ehrensvärd, Jakob; Jones, Michael B.; Kumar, Akshay; Lindemann, Rolf; Powers, Adam; Verrept, Johan, eds. (January 30, 2019). "Client to Authenticator Protocol (CTAP)". FIDO Alliance. Retrieved 7 March 2019.
- ^ "WebAuthn / CTAP: Modern Authentication" (PDF). World Wide Web Consortium (W3C). 10 December 2018. Retrieved 11 March 2019.
- ^ Kan, Michael (March 7, 2019). "Google: Phishing Attacks That Can Beat Two-Factor Are on the Rise". PC Magazine. Retrieved 8 March 2019.
- ^ a b Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Liao, Angelo; Lindemann, Rolf; Lundberg, Emil (eds.). "Web Authentication: An API for accessing Public Key Credentials Level 1 (latest)". World Wide Web Consortium (W3C). Retrieved 4 March 2019.
- ^ a b c "W3C and FIDO Alliance Finalize Web Standard for Secure, Passwordless Logins". World Wide Web Consortium (W3C). 4 March 2019. Retrieved 4 March 2019.
- ^ Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Lindemann, Rolf; Lundberg, Emil, eds. (4 Jun 2019). "Web Authentication: An API for accessing Public Key Credentials Level 2" (First Public Working Draft ed.). World Wide Web Consortium (W3C). Retrieved 6 Jun 2019.
- ^ Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Lindemann, Rolf; Lundberg, Emil, eds. (April 4, 2021). "Web Authentication: An API for accessing Public Key Credentials Level 3" (First Public Working Draft ed.). World Wide Web Consortium (W3C). Retrieved December 24, 2021.
- ^ Baghdasaryan, Davit; Hill, Brad (2 July 2018). "FIDO Registry of Predefined Values". fidoalliance.org. FIDO Alliance. Retrieved 2019-06-16.
- ^ "Web Authentication: An API for accessing Public Key Credentials Level 1 § Terminology: User Verification". www.w3.org. W3C. 4 March 2019. Retrieved 2019-06-16.
- ^ "Web Authentication API". Mozilla. Section Authentication. Retrieved 18 March 2019.
- ^ Simons, Alex (November 20, 2018). "Secure password-less sign-in for your Microsoft account using a security key or Windows Hello". Microsoft. Retrieved 6 March 2019.
- ^ "Android Now FIDO2 Certified, Accelerating Global Migration Beyond Passwords". BARCELONA: FIDO Alliance. February 25, 2019. Retrieved 6 March 2019.
- ^ "Touch ID and Beyond: Duo's Plans for WebAuthn". Duo Security. 5 March 2019. Retrieved 8 March 2019.
- ^ Steele, Nick (27 February 2019). "How WebAuthn aims to solve the password problem". Help Net Security. Retrieved 8 March 2019.
- ^ "Web Authentication API". Mozilla. Section Registration. Retrieved 18 March 2019.
- ^ "Metadata Service". FIDO Alliance. Retrieved 18 March 2019.
- ^ Protalinski, Emil (March 4, 2019). "W3C Approves WebAuthn as the Web Standard for Password-Free Logins".
- ^ "Can I use Web Authentication API?". Retrieved 7 March 2019.
- ^ Brand, Christiaan (2018-06-03). "Enabling Strong Authentication with WebAuthn". Google Developers. Retrieved 2018-06-25.
- ^ Shankland, Stephen (2018-05-09). "Firefox moves browsers into post-password future with WebAuthn tech". CNET. Retrieved 2018-05-11.
- ^ Sarkar; et al. (2018-05-23). "Announcing Windows 10 Insider Preview Build 17682". Microsoft. Retrieved 2018-06-25.
- ^ "Yubico Launches New Developer Program and Security Key for FIDO2 and WebAuthn W3C Specifications" (Press release). 2018-04-10. Retrieved 2018-05-11.
- ^ "eWBM: eWBM's Goldengate Fingerprint Reader is First to Get FIDO L2 Certification" (Press release). 2019-04-08. Retrieved 2019-06-15.
- ^ "Mobile ID World, Alex Perala: eWBM's Goldengate Fingerprint Reader is First to Get FIDO L2 Certification" (Press release). 2019-04-09. Retrieved 2019-06-15.
- ^ Girardeau, Brad (2018-05-08). "Introducing WebAuthn support for secure Dropbox sign in". Dropbox Tech Blog. Dropbox. Retrieved 2018-05-11.
- ^ Girardeau, Brad (2020-06-24). "Safari 14 Beta Release Notes". Apple Developer Documentation. Apple. Retrieved 2020-06-24.
- ^ "Web Authentication API". Mozilla. Retrieved 16 March 2019.
- ^ Ackermann, Yuriy (15 January 2019). "Introduction to WebAuthn API". Medium. Retrieved 8 March 2019.
- ^ "Security Concerns Surrounding WebAuthn: Don't Implement ECDAA (Yet)". Paragon Initiative Enterprises Blog. 2018-08-23. Retrieved 2018-10-09.
- ^ "FIDO ECDAA Algorithm". FIDO Alliance. 2018-02-27. Retrieved 2018-10-09.
- ^ "Remove ECDAA? · Issue #1410 · w3c/webauthn". GitHub. 2020-04-28. Retrieved 2020-06-03.