FIDOってなに?
FIDOってなんですか??
FIDO XXX は認証を分散するための仕様だった。策定しているFIDO Allianceは業界団体。 FIDO はファイドって読む。
認証を分散して行う理由はネットワークに認証する対象を流したくないため。
例えば、パスワードとか指紋とかそれらのハッシュとかを流すって怖い。暗号化しててもForward Secrecyがないと漏れる。 怖い。というか認証できた事実が確認できれば良いので認証対象の情報を流す必要はない。
なのでクライアントで認証し認証結果にデジタル署名をしてサーバーに送る。そしてサーバーで認証結果を検証する。 これでサーバーは登録済みの認証機器によって認証されている事実を確認できる。
この仕様をFIDO UAFと呼ぶ。フレームワーク部分を担う仕様だ。 このフレームワークにしたがって2要素認証を実現するプロトコルがFIDO U2A。 YubiKeyはFIDO U2Aの実装端末の一つとなっている。
生体認証を行うFIDO 2も策定されている。
正確には、FIDO 2はFIDO CTAPとW3CのWeb Authenticationで構成されている。[FIDO Alliance]の仕様はここからダウンロードできる。
概要を学ぶための資料を並べておく。
- パスワードのいらない世界へ FIDO認証の最新状況
- Web Authentication API - Web API | MDN
- FIDOの共通モデルと展望
- FIDO2でパスワードレス認証のサーバサイド(Golang)
連合アイデンティティやWeb認可との関係
連合アイデンティティ(Federated Identity Management (FIM))やWeb認可プロトコルとは補完的な関係であると FIDO UAF Overviewに書かれている。
要するに他のプロトコルやフレームワークは認証基盤を連携させることが出来るけど、認証自体はスコープから外れていると言っている。 なので FIDO UAF で認証を行うRelyingParty(サービス)がアイデンティティプロバイダ(IdP)をさせることで強い認証を広く使える。
ここでは FIM としてOpenID, SAMLがWeb認可プロトコルとしてOAuthが言及されてる。
SAMLはOASISに定められている。OASISは情報セキュリティやブロックチェーンやプライバシー、そして防災と危機管理に近い領域を扱う非営利の標準化団体。