多要素認証(MFA)
パスワードに加えて「所持」や「生体」など別の要素を組み合わせ、パスワード漏洩だけでは突破されないようにする認証方式です。
- 1.MFA は「知識(パスワード)」「所持(スマホ・鍵)」「生体(指紋・顔)」のうち、異なる種類の要素を2つ以上組み合わせる認証方式です。
- 2.強さの理由は、攻撃者が複数の独立した要素を同時に破る必要があるため。パスワードが漏れても、所持要素がなければログインできません。
- 3.実装では TOTP(認証アプリの6桁コード)が手軽。さらに強いのはフィッシング耐性のあるパスキー(FIDO2)で、SMS コードは相対的に弱い選択肢です。
なぜパスワードだけでは危険なのか
パスワードは「知識」という単一の要素に依存します。ところがパスワードは、フィッシング、使い回しの流出、総当たり、漏洩DBからの突合(クレデンシャルスタッフィング)など、何通りもの方法でまとめて漏れます。一度漏れれば、攻撃者は本人と同じようにログインでき、見分けがつきません。
多要素認証(MFA, Multi-Factor Authentication)は、この弱点を「別の種類の証拠も要求する」ことで補います。たとえパスワードが漏れても、攻撃者の手元に「あなたのスマホ」や「あなたの指紋」がなければ、ログインは成立しません。MFA は特別な技術というより、鍵を1本から2本に増やすという素朴で強力な発想です。
3つの認証要素
認証の「要素」は、性質の違う3つのカテゴリに分けられます。MFA の本質は、この異なるカテゴリから2つ以上を組み合わせる点にあります。
| 要素 | 意味 | 具体例 |
|---|---|---|
| 知識(something you know) | 本人だけが知っている情報 | パスワード、PIN、秘密の質問 |
| 所持(something you have) | 本人だけが持っている物 | スマホの認証アプリ、SMS、ハードウェアキー |
| 生体(something you are) | 本人の身体的特徴 | 指紋、顔、虹彩 |
ここで重要なのは「異なるカテゴリを組み合わせること」です。パスワードと秘密の質問は、どちらも「知識」なので2つあっても多要素にはなりません(同じ漏れ方をするため)。パスワード(知識)+認証アプリ(所持)のように、別々の壊れ方をする要素を足して初めて意味が出ます。
パスワードを2回聞く、秘密の質問を足す、といった方式は「2段階」ではあっても、同じ知識要素を重ねただけで多要素ではありません。フィッシングサイトで両方まとめて入力させられれば一緒に漏れます。守りを増やすなら、必ず「所持」か「生体」という別カテゴリの要素を追加してください。
なぜ強いのか:独立した壁を重ねる
MFA の強さは確率で考えると分かりやすくなります。攻撃者が突破するには、複数の独立した要素を同時にすべて破る必要があります。パスワードを盗む手口(フィッシング)と、スマホを物理的に奪う手口は別物なので、両方を同時に成立させるのは桁違いに難しくなります。
実際、主要なプロバイダの調査では、MFA の導入が自動化された不正ログインの大半を防ぐと報告されています。攻撃者にとって「割に合わない標的」になるため、より守りの薄い相手へ移る動機づけにもなります。
- 漏洩DBが無力化:流出したパスワード一覧で総当たりしても、所持要素がなければ前に進めません。
- 総当たりが効かない:所持要素のコードは短時間で切り替わるため、推測の試行が間に合いません。
- 被害の局所化:1サービスのパスワードが漏れても、MFA があれば即時のアカウント乗っ取りには直結しません。
TOTP とパスキー:実装の主役
実務で広く使われるのが TOTP(Time-based One-Time Password)です。認証アプリ(Google Authenticator など)が、サーバと共有した秘密鍵と現在時刻から30秒ごとに変わる6桁コードを生成します。サーバ側も同じ計算をして照合するため、通信なしで一致を確認できます。手軽で広く普及していますが、コード自体は人が入力する文字列なので、偽サイトに入力させられると盗まれます(フィッシング耐性は限定的)。
TOTP = HOTP(共有秘密鍵, floor(現在時刻 / 30秒))
# 30秒ごとに値が変わる6桁コード。サーバと端末が同じ秘密鍵を持つ前提
さらに強いのが **パスキー(FIDO2 / WebAuthn)**です。端末内の秘密鍵で「このサイト(ドメイン)に対する署名」を生成する公開鍵暗号方式で、入力する文字列が存在しないのが要点です。署名は登録元のドメインに紐づくため、偽サイトでは原理的に成立せず、フィッシングに強いのが最大の利点です。生体認証(指紋・顔)で手元の鍵を解錠する形が一般的で、利便性も高くなります。
| 方式 | 仕組み | フィッシング耐性 | 評価 |
|---|---|---|---|
| SMS コード | 電話番号宛にコード送信 | 弱い | 無いよりは良いが、SIMスワップ等で奪われやすい |
| TOTP(認証アプリ) | 時刻+秘密鍵で6桁生成 | 限定的 | 手軽で普及。偽サイト入力には弱い |
| パスキー(FIDO2) | ドメイン紐づけの署名 | 強い | 現状の最有力。入力する文字列が無い |
迷ったら優先順位は (1) パスキー、(2) 認証アプリの TOTP、(3) SMS の順です。SMS はSIMスワップ(電話番号の乗っ取り)や中継フィッシングで突破される事例があり、要素として最も弱い選択肢です。すべてのユーザーが対応端末を持つとは限らないため、複数方式を提供しつつ、強い方式を既定に据えるのが現実的です。
導入時に押さえること
MFA は「足せば終わり」ではなく、運用設計まで含めて初めて機能します。
- リカバリ手段:端末を紛失した場合に備え、バックアップコードや予備の要素を用意します。ここが甘いと、リカバリ経路がそのまま攻撃の抜け穴になります。
- 登録フローの保護:MFA を後付け登録する画面こそ攻撃者に狙われます。本人確認を強めに行ってください。
- 疲労攻撃への注意:プッシュ通知を連打して「うっかり承認」を狙う手口があります。番号照合(number matching)型のプッシュやパスキーで回避します。
MFA はパスワードを置き換えるのではなく、漏洩を前提にした上乗せの防御です。土台となるパスワード自体の安全な保管はパスワードの安全な保存、ログイン状態をどう保持するかはWeb認証の仕組み、認証と認可の役割分担は認証と認可の違いで整理できます。
セキュリティ Article
多要素認証(MFA)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
MFA
比較で見る軸
難易度: basic / カテゴリ: セキュリティ / タグ数: 4
導入後に効く点
強さの理由は、攻撃者が複数の独立した要素を同時に破る必要があるため。パスワードが漏れても、所持要素がなければログインできません。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- basic
- カテゴリ
- セキュリティ
- タグ数
- 4
判断チェックリスト
- 自社の用途が「MFA / 多要素認証」に近いか確認する。
- 強みである「MFA は「知識(パスワード)」「所持(スマホ・鍵)」「生体(指紋・顔)」のうち、異なる種類の要素を2つ以上組み合わせる認証方式です。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。