- Microsoft Entra IDにおける
多要素認証(MFA)の認証手段の一つ。 - ユーザーは「Microsoft Authenticator」などの認証アプリをスマートフォンにインストールし、表示される6桁〜8桁の動的な数字を入力してログインを完了させる
- Google WorkspaceとのSSO連携(フェデレーション)を組んでいる場合、Googleへのログイン時にもこのEntra ID側のTOTP(MFA)を強制することが可能になり、組織全体のセキュリティレベルを均一に高めることができる
TOTPコードの生成原理
┌──────────────────┐ ┌──────────────────────┐
│ 秘密鍵(共有済) │ │ 現在時刻(30秒単位) │
│ (初回セットアップ│ + │ 例: 1750000020 │
│ 時にQRコード等で │ │ ← 30秒ごとに変わる │
│ アプリと共有) │ └──────────────────────┘
└──────────────────┘ │
│ │
└──────────┬───────────┘
▼
HMAC-SHA1 演算
│
▼
┌─────────────────┐
│ 6桁コード生成 │ 例: 8 4 7 3 9 2
│ 30秒後には別の │ ← 使い捨て・時限式
│ コードになる │
└─────────────────┘
ポイントは秘密鍵と時刻の両方が揃わないと同じコードを生成できないこと。攻撃者がコードを盗み見ても30秒で無効になるため、フィッシングや盗聴に強い。
Entra MFA(TOTP)の認証フロー
ユーザー Microsoft Entra ID 認証アプリ
| | (Authenticator等)
| ① ID/パスワード入力(第1要素)| |
|--------------------------->| |
| ② 第1要素OK・MFA要求| |
|<---------------------------| |
| | |
| ③ アプリを開いて6桁コードを確認 ────────────────────────>|
| (秘密鍵 + 現在時刻で生成) |
|<──────────────────────────── ④ コード表示(例: 847392) |
| | |
| ⑤ 6桁コード入力(第2要素) | |
|--------------------------->| |
| ⑥ コード検証 | |
| (Entra側も同じ秘密鍵| |
| +現在時刻でコードを | |
| 生成し、一致確認) | |
| ⑦ 認証成功 | |
|<---------------------------| |
なぜEntra側でも同じコードを生成できるの? セットアップ時に秘密鍵をEntra IDとユーザーのアプリの両方に共有している。そのため「同じ秘密鍵 × 同じ時刻」から同じコードを独立に生成でき、ネットワーク越しにコードを送受信することなく検証できる(共有秘密鍵方式)。
Q. MFA強制はEntraの管理画面で設定できるの?
はい、設定できます。 主な設定箇所は以下の2つ:
① 認証方法ポリシー(Authentication Methods Policy)
- Entra管理画面(entra.microsoft.com)→「保護」→「認証方法」
- TOTPを認証手段として有効化し、ユーザー/グループに割り当てる
② 条件付きアクセスポリシー(Conditional Access Policy)
- 「保護」→「条件付きアクセス」→「新しいポリシー」から設定
- 「誰が・どのアプリに・どんな条件でアクセスする場合に・何を要求するか」を定義できる