FIDO認証(WebAuthn)

Web Authentication API(WebAuthnとも呼ばれる)はW3CとFIDOによって作成された仕様で、Google、Mozilla、Microsoft、Yubicoなどが参加しています。このAPIにより、公開鍵の暗号方式を使用したユーザー認証が可能になります。

WebAuthnは、Webで最も安全で有用な認証方法です。その主な理由はこちらです。

  • ログインでの摩擦を最小限に留め、簡素かつ親しみやすいジェスチャーでユーザーを認証できるようにする

  • フィッシング耐性のある唯一のWeb認証方法

  • 規格に基づき、各種のブラウザーやオペレーティングシステムに広く実装されている

WebAuthnでは、認証に2種類のオーセンティケーターが使用できます。

  • ローミングオーセンティケーターは、Yubikeyと同様に取り外し可能かつプラットフォーム間共通で、複数のデバイスで使用できます。ローミングオーセンティケーターで認証するには、(USB・NFC・Bluetoothなどを介して)デバイスに接続し、存在を証明(タッチするなど)します。また、場合によってはPIN入力などのユーザー検証を提供することもあります。

  • プラットフォームオーセンティケーターはデバイスに統合され、そのデバイスでのみ動作します。たとえば、MacBookのTouchBar、Windows Hello、iOSのTouch/FaceId、Androidの指紋/顔認識などです。生体認証データはデバイスに保管され、サーバーに送信されることはありません。生体認証が利用できない場合には、通常、別の認証方法が提供されます。たとえば、マスクを着用している場合には、Face IDの代わりにパスコードを入力できます。

WebAuthnとWebオリジン

WebAuthnは、デバイスまたはセキュリティキーに登録されているWebオリジンごとに秘密鍵/公開鍵のペアを生成することによって機能します。

鍵ペアはドメインにバインドされているため、ユーザーはフィッシング攻撃から保護されます。攻撃者がユーザーをだまして異なるドメインのWebAuthnを使用させた場合でも、WebAuthnオーセンティケーターがそのドメインに対する鍵ペアを持っていないため、認証は失敗します。ユーザーを識別するためのデータが攻撃者の手に渡ることはありません。

ローミングオーセンティケーター

Auth0でローミングオーセンティケーターを有効にする方法については、[WebAuthn with Security Keys(セキュリティキーを使ったWebAuthn)]のドキュメントを参照してください。

以下の画像と手順では、Androidでセキュリティキーを登録するデフォルトの登録フローを説明します。

  • ユーザーがユーザー名とパスワードで認証します。

  • ユーザーは登録に使用したい認証方法を選択するように要求されます。

  • ユーザーがセキュリティキーを選択すると、手順が表示されます。

  • そして、セキュリティキーの入力が要求されます。

  • デバイスがネイティブのUIを表示して、セキュリティキーのチャレンジが完了します。

  • 複数のデバイスを登録する場合、後で識別できるように、ユーザーはキーに名前を付けることができます。

undefined

チャレンジフローでは、ユーザーはセキュリティキーを要求され、それがデバイスのネイティブユーザーインターフェイス(この例ではAndroid)を呼び出します。

undefined

プラットフォームオーセンティケーター

プラットフォームオーセンティケーターを有効にする方法については、[Webauthn with Device Biometrics(生体認証デバイスを使ったWebauthn)]のドキュメントを参照してください。

プラットフォームオーセンティケーターは単一のデバイスでしか使用できないため、それがユーザーが登録する要素はそれだけにしないでください。ユーザーがアカウントからロックアウトされることがないように、別の認証方法で認証に成功した後で、プラットフォームオーセンティケーターを使用して登録するよう、Auth0はユーザーに要求します。

Auth0は、すべてのユーザーのデバイスを段階的に登録しようとします。ユーザーは、使用する各デバイスで、デバイスのプラットフォームオーセンティケーターを登録するように要求されます。

以下の画像と手順では、iOSでFace IDを登録するデフォルトの登録フローを説明します。

  • ユーザーがユーザー名とパスワードで認証します。

  • SMSプッシュ時間ベースのOTPなど、別のMFA認証方法を登録します。

  • 後で識別できるように、ユーザーがデバイスに名前を付けます。

デバイスの生体認証を使ったMFA登録

次回そのデバイスからログインするときに、ユーザーはユーザー名とパスワードを入力して、デバイスの生体認証でMFAを完了します。

WebAuthnデバイスの生体認証のMFAチャレンジ

多要素認証としてのWebAuthn

Webauthn.me

Auth0は、WebAuthn.meを管理しており、WebAuthnに関する詳細な情報とWebAuthnをサポートするブラウザーの最新リストが掲載されています。

もっと詳しく