こんにちは、村木ゆりかです。
Windows 10 の新たな認証機能である Windows Hello と Microsoft Passport をスッキリ理解しよう。これまでの回では、Windows Hello と Microsoft Passport の概要、そして Active Directory で利用されている ID とパスワードのケルベロス認証、スマートカードによる認証との違いを解説しました。今回は、Azure Active Directory (Azure AD) 利用における Microsoft Passport for Work のセットアップと認証の流れを説明します。
Microsoft Passport プロビジョニング
Microsoft Passport を利用するためには、まずセットアップ (プロビジョニング) が行われます。
(1) Azure AD へのデバイスの登録
Microsoft Passport for Work では、以下の 3 種類の Azure AD へのデバイス登録方法がサポートされています。(注意: 2016 年 4 月執筆時点、今後変更になる可能性があります)
- ドメイン参加 + Azure AD への登録
- Azure AD Join
- 職場または学校への接続 (現在はモバイル デバイス管理 (MDM) による自動登録が必要。今後サポート予定)
(2) デバイスの登録後、ユーザーが Windows へサインインする際、以下の条件を満たしている場合、https://account.live.com/aadngc でホストされている Microsoft Passport for Work のプロビジョニングが開始されます。
- Microsoft Password for Work のポリシーが設定されている: デバイスがドメイン参加 + Azure AD 登録の場合はポリシーが有効になっている (既定は無効) 場合。デバイスが Azure AD Join の場合は、ポリシーは既定で有効。
- リモート セッションではない: ユーザーがリモート デスクトップ サービス セッション (RDS) 経由で接続している場合はプロビジョニングは開始されません (Hyper-V の拡張セッション モードでの接続を含む)。
(3) – (5) ユーザーが「PIN を作成」ボタンをクリックすると dsreg.dll の WinRT の API の部分が呼び出され、処理が開始されます。まず、Azure DRS へ現在のユーザーを認証し、トークンを取得します。
以下の条件を満たす場合、多要素認証が行われます。
-
ドメイン参加 + Azure AD 登録を利用している場合: ドメイン参加ではユーザー名とパスワードを利用していますので、認証強化のために多要素認証が行われます。
-
Azure AD Join の場合: Microsoft Passport をプロビジョニングしているユーザーが、最初にその端末を Azure AD へ参加させたユーザー (デバイスの属性「RegisteredOwners」に設定されているユーザー) で、参加時に多要素認証を行っている場合は、多要素認証は行われません。それ以外のユーザーの場合は、多要素認証が行われます。
-
フェデレーションを行っている場合は、Azure AD か、ADFS などから多要素認証を行うことができます。
(6) Microsoft Passport の認証で利用するための公開鍵暗号の鍵ペアを生成します。(RSA 2,048 ビット鍵) TPM が利用できる場合は、鍵ペアは TPM に「鍵コンテナー」単位くらいで保存されています。
(7) – (8) TPM に保存されている鍵ペアへのアクセスを行うための PIN の設定を行います。
(9) TPM に保存されている鍵ペアが保管されている鍵コンテナーに、PIN が設定されます。
(10) - (11) Azure DRS へ公開鍵を登録します。
Microsoft Passport 認証の流れ
セットアップ (プロビジョニング) が終わったら、Microsoft Passport を利用して、Azure AD への認証、アプリケーションへのシングル サインオン (SSO) を行うことができます。
(1) – (2) デバイスへの認証による鍵ペアへのアクセス
Windows Hello により、デバイスへの認証が行われると、公開鍵暗号で利用するための鍵 (秘密鍵) へのアクセスを行うことができるようになります。
(3) デバイスは Azure AD へ認証を要求します。この認証要求は空の認証要求です。すなわち、ID とかパスワードなどは入っていません。
(4) Azure AD は、デバイスに、Nonce (チャレンジ) を送ります。
(5) デバイスは送られてきた Nonce に、秘密鍵で署名します。
(6) デバイスは送られてきたオリジナルの Nonce, 署名した Nonce, キー ID を Azure AD に送ります。
(7) Azure AD では、署名された Nonce の署名を検証します。検証には、デバイスの Microsoft passport プロビジョニングで登録した公開鍵を使って、検証します。秘密鍵を持ったデバイスによって署名されている = 秘密鍵を持っているデバイスから認証要求がきている、ということで認証が成功します。
(8) 認証が成功すると、Azure AD はプライマリ リフレッシュ トークン (PRT) をデバイスに送ります。PRT は、別の暗号鍵 (対称鍵) で暗号化されており、その対象鍵が、デバイスの公開鍵で暗号化されています。
(9) デバイスは、PRT を暗号化している鍵 (対象鍵) を、デバイスの TPM に保存されている秘密鍵で復号化します。そして、対称鍵で PRT を復号化します。
(10) – (11) アプリケーションにアクセスする場合は、アクセス トークンが必要になります。デバイスは、PRT を元に Azure AD にアクセス トークンを要求し、発行してもらいます。
(12) – (13) アクセス トークンを提示して、アプリケーションやサービスにアクセスします。
Microsoft Passport では、認証に必要な暗号鍵は、各デバイスの TPM に格納されています。これは その端末だけに有効な Windows Hello か、PIN でその端末を入手した上で操作する必要があり、リモートから攻撃者が不正にログオンすることはできません。また、Azure AD 側には、だれでも入手可能な情報である公開鍵が保存されているのみで、たとえばパスワードのように秘密にしておかなければならない情報はありません。
まとめ
端末への生体認証である Windows Hello、そして、Windows Hello あるいは PIN を使った信頼できるデバイスへのログオンと、公開鍵暗号を利用した認証サーバーへの認証を組み合わせて使う新しい認証である Microsoft Passport。これまでの ID とパスワードのセキュリティ脅威を解消するために、公開鍵暗号を利用し、認証を 2 段階に分けることで、セキュリティを高める部分と利便性を高める部分を整理した認証方法を提供しています。
また、Active Directory (AD) においては、現在最も一般的に利用されている ID とパスワードでは、展開や運用は楽だが、パスワードの管理は煩雑で現在の脅威にはセキュリティがもの足りない。2 要素認証かつ公開鍵暗号のスマートカード認証ならセキュリティは高まるが、PKI の運用は負担が大きいという悩みがありました。Microsoft passport では、PKI を展開する必要なく、2 要素認証と公開鍵暗号でのセキュリティを高め、現在のパスワードに対する脅威から、AD の資格情報を保護することができます。
ぜひ、Windows 10 を利用して AD 環境への Windows Hello + Microsoft passport の展開を検討してみてください。
-—————————-
■ これまでの連載記事
Windows 10: パスワード、スマート カード、そして Windows Hello + Microsoft Passport。それぞれの違いを理解しよう (1)
Windows 10: パスワード、スマート カード、そして Windows Hello + Microsoft Passport。それぞれの違いを理解しよう (2)
- 解説ビデオ: Channel 9