
FIDO認証:一目で分かる!FIDO認証の大まかな流れ
前回からの続きです。パスワード不要!ヒミツを渡さない!FIDO認証についてご紹介しています。
前回は、FIDOが「所有要素」と「生体要素」を組み合わせて認証する仕組みであることをお話ししました。つまり、FIDOは、それ自体で「多要素認証」(MFA)を行っているんですね。

今回から、FIDO2がどのように認証を行うのか、その過程を解説していきます~!
いってみよう!
超簡略版!FIDO2認証の流れ
FIDO2の仕組みは、想像どおりに、かなり難しいです。私もエラそうに記事を書いていますが、複数の文献を読みつつ四苦八苦しております(汗)。
その原因の一つは、独特な専門用語が多数登場することです。CTAP、WebAuthn、Relying Partyなどなど。けっこう、混乱します…。
しかし、しょっぱなからくじけるわけにはいきません。正確さをおもいっきり棚上げして、認証の大きな流れをつかむことにしましょう!本当は、「認証」の前に、「登録」(署名を検証するための鍵をサーバに登録)する過程が必要ですがそれも後にします。
例にとるのは、デバイス組み込み型の認証器(Platform Authenticator)を使い、サーバが「RP(Relying Party)サーバ」と「FIDOサーバ」を兼ねている場合とします。まあ、今は細かいことを気にならないでください。ようは、登場人物が少ない例です。

1.アプリが認証を依頼
アプリの画面でIDを入力して、サーバに「ログインしたいんだけど!」と伝えます。この場合、パスワード入力はしません。
2.サーバが認証を要求
サーバは、「じゃあ、これに署名してね」と、「チャレンジ」なるものをアプリに送信します。「チャレンジ」は一種の乱数です。
3.生体認証を実施
アプリは、ユーザに生体認証を要求します(本当はPINコードを使って「知識認証」してもいいのですが)。そして、ユーザは指紋などをスキャンさせ、認証器が認証します。
4.署名鍵でチャレンジに署名
認証OKにより「署名鍵」が使えるようになります。その署名鍵によって、チャレンジに署名します。(署名鍵は、認証器の内部に安全に保存されています)。
5.検証を依頼
アプリが署名をサーバに送りかえします。「検証してね」と。
6.サーバが署名を検証
サーバは、事前に登録してあった「検証鍵」を使って、署名を検証します。「ふむ、間違いないね」と。そして、ログインさせます。
以上が、超簡単なFIDO認証の流れです。なにやら公開鍵暗号方式に似ている技術を使っているな~とか、気づくことがあったのでなはいでしょうか。
でもこれでは簡略すぎるので次回から、もう少し詳細を見ていきませんか?
では!