多要素認証(MFA)とは?パスワード漏洩を防ぐ「最強の盾」

結論: 多要素認証(MFA)とは、ユーザーの正当性を確認するために、「知識」「所持」「生体」という3つの異なるカテゴリの中から、2つ以上の要素を組み合わせて認証を行う仕組みです。

従来の「IDとパスワード」だけの認証では、パスワードが漏洩した時点でアカウントが乗っ取られてしまいます。多要素認証は、たとえパスワードが盗まれても、もう一つの鍵(スマホや指紋など)がなければログインできない状態を作ることで、セキュリティの強度を劇的に高めます。

この記事では、多要素認証の仕組みや種類、導入時に注意すべきポイントから、実務でよくあるトラブルまでを徹底的に解説します。

Contents

多要素認証(MFA)を支える「3つの柱」

多要素認証を理解する上で最も重要なのが、認証の「要素」という考え方です。セキュリティの世界では、本人を確認するための要素を以下の3つに分類しています。

1. 知識情報(Something you know)

本人だけが「知っている」情報です。

  • パスワード
  • PIN(暗証番号)
  • 「ペットの名前は?」などの秘密の質問

2. 所持情報(Something you have)

本人だけが「持っている」デバイスや物理的なアイテムです。

  • スマートフォン(認証アプリやSMSを受け取る端末)
  • ハードウェアトークン(専用の数字表示機)
  • ICカードやUSBセキュリティキー(YubiKeyなど)

3. 生体情報(Something you are)

本人「自身」の特徴です。

  • 指紋
  • 顔(顔認証)
  • 虹彩や静脈

「多要素」とは、これら異なるカテゴリから要素を組み合わせることを指します。「パスワード」と「秘密の質問」を組み合わせるケースがありますが、これは両方とも「知識情報」に分類されるため、厳密には多要素認証ではなく「多段階認証」と呼ばれます。

Yachi

開発やサービスの選定において「多要素認証に対応しています」という言葉を聞いたとき、それが「異なるカテゴリの要素を組み合わせているか」を確認することが重要です。同じカテゴリの要素を重ねても、攻撃者がそのカテゴリの情報(例:個人の秘密情報)を狙ってきた場合には、一気通貫で突破されるリスクがあるからです。

なぜパスワードだけでは足りないのか

インターネットが普及し始めた頃、認証はパスワードだけで十分だと考えられていました。しかし、現在ではパスワードのみの運用は非常にリスクが高いとされています。その理由は、攻撃手法の進化にあります。

リスト型攻撃(パスワードリスト攻撃)

他のサービスから流出したIDとパスワードのリストを使い、別のサービスへのログインを試みる手法です。ユーザーがパスワードを使い回している場合、一箇所の漏洩がすべてのサービスへの侵入を許すことになります。

フィッシング詐欺

本物そっくりの偽サイトへ誘導し、ユーザー自身にパスワードを入力させる手法です。どれだけ複雑なパスワードを設定していても、ユーザーが自分の手で入力してしまえば、攻撃者はそれをそのまま利用できてしまいます。

多要素認証による防御

ここでMFAが威力を発揮します。攻撃者がパスワードを手に入れたとしても、ユーザーの手元にあるスマートフォンに届く「ワンタイムパスワード」や「承認ボタン」がなければ、ログインは完了しません。物理的な距離やデバイスの所有という壁を作ることで、リモートからの攻撃を物理的に遮断できるのです。

「二要素認証(2FA)」と「多要素認証(MFA)」の違い

よく似た言葉に「二要素認証(2FA: Two-Factor Authentication)」があります。結論から言うと、2FAはMFAの一部です。

  • 二要素認証(2FA): 異なる2つの要素を使うこと(例:パスワード + 指紋)。
  • 多要素認証(MFA): 2つ、あるいは3つ以上の要素を使うこと。

実務においては、ほとんどのケースで「2つの要素」が使われるため、両者はほぼ同義として扱われることが多いです。しかし、軍事施設や極めて機密性の高いシステムでは、パスワード(知識)+ ICカード(所持)+ 静脈(生体)といった3要素すべてを要求するケースもあり、これらを総称してMFAと呼びます。

効率的なID管理を実現する「SSO」については、こちらの記事が参考になります。

主要な認証手段のメリット・デメリット

MFAを実現する手段はいくつかあります。それぞれの特徴を理解し、用途に合わせて選択する必要があります。

1. 認証アプリ(TOTP)

Google AuthenticatorやMicrosoft Authenticatorなどのアプリを使用する方法です。30秒ごとに更新される6桁の数字(ワンタイムパスワード)を入力します。

  • メリット: 通信環境がなくても利用できる。導入コストが低い。
  • デメリット: スマホを機種変更する際や紛失した際の引き継ぎが面倒。

2. SMS(ショートメッセージサービス)

登録した電話番号に確認コードが届く方法です。

  • メリット: アプリのインストールが不要で、誰でも使いやすい。
  • デメリット: モバイルネットワークの電波が必要。海外で受け取れない場合がある。「SIMスワッピング」と呼ばれる、電話番号を乗っ取る高度な攻撃に対して脆弱。

3. プッシュ通知(承認型)

ログイン試行時にスマホへ「ログインしますか?」という通知が届き、「はい」を押すだけの方法です。

  • メリット: 数字を入力する手間がなく、UX(ユーザー体験)が非常に良い。
  • デメリット: 「MFA疲労」と呼ばれる攻撃(後述)に弱い側面がある。

4. ハードウェアセキュリティキー

USBポートに差し込む物理的な鍵(YubiKeyなど)を使用する方法です。

  • メリット: フィッシング詐欺に対して最も耐性が高い(最強のセキュリティ)。
  • デメリット: デバイスの購入コストがかかる。持ち歩く必要があり、紛失のリスクがある。
方式セキュリティ強度ユーザーの利便性導入コスト
SMS中(SIM乗っ取りリスク)
認証アプリ
プッシュ通知最高
物理キー最高
Yachi

最近はSMS認証の脆弱性が指摘されることが多くなっています。特に、開発者アカウントや管理者アカウントなど、権限の強いアカウントについては、SMSではなく認証アプリや物理キーを使用することが、運用のスタンダードになりつつあります。

実務で直面するMFAの「運用トラブル」と対策

MFAを導入するとセキュリティは向上しますが、一方で運用上の課題も増えます。これらを想定しておかないと、ユーザーや従業員の業務を止めてしまうことになります。

1. スマートフォンの紛失・故障

「スマホが壊れて認証コードが見られない」という問い合わせは、MFA運用において最も頻繁に発生します。

  • 対策: 導入時に必ず「リカバリーコード(バックアップコード)」を発行させ、安全な場所に保管するよう促す必要があります。管理者がコードを再発行できる仕組みも必須です。

2. 「MFA疲労」攻撃

攻撃者が何度もログインを試行し、ユーザーのスマホにプッシュ通知を連打する攻撃です。ユーザーが「うるさいな、とりあえず承認して終わらせよう」と、深く考えずに「はい」を押してしまうことを狙っています。

  • 対策: 最近のMicrosoft Authenticatorなどは、通知に表示された数字をアプリ側で入力させる「数値マッチング」という方式を導入し、この問題に対応しています。

3. 海外出張や通信環境

SMS認証に頼っていると、海外出張先で現地のSIMに入れ替えた際、日本の番号でSMSが受け取れずログインできない事態に陥ります。

  • 対策: 海外渡航が想定される場合は、オフラインでも動作する認証アプリ(TOTP)や物理キーを推奨すべきです。

MFAを支える技術的背景:TOTPとWebAuthn

少し専門的な話になりますが、MFAを支える主要なプロトコルについて触れておきます。

TOTP(Time-based One-Time Password)

「認証アプリ」で使われている仕組みです。サーバーとアプリの間で「共通の鍵(シークレット)」を共有しておき、それと「現在の時刻」を組み合わせて計算することで、その瞬間だけのパスワードを生成します。時刻をもとにしているため、インターネットに繋がっていなくても計算が合うのです。

FIDO2 / WebAuthn

物理キーや、iPhoneのFace ID、Androidの指紋認証などをブラウザ経由で利用するための規格です。これは従来のパスワード認証そのものを置き換える可能性を秘めた技術で、パスワードを一度もネットワーク上に流さずに認証できるため、フィッシング詐欺を100%近く防げるとされています。

認証とセットで語られる「OAuth」の仕組みについてはこちらの記事をチェック!

開発時に考慮すべき「ユーザー体験」の設計

プロダクトにMFAを組み込む際、セキュリティを重視するあまり、ユーザーに過度な負担を強いていないか検討する必要があります。

信頼できるデバイスの登録

一度MFAで認証したブラウザやPCを「信頼できるデバイス」として保存し、次回以降(例えば30日間)はMFAを省略する機能です。これにより、セキュリティを維持しつつ、日々のログインの手間を軽減できます。

段階的な導入

最初から全ユーザーにMFAを強制すると、設定に戸惑うユーザーが続出し、サポート窓口がパンクします。まずは「任意設定」としてリリースし、メリットを啓蒙した上で、重要な操作(決済や個人情報変更)のときだけ必須にする、といったステップを踏むのが定石です。

Yachi

開発チーム内でよく議論になるのが「どのタイミングでMFAを求めるか」です。ログイン時だけでなく、APIキーの発行や管理権限の付与など、プロダクトにとって「一歩間違えると致命的な操作」の直前で再度MFAを求める(ステップアップ認証)手法は、非常に実用的なアプローチです。

誤解してはいけない「MFAの限界」

「MFAを導入したから、もうハッキングの心配はない」と考えるのは危険です。MFAは万能ではありません。

セッションハイジャック

ログインが完了した後の「セッション(ログイン中という状態)」を盗まれると、MFAは無意味です。ブラウザのCookieなどが盗まれた場合、攻撃者はMFAを通過した後の状態であなたのサービスを利用できてしまいます。

中間者攻撃(AiTM)

本物のサイトとユーザーの間に、攻撃者のサーバーを介在させる手法です。ユーザーが偽サイトにパスワードとMFAコードを入力すると、攻撃者がそれをリアルタイムで本物のサイトに転送してログインを完了させます。

これを防ぐためには、先述した「WebAuthn(FIDO2)」のように、サイトのドメインと紐付いた、偽サイトでは動作しない認証方式を採用する必要があります。

セッション管理の鍵となる「Cookie(クッキー)」の仕組みはこちらの記事で解説しています。

これからの主流「パスキー(Passkeys)」への移行

近年、GoogleやApple、Microsoftが強力に推進しているのが「パスキー」です。これはMFAの進化系とも言える技術で、そもそも「パスワードという概念をなくす」ことを目的としています。

パスキーを使えば、ユーザーはデバイスのロック解除(指紋や顔認証)を行うだけで、そのデバイス自体を「所持要素」かつ「生体要素」として利用し、安全にログインできるようになります。生成AIの普及により、より巧妙なフィッシングサイトが容易に作られる時代において、パスキーのような「人間が介在しない認証」の重要性は増しています。


まとめ:MFAは「面倒な手続き」ではなく「最後の砦」

  • MFAは「知識」「所持」「生体」から2つ以上を組み合わせる仕組み
  • パスワードが漏洩しても、別要素の鍵があればアカウントを守れる。
  • 認証アプリ(TOTP)はバランスが良く、物理キーは最も安全。
  • リカバリーコードの管理は、運用の成功を左右する最重要事項。
  • MFAも万能ではないが、導入することで攻撃の難易度を劇的に上げることができる。

多要素認証は、ユーザーにとっては確かに一手間増える仕組みです。しかし、一度アカウントを乗っ取られた際のダメージ(金銭的被害、情報の流出、信頼の失墜)を考えれば、これほどコストパフォーマンスの良い投資はありません。

実務においては、単に「機能を実装する」だけでなく、紛失時のリカバリーフローやユーザーへの説明、将来的なパスキーへの対応といった広い視点を持って、認証の設計に取り組ることが求められます。

この記事を書いた人

生成AIコンサルタント / テックリード

外資系IT企業にて社内の生成AI活用推進と
生成AIプロダクト開発リードを担当。

かつてはWeb系のエンジニアとして、
モダンな技術スタックでのシステム開発から
数百億レコード規模のデータベース運用までを
フルスタックに経験。

「コードも書けるコンサルタント」として、
活用論と実装論の両面から、
現場で使えるIT知識を発信します。

Contents