FIDOの基礎情報
FIDOの基礎
TL;DR
実装方法ではなく、FIDOがどんなものか?なぜ使われるようになってきそうか?の説明。
FIDOの背景
現在の認証はパスワードで行うことが一般的だが、パスワードが漏れただけで第三者にログインされてしまう。 その対策として現在は下の2つが主に使われる様になっってきた。
- on time password(OTP)
- 指紋認証などの生態認証
OTPの問題
- ジェネレータを使ったサービスを複数使うと、キーを沢山管理しないといけなくなり、大変。
- 有効期限などがあり、タイミング悪く使用できない時がある。
- 手入力というアナログ手法なのでミスが多い。
これらの問題に対して、どうにかしようって事で、FIDOを使いましょう。
FIDO Allianceとは
FIDOの特徴と必要性
- ハードウエアトークンなどが作成する公開・秘密キーをサーバーに送り、端末を登録する。
- 一度登録したら、パスワードなどの情報を送らなくても認証が完了するので、よりセキュアに使える。
- サーバーの情報が漏洩しても、ハードウエアトークンが無ければログインできないので、漏洩対策にもなる。
- 一つのキーがあればどのサービスにもログインできる。
- パスワードを覚える必要がない。
- トークンさえ作れれば、ハードが無くても使えるはず。(未確認)
- yahoo!、楽天、Amazon、google等の多くの企業がworking groupに入っている。ログインのデファクトになると思われるので、ほか案件をする上で知っておかないと辛い目に合うかも。
1.0
- U2F(Universal 2nd Factor)
- 多要素認証を導入する仕様
- UAF(Universal Authentication Framework)
- 信頼した端末でパスワード無しで認証する仕様
- 自分の端末の指紋認証を他のサービスのログインに使用する
- 信頼した端末でパスワード無しで認証する仕様
の仕様を決めている。
2018/05では1.2が最新で、NFCやBLEに対応している。
2.0
w3cと決めてるよう。web authentication api の事かな。
やってる事
クライアントとサーバー間で公開キーと秘密キーの交換をする。 webサービスだけじゃなく、android、iOSでも使える。 クライアントは何でもいいが、jsが多くなるかな。
今後のプラットフォームの対応
これからの動き
仕様が頻繁にアップデートされると思われる。 色んな機器が対応してくると思われる。