WebAuthn
概要
登録
https://mdn.mozillademos.org/files/16189/WebAuthn_Registration_r4.png
登録手順:
0. アプリケーションが登録要求を行う
challenge はランダム情報のバッファー(少なくとも16バイト以上)であること
challenge は登録過程のセキュリティを確保するために必ずサーバー上で生成すること
まず第一に、通常認証器は何らかの形でユーザーが存在し、登録に同意していることを確認します。この方法としては PIN の入力や指紋・虹彩認証などがあります。ユーザ確認後、認証器は非対称鍵ペアを作成し、後に使用する秘密鍵を安全に保存します。
もう片方の公開鍵は、ある秘密鍵で署名された attestation の一部になっています。その秘密鍵とは認証器の製造過程で焼き付けられたものであり、認証局にさかのぼって検証可能な証明書チェーンをもっています。
4. Authenticatorががブラウザにデータを返す 新しい公開鍵と世界中で重複の無い一意の認証ID、そして他の attestation 情報がブラウザーに返され、そこで attestationObject になります。
5. ブラウザが最終的に送信するデータを作成し、アプリケーションがその戻り値をサーバに送信
6. サーバーが登録を検証・完了させる
challenge が送信時と同じものであるかの確認
origin が期待された origin でとなっていることの保証
clientDataHash の署名と特定モデルの認証器用の証明書チェーンを使った attestation の検証
認証
https://mdn.mozillademos.org/files/15802/MDN%20Webauthn%20Authentication%20(r1).png
0. アプリケーションが認証要求を行う
1. サーバからのチャレンジ送信
2. ブラウザによるAuthenticatorのauthenticatorGetCredential()の呼び出し
3. AuthenticatorによるAssertionの生成
4. Authenticatorがブラウザにデータを返す
5. ブラウザが最終的なデータを生成し、アプリケーションがサーバにレスポンスを送信する
6. サーバによる検証と認証の完了
参考文献