2019年3月、World Wide Web Consortium(W3C)は、WebAuthnがパスワードレスログインの公式Web標準になったことを発表しました。WebAuthnは幅広いアプリケーション(Microsoft Edge、Chrome、Firefox、モバイルアプリなど)でサポートされ、今後数年でさらに普及すると見込まれています。前回のブログ記事では、WebAuthnがもたらすカスタマーエクスペリエンスの向上やセキュリティ態勢の強化について、例を挙げて説明しました。 今回は、WebAuthnが新しい標準として確立される上で重要な役割を担った技術的要素とプロトコルについて説明します。 FIDO2とは FIDO2とは、パスワードを使用せず、本人確認を行う技術仕様の標準化を推奨する非営利団体FIDO AllianceとWide Web Consortium(W3C)が実施したプロジェクトです。FIDO2の標準自体は、W3CのWeb Authentication(WebAuthN)ブラウザAPI標準とFIDOのClient To Authenticator Protocol(CTAP)で構成されます。FIDO2は、FIDO Allianceが以前に行ったUniversal 2nd Factor(U2F)認証標準の作業を基に構築されています。 FIDO2は、基本的なログオンにとどまらない、初の強力なWeb認証標準を確立する構成要素となります。 CTAPとは Client To Authenticator Protocol(CTAP)とは、シータップと呼ばれ、FIDO2対応デバイスがBluetooth、USB、または近距離無線通信(NFC)を介して外部/ローミングオーセンティケーターと通信するためのインターフェイスを提供する仕様を意味します。 CTAPにより、デバイス間で安全な認証チャネルが確立されます。デバイス間の通信は、一般的にユーザーが所有する暗号化ローミングオーセンティケーター(スマートフォンやハードウェアキーなど)と、クライアントプラットフォーム(ノートPCなど)との間で行われます。 このCTAPプロトコルは、特定のプラットフォーム(Macなど)で依拠当事者(Webサイトやネイティブアプリ)とやりとりするエンドユーザーが、ローミングオーセンティケーター(スマートフォンなど)とやりとりするように求められる場合に使用されます。 CTAP1はより古い標準であり、外部オーセンティケーターが認証の第2要素を提供しています。CTAP2を使用することで、外部オーセンティケーターを認証の第1と第2の両方の要素として使用でき、パスワードへの依存を排除できます。 オーセンティケーターについて オーセンティケーターは、必要に応じてパスワードや生体認証の入力などのユーザージェスチャーを取得する機能を持つデバイスです。 さらに分類すると、プラットフォームオーセンティケーターは、ノートPCなどのデバイスに統合されたオーセンティケーターです。デバイスと密接に結合されているため、ユーザージェスチャーを取得するために、USB、NFC、Bluetoothなどの安全な転送プロトコルを必要としません。プラットフォームオーセンティケーターの一般的な例には、TouchID、FaceID、Windows Helloなどがあります。 ローミングオーセンティケーターは、安全な転送プロトコルを介して任意のノートPCに接続できるポータブルオーセンティケーターです。このようなオーセンティケーターはCTAPプロトコルをサポートする必要があります。ローミングオーセンティケーターの一般的な例には、YubiKEYS、Bluetooth対応のスマートフォンアプリケーションなどがあります。 FIDO2オーセンティケーターの包括的なリストは、FIDO AllianceのWebサイトに掲載されています。 ブラウザの役割について WebAuthnに対応するブラウザは、次の機能を実行できる必要があります。 操作用のメッセージを作成する 拡張を処理する オーセンティケーターにユーザーインタフェイスを適宜提供する エラー処理とハウスキーピングを管理する 最新のブラウザのほとんどは、WebAuthn APIをすでにサポートしています。この標準をサポートするブラウザについて、以下にわかりやすく示しています。 画像ソース:https://github.com/apowers313/fido2-webauthn-status 依拠当事者(Webサーバー)について 依拠当事者(Relying Party、RP)とは、FIDO2標準を使用して提示された強力な資格情報を使用して認証できるアプリケーションです。アプリケーションの種類に応じて、WebAuthnの呼び出しを行うネイティブアプリケーションがWebAuthnクライアントになることがあります。また、呼び出しを仲介するWebブラウザがクライアントになることもあります。 U2FとUAFについて Universal 2nd Factor(U2F)は、専用のUSBまたはNFCデバイスを使用して二要素認証を強化・簡素化するオープン認証標準です。またU2Fは、標準の公開鍵暗号を使用して構築されています。 Universal Authentication Factor(UAF)は、プライマリ認証のパスワードを置き換えるフレームワークであり、真のパスワードレスエクスペリエンスを実現します。 UAFとU2Fの両方を使用すると、Webサービスはローカルデバイスでの認証を要求し、続いてWebサービスはこの認証を受け入れてユーザーのサインインを許可します。 画像ソース:FIDO Alliance 次のステップは? 基本的な用語を理解したところで、本シリーズでは次にユーザー登録、認証、アカウント回復の流れについて取り上げます。また、Oktane19の以下のセッションでもWebAuthnについて詳しく説明していますので、ご覧ください。