CaseyubikeyFIDOCTAPはじめにこれはCTAPのお勉強をしたメモです。WebAuthn(ウェブオースン)ではなく、CTAP(シータップ)であります。お勉強メモ#5最後にYubikeyを使った認証のユースケース検討とrk,uvオプションのまとめをしたいと思います。業務システムの想定です。いずれかの2つを組み合わせた2要素認証とし、Yubikeyは所持要素とします。実際のシステムはWebシステム、または、Client-Serverシステムの想定ですが、シンプルに表現するためにActorをUser/Yubkey/Client/Databaseだけにしています。rpはシステムのIDという意味なので、常に同じものを使います。1ユーザー=1Yubikey。Yubikeyのユーザー間共有はしない。2要素目=Yubikey(所持)Yubikeyを2要素目にした2要素認証ユースケースです。2要素認証では1要素目を生体とするのは、他人受け入れ率が0にならない、という理由でNGなので、1要素目は記憶にします。Yubikeyの使い方#2と#3で勉強したケースです。認証:YubikeyにrpidとCredentialIDを送り付けるClient側のDatabaseではUserIDをキーにしてCredentialIDとPublicKey(とパスワード)を管理します。顔/指紋(生体)Yubikeyを1要素目にした2要素認証のユースケースです。顔/指紋などの生体とすることができます。Yubikeyの使い方ResidentKey(rk)を使い、CredentialIDを使わない、という部分が前のケースとは異なります。登録=Yubikeyにはユーザー情報を保存。YubikeyからPublicKeyを取得、保存。認証=Yubikeyにはrpidを送り付ける。Yubikey(あるいはCTAP)の仕様上、ResidentKeyを利用するにはPINの設定が必要となります。本ケースではユーザーが特定されていない1要素目にYubikeyを使いたいので、PINをユーザーに紐づけるわけにはいきません。したがって、PINはシステム固定とします。(プログラムで内部的にpinAuthを生成し、Yubikeyに送り付けます)というわけで、Client側のDatabaseではUserIDをキーにしてPublicKey(とパスワード)を管理します。Yubikey(所持)いわゆるパスワードレスです。(PINはパスワードではないのであります)所持しているYubikeyのPINが通れば(pinTokenがGETできれば)記憶要素が満たされ、YubikeyからGETしたAssertionのVerifyで所持要素が満たされます。明確に2段階になっていないのですが、2要素ではあると考えます。本ケースはサーバーにPINを持たないため、システム管理者にとっての情報漏洩に対するリスクは他ケースに比べて低くなります。コマンドで出てくるrk、uvオプションについて、やっとわかってきたので、ここでまとめたいと思います。ユーザー情報は保存される。