パスキー

https://blog.agektmr.com/2022/12/passkey.html
広義のパスキーは、後述の「狭義のパスキー」を使って認証を行う仕組み全体のこと。
狭義のパスキーとは、FIDO(ファイド)Fast Identity Online という規格で定められた、パスワードの代わりにユーザー認証に使われる情報のこと。
具体的には、スマホやPCなどログインする側のデバイスに保存された秘密鍵とそのメタデータがパスキーである。

パスキー作成時は、ローカル認証をトリガーに新しい公開鍵ペアが作られ、秘密鍵はデバイスに、公開鍵はサーバーに送られ保存されます。
パスキーとは、実質的にこの秘密鍵とそのメタデータ(認証先のサイトのドメイン等)を指しています。その後パスキーは同期され、他の端末からでも利用できるという仕組みです。

パスキーでは、チャレンジ・レスポンスのために認証先サイトから送られてきたチャレンジコードを、端末側の秘密鍵で暗号化した情報を返すことで認証できたことの証明を行う。
このサイトに載っている「認証」シーケンス図がわかりやすい。
https://dev.classmethod.jp/articles/passwordless-authentication-and-fido2/
パスキーでは生体認証で本人確認をするが、これは「チャレンジコードを端末側の秘密鍵で暗号化してもよいか」を決めるための端末内で完結した生体認証であり、外部にこの情報が送られることは無い。(規格の仕様として送ってはいけないことになっている)



以下のような利点がある。
・認証先はメタデータで保存された先のドメインになるため、フィッシングによって意図しない先にログインしてしまうことが無い。
・通信で送られる情報がパスワードの場合それが盗まれるとアカウントが乗っ取られる(他サイトで共通パスワードを使っていればさらに被害は大きくなる)が、通信で送られる情報がパスキーなら乗っ取られるのはそのログインセッションだけで済む。
・生体認証で本人確認をしなければ、端末内の秘密鍵で暗号化を行わないという仕様になっているため、2要素認証となる。
・あと厳密には「パスキーの利点」ではないが、認証情報の管理をソフトウェアに任せることで、複数端末でのログイン同期、アカウントセレクター、バックアップなどの利点が享受できる。