-
Notifications
You must be signed in to change notification settings - Fork 0
MS_FIDO
-
TOP > インフラストラクチャ > 認証基盤
- FIDO
- 生体認証
- ワンタイム・パスワード
- ここでは、基本的に FIDO (Fast IDentity Online) について言及する。
- FIDO Alliance(生体認証などオンライン認証の標準化団体)により策定。
- パスワードは、時代遅れになりつつある。
- 攻撃を受けるリスクがあり、対策が必要だった。
- 強度が高く、長くて複雑なパスワードを使用する。
- パスワードを使い回さない。
- 定期的にパスワードを変更する。
補足(最新化): 「定期的にパスワードを変更する」は、 現在は推奨されていない。 NIST SP 800-63B(LoA(Level of Assurance) 参照)は、 漏洩の兆候が無い限り定期変更を要求すべきでないとしている。 定期変更を強制すると、利用者は 推測しやすい規則的な変形(
Pass01→Pass02)に走り、 かえって弱くなるためである。 総務省も 2018 年に同趣旨へ方針を改めている。
FIDO の基本思想は、
「生体情報などの認証情報をサーバに保存したり送信したりせず、
ユーザーのデバイスに保存することで、秘密情報の漏洩を防ぐ。」
というもの。また、
- 認証の部品化(プラグイン化)
など。
- 公開鍵暗号方式をベースとしたチャレンジ・レスポンス認証。
- 「既存の認証」に対して公開鍵を登録するという実装になる。
補足: 動作を整理すると次のとおり。
登録時
- サーバがチャレンジを送る
- 認証器がそのサービス専用の鍵ペアを生成する
- 秘密鍵は認証器内に留め、公開鍵だけをサーバに登録する
認証時
- サーバがチャレンジを送る
- 利用者は生体認証や PIN で認証器のロックを解除する
- 認証器が秘密鍵でチャレンジに署名して返す
- サーバは登録済みの公開鍵で検証する
ここで重要なのは、署名対象にオリジン(接続先)が含まれる点である。 偽サイトに対しては別の鍵が選ばれ、署名も一致しないため、 フィッシングが原理的に成立しない。 ワンタイム・パスワード が リアルタイム フィッシングに無力だったのと決定的に違う。
また、サービスごとに鍵が異なるため、 サービス間での名寄せもできない(PPID と同じ発想)。
既に FIDO エコシステムを構築、市場に普及。
Google / Microsoft / PayPal / Dropbox / GitHub / Samsung Electronics / NTT docomo / Bank of America Corporation など。
| OS | 方式 |
|---|---|
| Windows 10 | 従来型のパスワード方式/4 桁(以上の)数字の「PIN コード」方式/Windows Hello による生体認証方式 |
| Android | 従来型のパスワード方式/4 桁数字の「PIN コード」方式/点をなぞる「パターンロック」方式 |
| iOS | 4 桁数字の「PIN コード」方式/「Touch ID」による指紋認証方式/「Face ID」による顔認証方式 |
補足(最新化): 現在の大きな動きは パスキー(Passkey) である。 FIDO2 の資格情報をクラウド経由で同期できるようにしたもので、 Apple / Google / Microsoft が 2022 年に共同で対応を表明した。
従来の FIDO2 パスキー 鍵の所在 デバイスに固定 アカウントに紐づき複数デバイスで同期 端末紛失時 アカウントを失う(要バックアップ手段) 復元できる 保証レベル 高い(LoA の AAL3 相当も可) 同期の分だけ前提が緩む 「端末が壊れたらログインできない」という FIDO 最大の運用課題を解いたことで、一般消費者向けに普及が進んだ。
| 観点 | 内容 |
|---|---|
| セキュリティ向上 | パスワードへの依存を減らし、認証の安全性が向上する。パスワードなどの認証情報がネットワークに流れない |
| コスト削減 | 標準規格のため、認証器はサービスに共通的に使える |
| プライバシー保護 | サーバ側にパスワード情報や生体情報を持たない。「端末側での本人確認」と「サーバ側での認証」を分けている |
| 操作性 | 生体認証や端末のボタン操作など認証操作が簡単になる。これにより、パスワード入力・管理を不要にできる |
補足: 「端末側での本人確認」と「サーバ側での認証」の分離が、 FIDO を理解する鍵である。 生体認証 で述べたとおり、 生体情報は変更できない秘密なのでネットワークに流してはならない。 FIDO では生体認証は認証器のロック解除にしか使われず、 サーバに渡るのは署名だけである。
- ユーザとデバイスの組の確実性しか保証されない。
- また、権限制御は別途実装する必要がある。
FIDO認証器を参照。
補足(運用上の課題): 実装・運用で必ず問題になるのは次の点である。
- アカウント回復
認証器を失った場合の復旧手段が、系全体の強度を決めてしまう。 「秘密の質問」や SMS に落とすと、そこが最弱点になる。 認証器を 2 つ以上登録させるのが定石。- 既存認証との併存
パスワードを残したままだと、攻撃者はそちらを狙う。 フィッシング耐性を得るには、 最終的にパスワードを廃止する必要がある。
| 版 | 内容 |
|---|---|
| FIDO 1.0 / 1.1 | UAF(パスワードレス)と U2F(二要素)の 2 系統。FIDO1 |
| FIDO 2.0 | WebAuthn + CTAP2。FIDO2 |
- Web Authentication API(
MS_WebAuthenticationAPI.md)
FIDO 対応したクライアント・アプリケーション。
- FIDO 対応したプラットフォーム上の、中継レイヤ。
- 認証器を持つデバイス上で FIDO の API を使用する。
- FIDO2では、OS やブラウザの API が定義され、無くなった。
RP 側で、登録済みの公開鍵を保持し、署名を検証するサーバ機能。
FIDO認証器を参照。
| 種別 | 例 |
|---|---|
| プラットフォーム認証器 | Windows Hello、Touch ID / Face ID(端末に内蔵) |
| ローミング認証器 | YubiKey などの USB / NFC / BLE セキュリティ キー |
- 認証基盤
- 生体認証
- ワンタイム・パスワード
- LoA(Level of Assurance)
- FIDO Alliance
- Web Authentication: An API for accessing Public Key Credentials - W3C
- パスワードレス認証の概要 - Microsoft Learn
Tags: IT国際標準, 認証基盤, セキュリティ
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。