# 多要素認証（MFA）とは？方式の比較と導入時に外せない注意点

多要素認証（MFA）の定義と、SMS・認証アプリ・セキュリティキーなど方式ごとの違い、ログイン以外で求める場面、復旧手段やプッシュ通知の悪用への対策を、OWASPとNISTの資料をもとに解説します。

多要素認証（MFA）は、知っているもの・持っているもの・本人の特徴のうち、2つ以上を組み合わせて本人を確かめる仕組みです。パスワードが漏れても、それだけではログインされにくくなります。ただし方式によって強さが大きく違い、復旧手段が弱いとそこから破られます。Webサービスに導入する側が押さえる点を、OWASPとNISTの資料をもとに整理します。

<Points>

- パスワードと秘密の質問のように、同じ種類の要素を重ねても多要素認証にはならない
- フィッシングに強いのはセキュリティキーやパスキー。コードを手で入力する方式はフィッシングへの耐性があるとはみなされない
- ログイン時だけでなく、APIなどの別経路、復旧手段、要素の変更まで同じ強さで守る

</Points>

## 多要素認証とは

総務省は、認証の3要素を「知識情報」「所持情報」「生体情報」とし、このうち2つ以上を組み合わせる認証を多要素認証と説明しています。2つの要素を使うものが2要素認証です。

<Figure title="認証の3要素" source="総務省「国民のためのサイバーセキュリティサイト」、OWASP Multifactor Authentication Cheat Sheet">

| 要素 | 例 |
| --- | --- |
| 知識情報（知っているもの） | パスワード、PIN |
| 所持情報（持っているもの） | 認証アプリの入ったスマートフォン、セキュリティキー、スマートカード |
| 生体情報（本人の特徴） | 指紋、顔 |

</Figure>

<Note tone="caution">

OWASPは、パスワードとPINのように同じ要素を重ねても多要素認証にはならず、安全性もほとんど上がらないと説明しています。パスワードと信頼できるIPアドレスの組み合わせも同様です。位置やIPアドレスは、リスクの判定に使う情報として扱います。

</Note>

## 方式ごとの違い

どの方式を選ぶかで、防げる攻撃が変わります。OWASPとNIST SP 800-63B-4の説明をまとめると、次のとおりです。

<Figure title="主な方式の比較" source="OWASP Multifactor Authentication Cheat Sheet、NIST SP 800-63B-4">

| 方式 | 良い点 | 注意点 |
| --- | --- | --- |
| セキュリティキー（FIDO） | 秘密鍵が端末の外に出ず、フィッシングに強い | 購入費用がかかり、紛失に備える必要がある |
| パスキー | 秘密鍵の所持とPINや生体の確認を組み合わせられる | サーバー側で本人確認のフラグを確かめる必要がある |
| 認証アプリ（TOTP） | 低コストで導入でき、標準に沿うアプリが使える | コードを手で入力するため、フィッシングで中継されうる |
| SMS・音声通話 | 導入が簡単で、利用者も慣れている | SIMの乗っ取りや通信の傍受の影響を受ける。送信費用を狙った大量送信にも備える |
| メール | 導入が簡単 | NISTは認証の経路としての利用を禁じている |
| 秘密の質問 | なし | 認証の要素として認められていない |

</Figure>

### SMSは避けるべきか

NIST SP 800-63B-4は、SMSや音声通話を使う認証を「制限付き」と位置づけ、使う場合はそれ以外の方法も利用者に用意するよう求めています。OWASPは、個人情報を扱うアプリケーションの保護には使わないよう勧めています。すでにSMSを使っているサービスでは、認証アプリやパスキーを選べるようにするところから始めるのが現実的です。

### フィッシングへの強さ

NIST SP 800-63B-4は、認証の結果を手で入力する方式（ワンタイムコードなど）を、フィッシングへの耐性があるとはみなしていません。また、保証レベルAAL2では耐性のある選択肢を少なくとも1つ用意すること、AAL3では耐性のある認証器を使うことを求めています。これは米国連邦政府向けの基準ですが、民間のサービスでも方式を選ぶときの参考になります。パスキーの仕組みは[パスキーの解説](/passkey/)にまとめています。

## どこで多要素認証を求めるか

OWASPは、最も重要なのはログイン時だとしたうえで、次の操作でも求めることを勧めています。

<Figure title="多要素認証を求める場面" source="OWASP Multifactor Authentication Cheat Sheet">

| 場面 | 例 |
| --- | --- |
| ログイン | パスワードなどを確かめた後 |
| 認証情報の変更 | パスワードやメールアドレスの変更 |
| 守りを外す操作 | 多要素認証の無効化 |
| 権限の昇格 | 通常のセッションから管理者のセッションへ切り替える |

</Figure>

見落としやすいのは別の入口です。OWASPは、ログインに使える別のAPIやモバイルアプリの経路を、よく漏れる場所として挙げています。ログイン画面だけ守っても、別の経路が残っていれば意味がありません。

## 導入するときの手順

既存のサービスに入れるなら、次の順で進めます。

<Steps>
<Step title="守る範囲と入口を洗い出す">

ログイン画面に加えて、API、モバイルアプリ、管理画面、古い認証方式の経路を一覧にします。

</Step>
<Step title="方式を選び、複数を登録できるようにする">

認証アプリやパスキーなどを用意します。複数の方式を登録してもらうと、すべてを同時に失う可能性を減らせます。

</Step>
<Step title="復旧手段を先に決める">

端末を失った利用者が戻れる方法を決めます。OWASPは、1回限りのリカバリコードの発行や、厳格な本人確認を伴うサポート対応などを例に挙げています。

</Step>
<Step title="要素の変更と失敗を通知する">

電話番号や認証アプリの変更では既存の要素で再度確認し、変更したことを利用者へ知らせます。第2要素の失敗も、パスワード漏えいの兆候として通知します。

</Step>
</Steps>

<Note tone="info">

ワンタイムコードを自前で実装するなら、短い有効期限、1回限りの利用、試行回数の制限を入れます。コードをログに出してはいけません。OWASPはパスワードに準じて慎重に扱うよう求めています。

</Note>

## 多要素認証を破る手口と対策

多要素認証を入れても、攻撃がなくなるわけではありません。OWASPは次の手口と対策を挙げています。

<Figure title="主な手口と対策" source="OWASP Multifactor Authentication Cheat Sheet">

| 手口 | 内容 | 対策 |
| --- | --- | --- |
| MFA疲労 | プッシュ通知を繰り返し送り、利用者が誤って承認するのを待つ | 数字の照合を求める、通知の回数を制限する、短時間の大量通知を監視する |
| リアルタイムのフィッシング | 偽サイトが認証情報やセッションを中継する | 接続先に結びついた、フィッシングに強い方式を使う |
| SIMの乗っ取り | 電話番号を移され、SMSや音声のコードを受け取られる | 番号の変更を監視し、TOTPやフィッシングに強い方式を優先する |
| 弱い方式への切り替え | 古い認証経路や弱い代替手段を使わせる | 古い経路を止め、低い水準への切り替えを防ぐ |

</Figure>

利用者向けのフィッシング対策は[フィッシング詐欺の見分け方](/phishing-check/)にまとめています。

## よくある質問

### Q. 二段階認証と多要素認証は同じですか？

同じではありません。多要素認証は、種類の違う要素を組み合わせることを指します。段階が2つあっても、パスワードの後に秘密の質問を聞くだけなら、どちらも知識情報なので多要素認証にはなりません。

### Q. パスキーがあれば多要素認証は不要ですか？

OWASPは、パスキーは秘密鍵の所持とPINや生体の確認を組み合わせることで、フィッシングに強い多要素認証になり得ると説明しています。その場合はサーバー側で本人確認の結果を確かめる必要があります。タッチするだけの確認は第2要素になりません。

### Q. パスワードは弱くても大丈夫になりますか？

なりません。使い回しを避ける基本は変わりません。NIST SP 800-63B-4の文字数の基準を含め、[パスワード管理の解説](/password-management/)にまとめています。

出典: [総務省「国民のためのサイバーセキュリティサイト」パスワードの設定・管理](https://www.soumu.go.jp/main_sosiki/cybersecurity/kokumin/security/business/staff/06/)、[OWASP Multifactor Authentication Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Multifactor_Authentication_Cheat_Sheet.html)、[NIST SP 800-63B-4](https://pages.nist.gov/800-63-4/sp800-63b.html)
