SC300問題

問題

Microsoft 365 テナントがあります。
すべてのユーザーは携帯電話とラップトップを持っています。
ユーザーは、Wi-Fi アクセスや携帯電話接続のない遠隔地から作業することがよくあります。遠隔地から作業しているとき、ユーザーはラップトップをインターネットにアクセスできる有線ネットワークに接続します。
多要素認証 (MFA) を実装する予定です。
ユーザーが遠隔地から使用できる MFA 認証方法はどれですか?

  • A. Microsoft Authenticator アプリを介した通知
  • B. 電子メール
  • C. 秘密の質問
  • D. Microsoft Authenticator アプリからの確認コード

正解

D. Microsoft Authenticator アプリからの確認コード

解説

なぜ、オフライン環境でアプリが生成した確認コード(ワンタイムパスワード)を使って認証が実現できるのかよくわからなかったので、調べてみました

要は、同じ生成ロジックを使って、オフライン環境でアプリが生成したワンタイムパスワードと同じパスワードをAAD側でも生成しているっぽい。それによって、アプリが生成したワンタイムパスワードの正しさを担保している。

————————————————————————–

Microsoft Authenticatorアプリはタイムベースのワンタイムパスワード (TOTP: Time-Based One-Time Password) アルゴリズムを利用しています。これは、共有秘密鍵と現在の時間情報を元に一定時間ごとに一意のパスワード(通常は6桁の数字)を生成する方法です。

TOTPの仕組みは以下の通りです:

  1. アプリが初めて設定されるとき、Azure AD (あるいは他のMFAを提供するシステム) とAuthenticatorアプリとの間で「共有秘密鍵」が生成され、交換されます。これは通常、QRコードをスキャンすることで行われます。
  2. ログイン時にMFAが要求されると、ユーザーはMicrosoft Authenticatorアプリを開きます。アプリは共有秘密鍵と現在の時間(UNIXタイムスタンプを一定の間隔で切り捨てたもの)を組み合わせて、一意のワンタイムパスワードを生成します。
  3. ユーザーがこのパスワードをログイン画面に入力すると、Azure ADも同じ共有秘密鍵と同じ時間情報を使用して同じワンタイムパスワードを生成します。
  4. Azure ADは、ユーザーが入力したパスワードと自分が生成したパスワードが一致するかどうかを確認します。一致した場合、認証は成功します。

このため、Authenticatorアプリはインターネット接続がなくてもワンタイムパスワードを生成でき、それがAzure ADによって認証できます。共有秘密鍵は安全に保管され、盗まれることなく保護されています。

ちなみにログインプロセスは以下のようになるらしいです。

  1. ユーザーID(通常はメールアドレス)とパスワードを使用してサービスにログインします。
  2. サービスはユーザーにMFA認証を求めます。この時点で、ユーザーはMicrosoft Authenticatorアプリを開きます。
  3. アプリは一定時間ごと(通常は30秒ごと)に新しい6桁のワンタイムパスワード(OTP)を生成します。このパスワードは、アプリがインターネットに接続していなくても生成されます。
  4. ユーザーは、Microsoft Authenticator アプリが生成したOTPをサービスのMFA認証画面に入力します。
  5. 正しいOTPが入力されると、ログインプロセスは完了し、ユーザーはサービスにアクセスできます。

Azure

Posted by mitsuru