WebAuthn
Web Authentication(WebAuthn)とは、ユーザーのパブリックキー認証(英語版)のインターフェイスをウェブ型のアプリケーションやサービスへと標準化するための、World Wide Web Consortium (W3C)によるウェブ標準の1つで[1][2]FIDO Allianceから支援を受けている[3]。ユーザーの証明をやり取りする時にウェブサイトとウェブブラウザ間の相互作用を形式化する試みであるW3Cのより一般的なクレデンシャル管理(英語版)APIの拡張を実装する。
2019年3月4日に、ウェブ標準として承認された[4]。
概要
前身のFIDO U2Fのように、W3C Web Authentication (WebAuthn)はウェブサイト、ウェブブラウザ、認証器に対応している:[1]
- ウェブサイトはWebAuthn Relying Partyに準拠する。
- ブラウザはWebAuthn Clientに準拠する。
- 認証器はFIDO2 authenticatorでWebAuthn Clientと互換性があるとされる。
WebAuthnはWebAuthn Relying Partyと称する検証者に要求者が所有をどのように証明するかを明記し、FIDO2認証器をコントロールする。認証プロセスは準拠するウェブブラウザに過ぎないWebAuthn Clientと呼ばれるエンティティが取り持っている。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Passwordless_Web_Authentication.svg/220px-Passwordless_Web_Authentication.svg.png)
右図では、認証器はハードウェア認証器と仮定する。どちらの場合でも、認証器は多要素暗号認証器でWebAuthn Relying Partyを対象とした認証アサーションに証明するために公開鍵暗号を利用する。ユーザー確認にPINを使用すると仮定するとして、認証器は「ユーザーが持っているもの」でPINは「ユーザーが知っているもの」とする。
WebAuthn Relying PartyはJavaScriptを経由してWebAuthn Client(ウェブブラウザなど)に指示する。WebAuthn Clientはブラウザに実装されたJavaScriptのAPIをする認証器とやり取りする。認証器はFIDO Client to Authenticator Protocol(英語版) 2.0に準じている。
対応アプリケーション、デバイス
Web Authenticationレベル1の仕様は2019年3月4日にWeb Authentication Working Group(英語版)によってW3C推薦として承認された[1][4][5]。
対応ウェブブラウザ
- Google Chromeデスクトップ版ではバージョン67から対応している[6]。Android 版はバージョン87から対応している。
- Mozilla Firefoxは、かつてはFIDO U2F標準に全て対応しているわけではなかったが、2018年5月9日に公開されたバージョン60でWeb Authenticationに対応した[7]。
- Microsoft Edgeは、EdgeHTML 18およびBlink版でWeb Authenticationが実装されていて、Windows Helloや外部セキュリティキーと共に作動している[8]。
- Safariは、バージョン13から対応している。
Web Authenticationは各アカウント固有の「ユーザーハンドル」識別子を参照する機能を追加したことで古いハードウェアトークンを保存することができなくなったにもかかわらず既存のFIDO U2FセキュリティキーはWebAuthn標準とほぼ互換性がある[1]。最初のFIDO2互換認証器(英語版)の1つはYubicoの第2世代セキュリティキーであることが2018年4月10日に発表されている[9]。
Dropboxは2018年5月8日にWeb Authenticationログイン(2段階認証として)に対応したと発表した[10]。
批判
2018年8月、Paragon Initiative Enterprisesは予定されているWebAuthn標準のセキュリティ検査を行った。この時は特定の悪用は発見されなかったが、この標準が使用し権限を与える基礎的な暗号の方法においていくつかの重大な脆弱性を発見したとしている[11]。
批判の主要な点は、過去に他の暗号化システムで問題になっていた2つの潜在的問題を中心に回っていて、そのために同じようなサイバー攻撃の被害に遭うのを避けなければいけないという点である:
- COSE (RFC 8152) の強制使用によりWebAuthnもPKCS1v1.5パッディング(英語版)を活用したRSA暗号に対応している。この特定のパッディングスキームは最低20年間特定の攻撃(英語版)に対して脆弱性があり、過去他のプロトコルとRSA暗号の実装で攻撃に成功している。WebAuthnの環境では与えられた条件下では悪用するのは難しいが、より安全性の高い暗号プリミティブとパッディングスキームがある場合、これは未だに悪い選択肢で、暗号専門家などの間では最も良い試みとは考えられていない。
- FIDO allianceはECDAAと呼ばれる非対称暗号スキームを標準化した[12]。これは楕円曲線をベースにした直接匿名認証(英語版)バージョンであり、WebAuthnのケースにおいて、認証器の整合性を確認するために使用されることを意図しつつ、ハンドルの世界的な相互関係を受け入れないことでユーザーのプライバシーを保護する。しかし、ECDAAは楕円曲線暗号の領域での過去数十年の研究で培われた教訓の一部を取り入れておらず、選択した曲線はこの曲線の種類固有のセキュリティ上の欠陥が複数あり、セキュリティの保証を著しく低下させている。さらにECDAA標準は過去に問題を起こしたことがある手当たり次第かつ非決定的な署名を含んでいる。
脚注
- ^ a b c d “Web Authentication: An API for accessing Public Key Credentials Level 1”. World Wide Web Consortium (W3C) (4 March 2019). 4 March 2019閲覧。
- ^ “Web Authentication Working Group”. W3C. 2018年5月11日閲覧。
- ^ “FIDO2 Project”. FIDO Alliance. 2018年5月11日閲覧。
- ^ a b “W3C and FIDO Alliance Finalize Web Standard for Secure, Passwordless Logins”. World Wide Web Consortium (W3C) (4 March 2019). 4 March 2019閲覧。
- ^ Protalinski, Emil (4 March 2019). "W3C Approves WebAuthn as the Web Standard for Password-Free Logins". 2020年5月14日閲覧。
- ^ Brand, Christiaan (2018年6月3日). “Enabling Strong Authentication with WebAuthn”. Google Developers. 2018年6月25日閲覧。
- ^ Shankland, Stephen (2018年5月9日). “Firefox moves browsers into post-password future with WebAuthn tech”. CNET. 2018年5月11日閲覧。
- ^ Sarkar, et. al. (2018年5月23日). “Announcing Windows 10 Insider Preview Build 17682”. Microsoft. 2018年6月25日閲覧。
- ^ "Yubico Launches New Developer Program and Security Key for FIDO2 and WebAuthn W3C Specifications" (Press release). 10 April 2018. 2018年5月11日閲覧。
- ^ Girardeau, Brad (2018年5月8日). “Introducing WebAuthn support for secure Dropbox sign in”. Dropbox Tech Blog. Dropbox. 2018年5月11日閲覧。
- ^ “Security Concerns Surrounding WebAuthn: Don't Implement ECDAA (Yet)”. Paragon Initiative Enterprises Blog (2018年8月23日). 2018年10月9日閲覧。
- ^ “FIDO ECDAA Algorithm”. FIDO Alliance (2018年2月27日). 2018年10月9日閲覧。
外部リンク
- Web Authentication: An API for accessing Public Key Credentials Level 1
- Web Authentication Working Group
- Web Authentication API - Web API | MDN