パスキーやFIDO2認証がWebサイト上でどのように動作しているか、その技術的な土台となっているのがWebAuthn(Web Authentication API)です。W3Cが策定するこのブラウザ標準APIにより、開発者は特定のベンダーやハードウェアに依存せず、標準化された方法で公開鍵暗号方式の認証をWebアプリケーションに組み込めます。本記事では、WebAuthnの基本的な仕組みと、FIDO2エコシステムにおける位置づけを解説します。
1. WebAuthnとは何か
WebAuthnは、W3C(World Wide Web Consortium)が策定した、ブラウザが公開鍵暗号方式による認証を扱うための標準APIです。2019年にW3C勧告として正式化されて以降、Chrome・Safari・Firefox・Edgeなど主要ブラウザに実装され、現在では大多数のモダンブラウザで利用可能になっています。
WebAuthnが登場する以前、Webサイトが強固な認証を実装するには、各ベンダー独自のSDKやプラグインに依存する必要がありました。WebAuthnはこれを「ブラウザに標準搭載された機能」として提供することで、開発者が特別なソフトウェアをインストールさせることなく、JavaScriptから直接呼び出せる認証手段を実現しました。
2. WebAuthnの基本API
WebAuthnは、JavaScriptのnavigator.credentialsオブジェクトを通じて2つの主要なメソッドを提供します。
navigator.credentials.create()
新しい認証情報(パスキー)を登録する際に呼び出されるメソッドです。Webサイトのサーバーが生成した「チャレンジ」や、要求するユーザー検証のレベルなどのパラメータを渡すと、ブラウザは登録済みの認証器(内蔵の生体認証やセキュリティキー)を呼び出し、新しい鍵ペアの生成を要求します。生成された公開鍵は、Webサイトのサーバーに送信され保存されます。
navigator.credentials.get()
ログイン時に呼び出されるメソッドです。サーバーが生成したチャレンジをブラウザに渡すと、ブラウザは認証器に署名を要求し、得られた署名済みのアサーションをサーバーに返送します。サーバーは事前に保存しておいた公開鍵でこの署名を検証し、正当なユーザーであることを確認します。
開発者にとってのシンプルさ
Web開発者は、認証器が具体的にどのハードウェアであるか(USBキーか、スマートフォンの指紋認証か等)を意識する必要がありません。WebAuthn APIを正しく呼び出せば、あとはブラウザとOSが適切な認証器とのやり取り(CTAP2通信)を裏側で処理してくれます。
3. Relying Party・Client・Authenticatorの三者関係
WebAuthnの仕様を理解する上で重要なのが、以下の3つの登場人物(エンティティ)です。
| エンティティ | 実体 | 役割 |
|---|---|---|
| Relying Party(RP) | ログインを提供するWebサイト・サービス | チャレンジの発行、署名の検証、公開鍵の保管 |
| Client(クライアント) | ブラウザ・OS | WebAuthn APIの実装、認証器とのCTAP2通信の仲介 |
| Authenticator(認証器) | セキュリティキー、スマートフォンの生体認証、PC内蔵の認証機構 | 鍵ペアの生成・保管、ユーザー検証、署名の実行 |
この三者関係が明確に分離されていることで、Relying Party(Webサイト運営者)は「どのブラウザから、どの認証器を使ってログインが行われたか」の詳細を知る必要がなく、ブラウザが提示する検証済みの結果だけを信頼すればよい設計になっています。
Keyper:WebAuthn/FIDO2標準に準拠したID・アクセス管理
Net PeaceのKeyperは、WebAuthn/FIDO2標準に準拠したパスワードレス認証基盤です。標準準拠のため、社員が使うブラウザ・デバイスを問わず一貫した認証体験を提供します。
4. WebAuthnとCTAP2・FIDO2の関係
「FIDO2」という総称は、実際にはWebAuthnとCTAP2という2つの規格の組み合わせを指します。両者の役割分担を整理すると、以下のようになります。
- WebAuthn:Webサイト(Relying Party)とブラウザ(Client)の間の通信を規定する。開発者が直接触れるのはこの層。
- CTAP2:ブラウザ(Client)と認証器(Authenticator)の間の通信を規定する。ブラウザ・OSの内部で処理され、開発者が意識することは通常ない。
この2層構造により、Webサイト側の実装(WebAuthn呼び出し)を変更することなく、認証器側の技術(CTAP2準拠の新しいハードウェアや方式)が進化していける柔軟性が確保されています。WebAuthnとCTAP2を合わせて「FIDO2」と呼ぶ、という理解を持っておくと、技術文書を読む際の混乱を防げます。
5. ブラウザ・OSの対応状況
WebAuthnは2019年のW3C勧告以降、急速に主要ブラウザ・OSへの実装が進みました。現在では、Chrome・Safari・Firefox・Microsoft Edgeの最新バージョンで標準サポートされており、Windows・macOS・iOS・Android・Linuxといった主要OS上でも利用可能です。
ただし、細かい機能(同期型パスキーのクロスプラットフォーム対応、hybridトランスポートの挙動等)については、ブラウザ・OSのバージョンによって対応状況に差異があります。企業がFIDO2/パスキーを導入する際は、社内で利用しているブラウザ・OSのバージョンが必要な機能に対応しているか、事前に確認することが推奨されます。
6. WebAuthnがもたらすセキュリティ上の利点
フィッシング耐性
WebAuthnの署名プロセスには、リクエスト元のドメイン情報(Origin)が組み込まれます。認証器は、登録時のドメインと現在アクセスしているドメインが一致するかを技術的に検証するため、偽サイトに誘導されても、そのサイト向けの署名は生成されません。これはパスワードやOTPコードのように「人間が見た目で騙される」フィッシング手法が原理的に通用しない、WebAuthnの最大の利点です。
サーバー側の情報漏えいリスクの低減
サーバー側に保管されるのは公開鍵のみであり、これが漏えいしても攻撃者はログインに必要な秘密鍵を得ることができません。パスワードのハッシュ値の漏えいとは異なり、公開鍵の漏えい自体は直接的な認証突破につながらない設計です。
よくある質問
Q1: WebAuthnを導入するのに専用のソフトウェアインストールは必要ですか?
不要です。WebAuthnは主要ブラウザに標準搭載されている機能のため、エンドユーザーが追加のソフトウェアをインストールする必要はありません。企業側は、自社のWebアプリケーションやIdPにWebAuthn対応の実装を行うか、既にWebAuthnに対応した製品(Keyper等)を導入することで利用を開始できます。
Q2: WebAuthnは無料で使える標準規格ですか?
はい、WebAuthnはW3Cが策定するオープンな標準規格であり、特定企業へのライセンス料の支払いは発生しません。ただし、実際に企業として導入する際は、認証器の調達費用や、WebAuthn対応の認証基盤製品の利用料が発生する場合があります。
Q3: 古いブラウザではWebAuthnは使えませんか?
WebAuthnが実装される前の古いブラウザでは利用できません。企業でWebAuthnベースの認証を導入する際は、社内で許可しているブラウザのバージョンがWebAuthnに対応しているかを事前に確認し、非対応の環境が残っている場合はブラウザの更新を促す必要があります。
7. まとめ
WebAuthnについて解説した内容を振り返ります。
- WebAuthnは、W3Cが策定するブラウザ標準の認証APIで、公開鍵暗号方式による本人確認をWebアプリに組み込める
- Relying Party(Webサイト)・Client(ブラウザ)・Authenticator(認証器)の三者関係で構成され、役割が明確に分離されている
- 「FIDO2」はWebAuthn(Webサイト⇔ブラウザ)とCTAP2(ブラウザ⇔認証器)の組み合わせを指す総称
- 主要ブラウザ・OSに標準実装されており、追加ソフトウェアのインストールなしで利用できる
- 署名にドメイン情報が組み込まれる設計により、フィッシング耐性が原理的に担保されている
Net PeaceのKeyperは、こうした標準規格に完全準拠したパスワードレス認証基盤として、特定ベンダーへの依存を避けながら、長期的に安心して使える認証環境を提供します。