データ保護 API スコープで LocalMachine と CurrentUser の両方を同時に使用するにはどうすればよいですか? セキュリティを強化したい。
1 に答える
それはいけません。それらにはさまざまな目的があります。LocalMachine 保護を使用すると、すべてのシークレットが (最終的に) 20 バイトの LSA シークレット DPAPI_SYSTEM によって保護されます。これは、特定のマシン上のすべてのユーザーに対して同じです。そのため、マシンにログインしている間は誰でもデータのブロブを復号化できます。
CurrentUser を使用すると、現在のユーザー (またはマシンが属する Windows ドメインの管理者) のみがログイン時にデータを復号化できます。これは、シークレットがログイン パスワードのハッシュ値によって保護されているためです。
そのため、LocalMachine を追加しても、より多くの人が (潜在的に) アクセスできるという点でセキュリティが低下するだけです。そして、システム内の暗号の現在のセットアップ (プログラマーには隠されています) では、それがまったく許可されていません。
両方を使用できる唯一の方法は、DPAPI を 2 回使用することです。LocalMachine を使用してシークレットを BLOB B に保護し、CurrentUser フラグを使用してその新しい BLOB を新しい最終 BLOB に保護します。(他の順序も可能です。) しかし、それは何も強化しません。同じユーザーが引き続きアクセスできます。現在は 2 倍の時間しかかかりません。