web-dev-qa-db-ja.com

Windows 8のMicrosoftアカウント認証はどのように機能しますか?

Windows 8の新機能の1つは、Microsoftアカウントの資格情報を使用してPCに ログインする機能です 。これはどのように実装されていますか?転送中の資格情報のハイジャック、偽造された認証、またはその他のMITM攻撃を防ぐためにどのような手順が取られていますか?

SSLまたは別の暗号化と認証方式が使用されていると思いますが、その内容や、MSがSSLおよびDNSポイズニングをどの程度防いでいるかなど、詳細はわかりません。

編集:RE SSL-SysAdminがlive.comの偽の証明書をWindowsの信頼できる公開鍵に追加し、一致する偽の秘密鍵でサーバーを実行し、DNSを使用して認証要求をリダイレクトするのを停止するにはどうすればよいですか?

14
jackweirdy

Windowsは、資格情報プロバイダーとSSPIを使用して機能を提供します。 SSPIは、Webサービスを介してMicrosoftエンドポイントと通信します。エンドポイントは、Windows Updateを介してプッシュダウンされるコード署名付きのDLLに格納することによって構成されます。SSPIはDLLをロードし、Microsoftによって署名されたコードを検証し、必要なものを解析しますエンドポイント。

SSPIがエンドポイントに接続すると、SSL証明書が構成DLLに格納されている値と比較されます。サブジェクト比較だけか、キー比較を行ったかどうかはわかりませんが、なんらかの理由で比較が失敗した場合、リクエストは拒否されます。

さらに、プロセスはクライアントシークレットによって保護されます。エンドポイントに送信される資格情報は、Microsoftエンドポイントが知っているローカルシークレットを使用して暗号化されます。対称鍵か非対称鍵かはわかりません。ただし、非対称キーの方が多い可能性があります。このキーは、コンピューターをLive IDが有効なものとして登録するときに発生するブートストラッププロセス中に共有されます。

追加の手段として、Live対応のサイトにSSOを実行する方法は、Live IDドメインの1つに対して、存続期間の短いトークンを含むCookieを保存することです。ユーザーがSSPIによって認証されると、デバイストークンを取得するための要求が別のWebサービスに送信されます。サービスは、Live IDに対するフェデレーション信頼によって認証されます。デバイスに発行されたLive IDのトークンがある場合は、このサービスを呼び出して別のトークンを取得できます。このデバイストークンは、特定の形式にシリアル化され、ユーザーのWindowsセッション内のCookieに書き込まれます。次回ユーザーがLive IDサイトを閲覧すると、Cookieが存在し、検証され、資格情報の入力を求められません。これ以外にも少しありますが、それがプロセスの要点です。

したがって、なりすましや改ざんに関しては、Microsoftは証明書のピン留めを使用してMITMを防止し、共有シークレットを使用して無許可のクライアントが認証要求を行うのを防ぎます。

編集:適切な証明書がDLLにない場合、要求は失敗します。管理者はDLLを偽装できますが、署名する必要がありますMicrosoftのコード署名キー、そしてもっと大きな問題、そしてそれが可能であればすべて。管理者が何らかの方法で共有キーを取得した場合、トークンを使用して要求を偽装することができますが、トークンを何らかの方法で取得する必要があります。証明書のピン留めを考えると、非常に難しくなっていますが、その時点では、偽の資格情報プロバイダーをインストールして資格情報を収集する方が簡単かもしれません。

6
Steve

実際、それは逆方向により多く機能します。自分のPCにサインインするには、PCに認識を指示したパスワードを使用します。 「Microsoftアカウント」を受け入れるようにPCを設定する場合、実際には、Microsoftアカウントのパスワードを「ローカルパスワード」として認識するようPCに指示します-and Microsoftのサーバーへのアクセスに同じパスワードが使用されます彼らが宣伝しているすべての自動同期とアプリの良さのために。

正確な詳細は複雑になる可能性がありますが、原則は同じです。認証は最初にローカルで行われ、次に(そのときのみ)資格情報はMicrosoftのサーバーとの通信にも使用されます。

その結果、誰かがMicrosoftのサーバーからアカウントのパスワードを取得できた場合(ハッシュだけではなく、ハッシュを格納していると仮定すると、これは良い考えではありません)、ローカルコンピューターのパスワードを取得しますが、これはできません。コンピューターに物理的にアクセスできるようになるまで彼を遠くに連れて行ってください。その時点で、コンピューターをつかんで実行することができます。


DNSポイズニングはSSLによって無効になります。 SSLのポイントは、DNSおよびIPアドレスを含むトランスポートメディアを抽象化することです。クライアントはサーバー証明書を検証し、その証明書にある公開鍵に基づいて暗号化を使用するため、クライアントは必ず適切なサーバーと通信します。おそらく、Microsoftのエンジニアが適切な証明書の検証と検証を使用するよう注意を払いました(銀行のHTTPSを利用したWebサイトから銀行口座にアクセスするときに同じコードが使用されるため、確実に実行できます)。

6
Thomas Pornin