Microsoft Entra TOTP

  • 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)

  • 「保護」→「条件付きアクセス」→「新しいポリシー」から設定
  • 「誰が・どのアプリに・どんな条件でアクセスする場合に・何を要求するか」を定義できる