.net v4 の System.Security.Cryptography.ProtectedData() および UnprotectData() メソッドを DataProtectionScope.LocalMachine スコープで使用して、ファイルを単一のマシンでのみ暗号化/復号化できるようにするというアイデアをテストしています。これが私がやっていることの一般的な考えです...
//Encrypt
byte[] outBytes = ProtectedData.Protect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine);
File.WriteAllBytes(fileOut, outBytes);
//Decrypt
byte[] outBytes = ProtectedData.Unprotect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine);
File.WriteAllBytes(fileOut, outBytes);
これを行うときに期待される動作が得られることを確認するために多くのテストを行いましたが、同じマシン上のすべてのユーザーが上記のメソッド呼び出しを使用してファイルを暗号化/復号化できるという点で完全に機能しているようです。
私の質問は、誰かがこのメカニズムを使用して暗号化されたファイルを含むシステムのディスク イメージまたはクローン (Acronis、Ghost などを使用) を作成し、そのイメージを別のマシンに復元するとどうなるかということです。(一例として、IT 部門が 1 つのシステムを事前にロードし、それが同一のハードウェア構成を持つ多数のマシンのベース イメージになります)。別のハードウェアに復元された OS は、「元の」システムで暗号化されたファイルを復号化できますか? ハードウェアが異なるために復号化が失敗することを願っていますが、暗号化を実行するために必要なすべての情報がレジストリまたはファイル システムに存在する場合、復号化が機能することは理にかなっています。
明らかに、私はこれを自分でテストすることができましたが、今はそれを行うリソースが実際にはなく、他の誰かがすでに答えを知っているかどうかを無限に探しています. どんなアドバイスでも大歓迎です!