0

Windowsクレデンシャルローミングがどのように実装されているかを理解しようとしています。パスワード(CryptProtectData()へのオプションのエントロピー)で強力に保護されている証明書をローミングすることがわかりました。

証明書がインポートされたときにWindowsがパスワードのコピーをどこかに保持しない限り、これがどのように行われるかわかりません。%APPDATA%/ Crypto / RSA {UserSID}内のファイルを別のマシンにコピーすると、キーがユーザーのDPAPIマスターキーとオプションでパスワードで暗号化されるため、機能しません。

ProcMonを使用する以外に、これを理解するために他に何を試したり、調べたりする必要があるのか​​わかりません。これを理解するのに役立つポインタがあれば大歓迎です!

4

1 に答える 1

1

CryptProtectDataは、すべてを可能にするもう少し何かを行います。

DPAPIは、暗号化用のキーを生成します。次に、DPAPIキーは、パスワードから派生した別のキーで暗号化されます。

クレデンシャルローミングで送信されるのは、パスワードではなく、DPAPIキーです。

これは、パスワードを変更したときにDPAPIが(ローカルで)機能し続けることを可能にするのと同じことです。そうしないと、Windowsは、新しいパスワードから派生したキーに暗号化するために、どこにでも保存されているDPAPI暗号化BLOB(ファイル、レジストリキーなど)を追跡する必要があります。アプリケーションの数は無限であり、それは不可能です。

代わりに、キーは1つのよく知られた、よく隠された場所にあり、ユーザーには決して見えません。Windowsは、新しいパスワードを使用してDPAPIを簡単に再暗号化し、それを使用するアプリケーションをパスワードの変更から保護できます。

同じメカニズムは、ユーザーのパスワードに依存しないようにするためにクレデンシャルローミングでも使用されます。

このWebサイトには、SYSTEMのアカウントDPAPIキーを抽出するためのコードと、構造に関する情報があり、デバッグに役立つ場合があります。

于 2012-09-14T18:16:34.807 に答える