Open4
Passkeyに入門したい
Passkeyとは
- パスワードを利用せずに認証する仕組み
- Fast IDentity Online(FIDO)仕様というFIDOアライアンスによって規格策定されている技術をベースとしている
- 実態は、「公開鍵」と「秘密鍵」のペア
- 基本的にデバイス固有のセキュア領域に保存される
- セキュア領域へのアクセスにはユーザの同意が必要なため、生体認証が用いられる
全体フロー
ref: https://techblog.yahoo.co.jp/entry/2023080730431354/
登録時
- クライアントがリクエストを投げると、サーバ側でランダムな文字列(チャレンジ)が送られてくる
- 該当サービスに対応したPasskeyを作成
- Passkeyの秘密鍵にアクセスするために生体認証を実施
- 秘密鍵を使って、チャレンジに署名 & 「署名後の値」と「公開鍵」をサーバ側に送信
- サーバ側は、「公開鍵の登録」の後、Passkeyの公開鍵を使って署名を検証して問題なければ認証完了とする
ログイン時
- クライアントがリクエストを投げると、サーバ側でランダムな文字列(チャレンジ)が送られてくる
- 該当サービスに対応したPasskeyを選択
- Passkeyの秘密鍵にアクセスするために生体認証を実施
- 秘密鍵を使って、チャレンジに署名 & その値をサーバ側に送信
- サーバ側は、Passkeyの公開鍵を使って署名を検証して問題なければ認証完了とする
passkey生成の仕組み
- クライアント(ブラウザ、モバイルapp)が認証器にpasskeyの生成をリクエスト
- 認証器について
- Passkeyの生成、保存を行ってくれる
- Macのキーチェーン、ブラウザ、1Passwordアプリ、TouchID、FaceID、yubikey...