多要素認証、多段階認証、正しい知識
目次
多要素認証、多段階認証、正しい知識
昨今、多要素認証(MFA)や2要素認証(2FA)などといった言葉が認証の標準として広く利用されています。
この、『要素』や『段階』について正しい知識を有している方が少ないと感じており、これに関する解説記事となります。
『認証』とはなにか
よく間違えて使われているため単語となるため、本題の前に整理の章を挟ませていただきます。
『認証』(Authentication)とは、人を特定することです。
よく間違われる使い方としては下記のようなものがあります。
- アリスさんは、プロジェクトのファイルサーバーにアクセスが認証されている。
- アリスさんは、会社のSNSアカウントの利用が認証されている。
- アカウント
alice
の SNSアカウントとシステム連携する。
この利用法は、間違いです。
『認証』という言葉が指すとき、本人の特定だけを表します。
例示としては下記のような形です。
- アカウント
alice
の利用者は、アリスさんとして認証された。 - 今ログインしてきたユーザーは、アリスさんとして認証できた。
この間違い、『認可』(Authorization)という言葉との誤用のためです。
認可は、本人が何を出来るか? という概念です。
最初の間違いは、認可を表していたのです。
セキュリティを扱う際は、『認証』、『認可』、『認証・認可』といった言葉を正しく使い分ける必要があります。 似た言葉で誤用する可能性が高いため、注意をお願いいたします。
この章のまとめ
-
認証 Authentication
- 本人を特定すること。
- MFA などはコチラの分野
-
認可 Authorization
- 本人に適切な権限を付与すること。
- OAuth などは認可の技術
-
認証・認可
- 認証および、認可の複合
- SAML などは認証・認可の技術
認証の『要素』とはなにか
多要素認証(MFA: Multi Factor Authentication)とは、複数の『要素』を用いた認証のことです。
ここでは、認証の『要素』について考えたいと思います。
この中で、認証の要素となるものは分かりますでしょうか?
- ID / Password
- 携帯電話の認証アプリ
- 電話番号
- 記憶
この中で、正解は『記憶』のみとなります。
おそらく、多くの方が間違える問題かと思います。 この理解不足が、MFA というものの理解不足の一因であると考えております。
認証の『要素』といったとき、現段階で 3つしか有りません。
認証の要素とは『記憶』『所有』『生体』の 3つのみ です。 ID / Password などは、『要素』 ではなく、『要素』を実現する手法の一つなのです。
それぞれ、要素と手法の例示をしたいと思います。
-
記憶
- ID / Password
- 秘密の質問と答え
-
所有
- スマートフォンアプリ
- 電話番号
-
生体
- 指紋
- 虹彩
認証で、MFA や 2FA といった場合、これらから2つを選ぶ必要があります。 一昔前のアプリでよくあった『ID / Password』と『秘密の質問と答え』の組み合わせは間違いなのです。
正しい組み合わせとしては、 『記憶』(ID / Password) と 『所有』(スマートフォンアプリ)など、異なる要素同士の組み合わせを選ぶ必要があります。
この章のまとめ
-
認証の『要素』とは 下記の3つのみ
- 記憶 (ID/Password、秘密の質問など)
- 所有 (スマートフォンアプリ、電話番号など)
- 生体 (指紋、虹彩など)
-
多要素認証(MFA) や 2要素認証(2FA) とは
- 要素のうち、2つ、3つを組み合わせたもの
要素ごとのメリット、デメリット
なぜ、2つ以上の要素を組み合わせる必要があるのか?
それは、それぞれのメリット、デメリットがあり、それぞれが補っている状況があるためです。 たとえば、記憶は忘れる(本人認証ができなくなる)ことがありますが、生体は紛失する(認証できなくなる)ことは原則としてありません。
それぞれの認証ごとの重要な特徴を下記にまとめます。
-
記憶
-
メリット
- 変更することが出来る
- 一意に認証できる
-
デメリット
- 本人が忘れる
- メモなどにより、本人以外に漏洩する
-
-
所有
-
メリット
- 変更することが出来る
- 忘れることがない
- 一意に認証できる
-
デメリット
- 紛失する
-
-
生体
-
メリット
- 忘れることがない
- 紛失することがない
-
デメリット
- 変更することが出来ない
- 一意に認証できない
- 個人情報に抵触する
-
これらの特徴から、どの要素を使うか検討することが肝要なのです。
この章のまとめ
- 要素はそれぞれ、異なるメリット、デメリットをもつ
- 目的に合わせて必要な要素を選択する必要がある。
1段階認証と、多段階認証
これも、MFAとよく間違われる概念であり、正しく実装がされていない場合が多いものです。
たとえば、ID / Password と スマートフォンアプリの 2FA 認証の実装として以下のような実装をしていませんでしょうか?
- ユーザーの ID / Password を確認する。
- 正しければ次へ、間違っていればエラーを返す。
- ユーザースマートフォンアプリのトークンを確認する。
- 正しければログインを許可、間違っていればエラーを返す。
これは、多要素認証・多段階認証と呼ばれる仕組みとなります。
多段階認証は、攻撃者が多くの情報を知ることが出来るため、非推奨の実装となります。 認証を求める場合、その正しい実装は『多要素認証・1段階認証』となります。
具体的には、下記のような手順となります。
- ユーザーの ID / Password を確認する。
- ユーザースマートフォンアプリのトークンを確認する。
- ID / Password および トークンの組み合わせが正しければログインを許可、間違っていればエラーを返す。
なぜ、1段階認証が推奨されるのか考えてみたいと思います。
たとえば、多段階認証の場合を考えます。
攻撃者は 総当りで ID / Password を探索し、トークン確認が出るか確認します。 トークン確認が出た段階で攻撃者は ID / Password の組み合わせが正しい事がわかり、つぎは総当りでトークンを探索します。 トークンがわからない場合でも、ほかサイトで同じ ID / Passwordで入れるか確認することが出来ます。
ログインが出来なくても、攻撃者は ID / Password の組み合わせを知ることが出来るのです。
しかし、1段階認証の場合は異なります。
1段階認証では、ID / Password / トークンの全ての値がわからない限り突破できず、 ID / Password が正しいか否かも攻撃者は知ることが出来ないのです。
この章のまとめ
- 認証は 1段階認証で行う。
- 多段階認証では、ログインできなくても攻撃者は情報詐取が可能。
まとめ
MFAは昨今のシステムでは必須となりつつあります。 しかし、これだけMFAが普及しても正しい、『多要素認証・1段階認証』のサイトは少ないです。
正しい認証方法を身につけていただきたいと思います。
以上
本サイトの記事について
本サイトの記事は、プログラミングだけでなく、雑多な雑学を多く配信しております。
もしよろしければ、ほか記事も閲覧いただけますと幸いです。