Microsoft Passport とは ?

既に、本社の Active Directory チームにより以下の投稿がBLOGに掲載されていますのでご存知の方も多いかと思います。

Microsoft Passport and Azure AD: Eliminating passwords one device at a time!
https://blogs.technet.com/b/ad/archive/2015/07/21/microsoft-passport-and-azure-ad-eliminating-passwords-one-device-at-a-time.aspx

Windows 10 には Microsoft Passport という機能が実装されました。この機能により、サーバーに保存されたパスワードを使わずに、ローカルコンピューターに保存された(ローカルでしか使えない)「PIN」を使用して認証することができるようになりました。この機能は、Microsoft Account や Azure Active Directory で認証するときに加え、現在Preview提供中のWindows Server 2016で構築された Active Directory ドメインにサインインするときにも使用することができます。

この Windows 10 に実装された Microsoft Passport の仕組みは、FIDO(Fast IDentity Online, フィドー)アライアンスが策定中の FIDO 2.0 にもサブミットされ、仕様への組み込みに向けて検討されています。

Passport がパスワードと比べて何が安全かといえば、PINとデバイスの組み合わせによって認証できるため、例えば海外の得体の知らない第三者にパスワードがバレてのっとられる危険性を軽減することができます。つまりスマートカードを使用した認証同様の効果を、より安価なコストで実現することができるようになるわけです。もちろん、複雑で類推しずらいパスワードを定期的に変更している方にとっては「なんと生ぬるい!」ものに見えるかもしれませんが、不正侵入の70%近くがセキュリティパッチの適用不足と安直なパスワードが原因になっているという現状を鑑みれば、こうした方向性はむしろ歓迎すべきものであると言えます。これまでもISVによる個別ソリューションは多々存在していましたが、それらの混在による不整合がもたらす運用面や安全面のデメリットも、FIDO という有力ベンダー共同体が醸し出すある種の権威と統一化されたプロトコルによって解消されるわけですね。

image

image

ではここで、Microsoft Passport とはどんなものなのか、具体的に見ていきたいと思います。

Microsoft Passport は Windows 10 では規定で有効になっていますが、これを活性化するにはユーザーごとに PIN の設定を行う必要があります。PIN が生成されて保存されるのは TPM であることは前に触れましたが、規定のポリシー設定では TPM が実装されていないハードウェアであっても Passport を使用することができます(仮想マシンも含まれます)。その場合は、Passport によって管理される安全な領域が TPM の代わりに使用されます。

PIN を設定するためには、以下のいずれかの条件を満たす必要があります。

  • Microsoft Account を使用している
  • Azure Active Directory に参加している
  • Active Directory ドメインに参加している
    (Windows Server 2016 がドメインコントローラーの場合, 現在 Preview)
  • FIDO 2.0 に準拠したアイデンティティプロバイダーに参加している

1つのデバイスは、Microsoft Account と他の IdP を同時に使用することができますが、それぞれの PIN は個別に管理されることに注意してください。また、ローカルアカウントを使用している場合には、Passport は使用できません。

Microsoft Passport は PKI  非対称鍵をベースにしたテクノロジーです。

以下の図はデバイスを Azure AD に JOIN させる際のやりとりをトレースしたものです。ご覧いただいたとおりですが、オンプレミスのActive Directoryとは異なりデバイスの登録先は Azure Active Directory の デバイス登録サービスです。URLが manage.microsoft.com となっていることからもわかるとおり、これは Microsoft Intune でも使われているサービスです。登録の際は Kerberos は使われていません。デバイス登録サービスへのアクセス権を得るため、Azure Active Directory から OAuth 2.0 Access Token の発行を受けているところがオンプレミスとは異なります。

image

上記の処理が完了すると、以下のようにローカルコンピューターの証明書ストアにクライアント認証用の証明書が 2 つ格納されます。

image

以上の処理で、デバイスは Azure ADに登録されましたが、まだ Microsoft Passport のセットアップが完了したわけではありません。Passport のセットアップは、はじめてユーザーがサインインするときに行われます。

ユーザーが初めてサインインすると以下の画面が表示され、ウィザードに沿ってPINの登録を行います。途中、多要素認証が要求されます。

image

image

image

image

image

image

image

image

上記のフローを”ざっくりと”示したのが以下の図です。※手抜きですんません。本社BLOGからの転載です。。orz 力尽きました。。。生成された公開鍵が Azure AD に登録され(ユーザーにマップされます)最後に Key ID を受け取っているところだけ注意してください。これらがサインイン時に使われます。

PINのセットアップが完了したら、次回以降は PIN でサインインすることができます。サインイン時のフローが以下の通りです。

ここで注目していただきたいのが、ユーザーIDとパスワードが認証サーバーである Azure AD に送付されていないという点です。ユーザーが PIN を入力すると、TPM のロックが解除されて秘密鍵が取り出されます。そして、Windows 10 は空の「認証リクエスト」を Azure AD に送付し、返された Nonce を、取り出した秘密鍵で署名します。
署名された Nonce は、Key IDとともに Azure AD に送付され、Azure AD は事前に登録してあった公開鍵を使用して、送信した Nonce が正しいものかどうかチェックします。
チェックが正常に終了すると認証が完了し、「公開鍵で暗号化された対象鍵」、そしてプライマリリフレッシュトークン(図ではTGTと書かれています)が対象鍵で暗号化されて送り返されます。プライマリリフレッシュトークンは、リソースへのアクセストークンを得るためのトークンです。

以降、Azuer AD を認証基盤としているリソースにアクセスしようとすると自動的にアクセストークンが取得されて何もせずにサインインすることができるようになります。

Microsoft Passport は無効にすることもできますし、PIN の長さや複雑さを強制することもできます。これはおなじみグループポリシーで管理します。

image

詳しい設定内容は、まだ英語しかないのですが以下をご覧ください。

Implement Microsoft Passport in your organization
https://technet.microsoft.com/en-us/library/mt219734(v=vs.85).aspx

これらの構成は、Microsoft Intune から強制することも可能ですが、現時点の Active Directory ドメインからは管理できません。なぜならば、AD グループポリシーを適用するにはAD ドメインに参加しなければならず、これは Azure AD Join と矛盾するからです。

ここまでくると、いろいろ疑問が出てくるかと思います。

  • PINを設定したあとのパスワードってどうしたらいいの?
  • Azure 多要素認証は機能するの?
  • 自動的にAzure AD に参加させることは可能なの?
  • オンプレミス AD ドメイン内リソースとの SSO は可能なの?

などなど。これらについては、追って投稿いたします。