【うぇぶおーすん】

WebAuthn とは?

最終更新:
💡 秘密鍵をログイン先へ渡さず、署名で認証する

ブラウザから公開鍵を使う認証を行うためのW3C標準API。端末やセキュリティキーで署名を作り、ログイン先が公開鍵で確認する。FIDO2の一部で、パスワードなしのログインや追加の認証に使われる。

📌 このページのポイント
公開鍵と署名でログインを確認① challenge(確認用データ)を送る認証器秘密鍵で署名ブラウザAPIで仲介ログイン先公開鍵で検証② 端末などで確認し、署名を返す秘密鍵・指紋のデータはサイトへ渡さないアクセス元とRP IDの対応も確認する
登録済みの鍵で認証する流れ。サーバーは署名に加えてchallengeやアクセス元も確認します。端末間で同期するパスキーでも、秘密鍵自体をログイン先へ送る必要はありません。
ひよこ ひよこ
WebAuthnって何ができるの?
ペンギン先生 ペンギン先生
ブラウザから端末やセキュリティキーを使い、公開鍵で認証できるよ。パスワードなしでログインする使い方も、パスワードに加える認証としての使い方もある。対応するサービス・ブラウザ・認証器が必要なんだ。
ひよこ ひよこ
指紋をサイトへ送るの?
ペンギン先生 ペンギン先生
送らないよ。指紋や顔、PINなどによる本人確認は端末などの側で行う。ログイン先には署名や本人確認をしたことを示す情報が渡り、指紋や顔のデータそのものは渡さないんだ。
ひよこ ひよこ
公開鍵と秘密鍵は、どう使い分けるの?
ペンギン先生 ペンギン先生
登録時にログイン先が公開鍵を持つよ。ログインでは、サーバーがchallengeという確認用のデータを送り、認証器が秘密鍵を使って署名を作る。サーバーは公開鍵で署名を確かめ、challengeやアクセス元なども確認する。秘密鍵自体をログイン先へ送る必要はないんだ。
ひよこ ひよこ
どうしてフィッシングに強いの?
ペンギン先生 ペンギン先生
鍵を使う先の識別子であるRP IDと、アクセス元に結び付けているからだよ。ブラウザやサーバーが対応関係を確認することで、対応しない偽サイトで本物のサイトの鍵を使わせにくくする。単にサイトごとに違う鍵を作るだけではなく、使う先を確認する仕組みが大切なんだ。
ひよこ ひよこ
パスキーってWebAuthnの別名?
ペンギン先生 ペンギン先生
パスキーはFIDOの公開鍵認証に使う認証情報で、WebではWebAuthnを通して利用するよ。端末間で安全に同期するものも、端末やセキュリティキーに固定されるものもある。「秘密鍵をサイトへ渡さない」と「秘密鍵が元の端末から一切出ない」は同じ意味ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「WebAuthn」って出てきたら「Webで公開鍵と署名を使って認証する標準API」と思えばだいたいOK!
📖 おまけ:英語の意味
「Web Authentication」 = Web認証
💬 Web Authenticationを短くした名前。FIDO2は、ブラウザ側のWebAuthnと、認証器との通信に使うCTAPを組み合わせた仕組みだよ。

参考資料

← 用語集にもどる