MicrosoftアカウントとWindows 8アカウント

前回紹介したWindows Server 2012 R2のActive Directoryですが、Kerberosポリシーの実装に少し苦慮していて、続編を書くまでに時間がかかりそうです。そのため今回は、以前、他のブログで紹介させていただいた「MicrosoftアカウントとWindows 8アカウント」について、改めて書き起こしてみました。

あ、あとフォントも少し変えてみました。

Windows 8ではローカルアカウントまたはドメインアカウントの代わりにMicrosoftアカウントを利用してサインインできる方法が提供されるようになりました。

Microsoftアカウントを使ってサインインすると言っても、実際にはMicrosoftアカウントに関連付けられたローカルアカウントを作ってサインインするというのが正確な表現です。そこで、単純にローカルアカウントを使った場合とMicrosoftアカウント+ローカルアカウントを組み合わせて使った場合、どのような違いがあるのかについて考えてみたいと思います。

ユーザープロファイルの同期

Microsoftアカウントを使ってWindows 8にサインインする場合、Windowsのサインイン自体はローカルアカウントを使って行いますが、サインイン後の各種サービスの利用はMicrosoftアカウント経由で行います。

サインイン後の各種サービスにはどのようなものが含まれるかというと、最も代表的なものとして、hotmailやSkyDriveなどのマイクロソフトが提供するサービスへ自動的にサインインを行い、各サービスに素早くアクセスできる点があげられます。

そして、もうひとつの大きな特徴として、サインインしたユーザーのプロファイル情報の一部がインターネット上のストレージにアップされ、ほかのコンピューターから同じMicrosoftアカウントでサインインすると、プロファイル情報を引き継いでくれる機能があります(こちらのサイトに詳しい説明が載っています)。

今までユーザープロファイルをほかのコンピューターでも使えるようにしたいと思ったら、Active Directoryドメインに参加し、移動ユーザープロファイルを設定しなければなりませんでした。それがMicrosoftアカウントを使うだけで利用できるようになってしまうなんて、今まで移動ユーザープロファイルで苦労してきた方からしてみれば、とても画期的なことだと思います(もちろん、移動ユーザープロファイルと全く同じものではありませんが..)。

また、ユーザープロファイルの内容のうち、クラウドと同期する対象も
Windows+I → PC設定の変更 → PC設定の同期
からカスタマイズできます。

設定項目には、デスクトップやマイドキュメントなどのユーザープロファイル内のフォルダは含まれていませんが、SkyDriveを使って共有すればほとんどのユーザープロファイルに含まれるデータをクラウドに保存し、どのPCからでもサインインしても同じデータ・環境にアクセスすることができます。

もちろん、ローカルアカウント単体でもSkyDriveを使うことは可能ですが、別途Microsoftアカウントでサインインしなければならないことを考えると、Microsoftアカウント+ローカルアカウントを活用することはとても便利であるといえます。

 

パスワードの同期

ここからが本題です。
Microsoftアカウントを利用すると、(当然ですが)パスワードに関してもどこのPCからサインインしても同じパスワードになります。これは正確にいうと、Microsoftアカウントで使用しているパスワードと同じパスワードがローカルアカウントにも設定されます。

また、Microsoftアカウントのパスワードが変われば、ローカルアカウントのパスワードも自動的に変えてくれます。そのため、AというPCでパスワードを変更したのち、BというPCでサインインを行った場合、BというPCでは変更後のパスワードを入力してサインインすることになります。

どのPCからでも同じユーザー名とパスワードでサインインできるというのは、一人で複数のPC(タブレット)を使う時代に即した素敵な方法ですが、Microsoftアカウントはhotmail等のオンラインサービスへのサインインにも使えてしまうので、もしパスワードが知られてしまい、パスワードを変更されてしまうと本人はWindowsにサインインできなくなるという問題が起きます。

との趣旨を、以前他のブログで書きました。しかし、そんな酷なことが本当に起こるのでしょうか?

 

パスワードの同期は、いつ行うか?

その疑問は「Microsoftアカウントは、いつWindows 8マシンとの間で同期しているのか?」が解れば解決できるだろう、ということで、パスワードの同期について少し調べてみました。

調査方法は次のとおりです。
まず、Windows 8マシンでadminユーザーとuser1ユーザーの2つのユーザーをローカルアカウントとして作成しました。そして、adminユーザーは私の持つMicrosoftアカウントと関連付けを行いました。
すると、もともとadminユーザーに割り当てられていたパスワードは破棄され、Microsoftアカウントで設定されているパスワードがadminユーザーのパスワードとして設定されました。

この時点で、Microsoftアカウントとuser1ユーザーのパスワードは同じパスワードになっているのですが、ここまでのところで、ローカルアカウントのデータベースをパスワードごとダンプしてみました。

skblog121128-1

ダンプされたデータのうち、一番左の列がユーザー名、一番右の列がパスワード(NTLMハッシュによる暗号化済み)です。adminユーザーとuser1ユーザーのパスワードの列を見てみると、もともと同じパスワードを設定していましたから、ダンプされたパスワードの値も同じになっていることが確認できます。

このことから、Microsoftアカウントのパスワードはローカルアカウント(ここではAdminユーザー)のパスワードとしてキャッシュされることも確認できますね。

続いて、Windows 8マシン以外のマシンからhttp://account.live.comにアクセスし、Microsoftアカウントでサインインして、パスワードの変更を行いました。

その後、Windows 8マシンをインターネット接続ができる状態で半日ほど放置したのですが、もう一度パスワードデータベースをダンプしてもキャッシュされているパスワードの値(パスワードハッシュの値)が変わることはありませんでした。

そこで、今度はWindows 8マシンでサインインを試してみることにしました。

まず、変更前のMicrosoftアカウントでサインインしました。すると、古いパスワードでも問題なくMicrosoftアカウントによるサインインに成功しました。ただし、サインイン後、Microsoftアカウントを利用するサービス(SkyDriveなど)にアクセスすると、パスワードが違うとのエラーが表示されます。

skblog121128-5

続いて、変更後のMicrosoftアカウントでサインインしました。すると、変更後のMicrosoftアカウントでもサインインに成功しました。そして、サインイン後にMicrosoftアカウントを利用するサービスには問題なくアクセスできることも確認できました。

以上のことから、次のようなことが言えると思います。

Microsoftアカウントによるサインインは、ローカルにキャッシュされているパスワードと比較し、同じであればサインイン成功とみなす(たとえ、Microsoftアカウントのパスワードと異なるパスワードであったとしても)。
一方、入力したパスワードがキャッシュされたパスワードと異なる場合はWindows Liveのサービスにアクアセスし、Windows Liveで格納されているパスワードと比較して、同じであればサインイン成功とみなす。

実際に、変更後のMicrosoftアカウントでサインインしたときの様子をWireSharkでキャプチャしてみると、確かにWindows Liveへのアクセスが確認できました。
(ちなみに、古いパスワードでサインインした時にはWindows Liveへのアクセスは確認できませんでした)

そして、Microsoftアカウントのパスワードが変わっていることが確認されると、それに合わせてキャッシュとして使われているローカルアカウントのパスワードも変更されるはずなので、変更後のMicrosoftアカウントのパスワードでサインインした後で、もう一度ローカルアカウントのデータベースをダンプしてみます。

skblog121128-4 

すると、adminユーザーとuser1ユーザーのパスワード(各行の右端)が異なることがわかります。

ということで、オンラインでMicrosoftアカウントのパスワードを変更しても、バックグラウンドで勝手にローカルアカウントのパスワードを変更してしまうわけではなく、Windowsのサインイン時に新しいパスワードでサインインしたときだけ、ローカルアカウントのパスワードが変更されるのです。

だから、何者かによってオンラインのMicrosoftアカウントのパスワードを変更されても、Windows自体のサインインには影響はないのですね。
(もちろん、Microsoftアカウント自体が乗っ取られてしまうのは重大な問題だから、それに対しては対処が必要です)

■余談

筆者はOffice365のアカウントと同一のアカウント名をMicrosoftアカウントでも持っているため、Windows 8からMicrosoftアカウントアカウントにサインインすれば、Office365にもシングルサインオンされるのかと淡い期待を持ちましたが、これはダメでした。
実はMicrosoftアカウントとOffice365アカウントもややこしい関係なんです。これは機会を改めて紹介できればと思います。