
FIDO認証:3分で分かる!?Attestationって何だろう?
前回からの続きです。パスワード不要!ヒミツを渡さない!FIDO認証についてご紹介しています。
前回は、認証器(Authenticator)の種類や、その機能などについて解説しました。ローミング型の認証器が欲しくなっちゃいますね。使うあてもないのですがw。
今回からは、認証以前の「認証器(検証鍵)登録」についてお話しします。認証器を登録しなければ、FIDO認証もできません。

ただし、FIDOの登録についても、いくつか専門用語も出てきます。これらの専門用語が一体なんなのかも合わせて知っておくことは有用です。その中でもAttestation(アテステーション)をご紹介します。
では、いってみよう!
認証器登録の流れ
まず、用語の話に立ち入る前に、認証器登録の流れについて眺めてみましょう。
まとめると次のとおりです。

図を眺めるだけでもなんとなく何をしているのか、分かる気がしますね。その詳細な解説を早速したいです。が、用語の確認を先にしましょう。
ややこしい概念「アテステーション」
FIDOの仕組みの中でももっとも分かりにくい言葉の一つが、アテステーションAttestationです。英単語の意味としては、「真実であると宣言する」だそうです。

他の文脈では、聞かない用語ですね。でも、FIDOの仕組みを少し深めに理解するには知っておいた方がいいに違いありません。難しい概念ですが、頑張って整理します!
ネット上で見つけた唯一分かりやすい解説がFIDOアライアンスのサイトでした。さすが本家。これを参考にします。
もう一つの鍵ペア
鍵ペア(署名鍵と検証鍵)は、利用するサービスごとに認証器が作成します。Aサービス用の鍵ペア、Bサービス用の鍵ペアなどなど。使い回したりしません。このAttestationという言葉は、この「鍵ペア生成」のときに登場します。「認証」のタイミングではございません。
このアテステーション(証明書)は、「認証器の『モデル』ごとに固有な鍵ぺア」です。ポイントは、認証器という「ハードウェアごとではない」という点です。さもないと、ユーザと認証器が紐づいてしまって、個人の特定につながるリスクが上がります。
加えていうなら、この鍵ペアは、「認証用に使う鍵ペア」とは、別物ですよ。いろいろと、ややこしいです…。
そして、認証器が製造されるときに、その認証器の中に書き込まれます。最初から認証器に入ってるわけです。

検証鍵をアテステーションが署名する!?
さて、このアテステーションという「鍵ペア」は、いったい何をするのでしょうか?
実は、アテステーションの秘密鍵が、認証に使う「検証鍵」を生成して署名するのです。なんでそんなことするんでしょうね?
「検証鍵」が、送られる過程で改ざんされたら困るから?確かにそんな気がしますね。しかし、先にTLSのセッションが確立されているので、それはあまり重要でないようです。

それよりも、「あぁ、あのモデルのFIDO認証器から登録要求がやってきたんんだな!」とサーバ側に信用してもらうことが重要です。
実は、認証器登録する際、検証鍵と一緒に、認証器のモデル番号がサーバに送信されます。サーバは、この認証器の「モデル番号」と「MDSなどの台帳」を突合せます。
これにより、サーバは、「アテステーションのルート証明書」と「認証器のメタ情報」を知ることができます。ルート証明書による検証が成功すれば、メタ情報(認証器の特性とか)を信用してよい、ということになります。
はい、アテステーションの解説はここまでにしましょう。難しすぎて頭から湯気ができてきました…。まだ先は長いので深入りせずにおきましょう。
次回は、Relying Partyなどの解説をしたいと思います。
では!