
FIDO認証:1分で分かる!認証器の検証鍵登録
前回からの続きです。パスワード不要!ヒミツを渡さない!FIDO認証についてご紹介しています。
前回は、認証器登録をする際に登場する用語としてRPサーバとFIDOサーバを紹介しました。これでだいたい用語の確認は終わりました!
今回はいよいよ認証鍵登録の流れを順にたどっていきます!次図のような流れでしたね。

ではいってみましょう!
1.アプリがRPサーバに認証器登録を依頼
ユーザがブラウザなどのアプリ(User Agent)を使って、認証器の登録をRPサーバに依頼します。
2.RPサーバがFIDOサーバに認証器の登録を依頼
認証器の登録依頼を受け取ったRPサーバは、その認証器の登録をFIDOサーバに依頼します。RPサーバは、サービスを提供しているサーバですがから、これ自身が認証器登録をするわけではありません。
3.FIDOサーバがチャレンジを送りかえす
チャレンジは、乱数でできているデータです。なぜチャレンジという名前?と思ってしまいますが、日本人がイメージする「挑戦!」という意味ではなく、「課題」くらいの意味ですね。
4.RPサーバがアプリにチャレンジを送る
「ほれ、チャレンジが来たぞ!」とアプリに送ります。
5.認証器が利用者を認証する
ここで、ユーザが指紋などの生体要素(PINなどの知識要素でもいいけれども)を使って認証器で認証してもらいます。
6.認証器が鍵ペアを生成
ユーザの認証がうまくいければ、認証器が鍵ペアを作ります。「署名鍵」(秘密鍵)と「検証鍵」(公開鍵)です。サービスのアカウントごとに異なるものが作られます。「署名鍵」は、TPMなどの認証器の中に格納され、取り出されることはありません。
7.認証器が署名
認証器が、「チャレンジ」と作成したばかりの「検証鍵」に署名します。何の鍵を使って署名するのかといえば、実は、「アテステーションの秘密鍵」です!製造過程で組み込まれている鍵でしたね。
8.署名したデータを送信
署名済みのチャレンジと検証鍵をRPサーバ→FIDOサーバへ送ります。
9.署名を検証
FIDOサーバは、届いた署名を、「アテステーションの公開鍵」で検証します。
10.検証鍵を保存
検証が問題なければ、RPサーバはユーザアカウントと「検証鍵」を紐づけて保存しておきます。
はい、以上にように認証器(の検証鍵)の登録が完了したら、FIDOでの認証の準備はOKです!
アテステーションの意味などを確認しておいた甲斐あって用語は分かっていたのですが、それにしても難しいですね。アテステーションで署名する目的がまだ腹落ちしていないです…。
次回以降は、FIDO認証自体の流れを確認しましょう!
では!