Authenticator と AAL
どうも日本の金融界は「リスク感度が鈍い」そうなので,自衛のためにも2017年にリリースされた NIST SP 800-63-3 をベースに少しお勉強しておく。
- NIST Special Publication 800-63-3: Digital Identity Guidelines
- NIST Special Publication 800-63A: Enrollment and Identity Proofing
- NIST Special Publication 800-63B: Authentication and Lifecycle Management
- NIST Special Publication 800-63C: Federation and Assertions
SP 800-63-3 といえばパスワード運用で当時は話題になった。
このパスワード話が出てくるのが SP 800-63B だが,このドキュメントでは Authenticator 全体について色々と書かれている。
Authenticator
Authenticator について適切な日本語が見当たらないが,強いて言うなら「認証機能」あるいは「認証器」といったところだろうか。 たとえばパスワードも Authenticator だし,スマホにインストールした TOTP アプリも Authenticator だ。 Yubikey なんかの暗号デバイスも Authenticator に含まれる。
SP 800-63B では Authenticator を以下の9つに分類している。
種別名 | 認証要素 |
---|---|
Memorized Secrets 記憶シークレット |
知識 |
Look-Up Secrets ルックアップ・シークレット |
所有 |
Out-of-Band Devices 経路外デバイス |
所有 |
Single-Factor OTP Device 単要素 OTP デバイス |
所有 |
Multi-Factor OTP Devices 多要素 OTP デバイス |
所有+知識/生体 |
Single-Factor Cryptographic Software 単要素暗号ソフトウェア |
所有 |
Single-Factor Cryptographic Devices 単要素暗号デバイス |
所有 |
Multi-Factor Cryptographic Software 多要素暗号ソフトウェア |
所有+知識/生体 |
Multi-Factor Cryptographic Devices 多要素暗号デバイス |
所有+知識/生体 |
また,各 Authenticator の例としては以下のものが挙げられる。
Authenticator | 具体例 |
---|---|
記憶シークレット | パスワード,PINコード |
ルックアップ・シークレット | 乱数表,認証失敗時のリカバリコード |
経路外デバイス | SMS によるコード送信, QR コード(電子メールや VoIP は認められない) |
単要素 OTP デバイス | アクティベーションを必要としない OTP デバイスまたはソフトウェア |
多要素 OTP デバイス | アクティベーションを行った上で利用可能な OTP デバイスまたはソフトウェア |
単要素暗号ソフトウェア | セキュアなストレージ上で保護されている暗号鍵 |
単要素暗号デバイス | FIDO U2F の USB ドングル |
多要素暗号ソフトウェア | 単要素暗号ソフトウェアに対して追加のアクティベーションを必要とするもの |
多要素暗号デバイス | 単要素暗号デバイスに対して追加のアクティベーションを必要とするもの |
Authenticator Assurance Level
さらに SP 800-63B では AAL (Authenticator Assurance Level) を定義している。 AAL は 1 〜 3 の3段階あり,それぞれ以下に示す Authenticator の組み合わせを許容している。
- AAL 1 では9種の Authenticator 全て許容され,単要素の認証で OK
- AAL 2 では以下に示す通り複数の認証要素による多要素認証が必要:
- 多要素 OTP デバイス
- 多要素暗号ソフトウェア
- 多要素暗号デバイス
- 記憶シークレット+以下
- ルックアップ・シークレット
- 経路外デバイス
- 単要素 OTP デバイス
- 単要素暗号ソフトウェア
- 単要素暗号デバイス
- AAL 3 では以下に示す通り,暗号鍵の所持証明要素とハードウェア関与を含む複数の認証要素による多要素認証が必要:
- 多要素暗号デバイス
- 単要素暗号デバイス+記憶シークレット
- 多要素OTPデバイス(SW/HW)+単要素暗号デバイス
- 多要素OTPデバイス(HW)+単要素暗号ソフトウェア
- 単要素OTPデバイス(HW)+多要素暗号ソフトウェア
- 単要素OTPデバイス(HW)+単暗号ソフトウェア+記憶シークレット
AAL の各レベルごとに要求されるセキュリティ事項(一部)は以下の通り。
要求事項 | AAL 1 | AAL 2 | AAL 3 |
---|---|---|---|
中間者攻撃耐性 | 必須 | 必須 | 必須 |
Verifier なりすまし耐性 | 不要 | 不要 | 必須 |
Verifier 改ざん耐性 | 不要 | 不要 | 必須 |
リプレイ耐性 | 不要 | 必須 | 必須 |
認証意図(AuthN Inbtent) | 不要 | 推奨 | 必須 |
レコード保持ポリシー | 必須 | 必須 | 必須 |
プライバシー統制 | 必須 | 必須 | 必須 |
金融系サービスの subscriber 確認で乗っ取りやなりすましを防ぎたいなら AAL 3 で何らかの物理暗号デバイスが必要だと思うけどねー。
格子型の乱数表は NG
現在は使ってるところはないだろうが,かつてネットバンキングでよく見られた格子型の乱数表はルックアップ・シークレットとしても NG だそうだ。 まぁ,当然だよな。
SMS 認証は非推奨?
NIST は SMS によるコード送信について, SP 800-63-3 のドラフト段階では非推奨にするつもりだったらしい。
しかしその後,激しい議論があったようで,最終的には “RESTRICTED Authenticator” という位置づけまで緩和されたようだ。
(スマホを含む)電話機に依存した認証は,プライバシーも絡めて考えると筋が悪い。 ぶっちゃけ SMS 認証を含む経路外デバイスを使った認証は排除するか(ルックアップ・シークレットのように)優先順位を下げて非常時のみ使えるようにするのがいいと思う。 もちろん電話番号を広告に流用するなど以っての外である。
生体情報は Authenticator として使えるか
Authenticator の分類を見れば分かるように,生体情報は単独では認証手段としては使えないという認識のようだ。 そもそも生体情報は秘密情報ではないのだから当たり前といえば当たり前かな。
ブックマーク
- usnistgov/800-63-3: Home to public development of NIST Special Publication 800-63-3: Digital Authentication Guidelines
- NIST SP800-63-3翻訳版63-Bパートの紹介
- 認証にまつわるセキュリティの新常識
- 世界の電子認証基準が変わる:NIST SP800-63-3を読み解く – サポート − トラスト・ログイン byGMO【旧SKUID(スクイド)】
- Phishing Resistant SMS Autofill - The GitHub Blog
参考図書
- セキュリティはなぜやぶられたのか
- ブルース・シュナイアー (著), 井口 耕二 (翻訳)
- 日経BP 2007-02-15
- 単行本
- 4822283100 (ASIN), 9784822283100 (EAN), 4822283100 (ISBN)
- 評価
原書のタイトルが “Beyond Fear: Thinking Sensibly About Security in an Uncertain World” なのに対して日本語タイトルがどうしようもなくヘボいが中身は名著。とりあえず読んどきなはれ。ゼロ年代当時 9.11 およびその後の米国のセキュリティ政策と深く関連している内容なので,そのへんを加味して読むとよい。